openai 0.102.0 → 0.104.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +88 -0
  3. data/README.md +23 -1
  4. data/lib/openai/client.rb +3 -386
  5. data/lib/openai/helpers/admin/organization/projects/api_keys.rb +42 -0
  6. data/lib/openai/helpers/agents/session_stream_resource.rb +60 -0
  7. data/lib/openai/helpers/beta/agents/artifacts.rb +18 -0
  8. data/lib/openai/helpers/beta/agents/files.rb +41 -0
  9. data/lib/openai/helpers/client_runtime.rb +391 -0
  10. data/lib/openai/helpers/files.rb +47 -0
  11. data/lib/openai/helpers/live/websocket.rb +8 -57
  12. data/lib/openai/helpers/models/chat/parsed.rb +32 -0
  13. data/lib/openai/helpers/models/responses/parsed.rb +30 -0
  14. data/lib/openai/helpers/models/responses/response.rb +32 -0
  15. data/lib/openai/helpers/models/webhooks/webhook_endpoint_with_secret.rb +20 -0
  16. data/lib/openai/helpers/realtime/client_extension.rb +1 -2
  17. data/lib/openai/helpers/realtime/connection_manager.rb +1 -1
  18. data/lib/openai/helpers/realtime/translation.rb +7 -50
  19. data/lib/openai/helpers/responses_websocket/client_extension.rb +1 -2
  20. data/lib/openai/helpers/streaming/chat_completion_resource.rb +36 -0
  21. data/lib/openai/helpers/streaming/response_stream.rb +1 -16
  22. data/lib/openai/helpers/streaming/response_stream_resource.rb +78 -0
  23. data/lib/openai/helpers/vector_stores/file_batches.rb +188 -0
  24. data/lib/openai/helpers/vector_stores/files.rb +198 -0
  25. data/lib/openai/helpers/websocket/client_request.rb +31 -6
  26. data/lib/openai/helpers/websocket/connection.rb +58 -0
  27. data/lib/openai/helpers/websocket/connection_manager.rb +4 -2
  28. data/lib/openai/helpers/websocket/protocol.rb +2 -1
  29. data/lib/openai/helpers/websocket/resource.rb +54 -0
  30. data/lib/openai/helpers/websocket/typed_connection.rb +95 -0
  31. data/lib/openai/helpers/websocket.rb +4 -0
  32. data/lib/openai/models/admin/organization/audit_log_list_response.rb +5 -3
  33. data/lib/openai/models/admin/organization/external_storage_configuration.rb +5 -3
  34. data/lib/openai/models/admin/organization/external_storage_create_params.rb +33 -3
  35. data/lib/openai/models/admin/organization/oci_external_storage_provider.rb +37 -0
  36. data/lib/openai/models/admin/organization/project_residency.rb +3 -0
  37. data/lib/openai/models/admin/organization/projects/api_key_update_params.rb +64 -0
  38. data/lib/openai/models/admin/organization/projects/api_key_update_scopes_params.rb +34 -0
  39. data/lib/openai/models/admin/organization/usage_decisions_params.rb +177 -0
  40. data/lib/openai/models/admin/organization/usage_decisions_response.rb +351 -0
  41. data/lib/openai/models/audio/speech_create_params.rb +6 -3
  42. data/lib/openai/models/audio/translation_create_response.rb +0 -1
  43. data/lib/openai/models/audio/voice.rb +17 -2
  44. data/lib/openai/models/audio/voice_create_params.rb +100 -3
  45. data/lib/openai/models/beta/agent_create_params.rb +4 -2
  46. data/lib/openai/models/beta/agent_list_params.rb +4 -4
  47. data/lib/openai/models/beta/agent_session.rb +37 -1
  48. data/lib/openai/models/beta/agent_session_environment_expired_event.rb +57 -0
  49. data/lib/openai/models/beta/agent_session_environment_state.rb +6 -0
  50. data/lib/openai/models/beta/agent_session_environment_suspended_event.rb +57 -0
  51. data/lib/openai/models/beta/agent_session_event.rb +7 -1
  52. data/lib/openai/models/beta/agent_update_params.rb +4 -2
  53. data/lib/openai/models/beta/agents/environment_info.rb +3 -0
  54. data/lib/openai/models/beta/agents/environment_list_params.rb +7 -7
  55. data/lib/openai/models/beta/agents/session_create_params.rb +39 -3
  56. data/lib/openai/models/beta/agents/session_list_params.rb +7 -10
  57. data/lib/openai/models/beta/agents/session_update_params.rb +33 -1
  58. data/lib/openai/models/beta/agents/sessions/artifact_list_params.rb +11 -11
  59. data/lib/openai/models/beta/agents/vault_list_params.rb +23 -13
  60. data/lib/openai/models/beta/agents/vault_status_filter.rb +1 -3
  61. data/lib/openai/models/beta/agents/vault_update_params.rb +47 -0
  62. data/lib/openai/models/beta/agents/vaults/credential_list_params.rb +23 -13
  63. data/lib/openai/models/beta/beta_response.rb +23 -2
  64. data/lib/openai/models/beta/beta_response_error.rb +19 -1
  65. data/lib/openai/models/beta/beta_response_input_item.rb +107 -1
  66. data/lib/openai/models/beta/beta_response_item.rb +107 -1
  67. data/lib/openai/models/beta/beta_response_output_item.rb +107 -1
  68. data/lib/openai/models/beta/beta_responses_client_event.rb +23 -2
  69. data/lib/openai/models/beta/response_compact_params.rb +21 -0
  70. data/lib/openai/models/beta/response_create_params.rb +23 -2
  71. data/lib/openai/models/beta/session_turn_error.rb +3 -0
  72. data/lib/openai/models/chat/chat_completion_audio_param.rb +3 -3
  73. data/lib/openai/models/chat/chat_completion_message.rb +0 -8
  74. data/lib/openai/models/chat/chat_completion_message_function_tool_call.rb +0 -8
  75. data/lib/openai/models/chat/completion_create_params.rb +5 -12
  76. data/lib/openai/models/chat_model.rb +21 -0
  77. data/lib/openai/models/conversations/conversation_item.rb +107 -1
  78. data/lib/openai/models/decision.rb +17 -2
  79. data/lib/openai/models/decision_create_params.rb +29 -12
  80. data/lib/openai/models/decision_input_image.rb +4 -3
  81. data/lib/openai/models/decision_input_message.rb +4 -4
  82. data/lib/openai/models/decision_input_part.rb +3 -2
  83. data/lib/openai/models/image_edit_completed_event.rb +1 -2
  84. data/lib/openai/models/image_edit_partial_image_event.rb +1 -2
  85. data/lib/openai/models/image_gen_completed_event.rb +1 -2
  86. data/lib/openai/models/image_gen_partial_image_event.rb +1 -2
  87. data/lib/openai/models/images_response.rb +1 -2
  88. data/lib/openai/models/live/built_in_voice.rb +1 -0
  89. data/lib/openai/models/live/client_event.rb +14 -2
  90. data/lib/openai/models/live/decision_create_event.rb +26 -0
  91. data/lib/openai/models/live/decision_event.rb +117 -0
  92. data/lib/openai/models/live/decision_item_create_event.rb +194 -0
  93. data/lib/openai/models/live/decision_item_created_event.rb +202 -0
  94. data/lib/openai/models/live/decision_item_delete_event.rb +38 -0
  95. data/lib/openai/models/live/decision_item_deleted_event.rb +46 -0
  96. data/lib/openai/models/live/decision_trigger.rb +244 -0
  97. data/lib/openai/models/live/decisions_delegation_config.rb +201 -0
  98. data/lib/openai/models/live/decisions_delegation_update_config.rb +208 -0
  99. data/lib/openai/models/live/delegation_created_event.rb +10 -10
  100. data/lib/openai/models/live/fork_client_event.rb +14 -2
  101. data/lib/openai/models/live/fork_server_event.rb +17 -2
  102. data/lib/openai/models/live/media_session_config.rb +47 -11
  103. data/lib/openai/models/live/output_audio_fixture_play_event.rb +48 -0
  104. data/lib/openai/models/live/output_audio_fixture_played_event.rb +42 -0
  105. data/lib/openai/models/live/output_audio_fixture_playing_event.rb +41 -0
  106. data/lib/openai/models/live/server_event.rb +17 -2
  107. data/lib/openai/models/live/session_accept_params.rb +47 -11
  108. data/lib/openai/models/live/session_config.rb +47 -11
  109. data/lib/openai/models/live/session_resource.rb +47 -11
  110. data/lib/openai/models/live/session_update_config.rb +38 -6
  111. data/lib/openai/models/live/session_update_event.rb +8 -8
  112. data/lib/openai/models/live/sideband_client_event.rb +57 -0
  113. data/lib/openai/models/live/sideband_server_event.rb +78 -0
  114. data/lib/openai/models/realtime/realtime_audio_config_output.rb +6 -3
  115. data/lib/openai/models/realtime/realtime_response_create_audio_output.rb +6 -3
  116. data/lib/openai/models/realtime/realtime_response_status.rb +10 -1
  117. data/lib/openai/models/response_format_json_schema.rb +1 -1
  118. data/lib/openai/models/responses/function_tool.rb +8 -6
  119. data/lib/openai/models/responses/response.rb +2 -23
  120. data/lib/openai/models/responses/response_compact_params.rb +21 -0
  121. data/lib/openai/models/responses/response_create_params.rb +3 -6
  122. data/lib/openai/models/responses/response_error.rb +19 -1
  123. data/lib/openai/models/responses/response_format_text_config.rb +0 -4
  124. data/lib/openai/models/responses/response_function_tool_call.rb +0 -8
  125. data/lib/openai/models/responses/response_input_item.rb +107 -1
  126. data/lib/openai/models/responses/response_item.rb +107 -1
  127. data/lib/openai/models/responses/response_output_item.rb +107 -1
  128. data/lib/openai/models/responses/response_output_text.rb +0 -8
  129. data/lib/openai/models/responses/responses_client_event.rb +2 -2
  130. data/lib/openai/models/safety/safety_alert.rb +12 -1
  131. data/lib/openai/models/video_create_error.rb +19 -1
  132. data/lib/openai/models/webhooks/agent_environment_expired_webhook_event.rb +72 -0
  133. data/lib/openai/models/webhooks/agent_environment_suspended_webhook_event.rb +72 -0
  134. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +8 -3
  135. data/lib/openai/models/webhooks/webhook_create_params.rb +2 -0
  136. data/lib/openai/models/webhooks/webhook_endpoint_with_secret.rb +0 -9
  137. data/lib/openai/models/webhooks/webhook_test_params.rb +2 -0
  138. data/lib/openai/models/webhooks/webhook_update_params.rb +2 -0
  139. data/lib/openai/resources/admin/organization/external_storage.rb +1 -1
  140. data/lib/openai/resources/admin/organization/projects/api_keys.rb +61 -0
  141. data/lib/openai/resources/admin/organization/usage.rb +67 -0
  142. data/lib/openai/resources/audio/speech.rb +2 -1
  143. data/lib/openai/resources/audio/voices.rb +10 -10
  144. data/lib/openai/resources/beta/agents/environments/files.rb +3 -31
  145. data/lib/openai/resources/beta/agents/environments.rb +3 -3
  146. data/lib/openai/resources/beta/agents/sessions/artifacts.rb +5 -11
  147. data/lib/openai/resources/beta/agents/sessions/events.rb +1 -1
  148. data/lib/openai/resources/beta/agents/sessions.rb +20 -56
  149. data/lib/openai/resources/beta/agents/vaults/credentials.rb +10 -6
  150. data/lib/openai/resources/beta/agents/vaults.rb +45 -6
  151. data/lib/openai/resources/beta/agents.rb +6 -4
  152. data/lib/openai/resources/beta/responses.rb +2 -2
  153. data/lib/openai/resources/chat/completions.rb +11 -37
  154. data/lib/openai/resources/decisions.rb +9 -15
  155. data/lib/openai/resources/files.rb +0 -39
  156. data/lib/openai/resources/live/forks.rb +19 -0
  157. data/lib/openai/resources/live/sideband.rb +19 -0
  158. data/lib/openai/resources/live.rb +19 -0
  159. data/lib/openai/resources/realtime/translations.rb +19 -0
  160. data/lib/openai/resources/realtime.rb +19 -0
  161. data/lib/openai/resources/responses.rb +44 -95
  162. data/lib/openai/resources/vector_stores/file_batches.rb +0 -178
  163. data/lib/openai/resources/vector_stores/files.rb +0 -188
  164. data/lib/openai/resources/webhooks.rb +13 -29
  165. data/lib/openai/version.rb +1 -1
  166. data/lib/openai.rb +35 -0
  167. data/rbi/openai/client.rbi +0 -103
  168. data/rbi/openai/helpers/admin/organization/projects/api_keys.rbi +25 -0
  169. data/rbi/openai/helpers/beta/agents/artifacts.rbi +25 -0
  170. data/rbi/openai/helpers/beta/agents/files.rbi +48 -0
  171. data/rbi/openai/helpers/client_runtime.rbi +108 -0
  172. data/rbi/openai/helpers/files.rbi +25 -0
  173. data/rbi/openai/helpers/models/chat/parsed.rbi +21 -0
  174. data/rbi/openai/helpers/models/responses/parsed.rbi +19 -0
  175. data/rbi/openai/helpers/models/responses/response.rbi +15 -0
  176. data/rbi/openai/helpers/streaming/response_stream.rbi +301 -0
  177. data/rbi/openai/helpers/vector_stores/file_batches.rbi +102 -0
  178. data/rbi/openai/helpers/vector_stores/files.rbi +122 -0
  179. data/rbi/openai/helpers/websocket.rbi +82 -0
  180. data/rbi/openai/models/admin/organization/audit_log_list_response.rbi +6 -3
  181. data/rbi/openai/models/admin/organization/external_storage_configuration.rbi +4 -2
  182. data/rbi/openai/models/admin/organization/external_storage_create_params.rbi +63 -4
  183. data/rbi/openai/models/admin/organization/oci_external_storage_provider.rbi +71 -0
  184. data/rbi/openai/models/admin/organization/project_residency.rbi +12 -0
  185. data/rbi/openai/models/admin/organization/projects/api_key_update_params.rbi +110 -0
  186. data/rbi/openai/models/admin/organization/projects/api_key_update_scopes_params.rbi +72 -0
  187. data/rbi/openai/models/admin/organization/usage_decisions_params.rbi +229 -0
  188. data/rbi/openai/models/admin/organization/usage_decisions_response.rbi +479 -0
  189. data/rbi/openai/models/audio/speech_create_params.rbi +6 -3
  190. data/rbi/openai/models/audio/voice.rbi +21 -2
  191. data/rbi/openai/models/audio/voice_create_params.rbi +149 -4
  192. data/rbi/openai/models/beta/agent_create_params.rbi +4 -2
  193. data/rbi/openai/models/beta/agent_list_params.rbi +8 -5
  194. data/rbi/openai/models/beta/agent_session.rbi +64 -1
  195. data/rbi/openai/models/beta/agent_session_environment_expired_event.rbi +95 -0
  196. data/rbi/openai/models/beta/agent_session_environment_state.rbi +6 -0
  197. data/rbi/openai/models/beta/agent_session_environment_suspended_event.rbi +95 -0
  198. data/rbi/openai/models/beta/agent_session_event.rbi +2 -0
  199. data/rbi/openai/models/beta/agent_update_params.rbi +4 -2
  200. data/rbi/openai/models/beta/agents/environment_info.rbi +3 -0
  201. data/rbi/openai/models/beta/agents/environment_list_params.rbi +7 -7
  202. data/rbi/openai/models/beta/agents/session_create_params.rbi +62 -2
  203. data/rbi/openai/models/beta/agents/session_list_params.rbi +11 -11
  204. data/rbi/openai/models/beta/agents/session_update_params.rbi +56 -0
  205. data/rbi/openai/models/beta/agents/sessions/artifact_list_params.rbi +19 -13
  206. data/rbi/openai/models/beta/agents/vault_list_params.rbi +30 -13
  207. data/rbi/openai/models/beta/agents/vault_status_filter.rbi +1 -3
  208. data/rbi/openai/models/beta/agents/vault_update_params.rbi +87 -0
  209. data/rbi/openai/models/beta/agents/vaults/credential_list_params.rbi +30 -13
  210. data/rbi/openai/models/beta/beta_response.rbi +2 -2
  211. data/rbi/openai/models/beta/beta_response_error.rbi +24 -3
  212. data/rbi/openai/models/beta/beta_response_input_item.rbi +191 -0
  213. data/rbi/openai/models/beta/beta_response_item.rbi +189 -0
  214. data/rbi/openai/models/beta/beta_response_output_item.rbi +191 -0
  215. data/rbi/openai/models/beta/beta_responses_client_event.rbi +2 -2
  216. data/rbi/openai/models/beta/response_create_params.rbi +2 -2
  217. data/rbi/openai/models/beta/session_turn_error.rbi +3 -0
  218. data/rbi/openai/models/chat/chat_completion_audio_param.rbi +3 -3
  219. data/rbi/openai/models/chat/chat_completion_message.rbi +0 -4
  220. data/rbi/openai/models/chat/chat_completion_message_function_tool_call.rbi +0 -4
  221. data/rbi/openai/models/chat/completion_create_params.rbi +63 -78
  222. data/rbi/openai/models/conversations/conversation_item.rbi +191 -0
  223. data/rbi/openai/models/decision.rbi +14 -1
  224. data/rbi/openai/models/decision_create_params.rbi +23 -12
  225. data/rbi/openai/models/decision_input_image.rbi +4 -3
  226. data/rbi/openai/models/decision_input_message.rbi +4 -4
  227. data/rbi/openai/models/decision_input_part.rbi +2 -1
  228. data/rbi/openai/models/image_edit_completed_event.rbi +1 -0
  229. data/rbi/openai/models/image_edit_partial_image_event.rbi +1 -0
  230. data/rbi/openai/models/image_gen_completed_event.rbi +1 -0
  231. data/rbi/openai/models/image_gen_partial_image_event.rbi +1 -0
  232. data/rbi/openai/models/images_response.rbi +1 -0
  233. data/rbi/openai/models/live/built_in_voice.rbi +1 -0
  234. data/rbi/openai/models/live/client_event.rbi +4 -0
  235. data/rbi/openai/models/live/decision_create_event.rbi +55 -0
  236. data/rbi/openai/models/live/decision_event.rbi +185 -0
  237. data/rbi/openai/models/live/decision_item_create_event.rbi +338 -0
  238. data/rbi/openai/models/live/decision_item_created_event.rbi +354 -0
  239. data/rbi/openai/models/live/decision_item_delete_event.rbi +66 -0
  240. data/rbi/openai/models/live/decision_item_deleted_event.rbi +77 -0
  241. data/rbi/openai/models/live/decision_trigger.rbi +465 -0
  242. data/rbi/openai/models/live/decisions_delegation_config.rbi +393 -0
  243. data/rbi/openai/models/live/decisions_delegation_update_config.rbi +412 -0
  244. data/rbi/openai/models/live/delegation_created_event.rbi +8 -10
  245. data/rbi/openai/models/live/fork_client_event.rbi +4 -0
  246. data/rbi/openai/models/live/fork_server_event.rbi +5 -0
  247. data/rbi/openai/models/live/media_session_config.rbi +95 -14
  248. data/rbi/openai/models/live/output_audio_fixture_play_event.rbi +76 -0
  249. data/rbi/openai/models/live/output_audio_fixture_played_event.rbi +73 -0
  250. data/rbi/openai/models/live/output_audio_fixture_playing_event.rbi +72 -0
  251. data/rbi/openai/models/live/server_event.rbi +5 -0
  252. data/rbi/openai/models/live/session_accept_params.rbi +88 -12
  253. data/rbi/openai/models/live/session_config.rbi +100 -14
  254. data/rbi/openai/models/live/session_resource.rbi +81 -10
  255. data/rbi/openai/models/live/session_update_config.rbi +86 -9
  256. data/rbi/openai/models/live/session_update_event.rbi +8 -8
  257. data/rbi/openai/models/live/sideband_client_event.rbi +40 -0
  258. data/rbi/openai/models/live/sideband_server_event.rbi +47 -0
  259. data/rbi/openai/models/realtime/realtime_audio_config_output.rbi +6 -3
  260. data/rbi/openai/models/realtime/realtime_response_create_audio_output.rbi +6 -3
  261. data/rbi/openai/models/realtime/realtime_response_status.rbi +13 -1
  262. data/rbi/openai/models/realtime/realtime_translation_input_audio_buffer_append_event.rbi +1 -1
  263. data/rbi/openai/models/realtime/realtime_translation_output_audio_delta_event.rbi +3 -3
  264. data/rbi/openai/models/realtime/realtime_translation_session_close_event.rbi +1 -1
  265. data/rbi/openai/models/realtime/realtime_translation_session_update_event.rbi +5 -1
  266. data/rbi/openai/models/responses/response.rbi +2 -7
  267. data/rbi/openai/models/responses/response_create_params.rbi +5 -9
  268. data/rbi/openai/models/responses/response_error.rbi +24 -3
  269. data/rbi/openai/models/responses/response_function_tool_call.rbi +0 -4
  270. data/rbi/openai/models/responses/response_function_web_search.rbi +21 -17
  271. data/rbi/openai/models/responses/response_input_item.rbi +191 -0
  272. data/rbi/openai/models/responses/response_item.rbi +189 -0
  273. data/rbi/openai/models/responses/response_output_item.rbi +191 -0
  274. data/rbi/openai/models/responses/response_output_text.rbi +0 -4
  275. data/rbi/openai/models/responses/responses_client_event.rbi +2 -2
  276. data/rbi/openai/models/safety/safety_alert.rbi +13 -1
  277. data/rbi/openai/models/video_create_error.rbi +24 -3
  278. data/rbi/openai/models/webhooks/agent_environment_expired_webhook_event.rbi +133 -0
  279. data/rbi/openai/models/webhooks/agent_environment_suspended_webhook_event.rbi +133 -0
  280. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +3 -2
  281. data/rbi/openai/models/webhooks/webhook_create_params.rbi +8 -0
  282. data/rbi/openai/models/webhooks/webhook_test_params.rbi +8 -0
  283. data/rbi/openai/models/webhooks/webhook_update_params.rbi +8 -0
  284. data/rbi/openai/resources/admin/organization/external_storage.rbi +2 -1
  285. data/rbi/openai/resources/admin/organization/projects/api_keys.rbi +48 -0
  286. data/rbi/openai/resources/admin/organization/usage.rbi +56 -0
  287. data/rbi/openai/resources/audio/speech.rbi +2 -1
  288. data/rbi/openai/resources/audio/voices.rbi +13 -10
  289. data/rbi/openai/resources/beta/agents/environments/files.rbi +3 -33
  290. data/rbi/openai/resources/beta/agents/environments.rbi +3 -3
  291. data/rbi/openai/resources/beta/agents/sessions/artifacts.rbi +5 -13
  292. data/rbi/openai/resources/beta/agents/sessions.rbi +15 -4
  293. data/rbi/openai/resources/beta/agents/vaults/credentials.rbi +9 -5
  294. data/rbi/openai/resources/beta/agents/vaults.rbi +34 -5
  295. data/rbi/openai/resources/beta/agents.rbi +6 -4
  296. data/rbi/openai/resources/beta/responses.rbi +2 -2
  297. data/rbi/openai/resources/chat/completions.rbi +26 -29
  298. data/rbi/openai/resources/decisions.rbi +9 -15
  299. data/rbi/openai/resources/files.rbi +0 -18
  300. data/rbi/openai/resources/live/forks.rbi +17 -0
  301. data/rbi/openai/resources/live/sideband.rbi +17 -0
  302. data/rbi/openai/resources/live.rbi +17 -0
  303. data/rbi/openai/resources/realtime/translations.rbi +17 -0
  304. data/rbi/openai/resources/realtime.rbi +17 -0
  305. data/rbi/openai/resources/responses.rbi +41 -333
  306. data/rbi/openai/resources/vector_stores/file_batches.rbi +0 -93
  307. data/rbi/openai/resources/vector_stores/files.rbi +0 -113
  308. data/rbi/openai/resources/webhooks.rbi +2 -0
  309. data/sig/openai/client.rbs +0 -50
  310. data/sig/openai/helpers/admin/organization/projects/api_keys.rbs +18 -0
  311. data/sig/openai/helpers/beta/agents/artifacts.rbs +17 -0
  312. data/sig/openai/helpers/beta/agents/files.rbs +30 -0
  313. data/sig/openai/helpers/client_runtime.rbs +53 -0
  314. data/sig/openai/helpers/files.rbs +12 -0
  315. data/sig/openai/helpers/models/responses/response.rbs +9 -0
  316. data/sig/openai/helpers/streaming/response_stream.rbs +37 -0
  317. data/sig/openai/helpers/vector_stores/file_batches.rbs +38 -0
  318. data/sig/openai/helpers/vector_stores/files.rbs +43 -0
  319. data/sig/openai/helpers/websocket.rbs +40 -0
  320. data/sig/openai/models/admin/organization/audit_log_list_response.rbs +1 -0
  321. data/sig/openai/models/admin/organization/external_storage_configuration.rbs +1 -0
  322. data/sig/openai/models/admin/organization/external_storage_create_params.rbs +33 -0
  323. data/sig/openai/models/admin/organization/oci_external_storage_provider.rbs +34 -0
  324. data/sig/openai/models/admin/organization/project_residency.rbs +6 -0
  325. data/sig/openai/models/admin/organization/projects/api_key_update_params.rbs +77 -0
  326. data/sig/openai/models/admin/organization/projects/api_key_update_scopes_params.rbs +38 -0
  327. data/sig/openai/models/admin/organization/usage_decisions_params.rbs +170 -0
  328. data/sig/openai/models/admin/organization/usage_decisions_response.rbs +319 -0
  329. data/sig/openai/models/audio/speech_create_params.rbs +4 -2
  330. data/sig/openai/models/audio/voice.rbs +21 -3
  331. data/sig/openai/models/audio/voice_create_params.rbs +90 -1
  332. data/sig/openai/models/beta/agent_create_params.rbs +4 -2
  333. data/sig/openai/models/beta/agent_list_params.rbs +9 -6
  334. data/sig/openai/models/beta/agent_session.rbs +36 -2
  335. data/sig/openai/models/beta/agent_session_environment_expired_event.rbs +57 -0
  336. data/sig/openai/models/beta/agent_session_environment_state.rbs +14 -1
  337. data/sig/openai/models/beta/agent_session_environment_suspended_event.rbs +57 -0
  338. data/sig/openai/models/beta/agent_session_event.rbs +2 -0
  339. data/sig/openai/models/beta/agent_update_params.rbs +4 -2
  340. data/sig/openai/models/beta/agents/environment_info.rbs +11 -1
  341. data/sig/openai/models/beta/agents/environment_list_params.rbs +9 -9
  342. data/sig/openai/models/beta/agents/session_create_params.rbs +29 -2
  343. data/sig/openai/models/beta/agents/session_list_params.rbs +12 -12
  344. data/sig/openai/models/beta/agents/session_update_params.rbs +23 -0
  345. data/sig/openai/models/beta/agents/sessions/artifact_list_params.rbs +21 -15
  346. data/sig/openai/models/beta/agents/vault_list_params.rbs +32 -14
  347. data/sig/openai/models/beta/agents/vault_update_params.rbs +54 -0
  348. data/sig/openai/models/beta/agents/vaults/credential_list_params.rbs +32 -14
  349. data/sig/openai/models/beta/beta_response.rbs +2 -2
  350. data/sig/openai/models/beta/beta_response_error.rbs +19 -3
  351. data/sig/openai/models/beta/beta_response_input_item.rbs +110 -0
  352. data/sig/openai/models/beta/beta_response_item.rbs +110 -0
  353. data/sig/openai/models/beta/beta_response_output_item.rbs +110 -0
  354. data/sig/openai/models/beta/beta_responses_client_event.rbs +2 -2
  355. data/sig/openai/models/beta/response_create_params.rbs +2 -2
  356. data/sig/openai/models/beta/session_turn_error.rbs +4 -0
  357. data/sig/openai/models/chat/chat_completion_audio_param.rbs +2 -2
  358. data/sig/openai/models/chat/completion_create_params.rbs +2 -2
  359. data/sig/openai/models/conversations/conversation_item.rbs +110 -0
  360. data/sig/openai/models/decision.rbs +13 -0
  361. data/sig/openai/models/decision_create_params.rbs +19 -8
  362. data/sig/openai/models/decision_input_image.rbs +2 -2
  363. data/sig/openai/models/decision_input_message.rbs +2 -2
  364. data/sig/openai/models/live/built_in_voice.rbs +2 -0
  365. data/sig/openai/models/live/client_event.rbs +4 -0
  366. data/sig/openai/models/live/decision_create_event.rbs +18 -0
  367. data/sig/openai/models/live/decision_event.rbs +102 -0
  368. data/sig/openai/models/live/decision_item_create_event.rbs +183 -0
  369. data/sig/openai/models/live/decision_item_created_event.rbs +195 -0
  370. data/sig/openai/models/live/decision_item_delete_event.rbs +33 -0
  371. data/sig/openai/models/live/decision_item_deleted_event.rbs +49 -0
  372. data/sig/openai/models/live/decision_trigger.rbs +234 -0
  373. data/sig/openai/models/live/decisions_delegation_config.rbs +195 -0
  374. data/sig/openai/models/live/decisions_delegation_update_config.rbs +202 -0
  375. data/sig/openai/models/live/delegation_created_event.rbs +6 -7
  376. data/sig/openai/models/live/fork_client_event.rbs +4 -0
  377. data/sig/openai/models/live/fork_server_event.rbs +5 -0
  378. data/sig/openai/models/live/media_session_config.rbs +58 -11
  379. data/sig/openai/models/live/output_audio_fixture_play_event.rbs +42 -0
  380. data/sig/openai/models/live/output_audio_fixture_played_event.rbs +44 -0
  381. data/sig/openai/models/live/output_audio_fixture_playing_event.rbs +44 -0
  382. data/sig/openai/models/live/server_event.rbs +5 -0
  383. data/sig/openai/models/live/session_accept_params.rbs +57 -10
  384. data/sig/openai/models/live/session_config.rbs +58 -11
  385. data/sig/openai/models/live/session_resource.rbs +57 -10
  386. data/sig/openai/models/live/session_update_config.rbs +54 -3
  387. data/sig/openai/models/live/session_update_event.rbs +6 -6
  388. data/sig/openai/models/live/sideband_client_event.rbs +26 -0
  389. data/sig/openai/models/live/sideband_server_event.rbs +33 -0
  390. data/sig/openai/models/realtime/realtime_audio_config_output.rbs +6 -3
  391. data/sig/openai/models/realtime/realtime_response_create_audio_output.rbs +6 -3
  392. data/sig/openai/models/realtime/realtime_response_status.rbs +15 -3
  393. data/sig/openai/models/responses/response.rbs +2 -4
  394. data/sig/openai/models/responses/response_create_params.rbs +2 -2
  395. data/sig/openai/models/responses/response_error.rbs +19 -3
  396. data/sig/openai/models/responses/response_input_item.rbs +110 -0
  397. data/sig/openai/models/responses/response_item.rbs +110 -0
  398. data/sig/openai/models/responses/response_output_item.rbs +110 -0
  399. data/sig/openai/models/responses/responses_client_event.rbs +2 -2
  400. data/sig/openai/models/safety/safety_alert.rbs +12 -2
  401. data/sig/openai/models/video_create_error.rbs +19 -3
  402. data/sig/openai/models/webhooks/agent_environment_expired_webhook_event.rbs +70 -0
  403. data/sig/openai/models/webhooks/agent_environment_suspended_webhook_event.rbs +70 -0
  404. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +3 -1
  405. data/sig/openai/models/webhooks/webhook_create_params.rbs +4 -0
  406. data/sig/openai/models/webhooks/webhook_test_params.rbs +4 -0
  407. data/sig/openai/models/webhooks/webhook_update_params.rbs +4 -0
  408. data/sig/openai/resources/admin/organization/projects/api_keys.rbs +8 -0
  409. data/sig/openai/resources/admin/organization/usage.rbs +15 -0
  410. data/sig/openai/resources/beta/agents/environments/files.rbs +0 -17
  411. data/sig/openai/resources/beta/agents/sessions/artifacts.rbs +2 -6
  412. data/sig/openai/resources/beta/agents/sessions.rbs +4 -1
  413. data/sig/openai/resources/beta/agents/vaults/credentials.rbs +2 -1
  414. data/sig/openai/resources/beta/agents/vaults.rbs +9 -1
  415. data/sig/openai/resources/beta/agents.rbs +1 -1
  416. data/sig/openai/resources/files.rbs +0 -7
  417. data/sig/openai/resources/live/forks.rbs +8 -0
  418. data/sig/openai/resources/live/sideband.rbs +8 -0
  419. data/sig/openai/resources/live.rbs +7 -0
  420. data/sig/openai/resources/realtime/translations.rbs +7 -0
  421. data/sig/openai/resources/realtime.rbs +7 -0
  422. data/sig/openai/resources/responses.rbs +7 -31
  423. data/sig/openai/resources/vector_stores/file_batches.rbs +0 -31
  424. data/sig/openai/resources/vector_stores/files.rbs +0 -36
  425. data/sig/openai/resources/webhooks.rbs +3 -1
  426. metadata +101 -1
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../../../helpers/agents/session_stream_resource"
4
+
3
5
  module OpenAI
