openai 0.102.0 → 0.104.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 (426) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +88 -0
  3. data/README.md +23 -1
  4. data/lib/openai/client.rb +3 -386
  5. data/lib/openai/helpers/admin/organization/projects/api_keys.rb +42 -0
  6. data/lib/openai/helpers/agents/session_stream_resource.rb +60 -0
  7. data/lib/openai/helpers/beta/agents/artifacts.rb +18 -0
  8. data/lib/openai/helpers/beta/agents/files.rb +41 -0
  9. data/lib/openai/helpers/client_runtime.rb +391 -0
  10. data/lib/openai/helpers/files.rb +47 -0
  11. data/lib/openai/helpers/live/websocket.rb +8 -57
  12. data/lib/openai/helpers/models/chat/parsed.rb +32 -0
  13. data/lib/openai/helpers/models/responses/parsed.rb +30 -0
  14. data/lib/openai/helpers/models/responses/response.rb +32 -0
  15. data/lib/openai/helpers/models/webhooks/webhook_endpoint_with_secret.rb +20 -0
  16. data/lib/openai/helpers/realtime/client_extension.rb +1 -2
  17. data/lib/openai/helpers/realtime/connection_manager.rb +1 -1
  18. data/lib/openai/helpers/realtime/translation.rb +7 -50
  19. data/lib/openai/helpers/responses_websocket/client_extension.rb +1 -2
  20. data/lib/openai/helpers/streaming/chat_completion_resource.rb +36 -0
  21. data/lib/openai/helpers/streaming/response_stream.rb +1 -16
  22. data/lib/openai/helpers/streaming/response_stream_resource.rb +78 -0
  23. data/lib/openai/helpers/vector_stores/file_batches.rb +188 -0
  24. data/lib/openai/helpers/vector_stores/files.rb +198 -0
  25. data/lib/openai/helpers/websocket/client_request.rb +31 -6
  26. data/lib/openai/helpers/websocket/connection.rb +58 -0
  27. data/lib/openai/helpers/websocket/connection_manager.rb +4 -2
  28. data/lib/openai/helpers/websocket/protocol.rb +2 -1
  29. data/lib/openai/helpers/websocket/resource.rb +54 -0
  30. data/lib/openai/helpers/websocket/typed_connection.rb +95 -0
  31. data/lib/openai/helpers/websocket.rb +4 -0
  32. data/lib/openai/models/admin/organization/audit_log_list_response.rb +5 -3
  33. data/lib/openai/models/admin/organization/external_storage_configuration.rb +5 -3
  34. data/lib/openai/models/admin/organization/external_storage_create_params.rb +33 -3
  35. data/lib/openai/models/admin/organization/oci_external_storage_provider.rb +37 -0
  36. data/lib/openai/models/admin/organization/project_residency.rb +3 -0
  37. data/lib/openai/models/admin/organization/projects/api_key_update_params.rb +64 -0
  38. data/lib/openai/models/admin/organization/projects/api_key_update_scopes_params.rb +34 -0
  39. data/lib/openai/models/admin/organization/usage_decisions_params.rb +177 -0
  40. data/lib/openai/models/admin/organization/usage_decisions_response.rb +351 -0
  41. data/lib/openai/models/audio/speech_create_params.rb +6 -3
  42. data/lib/openai/models/audio/translation_create_response.rb +0 -1
  43. data/lib/openai/models/audio/voice.rb +17 -2
  44. data/lib/openai/models/audio/voice_create_params.rb +100 -3
  45. data/lib/openai/models/beta/agent_create_params.rb +4 -2
  46. data/lib/openai/models/beta/agent_list_params.rb +4 -4
  47. data/lib/openai/models/beta/agent_session.rb +37 -1
  48. data/lib/openai/models/beta/agent_session_environment_expired_event.rb +57 -0
  49. data/lib/openai/models/beta/agent_session_environment_state.rb +6 -0
  50. data/lib/openai/models/beta/agent_session_environment_suspended_event.rb +57 -0
  51. data/lib/openai/models/beta/agent_session_event.rb +7 -1
  52. data/lib/openai/models/beta/agent_update_params.rb +4 -2
  53. data/lib/openai/models/beta/agents/environment_info.rb +3 -0
  54. data/lib/openai/models/beta/agents/environment_list_params.rb +7 -7
  55. data/lib/openai/models/beta/agents/session_create_params.rb +39 -3
  56. data/lib/openai/models/beta/agents/session_list_params.rb +7 -10
  57. data/lib/openai/models/beta/agents/session_update_params.rb +33 -1
  58. data/lib/openai/models/beta/agents/sessions/artifact_list_params.rb +11 -11
  59. data/lib/openai/models/beta/agents/vault_list_params.rb +23 -13
  60. data/lib/openai/models/beta/agents/vault_status_filter.rb +1 -3
  61. data/lib/openai/models/beta/agents/vault_update_params.rb +47 -0
  62. data/lib/openai/models/beta/agents/vaults/credential_list_params.rb +23 -13
  63. data/lib/openai/models/beta/beta_response.rb +23 -2
  64. data/lib/openai/models/beta/beta_response_error.rb +19 -1
  65. data/lib/openai/models/beta/beta_response_input_item.rb +107 -1
  66. data/lib/openai/models/beta/beta_response_item.rb +107 -1
  67. data/lib/openai/models/beta/beta_response_output_item.rb +107 -1
  68. data/lib/openai/models/beta/beta_responses_client_event.rb +23 -2
  69. data/lib/openai/models/beta/response_compact_params.rb +21 -0
  70. data/lib/openai/models/beta/response_create_params.rb +23 -2
  71. data/lib/openai/models/beta/session_turn_error.rb +3 -0
  72. data/lib/openai/models/chat/chat_completion_audio_param.rb +3 -3
  73. data/lib/openai/models/chat/chat_completion_message.rb +0 -8
  74. data/lib/openai/models/chat/chat_completion_message_function_tool_call.rb +0 -8
  75. data/lib/openai/models/chat/completion_create_params.rb +5 -12
  76. data/lib/openai/models/chat_model.rb +21 -0
  77. data/lib/openai/models/conversations/conversation_item.rb +107 -1
  78. data/lib/openai/models/decision.rb +17 -2
  79. data/lib/openai/models/decision_create_params.rb +29 -12
  80. data/lib/openai/models/decision_input_image.rb +4 -3
  81. data/lib/openai/models/decision_input_message.rb +4 -4
  82. data/lib/openai/models/decision_input_part.rb +3 -2
  83. data/lib/openai/models/image_edit_completed_event.rb +1 -2
  84. data/lib/openai/models/image_edit_partial_image_event.rb +1 -2
  85. data/lib/openai/models/image_gen_completed_event.rb +1 -2
  86. data/lib/openai/models/image_gen_partial_image_event.rb +1 -2
  87. data/lib/openai/models/images_response.rb +1 -2
  88. data/lib/openai/models/live/built_in_voice.rb +1 -0
  89. data/lib/openai/models/live/client_event.rb +14 -2
  90. data/lib/openai/models/live/decision_create_event.rb +26 -0
  91. data/lib/openai/models/live/decision_event.rb +117 -0
  92. data/lib/openai/models/live/decision_item_create_event.rb +194 -0
  93. data/lib/openai/models/live/decision_item_created_event.rb +202 -0
  94. data/lib/openai/models/live/decision_item_delete_event.rb +38 -0
  95. data/lib/openai/models/live/decision_item_deleted_event.rb +46 -0
  96. data/lib/openai/models/live/decision_trigger.rb +244 -0
  97. data/lib/openai/models/live/decisions_delegation_config.rb +201 -0
  98. data/lib/openai/models/live/decisions_delegation_update_config.rb +208 -0
  99. data/lib/openai/models/live/delegation_created_event.rb +10 -10
  100. data/lib/openai/models/live/fork_client_event.rb +14 -2
  101. data/lib/openai/models/live/fork_server_event.rb +17 -2
  102. data/lib/openai/models/live/media_session_config.rb +47 -11
  103. data/lib/openai/models/live/output_audio_fixture_play_event.rb +48 -0
  104. data/lib/openai/models/live/output_audio_fixture_played_event.rb +42 -0
  105. data/lib/openai/models/live/output_audio_fixture_playing_event.rb +41 -0
  106. data/lib/openai/models/live/server_event.rb +17 -2
  107. data/lib/openai/models/live/session_accept_params.rb +47 -11
  108. data/lib/openai/models/live/session_config.rb +47 -11
  109. data/lib/openai/models/live/session_resource.rb +47 -11
  110. data/lib/openai/models/live/session_update_config.rb +38 -6
  111. data/lib/openai/models/live/session_update_event.rb +8 -8
  112. data/lib/openai/models/live/sideband_client_event.rb +57 -0
  113. data/lib/openai/models/live/sideband_server_event.rb +78 -0
  114. data/lib/openai/models/realtime/realtime_audio_config_output.rb +6 -3
  115. data/lib/openai/models/realtime/realtime_response_create_audio_output.rb +6 -3
  116. data/lib/openai/models/realtime/realtime_response_status.rb +10 -1
  117. data/lib/openai/models/response_format_json_schema.rb +1 -1
  118. data/lib/openai/models/responses/function_tool.rb +8 -6
  119. data/lib/openai/models/responses/response.rb +2 -23
  120. data/lib/openai/models/responses/response_compact_params.rb +21 -0
  121. data/lib/openai/models/responses/response_create_params.rb +3 -6
  122. data/lib/openai/models/responses/response_error.rb +19 -1
  123. data/lib/openai/models/responses/response_format_text_config.rb +0 -4
  124. data/lib/openai/models/responses/response_function_tool_call.rb +0 -8
  125. data/lib/openai/models/responses/response_input_item.rb +107 -1
  126. data/lib/openai/models/responses/response_item.rb +107 -1
  127. data/lib/openai/models/responses/response_output_item.rb +107 -1
  128. data/lib/openai/models/responses/response_output_text.rb +0 -8
  129. data/lib/openai/models/responses/responses_client_event.rb +2 -2
  130. data/lib/openai/models/safety/safety_alert.rb +12 -1
  131. data/lib/openai/models/video_create_error.rb +19 -1
  132. data/lib/openai/models/webhooks/agent_environment_expired_webhook_event.rb +72 -0
  133. data/lib/openai/models/webhooks/agent_environment_suspended_webhook_event.rb +72 -0
  134. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +8 -3
  135. data/lib/openai/models/webhooks/webhook_create_params.rb +2 -0
  136. data/lib/openai/models/webhooks/webhook_endpoint_with_secret.rb +0 -9
  137. data/lib/openai/models/webhooks/webhook_test_params.rb +2 -0
  138. data/lib/openai/models/webhooks/webhook_update_params.rb +2 -0
  139. data/lib/openai/resources/admin/organization/external_storage.rb +1 -1
  140. data/lib/openai/resources/admin/organization/projects/api_keys.rb +61 -0
  141. data/lib/openai/resources/admin/organization/usage.rb +67 -0
  142. data/lib/openai/resources/audio/speech.rb +2 -1
  143. data/lib/openai/resources/audio/voices.rb +10 -10
  144. data/lib/openai/resources/beta/agents/environments/files.rb +3 -31
  145. data/lib/openai/resources/beta/agents/environments.rb +3 -3
  146. data/lib/openai/resources/beta/agents/sessions/artifacts.rb +5 -11
  147. data/lib/openai/resources/beta/agents/sessions/events.rb +1 -1
  148. data/lib/openai/resources/beta/agents/sessions.rb +20 -56
  149. data/lib/openai/resources/beta/agents/vaults/credentials.rb +10 -6
  150. data/lib/openai/resources/beta/agents/vaults.rb +45 -6
  151. data/lib/openai/resources/beta/agents.rb +6 -4
  152. data/lib/openai/resources/beta/responses.rb +2 -2
  153. data/lib/openai/resources/chat/completions.rb +11 -37
  154. data/lib/openai/resources/decisions.rb +9 -15
  155. data/lib/openai/resources/files.rb +0 -39
  156. data/lib/openai/resources/live/forks.rb +19 -0
  157. data/lib/openai/resources/live/sideband.rb +19 -0
  158. data/lib/openai/resources/live.rb +19 -0
  159. data/lib/openai/resources/realtime/translations.rb +19 -0
  160. data/lib/openai/resources/realtime.rb +19 -0
  161. data/lib/openai/resources/responses.rb +44 -95
  162. data/lib/openai/resources/vector_stores/file_batches.rb +0 -178
  163. data/lib/openai/resources/vector_stores/files.rb +0 -188
  164. data/lib/openai/resources/webhooks.rb +13 -29
  165. data/lib/openai/version.rb +1 -1
  166. data/lib/openai.rb +35 -0
  167. data/rbi/openai/client.rbi +0 -103
  168. data/rbi/openai/helpers/admin/organization/projects/api_keys.rbi +25 -0
  169. data/rbi/openai/helpers/beta/agents/artifacts.rbi +25 -0
  170. data/rbi/openai/helpers/beta/agents/files.rbi +48 -0
  171. data/rbi/openai/helpers/client_runtime.rbi +108 -0
  172. data/rbi/openai/helpers/files.rbi +25 -0
  173. data/rbi/openai/helpers/models/chat/parsed.rbi +21 -0
  174. data/rbi/openai/helpers/models/responses/parsed.rbi +19 -0
  175. data/rbi/openai/helpers/models/responses/response.rbi +15 -0
  176. data/rbi/openai/helpers/streaming/response_stream.rbi +301 -0
  177. data/rbi/openai/helpers/vector_stores/file_batches.rbi +102 -0
  178. data/rbi/openai/helpers/vector_stores/files.rbi +122 -0
  179. data/rbi/openai/helpers/websocket.rbi +82 -0
  180. data/rbi/openai/models/admin/organization/audit_log_list_response.rbi +6 -3
  181. data/rbi/openai/models/admin/organization/external_storage_configuration.rbi +4 -2
  182. data/rbi/openai/models/admin/organization/external_storage_create_params.rbi +63 -4
  183. data/rbi/openai/models/admin/organization/oci_external_storage_provider.rbi +71 -0
  184. data/rbi/openai/models/admin/organization/project_residency.rbi +12 -0
  185. data/rbi/openai/models/admin/organization/projects/api_key_update_params.rbi +110 -0
  186. data/rbi/openai/models/admin/organization/projects/api_key_update_scopes_params.rbi +72 -0
  187. data/rbi/openai/models/admin/organization/usage_decisions_params.rbi +229 -0
  188. data/rbi/openai/models/admin/organization/usage_decisions_response.rbi +479 -0
  189. data/rbi/openai/models/audio/speech_create_params.rbi +6 -3
  190. data/rbi/openai/models/audio/voice.rbi +21 -2
  191. data/rbi/openai/models/audio/voice_create_params.rbi +149 -4
  192. data/rbi/openai/models/beta/agent_create_params.rbi +4 -2
  193. data/rbi/openai/models/beta/agent_list_params.rbi +8 -5
  194. data/rbi/openai/models/beta/agent_session.rbi +64 -1
  195. data/rbi/openai/models/beta/agent_session_environment_expired_event.rbi +95 -0
  196. data/rbi/openai/models/beta/agent_session_environment_state.rbi +6 -0
  197. data/rbi/openai/models/beta/agent_session_environment_suspended_event.rbi +95 -0
  198. data/rbi/openai/models/beta/agent_session_event.rbi +2 -0
  199. data/rbi/openai/models/beta/agent_update_params.rbi +4 -2
  200. data/rbi/openai/models/beta/agents/environment_info.rbi +3 -0
  201. data/rbi/openai/models/beta/agents/environment_list_params.rbi +7 -7
  202. data/rbi/openai/models/beta/agents/session_create_params.rbi +62 -2
  203. data/rbi/openai/models/beta/agents/session_list_params.rbi +11 -11
  204. data/rbi/openai/models/beta/agents/session_update_params.rbi +56 -0
  205. data/rbi/openai/models/beta/agents/sessions/artifact_list_params.rbi +19 -13
  206. data/rbi/openai/models/beta/agents/vault_list_params.rbi +30 -13
  207. data/rbi/openai/models/beta/agents/vault_status_filter.rbi +1 -3
  208. data/rbi/openai/models/beta/agents/vault_update_params.rbi +87 -0
  209. data/rbi/openai/models/beta/agents/vaults/credential_list_params.rbi +30 -13
  210. data/rbi/openai/models/beta/beta_response.rbi +2 -2
  211. data/rbi/openai/models/beta/beta_response_error.rbi +24 -3
  212. data/rbi/openai/models/beta/beta_response_input_item.rbi +191 -0
  213. data/rbi/openai/models/beta/beta_response_item.rbi +189 -0
  214. data/rbi/openai/models/beta/beta_response_output_item.rbi +191 -0
  215. data/rbi/openai/models/beta/beta_responses_client_event.rbi +2 -2
  216. data/rbi/openai/models/beta/response_create_params.rbi +2 -2
  217. data/rbi/openai/models/beta/session_turn_error.rbi +3 -0
  218. data/rbi/openai/models/chat/chat_completion_audio_param.rbi +3 -3
  219. data/rbi/openai/models/chat/chat_completion_message.rbi +0 -4
  220. data/rbi/openai/models/chat/chat_completion_message_function_tool_call.rbi +0 -4
  221. data/rbi/openai/models/chat/completion_create_params.rbi +63 -78
  222. data/rbi/openai/models/conversations/conversation_item.rbi +191 -0
  223. data/rbi/openai/models/decision.rbi +14 -1
  224. data/rbi/openai/models/decision_create_params.rbi +23 -12
  225. data/rbi/openai/models/decision_input_image.rbi +4 -3
  226. data/rbi/openai/models/decision_input_message.rbi +4 -4
  227. data/rbi/openai/models/decision_input_part.rbi +2 -1
  228. data/rbi/openai/models/image_edit_completed_event.rbi +1 -0
  229. data/rbi/openai/models/image_edit_partial_image_event.rbi +1 -0
  230. data/rbi/openai/models/image_gen_completed_event.rbi +1 -0
  231. data/rbi/openai/models/image_gen_partial_image_event.rbi +1 -0
  232. data/rbi/openai/models/images_response.rbi +1 -0
  233. data/rbi/openai/models/live/built_in_voice.rbi +1 -0
  234. data/rbi/openai/models/live/client_event.rbi +4 -0
  235. data/rbi/openai/models/live/decision_create_event.rbi +55 -0
  236. data/rbi/openai/models/live/decision_event.rbi +185 -0
  237. data/rbi/openai/models/live/decision_item_create_event.rbi +338 -0
  238. data/rbi/openai/models/live/decision_item_created_event.rbi +354 -0
  239. data/rbi/openai/models/live/decision_item_delete_event.rbi +66 -0
  240. data/rbi/openai/models/live/decision_item_deleted_event.rbi +77 -0
  241. data/rbi/openai/models/live/decision_trigger.rbi +465 -0
  242. data/rbi/openai/models/live/decisions_delegation_config.rbi +393 -0
  243. data/rbi/openai/models/live/decisions_delegation_update_config.rbi +412 -0
  244. data/rbi/openai/models/live/delegation_created_event.rbi +8 -10
  245. data/rbi/openai/models/live/fork_client_event.rbi +4 -0
  246. data/rbi/openai/models/live/fork_server_event.rbi +5 -0
  247. data/rbi/openai/models/live/media_session_config.rbi +95 -14
  248. data/rbi/openai/models/live/output_audio_fixture_play_event.rbi +76 -0
  249. data/rbi/openai/models/live/output_audio_fixture_played_event.rbi +73 -0
  250. data/rbi/openai/models/live/output_audio_fixture_playing_event.rbi +72 -0
  251. data/rbi/openai/models/live/server_event.rbi +5 -0
  252. data/rbi/openai/models/live/session_accept_params.rbi +88 -12
  253. data/rbi/openai/models/live/session_config.rbi +100 -14
  254. data/rbi/openai/models/live/session_resource.rbi +81 -10
  255. data/rbi/openai/models/live/session_update_config.rbi +86 -9
  256. data/rbi/openai/models/live/session_update_event.rbi +8 -8
  257. data/rbi/openai/models/live/sideband_client_event.rbi +40 -0
  258. data/rbi/openai/models/live/sideband_server_event.rbi +47 -0
  259. data/rbi/openai/models/realtime/realtime_audio_config_output.rbi +6 -3
  260. data/rbi/openai/models/realtime/realtime_response_create_audio_output.rbi +6 -3
  261. data/rbi/openai/models/realtime/realtime_response_status.rbi +13 -1
  262. data/rbi/openai/models/realtime/realtime_translation_input_audio_buffer_append_event.rbi +1 -1
  263. data/rbi/openai/models/realtime/realtime_translation_output_audio_delta_event.rbi +3 -3
  264. data/rbi/openai/models/realtime/realtime_translation_session_close_event.rbi +1 -1
  265. data/rbi/openai/models/realtime/realtime_translation_session_update_event.rbi +5 -1
  266. data/rbi/openai/models/responses/response.rbi +2 -7
  267. data/rbi/openai/models/responses/response_create_params.rbi +5 -9
  268. data/rbi/openai/models/responses/response_error.rbi +24 -3
  269. data/rbi/openai/models/responses/response_function_tool_call.rbi +0 -4
  270. data/rbi/openai/models/responses/response_function_web_search.rbi +21 -17
  271. data/rbi/openai/models/responses/response_input_item.rbi +191 -0
  272. data/rbi/openai/models/responses/response_item.rbi +189 -0
  273. data/rbi/openai/models/responses/response_output_item.rbi +191 -0
  274. data/rbi/openai/models/responses/response_output_text.rbi +0 -4
  275. data/rbi/openai/models/responses/responses_client_event.rbi +2 -2
  276. data/rbi/openai/models/safety/safety_alert.rbi +13 -1
  277. data/rbi/openai/models/video_create_error.rbi +24 -3
  278. data/rbi/openai/models/webhooks/agent_environment_expired_webhook_event.rbi +133 -0
  279. data/rbi/openai/models/webhooks/agent_environment_suspended_webhook_event.rbi +133 -0
  280. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +3 -2
  281. data/rbi/openai/models/webhooks/webhook_create_params.rbi +8 -0
  282. data/rbi/openai/models/webhooks/webhook_test_params.rbi +8 -0
  283. data/rbi/openai/models/webhooks/webhook_update_params.rbi +8 -0
  284. data/rbi/openai/resources/admin/organization/external_storage.rbi +2 -1
  285. data/rbi/openai/resources/admin/organization/projects/api_keys.rbi +48 -0
  286. data/rbi/openai/resources/admin/organization/usage.rbi +56 -0
  287. data/rbi/openai/resources/audio/speech.rbi +2 -1
  288. data/rbi/openai/resources/audio/voices.rbi +13 -10
  289. data/rbi/openai/resources/beta/agents/environments/files.rbi +3 -33
  290. data/rbi/openai/resources/beta/agents/environments.rbi +3 -3
  291. data/rbi/openai/resources/beta/agents/sessions/artifacts.rbi +5 -13
  292. data/rbi/openai/resources/beta/agents/sessions.rbi +15 -4
  293. data/rbi/openai/resources/beta/agents/vaults/credentials.rbi +9 -5
  294. data/rbi/openai/resources/beta/agents/vaults.rbi +34 -5
  295. data/rbi/openai/resources/beta/agents.rbi +6 -4
  296. data/rbi/openai/resources/beta/responses.rbi +2 -2
  297. data/rbi/openai/resources/chat/completions.rbi +26 -29
  298. data/rbi/openai/resources/decisions.rbi +9 -15
  299. data/rbi/openai/resources/files.rbi +0 -18
  300. data/rbi/openai/resources/live/forks.rbi +17 -0
  301. data/rbi/openai/resources/live/sideband.rbi +17 -0
  302. data/rbi/openai/resources/live.rbi +17 -0
  303. data/rbi/openai/resources/realtime/translations.rbi +17 -0
  304. data/rbi/openai/resources/realtime.rbi +17 -0
  305. data/rbi/openai/resources/responses.rbi +41 -333
  306. data/rbi/openai/resources/vector_stores/file_batches.rbi +0 -93
  307. data/rbi/openai/resources/vector_stores/files.rbi +0 -113
  308. data/rbi/openai/resources/webhooks.rbi +2 -0
  309. data/sig/openai/client.rbs +0 -50
  310. data/sig/openai/helpers/admin/organization/projects/api_keys.rbs +18 -0
  311. data/sig/openai/helpers/beta/agents/artifacts.rbs +17 -0
  312. data/sig/openai/helpers/beta/agents/files.rbs +30 -0
  313. data/sig/openai/helpers/client_runtime.rbs +53 -0
  314. data/sig/openai/helpers/files.rbs +12 -0
  315. data/sig/openai/helpers/models/responses/response.rbs +9 -0
  316. data/sig/openai/helpers/streaming/response_stream.rbs +37 -0
  317. data/sig/openai/helpers/vector_stores/file_batches.rbs +38 -0
  318. data/sig/openai/helpers/vector_stores/files.rbs +43 -0
  319. data/sig/openai/helpers/websocket.rbs +40 -0
  320. data/sig/openai/models/admin/organization/audit_log_list_response.rbs +1 -0
  321. data/sig/openai/models/admin/organization/external_storage_configuration.rbs +1 -0
  322. data/sig/openai/models/admin/organization/external_storage_create_params.rbs +33 -0
  323. data/sig/openai/models/admin/organization/oci_external_storage_provider.rbs +34 -0
  324. data/sig/openai/models/admin/organization/project_residency.rbs +6 -0
  325. data/sig/openai/models/admin/organization/projects/api_key_update_params.rbs +77 -0
  326. data/sig/openai/models/admin/organization/projects/api_key_update_scopes_params.rbs +38 -0
  327. data/sig/openai/models/admin/organization/usage_decisions_params.rbs +170 -0
  328. data/sig/openai/models/admin/organization/usage_decisions_response.rbs +319 -0
  329. data/sig/openai/models/audio/speech_create_params.rbs +4 -2
  330. data/sig/openai/models/audio/voice.rbs +21 -3
  331. data/sig/openai/models/audio/voice_create_params.rbs +90 -1
  332. data/sig/openai/models/beta/agent_create_params.rbs +4 -2
  333. data/sig/openai/models/beta/agent_list_params.rbs +9 -6
  334. data/sig/openai/models/beta/agent_session.rbs +36 -2
  335. data/sig/openai/models/beta/agent_session_environment_expired_event.rbs +57 -0
  336. data/sig/openai/models/beta/agent_session_environment_state.rbs +14 -1
  337. data/sig/openai/models/beta/agent_session_environment_suspended_event.rbs +57 -0
  338. data/sig/openai/models/beta/agent_session_event.rbs +2 -0
  339. data/sig/openai/models/beta/agent_update_params.rbs +4 -2
  340. data/sig/openai/models/beta/agents/environment_info.rbs +11 -1
  341. data/sig/openai/models/beta/agents/environment_list_params.rbs +9 -9
  342. data/sig/openai/models/beta/agents/session_create_params.rbs +29 -2
  343. data/sig/openai/models/beta/agents/session_list_params.rbs +12 -12
  344. data/sig/openai/models/beta/agents/session_update_params.rbs +23 -0
  345. data/sig/openai/models/beta/agents/sessions/artifact_list_params.rbs +21 -15
  346. data/sig/openai/models/beta/agents/vault_list_params.rbs +32 -14
  347. data/sig/openai/models/beta/agents/vault_update_params.rbs +54 -0
  348. data/sig/openai/models/beta/agents/vaults/credential_list_params.rbs +32 -14
  349. data/sig/openai/models/beta/beta_response.rbs +2 -2
  350. data/sig/openai/models/beta/beta_response_error.rbs +19 -3
  351. data/sig/openai/models/beta/beta_response_input_item.rbs +110 -0
  352. data/sig/openai/models/beta/beta_response_item.rbs +110 -0
  353. data/sig/openai/models/beta/beta_response_output_item.rbs +110 -0
  354. data/sig/openai/models/beta/beta_responses_client_event.rbs +2 -2
  355. data/sig/openai/models/beta/response_create_params.rbs +2 -2
  356. data/sig/openai/models/beta/session_turn_error.rbs +4 -0
  357. data/sig/openai/models/chat/chat_completion_audio_param.rbs +2 -2
  358. data/sig/openai/models/chat/completion_create_params.rbs +2 -2
  359. data/sig/openai/models/conversations/conversation_item.rbs +110 -0
  360. data/sig/openai/models/decision.rbs +13 -0
  361. data/sig/openai/models/decision_create_params.rbs +19 -8
  362. data/sig/openai/models/decision_input_image.rbs +2 -2
  363. data/sig/openai/models/decision_input_message.rbs +2 -2
  364. data/sig/openai/models/live/built_in_voice.rbs +2 -0
  365. data/sig/openai/models/live/client_event.rbs +4 -0
  366. data/sig/openai/models/live/decision_create_event.rbs +18 -0
  367. data/sig/openai/models/live/decision_event.rbs +102 -0
  368. data/sig/openai/models/live/decision_item_create_event.rbs +183 -0
  369. data/sig/openai/models/live/decision_item_created_event.rbs +195 -0
  370. data/sig/openai/models/live/decision_item_delete_event.rbs +33 -0
  371. data/sig/openai/models/live/decision_item_deleted_event.rbs +49 -0
  372. data/sig/openai/models/live/decision_trigger.rbs +234 -0
  373. data/sig/openai/models/live/decisions_delegation_config.rbs +195 -0
  374. data/sig/openai/models/live/decisions_delegation_update_config.rbs +202 -0
  375. data/sig/openai/models/live/delegation_created_event.rbs +6 -7
  376. data/sig/openai/models/live/fork_client_event.rbs +4 -0
  377. data/sig/openai/models/live/fork_server_event.rbs +5 -0
  378. data/sig/openai/models/live/media_session_config.rbs +58 -11
  379. data/sig/openai/models/live/output_audio_fixture_play_event.rbs +42 -0
  380. data/sig/openai/models/live/output_audio_fixture_played_event.rbs +44 -0
  381. data/sig/openai/models/live/output_audio_fixture_playing_event.rbs +44 -0
  382. data/sig/openai/models/live/server_event.rbs +5 -0
  383. data/sig/openai/models/live/session_accept_params.rbs +57 -10
  384. data/sig/openai/models/live/session_config.rbs +58 -11
  385. data/sig/openai/models/live/session_resource.rbs +57 -10
  386. data/sig/openai/models/live/session_update_config.rbs +54 -3
  387. data/sig/openai/models/live/session_update_event.rbs +6 -6
  388. data/sig/openai/models/live/sideband_client_event.rbs +26 -0
  389. data/sig/openai/models/live/sideband_server_event.rbs +33 -0
  390. data/sig/openai/models/realtime/realtime_audio_config_output.rbs +6 -3
  391. data/sig/openai/models/realtime/realtime_response_create_audio_output.rbs +6 -3
  392. data/sig/openai/models/realtime/realtime_response_status.rbs +15 -3
  393. data/sig/openai/models/responses/response.rbs +2 -4
  394. data/sig/openai/models/responses/response_create_params.rbs +2 -2
  395. data/sig/openai/models/responses/response_error.rbs +19 -3
  396. data/sig/openai/models/responses/response_input_item.rbs +110 -0
  397. data/sig/openai/models/responses/response_item.rbs +110 -0
  398. data/sig/openai/models/responses/response_output_item.rbs +110 -0
  399. data/sig/openai/models/responses/responses_client_event.rbs +2 -2
  400. data/sig/openai/models/safety/safety_alert.rbs +12 -2
  401. data/sig/openai/models/video_create_error.rbs +19 -3
  402. data/sig/openai/models/webhooks/agent_environment_expired_webhook_event.rbs +70 -0
  403. data/sig/openai/models/webhooks/agent_environment_suspended_webhook_event.rbs +70 -0
  404. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +3 -1
  405. data/sig/openai/models/webhooks/webhook_create_params.rbs +4 -0
  406. data/sig/openai/models/webhooks/webhook_test_params.rbs +4 -0
  407. data/sig/openai/models/webhooks/webhook_update_params.rbs +4 -0
  408. data/sig/openai/resources/admin/organization/projects/api_keys.rbs +8 -0
  409. data/sig/openai/resources/admin/organization/usage.rbs +15 -0
  410. data/sig/openai/resources/beta/agents/environments/files.rbs +0 -17
  411. data/sig/openai/resources/beta/agents/sessions/artifacts.rbs +2 -6
  412. data/sig/openai/resources/beta/agents/sessions.rbs +4 -1
  413. data/sig/openai/resources/beta/agents/vaults/credentials.rbs +2 -1
  414. data/sig/openai/resources/beta/agents/vaults.rbs +9 -1
  415. data/sig/openai/resources/beta/agents.rbs +1 -1
  416. data/sig/openai/resources/files.rbs +0 -7
  417. data/sig/openai/resources/live/forks.rbs +8 -0
  418. data/sig/openai/resources/live/sideband.rbs +8 -0
  419. data/sig/openai/resources/live.rbs +7 -0
  420. data/sig/openai/resources/realtime/translations.rbs +7 -0
  421. data/sig/openai/resources/realtime.rbs +7 -0
  422. data/sig/openai/resources/responses.rbs +7 -31
  423. data/sig/openai/resources/vector_stores/file_batches.rbs +0 -31
  424. data/sig/openai/resources/vector_stores/files.rbs +0 -36
  425. data/sig/openai/resources/webhooks.rbs +3 -1
  426. metadata +101 -1
