openai 0.103.0 → 0.105.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 (407) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +98 -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_update_params.rb +4 -2
  49. data/lib/openai/models/beta/agents/environment_list_params.rb +7 -7
  50. data/lib/openai/models/beta/agents/session_create_params.rb +39 -3
  51. data/lib/openai/models/beta/agents/session_list_params.rb +7 -10
  52. data/lib/openai/models/beta/agents/session_update_params.rb +33 -1
  53. data/lib/openai/models/beta/agents/sessions/artifact_list_params.rb +11 -11
  54. data/lib/openai/models/beta/agents/vault_list_params.rb +23 -13
  55. data/lib/openai/models/beta/agents/vault_status_filter.rb +1 -3
  56. data/lib/openai/models/beta/agents/vault_update_params.rb +47 -0
  57. data/lib/openai/models/beta/agents/vaults/credential_list_params.rb +23 -13
  58. data/lib/openai/models/beta/beta_response.rb +23 -2
  59. data/lib/openai/models/beta/beta_response_error.rb +19 -1
  60. data/lib/openai/models/beta/beta_response_input_item.rb +107 -1
  61. data/lib/openai/models/beta/beta_response_item.rb +107 -1
  62. data/lib/openai/models/beta/beta_response_output_item.rb +107 -1
  63. data/lib/openai/models/beta/beta_responses_client_event.rb +23 -2
  64. data/lib/openai/models/beta/response_compact_params.rb +21 -0
  65. data/lib/openai/models/beta/response_create_params.rb +23 -2
  66. data/lib/openai/models/beta/session_turn_error.rb +3 -0
  67. data/lib/openai/models/chat/chat_completion_audio_param.rb +3 -3
  68. data/lib/openai/models/chat/chat_completion_message.rb +0 -8
  69. data/lib/openai/models/chat/chat_completion_message_function_tool_call.rb +0 -8
  70. data/lib/openai/models/chat/completion_create_params.rb +5 -12
  71. data/lib/openai/models/chat_model.rb +21 -0
  72. data/lib/openai/models/conversations/conversation_item.rb +107 -1
  73. data/lib/openai/models/decision.rb +17 -2
  74. data/lib/openai/models/decision_create_params.rb +29 -12
  75. data/lib/openai/models/decision_input_image.rb +4 -3
  76. data/lib/openai/models/decision_input_message.rb +4 -4
  77. data/lib/openai/models/decision_input_part.rb +3 -2
  78. data/lib/openai/models/image_edit_completed_event.rb +15 -3
  79. data/lib/openai/models/image_edit_params.rb +28 -5
  80. data/lib/openai/models/image_edit_partial_image_event.rb +1 -2
  81. data/lib/openai/models/image_gen_completed_event.rb +15 -3
  82. data/lib/openai/models/image_gen_partial_image_event.rb +1 -2
  83. data/lib/openai/models/image_generate_params.rb +28 -5
  84. data/lib/openai/models/images_response.rb +15 -3
  85. data/lib/openai/models/live/built_in_voice.rb +1 -0
  86. data/lib/openai/models/live/client_event.rb +14 -2
  87. data/lib/openai/models/live/decision_create_event.rb +26 -0
  88. data/lib/openai/models/live/decision_event.rb +117 -0
  89. data/lib/openai/models/live/decision_item_create_event.rb +194 -0
  90. data/lib/openai/models/live/decision_item_created_event.rb +202 -0
  91. data/lib/openai/models/live/decision_item_delete_event.rb +38 -0
  92. data/lib/openai/models/live/decision_item_deleted_event.rb +46 -0
  93. data/lib/openai/models/live/decision_trigger.rb +244 -0
  94. data/lib/openai/models/live/decisions_delegation_config.rb +201 -0
  95. data/lib/openai/models/live/decisions_delegation_update_config.rb +208 -0
  96. data/lib/openai/models/live/delegation_created_event.rb +10 -10
  97. data/lib/openai/models/live/fork_client_event.rb +14 -2
  98. data/lib/openai/models/live/fork_server_event.rb +17 -2
  99. data/lib/openai/models/live/media_session_config.rb +47 -11
  100. data/lib/openai/models/live/output_audio_fixture_play_event.rb +48 -0
  101. data/lib/openai/models/live/output_audio_fixture_played_event.rb +42 -0
  102. data/lib/openai/models/live/output_audio_fixture_playing_event.rb +41 -0
  103. data/lib/openai/models/live/server_event.rb +17 -2
  104. data/lib/openai/models/live/session_accept_params.rb +47 -11
  105. data/lib/openai/models/live/session_config.rb +47 -11
  106. data/lib/openai/models/live/session_resource.rb +47 -11
  107. data/lib/openai/models/live/session_update_config.rb +38 -6
  108. data/lib/openai/models/live/session_update_event.rb +8 -8
  109. data/lib/openai/models/live/sideband_client_event.rb +57 -0
  110. data/lib/openai/models/live/sideband_server_event.rb +78 -0
  111. data/lib/openai/models/realtime/realtime_audio_config_output.rb +6 -3
  112. data/lib/openai/models/realtime/realtime_response_create_audio_output.rb +6 -3
  113. data/lib/openai/models/realtime/realtime_response_status.rb +10 -1
  114. data/lib/openai/models/response_format_json_schema.rb +1 -1
  115. data/lib/openai/models/responses/function_tool.rb +8 -6
  116. data/lib/openai/models/responses/response.rb +2 -23
  117. data/lib/openai/models/responses/response_compact_params.rb +21 -0
  118. data/lib/openai/models/responses/response_create_params.rb +3 -6
  119. data/lib/openai/models/responses/response_error.rb +19 -1
  120. data/lib/openai/models/responses/response_format_text_config.rb +0 -4
  121. data/lib/openai/models/responses/response_function_tool_call.rb +0 -8
  122. data/lib/openai/models/responses/response_input_item.rb +107 -1
  123. data/lib/openai/models/responses/response_item.rb +107 -1
  124. data/lib/openai/models/responses/response_output_item.rb +107 -1
  125. data/lib/openai/models/responses/response_output_text.rb +0 -8
  126. data/lib/openai/models/responses/responses_client_event.rb +2 -2
  127. data/lib/openai/models/safety/safety_alert.rb +12 -1
  128. data/lib/openai/models/video_create_error.rb +19 -1
  129. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +4 -4
  130. data/lib/openai/models/webhooks/webhook_endpoint_with_secret.rb +0 -9
  131. data/lib/openai/resources/admin/organization/external_storage.rb +1 -1
  132. data/lib/openai/resources/admin/organization/projects/api_keys.rb +61 -0
  133. data/lib/openai/resources/admin/organization/usage.rb +67 -0
  134. data/lib/openai/resources/audio/speech.rb +2 -1
  135. data/lib/openai/resources/audio/voices.rb +10 -10
  136. data/lib/openai/resources/beta/agents/environments/files.rb +3 -31
  137. data/lib/openai/resources/beta/agents/environments.rb +3 -3
  138. data/lib/openai/resources/beta/agents/sessions/artifacts.rb +5 -11
  139. data/lib/openai/resources/beta/agents/sessions.rb +20 -56
  140. data/lib/openai/resources/beta/agents/vaults/credentials.rb +10 -6
  141. data/lib/openai/resources/beta/agents/vaults.rb +45 -6
  142. data/lib/openai/resources/beta/agents.rb +6 -4
  143. data/lib/openai/resources/beta/responses.rb +2 -2
  144. data/lib/openai/resources/chat/completions.rb +11 -37
  145. data/lib/openai/resources/decisions.rb +9 -15
  146. data/lib/openai/resources/files.rb +0 -39
  147. data/lib/openai/resources/images.rb +50 -12
  148. data/lib/openai/resources/live/forks.rb +19 -0
  149. data/lib/openai/resources/live/sideband.rb +19 -0
  150. data/lib/openai/resources/live.rb +19 -0
  151. data/lib/openai/resources/realtime/translations.rb +19 -0
  152. data/lib/openai/resources/realtime.rb +19 -0
  153. data/lib/openai/resources/responses.rb +44 -95
  154. data/lib/openai/resources/vector_stores/file_batches.rb +0 -178
  155. data/lib/openai/resources/vector_stores/files.rb +0 -188
  156. data/lib/openai/resources/webhooks.rb +13 -29
  157. data/lib/openai/version.rb +1 -1
  158. data/lib/openai.rb +31 -0
  159. data/rbi/openai/client.rbi +0 -103
  160. data/rbi/openai/helpers/admin/organization/projects/api_keys.rbi +25 -0
  161. data/rbi/openai/helpers/beta/agents/artifacts.rbi +25 -0
  162. data/rbi/openai/helpers/beta/agents/files.rbi +48 -0
  163. data/rbi/openai/helpers/client_runtime.rbi +108 -0
  164. data/rbi/openai/helpers/files.rbi +25 -0
  165. data/rbi/openai/helpers/models/chat/parsed.rbi +21 -0
  166. data/rbi/openai/helpers/models/responses/parsed.rbi +19 -0
  167. data/rbi/openai/helpers/models/responses/response.rbi +15 -0
  168. data/rbi/openai/helpers/streaming/response_stream.rbi +301 -0
  169. data/rbi/openai/helpers/vector_stores/file_batches.rbi +102 -0
  170. data/rbi/openai/helpers/vector_stores/files.rbi +122 -0
  171. data/rbi/openai/helpers/websocket.rbi +82 -0
  172. data/rbi/openai/models/admin/organization/audit_log_list_response.rbi +6 -3
  173. data/rbi/openai/models/admin/organization/external_storage_configuration.rbi +4 -2
  174. data/rbi/openai/models/admin/organization/external_storage_create_params.rbi +63 -4
  175. data/rbi/openai/models/admin/organization/oci_external_storage_provider.rbi +71 -0
  176. data/rbi/openai/models/admin/organization/project_residency.rbi +12 -0
  177. data/rbi/openai/models/admin/organization/projects/api_key_update_params.rbi +110 -0
  178. data/rbi/openai/models/admin/organization/projects/api_key_update_scopes_params.rbi +72 -0
  179. data/rbi/openai/models/admin/organization/usage_decisions_params.rbi +229 -0
  180. data/rbi/openai/models/admin/organization/usage_decisions_response.rbi +479 -0
  181. data/rbi/openai/models/audio/speech_create_params.rbi +6 -3
  182. data/rbi/openai/models/audio/voice.rbi +21 -2
  183. data/rbi/openai/models/audio/voice_create_params.rbi +149 -4
  184. data/rbi/openai/models/beta/agent_create_params.rbi +4 -2
  185. data/rbi/openai/models/beta/agent_list_params.rbi +8 -5
  186. data/rbi/openai/models/beta/agent_session.rbi +64 -1
  187. data/rbi/openai/models/beta/agent_update_params.rbi +4 -2
  188. data/rbi/openai/models/beta/agents/environment_list_params.rbi +7 -7
  189. data/rbi/openai/models/beta/agents/session_create_params.rbi +62 -2
  190. data/rbi/openai/models/beta/agents/session_list_params.rbi +11 -11
  191. data/rbi/openai/models/beta/agents/session_update_params.rbi +56 -0
  192. data/rbi/openai/models/beta/agents/sessions/artifact_list_params.rbi +19 -13
  193. data/rbi/openai/models/beta/agents/vault_list_params.rbi +30 -13
  194. data/rbi/openai/models/beta/agents/vault_status_filter.rbi +1 -3
  195. data/rbi/openai/models/beta/agents/vault_update_params.rbi +87 -0
  196. data/rbi/openai/models/beta/agents/vaults/credential_list_params.rbi +30 -13
  197. data/rbi/openai/models/beta/beta_response.rbi +2 -2
  198. data/rbi/openai/models/beta/beta_response_error.rbi +24 -3
  199. data/rbi/openai/models/beta/beta_response_input_item.rbi +191 -0
  200. data/rbi/openai/models/beta/beta_response_item.rbi +189 -0
  201. data/rbi/openai/models/beta/beta_response_output_item.rbi +191 -0
  202. data/rbi/openai/models/beta/beta_responses_client_event.rbi +2 -2
  203. data/rbi/openai/models/beta/response_create_params.rbi +2 -2
  204. data/rbi/openai/models/beta/session_turn_error.rbi +3 -0
  205. data/rbi/openai/models/chat/chat_completion_audio_param.rbi +3 -3
  206. data/rbi/openai/models/chat/chat_completion_message.rbi +0 -4
  207. data/rbi/openai/models/chat/chat_completion_message_function_tool_call.rbi +0 -4
  208. data/rbi/openai/models/chat/completion_create_params.rbi +63 -78
  209. data/rbi/openai/models/conversations/conversation_item.rbi +191 -0
  210. data/rbi/openai/models/decision.rbi +14 -1
  211. data/rbi/openai/models/decision_create_params.rbi +23 -12
  212. data/rbi/openai/models/decision_input_image.rbi +4 -3
  213. data/rbi/openai/models/decision_input_message.rbi +4 -4
  214. data/rbi/openai/models/decision_input_part.rbi +2 -1
  215. data/rbi/openai/models/image_edit_completed_event.rbi +16 -1
  216. data/rbi/openai/models/image_edit_params.rbi +26 -4
  217. data/rbi/openai/models/image_edit_partial_image_event.rbi +1 -0
  218. data/rbi/openai/models/image_gen_completed_event.rbi +16 -1
  219. data/rbi/openai/models/image_gen_partial_image_event.rbi +1 -0
  220. data/rbi/openai/models/image_generate_params.rbi +26 -4
  221. data/rbi/openai/models/images_response.rbi +15 -0
  222. data/rbi/openai/models/live/built_in_voice.rbi +1 -0
  223. data/rbi/openai/models/live/client_event.rbi +4 -0
  224. data/rbi/openai/models/live/decision_create_event.rbi +55 -0
  225. data/rbi/openai/models/live/decision_event.rbi +185 -0
  226. data/rbi/openai/models/live/decision_item_create_event.rbi +338 -0
  227. data/rbi/openai/models/live/decision_item_created_event.rbi +354 -0
  228. data/rbi/openai/models/live/decision_item_delete_event.rbi +66 -0
  229. data/rbi/openai/models/live/decision_item_deleted_event.rbi +77 -0
  230. data/rbi/openai/models/live/decision_trigger.rbi +465 -0
  231. data/rbi/openai/models/live/decisions_delegation_config.rbi +393 -0
  232. data/rbi/openai/models/live/decisions_delegation_update_config.rbi +412 -0
  233. data/rbi/openai/models/live/delegation_created_event.rbi +8 -10
  234. data/rbi/openai/models/live/fork_client_event.rbi +4 -0
  235. data/rbi/openai/models/live/fork_server_event.rbi +5 -0
  236. data/rbi/openai/models/live/media_session_config.rbi +95 -14
  237. data/rbi/openai/models/live/output_audio_fixture_play_event.rbi +76 -0
  238. data/rbi/openai/models/live/output_audio_fixture_played_event.rbi +73 -0
  239. data/rbi/openai/models/live/output_audio_fixture_playing_event.rbi +72 -0
  240. data/rbi/openai/models/live/server_event.rbi +5 -0
  241. data/rbi/openai/models/live/session_accept_params.rbi +88 -12
  242. data/rbi/openai/models/live/session_config.rbi +100 -14
  243. data/rbi/openai/models/live/session_resource.rbi +81 -10
  244. data/rbi/openai/models/live/session_update_config.rbi +86 -9
  245. data/rbi/openai/models/live/session_update_event.rbi +8 -8
  246. data/rbi/openai/models/live/sideband_client_event.rbi +40 -0
  247. data/rbi/openai/models/live/sideband_server_event.rbi +47 -0
  248. data/rbi/openai/models/realtime/realtime_audio_config_output.rbi +6 -3
  249. data/rbi/openai/models/realtime/realtime_response_create_audio_output.rbi +6 -3
  250. data/rbi/openai/models/realtime/realtime_response_status.rbi +13 -1
  251. data/rbi/openai/models/realtime/realtime_translation_input_audio_buffer_append_event.rbi +1 -1
  252. data/rbi/openai/models/realtime/realtime_translation_output_audio_delta_event.rbi +3 -3
  253. data/rbi/openai/models/realtime/realtime_translation_session_close_event.rbi +1 -1
  254. data/rbi/openai/models/realtime/realtime_translation_session_update_event.rbi +5 -1
  255. data/rbi/openai/models/responses/response.rbi +2 -7
  256. data/rbi/openai/models/responses/response_create_params.rbi +5 -9
  257. data/rbi/openai/models/responses/response_error.rbi +24 -3
  258. data/rbi/openai/models/responses/response_function_tool_call.rbi +0 -4
  259. data/rbi/openai/models/responses/response_function_web_search.rbi +21 -17
  260. data/rbi/openai/models/responses/response_input_item.rbi +191 -0
  261. data/rbi/openai/models/responses/response_item.rbi +189 -0
  262. data/rbi/openai/models/responses/response_output_item.rbi +191 -0
  263. data/rbi/openai/models/responses/response_output_text.rbi +0 -4
  264. data/rbi/openai/models/responses/responses_client_event.rbi +2 -2
  265. data/rbi/openai/models/safety/safety_alert.rbi +13 -1
  266. data/rbi/openai/models/video_create_error.rbi +24 -3
  267. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +1 -1
  268. data/rbi/openai/resources/admin/organization/external_storage.rbi +2 -1
  269. data/rbi/openai/resources/admin/organization/projects/api_keys.rbi +48 -0
  270. data/rbi/openai/resources/admin/organization/usage.rbi +56 -0
  271. data/rbi/openai/resources/audio/speech.rbi +2 -1
  272. data/rbi/openai/resources/audio/voices.rbi +13 -10
  273. data/rbi/openai/resources/beta/agents/environments/files.rbi +3 -33
  274. data/rbi/openai/resources/beta/agents/environments.rbi +3 -3
  275. data/rbi/openai/resources/beta/agents/sessions/artifacts.rbi +5 -13
  276. data/rbi/openai/resources/beta/agents/sessions.rbi +15 -4
  277. data/rbi/openai/resources/beta/agents/vaults/credentials.rbi +9 -5
  278. data/rbi/openai/resources/beta/agents/vaults.rbi +34 -5
  279. data/rbi/openai/resources/beta/agents.rbi +6 -4
  280. data/rbi/openai/resources/beta/responses.rbi +2 -2
  281. data/rbi/openai/resources/chat/completions.rbi +26 -29
  282. data/rbi/openai/resources/decisions.rbi +9 -15
  283. data/rbi/openai/resources/files.rbi +0 -18
  284. data/rbi/openai/resources/images.rbi +44 -8
  285. data/rbi/openai/resources/live/forks.rbi +17 -0
  286. data/rbi/openai/resources/live/sideband.rbi +17 -0
  287. data/rbi/openai/resources/live.rbi +17 -0
  288. data/rbi/openai/resources/realtime/translations.rbi +17 -0
  289. data/rbi/openai/resources/realtime.rbi +17 -0
  290. data/rbi/openai/resources/responses.rbi +41 -333
  291. data/rbi/openai/resources/vector_stores/file_batches.rbi +0 -93
  292. data/rbi/openai/resources/vector_stores/files.rbi +0 -113
  293. data/rbi/openai/resources/webhooks.rbi +1 -1
  294. data/sig/openai/client.rbs +0 -50
  295. data/sig/openai/helpers/admin/organization/projects/api_keys.rbs +18 -0
  296. data/sig/openai/helpers/beta/agents/artifacts.rbs +17 -0
  297. data/sig/openai/helpers/beta/agents/files.rbs +30 -0
  298. data/sig/openai/helpers/client_runtime.rbs +53 -0
  299. data/sig/openai/helpers/files.rbs +12 -0
  300. data/sig/openai/helpers/models/responses/response.rbs +9 -0
  301. data/sig/openai/helpers/streaming/response_stream.rbs +37 -0
  302. data/sig/openai/helpers/vector_stores/file_batches.rbs +38 -0
  303. data/sig/openai/helpers/vector_stores/files.rbs +43 -0
  304. data/sig/openai/helpers/websocket.rbs +40 -0
  305. data/sig/openai/models/admin/organization/audit_log_list_response.rbs +1 -0
  306. data/sig/openai/models/admin/organization/external_storage_configuration.rbs +1 -0
  307. data/sig/openai/models/admin/organization/external_storage_create_params.rbs +33 -0
  308. data/sig/openai/models/admin/organization/oci_external_storage_provider.rbs +34 -0
  309. data/sig/openai/models/admin/organization/project_residency.rbs +6 -0
  310. data/sig/openai/models/admin/organization/projects/api_key_update_params.rbs +77 -0
  311. data/sig/openai/models/admin/organization/projects/api_key_update_scopes_params.rbs +38 -0
  312. data/sig/openai/models/admin/organization/usage_decisions_params.rbs +170 -0
  313. data/sig/openai/models/admin/organization/usage_decisions_response.rbs +319 -0
  314. data/sig/openai/models/audio/speech_create_params.rbs +4 -2
  315. data/sig/openai/models/audio/voice.rbs +21 -3
  316. data/sig/openai/models/audio/voice_create_params.rbs +90 -1
  317. data/sig/openai/models/beta/agent_create_params.rbs +4 -2
  318. data/sig/openai/models/beta/agent_list_params.rbs +9 -6
  319. data/sig/openai/models/beta/agent_session.rbs +36 -2
  320. data/sig/openai/models/beta/agent_update_params.rbs +4 -2
  321. data/sig/openai/models/beta/agents/environment_list_params.rbs +9 -9
  322. data/sig/openai/models/beta/agents/session_create_params.rbs +29 -2
  323. data/sig/openai/models/beta/agents/session_list_params.rbs +12 -12
  324. data/sig/openai/models/beta/agents/session_update_params.rbs +23 -0
  325. data/sig/openai/models/beta/agents/sessions/artifact_list_params.rbs +21 -15
  326. data/sig/openai/models/beta/agents/vault_list_params.rbs +32 -14
  327. data/sig/openai/models/beta/agents/vault_update_params.rbs +54 -0
  328. data/sig/openai/models/beta/agents/vaults/credential_list_params.rbs +32 -14
  329. data/sig/openai/models/beta/beta_response.rbs +2 -2
  330. data/sig/openai/models/beta/beta_response_error.rbs +19 -3
  331. data/sig/openai/models/beta/beta_response_input_item.rbs +110 -0
  332. data/sig/openai/models/beta/beta_response_item.rbs +110 -0
  333. data/sig/openai/models/beta/beta_response_output_item.rbs +110 -0
  334. data/sig/openai/models/beta/beta_responses_client_event.rbs +2 -2
  335. data/sig/openai/models/beta/response_create_params.rbs +2 -2
  336. data/sig/openai/models/beta/session_turn_error.rbs +4 -0
  337. data/sig/openai/models/chat/chat_completion_audio_param.rbs +2 -2
  338. data/sig/openai/models/chat/completion_create_params.rbs +2 -2
  339. data/sig/openai/models/conversations/conversation_item.rbs +110 -0
  340. data/sig/openai/models/decision.rbs +13 -0
  341. data/sig/openai/models/decision_create_params.rbs +19 -8
  342. data/sig/openai/models/decision_input_image.rbs +2 -2
  343. data/sig/openai/models/decision_input_message.rbs +2 -2
  344. data/sig/openai/models/image_edit_completed_event.rbs +14 -2
  345. data/sig/openai/models/image_edit_params.rbs +27 -6
  346. data/sig/openai/models/image_gen_completed_event.rbs +14 -2
  347. data/sig/openai/models/image_generate_params.rbs +27 -6
  348. data/sig/openai/models/images_response.rbs +12 -0
  349. data/sig/openai/models/live/built_in_voice.rbs +2 -0
  350. data/sig/openai/models/live/client_event.rbs +4 -0
  351. data/sig/openai/models/live/decision_create_event.rbs +18 -0
  352. data/sig/openai/models/live/decision_event.rbs +102 -0
  353. data/sig/openai/models/live/decision_item_create_event.rbs +183 -0
  354. data/sig/openai/models/live/decision_item_created_event.rbs +195 -0
  355. data/sig/openai/models/live/decision_item_delete_event.rbs +33 -0
  356. data/sig/openai/models/live/decision_item_deleted_event.rbs +49 -0
  357. data/sig/openai/models/live/decision_trigger.rbs +234 -0
  358. data/sig/openai/models/live/decisions_delegation_config.rbs +195 -0
  359. data/sig/openai/models/live/decisions_delegation_update_config.rbs +202 -0
  360. data/sig/openai/models/live/delegation_created_event.rbs +6 -7
  361. data/sig/openai/models/live/fork_client_event.rbs +4 -0
  362. data/sig/openai/models/live/fork_server_event.rbs +5 -0
  363. data/sig/openai/models/live/media_session_config.rbs +58 -11
  364. data/sig/openai/models/live/output_audio_fixture_play_event.rbs +42 -0
  365. data/sig/openai/models/live/output_audio_fixture_played_event.rbs +44 -0
  366. data/sig/openai/models/live/output_audio_fixture_playing_event.rbs +44 -0
  367. data/sig/openai/models/live/server_event.rbs +5 -0
  368. data/sig/openai/models/live/session_accept_params.rbs +57 -10
  369. data/sig/openai/models/live/session_config.rbs +58 -11
  370. data/sig/openai/models/live/session_resource.rbs +57 -10
  371. data/sig/openai/models/live/session_update_config.rbs +54 -3
  372. data/sig/openai/models/live/session_update_event.rbs +6 -6
  373. data/sig/openai/models/live/sideband_client_event.rbs +26 -0
  374. data/sig/openai/models/live/sideband_server_event.rbs +33 -0
  375. data/sig/openai/models/realtime/realtime_audio_config_output.rbs +6 -3
  376. data/sig/openai/models/realtime/realtime_response_create_audio_output.rbs +6 -3
  377. data/sig/openai/models/realtime/realtime_response_status.rbs +15 -3
  378. data/sig/openai/models/responses/response.rbs +2 -4
  379. data/sig/openai/models/responses/response_create_params.rbs +2 -2
  380. data/sig/openai/models/responses/response_error.rbs +19 -3
  381. data/sig/openai/models/responses/response_input_item.rbs +110 -0
  382. data/sig/openai/models/responses/response_item.rbs +110 -0
  383. data/sig/openai/models/responses/response_output_item.rbs +110 -0
  384. data/sig/openai/models/responses/responses_client_event.rbs +2 -2
  385. data/sig/openai/models/safety/safety_alert.rbs +12 -2
  386. data/sig/openai/models/video_create_error.rbs +19 -3
  387. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +1 -1
  388. data/sig/openai/resources/admin/organization/projects/api_keys.rbs +8 -0
  389. data/sig/openai/resources/admin/organization/usage.rbs +15 -0
  390. data/sig/openai/resources/beta/agents/environments/files.rbs +0 -17
  391. data/sig/openai/resources/beta/agents/sessions/artifacts.rbs +2 -6
  392. data/sig/openai/resources/beta/agents/sessions.rbs +4 -1
  393. data/sig/openai/resources/beta/agents/vaults/credentials.rbs +2 -1
  394. data/sig/openai/resources/beta/agents/vaults.rbs +9 -1
  395. data/sig/openai/resources/beta/agents.rbs +1 -1
  396. data/sig/openai/resources/files.rbs +0 -7
  397. data/sig/openai/resources/images.rbs +4 -0
  398. data/sig/openai/resources/live/forks.rbs +8 -0
  399. data/sig/openai/resources/live/sideband.rbs +8 -0
  400. data/sig/openai/resources/live.rbs +7 -0
  401. data/sig/openai/resources/realtime/translations.rbs +7 -0
  402. data/sig/openai/resources/realtime.rbs +7 -0
  403. data/sig/openai/resources/responses.rbs +7 -31
  404. data/sig/openai/resources/vector_stores/file_batches.rbs +0 -31
  405. data/sig/openai/resources/vector_stores/files.rbs +0 -36
  406. data/sig/openai/resources/webhooks.rbs +1 -1
  407. metadata +89 -1
