openai 0.103.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 (395) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +81 -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 +1 -2
  79. data/lib/openai/models/image_edit_partial_image_event.rb +1 -2
  80. data/lib/openai/models/image_gen_completed_event.rb +1 -2
  81. data/lib/openai/models/image_gen_partial_image_event.rb +1 -2
  82. data/lib/openai/models/images_response.rb +1 -2
  83. data/lib/openai/models/live/built_in_voice.rb +1 -0
  84. data/lib/openai/models/live/client_event.rb +14 -2
  85. data/lib/openai/models/live/decision_create_event.rb +26 -0
  86. data/lib/openai/models/live/decision_event.rb +117 -0
  87. data/lib/openai/models/live/decision_item_create_event.rb +194 -0
  88. data/lib/openai/models/live/decision_item_created_event.rb +202 -0
  89. data/lib/openai/models/live/decision_item_delete_event.rb +38 -0
  90. data/lib/openai/models/live/decision_item_deleted_event.rb +46 -0
  91. data/lib/openai/models/live/decision_trigger.rb +244 -0
  92. data/lib/openai/models/live/decisions_delegation_config.rb +201 -0
  93. data/lib/openai/models/live/decisions_delegation_update_config.rb +208 -0
  94. data/lib/openai/models/live/delegation_created_event.rb +10 -10
  95. data/lib/openai/models/live/fork_client_event.rb +14 -2
  96. data/lib/openai/models/live/fork_server_event.rb +17 -2
  97. data/lib/openai/models/live/media_session_config.rb +47 -11
  98. data/lib/openai/models/live/output_audio_fixture_play_event.rb +48 -0
  99. data/lib/openai/models/live/output_audio_fixture_played_event.rb +42 -0
  100. data/lib/openai/models/live/output_audio_fixture_playing_event.rb +41 -0
  101. data/lib/openai/models/live/server_event.rb +17 -2
  102. data/lib/openai/models/live/session_accept_params.rb +47 -11
  103. data/lib/openai/models/live/session_config.rb +47 -11
  104. data/lib/openai/models/live/session_resource.rb +47 -11
  105. data/lib/openai/models/live/session_update_config.rb +38 -6
  106. data/lib/openai/models/live/session_update_event.rb +8 -8
  107. data/lib/openai/models/live/sideband_client_event.rb +57 -0
  108. data/lib/openai/models/live/sideband_server_event.rb +78 -0
  109. data/lib/openai/models/realtime/realtime_audio_config_output.rb +6 -3
  110. data/lib/openai/models/realtime/realtime_response_create_audio_output.rb +6 -3
  111. data/lib/openai/models/realtime/realtime_response_status.rb +10 -1
  112. data/lib/openai/models/response_format_json_schema.rb +1 -1
  113. data/lib/openai/models/responses/function_tool.rb +8 -6
  114. data/lib/openai/models/responses/response.rb +2 -23
  115. data/lib/openai/models/responses/response_compact_params.rb +21 -0
  116. data/lib/openai/models/responses/response_create_params.rb +3 -6
  117. data/lib/openai/models/responses/response_error.rb +19 -1
  118. data/lib/openai/models/responses/response_format_text_config.rb +0 -4
  119. data/lib/openai/models/responses/response_function_tool_call.rb +0 -8
  120. data/lib/openai/models/responses/response_input_item.rb +107 -1
  121. data/lib/openai/models/responses/response_item.rb +107 -1
  122. data/lib/openai/models/responses/response_output_item.rb +107 -1
  123. data/lib/openai/models/responses/response_output_text.rb +0 -8
  124. data/lib/openai/models/responses/responses_client_event.rb +2 -2
  125. data/lib/openai/models/safety/safety_alert.rb +12 -1
  126. data/lib/openai/models/video_create_error.rb +19 -1
  127. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +4 -4
  128. data/lib/openai/models/webhooks/webhook_endpoint_with_secret.rb +0 -9
  129. data/lib/openai/resources/admin/organization/external_storage.rb +1 -1
  130. data/lib/openai/resources/admin/organization/projects/api_keys.rb +61 -0
  131. data/lib/openai/resources/admin/organization/usage.rb +67 -0
  132. data/lib/openai/resources/audio/speech.rb +2 -1
  133. data/lib/openai/resources/audio/voices.rb +10 -10
  134. data/lib/openai/resources/beta/agents/environments/files.rb +3 -31
  135. data/lib/openai/resources/beta/agents/environments.rb +3 -3
  136. data/lib/openai/resources/beta/agents/sessions/artifacts.rb +5 -11
  137. data/lib/openai/resources/beta/agents/sessions.rb +20 -56
  138. data/lib/openai/resources/beta/agents/vaults/credentials.rb +10 -6
  139. data/lib/openai/resources/beta/agents/vaults.rb +45 -6
  140. data/lib/openai/resources/beta/agents.rb +6 -4
  141. data/lib/openai/resources/beta/responses.rb +2 -2
  142. data/lib/openai/resources/chat/completions.rb +11 -37
  143. data/lib/openai/resources/decisions.rb +9 -15
  144. data/lib/openai/resources/files.rb +0 -39
  145. data/lib/openai/resources/live/forks.rb +19 -0
  146. data/lib/openai/resources/live/sideband.rb +19 -0
  147. data/lib/openai/resources/live.rb +19 -0
  148. data/lib/openai/resources/realtime/translations.rb +19 -0
  149. data/lib/openai/resources/realtime.rb +19 -0
  150. data/lib/openai/resources/responses.rb +44 -95
  151. data/lib/openai/resources/vector_stores/file_batches.rb +0 -178
  152. data/lib/openai/resources/vector_stores/files.rb +0 -188
  153. data/lib/openai/resources/webhooks.rb +13 -29
  154. data/lib/openai/version.rb +1 -1
  155. data/lib/openai.rb +31 -0
  156. data/rbi/openai/client.rbi +0 -103
  157. data/rbi/openai/helpers/admin/organization/projects/api_keys.rbi +25 -0
  158. data/rbi/openai/helpers/beta/agents/artifacts.rbi +25 -0
  159. data/rbi/openai/helpers/beta/agents/files.rbi +48 -0
  160. data/rbi/openai/helpers/client_runtime.rbi +108 -0
  161. data/rbi/openai/helpers/files.rbi +25 -0
  162. data/rbi/openai/helpers/models/chat/parsed.rbi +21 -0
  163. data/rbi/openai/helpers/models/responses/parsed.rbi +19 -0
  164. data/rbi/openai/helpers/models/responses/response.rbi +15 -0
  165. data/rbi/openai/helpers/streaming/response_stream.rbi +301 -0
  166. data/rbi/openai/helpers/vector_stores/file_batches.rbi +102 -0
  167. data/rbi/openai/helpers/vector_stores/files.rbi +122 -0
  168. data/rbi/openai/helpers/websocket.rbi +82 -0
  169. data/rbi/openai/models/admin/organization/audit_log_list_response.rbi +6 -3
  170. data/rbi/openai/models/admin/organization/external_storage_configuration.rbi +4 -2
  171. data/rbi/openai/models/admin/organization/external_storage_create_params.rbi +63 -4
  172. data/rbi/openai/models/admin/organization/oci_external_storage_provider.rbi +71 -0
  173. data/rbi/openai/models/admin/organization/project_residency.rbi +12 -0
  174. data/rbi/openai/models/admin/organization/projects/api_key_update_params.rbi +110 -0
  175. data/rbi/openai/models/admin/organization/projects/api_key_update_scopes_params.rbi +72 -0
  176. data/rbi/openai/models/admin/organization/usage_decisions_params.rbi +229 -0
  177. data/rbi/openai/models/admin/organization/usage_decisions_response.rbi +479 -0
  178. data/rbi/openai/models/audio/speech_create_params.rbi +6 -3
  179. data/rbi/openai/models/audio/voice.rbi +21 -2
  180. data/rbi/openai/models/audio/voice_create_params.rbi +149 -4
  181. data/rbi/openai/models/beta/agent_create_params.rbi +4 -2
  182. data/rbi/openai/models/beta/agent_list_params.rbi +8 -5
  183. data/rbi/openai/models/beta/agent_session.rbi +64 -1
  184. data/rbi/openai/models/beta/agent_update_params.rbi +4 -2
  185. data/rbi/openai/models/beta/agents/environment_list_params.rbi +7 -7
  186. data/rbi/openai/models/beta/agents/session_create_params.rbi +62 -2
  187. data/rbi/openai/models/beta/agents/session_list_params.rbi +11 -11
  188. data/rbi/openai/models/beta/agents/session_update_params.rbi +56 -0
  189. data/rbi/openai/models/beta/agents/sessions/artifact_list_params.rbi +19 -13
  190. data/rbi/openai/models/beta/agents/vault_list_params.rbi +30 -13
  191. data/rbi/openai/models/beta/agents/vault_status_filter.rbi +1 -3
  192. data/rbi/openai/models/beta/agents/vault_update_params.rbi +87 -0
  193. data/rbi/openai/models/beta/agents/vaults/credential_list_params.rbi +30 -13
  194. data/rbi/openai/models/beta/beta_response.rbi +2 -2
  195. data/rbi/openai/models/beta/beta_response_error.rbi +24 -3
  196. data/rbi/openai/models/beta/beta_response_input_item.rbi +191 -0
  197. data/rbi/openai/models/beta/beta_response_item.rbi +189 -0
  198. data/rbi/openai/models/beta/beta_response_output_item.rbi +191 -0
  199. data/rbi/openai/models/beta/beta_responses_client_event.rbi +2 -2
  200. data/rbi/openai/models/beta/response_create_params.rbi +2 -2
  201. data/rbi/openai/models/beta/session_turn_error.rbi +3 -0
  202. data/rbi/openai/models/chat/chat_completion_audio_param.rbi +3 -3
  203. data/rbi/openai/models/chat/chat_completion_message.rbi +0 -4
  204. data/rbi/openai/models/chat/chat_completion_message_function_tool_call.rbi +0 -4
  205. data/rbi/openai/models/chat/completion_create_params.rbi +63 -78
  206. data/rbi/openai/models/conversations/conversation_item.rbi +191 -0
  207. data/rbi/openai/models/decision.rbi +14 -1
  208. data/rbi/openai/models/decision_create_params.rbi +23 -12
  209. data/rbi/openai/models/decision_input_image.rbi +4 -3
  210. data/rbi/openai/models/decision_input_message.rbi +4 -4
  211. data/rbi/openai/models/decision_input_part.rbi +2 -1
  212. data/rbi/openai/models/image_edit_completed_event.rbi +1 -0
  213. data/rbi/openai/models/image_edit_partial_image_event.rbi +1 -0
  214. data/rbi/openai/models/image_gen_completed_event.rbi +1 -0
  215. data/rbi/openai/models/image_gen_partial_image_event.rbi +1 -0
  216. data/rbi/openai/models/images_response.rbi +1 -0
  217. data/rbi/openai/models/live/built_in_voice.rbi +1 -0
  218. data/rbi/openai/models/live/client_event.rbi +4 -0
  219. data/rbi/openai/models/live/decision_create_event.rbi +55 -0
  220. data/rbi/openai/models/live/decision_event.rbi +185 -0
  221. data/rbi/openai/models/live/decision_item_create_event.rbi +338 -0
  222. data/rbi/openai/models/live/decision_item_created_event.rbi +354 -0
  223. data/rbi/openai/models/live/decision_item_delete_event.rbi +66 -0
  224. data/rbi/openai/models/live/decision_item_deleted_event.rbi +77 -0
  225. data/rbi/openai/models/live/decision_trigger.rbi +465 -0
  226. data/rbi/openai/models/live/decisions_delegation_config.rbi +393 -0
  227. data/rbi/openai/models/live/decisions_delegation_update_config.rbi +412 -0
  228. data/rbi/openai/models/live/delegation_created_event.rbi +8 -10
  229. data/rbi/openai/models/live/fork_client_event.rbi +4 -0
  230. data/rbi/openai/models/live/fork_server_event.rbi +5 -0
  231. data/rbi/openai/models/live/media_session_config.rbi +95 -14
  232. data/rbi/openai/models/live/output_audio_fixture_play_event.rbi +76 -0
  233. data/rbi/openai/models/live/output_audio_fixture_played_event.rbi +73 -0
  234. data/rbi/openai/models/live/output_audio_fixture_playing_event.rbi +72 -0
  235. data/rbi/openai/models/live/server_event.rbi +5 -0
  236. data/rbi/openai/models/live/session_accept_params.rbi +88 -12
  237. data/rbi/openai/models/live/session_config.rbi +100 -14
  238. data/rbi/openai/models/live/session_resource.rbi +81 -10
  239. data/rbi/openai/models/live/session_update_config.rbi +86 -9
  240. data/rbi/openai/models/live/session_update_event.rbi +8 -8
  241. data/rbi/openai/models/live/sideband_client_event.rbi +40 -0
  242. data/rbi/openai/models/live/sideband_server_event.rbi +47 -0
  243. data/rbi/openai/models/realtime/realtime_audio_config_output.rbi +6 -3
  244. data/rbi/openai/models/realtime/realtime_response_create_audio_output.rbi +6 -3
  245. data/rbi/openai/models/realtime/realtime_response_status.rbi +13 -1
  246. data/rbi/openai/models/realtime/realtime_translation_input_audio_buffer_append_event.rbi +1 -1
  247. data/rbi/openai/models/realtime/realtime_translation_output_audio_delta_event.rbi +3 -3
  248. data/rbi/openai/models/realtime/realtime_translation_session_close_event.rbi +1 -1
  249. data/rbi/openai/models/realtime/realtime_translation_session_update_event.rbi +5 -1
  250. data/rbi/openai/models/responses/response.rbi +2 -7
  251. data/rbi/openai/models/responses/response_create_params.rbi +5 -9
  252. data/rbi/openai/models/responses/response_error.rbi +24 -3
  253. data/rbi/openai/models/responses/response_function_tool_call.rbi +0 -4
  254. data/rbi/openai/models/responses/response_function_web_search.rbi +21 -17
  255. data/rbi/openai/models/responses/response_input_item.rbi +191 -0
  256. data/rbi/openai/models/responses/response_item.rbi +189 -0
  257. data/rbi/openai/models/responses/response_output_item.rbi +191 -0
  258. data/rbi/openai/models/responses/response_output_text.rbi +0 -4
  259. data/rbi/openai/models/responses/responses_client_event.rbi +2 -2
  260. data/rbi/openai/models/safety/safety_alert.rbi +13 -1
  261. data/rbi/openai/models/video_create_error.rbi +24 -3
  262. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +1 -1
  263. data/rbi/openai/resources/admin/organization/external_storage.rbi +2 -1
  264. data/rbi/openai/resources/admin/organization/projects/api_keys.rbi +48 -0
  265. data/rbi/openai/resources/admin/organization/usage.rbi +56 -0
  266. data/rbi/openai/resources/audio/speech.rbi +2 -1
  267. data/rbi/openai/resources/audio/voices.rbi +13 -10
  268. data/rbi/openai/resources/beta/agents/environments/files.rbi +3 -33
  269. data/rbi/openai/resources/beta/agents/environments.rbi +3 -3
  270. data/rbi/openai/resources/beta/agents/sessions/artifacts.rbi +5 -13
  271. data/rbi/openai/resources/beta/agents/sessions.rbi +15 -4
  272. data/rbi/openai/resources/beta/agents/vaults/credentials.rbi +9 -5
  273. data/rbi/openai/resources/beta/agents/vaults.rbi +34 -5
  274. data/rbi/openai/resources/beta/agents.rbi +6 -4
  275. data/rbi/openai/resources/beta/responses.rbi +2 -2
  276. data/rbi/openai/resources/chat/completions.rbi +26 -29
  277. data/rbi/openai/resources/decisions.rbi +9 -15
  278. data/rbi/openai/resources/files.rbi +0 -18
  279. data/rbi/openai/resources/live/forks.rbi +17 -0
  280. data/rbi/openai/resources/live/sideband.rbi +17 -0
  281. data/rbi/openai/resources/live.rbi +17 -0
  282. data/rbi/openai/resources/realtime/translations.rbi +17 -0
  283. data/rbi/openai/resources/realtime.rbi +17 -0
  284. data/rbi/openai/resources/responses.rbi +41 -333
  285. data/rbi/openai/resources/vector_stores/file_batches.rbi +0 -93
  286. data/rbi/openai/resources/vector_stores/files.rbi +0 -113
  287. data/rbi/openai/resources/webhooks.rbi +1 -1
  288. data/sig/openai/client.rbs +0 -50
  289. data/sig/openai/helpers/admin/organization/projects/api_keys.rbs +18 -0
  290. data/sig/openai/helpers/beta/agents/artifacts.rbs +17 -0
  291. data/sig/openai/helpers/beta/agents/files.rbs +30 -0
  292. data/sig/openai/helpers/client_runtime.rbs +53 -0
  293. data/sig/openai/helpers/files.rbs +12 -0
  294. data/sig/openai/helpers/models/responses/response.rbs +9 -0
  295. data/sig/openai/helpers/streaming/response_stream.rbs +37 -0
  296. data/sig/openai/helpers/vector_stores/file_batches.rbs +38 -0
  297. data/sig/openai/helpers/vector_stores/files.rbs +43 -0
  298. data/sig/openai/helpers/websocket.rbs +40 -0
  299. data/sig/openai/models/admin/organization/audit_log_list_response.rbs +1 -0
  300. data/sig/openai/models/admin/organization/external_storage_configuration.rbs +1 -0
  301. data/sig/openai/models/admin/organization/external_storage_create_params.rbs +33 -0
  302. data/sig/openai/models/admin/organization/oci_external_storage_provider.rbs +34 -0
  303. data/sig/openai/models/admin/organization/project_residency.rbs +6 -0
  304. data/sig/openai/models/admin/organization/projects/api_key_update_params.rbs +77 -0
  305. data/sig/openai/models/admin/organization/projects/api_key_update_scopes_params.rbs +38 -0
  306. data/sig/openai/models/admin/organization/usage_decisions_params.rbs +170 -0
  307. data/sig/openai/models/admin/organization/usage_decisions_response.rbs +319 -0
  308. data/sig/openai/models/audio/speech_create_params.rbs +4 -2
  309. data/sig/openai/models/audio/voice.rbs +21 -3
  310. data/sig/openai/models/audio/voice_create_params.rbs +90 -1
  311. data/sig/openai/models/beta/agent_create_params.rbs +4 -2
  312. data/sig/openai/models/beta/agent_list_params.rbs +9 -6
  313. data/sig/openai/models/beta/agent_session.rbs +36 -2
  314. data/sig/openai/models/beta/agent_update_params.rbs +4 -2
  315. data/sig/openai/models/beta/agents/environment_list_params.rbs +9 -9
  316. data/sig/openai/models/beta/agents/session_create_params.rbs +29 -2
  317. data/sig/openai/models/beta/agents/session_list_params.rbs +12 -12
  318. data/sig/openai/models/beta/agents/session_update_params.rbs +23 -0
  319. data/sig/openai/models/beta/agents/sessions/artifact_list_params.rbs +21 -15
  320. data/sig/openai/models/beta/agents/vault_list_params.rbs +32 -14
  321. data/sig/openai/models/beta/agents/vault_update_params.rbs +54 -0
  322. data/sig/openai/models/beta/agents/vaults/credential_list_params.rbs +32 -14
  323. data/sig/openai/models/beta/beta_response.rbs +2 -2
  324. data/sig/openai/models/beta/beta_response_error.rbs +19 -3
  325. data/sig/openai/models/beta/beta_response_input_item.rbs +110 -0
  326. data/sig/openai/models/beta/beta_response_item.rbs +110 -0
  327. data/sig/openai/models/beta/beta_response_output_item.rbs +110 -0
  328. data/sig/openai/models/beta/beta_responses_client_event.rbs +2 -2
  329. data/sig/openai/models/beta/response_create_params.rbs +2 -2
  330. data/sig/openai/models/beta/session_turn_error.rbs +4 -0
  331. data/sig/openai/models/chat/chat_completion_audio_param.rbs +2 -2
  332. data/sig/openai/models/chat/completion_create_params.rbs +2 -2
  333. data/sig/openai/models/conversations/conversation_item.rbs +110 -0
  334. data/sig/openai/models/decision.rbs +13 -0
  335. data/sig/openai/models/decision_create_params.rbs +19 -8
  336. data/sig/openai/models/decision_input_image.rbs +2 -2
  337. data/sig/openai/models/decision_input_message.rbs +2 -2
  338. data/sig/openai/models/live/built_in_voice.rbs +2 -0
  339. data/sig/openai/models/live/client_event.rbs +4 -0
  340. data/sig/openai/models/live/decision_create_event.rbs +18 -0
  341. data/sig/openai/models/live/decision_event.rbs +102 -0
  342. data/sig/openai/models/live/decision_item_create_event.rbs +183 -0
  343. data/sig/openai/models/live/decision_item_created_event.rbs +195 -0
  344. data/sig/openai/models/live/decision_item_delete_event.rbs +33 -0
  345. data/sig/openai/models/live/decision_item_deleted_event.rbs +49 -0
  346. data/sig/openai/models/live/decision_trigger.rbs +234 -0
  347. data/sig/openai/models/live/decisions_delegation_config.rbs +195 -0
  348. data/sig/openai/models/live/decisions_delegation_update_config.rbs +202 -0
  349. data/sig/openai/models/live/delegation_created_event.rbs +6 -7
  350. data/sig/openai/models/live/fork_client_event.rbs +4 -0
  351. data/sig/openai/models/live/fork_server_event.rbs +5 -0
  352. data/sig/openai/models/live/media_session_config.rbs +58 -11
  353. data/sig/openai/models/live/output_audio_fixture_play_event.rbs +42 -0
  354. data/sig/openai/models/live/output_audio_fixture_played_event.rbs +44 -0
  355. data/sig/openai/models/live/output_audio_fixture_playing_event.rbs +44 -0
  356. data/sig/openai/models/live/server_event.rbs +5 -0
  357. data/sig/openai/models/live/session_accept_params.rbs +57 -10
  358. data/sig/openai/models/live/session_config.rbs +58 -11
  359. data/sig/openai/models/live/session_resource.rbs +57 -10
  360. data/sig/openai/models/live/session_update_config.rbs +54 -3
  361. data/sig/openai/models/live/session_update_event.rbs +6 -6
  362. data/sig/openai/models/live/sideband_client_event.rbs +26 -0
  363. data/sig/openai/models/live/sideband_server_event.rbs +33 -0
  364. data/sig/openai/models/realtime/realtime_audio_config_output.rbs +6 -3
  365. data/sig/openai/models/realtime/realtime_response_create_audio_output.rbs +6 -3
  366. data/sig/openai/models/realtime/realtime_response_status.rbs +15 -3
  367. data/sig/openai/models/responses/response.rbs +2 -4
  368. data/sig/openai/models/responses/response_create_params.rbs +2 -2
  369. data/sig/openai/models/responses/response_error.rbs +19 -3
  370. data/sig/openai/models/responses/response_input_item.rbs +110 -0
  371. data/sig/openai/models/responses/response_item.rbs +110 -0
  372. data/sig/openai/models/responses/response_output_item.rbs +110 -0
  373. data/sig/openai/models/responses/responses_client_event.rbs +2 -2
  374. data/sig/openai/models/safety/safety_alert.rbs +12 -2
  375. data/sig/openai/models/video_create_error.rbs +19 -3
  376. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +1 -1
  377. data/sig/openai/resources/admin/organization/projects/api_keys.rbs +8 -0
  378. data/sig/openai/resources/admin/organization/usage.rbs +15 -0
  379. data/sig/openai/resources/beta/agents/environments/files.rbs +0 -17
  380. data/sig/openai/resources/beta/agents/sessions/artifacts.rbs +2 -6
  381. data/sig/openai/resources/beta/agents/sessions.rbs +4 -1
  382. data/sig/openai/resources/beta/agents/vaults/credentials.rbs +2 -1
  383. data/sig/openai/resources/beta/agents/vaults.rbs +9 -1
  384. data/sig/openai/resources/beta/agents.rbs +1 -1
  385. data/sig/openai/resources/files.rbs +0 -7
  386. data/sig/openai/resources/live/forks.rbs +8 -0
  387. data/sig/openai/resources/live/sideband.rbs +8 -0
  388. data/sig/openai/resources/live.rbs +7 -0
  389. data/sig/openai/resources/realtime/translations.rbs +7 -0
  390. data/sig/openai/resources/realtime.rbs +7 -0
  391. data/sig/openai/resources/responses.rbs +7 -31
  392. data/sig/openai/resources/vector_stores/file_batches.rbs +0 -31
  393. data/sig/openai/resources/vector_stores/files.rbs +0 -36
  394. data/sig/openai/resources/webhooks.rbs +1 -1
  395. metadata +89 -1