@@ -28,15 +28,16 @@ module OpenAI
28
28
 
29
29
  # @!attribute delegation
30
30
  # Who handles tasks delegated by the Live model. Omitted or null selects your
31
- # application; use `responses` to let the API manage a Responses backend.
31
+ # application; use `responses` or `decisions` to delegate to the corresponding
32
+ # API.
32
33
  #
33
- # @return [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionConfig::Delegation::Responses, nil]
34
+ # @return [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionConfig::Delegation::Responses, OpenAI::Models::Live::SessionConfig::Delegation::Decisions, nil]
34
35
  optional :delegation, union: -> { OpenAI::Live::SessionConfig::Delegation }, nil?: true
35
36
 
36
37
  # @!attribute input
37
38
  # Ordered text-only history supplied before startup. Supports developer, user, and
38
- # assistant messages with one text part each; at most 128 messages and 8,192
39
- # rendered tokens in total.
39
+ # assistant messages with one text part each; at most 128 messages and a
40
+ # configured rendered-token limit (8,192 by default).
40
41
  #
41
42
  # @return [Array<OpenAI::Models::Live::InitialItem::Developer, OpenAI::Models::Live::InitialItem::User, OpenAI::Models::Live::InitialItem::Assistant>, nil]
42
43
  optional :input, -> { OpenAI::Internal::Type::ArrayOf[union: OpenAI::Live::InitialItem] }