@@ -38,8 +38,8 @@ module OpenAI
38
38
  optional :client_event_id, String
39
39
 
40
40
  # @!method initialize(delegation:, event_id:, offset_ms:, client_event_id: nil, type: :"session.delegation.created")
41
- # Returned when the Live model delegates work to your application or a Responses
42
- # backend. Contains delegation metadata and the position on the session timeline
41
+ # Returned when the Live model delegates work to your application, Responses, or
42
+ # Decisions. Contains delegation metadata and the position on the session timeline
43
43
  # where the work was delegated.
44
44
  #
45
45
  # @param delegation [OpenAI::Models::Live::DelegationCreatedEvent::Delegation]
@@ -64,14 +64,13 @@ module OpenAI
64
64
  class Delegation < OpenAI::Internal::Type::BaseModel
65
65
  # @!attribute id
66
66
  # The unique ID of the delegation. Use this as delegation_id when replying to
67
- # client-owned work or correlating Responses events.
67
+ # client-owned work or correlating backend events.
68
68
  #
69
69
  # @return [String]
70
70
  required :id, String
71
71
 
72
72
  # @!attribute target
73
- # Where the Live model delegated the work: `client` for your application, or
74
- # `responses` for the configured Responses backend.
73
+ # Where the Live model delegated the work: `client`, `responses`, or `decisions`.
75
74
  #