4
6
  module Resources
5
7
  class Beta
@@ -30,7 +32,7 @@ module OpenAI
30
32
  # the session or streams its events when stream is true. See
31
33
  # [running sessions](https://developers.openai.com/api/docs/guides/agents-api/sessions).
32
34
  #
33
- # @overload create(environment:, agent: nil, agent_id: nil, input: nil, metadata: nil, vault_ids: nil, request_options: {})
35
+ # @overload create(environment:, agent: nil, agent_id: nil, input: nil, metadata: nil, spend_control: nil, vault_ids: nil, request_options: {})
34
36
  #
35
37
  # @param environment [OpenAI::Models::Beta::EnvironmentParam::None, OpenAI::Models::Beta::EnvironmentParam::OpenAIHosted, OpenAI::Models::Beta::EnvironmentParam::SelfHosted]
36
38
  # An inline execution environment or a reference to an environment template.
@@ -53,6 +55,10 @@ module OpenAI
53
55
  # Up to 16 string key-value pairs, with keys up to 64 and values up to 512
54
56
  # characters. Omission or null defaults to an empty map.
55
57
  #
58
+ # @param spend_control [OpenAI::Models::Beta::Agents::SessionCreateParams::SpendControl, nil]
59
+ # Optional spending limit in USD cents. Omission or null creates an unlimited
60
+ # session.
61
+ #
56
62
  # @param vault_ids [Array<String>, nil]