@@ -60,7 +61,16 @@ module OpenAI
60
61
  # @return [Boolean, nil]
61
62
  optional :store, OpenAI::Internal::Type::Boolean
62
63
 
63
- # @!method initialize(model:, audio: nil, client: nil, delegation: nil, input: nil, instructions: nil, store: nil)
64
+ # @!attribute triggers
65
+ # At most one Decisions trigger per transcript event type. Triggers run
66
+ # independently of delegation. On update, omit triggers to keep the current
67
+ # configuration, send a list to replace it, or send an empty list to disable
68
+ # triggers.
69
+ #
70
+ # @return [Array<OpenAI::Models::Live::DecisionTrigger>, nil]
71
+ optional :triggers, -> { OpenAI::Internal::Type::ArrayOf[OpenAI::Live::DecisionTrigger] }
72
+
73
+ # @!method initialize(model:, audio: nil, client: nil, delegation: nil, input: nil, instructions: nil, store: nil, triggers: nil)
64
74
  # Initial configuration for a Live session, including its model, conversation
65
75
  # instructions, audio, and delegated task handling.
66
76
  #
@@ -77,14 +87,15 @@ module OpenAI
77
87
  # Startup-only capabilities for an untrusted frontend attached to a unified WebRTC
78
88
  # session. Trusted sideband connections are unaffected.