76
75
  # @return [Symbol, OpenAI::Models::Live::DelegationCreatedEvent::Delegation::Target]
77
76
  required :target, union: -> { OpenAI::Live::DelegationCreatedEvent::Delegation::Target }
@@ -95,11 +94,10 @@ module OpenAI
95
94
  #
96
95
  # @param id [String]
97
96
  # The unique ID of the delegation. Use this as delegation_id when replying to
98
- # client-owned work or correlating Responses events.
97
+ # client-owned work or correlating backend events.
99
98
  #
100
99
  # @param target [Symbol, OpenAI::Models::Live::DelegationCreatedEvent::Delegation::Target]
101
- # Where the Live model delegated the work: `client` for your application, or
102
- # `responses` for the configured Responses backend.
100
+ # Where the Live model delegated the work: `client`, `responses`, or `decisions`.
103
101
  #
104
102
  # @param response_id [String]
105
103
  # The ID of the Responses API response associated with a Responses delegation.
@@ -108,8 +106,7 @@ module OpenAI
108
106
  # @param type [Symbol, :delegation]
109
107
  # The object type, always `delegation`.
110
108
 
111
- # Where the Live model delegated the work: `client` for your application, or
112
- # `responses` for the configured Responses backend.
109
+ # Where the Live model delegated the work: `client`, `responses`, or `decisions`.
113
110
  #
