openai 0.88.0 → 0.90.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 (767) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +19 -0
  3. data/README.md +1 -1
  4. data/lib/openai/client.rb +4 -0
  5. data/lib/openai/helpers/agents/message.rb +20 -0
  6. data/lib/openai/helpers/agents/session_stream.rb +168 -0
  7. data/lib/openai/helpers/agents/tools.rb +65 -0
  8. data/lib/openai/internal/token_page.rb +91 -0
  9. data/lib/openai/models/beta/agent.rb +148 -0
  10. data/lib/openai/models/beta/agent_close_subagent_call_item.rb +66 -0
  11. data/lib/openai/models/beta/agent_command_execution_item.rb +93 -0
  12. data/lib/openai/models/beta/agent_content.rb +46 -0
  13. data/lib/openai/models/beta/agent_create_params.rb +128 -0
  14. data/lib/openai/models/beta/agent_create_subagent_call_item.rb +84 -0
  15. data/lib/openai/models/beta/agent_delete_params.rb +22 -0
  16. data/lib/openai/models/beta/agent_deleted.rb +40 -0
  17. data/lib/openai/models/beta/agent_function_call_item.rb +75 -0
  18. data/lib/openai/models/beta/agent_function_call_output.rb +22 -0
  19. data/lib/openai/models/beta/agent_function_call_output_param.rb +22 -0
  20. data/lib/openai/models/beta/agent_function_call_status.rb +27 -0
  21. data/lib/openai/models/beta/agent_interrupt_subagent_call_item.rb +67 -0
  22. data/lib/openai/models/beta/agent_list_params.rb +57 -0
  23. data/lib/openai/models/beta/agent_mcp_call_item.rb +93 -0
  24. data/lib/openai/models/beta/agent_output_command_execution_output_delta_event.rb +75 -0
  25. data/lib/openai/models/beta/agent_output_item.rb +53 -0
  26. data/lib/openai/models/beta/agent_output_item_status.rb +24 -0
  27. data/lib/openai/models/beta/agent_reasoning.rb +67 -0
  28. data/lib/openai/models/beta/agent_reasoning_item.rb +57 -0
  29. data/lib/openai/models/beta/agent_reasoning_param.rb +67 -0
  30. data/lib/openai/models/beta/agent_resume_subagent_call_item.rb +66 -0
  31. data/lib/openai/models/beta/agent_retrieve_params.rb +22 -0
  32. data/lib/openai/models/beta/agent_send_subagent_input_call_item.rb +75 -0
  33. data/lib/openai/models/beta/agent_session.rb +339 -0
  34. data/lib/openai/models/beta/agent_session_assistant_message.rb +91 -0
  35. data/lib/openai/models/beta/agent_session_created_event.rb +39 -0
  36. data/lib/openai/models/beta/agent_session_deleted.rb +42 -0
  37. data/lib/openai/models/beta/agent_session_environment_connected_event.rb +57 -0
  38. data/lib/openai/models/beta/agent_session_environment_disconnected_event.rb +57 -0
  39. data/lib/openai/models/beta/agent_session_environment_failed_event.rb +57 -0
  40. data/lib/openai/models/beta/agent_session_environment_pending_event.rb +57 -0
  41. data/lib/openai/models/beta/agent_session_environment_ready_event.rb +57 -0
  42. data/lib/openai/models/beta/agent_session_environment_state.rb +106 -0
  43. data/lib/openai/models/beta/agent_session_error_event.rb +48 -0
  44. data/lib/openai/models/beta/agent_session_event.rb +128 -0
  45. data/lib/openai/models/beta/agent_session_failed_event.rb +39 -0
  46. data/lib/openai/models/beta/agent_session_idle_event.rb +39 -0
  47. data/lib/openai/models/beta/agent_session_in_progress_event.rb +39 -0
  48. data/lib/openai/models/beta/agent_session_input_message_param.rb +51 -0
  49. data/lib/openai/models/beta/agent_session_input_param.rb +131 -0
  50. data/lib/openai/models/beta/agent_session_item.rb +186 -0
  51. data/lib/openai/models/beta/agent_session_message.rb +106 -0
  52. data/lib/openai/models/beta/agent_session_message_content.rb +97 -0
  53. data/lib/openai/models/beta/agent_session_requires_action_event.rb +39 -0
  54. data/lib/openai/models/beta/agent_session_subagent_active_event.rb +39 -0
  55. data/lib/openai/models/beta/agent_session_subagent_closed_event.rb +39 -0
  56. data/lib/openai/models/beta/agent_session_subagent_created_event.rb +39 -0
  57. data/lib/openai/models/beta/agent_session_turn_cancelled_event.rb +66 -0
  58. data/lib/openai/models/beta/agent_session_turn_completed_event.rb +66 -0
  59. data/lib/openai/models/beta/agent_session_turn_content_part_added_event.rb +84 -0
  60. data/lib/openai/models/beta/agent_session_turn_content_part_done_event.rb +84 -0
  61. data/lib/openai/models/beta/agent_session_turn_created_event.rb +57 -0
  62. data/lib/openai/models/beta/agent_session_turn_failed_event.rb +66 -0
  63. data/lib/openai/models/beta/agent_session_turn_in_progress_event.rb +57 -0
  64. data/lib/openai/models/beta/agent_session_turn_item_added_event.rb +66 -0
  65. data/lib/openai/models/beta/agent_session_turn_item_done_event.rb +66 -0
  66. data/lib/openai/models/beta/agent_session_turn_output_text_delta_event.rb +84 -0
  67. data/lib/openai/models/beta/agent_session_turn_output_text_done_event.rb +84 -0
  68. data/lib/openai/models/beta/agent_session_turn_reasoning_summary_part_added_event.rb +86 -0
  69. data/lib/openai/models/beta/agent_session_turn_reasoning_summary_part_done_event.rb +93 -0
  70. data/lib/openai/models/beta/agent_session_turn_reasoning_summary_text_delta_event.rb +86 -0
  71. data/lib/openai/models/beta/agent_session_turn_reasoning_summary_text_done_event.rb +84 -0
  72. data/lib/openai/models/beta/agent_text.rb +44 -0
  73. data/lib/openai/models/beta/agent_text_param.rb +49 -0
  74. data/lib/openai/models/beta/agent_tool.rb +314 -0
  75. data/lib/openai/models/beta/agent_tool_param.rb +359 -0
  76. data/lib/openai/models/beta/agent_update_params.rb +137 -0
  77. data/lib/openai/models/beta/agent_wait_for_subagents_call_item.rb +66 -0
  78. data/lib/openai/models/beta/agent_web_search_call_item.rb +57 -0
  79. data/lib/openai/models/beta/agents/environment_info.rb +107 -0
  80. data/lib/openai/models/beta/agents/environment_retrieve_params.rb +24 -0
  81. data/lib/openai/models/beta/agents/environments/environment_file.rb +55 -0
  82. data/lib/openai/models/beta/agents/environments/environment_template.rb +368 -0
  83. data/lib/openai/models/beta/agents/environments/environment_template_deleted.rb +46 -0
  84. data/lib/openai/models/beta/agents/environments/file_create_params.rb +26 -0
  85. data/lib/openai/models/beta/agents/environments/file_list_params.rb +77 -0
  86. data/lib/openai/models/beta/agents/environments/template_create_params.rb +209 -0
  87. data/lib/openai/models/beta/agents/environments/template_delete_params.rb +26 -0
  88. data/lib/openai/models/beta/agents/environments/template_list_params.rb +61 -0
  89. data/lib/openai/models/beta/agents/environments/template_retrieve_params.rb +26 -0
  90. data/lib/openai/models/beta/agents/environments/template_update_params.rb +212 -0
  91. data/lib/openai/models/beta/agents/session_create_params.rb +203 -0
  92. data/lib/openai/models/beta/agents/session_delete_params.rb +24 -0
  93. data/lib/openai/models/beta/agents/session_list_params.rb +73 -0
  94. data/lib/openai/models/beta/agents/session_retrieve_params.rb +24 -0
  95. data/lib/openai/models/beta/agents/session_update_params.rb +38 -0
  96. data/lib/openai/models/beta/agents/sessions/artifact_content_params.rb +32 -0
  97. data/lib/openai/models/beta/agents/sessions/artifact_delete_params.rb +32 -0
  98. data/lib/openai/models/beta/agents/sessions/artifact_list_params.rb +77 -0
  99. data/lib/openai/models/beta/agents/sessions/artifact_retrieve_params.rb +32 -0
  100. data/lib/openai/models/beta/agents/sessions/event_create_params.rb +43 -0
  101. data/lib/openai/models/beta/agents/sessions/event_stream_params.rb +26 -0
  102. data/lib/openai/models/beta/agents/sessions/item_list_params.rb +68 -0
  103. data/lib/openai/models/beta/agents/sessions/session_artifact.rb +91 -0
  104. data/lib/openai/models/beta/agents/sessions/session_artifact_deleted.rb +46 -0
  105. data/lib/openai/models/beta/agents/sessions/subagent_list_params.rb +68 -0
  106. data/lib/openai/models/beta/agents/sessions/subagent_retrieve_params.rb +32 -0
  107. data/lib/openai/models/beta/agents/sessions/subagents/item_list_params.rb +77 -0
  108. data/lib/openai/models/beta/agents/sessions/subagents/turn_list_params.rb +77 -0
  109. data/lib/openai/models/beta/agents/sessions/subagents/turn_retrieve_params.rb +40 -0
  110. data/lib/openai/models/beta/agents/sessions/subagents/turns/item_list_params.rb +86 -0
  111. data/lib/openai/models/beta/agents/sessions/turn.rb +148 -0
  112. data/lib/openai/models/beta/agents/sessions/turn_list_params.rb +68 -0
  113. data/lib/openai/models/beta/agents/sessions/turn_retrieve_params.rb +32 -0
  114. data/lib/openai/models/beta/agents/vault.rb +63 -0
  115. data/lib/openai/models/beta/agents/vault_create_params.rb +40 -0
  116. data/lib/openai/models/beta/agents/vault_delete_params.rb +24 -0
  117. data/lib/openai/models/beta/agents/vault_deleted.rb +42 -0
  118. data/lib/openai/models/beta/agents/vault_list_params.rb +75 -0
  119. data/lib/openai/models/beta/agents/vault_retrieve_params.rb +24 -0
  120. data/lib/openai/models/beta/agents/vault_status.rb +20 -0
  121. data/lib/openai/models/beta/agents/vault_status_filter.rb +27 -0
  122. data/lib/openai/models/beta/agents/vaults/credential.rb +80 -0
  123. data/lib/openai/models/beta/agents/vaults/credential_auth.rb +155 -0
  124. data/lib/openai/models/beta/agents/vaults/credential_auth_create_param.rb +184 -0
  125. data/lib/openai/models/beta/agents/vaults/credential_auth_rotate_param.rb +147 -0
  126. data/lib/openai/models/beta/agents/vaults/credential_create_params.rb +47 -0
  127. data/lib/openai/models/beta/agents/vaults/credential_delete_params.rb +32 -0
  128. data/lib/openai/models/beta/agents/vaults/credential_deleted.rb +44 -0
  129. data/lib/openai/models/beta/agents/vaults/credential_list_params.rb +84 -0
  130. data/lib/openai/models/beta/agents/vaults/credential_retrieve_params.rb +32 -0
  131. data/lib/openai/models/beta/agents/vaults/credential_update_params.rb +43 -0
  132. data/lib/openai/models/beta/agents/vaults/mcp_oauth_token_endpoint_auth.rb +78 -0
  133. data/lib/openai/models/beta/agents/vaults/mcp_oauth_token_endpoint_auth_create_param.rb +96 -0
  134. data/lib/openai/models/beta/agents/vaults/mcp_oauth_token_endpoint_auth_rotate_param.rb +84 -0
  135. data/lib/openai/models/beta/beta_response_input_item.rb +91 -1
  136. data/lib/openai/models/beta/beta_response_item.rb +93 -1
  137. data/lib/openai/models/beta/beta_response_output_item.rb +91 -1
  138. data/lib/openai/models/beta/environment.rb +246 -0
  139. data/lib/openai/models/beta/environment_param.rb +269 -0
  140. data/lib/openai/models/beta/hosted_environment_file.rb +64 -0
  141. data/lib/openai/models/beta/hosted_environment_file_id.rb +57 -0
  142. data/lib/openai/models/beta/hosted_environment_file_param.rb +87 -0
  143. data/lib/openai/models/beta/hosted_plugin.rb +39 -0
  144. data/lib/openai/models/beta/hosted_plugin_param.rb +48 -0
  145. data/lib/openai/models/beta/hosted_skill.rb +55 -0
  146. data/lib/openai/models/beta/hosted_skill_param.rb +96 -0
  147. data/lib/openai/models/beta/hosted_skill_reference.rb +57 -0
  148. data/lib/openai/models/beta/inline_capability_source_param.rb +39 -0
  149. data/lib/openai/models/beta/input_content.rb +71 -0
  150. data/lib/openai/models/beta/input_content_param.rb +69 -0
  151. data/lib/openai/models/beta/mcp_transport.rb +96 -0
  152. data/lib/openai/models/beta/mcp_transport_param.rb +123 -0
  153. data/lib/openai/models/beta/multi_agent_config.rb +32 -0
  154. data/lib/openai/models/beta/multi_agent_config_param.rb +30 -0
  155. data/lib/openai/models/beta/output_text.rb +30 -0
  156. data/lib/openai/models/beta/persisted_agent_tool.rb +329 -0
  157. data/lib/openai/models/beta/persisted_agent_tool_param.rb +355 -0
  158. data/lib/openai/models/beta/persisted_mcp_transport.rb +105 -0
  159. data/lib/openai/models/beta/persisted_mcp_transport_param.rb +105 -0
  160. data/lib/openai/models/beta/session_error.rb +48 -0
  161. data/lib/openai/models/beta/session_turn_error.rb +88 -0
  162. data/lib/openai/models/beta/setup_command_param.rb +30 -0
  163. data/lib/openai/models/beta/subagent.rb +121 -0
  164. data/lib/openai/models/beta/summary_text.rb +30 -0
  165. data/lib/openai/models/beta/text_format.rb +60 -0
  166. data/lib/openai/models/beta/text_format_param.rb +60 -0
  167. data/lib/openai/models/beta/token_usage.rb +87 -0
  168. data/lib/openai/models/beta/web_search_action.rb +130 -0
  169. data/lib/openai/models/chat/completion_create_params.rb +1 -1
  170. data/lib/openai/models/conversations/conversation_item.rb +91 -1
  171. data/lib/openai/models/live/audio_format.rb +109 -0
  172. data/lib/openai/models/live/built_in_voice.rb +38 -0
  173. data/lib/openai/models/live/client_config.rb +22 -0
  174. data/lib/openai/models/live/client_delegation.rb +22 -0
  175. data/lib/openai/models/live/client_event.rb +54 -0
  176. data/lib/openai/models/live/commentary_append_event.rb +59 -0
  177. data/lib/openai/models/live/commentary_appended_event.rb +65 -0
  178. data/lib/openai/models/live/custom_voice.rb +17 -0
  179. data/lib/openai/models/live/data_channel_config.rb +81 -0
  180. data/lib/openai/models/live/delegation_created_event.rb +140 -0
  181. data/lib/openai/models/live/error.rb +60 -0
  182. data/lib/openai/models/live/error_event.rb +52 -0
  183. data/lib/openai/models/live/fork_client_event.rb +53 -0
  184. data/lib/openai/models/live/fork_server_event.rb +295 -0
  185. data/lib/openai/models/live/fork_session_config.rb +107 -0
  186. data/lib/openai/models/live/fork_session_start_event.rb +48 -0
  187. data/lib/openai/models/live/function_tool.rb +60 -0
  188. data/lib/openai/models/live/info_event.rb +60 -0
  189. data/lib/openai/models/live/initial_item.rb +419 -0
  190. data/lib/openai/models/live/input_audio_append_event.rb +50 -0
  191. data/lib/openai/models/live/input_audio_mute_event.rb +33 -0
  192. data/lib/openai/models/live/input_audio_muted_event.rb +42 -0
  193. data/lib/openai/models/live/input_audio_unmute_event.rb +33 -0
  194. data/lib/openai/models/live/input_audio_unmuted_event.rb +42 -0
  195. data/lib/openai/models/live/input_transcript_delta_event.rb +76 -0
  196. data/lib/openai/models/live/instructions_append_event.rb +57 -0
  197. data/lib/openai/models/live/instructions_appended_event.rb +65 -0
  198. data/lib/openai/models/live/live_create_params.rb +57 -0
  199. data/lib/openai/models/live/live_create_response.rb +77 -0
  200. data/lib/openai/models/live/media_session_config.rb +227 -0
  201. data/lib/openai/models/live/media_session_fork_config.rb +75 -0
  202. data/lib/openai/models/live/output_audio_delta_event.rb +58 -0
  203. data/lib/openai/models/live/output_transcript_delta_event.rb +76 -0
  204. data/lib/openai/models/live/response_create_event.rb +33 -0
  205. data/lib/openai/models/live/response_event.rb +67 -0
  206. data/lib/openai/models/live/response_item_create_event.rb +44 -0
  207. data/lib/openai/models/live/responses_delegation_config.rb +332 -0
  208. data/lib/openai/models/live/responses_delegation_update_config.rb +332 -0
  209. data/lib/openai/models/live/server_event.rb +295 -0
  210. data/lib/openai/models/live/server_event_selector.rb +32 -0
  211. data/lib/openai/models/live/session_accept_params.rb +257 -0
  212. data/lib/openai/models/live/session_close_event.rb +33 -0
  213. data/lib/openai/models/live/session_closed_event.rb +113 -0
  214. data/lib/openai/models/live/session_config.rb +236 -0
  215. data/lib/openai/models/live/session_download_recording_params.rb +27 -0
  216. data/lib/openai/models/live/session_fork_params.rb +66 -0
  217. data/lib/openai/models/live/session_fork_response.rb +77 -0
  218. data/lib/openai/models/live/session_hangup_params.rb +22 -0
  219. data/lib/openai/models/live/session_refer_params.rb +34 -0
  220. data/lib/openai/models/live/session_reject_params.rb +32 -0
  221. data/lib/openai/models/live/session_resource.rb +268 -0
  222. data/lib/openai/models/live/session_start_event.rb +46 -0
  223. data/lib/openai/models/live/session_started_event.rb +51 -0
  224. data/lib/openai/models/live/session_update_config.rb +69 -0
  225. data/lib/openai/models/live/session_update_event.rb +46 -0
  226. data/lib/openai/models/live/session_updated_event.rb +51 -0
  227. data/lib/openai/models/live/session_usage.rb +24 -0
  228. data/lib/openai/models/live/session_usage_updated_event.rb +81 -0
  229. data/lib/openai/models/live/thinking_append_event.rb +59 -0
  230. data/lib/openai/models/live/thinking_appended_event.rb +65 -0
  231. data/lib/openai/models/responses/response_input_item.rb +91 -1
  232. data/lib/openai/models/responses/response_item.rb +93 -1
  233. data/lib/openai/models/responses/response_output_item.rb +91 -1
  234. data/lib/openai/models/webhooks/live_call_incoming_webhook_event.rb +12 -7
  235. data/lib/openai/models/webhooks/live_transport_incoming_webhook_event.rb +137 -0
  236. data/lib/openai/models/webhooks/realtime_call_incoming_webhook_event.rb +4 -4
  237. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +9 -2
  238. data/lib/openai/models.rb +2 -0
  239. data/lib/openai/resources/beta/agents/environments/files.rb +89 -0
  240. data/lib/openai/resources/beta/agents/environments/templates.rb +206 -0
  241. data/lib/openai/resources/beta/agents/environments.rb +50 -0
  242. data/lib/openai/resources/beta/agents/sessions/artifacts.rb +155 -0
  243. data/lib/openai/resources/beta/agents/sessions/events.rb +80 -0
  244. data/lib/openai/resources/beta/agents/sessions/items.rb +57 -0
  245. data/lib/openai/resources/beta/agents/sessions/subagents/items.rb +66 -0
  246. data/lib/openai/resources/beta/agents/sessions/subagents/turns/items.rb +82 -0
  247. data/lib/openai/resources/beta/agents/sessions/subagents/turns.rb +108 -0
  248. data/lib/openai/resources/beta/agents/sessions/subagents.rb +95 -0
  249. data/lib/openai/resources/beta/agents/sessions/turns.rb +89 -0
  250. data/lib/openai/resources/beta/agents/sessions.rb +294 -0
  251. data/lib/openai/resources/beta/agents/vaults/credentials.rb +195 -0
  252. data/lib/openai/resources/beta/agents/vaults.rb +137 -0
  253. data/lib/openai/resources/beta/agents.rb +213 -0
  254. data/lib/openai/resources/beta.rb +4 -0
  255. data/lib/openai/resources/live/forks.rb +16 -0
  256. data/lib/openai/resources/live/sessions.rb +186 -0
  257. data/lib/openai/resources/live/sideband.rb +16 -0
  258. data/lib/openai/resources/live.rb +54 -0
  259. data/lib/openai/resources/webhooks.rb +1 -1
  260. data/lib/openai/version.rb +1 -1
  261. data/lib/openai.rb +241 -0
  262. data/rbi/openai/client.rbi +3 -0
  263. data/rbi/openai/helpers/agents.rbi +71 -0
  264. data/rbi/openai/internal/token_page.rbi +25 -0
  265. data/rbi/openai/models/beta/agent.rbi +209 -0
  266. data/rbi/openai/models/beta/agent_close_subagent_call_item.rbi +102 -0
  267. data/rbi/openai/models/beta/agent_command_execution_item.rbi +132 -0
  268. data/rbi/openai/models/beta/agent_content.rbi +75 -0
  269. data/rbi/openai/models/beta/agent_create_params.rbi +212 -0
  270. data/rbi/openai/models/beta/agent_create_subagent_call_item.rbi +124 -0
  271. data/rbi/openai/models/beta/agent_delete_params.rbi +53 -0
  272. data/rbi/openai/models/beta/agent_deleted.rbi +68 -0
  273. data/rbi/openai/models/beta/agent_function_call_item.rbi +112 -0
  274. data/rbi/openai/models/beta/agent_function_call_output.rbi +33 -0
  275. data/rbi/openai/models/beta/agent_function_call_output_param.rbi +33 -0
  276. data/rbi/openai/models/beta/agent_function_call_status.rbi +35 -0
  277. data/rbi/openai/models/beta/agent_interrupt_subagent_call_item.rbi +103 -0
  278. data/rbi/openai/models/beta/agent_list_params.rbi +102 -0
  279. data/rbi/openai/models/beta/agent_mcp_call_item.rbi +132 -0
  280. data/rbi/openai/models/beta/agent_output_command_execution_output_delta_event.rbi +112 -0
  281. data/rbi/openai/models/beta/agent_output_item.rbi +38 -0
  282. data/rbi/openai/models/beta/agent_output_item_status.rbi +32 -0
  283. data/rbi/openai/models/beta/agent_reasoning.rbi +103 -0
  284. data/rbi/openai/models/beta/agent_reasoning_item.rbi +92 -0
  285. data/rbi/openai/models/beta/agent_reasoning_param.rbi +103 -0
  286. data/rbi/openai/models/beta/agent_resume_subagent_call_item.rbi +102 -0
  287. data/rbi/openai/models/beta/agent_retrieve_params.rbi +53 -0
  288. data/rbi/openai/models/beta/agent_send_subagent_input_call_item.rbi +114 -0
  289. data/rbi/openai/models/beta/agent_session.rbi +494 -0
  290. data/rbi/openai/models/beta/agent_session_assistant_message.rbi +130 -0
  291. data/rbi/openai/models/beta/agent_session_created_event.rbi +71 -0
  292. data/rbi/openai/models/beta/agent_session_deleted.rbi +71 -0
  293. data/rbi/openai/models/beta/agent_session_environment_connected_event.rbi +95 -0
  294. data/rbi/openai/models/beta/agent_session_environment_disconnected_event.rbi +95 -0
  295. data/rbi/openai/models/beta/agent_session_environment_failed_event.rbi +95 -0
  296. data/rbi/openai/models/beta/agent_session_environment_pending_event.rbi +95 -0
  297. data/rbi/openai/models/beta/agent_session_environment_ready_event.rbi +95 -0
  298. data/rbi/openai/models/beta/agent_session_environment_state.rbi +168 -0
  299. data/rbi/openai/models/beta/agent_session_error_event.rbi +80 -0
  300. data/rbi/openai/models/beta/agent_session_event.rbi +56 -0
  301. data/rbi/openai/models/beta/agent_session_failed_event.rbi +71 -0
  302. data/rbi/openai/models/beta/agent_session_idle_event.rbi +71 -0
  303. data/rbi/openai/models/beta/agent_session_in_progress_event.rbi +71 -0
  304. data/rbi/openai/models/beta/agent_session_input_message_param.rbi +100 -0
  305. data/rbi/openai/models/beta/agent_session_input_param.rbi +232 -0
  306. data/rbi/openai/models/beta/agent_session_item.rbi +239 -0
  307. data/rbi/openai/models/beta/agent_session_message.rbi +153 -0
  308. data/rbi/openai/models/beta/agent_session_message_content.rbi +172 -0
  309. data/rbi/openai/models/beta/agent_session_requires_action_event.rbi +71 -0
  310. data/rbi/openai/models/beta/agent_session_subagent_active_event.rbi +71 -0
  311. data/rbi/openai/models/beta/agent_session_subagent_closed_event.rbi +71 -0
  312. data/rbi/openai/models/beta/agent_session_subagent_created_event.rbi +71 -0
  313. data/rbi/openai/models/beta/agent_session_turn_cancelled_event.rbi +108 -0
  314. data/rbi/openai/models/beta/agent_session_turn_completed_event.rbi +108 -0
  315. data/rbi/openai/models/beta/agent_session_turn_content_part_added_event.rbi +125 -0
  316. data/rbi/openai/models/beta/agent_session_turn_content_part_done_event.rbi +125 -0
  317. data/rbi/openai/models/beta/agent_session_turn_created_event.rbi +95 -0
  318. data/rbi/openai/models/beta/agent_session_turn_failed_event.rbi +108 -0
  319. data/rbi/openai/models/beta/agent_session_turn_in_progress_event.rbi +95 -0
  320. data/rbi/openai/models/beta/agent_session_turn_item_added_event.rbi +117 -0
  321. data/rbi/openai/models/beta/agent_session_turn_item_done_event.rbi +115 -0
  322. data/rbi/openai/models/beta/agent_session_turn_output_text_delta_event.rbi +122 -0
  323. data/rbi/openai/models/beta/agent_session_turn_output_text_done_event.rbi +122 -0
  324. data/rbi/openai/models/beta/agent_session_turn_reasoning_summary_part_added_event.rbi +127 -0
  325. data/rbi/openai/models/beta/agent_session_turn_reasoning_summary_part_done_event.rbi +135 -0
  326. data/rbi/openai/models/beta/agent_session_turn_reasoning_summary_text_delta_event.rbi +124 -0
  327. data/rbi/openai/models/beta/agent_session_turn_reasoning_summary_text_done_event.rbi +122 -0
  328. data/rbi/openai/models/beta/agent_text.rbi +75 -0
  329. data/rbi/openai/models/beta/agent_text_param.rbi +87 -0
  330. data/rbi/openai/models/beta/agent_tool.rbi +467 -0
  331. data/rbi/openai/models/beta/agent_tool_param.rbi +530 -0
  332. data/rbi/openai/models/beta/agent_update_params.rbi +225 -0
  333. data/rbi/openai/models/beta/agent_wait_for_subagents_call_item.rbi +102 -0
  334. data/rbi/openai/models/beta/agent_web_search_call_item.rbi +99 -0
  335. data/rbi/openai/models/beta/agents/environment_info.rbi +156 -0
  336. data/rbi/openai/models/beta/agents/environment_retrieve_params.rbi +57 -0
  337. data/rbi/openai/models/beta/agents/environments/environment_file.rbi +87 -0
  338. data/rbi/openai/models/beta/agents/environments/environment_template.rbi +582 -0
  339. data/rbi/openai/models/beta/agents/environments/environment_template_deleted.rbi +78 -0
  340. data/rbi/openai/models/beta/agents/environments/file_create_params.rbi +61 -0
  341. data/rbi/openai/models/beta/agents/environments/file_list_params.rbi +130 -0
  342. data/rbi/openai/models/beta/agents/environments/template_create_params.rbi +350 -0
  343. data/rbi/openai/models/beta/agents/environments/template_delete_params.rbi +61 -0
  344. data/rbi/openai/models/beta/agents/environments/template_list_params.rbi +117 -0
  345. data/rbi/openai/models/beta/agents/environments/template_retrieve_params.rbi +61 -0
  346. data/rbi/openai/models/beta/agents/environments/template_update_params.rbi +354 -0
  347. data/rbi/openai/models/beta/agents/session_create_params.rbi +336 -0
  348. data/rbi/openai/models/beta/agents/session_delete_params.rbi +57 -0
  349. data/rbi/openai/models/beta/agents/session_list_params.rbi +124 -0
  350. data/rbi/openai/models/beta/agents/session_retrieve_params.rbi +57 -0
  351. data/rbi/openai/models/beta/agents/session_update_params.rbi +74 -0
  352. data/rbi/openai/models/beta/agents/sessions/artifact_content_params.rbi +68 -0
  353. data/rbi/openai/models/beta/agents/sessions/artifact_delete_params.rbi +68 -0
  354. data/rbi/openai/models/beta/agents/sessions/artifact_list_params.rbi +127 -0
  355. data/rbi/openai/models/beta/agents/sessions/artifact_retrieve_params.rbi +68 -0
  356. data/rbi/openai/models/beta/agents/sessions/event_create_params.rbi +107 -0
  357. data/rbi/openai/models/beta/agents/sessions/event_stream_params.rbi +61 -0
  358. data/rbi/openai/models/beta/agents/sessions/item_list_params.rbi +121 -0
  359. data/rbi/openai/models/beta/agents/sessions/session_artifact.rbi +132 -0
  360. data/rbi/openai/models/beta/agents/sessions/session_artifact_deleted.rbi +78 -0
  361. data/rbi/openai/models/beta/agents/sessions/subagent_list_params.rbi +123 -0
  362. data/rbi/openai/models/beta/agents/sessions/subagent_retrieve_params.rbi +68 -0
  363. data/rbi/openai/models/beta/agents/sessions/subagents/item_list_params.rbi +139 -0
  364. data/rbi/openai/models/beta/agents/sessions/subagents/turn_list_params.rbi +139 -0
  365. data/rbi/openai/models/beta/agents/sessions/subagents/turn_retrieve_params.rbi +79 -0
  366. data/rbi/openai/models/beta/agents/sessions/subagents/turns/item_list_params.rbi +161 -0
  367. data/rbi/openai/models/beta/agents/sessions/turn.rbi +200 -0
  368. data/rbi/openai/models/beta/agents/sessions/turn_list_params.rbi +121 -0
  369. data/rbi/openai/models/beta/agents/sessions/turn_retrieve_params.rbi +68 -0
  370. data/rbi/openai/models/beta/agents/vault.rbi +99 -0
  371. data/rbi/openai/models/beta/agents/vault_create_params.rbi +75 -0
  372. data/rbi/openai/models/beta/agents/vault_delete_params.rbi +57 -0
  373. data/rbi/openai/models/beta/agents/vault_deleted.rbi +72 -0
  374. data/rbi/openai/models/beta/agents/vault_list_params.rbi +149 -0
  375. data/rbi/openai/models/beta/agents/vault_retrieve_params.rbi +57 -0
  376. data/rbi/openai/models/beta/agents/vault_status.rbi +30 -0
  377. data/rbi/openai/models/beta/agents/vault_status_filter.rbi +39 -0
  378. data/rbi/openai/models/beta/agents/vaults/credential.rbi +123 -0
  379. data/rbi/openai/models/beta/agents/vaults/credential_auth.rbi +248 -0
  380. data/rbi/openai/models/beta/agents/vaults/credential_auth_create_param.rbi +293 -0
  381. data/rbi/openai/models/beta/agents/vaults/credential_auth_rotate_param.rbi +252 -0
  382. data/rbi/openai/models/beta/agents/vaults/credential_create_params.rbi +99 -0
  383. data/rbi/openai/models/beta/agents/vaults/credential_delete_params.rbi +68 -0
  384. data/rbi/openai/models/beta/agents/vaults/credential_deleted.rbi +76 -0
  385. data/rbi/openai/models/beta/agents/vaults/credential_list_params.rbi +163 -0
  386. data/rbi/openai/models/beta/agents/vaults/credential_retrieve_params.rbi +68 -0
  387. data/rbi/openai/models/beta/agents/vaults/credential_update_params.rbi +95 -0
  388. data/rbi/openai/models/beta/agents/vaults/mcp_oauth_token_endpoint_auth.rbi +151 -0
  389. data/rbi/openai/models/beta/agents/vaults/mcp_oauth_token_endpoint_auth_create_param.rbi +171 -0
  390. data/rbi/openai/models/beta/agents/vaults/mcp_oauth_token_endpoint_auth_rotate_param.rbi +137 -0
  391. data/rbi/openai/models/beta/beta_response_input_item.rbi +109 -0
  392. data/rbi/openai/models/beta/beta_response_item.rbi +105 -0
  393. data/rbi/openai/models/beta/beta_response_output_item.rbi +119 -0
  394. data/rbi/openai/models/beta/environment.rbi +400 -0
  395. data/rbi/openai/models/beta/environment_param.rbi +448 -0
  396. data/rbi/openai/models/beta/hosted_environment_file.rbi +93 -0
  397. data/rbi/openai/models/beta/hosted_environment_file_id.rbi +86 -0
  398. data/rbi/openai/models/beta/hosted_environment_file_param.rbi +140 -0
  399. data/rbi/openai/models/beta/hosted_plugin.rbi +68 -0
  400. data/rbi/openai/models/beta/hosted_plugin_param.rbi +80 -0
  401. data/rbi/openai/models/beta/hosted_skill.rbi +84 -0
  402. data/rbi/openai/models/beta/hosted_skill_param.rbi +152 -0
  403. data/rbi/openai/models/beta/hosted_skill_reference.rbi +86 -0
  404. data/rbi/openai/models/beta/inline_capability_source_param.rbi +68 -0
  405. data/rbi/openai/models/beta/input_content.rbi +124 -0
  406. data/rbi/openai/models/beta/input_content_param.rbi +122 -0
  407. data/rbi/openai/models/beta/mcp_transport.rbi +149 -0
  408. data/rbi/openai/models/beta/mcp_transport_param.rbi +188 -0
  409. data/rbi/openai/models/beta/multi_agent_config.rbi +61 -0
  410. data/rbi/openai/models/beta/multi_agent_config_param.rbi +62 -0
  411. data/rbi/openai/models/beta/output_text.rbi +59 -0
  412. data/rbi/openai/models/beta/persisted_agent_tool.rbi +507 -0
  413. data/rbi/openai/models/beta/persisted_agent_tool_param.rbi +546 -0
  414. data/rbi/openai/models/beta/persisted_mcp_transport.rbi +158 -0
  415. data/rbi/openai/models/beta/persisted_mcp_transport_param.rbi +164 -0
  416. data/rbi/openai/models/beta/session_error.rbi +77 -0
  417. data/rbi/openai/models/beta/session_turn_error.rbi +125 -0
  418. data/rbi/openai/models/beta/setup_command_param.rbi +59 -0
  419. data/rbi/openai/models/beta/subagent.rbi +158 -0
  420. data/rbi/openai/models/beta/summary_text.rbi +59 -0
  421. data/rbi/openai/models/beta/text_format.rbi +113 -0
  422. data/rbi/openai/models/beta/text_format_param.rbi +113 -0
  423. data/rbi/openai/models/beta/token_usage.rbi +174 -0
  424. data/rbi/openai/models/beta/web_search_action.rbi +227 -0
  425. data/rbi/openai/models/conversations/conversation_item.rbi +133 -0
  426. data/rbi/openai/models/live/audio_format.rbi +185 -0
  427. data/rbi/openai/models/live/built_in_voice.rbi +46 -0
  428. data/rbi/openai/models/live/client_config.rbi +54 -0
  429. data/rbi/openai/models/live/client_delegation.rbi +51 -0
  430. data/rbi/openai/models/live/client_event.rbi +41 -0
  431. data/rbi/openai/models/live/commentary_append_event.rbi +88 -0
  432. data/rbi/openai/models/live/commentary_appended_event.rbi +97 -0
  433. data/rbi/openai/models/live/custom_voice.rbi +46 -0
  434. data/rbi/openai/models/live/data_channel_config.rbi +119 -0
  435. data/rbi/openai/models/live/delegation_created_event.rbi +207 -0
  436. data/rbi/openai/models/live/error.rbi +95 -0
  437. data/rbi/openai/models/live/error_event.rbi +87 -0
  438. data/rbi/openai/models/live/fork_client_event.rbi +40 -0
  439. data/rbi/openai/models/live/fork_server_event.rbi +436 -0
  440. data/rbi/openai/models/live/fork_session_config.rbi +234 -0
  441. data/rbi/openai/models/live/fork_session_start_event.rbi +80 -0
  442. data/rbi/openai/models/live/function_tool.rbi +95 -0
  443. data/rbi/openai/models/live/info_event.rbi +92 -0
  444. data/rbi/openai/models/live/initial_item.rbi +661 -0
  445. data/rbi/openai/models/live/input_audio_append_event.rbi +79 -0
  446. data/rbi/openai/models/live/input_audio_mute_event.rbi +62 -0
  447. data/rbi/openai/models/live/input_audio_muted_event.rbi +74 -0
  448. data/rbi/openai/models/live/input_audio_unmute_event.rbi +62 -0
  449. data/rbi/openai/models/live/input_audio_unmuted_event.rbi +74 -0
  450. data/rbi/openai/models/live/input_transcript_delta_event.rbi +115 -0
  451. data/rbi/openai/models/live/instructions_append_event.rbi +86 -0
  452. data/rbi/openai/models/live/instructions_appended_event.rbi +97 -0
  453. data/rbi/openai/models/live/live_create_params.rbi +121 -0
  454. data/rbi/openai/models/live/live_create_response.rbi +160 -0
  455. data/rbi/openai/models/live/media_session_config.rbi +390 -0
  456. data/rbi/openai/models/live/media_session_fork_config.rbi +143 -0
  457. data/rbi/openai/models/live/output_audio_delta_event.rbi +93 -0
  458. data/rbi/openai/models/live/output_transcript_delta_event.rbi +115 -0
  459. data/rbi/openai/models/live/response_create_event.rbi +62 -0
  460. data/rbi/openai/models/live/response_event.rbi +105 -0
  461. data/rbi/openai/models/live/response_item_create_event.rbi +183 -0
  462. data/rbi/openai/models/live/responses_delegation_config.rbi +562 -0
  463. data/rbi/openai/models/live/responses_delegation_update_config.rbi +585 -0
  464. data/rbi/openai/models/live/server_event.rbi +436 -0
  465. data/rbi/openai/models/live/server_event_selector.rbi +64 -0
  466. data/rbi/openai/models/live/session_accept_params.rbi +451 -0
  467. data/rbi/openai/models/live/session_close_event.rbi +62 -0
  468. data/rbi/openai/models/live/session_closed_event.rbi +148 -0
  469. data/rbi/openai/models/live/session_config.rbi +427 -0
  470. data/rbi/openai/models/live/session_download_recording_params.rbi +57 -0
  471. data/rbi/openai/models/live/session_fork_params.rbi +131 -0
  472. data/rbi/openai/models/live/session_fork_response.rbi +160 -0
  473. data/rbi/openai/models/live/session_hangup_params.rbi +53 -0
  474. data/rbi/openai/models/live/session_refer_params.rbi +64 -0
  475. data/rbi/openai/models/live/session_reject_params.rbi +62 -0
  476. data/rbi/openai/models/live/session_resource.rbi +461 -0
  477. data/rbi/openai/models/live/session_start_event.rbi +78 -0
  478. data/rbi/openai/models/live/session_started_event.rbi +86 -0
  479. data/rbi/openai/models/live/session_update_config.rbi +134 -0
  480. data/rbi/openai/models/live/session_update_event.rbi +78 -0
  481. data/rbi/openai/models/live/session_updated_event.rbi +86 -0
  482. data/rbi/openai/models/live/session_usage.rbi +53 -0
  483. data/rbi/openai/models/live/session_usage_updated_event.rbi +148 -0
  484. data/rbi/openai/models/live/thinking_append_event.rbi +88 -0
  485. data/rbi/openai/models/live/thinking_appended_event.rbi +97 -0
  486. data/rbi/openai/models/responses/response_input_item.rbi +113 -0
  487. data/rbi/openai/models/responses/response_item.rbi +105 -0
  488. data/rbi/openai/models/responses/response_output_item.rbi +125 -0
  489. data/rbi/openai/models/webhooks/live_call_incoming_webhook_event.rbi +11 -7
  490. data/rbi/openai/models/webhooks/live_transport_incoming_webhook_event.rbi +226 -0
  491. data/rbi/openai/models/webhooks/realtime_call_incoming_webhook_event.rbi +4 -4
  492. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +1 -0
  493. data/rbi/openai/models.rbi +2 -0
  494. data/rbi/openai/resources/beta/agents/environments/files.rbi +79 -0
  495. data/rbi/openai/resources/beta/agents/environments/templates.rbi +194 -0
  496. data/rbi/openai/resources/beta/agents/environments.rbi +44 -0
  497. data/rbi/openai/resources/beta/agents/sessions/artifacts.rbi +105 -0
  498. data/rbi/openai/resources/beta/agents/sessions/events.rbi +71 -0
  499. data/rbi/openai/resources/beta/agents/sessions/items.rbi +53 -0
  500. data/rbi/openai/resources/beta/agents/sessions/subagents/items.rbi +60 -0
  501. data/rbi/openai/resources/beta/agents/sessions/subagents/turns/items.rbi +67 -0
  502. data/rbi/openai/resources/beta/agents/sessions/subagents/turns.rbi +85 -0
  503. data/rbi/openai/resources/beta/agents/sessions/subagents.rbi +74 -0
  504. data/rbi/openai/resources/beta/agents/sessions/turns.rbi +70 -0
  505. data/rbi/openai/resources/beta/agents/sessions.rbi +208 -0
  506. data/rbi/openai/resources/beta/agents/vaults/credentials.rbi +148 -0
  507. data/rbi/openai/resources/beta/agents/vaults.rbi +106 -0
  508. data/rbi/openai/resources/beta/agents.rbi +180 -0
  509. data/rbi/openai/resources/beta.rbi +3 -0
  510. data/rbi/openai/resources/live/forks.rbi +19 -0
  511. data/rbi/openai/resources/live/sessions.rbi +116 -0
  512. data/rbi/openai/resources/live/sideband.rbi +19 -0
  513. data/rbi/openai/resources/live.rbi +43 -0
  514. data/rbi/openai/resources/responses.rbi +83 -46
  515. data/rbi/openai/resources/webhooks.rbi +1 -0
  516. data/sig/openai/client.rbs +2 -0
  517. data/sig/openai/helpers/agents.rbs +50 -0
  518. data/sig/openai/internal/token_page.rbs +15 -0
  519. data/sig/openai/models/beta/agent.rbs +96 -0
  520. data/sig/openai/models/beta/agent_close_subagent_call_item.rbs +47 -0
  521. data/sig/openai/models/beta/agent_command_execution_item.rbs +62 -0
  522. data/sig/openai/models/beta/agent_content.rbs +33 -0
  523. data/sig/openai/models/beta/agent_create_params.rbs +91 -0
  524. data/sig/openai/models/beta/agent_create_subagent_call_item.rbs +57 -0
  525. data/sig/openai/models/beta/agent_delete_params.rbs +25 -0
  526. data/sig/openai/models/beta/agent_deleted.rbs +24 -0
  527. data/sig/openai/models/beta/agent_function_call_item.rbs +52 -0
  528. data/sig/openai/models/beta/agent_function_call_output.rbs +16 -0
  529. data/sig/openai/models/beta/agent_function_call_output_param.rbs +16 -0
  530. data/sig/openai/models/beta/agent_function_call_status.rbs +26 -0
  531. data/sig/openai/models/beta/agent_interrupt_subagent_call_item.rbs +47 -0
  532. data/sig/openai/models/beta/agent_list_params.rbs +58 -0
  533. data/sig/openai/models/beta/agent_mcp_call_item.rbs +62 -0
  534. data/sig/openai/models/beta/agent_output_command_execution_output_delta_event.rbs +52 -0
  535. data/sig/openai/models/beta/agent_output_item.rbs +25 -0
  536. data/sig/openai/models/beta/agent_output_item_status.rbs +22 -0
  537. data/sig/openai/models/beta/agent_reasoning.rbs +60 -0
  538. data/sig/openai/models/beta/agent_reasoning_item.rbs +42 -0
  539. data/sig/openai/models/beta/agent_reasoning_param.rbs +60 -0
  540. data/sig/openai/models/beta/agent_resume_subagent_call_item.rbs +47 -0
  541. data/sig/openai/models/beta/agent_retrieve_params.rbs +25 -0
  542. data/sig/openai/models/beta/agent_send_subagent_input_call_item.rbs +52 -0
  543. data/sig/openai/models/beta/agent_session.rbs +234 -0
  544. data/sig/openai/models/beta/agent_session_assistant_message.rbs +66 -0
  545. data/sig/openai/models/beta/agent_session_created_event.rbs +32 -0
  546. data/sig/openai/models/beta/agent_session_deleted.rbs +28 -0
  547. data/sig/openai/models/beta/agent_session_environment_connected_event.rbs +42 -0
  548. data/sig/openai/models/beta/agent_session_environment_disconnected_event.rbs +42 -0
  549. data/sig/openai/models/beta/agent_session_environment_failed_event.rbs +42 -0
  550. data/sig/openai/models/beta/agent_session_environment_pending_event.rbs +42 -0
  551. data/sig/openai/models/beta/agent_session_environment_ready_event.rbs +42 -0
  552. data/sig/openai/models/beta/agent_session_environment_state.rbs +74 -0
  553. data/sig/openai/models/beta/agent_session_error_event.rbs +37 -0
  554. data/sig/openai/models/beta/agent_session_event.rbs +43 -0
  555. data/sig/openai/models/beta/agent_session_failed_event.rbs +32 -0
  556. data/sig/openai/models/beta/agent_session_idle_event.rbs +32 -0
  557. data/sig/openai/models/beta/agent_session_in_progress_event.rbs +32 -0
  558. data/sig/openai/models/beta/agent_session_input_message_param.rbs +46 -0
  559. data/sig/openai/models/beta/agent_session_input_param.rbs +91 -0
  560. data/sig/openai/models/beta/agent_session_item.rbs +116 -0
  561. data/sig/openai/models/beta/agent_session_message.rbs +77 -0
  562. data/sig/openai/models/beta/agent_session_message_content.rbs +52 -0
  563. data/sig/openai/models/beta/agent_session_requires_action_event.rbs +32 -0
  564. data/sig/openai/models/beta/agent_session_subagent_active_event.rbs +32 -0
  565. data/sig/openai/models/beta/agent_session_subagent_closed_event.rbs +32 -0
  566. data/sig/openai/models/beta/agent_session_subagent_created_event.rbs +32 -0
  567. data/sig/openai/models/beta/agent_session_turn_cancelled_event.rbs +47 -0
  568. data/sig/openai/models/beta/agent_session_turn_completed_event.rbs +47 -0
  569. data/sig/openai/models/beta/agent_session_turn_content_part_added_event.rbs +57 -0
  570. data/sig/openai/models/beta/agent_session_turn_content_part_done_event.rbs +57 -0
  571. data/sig/openai/models/beta/agent_session_turn_created_event.rbs +42 -0
  572. data/sig/openai/models/beta/agent_session_turn_failed_event.rbs +47 -0
  573. data/sig/openai/models/beta/agent_session_turn_in_progress_event.rbs +42 -0
  574. data/sig/openai/models/beta/agent_session_turn_item_added_event.rbs +47 -0
  575. data/sig/openai/models/beta/agent_session_turn_item_done_event.rbs +47 -0
  576. data/sig/openai/models/beta/agent_session_turn_output_text_delta_event.rbs +57 -0
  577. data/sig/openai/models/beta/agent_session_turn_output_text_done_event.rbs +57 -0
  578. data/sig/openai/models/beta/agent_session_turn_reasoning_summary_part_added_event.rbs +57 -0
  579. data/sig/openai/models/beta/agent_session_turn_reasoning_summary_part_done_event.rbs +64 -0
  580. data/sig/openai/models/beta/agent_session_turn_reasoning_summary_text_delta_event.rbs +57 -0
  581. data/sig/openai/models/beta/agent_session_turn_reasoning_summary_text_done_event.rbs +57 -0
  582. data/sig/openai/models/beta/agent_text.rbs +39 -0
  583. data/sig/openai/models/beta/agent_text_param.rbs +44 -0
  584. data/sig/openai/models/beta/agent_tool.rbs +226 -0
  585. data/sig/openai/models/beta/agent_tool_param.rbs +251 -0
  586. data/sig/openai/models/beta/agent_update_params.rbs +98 -0
  587. data/sig/openai/models/beta/agent_wait_for_subagents_call_item.rbs +47 -0
  588. data/sig/openai/models/beta/agent_web_search_call_item.rbs +42 -0
  589. data/sig/openai/models/beta/agents/environment_info.rbs +80 -0
  590. data/sig/openai/models/beta/agents/environment_retrieve_params.rbs +27 -0
  591. data/sig/openai/models/beta/agents/environments/environment_file.rbs +43 -0
  592. data/sig/openai/models/beta/agents/environments/environment_template.rbs +255 -0
  593. data/sig/openai/models/beta/agents/environments/environment_template_deleted.rbs +38 -0
  594. data/sig/openai/models/beta/agents/environments/file_create_params.rbs +29 -0
  595. data/sig/openai/models/beta/agents/environments/file_list_params.rbs +72 -0
  596. data/sig/openai/models/beta/agents/environments/template_create_params.rbs +138 -0
  597. data/sig/openai/models/beta/agents/environments/template_delete_params.rbs +32 -0
  598. data/sig/openai/models/beta/agents/environments/template_list_params.rbs +64 -0
  599. data/sig/openai/models/beta/agents/environments/template_retrieve_params.rbs +32 -0
  600. data/sig/openai/models/beta/agents/environments/template_update_params.rbs +143 -0
  601. data/sig/openai/models/beta/agents/session_create_params.rbs +144 -0
  602. data/sig/openai/models/beta/agents/session_delete_params.rbs +27 -0
  603. data/sig/openai/models/beta/agents/session_list_params.rbs +67 -0
  604. data/sig/openai/models/beta/agents/session_retrieve_params.rbs +27 -0
  605. data/sig/openai/models/beta/agents/session_update_params.rbs +35 -0
  606. data/sig/openai/models/beta/agents/sessions/artifact_content_params.rbs +37 -0
  607. data/sig/openai/models/beta/agents/sessions/artifact_delete_params.rbs +37 -0
  608. data/sig/openai/models/beta/agents/sessions/artifact_list_params.rbs +70 -0
  609. data/sig/openai/models/beta/agents/sessions/artifact_retrieve_params.rbs +37 -0
  610. data/sig/openai/models/beta/agents/sessions/event_create_params.rbs +44 -0
  611. data/sig/openai/models/beta/agents/sessions/event_stream_params.rbs +29 -0
  612. data/sig/openai/models/beta/agents/sessions/item_list_params.rbs +69 -0
  613. data/sig/openai/models/beta/agents/sessions/session_artifact.rbs +63 -0
  614. data/sig/openai/models/beta/agents/sessions/session_artifact_deleted.rbs +38 -0
  615. data/sig/openai/models/beta/agents/sessions/subagent_list_params.rbs +69 -0
  616. data/sig/openai/models/beta/agents/sessions/subagent_retrieve_params.rbs +37 -0
  617. data/sig/openai/models/beta/agents/sessions/subagents/item_list_params.rbs +76 -0
  618. data/sig/openai/models/beta/agents/sessions/subagents/turn_list_params.rbs +76 -0
  619. data/sig/openai/models/beta/agents/sessions/subagents/turn_retrieve_params.rbs +44 -0
  620. data/sig/openai/models/beta/agents/sessions/subagents/turns/item_list_params.rbs +83 -0
  621. data/sig/openai/models/beta/agents/sessions/turn.rbs +108 -0
  622. data/sig/openai/models/beta/agents/sessions/turn_list_params.rbs +69 -0
  623. data/sig/openai/models/beta/agents/sessions/turn_retrieve_params.rbs +37 -0
  624. data/sig/openai/models/beta/agents/vault.rbs +44 -0
  625. data/sig/openai/models/beta/agents/vault_create_params.rbs +37 -0
  626. data/sig/openai/models/beta/agents/vault_delete_params.rbs +27 -0
  627. data/sig/openai/models/beta/agents/vault_deleted.rbs +30 -0
  628. data/sig/openai/models/beta/agents/vault_list_params.rbs +69 -0
  629. data/sig/openai/models/beta/agents/vault_retrieve_params.rbs +27 -0
  630. data/sig/openai/models/beta/agents/vault_status.rbs +18 -0
  631. data/sig/openai/models/beta/agents/vault_status_filter.rbs +19 -0
  632. data/sig/openai/models/beta/agents/vaults/credential.rbs +56 -0
  633. data/sig/openai/models/beta/agents/vaults/credential_auth.rbs +104 -0
  634. data/sig/openai/models/beta/agents/vaults/credential_auth_create_param.rbs +121 -0
  635. data/sig/openai/models/beta/agents/vaults/credential_auth_rotate_param.rbs +90 -0
  636. data/sig/openai/models/beta/agents/vaults/credential_create_params.rbs +42 -0
  637. data/sig/openai/models/beta/agents/vaults/credential_delete_params.rbs +37 -0
  638. data/sig/openai/models/beta/agents/vaults/credential_deleted.rbs +32 -0
  639. data/sig/openai/models/beta/agents/vaults/credential_list_params.rbs +76 -0
  640. data/sig/openai/models/beta/agents/vaults/credential_retrieve_params.rbs +37 -0
  641. data/sig/openai/models/beta/agents/vaults/credential_update_params.rbs +42 -0
  642. data/sig/openai/models/beta/agents/vaults/mcp_oauth_token_endpoint_auth.rbs +50 -0
  643. data/sig/openai/models/beta/agents/vaults/mcp_oauth_token_endpoint_auth_create_param.rbs +68 -0
  644. data/sig/openai/models/beta/agents/vaults/mcp_oauth_token_endpoint_auth_rotate_param.rbs +57 -0
  645. data/sig/openai/models/beta/beta_response_input_item.rbs +56 -0
  646. data/sig/openai/models/beta/beta_response_item.rbs +56 -0
  647. data/sig/openai/models/beta/beta_response_output_item.rbs +56 -0
  648. data/sig/openai/models/beta/environment.rbs +181 -0
  649. data/sig/openai/models/beta/environment_param.rbs +183 -0
  650. data/sig/openai/models/beta/hosted_environment_file.rbs +42 -0
  651. data/sig/openai/models/beta/hosted_environment_file_id.rbs +42 -0
  652. data/sig/openai/models/beta/hosted_environment_file_param.rbs +47 -0
  653. data/sig/openai/models/beta/hosted_plugin.rbs +23 -0
  654. data/sig/openai/models/beta/hosted_plugin_param.rbs +37 -0
  655. data/sig/openai/models/beta/hosted_skill.rbs +32 -0
  656. data/sig/openai/models/beta/hosted_skill_param.rbs +70 -0
  657. data/sig/openai/models/beta/hosted_skill_reference.rbs +42 -0
  658. data/sig/openai/models/beta/inline_capability_source_param.rbs +28 -0
  659. data/sig/openai/models/beta/input_content.rbs +39 -0
  660. data/sig/openai/models/beta/input_content_param.rbs +39 -0
  661. data/sig/openai/models/beta/mcp_transport.rbs +63 -0
  662. data/sig/openai/models/beta/mcp_transport_param.rbs +89 -0
  663. data/sig/openai/models/beta/multi_agent_config.rbs +21 -0
  664. data/sig/openai/models/beta/multi_agent_config_param.rbs +23 -0
  665. data/sig/openai/models/beta/output_text.rbs +17 -0
  666. data/sig/openai/models/beta/persisted_agent_tool.rbs +237 -0
  667. data/sig/openai/models/beta/persisted_agent_tool_param.rbs +251 -0
  668. data/sig/openai/models/beta/persisted_mcp_transport.rbs +75 -0
  669. data/sig/openai/models/beta/persisted_mcp_transport_param.rbs +79 -0
  670. data/sig/openai/models/beta/session_error.rbs +32 -0
  671. data/sig/openai/models/beta/session_turn_error.rbs +96 -0
  672. data/sig/openai/models/beta/setup_command_param.rbs +17 -0
  673. data/sig/openai/models/beta/subagent.rbs +76 -0
  674. data/sig/openai/models/beta/summary_text.rbs +17 -0
  675. data/sig/openai/models/beta/text_format.rbs +39 -0
  676. data/sig/openai/models/beta/text_format_param.rbs +40 -0
  677. data/sig/openai/models/beta/token_usage.rbs +62 -0
  678. data/sig/openai/models/beta/web_search_action.rbs +85 -0
  679. data/sig/openai/models/conversations/conversation_item.rbs +56 -0
  680. data/sig/openai/models/live/audio_format.rbs +73 -0
  681. data/sig/openai/models/live/built_in_voice.rbs +58 -0
  682. data/sig/openai/models/live/client_config.rbs +15 -0
  683. data/sig/openai/models/live/client_delegation.rbs +15 -0
  684. data/sig/openai/models/live/client_event.rbs +24 -0
  685. data/sig/openai/models/live/commentary_append_event.rbs +37 -0
  686. data/sig/openai/models/live/commentary_appended_event.rbs +44 -0
  687. data/sig/openai/models/live/custom_voice.rbs +15 -0
  688. data/sig/openai/models/live/data_channel_config.rbs +56 -0
  689. data/sig/openai/models/live/delegation_created_event.rbs +89 -0
  690. data/sig/openai/models/live/error.rbs +46 -0
  691. data/sig/openai/models/live/error_event.rbs +39 -0
  692. data/sig/openai/models/live/fork_client_event.rbs +24 -0
  693. data/sig/openai/models/live/fork_server_event.rbs +212 -0
  694. data/sig/openai/models/live/fork_session_config.rbs +89 -0
  695. data/sig/openai/models/live/fork_session_start_event.rbs +32 -0
  696. data/sig/openai/models/live/function_tool.rbs +42 -0
  697. data/sig/openai/models/live/info_event.rbs +44 -0
  698. data/sig/openai/models/live/initial_item.rbs +332 -0
  699. data/sig/openai/models/live/input_audio_append_event.rbs +32 -0
  700. data/sig/openai/models/live/input_audio_mute_event.rbs +24 -0
  701. data/sig/openai/models/live/input_audio_muted_event.rbs +34 -0
  702. data/sig/openai/models/live/input_audio_unmute_event.rbs +24 -0
  703. data/sig/openai/models/live/input_audio_unmuted_event.rbs +34 -0
  704. data/sig/openai/models/live/input_transcript_delta_event.rbs +49 -0
  705. data/sig/openai/models/live/instructions_append_event.rbs +37 -0
  706. data/sig/openai/models/live/instructions_appended_event.rbs +44 -0
  707. data/sig/openai/models/live/live_create_params.rbs +45 -0
  708. data/sig/openai/models/live/live_create_response.rbs +49 -0
  709. data/sig/openai/models/live/media_session_config.rbs +157 -0
  710. data/sig/openai/models/live/media_session_fork_config.rbs +66 -0
  711. data/sig/openai/models/live/output_audio_delta_event.rbs +41 -0
  712. data/sig/openai/models/live/output_transcript_delta_event.rbs +49 -0
  713. data/sig/openai/models/live/response_create_event.rbs +18 -0
  714. data/sig/openai/models/live/response_event.rbs +44 -0
  715. data/sig/openai/models/live/response_item_create_event.rbs +32 -0
  716. data/sig/openai/models/live/responses_delegation_config.rbs +244 -0
  717. data/sig/openai/models/live/responses_delegation_update_config.rbs +246 -0
  718. data/sig/openai/models/live/server_event.rbs +212 -0
  719. data/sig/openai/models/live/server_event_selector.rbs +19 -0
  720. data/sig/openai/models/live/session_accept_params.rbs +185 -0
  721. data/sig/openai/models/live/session_close_event.rbs +17 -0
  722. data/sig/openai/models/live/session_closed_event.rbs +68 -0
  723. data/sig/openai/models/live/session_config.rbs +168 -0
  724. data/sig/openai/models/live/session_download_recording_params.rbs +25 -0
  725. data/sig/openai/models/live/session_fork_params.rbs +54 -0
  726. data/sig/openai/models/live/session_fork_response.rbs +49 -0
  727. data/sig/openai/models/live/session_hangup_params.rbs +25 -0
  728. data/sig/openai/models/live/session_refer_params.rbs +33 -0
  729. data/sig/openai/models/live/session_reject_params.rbs +33 -0
  730. data/sig/openai/models/live/session_resource.rbs +183 -0
  731. data/sig/openai/models/live/session_start_event.rbs +32 -0
  732. data/sig/openai/models/live/session_started_event.rbs +39 -0
  733. data/sig/openai/models/live/session_update_config.rbs +56 -0
  734. data/sig/openai/models/live/session_update_event.rbs +32 -0
  735. data/sig/openai/models/live/session_updated_event.rbs +39 -0
  736. data/sig/openai/models/live/session_usage.rbs +15 -0
  737. data/sig/openai/models/live/session_usage_updated_event.rbs +58 -0
  738. data/sig/openai/models/live/thinking_append_event.rbs +37 -0
  739. data/sig/openai/models/live/thinking_appended_event.rbs +44 -0
  740. data/sig/openai/models/responses/response_input_item.rbs +56 -0
  741. data/sig/openai/models/responses/response_item.rbs +56 -0
  742. data/sig/openai/models/responses/response_output_item.rbs +56 -0
  743. data/sig/openai/models/webhooks/live_transport_incoming_webhook_event.rbs +95 -0
  744. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +1 -0
  745. data/sig/openai/models.rbs +2 -0
  746. data/sig/openai/resources/beta/agents/environments/files.rbs +28 -0
  747. data/sig/openai/resources/beta/agents/environments/templates.rbs +57 -0
  748. data/sig/openai/resources/beta/agents/environments.rbs +20 -0
  749. data/sig/openai/resources/beta/agents/sessions/artifacts.rbs +40 -0
  750. data/sig/openai/resources/beta/agents/sessions/events.rbs +25 -0
  751. data/sig/openai/resources/beta/agents/sessions/items.rbs +21 -0
  752. data/sig/openai/resources/beta/agents/sessions/subagents/items.rbs +24 -0
  753. data/sig/openai/resources/beta/agents/sessions/subagents/turns/items.rbs +27 -0
  754. data/sig/openai/resources/beta/agents/sessions/subagents/turns.rbs +33 -0
  755. data/sig/openai/resources/beta/agents/sessions/subagents.rbs +31 -0
  756. data/sig/openai/resources/beta/agents/sessions/turns.rbs +27 -0
  757. data/sig/openai/resources/beta/agents/sessions.rbs +65 -0
  758. data/sig/openai/resources/beta/agents/vaults/credentials.rbs +48 -0
  759. data/sig/openai/resources/beta/agents/vaults.rbs +37 -0
  760. data/sig/openai/resources/beta/agents.rbs +59 -0
  761. data/sig/openai/resources/beta.rbs +2 -0
  762. data/sig/openai/resources/live/forks.rbs +9 -0
  763. data/sig/openai/resources/live/sessions.rbs +44 -0
  764. data/sig/openai/resources/live/sideband.rbs +9 -0
  765. data/sig/openai/resources/live.rbs +19 -0
  766. data/sig/openai/resources/webhooks.rbs +1 -0
  767. metadata +720 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e3037cf7080b7ad4d7e5b5557a78085361e98d8e6ebb6a8a1533b52503c49afc