@@ -0,0 +1,76 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class OutputAudioFixturePlayEvent < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Live::OutputAudioFixturePlayEvent,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # Base64-encoded raw mono PCM16 audio, little-endian, at 24 kHz. Do not include a
18
+ # WAV or other container header.
19
+ sig { returns(String) }
20
+ attr_accessor :audio
21
+
22
+ sig { returns(Symbol) }
23
+ attr_accessor :type
24
+
25
+ # Optional client identifier for correlating this command with a server event's
26
+ # client_event_id or error.client_event_id.
27
+ sig { returns(T.nilable(String)) }
28
+ attr_accessor :event_id
29
+
30
+ # Play one complete audio fixture through the session output. Send this event over
31
+ # the primary WebSocket or a server sideband. Audio must be raw mono PCM16
32
+ # little-endian at 24 kHz, regardless of the session audio format, and at most 30
33
+ # seconds. The entire payload is validated before model speech is interrupted and
34
+ # input is muted. Only one fixture can be active. fixture.playing acknowledges
35
+ # acceptance and fixture.played reports server mixer drain. These notifications
36
+ # are not exact transport-media boundaries. Input arriving during playback is
37
+ # dropped and not replayed.
38
+ sig do
39
+ params(
40
+
41
+ audio: String,
42
+
43
+ event_id: T.nilable(String),
44
+
45
+ type: Symbol
46
+ )
47
+ .returns(T.attached_class)
48
+ end
49
+ def self.new(
50
+
51
+ # Base64-encoded raw mono PCM16 audio, little-endian, at 24 kHz. Do not include a
52
+ # WAV or other container header.
53
+ audio:,
54
+
55
+ # Optional client identifier for correlating this command with a server event's
56
+ # client_event_id or error.client_event_id.
57
+ event_id: nil,
58
+
59
+ type: :"session.output_audio.fixture.play"
60
+ )
61
+ end
62
+
63
+ sig do
64
+ override.returns(
65
+ {audio: String, type: Symbol, event_id: T.nilable(String)}
66
+ )
67
+ end
68
+ def to_hash
69
+ end
70
+
71
+ end
72
+
73
+ end
74
+
75
+ end
76
+ end
@@ -0,0 +1,73 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class OutputAudioFixturePlayedEvent < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Live::OutputAudioFixturePlayedEvent,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # The unique ID of the Live server event.
18
+ sig { returns(String) }
19
+ attr_accessor :event_id
20
+
21
+ sig { returns(Symbol) }
22
+ attr_accessor :type
23
+
24
+ # The event_id of the client command associated with this server event, when
25
+ # supplied.
26
+ sig { returns(T.nilable(String)) }
27
+ attr_reader :client_event_id
28
+
29
+ sig { params(client_event_id: String).void }
30
+ attr_writer :client_event_id
31
+
32
+ # The complete audio fixture has drained from the server mixer and normal
33
+ # inference has resumed. Transport buffers may still contain audio; this event
34
+ # does not prove listener-side completion. The optional client_event_id echoes the
35
+ # play command. This event is not emitted for canceled or failed playback.
36
+ sig do
37
+ params(
38
+
39
+ event_id: String,
40
+
41
+ client_event_id: String,
42
+
43
+ type: Symbol
44
+ )
45
+ .returns(T.attached_class)
46
+ end
47
+ def self.new(
48
+
49
+ # The unique ID of the Live server event.
50
+ event_id:,
51
+
52
+ # The event_id of the client command associated with this server event, when
53
+ # supplied.
54
+ client_event_id: nil,
55
+
56
+ type: :"session.output_audio.fixture.played"
57
+ )
58
+ end
59
+
60
+ sig do
61
+ override.returns(
62
+ {event_id: String, type: Symbol, client_event_id: T.nilable(String)}
63
+ )
64
+ end
65
+ def to_hash
66
+ end
67
+
68
+ end
69
+
70
+ end
71
+
72
+ end
73
+ end
@@ -0,0 +1,72 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class OutputAudioFixturePlayingEvent < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Live::OutputAudioFixturePlayingEvent,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # The unique ID of the Live server event.
18
+ sig { returns(String) }
19
+ attr_accessor :event_id
20
+
21
+ sig { returns(Symbol) }
22
+ attr_accessor :type
23
+
24
+ # The event_id of the client command associated with this server event, when
25
+ # supplied.
26
+ sig { returns(T.nilable(String)) }
27
+ attr_reader :client_event_id
28
+
29
+ sig { params(client_event_id: String).void }
30
+ attr_writer :client_event_id
31
+
32
+ # The existing playback path has accepted the validated audio fixture. This
33
+ # acknowledgment does not identify when the listener receives the first sample.
34
+ # The optional client_event_id echoes the play command.
35
+ sig do
36
+ params(
37
+
38
+ event_id: String,
39
+
40
+ client_event_id: String,
41
+
42
+ type: Symbol
43
+ )
44
+ .returns(T.attached_class)
45
+ end
46
+ def self.new(
47
+
48
+ # The unique ID of the Live server event.
49
+ event_id:,
50
+
51
+ # The event_id of the client command associated with this server event, when
52
+ # supplied.
53
+ client_event_id: nil,
54
+
55
+ type: :"session.output_audio.fixture.playing"
56
+ )
57
+ end
58
+
59
+ sig do
60
+ override.returns(
61
+ {event_id: String, type: Symbol, client_event_id: T.nilable(String)}
62
+ )
63
+ end
64
+ def to_hash
65
+ end
66
+
67
+ end
68
+
69
+ end
70
+
71
+ end
72
+ end
@@ -19,6 +19,8 @@ module OpenAI
19
19
  OpenAI::Live::SessionUpdatedEvent,