114
111
  # @see OpenAI::Models::Live::DelegationCreatedEvent::Delegation#target
115
112
  module Target
@@ -119,6 +116,8 @@ module OpenAI
119
116
 
120
117
  variant const: -> { OpenAI::Models::Live::DelegationCreatedEvent::Delegation::Target::RESPONSES }
121
118
 
119
+ variant const: -> { OpenAI::Models::Live::DelegationCreatedEvent::Delegation::Target::DECISIONS }
120
+
122
121
  # @!method self.variants
123
122
  # @return [Array(Symbol)]
124
123
 
@@ -130,6 +129,7 @@ module OpenAI
130
129
 
131
130
  CLIENT = :client
132
131
  RESPONSES = :responses
132
+ DECISIONS = :decisions
133
133
 
134
134
  # @!endgroup
135
135
  end
@@ -15,7 +15,7 @@ module OpenAI
15
15
  # Start a Live session after connecting to a stored session’s fork WebSocket. Send an empty `session` object to use the stored configuration.
16
16
  variant :"session.start", -> { OpenAI::Live::ForkSessionStartEvent }
17
17
 
18
- # Update the delegation settings of an active Live session. The server acknowledges accepted changes with `session.updated`.
18
+ # Update the delegation settings or transcript triggers of an active Live session. The server acknowledges accepted changes with `session.updated`.
19
19
  variant :"session.update", -> { OpenAI::Live::SessionUpdateEvent }