57
63
  # The IDs of vaults made available to the session.
58
64
  #
@@ -86,7 +92,7 @@ module OpenAI
86
92
  # the session or streams its events when stream is true. See
87
93
  # [running sessions](https://developers.openai.com/api/docs/guides/agents-api/sessions).
88
94
  #
89
- # @overload create_streaming(environment:, agent: nil, agent_id: nil, input: nil, output_type: nil, tool_handlers: {}, metadata: nil, vault_ids: nil, request_options: {})
95
+ # @overload create_streaming(environment:, agent: nil, agent_id: nil, input: nil, output_type: nil, tool_handlers: {}, metadata: nil, spend_control: nil, vault_ids: nil, request_options: {})
90
96
  #
91
97
  # @param environment [OpenAI::Models::Beta::EnvironmentParam::None, OpenAI::Models::Beta::EnvironmentParam::OpenAIHosted, OpenAI::Models::Beta::EnvironmentParam::SelfHosted]
92
98
  # An inline execution environment or a reference to an environment template.
@@ -109,6 +115,10 @@ module OpenAI
109
115
  # Up to 16 string key-value pairs, with keys up to 64 and values up to 512
110
116
  # characters. Omission or null defaults to an empty map.
111
117
  #
118
+ # @param spend_control [OpenAI::Models::Beta::Agents::SessionCreateParams::SpendControl, nil]
119
+ # Optional spending limit in USD cents. Omission or null creates an unlimited
120
+ # session.
121
+ #
112
122
  # @param vault_ids [Array<String>, nil]