79
89
  #
80
- # @param delegation [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionConfig::Delegation::Responses, nil]
90
+ # @param delegation [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionConfig::Delegation::Responses, OpenAI::Models::Live::SessionConfig::Delegation::Decisions, nil]
81
91
  # Who handles tasks delegated by the Live model. Omitted or null selects your
82
- # application; use `responses` to let the API manage a Responses backend.
92
+ # application; use `responses` or `decisions` to delegate to the corresponding
93
+ # API.
83
94
  #
84
95
  # @param input [Array<OpenAI::Models::Live::InitialItem::Developer, OpenAI::Models::Live::InitialItem::User, OpenAI::Models::Live::InitialItem::Assistant>]
85
96
  # Ordered text-only history supplied before startup. Supports developer, user, and
86
- # assistant messages with one text part each; at most 128 messages and 8,192
87
- # rendered tokens in total.
97
+ # assistant messages with one text part each; at most 128 messages and a
98
+ # configured rendered-token limit (8,192 by default).
88
99
  #
89
100
  # @param instructions [String, nil]
90
101
  # Frontend instructions for voice, conversation, interruptions, and when to
@@ -98,6 +109,12 @@ module OpenAI
98
109
  # @param store [Boolean]
99
110
  # Whether to store the session for later forking and recording download. Defaults