20
20
 
21
21
  # Send audio to a Live session over its primary WebSocket. WebRTC and SIP sessions send audio over their media transport.
@@ -27,6 +27,9 @@ module OpenAI
27
27
  # Resume audio input to a Live model after muting it. The server acknowledges with `session.input_audio.unmuted`.
28
28
  variant :"session.input_audio.unmute", -> { OpenAI::Live::InputAudioUnmuteEvent }
29
29
 
30
+ # 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.
31
+ variant :"session.output_audio.fixture.play", -> { OpenAI::Live::OutputAudioFixturePlayEvent }
32
+
30
33
  # Append instructions to the Live conversation while it is running, optionally associating them with an existing client delegation.
31
34
  variant :"session.instructions.append", -> { OpenAI::Live::InstructionsAppendEvent }
32
35
 
@@ -36,6 +39,15 @@ module OpenAI
36
39
  # Provide context the Live model can communicate to the user, optionally for an existing client delegation.
37
40
  variant :"session.commentary.append", -> { OpenAI::Live::CommentaryAppendEvent }
38
41
 
42
+ # Evaluate the configured questions using the current conversation and Decision inputs. Reusing an event_id is rejected for the lifetime of the session.
43
+ variant :"decision.create", -> { OpenAI::Live::DecisionCreateEvent }
44
+
45
+ # Append an input item for future decisions without starting an evaluation or changing Live voice context.
46
+ variant :"decision.item.create", -> { OpenAI::Live::DecisionItemCreateEvent }
47
+
48
+ # Delete an input item from future decisions without starting an evaluation or changing Live voice context.
49
+ variant :"decision.item.delete", -> { OpenAI::Live::DecisionItemDeleteEvent }
50
+
39
51
  # Add an input item to the Live session’s Responses backend. Requires Responses delegation; use `response.create` to request a response.
40
52
  variant :"response.item.create", -> { OpenAI::Live::ResponseItemCreateEvent }
41
53
 
@@ -46,7 +58,7 @@ module OpenAI
46
58
  variant :"session.close", -> { OpenAI::Live::SessionCloseEvent }
47
59
 
48
60
  # @!method self.variants
49
- # @return [Array(OpenAI::Models::Live::ForkSessionStartEvent, OpenAI::Models::Live::SessionUpdateEvent, OpenAI::Models::Live::InputAudioAppendEvent, OpenAI::Models::Live::InputAudioMuteEvent, OpenAI::Models::Live::InputAudioUnmuteEvent, OpenAI::Models::Live::InstructionsAppendEvent, OpenAI::Models::Live::ThinkingAppendEvent, OpenAI::Models::Live::CommentaryAppendEvent, OpenAI::Models::Live::ResponseItemCreateEvent, OpenAI::Models::Live::ResponseCreateEvent, OpenAI::Models::Live::SessionCloseEvent)]
61
+ # @return [Array(OpenAI::Models::Live::ForkSessionStartEvent, OpenAI::Models::Live::SessionUpdateEvent, OpenAI::Models::Live::InputAudioAppendEvent, 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)]
50
62
  end
51
63
  end
52
64
  end
@@ -25,6 +25,12 @@ module OpenAI
25
25
  # Returned when a session.input_audio.unmute command is accepted. Input audio is sent to the model again.
26
26
  variant :"session.input_audio.unmuted", -> { OpenAI::Live::InputAudioUnmutedEvent }
27
27
 
28
+ # 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.
29
+ variant :"session.output_audio.fixture.playing", -> { OpenAI::Live::OutputAudioFixturePlayingEvent }
30
+
31
+ # 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.
32
+ variant :"session.output_audio.fixture.played", -> { OpenAI::Live::OutputAudioFixturePlayedEvent }
33
+
28
34
  # 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.
29
35
  variant :"session.instructions.appended", -> { OpenAI::Live::InstructionsAppendedEvent }
30
36
 
@@ -46,9 +52,18 @@ module OpenAI
46
52
  # 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.
47
53
  variant :"session.output_transcript.delta", -> { OpenAI::Live::OutputTranscriptDeltaEvent }
48
54
 
49
- # Returned when the Live model delegates work to your application or a Responses backend. Contains delegation metadata and the position on the session timeline where the work was delegated.
55
+ # 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.
50
56
  variant :"session.delegation.created", -> { OpenAI::Live::DelegationCreatedEvent }
51
57
 
58
+ # 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.
59
+ variant :"decision.event", -> { OpenAI::Live::DecisionEvent }
60
+
61
+ # An input item was appended for future decisions.
62
+ variant :"decision.item.created", -> { OpenAI::Live::DecisionItemCreatedEvent }
63
+
64
+ # An input item was removed from future decisions.
65
+ variant :"decision.item.deleted", -> { OpenAI::Live::DecisionItemDeletedEvent }
66
+
52
67
  # 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.