113
123
  # The IDs of vaults made available to the session.
114
124
  #
@@ -182,7 +192,7 @@ module OpenAI
182
192
  # settings apply to subsequent turns. Omitted fields are unchanged. See
183
193
  # [managing sessions](https://developers.openai.com/api/docs/guides/agents-api/sessions/manage).
184
194
  #
185
- # @overload update(session_id, agent: nil, metadata: nil, request_options: {})
195
+ # @overload update(session_id, agent: nil, metadata: nil, spend_control: nil, request_options: {})
186
196
  #
187
197
  # @param session_id [String]
188
198
  # The ID of the session.
@@ -195,6 +205,10 @@ module OpenAI
195
205
  # Up to 16 string key-value pairs, with keys up to 64 and values up to 512
196
206
  # characters.
197
207
  #
208
+ # @param spend_control [OpenAI::Models::Beta::Agents::SessionUpdateParams::SpendControl, nil]
209
+ # Omit to retain the limit; null or a null limit removes it without resetting
210
+ # spend.
211
+ #
198
212
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
199
213
  #
200
214
  # @return [OpenAI::Models::Beta::AgentSession]
@@ -226,12 +240,11 @@ module OpenAI
226
240
  # Only return sessions whose root agent has this ID. Omit to return sessions for
227
241
  # all agents.