20
20
  OpenAI::Live::InputAudioMutedEvent,
21
21
  OpenAI::Live::InputAudioUnmutedEvent,
22
+ OpenAI::Live::OutputAudioFixturePlayingEvent,
23
+ OpenAI::Live::OutputAudioFixturePlayedEvent,
22
24
  OpenAI::Live::InstructionsAppendedEvent,
23
25
  OpenAI::Live::ThinkingAppendedEvent,
24
26
  OpenAI::Live::CommentaryAppendedEvent,
@@ -27,6 +29,9 @@ module OpenAI
27
29
  OpenAI::Live::InputTranscriptDeltaEvent,
28
30
  OpenAI::Live::OutputTranscriptDeltaEvent,
29
31
  OpenAI::Live::DelegationCreatedEvent,
32
+ OpenAI::Live::DecisionEvent,
33
+ OpenAI::Live::DecisionItemCreatedEvent,
34
+ OpenAI::Live::DecisionItemDeletedEvent,
30
35
  OpenAI::Live::ResponseEvent,
31
36
  OpenAI::Live::SessionUsageUpdatedEvent,
32
37
  OpenAI::Live::SessionClosedEvent,
@@ -89,19 +89,24 @@ module OpenAI
89
89
  attr_writer :audio
90
90
 