53
68
  variant :"response.event", -> { OpenAI::Live::ResponseEvent }
54
69
 
@@ -299,7 +314,7 @@ module OpenAI
299
314
  end
300
315
 
301
316
  # @!method self.variants
302
- # @return [Array(OpenAI::Models::Live::SessionStartedEvent, OpenAI::Models::Live::SessionUpdatedEvent, OpenAI::Models::Live::InputAudioMutedEvent, OpenAI::Models::Live::InputAudioUnmutedEvent, OpenAI::Models::Live::InstructionsAppendedEvent, OpenAI::Models::Live::ThinkingAppendedEvent, OpenAI::Models::Live::CommentaryAppendedEvent, OpenAI::Models::Live::ForkServerEvent::SessionInputAudioAppend, OpenAI::Models::Live::OutputAudioDeltaEvent, OpenAI::Models::Live::InputTranscriptDeltaEvent, OpenAI::Models::Live::OutputTranscriptDeltaEvent, OpenAI::Models::Live::DelegationCreatedEvent, OpenAI::Models::Live::ResponseEvent, OpenAI::Models::Live::SessionUsageUpdatedEvent, OpenAI::Models::Live::SessionClosedEvent, OpenAI::Models::Live::ErrorEvent, OpenAI::Models::Live::InfoEvent, OpenAI::Models::Live::ForkServerEvent::TransportDtmfReceived, OpenAI::Models::Live::ForkServerEvent::TransportDtmfSend, OpenAI::Models::Live::ForkServerEvent::TransportRinging, OpenAI::Models::Live::ForkServerEvent::TransportAnswered, OpenAI::Models::Live::ForkServerEvent::TransportFailed)]
317
+ # @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::ForkServerEvent::SessionInputAudioAppend, OpenAI::Models::Live::OutputAudioDeltaEvent, 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, OpenAI::Models::Live::ForkServerEvent::TransportDtmfReceived, OpenAI::Models::Live::ForkServerEvent::TransportDtmfSend, OpenAI::Models::Live::ForkServerEvent::TransportRinging, OpenAI::Models::Live::ForkServerEvent::TransportAnswered, OpenAI::Models::Live::ForkServerEvent::TransportFailed)]
303
318
  end
304
319
  end
305
320
  end
@@ -27,15 +27,16 @@ module OpenAI
27
27
 
28
28
  # @!attribute delegation
29
29
  # Who handles tasks delegated by the Live model. Omitted or null selects your
30
- # application; use `responses` to let the API manage a Responses backend.
30
+ # application; use `responses` or `decisions` to delegate to the corresponding
31
+ # API.
31
32
  #
32
- # @return [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::MediaSessionConfig::Delegation::Responses, nil]
33
+ # @return [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::MediaSessionConfig::Delegation::Responses, OpenAI::Models::Live::MediaSessionConfig::Delegation::Decisions, nil]
33
34
  optional :delegation, union: -> { OpenAI::Live::MediaSessionConfig::Delegation }, nil?: true
34
35
 
35
36
  # @!attribute input
36
37
  # Ordered text-only history supplied before startup. Supports developer, user, and
37
- # assistant messages with one text part each; at most 128 messages and 8,192
38
- # rendered tokens in total.
38
+ # assistant messages with one text part each; at most 128 messages and a
39
+ # configured rendered-token limit (8,192 by default).
39
40
  #
40
41
  # @return [Array<OpenAI::Models::Live::InitialItem::Developer, OpenAI::Models::Live::InitialItem::User, OpenAI::Models::Live::InitialItem::Assistant>, nil]
41
42
  optional :input, -> { OpenAI::Internal::Type::ArrayOf[union: OpenAI::Live::InitialItem] }
@@ -59,7 +60,16 @@ module OpenAI
59
60
  # @return [Boolean, nil]
60
61
  optional :store, OpenAI::Internal::Type::Boolean
61
62
 
62
- # @!method initialize(model:, audio: nil, client: nil, delegation: nil, input: nil, instructions: nil, store: nil)
63
+ # @!attribute triggers
64
+ # At most one Decisions trigger per transcript event type. Triggers run
65
+ # independently of delegation. On update, omit triggers to keep the current
66
+ # configuration, send a list to replace it, or send an empty list to disable
67
+ # triggers.
68
+ #
69
+ # @return [Array<OpenAI::Models::Live::DecisionTrigger>, nil]
70
+ optional :triggers, -> { OpenAI::Internal::Type::ArrayOf[OpenAI::Live::DecisionTrigger] }
71
+
72
+ # @!method initialize(model:, audio: nil, client: nil, delegation: nil, input: nil, instructions: nil, store: nil, triggers: nil)
63
73
  # Startup configuration for a Live media session. Follow the
64
74
  # [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting)
65
75
  # when writing frontend instructions and the backend prompt under
@@ -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::MediaSessionConfig::Delegation::Responses, nil]
90
+ # @param delegation [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::MediaSessionConfig::Delegation::Responses, OpenAI::Models::Live::MediaSessionConfig::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.
@@ -179,7 +196,8 @@ module OpenAI
179
196
  end
180
197
 
181
198
  # Who handles tasks delegated by the Live model. Omitted or null selects your
182
- # application; use `responses` to let the API manage a Responses backend.
199
+ # application; use `responses` or `decisions` to delegate to the corresponding
200
+ # API.
183
201
  #
184
202
  # @see OpenAI::Models::Live::MediaSessionConfig#delegation
185
203
  module Delegation
@@ -193,6 +211,8 @@ module OpenAI
193
211
  # Delegate tasks to a Responses model managed by the Live session.
194
212
  variant :responses, -> { OpenAI::Live::MediaSessionConfig::Delegation::Responses }
195
213
 
214
+ variant :decisions, -> { OpenAI::Live::MediaSessionConfig::Delegation::Decisions }
215
+
196
216
  class Responses < OpenAI::Internal::Type::BaseModel
197
217
  # @!attribute responses
198
218
  # Backend model, prompt, and tools used when the Live session delegates a task to
@@ -218,8 +238,24 @@ module OpenAI
218
238
  # The delegation owner. Always `responses` for tasks handled by the Responses API.
219
239
  end
220
240
 
241
+ class Decisions < OpenAI::Internal::Type::BaseModel
242
+ # @!attribute decisions
243
+ #
244
+ # @return [OpenAI::Models::Live::DecisionsDelegationConfig]
245
+ required :decisions, -> { OpenAI::Live::DecisionsDelegationConfig }
246
+
247
+ # @!attribute type
248
+ #
249
+ # @return [Symbol, :decisions]
250
+ required :type, const: :decisions
251
+
252
+ # @!method initialize(decisions:, type: :decisions)
253
+ # @param decisions [OpenAI::Models::Live::DecisionsDelegationConfig]
254
+ # @param type [Symbol, :decisions]
255
+ end
256
+
221
257
  # @!method self.variants
222
- # @return [Array(OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::MediaSessionConfig::Delegation::Responses)]
258
+ # @return [Array(OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::MediaSessionConfig::Delegation::Responses, OpenAI::Models::Live::MediaSessionConfig::Delegation::Decisions)]
223
259
  end
224
260
  end
225
261
  end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Live