228
242
  #
229
- # @param limit [Integer, nil]
230
- # The maximum number of resources to return.
243
+ # @param limit [Integer]
244
+ # The maximum number of resources to return, between 1 and 100. Defaults to 20.
231
245
  #
232
246
  # @param order [Symbol, OpenAI::Models::Beta::Agents::SessionListParams::Order]
233
- # Sort order by the `created_at` timestamp. Use `asc` for ascending order or
234
- # `desc` for descending order. Defaults to `desc`.
247
+ # The order in which resources are returned. Defaults to `desc`.
235
248
  #
236
249
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
237
250
  #
@@ -280,55 +293,6 @@ module OpenAI
280
293
  )
281
294
  end
282
295
 
283
- # Submit input to an idle session and stream one turn through idle or failure.
284
- # The caller must be the session's only input writer during iteration.
285
- # Handlers run sequentially; failures submit a generic error without exception text.
286
- # Input and each tool result use distinct retry-safe idempotency keys.
287
- # A block closes the connection on every exit path without cancelling the turn.
288
- #
289
- # @param session_id [String]
290
- # @param input [String, Array<OpenAI::Models::Beta::AgentSessionInputMessageParam>]
291
- # @param tool_handlers [Hash{String=>Proc}]
292
- # @param on_tool_error [Proc, nil]
293
- # Beta: use with tool_handlers to log or monitor argument parsing, handler
294
- # execution, and output conversion failures locally. Receives ToolError;
295
- # API/transport errors still propagate normally. Ordinary observer errors
296
- # are ignored, and the submitted tool failure stays generic.
297
- # @param idempotency_key [String, nil] Applies only to the input submission.
298
- # @param output_type [Class<OpenAI::BaseModel>, nil] Beta: parse output without changing session configuration.
299
- # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
300
- # @yieldparam stream [OpenAI::Helpers::Agents::SessionStream]
301
- # @return [OpenAI::Helpers::Agents::SessionStream]
302
- def stream(
303
- session_id,
304
- input:,
305
- tool_handlers: {},
306
- on_tool_error: nil,
307
- idempotency_key: nil,
308
- output_type: nil,
309
- request_options: {}
310
- )
311
- stream = OpenAI::Helpers::Agents::SessionStream.new(
312
- sessions: self,
313
- session_id: session_id,
314
- input: input,
315
- tool_handlers: tool_handlers,
316
- on_tool_error: on_tool_error,
317
- idempotency_key: idempotency_key,
318
- output_type: output_type,
319
- request_options: request_options
320
- )
321
- return stream unless block_given?
322
-
323
- begin
324
- yield stream
325
- ensure
326
- stream.close
327
- end
328
-
329
- stream
330
- end
331
-
332
296
  # @api private