100
111
  # to false for new sessions.
112
+ #
113
+ # @param triggers [Array<OpenAI::Models::Live::DecisionTrigger>]
114
+ # At most one Decisions trigger per transcript event type. Triggers run
115
+ # independently of delegation. On update, omit triggers to keep the current
116
+ # configuration, send a list to replace it, or send an empty list to disable
117
+ # triggers.
101
118
 
102
119
  # The Live model. Required in the session configuration for every transport; do
103
120
  # not pass it as a URL query parameter.
@@ -188,7 +205,8 @@ module OpenAI
188
205
  end
189
206
 
190
207
  # Who handles tasks delegated by the Live model. Omitted or null selects your
191
- # application; use `responses` to let the API manage a Responses backend.
208
+ # application; use `responses` or `decisions` to delegate to the corresponding
209
+ # API.
192
210
  #
193
211
  # @see OpenAI::Models::Live::SessionConfig#delegation
194
212
  module Delegation
@@ -202,6 +220,8 @@ module OpenAI
202
220
  # Delegate tasks to a Responses model managed by the Live session.
203
221
  variant :responses, -> { OpenAI::Live::SessionConfig::Delegation::Responses }
204
222
 
223
+ variant :decisions, -> { OpenAI::Live::SessionConfig::Delegation::Decisions }
224
+
205
225
  class Responses < OpenAI::Internal::Type::BaseModel
206
226
  # @!attribute responses
207
227
  # Backend model, prompt, and tools used when the Live session delegates a task to
@@ -227,8 +247,24 @@ module OpenAI
227
247
  # The delegation owner. Always `responses` for tasks handled by the Responses API.
228
248
  end
229
249
 
250
+ class Decisions < OpenAI::Internal::Type::BaseModel
251
+ # @!attribute decisions
252
+ #
253
+ # @return [OpenAI::Models::Live::DecisionsDelegationConfig]
254
+ required :decisions, -> { OpenAI::Live::DecisionsDelegationConfig }
255
+
256
+ # @!attribute type
257
+ #
258
+ # @return [Symbol, :decisions]
259
+ required :type, const: :decisions
260
+
261
+ # @!method initialize(decisions:, type: :decisions)
262
+ # @param decisions [OpenAI::Models::Live::DecisionsDelegationConfig]
263
+ # @param type [Symbol, :decisions]
264
+ end
265
+
230
266
  # @!method self.variants
231
- # @return [Array(OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionConfig::Delegation::Responses)]
267
+ # @return [Array(OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionConfig::Delegation::Responses, OpenAI::Models::Live::SessionConfig::Delegation::Decisions)]
232
268
  end
233
269
  end
234
270
  end
@@ -49,15 +49,16 @@ module OpenAI
49
49
 
50
50
  # @!attribute delegation
51
51
  # Who handles tasks delegated by the Live model. Omitted or null selects your
52
- # application; use `responses` to let the API manage a Responses backend.
52
+ # application; use `responses` or `decisions` to delegate to the corresponding
53
+ # API.
53
54
  #
54
- # @return [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionResource::Delegation::Responses, nil]
55
+ # @return [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionResource::Delegation::Responses, OpenAI::Models::Live::SessionResource::Delegation::Decisions, nil]
55
56
  optional :delegation, union: -> { OpenAI::Live::SessionResource::Delegation }, nil?: true
56
57
 
57
58
  # @!attribute input
58
59
  # Ordered text-only history supplied before startup. Supports developer, user, and
59
- # assistant messages with one text part each; at most 128 messages and 8,192
60
- # rendered tokens in total.
60
+ # assistant messages with one text part each; at most 128 messages and a
61
+ # configured rendered-token limit (8,192 by default).
61
62
  #
62
63
  # @return [Array<OpenAI::Models::Live::InitialItem::Developer, OpenAI::Models::Live::InitialItem::User, OpenAI::Models::Live::InitialItem::Assistant>, nil]
63
64
  optional :input, -> { OpenAI::Internal::Type::ArrayOf[union: OpenAI::Live::InitialItem] }
@@ -81,7 +82,16 @@ module OpenAI
81
82
  # @return [Boolean, nil]
82
83
  optional :store, OpenAI::Internal::Type::Boolean
83
84
 
84
- # @!method initialize(id:, expires_at:, model:, audio: nil, client: nil, delegation: nil, input: nil, instructions: nil, store: nil, status: :active)
85
+ # @!attribute triggers
86
+ # At most one Decisions trigger per transcript event type. Triggers run
87
+ # independently of delegation. On update, omit triggers to keep the current
88
+ # configuration, send a list to replace it, or send an empty list to disable
89
+ # triggers.
90
+ #
91
+ # @return [Array<OpenAI::Models::Live::DecisionTrigger>, nil]
92
+ optional :triggers, -> { OpenAI::Internal::Type::ArrayOf[OpenAI::Live::DecisionTrigger] }
93
+
94
+ # @!method initialize(id:, expires_at:, model:, audio: nil, client: nil, delegation: nil, input: nil, instructions: nil, store: nil, triggers: nil, status: :active)
85
95
  # The resolved Live session configuration and server-assigned session metadata.
86
96
  #
87
97
  # @param id [String]
@@ -104,14 +114,15 @@ module OpenAI
104
114
  # Startup-only capabilities for an untrusted frontend attached to a unified WebRTC
105
115
  # session. Trusted sideband connections are unaffected.
106
116
  #
107
- # @param delegation [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionResource::Delegation::Responses, nil]
117
+ # @param delegation [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionResource::Delegation::Responses, OpenAI::Models::Live::SessionResource::Delegation::Decisions, nil]
108
118
  # Who handles tasks delegated by the Live model. Omitted or null selects your
109
- # application; use `responses` to let the API manage a Responses backend.
119
+ # application; use `responses` or `decisions` to delegate to the corresponding
120
+ # API.
110
121
  #
111
122
  # @param input [Array<OpenAI::Models::Live::InitialItem::Developer, OpenAI::Models::Live::InitialItem::User, OpenAI::Models::Live::InitialItem::Assistant>]
112
123
  # Ordered text-only history supplied before startup. Supports developer, user, and
113
- # assistant messages with one text part each; at most 128 messages and 8,192
114
- # rendered tokens in total.
124
+ # assistant messages with one text part each; at most 128 messages and a
125
+ # configured rendered-token limit (8,192 by default).
115
126
  #