6
+ class OutputAudioFixturePlayEvent < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute audio
8
+ # Base64-encoded raw mono PCM16 audio, little-endian, at 24 kHz. Do not include a
9
+ # WAV or other container header.
10
+ #
11
+ # @return [String]
12
+ required :audio, String
13
+
14
+ # @!attribute type
15
+ #
16
+ # @return [Symbol, :"session.output_audio.fixture.play"]
17
+ required :type, const: :"session.output_audio.fixture.play"
18
+
19
+ # @!attribute event_id
20
+ # Optional client identifier for correlating this command with a server event's
21
+ # client_event_id or error.client_event_id.
22
+ #
23
+ # @return [String, nil]
24
+ optional :event_id, String, nil?: true
25
+
26
+ # @!method initialize(audio:, event_id: nil, type: :"session.output_audio.fixture.play")
27
+ # Play one complete audio fixture through the session output. Send this event over
28
+ # the primary WebSocket or a server sideband. Audio must be raw mono PCM16
29
+ # little-endian at 24 kHz, regardless of the session audio format, and at most 30
30
+ # seconds. The entire payload is validated before model speech is interrupted and
31
+ # input is muted. Only one fixture can be active. fixture.playing acknowledges
32
+ # acceptance and fixture.played reports server mixer drain. These notifications
33
+ # are not exact transport-media boundaries. Input arriving during playback is
34
+ # dropped and not replayed.
35
+ #
36
+ # @param audio [String]
37
+ # Base64-encoded raw mono PCM16 audio, little-endian, at 24 kHz. Do not include a
38
+ # WAV or other container header.
39
+ #
40
+ # @param event_id [String, nil]
41
+ # Optional client identifier for correlating this command with a server event's
42
+ # client_event_id or error.client_event_id.
43
+ #
44
+ # @param type [Symbol, :"session.output_audio.fixture.play"]
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Live
6
+ class OutputAudioFixturePlayedEvent < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute event_id
8
+ # The unique ID of the Live server event.
9
+ #
10
+ # @return [String]
11
+ required :event_id, String
12
+
13
+ # @!attribute type
14
+ #
15
+ # @return [Symbol, :"session.output_audio.fixture.played"]
16
+ required :type, const: :"session.output_audio.fixture.played"
17
+
18
+ # @!attribute client_event_id
19
+ # The event_id of the client command associated with this server event, when
20
+ # supplied.
21
+ #
22
+ # @return [String, nil]
23
+ optional :client_event_id, String
24
+
25
+ # @!method initialize(event_id:, client_event_id: nil, type: :"session.output_audio.fixture.played")
26
+ # The complete audio fixture has drained from the server mixer and normal
27
+ # inference has resumed. Transport buffers may still contain audio; this event
28
+ # does not prove listener-side completion. The optional client_event_id echoes the
29
+ # play command. This event is not emitted for canceled or failed playback.
30
+ #
31
+ # @param event_id [String]
32
+ # The unique ID of the Live server event.
33
+ #
34
+ # @param client_event_id [String]
35
+ # The event_id of the client command associated with this server event, when
36
+ # supplied.
37
+ #
38
+ # @param type [Symbol, :"session.output_audio.fixture.played"]
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Live
6
+ class OutputAudioFixturePlayingEvent < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute event_id
8
+ # The unique ID of the Live server event.
9
+ #
10
+ # @return [String]
11
+ required :event_id, String
12
+
13
+ # @!attribute type
14
+ #
15
+ # @return [Symbol, :"session.output_audio.fixture.playing"]
16
+ required :type, const: :"session.output_audio.fixture.playing"
17
+
18
+ # @!attribute client_event_id
19
+ # The event_id of the client command associated with this server event, when
20
+ # supplied.
21
+ #
22
+ # @return [String, nil]
23
+ optional :client_event_id, String
24
+
25
+ # @!method initialize(event_id:, client_event_id: nil, type: :"session.output_audio.fixture.playing")
26
+ # The existing playback path has accepted the validated audio fixture. This
27
+ # acknowledgment does not identify when the listener receives the first sample.
28
+ # The optional client_event_id echoes the play command.
29
+ #
30
+ # @param event_id [String]
31
+ # The unique ID of the Live server event.
32
+ #
33
+ # @param client_event_id [String]
34
+ # The event_id of the client command associated with this server event, when
35
+ # supplied.
36
+ #
37
+ # @param type [Symbol, :"session.output_audio.fixture.playing"]
38
+ end
39
+ end
40
+ end
41
+ end
@@ -25,6 +25,12 @@ module OpenAI
25
25
  # Returned when a session.input_audio.unmute command is accepted. Input audio is sent to the model again.
26
26
  variant :"session.input_audio.unmuted", -> { OpenAI::Live::InputAudioUnmutedEvent }
27
27
 
28
+ # 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.
29
+ variant :"session.output_audio.fixture.playing", -> { OpenAI::Live::OutputAudioFixturePlayingEvent }
30
+
31
+ # 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.
32
+ variant :"session.output_audio.fixture.played", -> { OpenAI::Live::OutputAudioFixturePlayedEvent }
33
+
28
34
  # 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.
29
35
  variant :"session.instructions.appended", -> { OpenAI::Live::InstructionsAppendedEvent }
30
36
 
@@ -46,9 +52,18 @@ module OpenAI
46
52
  # 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.
47
53
  variant :"session.output_transcript.delta", -> { OpenAI::Live::OutputTranscriptDeltaEvent }
48
54
 
49
- # Returned when the Live model delegates work to your application or a Responses backend. Contains delegation metadata and the position on the session timeline where the work was delegated.
55
+ # 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.
50
56
  variant :"session.delegation.created", -> { OpenAI::Live::DelegationCreatedEvent }
51
57
 
58
+ # 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.
59
+ variant :"decision.event", -> { OpenAI::Live::DecisionEvent }
60
+
61
+ # An input item was appended for future decisions.
62
+ variant :"decision.item.created", -> { OpenAI::Live::DecisionItemCreatedEvent }
63
+
64
+ # An input item was removed from future decisions.
65
+ variant :"decision.item.deleted", -> { OpenAI::Live::DecisionItemDeletedEvent }
66
+
52
67
  # 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.
53
68
  variant :"response.event", -> { OpenAI::Live::ResponseEvent }
54
69
 
@@ -299,7 +314,7 @@ module OpenAI
299
314
  end
300
315
 
301
316
  # @!method self.variants
302
- # @return [Array(OpenAI::Models::Live::SessionStartedEvent, OpenAI::Models::Live::SessionUpdatedEvent, OpenAI::Models::Live::InputAudioMutedEvent, OpenAI::Models::Live::InputAudioUnmutedEvent, OpenAI::Models::Live::InstructionsAppendedEvent, OpenAI::Models::Live::ThinkingAppendedEvent, OpenAI::Models::Live::CommentaryAppendedEvent, OpenAI::Models::Live::ServerEvent::SessionInputAudioAppend, OpenAI::Models::Live::OutputAudioDeltaEvent, OpenAI::Models::Live::InputTranscriptDeltaEvent, OpenAI::Models::Live::OutputTranscriptDeltaEvent, OpenAI::Models::Live::DelegationCreatedEvent, OpenAI::Models::Live::ResponseEvent, OpenAI::Models::Live::SessionUsageUpdatedEvent, OpenAI::Models::Live::SessionClosedEvent, OpenAI::Models::Live::ErrorEvent, OpenAI::Models::Live::InfoEvent, OpenAI::Models::Live::ServerEvent::TransportDtmfReceived, OpenAI::Models::Live::ServerEvent::TransportDtmfSend, OpenAI::Models::Live::ServerEvent::TransportRinging, OpenAI::Models::Live::ServerEvent::TransportAnswered, OpenAI::Models::Live::ServerEvent::TransportFailed)]
317
+ # @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::ServerEvent::SessionInputAudioAppend, OpenAI::Models::Live::OutputAudioDeltaEvent, 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, OpenAI::Models::Live::ServerEvent::TransportDtmfReceived, OpenAI::Models::Live::ServerEvent::TransportDtmfSend, OpenAI::Models::Live::ServerEvent::TransportRinging, OpenAI::Models::Live::ServerEvent::TransportAnswered, OpenAI::Models::Live::ServerEvent::TransportFailed)]
303
318
  end