4
- data.tar.gz: f721107d3824baebd4468eff198b56edd917f069872594cf7c0d9b5c1a3068a4
3
+ metadata.gz: ed1195dfde86772df82a57968852233c3a37680a78766331eda4daca5961a74c
4
+ data.tar.gz: be58d94437e2b61b07576d3dac3769897ac72dffdfffbe6895e2fe0b13fcd345
5
5
  SHA512:
6
- metadata.gz: d16655ac3eaca44f64def8854020c42d4accb637dd9675225f08cc39fd92f1b201bbeed637ee9c122b893788f75ac0f8ff861e6c0ece50946ae0b44458cabe62
7
- data.tar.gz: eb1c6cf77fd1b47872fbc15acc25a39425cf7205479388c63696ca7e73b4902058ca848b27e0fad918e58a35579d1bd5dec265847824e807364eb6d68e43a0fd
6
+ metadata.gz: 3b363e344db928b8523e320c1f623a6d6f479c62806031eb362eff88ac3322760e794ad0993e19a5bc65fdc95d7f5bc97d9ff4592e8a8b1b19edac07f1a1e03f
7
+ data.tar.gz: 9544d48b551ba4e9928025e0bec07c57fa35b5ce3c8f2afb7f1fad7d1700cb40576ff896bc65c05b90cd55ac2fd2edb491cd42d24d119bf07326bb85d2913b1f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.90.0](https://github.com/openai/openai-ruby/compare/v0.89.0...v0.90.0) (2026-09-10)
4
+
5
+
6
+ ### Features
7
+
8
+ * **api:** add Agents API ([#695](https://github.com/openai/openai-ruby/issues/695)) ([24324ed](https://github.com/openai/openai-ruby/commit/24324ed510a198d2f955668a231a63c46cf491c1))
9
+
10
+ ## [0.89.0](https://github.com/openai/openai-ruby/compare/v0.88.0...v0.89.0) (2026-09-10)
11
+
12
+
13
+ ### Features
14
+
15
+ * **api:** Add Live API ([3fde020](https://github.com/openai/openai-ruby/commit/3fde0201bc4f75af36a87acb3d71c8136c0df9c0))
16
+
17
+
18
+ ### Chores
19
+
20
+ * **deps:** bump the codeql group with 2 updates ([#692](https://github.com/openai/openai-ruby/issues/692)) ([7f19b93](https://github.com/openai/openai-ruby/commit/7f19b932549bd7d4376e6ca91c7c75f9b856ae83))
21
+
3
22
  ## [0.88.0](https://github.com/openai/openai-ruby/compare/v0.87.0...v0.88.0) (2026-09-09)
4
23
 
5
24
 
data/README.md CHANGED
@@ -15,7 +15,7 @@ To use this gem, install via Bundler by adding the following to your application
15
15
  <!-- x-release-please-start-version -->
16
16
 
17
17
  ```ruby
18
- gem "openai", "~> 0.88.0"
18
+ gem "openai", "~> 0.90.0"
19
19
  ```
20
20
 
21
21
  <!-- x-release-please-end -->
data/lib/openai/client.rb CHANGED
@@ -109,6 +109,9 @@ module OpenAI
109
109
  # @return [OpenAI::Resources::Responses]
110
110
  attr_reader :responses
111
111
 
112
+ # @return [OpenAI::Resources::Live]
113
+ attr_reader :live
114
+
112
115
  # @return [OpenAI::Resources::Realtime]
113
116
  attr_reader :realtime
114
117
 
@@ -818,6 +821,7 @@ module OpenAI
818
821
  @uploads = OpenAI::Resources::Uploads.new(client: self)
819
822
  @admin = OpenAI::Resources::Admin.new(client: self)
820
823
  @responses = OpenAI::Resources::Responses.new(client: self)
824
+ @live = OpenAI::Resources::Live.new(client: self)
821
825
  @realtime = OpenAI::Resources::Realtime.new(client: self)
822
826
  @conversations = OpenAI::Resources::Conversations.new(client: self)
823
827
  @evals = OpenAI::Resources::Evals.new(client: self)
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Beta
6
+ class AgentSessionMessage
7
+ # Concatenate output-text blocks in message order, without fetching or
8
+ # filtering by phase. Reading this method does not change serialization.
9
+ # @return [String]
10
+ def output_text
11
+ content
12
+ .filter_map do |part|
13
+ (part[:text] || part["text"]) if (part[:type] || part["type"]).to_s == "output_text"
14
+ end
15
+ .join
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,168 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "tools"
4
+
5
+ module OpenAI
6
+ module Helpers
7
+ module Agents
8
+ # Stream one turn on an idle session. The caller must be its only input writer
9
+ # until iteration ends, because input submission does not return a turn ID.
10
+ # Use a block or ensure #close when abandoning external iteration.
11
+ # Closing the connection does not cancel the backend turn.
12
+ class SessionStream
13
+ include Enumerable
14
+
15
+ # @api private
16
+ def initialize(sessions:, session_id:, input:, tool_handlers: {}, idempotency_key: nil, request_options: {})
17
+ messages = input.is_a?(String) ? [{role: :user, content: [{type: :input_text, text: input}]}] : input.to_a
18
+ raise ArgumentError, "input must not be empty" if input == "" || messages.empty?
19
+
20
+ @sessions = sessions
21
+ @session_id = session_id
22
+ @handlers = tool_handlers.to_h.dup
23
+ @options = request_options.to_h.dup
24
+ headers = {"OpenAI-Beta" => "agents=v1"}.merge(@options[:extra_headers].to_h)
25
+ options_key = @options.delete(:idempotency_key)
26
+ input_key = idempotency_key || options_key || SecureRandom.uuid
27
+ headers.delete_if do |key, value|
28
+ match = key.to_s.casecmp?("idempotency-key")
29
+ input_key = value if match
30
+ match
31
+ end
32
+
33
+ @options[:extra_headers] = headers
34
+ @recent_events = {}
35
+ @handled_calls = {}
36
+ @closed = false
37
+ session = @sessions.retrieve(@session_id, request_options: @options)
38
+ unless session.status == :idle
39
+ raise(
40
+ ArgumentError,
41
+ "sessions.stream requires an idle session; use sessions.events.stream_streaming to follow an active session"
42
+ )
43
+ end
44
+
45
+ @raw_stream = @sessions.events.stream_streaming(@session_id, request_options: @options)
46
+ begin
47
+ @sessions.events.create(
48
+ @session_id,
49
+ events: [{type: :"agent.session.input.message", input: messages}],
50
+ idempotency_key: input_key,
51
+ request_options: @options
52
+ )
53
+ @iterator = iterator
54
+ submitted = true
55
+ ensure
56
+ close unless submitted
57
+ end
58
+ end
59
+
60
+ # Yields the original typed events. Registered handlers run sequentially after
61
+ # their function-call event is yielded; unknown tools remain caller-managed.
62
+ # @yieldparam event [OpenAI::Models::Beta::AgentSessionEvent]
63
+ # @return [Enumerator, self]
64
+ def each
65
+ return enum_for(:each) unless block_given?
66
+ return self if @closed
67
+ begin
68
+ loop do
69
+ break if @closed
70
+ yield @iterator.next
71
+ end
72
+
73
+ ensure
74
+ close
75
+ end
76
+
77
+ self
78
+ end
79
+
80
+ # Consume remaining events and registered tool calls.
81
+ # @return [self]
82
+ def until_done
83
+ each { |_event| nil }
84
+ self
85
+ end
86
+
87
+ # Close the event connection without cancelling the backend turn.
88
+ # @return [void]
89
+ def close
90
+ return if @closed
91
+
92
+ @closed = true
93
+ @raw_stream&.close
94
+ end
95
+
96
+ private
97
+
98
+ def iterator
99
+ Enumerator.new do |yielder|
100
+ begin
101
+ @raw_stream.each do |event|
102
+ next unless accept?(event)
103
+
104
+ terminal = event.type == :"agent.session.failed" ||
105
+ (event.type == :"agent.session.idle" && @turn_ended)
106
+ invocation = prepare_call(event) unless terminal
107
+ close if terminal
108
+ yielder << event
109
+ break if terminal || @closed
110
+
111
+ dispatch(invocation.call) if invocation
112
+ end
113
+
114
+ raise RuntimeError, "Session event stream ended before the turn reached idle or failed" unless @closed
115
+ ensure
116
+ close
117
+ end
118
+ end
119
+ end
120
+
121
+ def accept?(event)
122
+ return false if @recent_events.key?(event.event_id)
123
+
124
+ @recent_events.shift if @recent_events.size == 1024
125
+ @recent_events[event.event_id] = true
126
+ case event.type
127
+ when :"agent.session.turn.created"
128
+ @turn_id ||= event.turn_id.dup if event.turn.subagent_id.nil?
129
+ when :"agent.session.turn.completed", :"agent.session.turn.failed", :"agent.session.turn.cancelled"
130
+ @turn_ended = true if @turn_id && event.turn_id == @turn_id
131
+ end
132
+
133
+ true
134
+ end
135
+
136
+ def prepare_call(event)
137
+ return unless event.type == :"agent.session.turn.item.added" && event.item.type == :function_call
138
+
139
+ call = event.item
140
+ key = [call.turn_id.dup, call.call_id.dup]
141
+ return if @handled_calls.key?(key)
142
+
143
+ @handled_calls[key] = true
144
+ handler = @handlers[call.name]
145
+ return unless handler
146
+
147
+ Tools.prepare(call, handler)
148
+ end
149
+
150
+ def dispatch(result)
151
+ idempotency_key = SecureRandom.uuid
152
+ delays = [0.1, 0.3, 0.6]
153
+ begin
154
+ @sessions
155
+ .events
156
+ .create(@session_id, events: [result], idempotency_key: idempotency_key, request_options: @options)
157
+ rescue OpenAI::Errors::BadRequestError => error
158
+ delay = delays.shift
159
+ raise unless delay && Tools.pending_call_race?(error, result[:call_id])
160
+
161
+ sleep(delay)
162
+ retry
163
+ end
164
+ end
165
+ end
166
+ end
167
+ end
168
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Helpers
5
+ module Agents
6
+ # @api private
7
+ module Tools
8
+ # Capture routing and detached arguments before caller code sees the event,
9
+ # but defer the application callback until iteration resumes after yielding it.
10
+ def self.prepare(call, handler)
11
+ base = {type: :"agent.session.input.tool_result", turn_id: call.turn_id.dup, call_id: call.call_id.dup}
12
+ arguments = begin
13
+ JSON.parse(call.arguments.is_a?(String) ? call.arguments : JSON.generate(call.arguments))
14
+ rescue StandardError
15
+ nil
16
+ end
17
+
18
+ lambda do
19
+ begin
20
+ raise ArgumentError, "Function arguments must be a JSON object" unless arguments.is_a?(Hash)
21
+
22
+ output = handler.call(arguments)
23
+ output = JSON.generate(output) if output.is_a?(Hash)
24
+ unless output.nil? || output.is_a?(String) || output.is_a?(Array)
25
+ raise ArgumentError, "Tool output must be a string, object, content array, or nil"
26
+ end
27
+
28
+ serialized = JSON.generate(output)
29
+ if output.is_a?(Array) && !content_output?(JSON.parse(serialized))
30
+ raise ArgumentError, "Tool output array must contain input text or image content"
31
+ end
32
+
33
+ base.merge(success: true, output: output)
34
+ rescue StandardError
35
+ base.merge(success: false, error: "Tool handler failed.")
36
+ end
37
+ end
38
+ end
39
+
40
+ def self.content_output?(parts)
41
+ parts.all? do |part|
42
+ next false unless part.is_a?(Hash)
43
+
44
+ case part["type"]
45
+ when "input_text"
46
+ part["text"].is_a?(String)
47
+ when "input_image"
48
+ part["image_url"].is_a?(String)
49
+ else
50
+ false
51
+ end
52
+ end
53
+ end
54
+
55
+ def self.pending_call_race?(error, call_id)
56
+ body = error.body
57
+ body = body[:error] if body.is_a?(Hash) && body[:error].is_a?(Hash)
58
+ body.is_a?(Hash) &&
59
+ body[:code] == "invalid_request_error" &&
60
+ body[:message] == "Unknown pending tool call: #{call_id}"
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Internal
5
+ # @generic Elem
6
+ #
7
+ # @example
8
+ # if token_page.next_page?
9
+ # token_page = token_page.next_page
10
+ # end
11
+ #
12
+ # @example
13
+ # token_page.auto_paging_each do |role|
14
+ # puts(role)
15
+ # end
16
+ class TokenPage
17
+ include OpenAI::Internal::Type::BasePage
18
+
19
+ # @return [Array<generic<Elem>>, nil]
20
+ attr_accessor :data
21
+
22
+ # @return [Boolean]
23
+ attr_accessor :has_more
24
+
25
+ # @return [String, nil]
26
+ attr_accessor :next_
27
+
28
+ # @return [Boolean]
29
+ def next_page?
30
+ has_more
31
+ end
32
+
33
+ # @raise [OpenAI::HTTP::Error]
34
+ # @return [self]
35
+ def next_page
36
+ unless next_page?
37
+ message = "No more pages available. Please check #next_page? before calling ##{__method__}"
38
+ raise message
39
+ end
40
+
41
+ req = OpenAI::Internal::Util.deep_merge(@req, {query: {page: next_}})
42
+ @client.request(req)
43
+ end
44
+
45
+ # @param blk [Proc]
46
+ #
47
+ # @yieldparam [generic<Elem>]
48
+ def auto_paging_each(&blk)
49
+ unless block_given?
50
+ raise ArgumentError.new("A block must be given to ##{__method__}")
51
+ end
52
+
53
+ page = self
54
+ loop do
55
+ page.data&.each(&blk)
56
+
57
+ break unless page.next_page?
58
+ page = page.next_page
59
+ end
60
+ end
61
+
62
+ # @api private
63
+ #
64
+ # @param client [OpenAI::Internal::Transport::BaseClient]
65
+ # @param req [Hash{Symbol=>Object}]
66
+ # @param response_metadata [OpenAI::ResponseMetadata]
67
+ # @param page_data [Hash{Symbol=>Object}]
68
+ def initialize(client:, req:, response_metadata:, page_data:)
69
+ super
70
+
71
+ case page_data
72
+ in {data: Array => data}
73
+ @data = data.map { OpenAI::Internal::Type::Converter.coerce(@model, _1) }
74
+ else
75
+ end
76
+
77
+ @has_more = page_data[:has_more]
78
+ @next_ = page_data[:next]
79
+ end
80
+
81
+ # @api private
82
+ #
83
+ # @return [String]
84
+ def inspect
85
+ model = OpenAI::Internal::Type::Converter.inspect(@model, depth: 1)
86
+
87
+ "#<#{self.class}[#{model}]:0x#{object_id.to_s(16)} has_more=#{has_more.inspect} next_=#{next_.inspect}>"
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,148 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Beta
6
+ # @see OpenAI::Resources::Beta::Agents#create
7
+ class Agent < OpenAI::Internal::Type::BaseModel
8
+ # @!attribute id
9
+ # The ID of the reusable agent.
10
+ #
11
+ # @return [String]
12
+ required :id, String
13
+
14
+ # @!attribute created_at
15
+ # The Unix timestamp, in seconds, when the agent was created.
16
+ #
17
+ # @return [Integer]
18
+ required :created_at, Integer
19
+
20
+ # @!attribute instructions
21
+ # Custom instructions appended to the agent's default base instructions.
22
+ #
23
+ # @return [String, nil]
24
+ required :instructions, String, nil?: true
25
+
26
+ # @!attribute metadata
27
+ # Custom string key-value pairs attached to the agent.
28
+ #
29
+ # @return [Hash{Symbol=>String}]
30
+ required :metadata, OpenAI::Internal::Type::HashOf[String]
31
+
32
+ # @!attribute model
33
+ # The requested model name used for inference.
34
+ #
35
+ # @return [String]
36
+ required :model, String
37
+
38
+ # @!attribute multi_agent
39
+ # The resolved configuration for creating and coordinating subagents.
40
+ #
41
+ # @return [OpenAI::Models::Beta::MultiAgentConfig]
42
+ required :multi_agent, -> { OpenAI::Beta::MultiAgentConfig }
43
+
44
+ # @!attribute name
45
+ # A human-readable name for the agent, or null if it is unnamed.
46
+ #
47
+ # @return [String, nil]
48
+ required :name, String, nil?: true
49
+
50
+ # @!attribute object
51
+ # The object type. Always `agent`.
52
+ #
53
+ # @return [Symbol, :agent]
54
+ required :object, const: :agent
55
+
56
+ # @!attribute reasoning
57
+ # The resolved reasoning configuration, including the model default for an omitted
58
+ # effort.
59
+ #
60
+ # @return [OpenAI::Models::Beta::AgentReasoning]
61
+ required :reasoning, -> { OpenAI::Beta::AgentReasoning }
62
+
63
+ # @!attribute service_tier
64
+ # The resolved service-tier policy used for model requests.
65
+ #
66
+ # @return [Symbol, OpenAI::Models::Beta::Agent::ServiceTier]
67
+ required :service_tier, enum: -> { OpenAI::Beta::Agent::ServiceTier }
68
+
69
+ # @!attribute text
70
+ # The resolved configuration for text generated by the agent.
71
+ #
72
+ # @return [OpenAI::Models::Beta::AgentText]
73
+ required :text, -> { OpenAI::Beta::AgentText }
74
+
75
+ # @!attribute tools
76
+ # Tools available to the agent.
77
+ #
78
+ # @return [Array<OpenAI::Models::Beta::PersistedAgentTool::Function, OpenAI::Models::Beta::PersistedAgentTool::ToolSearch, OpenAI::Models::Beta::PersistedAgentTool::ProgrammaticToolCalling, OpenAI::Models::Beta::PersistedAgentTool::Mcp, OpenAI::Models::Beta::PersistedAgentTool::WebSearch>]
79
+ required :tools, -> { OpenAI::Internal::Type::ArrayOf[union: OpenAI::Beta::PersistedAgentTool] }
80
+
81
+ # @!attribute updated_at
82
+ # The Unix timestamp, in seconds, when the agent was last updated.
83
+ #
84
+ # @return [Integer]
85
+ required :updated_at, Integer
86
+
87
+ # @!method initialize(id:, created_at:, instructions:, metadata:, model:, multi_agent:, name:, reasoning:, service_tier:, text:, tools:, updated_at:, object: :agent)
88
+ # A reusable agent scoped to the caller's project.
89
+ #
90
+ # @param id [String]
91
+ # The ID of the reusable agent.
92
+ #
93
+ # @param created_at [Integer]
94
+ # The Unix timestamp, in seconds, when the agent was created.
95
+ #
96
+ # @param instructions [String, nil]
97
+ # Custom instructions appended to the agent's default base instructions.
98
+ #
99
+ # @param metadata [Hash{Symbol=>String}]
100
+ # Custom string key-value pairs attached to the agent.
101
+ #
102
+ # @param model [String]
103
+ # The requested model name used for inference.
104
+ #
105
+ # @param multi_agent [OpenAI::Models::Beta::MultiAgentConfig]
106
+ # The resolved configuration for creating and coordinating subagents.
107
+ #
108
+ # @param name [String, nil]
109
+ # A human-readable name for the agent, or null if it is unnamed.
110
+ #
111
+ # @param reasoning [OpenAI::Models::Beta::AgentReasoning]
112
+ # The resolved reasoning configuration, including the model default for an omitted
113
+ # effort.
114
+ #
115
+ # @param service_tier [Symbol, OpenAI::Models::Beta::Agent::ServiceTier]
116
+ # The resolved service-tier policy used for model requests.
117
+ #
118
+ # @param text [OpenAI::Models::Beta::AgentText]
119
+ # The resolved configuration for text generated by the agent.
120
+ #
121
+ # @param tools [Array<OpenAI::Models::Beta::PersistedAgentTool::Function, OpenAI::Models::Beta::PersistedAgentTool::ToolSearch, OpenAI::Models::Beta::PersistedAgentTool::ProgrammaticToolCalling, OpenAI::Models::Beta::PersistedAgentTool::Mcp, OpenAI::Models::Beta::PersistedAgentTool::WebSearch>]
122
+ # Tools available to the agent.
123
+ #
124
+ # @param updated_at [Integer]
125
+ # The Unix timestamp, in seconds, when the agent was last updated.
126
+ #
127
+ # @param object [Symbol, :agent]
128
+ # The object type. Always `agent`.
129
+
130
+ # The resolved service-tier policy used for model requests.
131
+ #
132
+ # @see OpenAI::Models::Beta::Agent#service_tier
133
+ module ServiceTier
134
+ extend OpenAI::Internal::Type::Enum
135
+
136
+ AUTO = :auto
137
+ DEFAULT = :default
138
+ FLEX = :flex
139
+ PRIORITY = :priority
140
+ FAST = :fast
141
+
142
+ # @!method self.values
143
+ # @return [Array<Symbol>]
144
+ end
145
+ end
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Beta
6
+ class AgentCloseSubagentCallItem < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute id
8
+ # The ID of the tool call item.
9
+ #
10
+ # @return [String]
11
+ required :id, String
12
+
13
+ # @!attribute recipient_agent_id
14
+ # The ID of the agent to close.
15
+ #
16
+ # @return [String]
17
+ required :recipient_agent_id, String
18
+
19
+ # @!attribute sender_agent_id
20
+ # The ID of the agent requesting the close.
21
+ #
22
+ # @return [String]
23
+ required :sender_agent_id, String
24
+
25
+ # @!attribute status
26
+ # The status of the tool call.
27
+ #
28
+ # @return [Symbol, OpenAI::Models::Beta::AgentFunctionCallStatus]
29
+ required :status, enum: -> { OpenAI::Beta::AgentFunctionCallStatus }
30
+
31
+ # @!attribute turn_id
32
+ # The ID of the turn that contains this item.
33
+ #
34
+ # @return [String]
35
+ required :turn_id, String
36
+
37
+ # @!attribute type
38
+ # The item type. Always `close_subagent_call`.
39
+ #
40
+ # @return [Symbol, :close_subagent_call]
41
+ required :type, const: :close_subagent_call
42
+
43
+ # @!method initialize(id:, recipient_agent_id:, sender_agent_id:, status:, turn_id:, type: :close_subagent_call)
44
+ # A request to close a subagent.
45
+ #
46
+ # @param id [String]
47
+ # The ID of the tool call item.
48
+ #
49
+ # @param recipient_agent_id [String]
50
+ # The ID of the agent to close.
51
+ #
52
+ # @param sender_agent_id [String]
53
+ # The ID of the agent requesting the close.
54
+ #
55
+ # @param status [Symbol, OpenAI::Models::Beta::AgentFunctionCallStatus]
56
+ # The status of the tool call.
57
+ #
58
+ # @param turn_id [String]
59
+ # The ID of the turn that contains this item.
60
+ #
61
+ # @param type [Symbol, :close_subagent_call]
62
+ # The item type. Always `close_subagent_call`.
63
+ end
64
+ end
65
+ end
66
+ end