116
127
  # @param instructions [String, nil]
117
128
  # Frontend instructions for voice, conversation, interruptions, and when to
@@ -126,6 +137,12 @@ module OpenAI
126
137
  # Whether to store the session for later forking and recording download. Defaults
127
138
  # to false for new sessions.
128
139
  #
140
+ # @param triggers [Array<OpenAI::Models::Live::DecisionTrigger>]
141
+ # At most one Decisions trigger per transcript event type. Triggers run
142
+ # independently of delegation. On update, omit triggers to keep the current
143
+ # configuration, send a list to replace it, or send an empty list to disable
144
+ # triggers.
145
+ #
129
146
  # @param status [Symbol, :active]
130
147
  # The status of the session snapshot. Always `active`, including the final
131
148
  # snapshot in session.closed; use the event type to determine that the session has
@@ -220,7 +237,8 @@ module OpenAI
220
237
  end
221
238
 
222
239
  # Who handles tasks delegated by the Live model. Omitted or null selects your
223
- # application; use `responses` to let the API manage a Responses backend.
240
+ # application; use `responses` or `decisions` to delegate to the corresponding
241
+ # API.
224
242
  #
225
243
  # @see OpenAI::Models::Live::SessionResource#delegation
226
244
  module Delegation
@@ -234,6 +252,8 @@ module OpenAI
234
252
  # Delegate tasks to a Responses model managed by the Live session.
235
253
  variant :responses, -> { OpenAI::Live::SessionResource::Delegation::Responses }
236
254
 
255
+ variant :decisions, -> { OpenAI::Live::SessionResource::Delegation::Decisions }
256
+
237
257
  class Responses < OpenAI::Internal::Type::BaseModel
238
258
  # @!attribute responses
239
259
  # Backend model, prompt, and tools used when the Live session delegates a task to
@@ -259,8 +279,24 @@ module OpenAI
259
279
  # The delegation owner. Always `responses` for tasks handled by the Responses API.
260
280
  end
261
281
 
282
+ class Decisions < OpenAI::Internal::Type::BaseModel
283
+ # @!attribute decisions
284
+ #
285
+ # @return [OpenAI::Models::Live::DecisionsDelegationConfig]
286
+ required :decisions, -> { OpenAI::Live::DecisionsDelegationConfig }
287
+
288
+ # @!attribute type
289
+ #
290
+ # @return [Symbol, :decisions]
291
+ required :type, const: :decisions
292
+
293
+ # @!method initialize(decisions:, type: :decisions)
294
+ # @param decisions [OpenAI::Models::Live::DecisionsDelegationConfig]
295
+ # @param type [Symbol, :decisions]
296
+ end
297
+
262
298
  # @!method self.variants
263
- # @return [Array(OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionResource::Delegation::Responses)]
299
+ # @return [Array(OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionResource::Delegation::Responses, OpenAI::Models::Live::SessionResource::Delegation::Decisions)]
264
300
  end
265
301
  end
266
302
  end
@@ -8,16 +8,30 @@ module OpenAI
8
8
  # Delegation settings to update. The delegation type must match the current
9
9
  # session; omitted settings retain their values.
10
10
  #
11
- # @return [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionUpdateConfig::Delegation::Responses, nil]
11
+ # @return [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionUpdateConfig::Delegation::Responses, OpenAI::Models::Live::SessionUpdateConfig::Delegation::Decisions, nil]
12
12
  optional :delegation, union: -> { OpenAI::Live::SessionUpdateConfig::Delegation }, nil?: true
13
13
 
14
- # @!method initialize(delegation: nil)
15
- # Changes to an active Live session. Only delegation backend settings can be
16
- # updated after startup.
14
+ # @!attribute triggers
15
+ # At most one Decisions trigger per transcript event type. Triggers run
16
+ # independently of delegation. On update, omit triggers to keep the current
17
+ # configuration, send a list to replace it, or send an empty list to disable
18
+ # triggers.
17
19
  #
18
- # @param delegation [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionUpdateConfig::Delegation::Responses, nil]
20
+ # @return [Array<OpenAI::Models::Live::DecisionTrigger>, nil]
21
+ optional :triggers, -> { OpenAI::Internal::Type::ArrayOf[OpenAI::Live::DecisionTrigger] }
22
+
23
+ # @!method initialize(delegation: nil, triggers: nil)
24
+ # Changes to an active Live session's delegation settings and transcript triggers.
25
+ #
26
+ # @param delegation [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionUpdateConfig::Delegation::Responses, OpenAI::Models::Live::SessionUpdateConfig::Delegation::Decisions, nil]
19
27
  # Delegation settings to update. The delegation type must match the current
20
28
  # session; omitted settings retain their values.
29
+ #
30
+ # @param triggers [Array<OpenAI::Models::Live::DecisionTrigger>]
31
+ # At most one Decisions trigger per transcript event type. Triggers run
32
+ # independently of delegation. On update, omit triggers to keep the current
33
+ # configuration, send a list to replace it, or send an empty list to disable
34
+ # triggers.
21
35
 
22
36
  # Delegation settings to update. The delegation type must match the current
23
37
  # session; omitted settings retain their values.
@@ -34,6 +48,8 @@ module OpenAI
34
48
  # Update the Responses backend for an existing Live session without changing delegation ownership.
35
49
  variant :responses, -> { OpenAI::Live::SessionUpdateConfig::Delegation::Responses }
36
50
 
51
+ variant :decisions, -> { OpenAI::Live::SessionUpdateConfig::Delegation::Decisions }
52
+
37
53
  class Responses < OpenAI::Internal::Type::BaseModel
38
54
  # @!attribute type
39
55
  # The delegation owner. Always `responses` for tasks handled by the Responses API.
@@ -60,8 +76,24 @@ module OpenAI
60
76
  # The delegation owner. Always `responses` for tasks handled by the Responses API.
61
77
  end
62
78
 
79
+ class Decisions < OpenAI::Internal::Type::BaseModel
80
+ # @!attribute type
81
+ #
82
+ # @return [Symbol, :decisions]
83
+ required :type, const: :decisions
84
+
85
+ # @!attribute decisions
86
+ #
87
+ # @return [OpenAI::Models::Live::DecisionsDelegationUpdateConfig, nil]
88
+ optional :decisions, -> { OpenAI::Live::DecisionsDelegationUpdateConfig }
89
+
90
+ # @!method initialize(decisions: nil, type: :decisions)
91
+ # @param decisions [OpenAI::Models::Live::DecisionsDelegationUpdateConfig]
92
+ # @param type [Symbol, :decisions]
93
+ end
94
+
63
95
  # @!method self.variants
64
- # @return [Array(OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionUpdateConfig::Delegation::Responses)]
96
+ # @return [Array(OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionUpdateConfig::Delegation::Responses, OpenAI::Models::Live::SessionUpdateConfig::Delegation::Decisions)]
65
97
  end
66
98
  end
67
99
  end
@@ -5,9 +5,9 @@ module OpenAI
5
5
  module Live
6
6
  class SessionUpdateEvent < OpenAI::Internal::Type::BaseModel
7
7
  # @!attribute session
8
- # Sparse delegation updates. Omitted settings retain their values. The delegation
9
- # type cannot change, including resetting Responses delegation to null or client.
10
- # Model, frontend instructions, audio, and startup input are immutable.
8
+ # Sparse delegation and trigger updates. Omitted settings retain their values. The
9
+ # delegation type cannot change. Model, frontend instructions, audio, and startup
10
+ # input are immutable.
11
11
  #
12
12
  # @return [OpenAI::Models::Live::SessionUpdateConfig]
13
13
  required :session, -> { OpenAI::Live::SessionUpdateConfig }
@@ -26,13 +26,13 @@ module OpenAI
26
26
  optional :event_id, String, nil?: true
27
27
 
28
28
  # @!method initialize(session:, event_id: nil, type: :"session.update")
29
- # Update the delegation settings of an active Live session. The server
30
- # acknowledges accepted changes with `session.updated`.
29
+ # Update the delegation settings or transcript triggers of an active Live session.
30
+ # The server acknowledges accepted changes with `session.updated`.
31
31
  #
32
32
  # @param session [OpenAI::Models::Live::SessionUpdateConfig]
33
- # Sparse delegation updates. Omitted settings retain their values. The delegation
34
- # type cannot change, including resetting Responses delegation to null or client.
35
- # Model, frontend instructions, audio, and startup input are immutable.
33
+ # Sparse delegation and trigger updates. Omitted settings retain their values. The
34
+ # delegation type cannot change. Model, frontend instructions, audio, and startup
35
+ # input are immutable.
36
36
  #
37
37
  # @param event_id [String, nil]