91
91
  # Who handles tasks delegated by the Live model. Omitted or null selects your
92
- # application; use `responses` to let the API manage a Responses backend.
92
+ # application; use `responses` or `decisions` to delegate to the corresponding
93
+ # API.
93
94
  sig {
94
95
  returns(
95
96
  T.nilable(
96
- T.any(OpenAI::Live::ClientDelegation, OpenAI::Live::SessionAcceptParams::Session::Delegation::Responses)
97
+ T.any(
98
+ OpenAI::Live::ClientDelegation,
99
+ OpenAI::Live::SessionAcceptParams::Session::Delegation::Responses,
100
+ OpenAI::Live::SessionAcceptParams::Session::Delegation::Decisions
101
+ )
97
102
  )
98
103
  )
99
104
  }
100
105
  attr_accessor :delegation
101
106
 
102
107
  # Ordered text-only history supplied before startup. Supports developer, user, and
103
- # assistant messages with one text part each; at most 128 messages and 8,192
104
- # rendered tokens in total.
108
+ # assistant messages with one text part each; at most 128 messages and a
109
+ # configured rendered-token limit (8,192 by default).
105
110
  sig {
106
111
  returns(
107
112
  T.nilable(
@@ -149,6 +154,16 @@ module OpenAI
149
154
  sig { params(store: T::Boolean).void }
150
155
  attr_writer :store
151
156
 
157
+ # At most one Decisions trigger per transcript event type. Triggers run
158
+ # independently of delegation. On update, omit triggers to keep the current
159
+ # configuration, send a list to replace it, or send an empty list to disable
160
+ # triggers.
161
+ sig { returns(T.nilable(T::Array[OpenAI::Live::DecisionTrigger])) }
162
+ attr_reader :triggers
163
+
164
+ sig { params(triggers: T::Array[OpenAI::Live::DecisionTrigger::OrHash]).void }
165
+ attr_writer :triggers
166
+
152
167
  # Model and startup configuration for the Live session that answers the incoming
153
168
  # SIP call.
154
169
  sig do
@@ -161,7 +176,8 @@ module OpenAI
161
176
  delegation: T.nilable(
162
177
  T.any(
163
178
  OpenAI::Live::ClientDelegation::OrHash,
164
- OpenAI::Live::SessionAcceptParams::Session::Delegation::Responses::OrHash
179
+ OpenAI::Live::SessionAcceptParams::Session::Delegation::Responses::OrHash,
180
+ OpenAI::Live::SessionAcceptParams::Session::Delegation::Decisions::OrHash
165
181
  )
166
182
  ),
167
183
 
@@ -177,6 +193,8 @@ module OpenAI
177
193
 
178
194
  store: T::Boolean,
179
195
 
196
+ triggers: T::Array[OpenAI::Live::DecisionTrigger::OrHash],
197
+
180
198
  type: Symbol
181
199
  )
182
200
  .returns(T.attached_class)
@@ -192,12 +210,13 @@ module OpenAI
192
210
  audio: nil,
193
211
 
194
212
  # Who handles tasks delegated by the Live model. Omitted or null selects your
195
- # application; use `responses` to let the API manage a Responses backend.
213
+ # application; use `responses` or `decisions` to delegate to the corresponding
214
+ # API.
196
215
  delegation: nil,
197
216
 
198
217
  # Ordered text-only history supplied before startup. Supports developer, user, and
199
- # assistant messages with one text part each; at most 128 messages and 8,192
200
- # rendered tokens in total.
218
+ # assistant messages with one text part each; at most 128 messages and a
219
+ # configured rendered-token limit (8,192 by default).
201
220
  input: nil,
202
221
 
203
222
  # Frontend instructions for voice, conversation, interruptions, and when to
@@ -213,6 +232,12 @@ module OpenAI
213
232
  # to false for new sessions.
214
233
  store: nil,
215
234
 
235
+ # At most one Decisions trigger per transcript event type. Triggers run
236
+ # independently of delegation. On update, omit triggers to keep the current
237
+ # configuration, send a list to replace it, or send an empty list to disable
238
+ # triggers.
239
+ triggers: nil,
240
+
216
241
  # The session type. Always `live`.
217
242
 
218
243
  type: :live
@@ -228,7 +253,8 @@ module OpenAI
228
253
  delegation: T.nilable(
229
254
  T.any(
230
255
  OpenAI::Live::ClientDelegation,
231
- OpenAI::Live::SessionAcceptParams::Session::Delegation::Responses
256
+ OpenAI::Live::SessionAcceptParams::Session::Delegation::Responses,
257
+ OpenAI::Live::SessionAcceptParams::Session::Delegation::Decisions
232
258
  )
233
259
  ),
234
260
  input: T::Array[
@@ -239,7 +265,8 @@ module OpenAI
239
265
  )
240
266
  ],
241
267
  instructions: T.nilable(String),
242
- store: T::Boolean
268
+ store: T::Boolean,
269
+ triggers: T::Array[OpenAI::Live::DecisionTrigger]
243
270
  }