333
297
  #
334
298
  # @param client [OpenAI::Client]
@@ -122,7 +122,7 @@ module OpenAI
122
122
  # values. See
123
123
  # [vaults](https://developers.openai.com/api/docs/guides/agents-api/tools/vaults).
124
124
  #
125
- # @overload list(vault_id, after: nil, limit: nil, order: nil, status: nil, request_options: {})
125
+ # @overload list(vault_id, after: nil, limit: nil, metadata: nil, order: nil, status: nil, request_options: {})
126
126
  #
127
127
  # @param vault_id [String]
128
128
  # The ID of the vault.
@@ -130,13 +130,17 @@ module OpenAI
130
130
  # @param after [String]
131
131
  # Return resources after this resource ID in the selected order.
132
132
  #
133
- # @param limit [Integer, nil]
134
- # The maximum number of resources to return. Defaults to 20. Values are clamped
135
- # between 1 and 100.
133
+ # @param limit [Integer]
134
+ # The maximum number of resources to return, between 1 and 100. Defaults to 20.
135
+ #
136
+ # @param metadata [Hash{Symbol=>String}]
137
+ # Exact string matches supplied as `metadata[key]=value`. All supplied pairs must
138
+ # match. Up to 16 pairs, with keys from 1 to 64 characters and values up to 512
139
+ # characters. Filtering is eventually consistent; metadata changes may take time
140
+ # to appear.
136
141
  #
137
142
  # @param order [Symbol, OpenAI::Models::Beta::Agents::Vaults::CredentialListParams::Order]
138
- # Sort order by the `created_at` timestamp. Use `asc` for ascending order or
139
- # `desc` for descending order. Defaults to `desc`.
143
+ # The order in which resources are returned. Defaults to `desc`.
140
144
  #
141
145
  # @param status [Symbol, OpenAI::Models::Beta::Agents::VaultStatus, Array<Symbol, OpenAI::Models::Beta::Agents::VaultStatus>]
142
146
  # Filter by one status or a list, such as `status=active` or
@@ -63,21 +63,60 @@ module OpenAI
63
63
  )
64
64
  end
65
65
 
66
+ # Updates the name or metadata of an active vault. Omitted fields remain
67
+ # unchanged. See
68
+ # [vaults](https://developers.openai.com/api/docs/guides/agents-api/tools/vaults).
69
+ #
70
+ # @overload update(vault_id, metadata: nil, name: nil, request_options: {})
71
+ #
72
+ # @param vault_id [String]
73
+ # The ID of the vault.
74
+ #
75
+ # @param metadata [Hash{Symbol=>String}]
76
+ # Replaces all metadata. Omit to leave unchanged, or pass {} to clear it. Up to 16
77
+ # string key-value pairs, with keys up to 64 and values up to 512 characters.
78
+ #
79
+ # @param name [String, nil]
80
+ # A replacement name. Omit to leave unchanged, or pass null to clear it. The name
81
+ # is trimmed before storage. It must contain 1 to 256 UTF-8 bytes after trimming.
82
+ #
83
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
84
+ #
85
+ # @return [OpenAI::Models::Beta::Agents::Vault]
86
+ #
87
+ # @see OpenAI::Models::Beta::Agents::VaultUpdateParams
88
+ def update(vault_id, params = {})
89
+ parsed, options = OpenAI::Beta::Agents::VaultUpdateParams.dump_request(params)
90
+ @client.request(
91
+ method: :post,
92
+ path: ["vaults/%1$s", vault_id],
93
+ headers: {"openai-beta" => "agents=v1"},
94
+ body: parsed,
95
+ model: OpenAI::Beta::Agents::Vault,
96
+ security: {bearer_auth: true},
97
+ options: options
98
+ )
99
+ end
100
+
66
101
  # Lists vaults using ID-based pagination. See
67
102
  # [vaults](https://developers.openai.com/api/docs/guides/agents-api/tools/vaults).
68
103
  #
69
- # @overload list(after: nil, limit: nil, order: nil, status: nil, request_options: {})
104
+ # @overload list(after: nil, limit: nil, metadata: nil, order: nil, status: nil, request_options: {})
70
105
  #
71
106
  # @param after [String]
72
107
  # Return resources after this resource ID in the selected order.
73
108
  #
74
- # @param limit [Integer, nil]
75
- # The maximum number of resources to return. Defaults to 20. Values are clamped
76
- # between 1 and 100.
109
+ # @param limit [Integer]
110
+ # The maximum number of resources to return, between 1 and 100. Defaults to 20.
111
+ #
112
+ # @param metadata [Hash{Symbol=>String}]
113
+ # Exact string matches supplied as `metadata[key]=value`. All supplied pairs must
114
+ # match. Up to 16 pairs, with keys from 1 to 64 characters and values up to 512
115
+ # characters. Filtering is eventually consistent; metadata changes may take time
116
+ # to appear.
77
117
  #
78
118
  # @param order [Symbol, OpenAI::Models::Beta::Agents::VaultListParams::Order]
79
- # Sort order by the `created_at` timestamp. Use `asc` for ascending order or
80
- # `desc` for descending order. Defaults to `desc`.
119
+ # The order in which resources are returned. Defaults to `desc`.
81
120
  #