38
38
  # Optional client identifier for correlating this command with a server event's
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Live
6
+ # Client events accepted by an attached Live sideband WebSocket. The session has
7
+ # already started. Send input audio over the primary connection.
8
+ module SidebandClientEvent
9
+ extend OpenAI::Internal::Type::Union
10
+
11
+ discriminator :type
12
+
13
+ # Update the delegation settings or transcript triggers of an active Live session. The server acknowledges accepted changes with `session.updated`.
14
+ variant :"session.update", -> { OpenAI::Live::SessionUpdateEvent }
15
+
16
+ # Mute audio input to the Live model without closing the session. The server acknowledges with `session.input_audio.muted`.
17
+ variant :"session.input_audio.mute", -> { OpenAI::Live::InputAudioMuteEvent }
18
+
19
+ # Resume audio input to a Live model after muting it. The server acknowledges with `session.input_audio.unmuted`.
20
+ variant :"session.input_audio.unmute", -> { OpenAI::Live::InputAudioUnmuteEvent }
21
+
22
+ # Play one complete audio fixture through the session output. Send this event over the primary WebSocket or a server sideband. Audio must be raw mono PCM16 little-endian at 24 kHz, regardless of the session audio format, and at most 30 seconds. The entire payload is validated before model speech is interrupted and input is muted. Only one fixture can be active. fixture.playing acknowledges acceptance and fixture.played reports server mixer drain. These notifications are not exact transport-media boundaries. Input arriving during playback is dropped and not replayed.
23
+ variant :"session.output_audio.fixture.play", -> { OpenAI::Live::OutputAudioFixturePlayEvent }
24
+
25
+ # Append instructions to the Live conversation while it is running, optionally associating them with an existing client delegation.
26
+ variant :"session.instructions.append", -> { OpenAI::Live::InstructionsAppendEvent }
27
+
28
+ # Provide silent reasoning or progress context to the Live model, optionally for an existing client delegation.
29
+ variant :"session.thinking.append", -> { OpenAI::Live::ThinkingAppendEvent }
30
+
31
+ # Provide context the Live model can communicate to the user, optionally for an existing client delegation.
32
+ variant :"session.commentary.append", -> { OpenAI::Live::CommentaryAppendEvent }
33
+
34
+ # Evaluate the configured questions using the current conversation and Decision inputs. Reusing an event_id is rejected for the lifetime of the session.
35
+ variant :"decision.create", -> { OpenAI::Live::DecisionCreateEvent }
36
+
37
+ # Append an input item for future decisions without starting an evaluation or changing Live voice context.
38
+ variant :"decision.item.create", -> { OpenAI::Live::DecisionItemCreateEvent }
39
+
40
+ # Delete an input item from future decisions without starting an evaluation or changing Live voice context.
41
+ variant :"decision.item.delete", -> { OpenAI::Live::DecisionItemDeleteEvent }
42
+
43
+ # Add an input item to the Live session’s Responses backend. Requires Responses delegation; use `response.create` to request a response.
44
+ variant :"response.item.create", -> { OpenAI::Live::ResponseItemCreateEvent }
45
+
46
+ # Request a response from the Live session’s Responses backend, or continue a delegated response waiting for tool results. Requires Responses delegation.
47
+ variant :"response.create", -> { OpenAI::Live::ResponseCreateEvent }
48
+
49
+ # Request that the Live session close. The terminal `session.closed` event contains the close reason and final usage.
50
+ variant :"session.close", -> { OpenAI::Live::SessionCloseEvent }
51
+
52
+ # @!method self.variants
53
+ # @return [Array(OpenAI::Models::Live::SessionUpdateEvent, OpenAI::Models::Live::InputAudioMuteEvent, OpenAI::Models::Live::InputAudioUnmuteEvent, OpenAI::Models::Live::OutputAudioFixturePlayEvent, OpenAI::Models::Live::InstructionsAppendEvent, OpenAI::Models::Live::ThinkingAppendEvent, OpenAI::Models::Live::CommentaryAppendEvent, OpenAI::Models::Live::DecisionCreateEvent, OpenAI::Models::Live::DecisionItemCreateEvent, OpenAI::Models::Live::DecisionItemDeleteEvent, OpenAI::Models::Live::ResponseItemCreateEvent, OpenAI::Models::Live::ResponseCreateEvent, OpenAI::Models::Live::SessionCloseEvent)]
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Live
6
+ # Server events received by an attached Live sideband WebSocket. Audio deltas are
7
+ # delivered over the primary connection.
8
+ module SidebandServerEvent
9
+ extend OpenAI::Internal::Type::Union
10
+
11
+ discriminator :type
12
+
13
+ # Returned when a Live session has started. Contains the resolved session configuration, including server defaults.
14
+ variant :"session.started", -> { OpenAI::Live::SessionStartedEvent }
15
+
16
+ # Returned when a Live session update is accepted. Contains the resolved session configuration after the update.
17
+ variant :"session.updated", -> { OpenAI::Live::SessionUpdatedEvent }
18
+
19
+ # Returned when a session.input_audio.mute command is accepted. Input audio is no longer sent to the model; sideband audio reflection continues.
20
+ variant :"session.input_audio.muted", -> { OpenAI::Live::InputAudioMutedEvent }
21
+
22
+ # Returned when a session.input_audio.unmute command is accepted. Input audio is sent to the model again.
23
+ variant :"session.input_audio.unmuted", -> { OpenAI::Live::InputAudioUnmutedEvent }
24
+
25
+ # The existing playback path has accepted the validated audio fixture. This acknowledgment does not identify when the listener receives the first sample. The optional client_event_id echoes the play command.
26
+ variant :"session.output_audio.fixture.playing", -> { OpenAI::Live::OutputAudioFixturePlayingEvent }
27
+
28
+ # The complete audio fixture has drained from the server mixer and normal inference has resumed. Transport buffers may still contain audio; this event does not prove listener-side completion. The optional client_event_id echoes the play command. This event is not emitted for canceled or failed playback.
29
+ variant :"session.output_audio.fixture.played", -> { OpenAI::Live::OutputAudioFixturePlayedEvent }
30
+
31
+ # Returned when a session.instructions.append command is accepted into the Live session timeline. Acknowledges the appended instructions without guaranteeing that the model has acted on them.
32
+ variant :"session.instructions.appended", -> { OpenAI::Live::InstructionsAppendedEvent }
33
+
34
+ # Returned when a session.thinking.append command is accepted into the Live session timeline. Acknowledges the added reasoning context without guaranteeing any spoken output.
35
+ variant :"session.thinking.appended", -> { OpenAI::Live::ThinkingAppendedEvent }
36
+
37
+ # Returned when a session.commentary.append command is accepted into the Live session timeline. Acknowledges the added commentary without guaranteeing exact wording or completed audio playback.
38
+ variant :"session.commentary.appended", -> { OpenAI::Live::CommentaryAppendedEvent }
39
+
40
+ # A transcript fragment for user input audio in the Live session. Accumulate fragments in delivery order; these events do not define complete turns or include a transcript-done event.
41
+ variant :"session.input_transcript.delta", -> { OpenAI::Live::InputTranscriptDeltaEvent }
42
+
43
+ # A transcript fragment for assistant output audio in the Live session. Accumulate fragments in delivery order; these events do not define complete turns or include a transcript-done event.
44
+ variant :"session.output_transcript.delta", -> { OpenAI::Live::OutputTranscriptDeltaEvent }
45
+
46
+ # Returned when the Live model delegates work to your application, Responses, or Decisions. Contains delegation metadata and the position on the session timeline where the work was delegated.
47
+ variant :"session.delegation.created", -> { OpenAI::Live::DelegationCreatedEvent }
48
+
49
+ # A Decision API event for a Live delegation or transcript trigger. For a trigger, source_event_id identifies the transcript delta that caused this evaluation.
50
+ variant :"decision.event", -> { OpenAI::Live::DecisionEvent }
51
+
52
+ # An input item was appended for future decisions.
53
+ variant :"decision.item.created", -> { OpenAI::Live::DecisionItemCreatedEvent }
54
+
55
+ # An input item was removed from future decisions.
56
+ variant :"decision.item.deleted", -> { OpenAI::Live::DecisionItemDeletedEvent }
57
+
58
+ # A streaming Responses API event from a backend delegated to by the Live session. Use the outer delegation_id to associate the nested stream with its Live delegation.
59
+ variant :"response.event", -> { OpenAI::Live::ResponseEvent }
60
+
61
+ # Reports cumulative Live audio usage and, when available, the most recent context-window usage. Delegated Responses token usage is reported separately in response.event events.
62
+ variant :"session.usage.updated", -> { OpenAI::Live::SessionUsageUpdatedEvent }
63
+
64
+ # Returned after the Live session finishes finalizing, with the close reason, final session snapshot, and cumulative audio usage. A connection closing without this event does not confirm successful finalization.
65
+ variant :"session.closed", -> { OpenAI::Live::SessionClosedEvent }
66
+
67
+ # Reports an error in the Live session, such as an invalid client command. Use error.client_event_id, when present, to identify the command that caused the error.
68
+ variant :error, -> { OpenAI::Live::ErrorEvent }
69
+
70
+ # An informational notice about the Live session, such as the event permissions applied to a frontend data channel.
71
+ variant :info, -> { OpenAI::Live::InfoEvent }
72
+
73
+ # @!method self.variants
74
+ # @return [Array(OpenAI::Models::Live::SessionStartedEvent, OpenAI::Models::Live::SessionUpdatedEvent, OpenAI::Models::Live::InputAudioMutedEvent, OpenAI::Models::Live::InputAudioUnmutedEvent, OpenAI::Models::Live::OutputAudioFixturePlayingEvent, OpenAI::Models::Live::OutputAudioFixturePlayedEvent, OpenAI::Models::Live::InstructionsAppendedEvent, OpenAI::Models::Live::ThinkingAppendedEvent, OpenAI::Models::Live::CommentaryAppendedEvent, OpenAI::Models::Live::InputTranscriptDeltaEvent, OpenAI::Models::Live::OutputTranscriptDeltaEvent, OpenAI::Models::Live::DelegationCreatedEvent, OpenAI::Models::Live::DecisionEvent, OpenAI::Models::Live::DecisionItemCreatedEvent, OpenAI::Models::Live::DecisionItemDeletedEvent, OpenAI::Models::Live::ResponseEvent, OpenAI::Models::Live::SessionUsageUpdatedEvent, OpenAI::Models::Live::SessionClosedEvent, OpenAI::Models::Live::ErrorEvent, OpenAI::Models::Live::InfoEvent)]
75
+ end
76
+ end
77
+ end
78
+ end
@@ -28,7 +28,8 @@ module OpenAI
28
28
  # `cedar`. You may also provide a custom voice object with an `id`, for example