244
271
  )
245
272
  end
@@ -376,12 +403,17 @@ module OpenAI
376
403
  end
377
404
 
378
405
  # Who handles tasks delegated by the Live model. Omitted or null selects your
379
- # application; use `responses` to let the API manage a Responses backend.
406
+ # application; use `responses` or `decisions` to delegate to the corresponding
407
+ # API.
380
408
  module Delegation
381
409
  extend OpenAI::Internal::Type::Union
382
410
 
383
411
  Variants = T.type_alias {
384
- T.any(OpenAI::Live::ClientDelegation, OpenAI::Live::SessionAcceptParams::Session::Delegation::Responses)
412
+ T.any(
413
+ OpenAI::Live::ClientDelegation,
414
+ OpenAI::Live::SessionAcceptParams::Session::Delegation::Responses,
415
+ OpenAI::Live::SessionAcceptParams::Session::Delegation::Decisions
416
+ )
385
417
  }
386
418
 
387
419
  class Responses < OpenAI::Internal::Type::BaseModel
@@ -436,6 +468,50 @@ module OpenAI
436
468
 
437
469
  end
438
470
 
471
+ class Decisions < OpenAI::Internal::Type::BaseModel
472
+ OrHash = T.type_alias do
473
+ T.any(
474
+ OpenAI::Live::SessionAcceptParams::Session::Delegation::Decisions,
475
+ OpenAI::Internal::AnyHash
476
+ )
477
+ end
478
+
479
+ sig { returns(OpenAI::Live::DecisionsDelegationConfig) }
480
+ attr_reader :decisions
481
+
482
+ sig { params(decisions: OpenAI::Live::DecisionsDelegationConfig::OrHash).void }
483
+ attr_writer :decisions
484
+
485
+ sig { returns(Symbol) }
486
+ attr_accessor :type
487
+
488
+ sig do
489
+ params(
490
+
491
+ decisions: OpenAI::Live::DecisionsDelegationConfig::OrHash,
492
+
493
+ type: Symbol
494
+ )
495
+ .returns(T.attached_class)
496
+ end
497
+ def self.new(
498
+
499
+ decisions:,
500
+
501
+ type: :decisions
502
+ )
503
+ end
504
+
505
+ sig do
506
+ override.returns(
507
+ {decisions: OpenAI::Live::DecisionsDelegationConfig, type: Symbol}
508
+ )
509
+ end
510
+ def to_hash
511
+ end
512
+
513
+ end
514
+
439
515
  sig { override.returns(T::Array[OpenAI::Live::SessionAcceptParams::Session::Delegation::Variants]) }