82
121
  # @param status [Symbol, OpenAI::Models::Beta::Agents::VaultStatus, Array<Symbol, OpenAI::Models::Beta::Agents::VaultStatus>]
83
122
  # Filter by one status or a list, such as `status=active` or
@@ -47,7 +47,8 @@ module OpenAI
47
47
  # verbosity.
48
48
  #
49
49
  # @param tools [Array<OpenAI::Models::Beta::PersistedAgentToolParam::Function, OpenAI::Models::Beta::PersistedAgentToolParam::ToolSearch, OpenAI::Models::Beta::PersistedAgentToolParam::ProgrammaticToolCalling, OpenAI::Models::Beta::PersistedAgentToolParam::Mcp, OpenAI::Models::Beta::PersistedAgentToolParam::WebSearch, OpenAI::Models::Beta::PersistedAgentToolParam::ComputerUse>, nil]
50
- # Tools available to the agent. Defaults to an empty list.
50
+ # Tools available to the agent. Defaults to an empty list. The tool list must fit
51
+ # within 3 MiB (3,145,728 bytes) of compact UTF-8 JSON.
51
52
  #
52
53
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
53
54
  #
@@ -128,7 +129,8 @@ module OpenAI
128
129
  # Configuration for text generated by the agent.
129
130
  #
130
131
  # @param tools [Array<OpenAI::Models::Beta::PersistedAgentToolParam::Function, OpenAI::Models::Beta::PersistedAgentToolParam::ToolSearch, OpenAI::Models::Beta::PersistedAgentToolParam::ProgrammaticToolCalling, OpenAI::Models::Beta::PersistedAgentToolParam::Mcp, OpenAI::Models::Beta::PersistedAgentToolParam::WebSearch, OpenAI::Models::Beta::PersistedAgentToolParam::ComputerUse>, nil]
131
- # Tools available to the agent.
132
+ # Replaces the tool list. Omit to leave it unchanged, or pass null to clear it.
133
+ # The replacement must fit within 3 MiB (3,145,728 bytes) of compact UTF-8 JSON.
132
134
  #
133
135
  # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
134
136
  #
@@ -156,8 +158,8 @@ module OpenAI
156
158
  # @param after [String]
157
159
  # Return resources after this resource ID in the selected order.
158
160
  #
159
- # @param limit [Integer, nil]
160
- # The maximum number of resources to return.
161
+ # @param limit [Integer]
162
+ # The maximum number of resources to return, between 1 and 100. Defaults to 20.
161
163
  #
162
164
  # @param order [Symbol, OpenAI::Models::Beta::AgentListParams::Order]
163
165
  # The order in which resources are returned. Defaults to `desc`.
@@ -173,7 +173,7 @@ module OpenAI
173
173
  # @param safety_identifier [String, nil]
174
174
  # Body param: A stable identifier used to help detect users of your application
175
175
  # that may be violating OpenAI's usage policies. The IDs should be a string that
176
- # uniquely identifies each user, with a maximum length of 64 characters. We
176
+ # uniquely identifies each user, with a maximum length of 128 characters. We
177
177
  # recommend hashing their username or email address, in order to avoid sending us
178
178
  # any identifying information.
179
179
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
@@ -474,7 +474,7 @@ module OpenAI
474
474
  # @param safety_identifier [String, nil]
475
475
  # Body param: A stable identifier used to help detect users of your application
476
476
  # that may be violating OpenAI's usage policies. The IDs should be a string that
477
- # uniquely identifies each user, with a maximum length of 64 characters. We
477
+ # uniquely identifies each user, with a maximum length of 128 characters. We
478
478
  # recommend hashing their username or email address, in order to avoid sending us
479
479
  # any identifying information.
480
480
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../../helpers/streaming/chat_completion_resource"
3
4
  require_relative "../../helpers/structured_output/chat_completion_parser"
4
5
 
5
6
  module OpenAI
@@ -216,7 +217,7 @@ module OpenAI
216
217
  # @param safety_identifier [String, nil]
217
218
  # A stable identifier used to help detect users of your application that may be
218
219
  # violating OpenAI's usage policies. The IDs should be a string that uniquely
219
- # identifies each user, with a maximum length of 64 characters. We recommend
220
+ # identifies each user, with a maximum length of 128 characters. We recommend
220
221
  # hashing their username or email address, in order to avoid sending us any
221
222
  # identifying information.
222
223
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
@@ -350,41 +351,6 @@ module OpenAI
350
351
  )
351
352
  end
352
353
 
353
- def get_structured_output_models(parsed)
354
- OpenAI::Helpers::StructuredOutput::ChatCompletionParser.get_models(parsed)
355
- end
356
-
357
- def build_tools_with_models(tools, tool_models)
358
- OpenAI::Helpers::StructuredOutput::ChatCompletionParser.build_tools(tools, tool_models)
359
- end
360
-
361
- def stream(params)
362
- parsed, options = OpenAI::Chat::CompletionCreateParams.dump_request(params)
363
-
364
- parsed.store(:stream, true)
365
-
366
- response_format, tool_models = get_structured_output_models(parsed)
367
-
368
- input_tools = build_tools_with_models(parsed[:tools], tool_models)
369
-
370
- raw_stream = @client.request(
371
- method: :post,
372
- path: "chat/completions",
373
- headers: {"accept" => "text/event-stream"},
374
- body: parsed,
375
- stream: OpenAI::Internal::Stream,
376
- model: OpenAI::Chat::ChatCompletionChunk,
377
- security: {bearer_auth: true},
378
- options: options
379
- )
380
-
381
- OpenAI::Helpers::Streaming::ChatCompletionStream.new(
382
- raw_stream: raw_stream,
383
- response_format: response_format,
384
- input_tools: input_tools
385
- )
386
- end
387
-
388
354
  # See {OpenAI::Resources::Chat::Completions#create} for non-streaming counterpart.
389
355
  #
390
356
  # **Starting a new project?** We recommend trying
@@ -588,7 +554,7 @@ module OpenAI
588
554
  # @param safety_identifier [String, nil]
589
555
  # A stable identifier used to help detect users of your application that may be
590
556
  # violating OpenAI's usage policies. The IDs should be a string that uniquely
591
- # identifies each user, with a maximum length of 64 characters. We recommend
557
+ # identifies each user, with a maximum length of 128 characters. We recommend
592
558
  # hashing their username or email address, in order to avoid sending us any
593
559
  # identifying information.
594
560
  # [Learn more](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers).
@@ -842,6 +808,14 @@ module OpenAI
842
808
  )
843
809
  end
844
810
 
811
+ def get_structured_output_models(parsed)
812
+ OpenAI::Helpers::StructuredOutput::ChatCompletionParser.get_models(parsed)
813
+ end
814
+
815
+ def build_tools_with_models(tools, tool_models)
816
+ OpenAI::Helpers::StructuredOutput::ChatCompletionParser.build_tools(tools, tool_models)
817
+ end
818
+
845
819
  # @api private
846
820
  #
847
821
  # @param client [OpenAI::Client]
@@ -3,29 +3,23 @@
3
3
  module OpenAI
4
4
  module Resources
5
5
  class Decisions
6
- # Evaluate ordered classification and scoring questions against shared input.
7
- # Answers are returned in question order.
8
- #
9
- # Supply input as a string or user messages containing text and inline images.
10
- # Only user messages with `input_text` and `input_image` parts are supported;
11
- # non-user roles, function calls, files, audio, and item references are not
12
- # supported. Images require a data URL, not an external URL or file ID. At most
13
- # 128 images are allowed across the request.
14
- #
15
- # Each question can return a refusal instead of a scored answer. A refusal has
16
- # type `refusal` and the corresponding question name, or null if unnamed.
6
+ # Use this endpoint to quickly answer classification or scoring questions about
7
+ # some input. You can ask multiple questions in one request.
17
8
  #