29
29
  # `{ "id": "voice_1234" }`. Voice cannot be changed during the session once the
30
30
  # model has responded with audio at least once. Custom voices must be created from
31
- # audio samples. We recommend `marin` and `cedar` for best quality.
31
+ # audio samples. Voices created from text prompts are supported only in Live. We
32
+ # recommend `marin` and `cedar` for best quality.
32
33
  #
33
34
  # @return [String, Symbol, OpenAI::Models::Realtime::RealtimeAudioConfigOutput::Voice::ID, OpenAI::Models::Realtime::RealtimeAudioConfigOutput::Voice, nil]
34
35
  optional :voice, union: -> { OpenAI::Realtime::RealtimeAudioConfigOutput::Voice }
@@ -52,14 +53,16 @@ module OpenAI
52
53
  # `cedar`. You may also provide a custom voice object with an `id`, for example
53
54
  # `{ "id": "voice_1234" }`. Voice cannot be changed during the session once the
54
55
  # model has responded with audio at least once. Custom voices must be created from
55
- # audio samples. We recommend `marin` and `cedar` for best quality.
56
+ # audio samples. Voices created from text prompts are supported only in Live. We
57
+ # recommend `marin` and `cedar` for best quality.
56
58
 
57
59
  # The voice the model uses to respond. Supported built-in voices are `alloy`,
58
60
  # `ash`, `ballad`, `coral`, `echo`, `sage`, `shimmer`, `verse`, `marin`, and
59
61
  # `cedar`. You may also provide a custom voice object with an `id`, for example
60
62
  # `{ "id": "voice_1234" }`. Voice cannot be changed during the session once the
61
63
  # model has responded with audio at least once. Custom voices must be created from
62
- # audio samples. We recommend `marin` and `cedar` for best quality.
64
+ # audio samples. Voices created from text prompts are supported only in Live. We
65
+ # recommend `marin` and `cedar` for best quality.
63
66
  #
64
67
  # @see OpenAI::Models::Realtime::RealtimeAudioConfigOutput#voice
65
68
  module Voice
@@ -28,7 +28,8 @@ module OpenAI
28
28
  # `cedar`. You may also provide a custom voice object with an `id`, for example
29
29
  # `{ "id": "voice_1234" }`. Voice cannot be changed during the session once the
30
30
  # model has responded with audio at least once. Custom voices must be created from
31
- # audio samples. We recommend `marin` and `cedar` for best quality.
31
+ # audio samples. Voices created from text prompts are supported only in Live. We
32
+ # recommend `marin` and `cedar` for best quality.
32
33
  #
33
34
  # @return [String, Symbol, OpenAI::Models::Realtime::RealtimeResponseCreateAudioOutput::Output::Voice::ID, OpenAI::Models::Realtime::RealtimeResponseCreateAudioOutput::Output::Voice, nil]
34
35
  optional :voice, union: -> { OpenAI::Realtime::RealtimeResponseCreateAudioOutput::Output::Voice }
@@ -43,14 +44,16 @@ module OpenAI
43
44
  # `cedar`. You may also provide a custom voice object with an `id`, for example
44
45
  # `{ "id": "voice_1234" }`. Voice cannot be changed during the session once the
45
46
  # model has responded with audio at least once. Custom voices must be created from
46
- # audio samples. We recommend `marin` and `cedar` for best quality.
47
+ # audio samples. Voices created from text prompts are supported only in Live. We
48
+ # recommend `marin` and `cedar` for best quality.
47
49
 
48
50
  # The voice the model uses to respond. Supported built-in voices are `alloy`,
49
51
  # `ash`, `ballad`, `coral`, `echo`, `sage`, `shimmer`, `verse`, `marin`, and
50
52
  # `cedar`. You may also provide a custom voice object with an `id`, for example
51
53
  # `{ "id": "voice_1234" }`. Voice cannot be changed during the session once the
52
54
  # model has responded with audio at least once. Custom voices must be created from
53
- # audio samples. We recommend `marin` and `cedar` for best quality.
55
+ # audio samples. Voices created from text prompts are supported only in Live. We
56
+ # recommend `marin` and `cedar` for best quality.
54
57
  #
55
58
  # @see OpenAI::Models::Realtime::RealtimeResponseCreateAudioOutput::Output#voice
56
59
  module Voice
@@ -54,19 +54,28 @@ module OpenAI
54
54
  # @return [String, nil]
55
55
  optional :code, String
56
56
 
57
+ # @!attribute message
58
+ # A human-readable error message.
59
+ #
60
+ # @return [String, nil]
61
+ optional :message, String
62
+
57
63
  # @!attribute type
58
64
  # The type of error.
59
65
  #
60
66
  # @return [String, nil]
61
67
  optional :type, String
62
68
 
63
- # @!method initialize(code: nil, type: nil)
69
+ # @!method initialize(code: nil, message: nil, type: nil)
64
70
  # A description of the error that caused the response to fail, populated when the
65
71
  # `status` is `failed`.
66
72
  #
67
73
  # @param code [String]
68
74
  # Error code, if any.
69
75
  #
76
+ # @param message [String]
77
+ # A human-readable error message.
78
+ #
70
79
  # @param type [String]
71
80
  # The type of error.
72
81
  end
@@ -46,7 +46,7 @@ module OpenAI
46
46
  # The schema for the response format, described as a JSON Schema object. Learn how
47
47
  # to build JSON schemas [here](https://json-schema.org/).
48
48
  #
49
- # @return [Hash{Symbol=>Object}, nil]
49
+ # @return [Hash{Symbol=>Object}, OpenAI::StructuredOutput::JsonSchemaConverter, nil]
50
50
  optional(
51
51
  :schema,
52
52
  union: -> {
@@ -13,13 +13,15 @@ module OpenAI
13
13
  # @!attribute parameters
14
14
  # A JSON schema object describing the parameters of the function.
15
15
  #
16
- # @return [Hash{Symbol=>Object}, nil]
16
+ # @return [Hash{Symbol=>Object}, OpenAI::StructuredOutput::JsonSchemaConverter, nil]
17
17
  required(
18
18
  :parameters,
19
- union: OpenAI::UnionOf[
20
- OpenAI::Internal::Type::HashOf[OpenAI::Internal::Type::Unknown],
21
- OpenAI::StructuredOutput::JsonSchemaConverter
22
- ],
19
+ union: -> {
20
+ OpenAI::UnionOf[
21
+ OpenAI::Internal::Type::HashOf[OpenAI::Internal::Type::Unknown],
22
+ OpenAI::StructuredOutput::JsonSchemaConverter
23
+ ]
24
+ },
23
25
  nil?: true
24
26
  )
25
27
 
@@ -78,7 +80,7 @@ module OpenAI
78
80
  # @param name [String]
79
81
  # The name of the function to call.
80
82
  #
81
- # @param parameters [Hash{Symbol=>Object}, nil]
83
+ # @param parameters [Hash{Symbol=>Object}, OpenAI::StructuredOutput::JsonSchemaConverter, nil]
82
84
  # A JSON schema object describing the parameters of the function.
83
85
  #
84
86
  # @param strict [Boolean, nil]