440
516
  def self.variants
441
517
  end
@@ -37,15 +37,24 @@ module OpenAI
37
37
  attr_writer :client
38
38
 
39
39
  # Who handles tasks delegated by the Live model. Omitted or null selects your
40
- # application; use `responses` to let the API manage a Responses backend.
40
+ # application; use `responses` or `decisions` to delegate to the corresponding
41
+ # API.
41
42
  sig {
42
- returns(T.nilable(T.any(OpenAI::Live::ClientDelegation, OpenAI::Live::SessionConfig::Delegation::Responses)))
43
+ returns(
44
+ T.nilable(
45
+ T.any(
46
+ OpenAI::Live::ClientDelegation,
47
+ OpenAI::Live::SessionConfig::Delegation::Responses,
48
+ OpenAI::Live::SessionConfig::Delegation::Decisions
49
+ )
50
+ )
51
+ )
43
52
  }
44
53
  attr_accessor :delegation
45
54
 
46
55
  # Ordered text-only history supplied before startup. Supports developer, user, and
47
- # assistant messages with one text part each; at most 128 messages and 8,192
48
- # rendered tokens in total.
56
+ # assistant messages with one text part each; at most 128 messages and a
57
+ # configured rendered-token limit (8,192 by default).
49
58
  sig {
50
59
  returns(
51
60
  T.nilable(
@@ -93,6 +102,16 @@ module OpenAI
93
102
  sig { params(store: T::Boolean).void }
94
103
  attr_writer :store
95
104
 
105
+ # At most one Decisions trigger per transcript event type. Triggers run
106
+ # independently of delegation. On update, omit triggers to keep the current
107
+ # configuration, send a list to replace it, or send an empty list to disable
108
+ # triggers.
109
+ sig { returns(T.nilable(T::Array[OpenAI::Live::DecisionTrigger])) }
110
+ attr_reader :triggers
111
+
112
+ sig { params(triggers: T::Array[OpenAI::Live::DecisionTrigger::OrHash]).void }
113
+ attr_writer :triggers
114
+
96
115
  # Initial configuration for a Live session, including its model, conversation
97
116
  # instructions, audio, and delegated task handling.
98
117
  sig do
@@ -105,7 +124,11 @@ module OpenAI
105
124
  client: OpenAI::Live::ClientConfig::OrHash,
106
125
 
107
126
  delegation: T.nilable(
108
- T.any(OpenAI::Live::ClientDelegation::OrHash, OpenAI::Live::SessionConfig::Delegation::Responses::OrHash)
127
+ T.any(
128
+ OpenAI::Live::ClientDelegation::OrHash,
129
+ OpenAI::Live::SessionConfig::Delegation::Responses::OrHash,
130
+ OpenAI::Live::SessionConfig::Delegation::Decisions::OrHash
131
+ )
109
132
  ),
110
133
 
111
134
  input: T::Array[
@@ -118,7 +141,9 @@ module OpenAI
118
141
 
119
142
  instructions: T.nilable(String),
120
143
 
121
- store: T::Boolean
144
+ store: T::Boolean,
145
+
146
+ triggers: T::Array[OpenAI::Live::DecisionTrigger::OrHash]
122
147
  )
123
148
  .returns(T.attached_class)
124
149
  end
@@ -138,12 +163,13 @@ module OpenAI
138
163
  client: nil,
139
164
 
140
165
  # Who handles tasks delegated by the Live model. Omitted or null selects your
141
- # application; use `responses` to let the API manage a Responses backend.
166
+ # application; use `responses` or `decisions` to delegate to the corresponding
167
+ # API.
142
168
  delegation: nil,
143
169
 
144
170
  # Ordered text-only history supplied before startup. Supports developer, user, and
145
- # assistant messages with one text part each; at most 128 messages and 8,192
146
- # rendered tokens in total.
171
+ # assistant messages with one text part each; at most 128 messages and a
172
+ # configured rendered-token limit (8,192 by default).
147
173
  input: nil,
148
174
 
149
175
  # Frontend instructions for voice, conversation, interruptions, and when to
@@ -157,8 +183,14 @@ module OpenAI
157
183
 
158
184
  # Whether to store the session for later forking and recording download. Defaults
159
185
  # to false for new sessions.
186
+ store: nil,
187
+
188
+ # At most one Decisions trigger per transcript event type. Triggers run
189
+ # independently of delegation. On update, omit triggers to keep the current
190
+ # configuration, send a list to replace it, or send an empty list to disable
191
+ # triggers.
160
192
 
161
- store: nil
193
+ triggers: nil
162
194
  )
163
195
  end
164
196
 
@@ -169,7 +201,11 @@ module OpenAI
169
201
  audio: OpenAI::Live::SessionConfig::Audio,
170
202
  client: OpenAI::Live::ClientConfig,
171
203
  delegation: T.nilable(
172
- T.any(OpenAI::Live::ClientDelegation, OpenAI::Live::SessionConfig::Delegation::Responses)
204
+ T.any(
205
+ OpenAI::Live::ClientDelegation,
206
+ OpenAI::Live::SessionConfig::Delegation::Responses,
207
+ OpenAI::Live::SessionConfig::Delegation::Decisions
208
+ )
173
209
  ),
174
210
  input: T::Array[
175
211
  T.any(
@@ -179,7 +215,8 @@ module OpenAI
179
215
  )
180
216
  ],
181
217
  instructions: T.nilable(String),
182
- store: T::Boolean
218
+ store: T::Boolean,
219
+ triggers: T::Array[OpenAI::Live::DecisionTrigger]
183
220
  }
184
221
  )