18
9
  # @overload create(input:, model:, questions:, safety_identifier: nil, request_options: {})
19
10
  #
20
11
  # @param input [String, Array<OpenAI::Models::DecisionInputMessage>]
21
- # Shared evidence, as a string or an array of user messages containing text and
22
- # inline images. Non-user roles, function calls, function-call outputs, files,
23
- # audio, and item references are not supported. At most 128 image parts are
24
- # allowed across all messages in one request.
12
+ # The text or images to evaluate for every question. Provide a text string or user
13
+ # messages containing text and images. Images can be base64 data URLs or publicly
14
+ # accessible HTTP(S) URLs; at most 128 images are allowed across all messages in
15
+ # one request. Files, audio, tools, and item references are not supported.
25
16
  #
26
17
  # @param model [String]
18
+ # The model to use. Only `gpt-6-luna` is supported.
27
19
  #
28
20
  # @param questions [Array<OpenAI::Models::DecisionCreateParams::Question::Predicate, OpenAI::Models::DecisionCreateParams::Question::Choice, OpenAI::Models::DecisionCreateParams::Question::Score>]
21
+ # Ask 1–200 questions about the input. Each question can be a predicate, choice,
22
+ # or score. Answers come back in the same order.
29
23
  #
30
24
  # @param safety_identifier [String, nil]
31
25
  # Opaque caller-provided end-user identifier, scoped by the verified org. Match
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "../helpers/resource_polling"
4
-
5
3
  module OpenAI
6
4
  module Resources
7
5
  # Files are used to upload documents that can be used with features like
@@ -187,43 +185,6 @@ module OpenAI
187
185
  )
188
186
  end
189
187
 
190
- # Wait for an uploaded file to finish processing.
191
- #
192
- # The returned file may have an `error` status; callers should inspect the
193
- # status before using it. Polling intervals and the overall timeout are in
194
- # seconds. Finite timeouts include authentication and request replay time and
195
- # disable transport retries so the deadline remains strict. Set `timeout` to
196
- # `nil` to wait indefinitely and retain configured transport retries.
197
- #
198
- # @overload wait_for_processing(file_id, poll_interval: nil, timeout: 1800.0, request_options: {})
199
- #
200
- # @param file_id [String] The ID of the file to wait for.
201
- #
202
- # @param poll_interval [Integer, Float, nil] How often to retrieve the file. When omitted, the SDK honors the server's
203
- # polling hint and otherwise waits 5 seconds.
204
- #
205
- # @param timeout [Integer, Float, nil] Maximum total time to poll. Defaults to 30 minutes. Set to `nil` to wait
206
- # indefinitely.
207
- #
208
- # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
209
- #
210
- # @raise [ArgumentError, OpenAI::Errors::PollingError]
211
- # @return [OpenAI::Models::FileObject]
212
- def wait_for_processing(
213
- file_id,
214
- poll_interval: nil,
215
- timeout: OpenAI::Internal::Poller::DEFAULT_TIMEOUT,
216
- request_options: {}
217
- )
218
- OpenAI::Helpers::ResourcePolling.wait_for_file(
219
- self,
220
- file_id,
221
- poll_interval: poll_interval,
222
- timeout: timeout,
223
- request_options: request_options
224
- )
225
- end
226
-
227
188
  # @api private
228
189
  #
229
190
  # @param client [OpenAI::Client]
@@ -1,9 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../../helpers/websocket/resource"
4
+
3
5
  module OpenAI
4
6
  module Resources
5
7
  class Live
6
8
  class Forks
9
+ include OpenAI::WebSocket::Resource
10
+
11
+ # @api private
12
+ def __websocket_request(session_id, query: {})
13
+ {method: :get, path: ["live/sessions/%1$s/fork", session_id], query: query, security: {bearer_auth: true}}
14
+ end
15
+
16
+ # @api private
17
+ def __websocket_client_event
18
+ OpenAI::Models::Live::ForkClientEvent
19
+ end
20
+
21
+ # @api private
22
+ def __websocket_server_event
23
+ OpenAI::Models::Live::ForkServerEvent
24
+ end
25
+
7
26
  # @api private
8
27
  #
9
28
  # @param client [OpenAI::Client]
@@ -1,9 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../../helpers/websocket/resource"
4
+
3
5
  module OpenAI
4
6
  module Resources
5
7
  class Live
6
8
  class Sideband
9
+ include OpenAI::WebSocket::Resource
10
+
11
+ # @api private
12
+ def __websocket_request(session_id, query: {})
13
+ {method: :get, path: ["live/sessions/%1$s/attach", session_id], query: query, security: {bearer_auth: true}}
14
+ end
15
+
16
+ # @api private
17
+ def __websocket_client_event
18
+ OpenAI::Models::Live::SidebandClientEvent
19
+ end
20
+
21
+ # @api private
22
+ def __websocket_server_event
23
+ OpenAI::Models::Live::SidebandServerEvent
24
+ end
25
+
7
26
  # @api private
8
27
  #
9
28
  # @param client [OpenAI::Client]
@@ -1,8 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../helpers/websocket/resource"
4
+
3
5
  module OpenAI
4
6
  module Resources
5
7
  class Live
8
+ include OpenAI::WebSocket::Resource
9
+
10
+ # @api private
11
+ def __websocket_request(query: {})
12
+ {method: :get, path: "live/sessions", query: query, security: {bearer_auth: true}}
13
+ end
14
+
15
+ # @api private
16
+ def __websocket_client_event
17
+ OpenAI::Models::Live::ClientEvent
18
+ end
19
+
20
+ # @api private
21
+ def __websocket_server_event
22
+ OpenAI::Models::Live::ServerEvent
23
+ end
24
+
6
25
  # @return [OpenAI::Resources::Live::Sideband]
7
26
  attr_reader :sideband
8
27
 
@@ -1,9 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../../helpers/websocket/resource"
4
+
3
5
  module OpenAI
4
6
  module Resources
5
7
  class Realtime
6
8
  class Translations
9
+ include OpenAI::WebSocket::Resource
10
+
11
+ # @api private
12
+ def __websocket_request(query: {})
13
+ {method: :get, path: "realtime/translations", query: query, security: {bearer_auth: true}}
14
+ end
15
+
16
+ # @api private
17
+ def __websocket_client_event
18
+ OpenAI::Models::Realtime::RealtimeTranslationClientEvent
19
+ end
20
+
21
+ # @api private
22
+ def __websocket_server_event
23
+ OpenAI::Models::Realtime::RealtimeTranslationServerEvent
24
+ end
25
+
7
26
  # @return [OpenAI::Resources::Realtime::Translations::ClientSecrets]
8
27
  attr_reader :client_secrets
9
28
 
@@ -1,8 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../helpers/websocket/resource"
4
+
3
5
  module OpenAI
4
6
  module Resources
5
7
  class Realtime
8
+ include OpenAI::WebSocket::Resource
9
+
10
+ # @api private
11
+ def __websocket_request(query: {})
12
+ {method: :get, path: "realtime", query: query, security: {bearer_auth: true}}
13
+ end
14
+
15
+ # @api private
16
+ def __websocket_client_event
17
+ OpenAI::Models::Realtime::RealtimeClientEvent
18
+ end
19
+
20
+ # @api private
21
+ def __websocket_server_event
22
+ OpenAI::Models::Realtime::RealtimeServerEvent
23
+ end
24
+
6
25
  # @return [OpenAI::Resources::Realtime::ClientSecrets]
7
26
  attr_reader :client_secrets
8
27