304
319
  end
305
320
  end
@@ -52,9 +52,10 @@ module OpenAI
52
52
 
53
53
  # @!attribute delegation
54
54
  # Who handles tasks delegated by the Live model. Omitted or null selects your
55
- # application; use `responses` to let the API manage a Responses backend.
55
+ # application; use `responses` or `decisions` to delegate to the corresponding
56
+ # API.
56
57
  #
57
- # @return [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionAcceptParams::Session::Delegation::Responses, nil]
58
+ # @return [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionAcceptParams::Session::Delegation::Responses, OpenAI::Models::Live::SessionAcceptParams::Session::Delegation::Decisions, nil]
58
59
  optional(
59
60
  :delegation,
60
61
  union: -> {
@@ -65,8 +66,8 @@ module OpenAI
65
66
 
66
67
  # @!attribute input
67
68
  # Ordered text-only history supplied before startup. Supports developer, user, and
68
- # assistant messages with one text part each; at most 128 messages and 8,192
69
- # rendered tokens in total.
69
+ # assistant messages with one text part each; at most 128 messages and a
70
+ # configured rendered-token limit (8,192 by default).
70
71
  #
71
72
  # @return [Array<OpenAI::Models::Live::InitialItem::Developer, OpenAI::Models::Live::InitialItem::User, OpenAI::Models::Live::InitialItem::Assistant>, nil]
72
73
  optional :input, -> { OpenAI::Internal::Type::ArrayOf[union: OpenAI::Live::InitialItem] }
@@ -90,7 +91,16 @@ module OpenAI
90
91
  # @return [Boolean, nil]
91
92
  optional :store, OpenAI::Internal::Type::Boolean
92
93
 
93
- # @!method initialize(model:, audio: nil, delegation: nil, input: nil, instructions: nil, store: nil, type: :live)
94
+ # @!attribute triggers
95
+ # At most one Decisions trigger per transcript event type. Triggers run
96
+ # independently of delegation. On update, omit triggers to keep the current
97
+ # configuration, send a list to replace it, or send an empty list to disable
98
+ # triggers.
99
+ #
100
+ # @return [Array<OpenAI::Models::Live::DecisionTrigger>, nil]
101
+ optional :triggers, -> { OpenAI::Internal::Type::ArrayOf[OpenAI::Live::DecisionTrigger] }
102
+
103
+ # @!method initialize(model:, audio: nil, delegation: nil, input: nil, instructions: nil, store: nil, triggers: nil, type: :live)
94
104
  # Model and startup configuration for the Live session that answers the incoming
95
105
  # SIP call.
96
106
  #
@@ -102,14 +112,15 @@ module OpenAI
102
112
  # audio.format is only accepted for primary WebSockets. Voice cannot change after
103
113
  # startup.
104
114
  #
105
- # @param delegation [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionAcceptParams::Session::Delegation::Responses, nil]
115
+ # @param delegation [OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionAcceptParams::Session::Delegation::Responses, OpenAI::Models::Live::SessionAcceptParams::Session::Delegation::Decisions, nil]
106
116
  # Who handles tasks delegated by the Live model. Omitted or null selects your
107
- # application; use `responses` to let the API manage a Responses backend.
117
+ # application; use `responses` or `decisions` to delegate to the corresponding
118
+ # API.
108
119
  #
109
120
  # @param input [Array<OpenAI::Models::Live::InitialItem::Developer, OpenAI::Models::Live::InitialItem::User, OpenAI::Models::Live::InitialItem::Assistant>]
110
121
  # Ordered text-only history supplied before startup. Supports developer, user, and
111
- # assistant messages with one text part each; at most 128 messages and 8,192
112
- # rendered tokens in total.
122
+ # assistant messages with one text part each; at most 128 messages and a
123
+ # configured rendered-token limit (8,192 by default).
113
124
  #
114
125
  # @param instructions [String, nil]
115
126
  # Frontend instructions for voice, conversation, interruptions, and when to
@@ -124,6 +135,12 @@ module OpenAI
124
135
  # Whether to store the session for later forking and recording download. Defaults
125
136
  # to false for new sessions.
126
137
  #
138
+ # @param triggers [Array<OpenAI::Models::Live::DecisionTrigger>]
139
+ # At most one Decisions trigger per transcript event type. Triggers run
140
+ # independently of delegation. On update, omit triggers to keep the current
141
+ # configuration, send a list to replace it, or send an empty list to disable
142
+ # triggers.
143
+ #
127
144
  # @param type [Symbol, :live]
128
145
  # The session type. Always `live`.
129
146
 
@@ -208,7 +225,8 @@ module OpenAI
208
225
  end
209
226
 
210
227
  # Who handles tasks delegated by the Live model. Omitted or null selects your
211
- # application; use `responses` to let the API manage a Responses backend.
228
+ # application; use `responses` or `decisions` to delegate to the corresponding
229
+ # API.
212
230
  #
213
231
  # @see OpenAI::Models::Live::SessionAcceptParams::Session#delegation
214
232
  module Delegation
@@ -222,6 +240,8 @@ module OpenAI
222
240
  # Delegate tasks to a Responses model managed by the Live session.
223
241
  variant :responses, -> { OpenAI::Live::SessionAcceptParams::Session::Delegation::Responses }
224
242
 
243
+ variant :decisions, -> { OpenAI::Live::SessionAcceptParams::Session::Delegation::Decisions }
244
+
225
245
  class Responses < OpenAI::Internal::Type::BaseModel
226
246
  # @!attribute responses
227
247
  # Backend model, prompt, and tools used when the Live session delegates a task to
@@ -247,8 +267,24 @@ module OpenAI
247
267
  # The delegation owner. Always `responses` for tasks handled by the Responses API.
248
268
  end
249
269
 
270
+ class Decisions < OpenAI::Internal::Type::BaseModel
271
+ # @!attribute decisions
272
+ #
273
+ # @return [OpenAI::Models::Live::DecisionsDelegationConfig]
274
+ required :decisions, -> { OpenAI::Live::DecisionsDelegationConfig }
275
+
276
+ # @!attribute type
277
+ #
278
+ # @return [Symbol, :decisions]
279
+ required :type, const: :decisions
280
+
281
+ # @!method initialize(decisions:, type: :decisions)
282
+ # @param decisions [OpenAI::Models::Live::DecisionsDelegationConfig]
283
+ # @param type [Symbol, :decisions]
284
+ end
285
+
250
286
  # @!method self.variants
251
- # @return [Array(OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionAcceptParams::Session::Delegation::Responses)]
287
+ # @return [Array(OpenAI::Models::Live::ClientDelegation, OpenAI::Models::Live::SessionAcceptParams::Session::Delegation::Responses, OpenAI::Models::Live::SessionAcceptParams::Session::Delegation::Decisions)]
252
288
  end
253
289
  end
254
290
  end