185
222
  end
@@ -353,12 +390,17 @@ module OpenAI
353
390
  end
354
391
 
355
392
  # Who handles tasks delegated by the Live model. Omitted or null selects your
356
- # application; use `responses` to let the API manage a Responses backend.
393
+ # application; use `responses` or `decisions` to delegate to the corresponding
394
+ # API.
357
395
  module Delegation
358
396
  extend OpenAI::Internal::Type::Union
359
397
 
360
398
  Variants = T.type_alias {
361
- T.any(OpenAI::Live::ClientDelegation, OpenAI::Live::SessionConfig::Delegation::Responses)
399
+ T.any(
400
+ OpenAI::Live::ClientDelegation,
401
+ OpenAI::Live::SessionConfig::Delegation::Responses,
402
+ OpenAI::Live::SessionConfig::Delegation::Decisions
403
+ )
362
404
  }
363
405
 
364
406
  class Responses < OpenAI::Internal::Type::BaseModel
@@ -413,6 +455,50 @@ module OpenAI
413
455
 
414
456
  end
415
457
 
458
+ class Decisions < OpenAI::Internal::Type::BaseModel
459
+ OrHash = T.type_alias do
460
+ T.any(
461
+ OpenAI::Live::SessionConfig::Delegation::Decisions,
462
+ OpenAI::Internal::AnyHash
463
+ )
464
+ end
465
+
466
+ sig { returns(OpenAI::Live::DecisionsDelegationConfig) }
467
+ attr_reader :decisions
468
+
469
+ sig { params(decisions: OpenAI::Live::DecisionsDelegationConfig::OrHash).void }
470
+ attr_writer :decisions
471
+
472
+ sig { returns(Symbol) }
473
+ attr_accessor :type
474
+
475
+ sig do
476
+ params(
477
+
478
+ decisions: OpenAI::Live::DecisionsDelegationConfig::OrHash,
479
+
480
+ type: Symbol
481
+ )
482
+ .returns(T.attached_class)
483
+ end
484
+ def self.new(
485
+
486
+ decisions:,
487
+
488
+ type: :decisions
489
+ )
490
+ end
491
+
492
+ sig do
493
+ override.returns(
494
+ {decisions: OpenAI::Live::DecisionsDelegationConfig, type: Symbol}
495
+ )
496
+ end
497
+ def to_hash
498
+ end
499
+
500
+ end
501
+
416
502
  sig { override.returns(T::Array[OpenAI::Live::SessionConfig::Delegation::Variants]) }
417
503
  def self.variants
418
504
  end