openai 0.84.0 → 0.85.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 (267) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/README.md +1 -1
  4. data/SECURITY.md +10 -0
  5. data/docs/architecture/security-model.md +267 -0
  6. data/lib/openai/client.rb +4 -0
  7. data/lib/openai/helpers/streaming/chat_completion_stream.rb +17 -8
  8. data/lib/openai/helpers/streaming/response_stream.rb +13 -8
  9. data/lib/openai/helpers/structured_output/array_of.rb +2 -2
  10. data/lib/openai/helpers/structured_output/base_model.rb +19 -5
  11. data/lib/openai/helpers/structured_output/chat_completion_parser.rb +6 -3
  12. data/lib/openai/helpers/structured_output/json_schema_converter.rb +34 -11
  13. data/lib/openai/internal/vector_store_file_uploader.rb +1 -1
  14. data/lib/openai/models/admin/organization/usage_costs_params.rb +1 -1
  15. data/lib/openai/models/batch.rb +2 -2
  16. data/lib/openai/models/beta/beta_custom_tool.rb +13 -1
  17. data/lib/openai/models/beta/beta_function_tool.rb +8 -1
  18. data/lib/openai/models/beta/beta_namespace_tool.rb +10 -1
  19. data/lib/openai/models/beta/beta_response.rb +20 -9
  20. data/lib/openai/models/beta/beta_response_configuration_update_item.rb +103 -0
  21. data/lib/openai/models/beta/beta_response_configuration_update_item_param.rb +104 -0
  22. data/lib/openai/models/beta/beta_response_custom_tool_call.rb +9 -1
  23. data/lib/openai/models/beta/beta_response_custom_tool_call_item.rb +3 -1
  24. data/lib/openai/models/beta/beta_response_error.rb +96 -1
  25. data/lib/openai/models/beta/beta_response_function_tool_call.rb +9 -1
  26. data/lib/openai/models/beta/beta_response_function_tool_call_item.rb +3 -1
  27. data/lib/openai/models/beta/beta_response_incomplete_event.rb +4 -0
  28. data/lib/openai/models/beta/beta_response_inject_event.rb +2 -2
  29. data/lib/openai/models/beta/beta_response_inject_failed_event.rb +2 -2
  30. data/lib/openai/models/beta/beta_response_input_item.rb +6 -1
  31. data/lib/openai/models/beta/beta_response_item.rb +5 -1
  32. data/lib/openai/models/beta/beta_response_steer_accepted_event.rb +81 -0
  33. data/lib/openai/models/beta/beta_response_steer_error_code.rb +61 -0
  34. data/lib/openai/models/beta/beta_response_steer_event.rb +75 -0
  35. data/lib/openai/models/beta/beta_response_steer_failed_event.rb +151 -0
  36. data/lib/openai/models/beta/beta_response_steer_input.rb +360 -0
  37. data/lib/openai/models/beta/beta_response_steer_input_content.rb +28 -0
  38. data/lib/openai/models/beta/beta_response_steer_pending_event.rb +113 -0
  39. data/lib/openai/models/beta/beta_response_steer_pending_reason.rb +26 -0
  40. data/lib/openai/models/beta/beta_response_steer_required_input.rb +215 -0
  41. data/lib/openai/models/beta/beta_response_stream_event.rb +4 -0
  42. data/lib/openai/models/beta/beta_responses_client_event.rb +40 -7
  43. data/lib/openai/models/beta/beta_responses_server_event.rb +164 -2
  44. data/lib/openai/models/beta/response_compact_params.rb +9 -6
  45. data/lib/openai/models/beta/response_create_params.rb +9 -6
  46. data/lib/openai/models/beta/responses/beta_response_item_list.rb +2 -2
  47. data/lib/openai/models/beta/responses/input_token_count_params.rb +3 -3
  48. data/lib/openai/models/chat/completion_create_params.rb +4 -4
  49. data/lib/openai/models/chat_model.rb +1 -0
  50. data/lib/openai/models/conversations/conversation_create_params.rb +2 -2
  51. data/lib/openai/models/conversations/conversation_item.rb +5 -1
  52. data/lib/openai/models/conversations/conversation_item_list.rb +2 -2
  53. data/lib/openai/models/conversations/item_create_params.rb +2 -2
  54. data/lib/openai/models/error_object.rb +90 -1
  55. data/lib/openai/models/eval_create_response.rb +1 -1
  56. data/lib/openai/models/eval_list_response.rb +1 -1
  57. data/lib/openai/models/eval_retrieve_response.rb +1 -1
  58. data/lib/openai/models/eval_update_response.rb +1 -1
  59. data/lib/openai/models/evals/create_eval_completions_run_data_source.rb +2 -2
  60. data/lib/openai/models/responses/custom_tool.rb +13 -1
  61. data/lib/openai/models/responses/function_tool.rb +8 -1
  62. data/lib/openai/models/responses/input_token_count_params.rb +3 -3
  63. data/lib/openai/models/responses/namespace_tool.rb +10 -1
  64. data/lib/openai/models/responses/response.rb +16 -8
  65. data/lib/openai/models/responses/response_compact_params.rb +9 -6
  66. data/lib/openai/models/responses/response_configuration_update_item.rb +56 -0
  67. data/lib/openai/models/responses/response_configuration_update_item_param.rb +57 -0
  68. data/lib/openai/models/responses/response_create_params.rb +5 -5
  69. data/lib/openai/models/responses/response_custom_tool_call.rb +9 -1
  70. data/lib/openai/models/responses/response_custom_tool_call_item.rb +3 -1
  71. data/lib/openai/models/responses/response_error.rb +96 -1
  72. data/lib/openai/models/responses/response_function_tool_call.rb +9 -1
  73. data/lib/openai/models/responses/response_function_tool_call_item.rb +3 -1
  74. data/lib/openai/models/responses/response_incomplete_event.rb +4 -0
  75. data/lib/openai/models/responses/response_input_item.rb +6 -1
  76. data/lib/openai/models/responses/response_item.rb +5 -1
  77. data/lib/openai/models/responses/response_item_list.rb +2 -2
  78. data/lib/openai/models/responses/response_steer_accepted_event.rb +79 -0
  79. data/lib/openai/models/responses/response_steer_error_code.rb +59 -0
  80. data/lib/openai/models/responses/response_steer_event.rb +73 -0
  81. data/lib/openai/models/responses/response_steer_failed_event.rb +149 -0
  82. data/lib/openai/models/responses/response_steer_input.rb +304 -0
  83. data/lib/openai/models/responses/response_steer_input_content.rb +26 -0
  84. data/lib/openai/models/responses/response_steer_pending_event.rb +111 -0
  85. data/lib/openai/models/responses/response_steer_pending_reason.rb +24 -0
  86. data/lib/openai/models/responses/response_steer_required_input.rb +213 -0
  87. data/lib/openai/models/responses/response_stream_event.rb +4 -0
  88. data/lib/openai/models/responses/responses_client_event.rb +872 -769
  89. data/lib/openai/models/responses/responses_server_event.rb +162 -2
  90. data/lib/openai/models/safety/alert_retrieve_params.rb +24 -0
  91. data/lib/openai/models/safety/safety_alert.rb +96 -0
  92. data/lib/openai/models/video_create_error.rb +93 -1
  93. data/lib/openai/models/webhooks/safety_alert_created_webhook_event.rb +63 -0
  94. data/lib/openai/models/webhooks/safety_org_alert_created_webhook_event.rb +63 -0
  95. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +7 -1
  96. data/lib/openai/models.rb +2 -0
  97. data/lib/openai/net_http_client.rb +1 -1
  98. data/lib/openai/providers/bedrock.rb +20 -12
  99. data/lib/openai/resources/beta/responses/input_items.rb +1 -1
  100. data/lib/openai/resources/beta/responses/input_tokens.rb +1 -1
  101. data/lib/openai/resources/beta/responses.rb +6 -6
  102. data/lib/openai/resources/chat/completions.rb +2 -2
  103. data/lib/openai/resources/conversations/items.rb +3 -3
  104. data/lib/openai/resources/conversations.rb +1 -1
  105. data/lib/openai/resources/responses/input_items.rb +1 -1
  106. data/lib/openai/resources/responses/input_tokens.rb +1 -1
  107. data/lib/openai/resources/responses.rb +6 -6
  108. data/lib/openai/resources/safety/alerts.rb +37 -0
  109. data/lib/openai/resources/safety.rb +18 -0
  110. data/lib/openai/resources/webhooks.rb +1 -1
  111. data/lib/openai/version.rb +1 -1
  112. data/lib/openai.rb +28 -0
  113. data/rbi/openai/client.rbi +3 -0
  114. data/rbi/openai/models/admin/organization/usage_costs_params.rbi +2 -2
  115. data/rbi/openai/models/batch.rbi +2 -2
  116. data/rbi/openai/models/beta/beta_custom_tool.rbi +15 -0
  117. data/rbi/openai/models/beta/beta_function_tool.rbi +11 -0
  118. data/rbi/openai/models/beta/beta_namespace_tool.rbi +15 -0
  119. data/rbi/openai/models/beta/beta_response.rbi +14 -6
  120. data/rbi/openai/models/beta/beta_response_configuration_update_item.rbi +200 -0
  121. data/rbi/openai/models/beta/beta_response_configuration_update_item_param.rbi +207 -0
  122. data/rbi/openai/models/beta/beta_response_custom_tool_call.rbi +13 -0
  123. data/rbi/openai/models/beta/beta_response_custom_tool_call_item.rbi +6 -0
  124. data/rbi/openai/models/beta/beta_response_error.rbi +161 -3
  125. data/rbi/openai/models/beta/beta_response_function_tool_call.rbi +13 -0
  126. data/rbi/openai/models/beta/beta_response_function_tool_call_item.rbi +6 -0
  127. data/rbi/openai/models/beta/beta_response_incomplete_event.rbi +4 -0
  128. data/rbi/openai/models/beta/beta_response_inject_event.rbi +3 -0
  129. data/rbi/openai/models/beta/beta_response_inject_failed_event.rbi +3 -0
  130. data/rbi/openai/models/beta/beta_response_input_item.rbi +1 -0
  131. data/rbi/openai/models/beta/beta_response_item.rbi +1 -0
  132. data/rbi/openai/models/beta/beta_response_steer_accepted_event.rbi +148 -0
  133. data/rbi/openai/models/beta/beta_response_steer_error_code.rbi +65 -0
  134. data/rbi/openai/models/beta/beta_response_steer_event.rbi +118 -0
  135. data/rbi/openai/models/beta/beta_response_steer_failed_event.rbi +267 -0
  136. data/rbi/openai/models/beta/beta_response_steer_input.rbi +602 -0
  137. data/rbi/openai/models/beta/beta_response_steer_input_content.rbi +31 -0
  138. data/rbi/openai/models/beta/beta_response_steer_pending_event.rbi +222 -0
  139. data/rbi/openai/models/beta/beta_response_steer_pending_reason.rbi +35 -0
  140. data/rbi/openai/models/beta/beta_response_steer_required_input.rbi +379 -0
  141. data/rbi/openai/models/beta/beta_responses_client_event.rbi +8 -3
  142. data/rbi/openai/models/beta/beta_responses_server_event.rbi +206 -3
  143. data/rbi/openai/models/beta/response_compact_params.rbi +4 -3
  144. data/rbi/openai/models/beta/response_create_params.rbi +4 -3
  145. data/rbi/openai/models/beta/responses/beta_response_item_list.rbi +1 -0
  146. data/rbi/openai/models/chat/completion_create_params.rbi +3 -3
  147. data/rbi/openai/models/chat_model.rbi +1 -0
  148. data/rbi/openai/models/conversations/conversation_create_params.rbi +3 -0
  149. data/rbi/openai/models/conversations/conversation_item.rbi +1 -0
  150. data/rbi/openai/models/conversations/conversation_item_list.rbi +1 -0
  151. data/rbi/openai/models/conversations/item_create_params.rbi +3 -0
  152. data/rbi/openai/models/error_object.rbi +156 -3
  153. data/rbi/openai/models/eval_create_response.rbi +1 -1
  154. data/rbi/openai/models/eval_list_response.rbi +1 -1
  155. data/rbi/openai/models/eval_retrieve_response.rbi +1 -1
  156. data/rbi/openai/models/eval_update_response.rbi +1 -1
  157. data/rbi/openai/models/evals/create_eval_completions_run_data_source.rbi +2 -2
  158. data/rbi/openai/models/responses/custom_tool.rbi +15 -0
  159. data/rbi/openai/models/responses/function_tool.rbi +11 -0
  160. data/rbi/openai/models/responses/namespace_tool.rbi +15 -0
  161. data/rbi/openai/models/responses/response.rbi +12 -5
  162. data/rbi/openai/models/responses/response_compact_params.rbi +4 -3
  163. data/rbi/openai/models/responses/response_configuration_update_item.rbi +112 -0
  164. data/rbi/openai/models/responses/response_configuration_update_item_param.rbi +117 -0
  165. data/rbi/openai/models/responses/response_create_params.rbi +2 -2
  166. data/rbi/openai/models/responses/response_custom_tool_call.rbi +13 -0
  167. data/rbi/openai/models/responses/response_custom_tool_call_item.rbi +6 -0
  168. data/rbi/openai/models/responses/response_error.rbi +161 -3
  169. data/rbi/openai/models/responses/response_function_tool_call.rbi +13 -0
  170. data/rbi/openai/models/responses/response_function_tool_call_item.rbi +6 -0
  171. data/rbi/openai/models/responses/response_incomplete_event.rbi +4 -0
  172. data/rbi/openai/models/responses/response_input_item.rbi +1 -0
  173. data/rbi/openai/models/responses/response_item.rbi +1 -0
  174. data/rbi/openai/models/responses/response_item_list.rbi +1 -0
  175. data/rbi/openai/models/responses/response_steer_accepted_event.rbi +146 -0
  176. data/rbi/openai/models/responses/response_steer_error_code.rbi +63 -0
  177. data/rbi/openai/models/responses/response_steer_event.rbi +119 -0
  178. data/rbi/openai/models/responses/response_steer_failed_event.rbi +268 -0
  179. data/rbi/openai/models/responses/response_steer_input.rbi +474 -0
  180. data/rbi/openai/models/responses/response_steer_input_content.rbi +29 -0
  181. data/rbi/openai/models/responses/response_steer_pending_event.rbi +220 -0
  182. data/rbi/openai/models/responses/response_steer_pending_reason.rbi +33 -0
  183. data/rbi/openai/models/responses/response_steer_required_input.rbi +377 -0
  184. data/rbi/openai/models/responses/responses_client_event.rbi +1204 -1036
  185. data/rbi/openai/models/responses/responses_server_event.rbi +202 -3
  186. data/rbi/openai/models/safety/alert_retrieve_params.rbi +55 -0
  187. data/rbi/openai/models/safety/safety_alert.rbi +147 -0
  188. data/rbi/openai/models/video_create_error.rbi +149 -3
  189. data/rbi/openai/models/webhooks/safety_alert_created_webhook_event.rbi +130 -0
  190. data/rbi/openai/models/webhooks/safety_org_alert_created_webhook_event.rbi +130 -0
  191. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +3 -1
  192. data/rbi/openai/models.rbi +2 -0
  193. data/rbi/openai/resources/admin/organization/usage.rbi +1 -1
  194. data/rbi/openai/resources/beta/responses.rbi +3 -3
  195. data/rbi/openai/resources/chat/completions.rbi +2 -2
  196. data/rbi/openai/resources/conversations/items.rbi +1 -0
  197. data/rbi/openai/resources/conversations.rbi +1 -0
  198. data/rbi/openai/resources/responses.rbi +3 -3
  199. data/rbi/openai/resources/safety/alerts.rbi +30 -0
  200. data/rbi/openai/resources/safety.rbi +18 -0
  201. data/rbi/openai/resources/webhooks.rbi +3 -1
  202. data/sig/openai/client.rbs +2 -0
  203. data/sig/openai/models/beta/beta_custom_tool.rbs +7 -0
  204. data/sig/openai/models/beta/beta_function_tool.rbs +7 -0
  205. data/sig/openai/models/beta/beta_namespace_tool.rbs +7 -0
  206. data/sig/openai/models/beta/beta_response.rbs +6 -2
  207. data/sig/openai/models/beta/beta_response_configuration_update_item.rbs +91 -0
  208. data/sig/openai/models/beta/beta_response_configuration_update_item_param.rbs +87 -0
  209. data/sig/openai/models/beta/beta_response_custom_tool_call.rbs +7 -0
  210. data/sig/openai/models/beta/beta_response_custom_tool_call_item.rbs +3 -0
  211. data/sig/openai/models/beta/beta_response_error.rbs +82 -3
  212. data/sig/openai/models/beta/beta_response_function_tool_call.rbs +7 -0
  213. data/sig/openai/models/beta/beta_response_function_tool_call_item.rbs +3 -0
  214. data/sig/openai/models/beta/beta_response_input_item.rbs +1 -0
  215. data/sig/openai/models/beta/beta_response_item.rbs +1 -0
  216. data/sig/openai/models/beta/beta_response_steer_accepted_event.rbs +53 -0
  217. data/sig/openai/models/beta/beta_response_steer_error_code.rbs +31 -0
  218. data/sig/openai/models/beta/beta_response_steer_event.rbs +34 -0
  219. data/sig/openai/models/beta/beta_response_steer_failed_event.rbs +102 -0
  220. data/sig/openai/models/beta/beta_response_steer_input.rbs +214 -0
  221. data/sig/openai/models/beta/beta_response_steer_input_content.rbs +18 -0
  222. data/sig/openai/models/beta/beta_response_steer_pending_event.rbs +63 -0
  223. data/sig/openai/models/beta/beta_response_steer_pending_reason.rbs +16 -0
  224. data/sig/openai/models/beta/beta_response_steer_required_input.rbs +161 -0
  225. data/sig/openai/models/beta/beta_responses_client_event.rbs +4 -1
  226. data/sig/openai/models/beta/beta_responses_server_event.rbs +80 -3
  227. data/sig/openai/models/beta/response_compact_params.rbs +3 -1
  228. data/sig/openai/models/beta/response_create_params.rbs +3 -1
  229. data/sig/openai/models/chat_model.rbs +3 -1
  230. data/sig/openai/models/conversations/conversation_item.rbs +1 -0
  231. data/sig/openai/models/error_object.rbs +82 -3
  232. data/sig/openai/models/responses/custom_tool.rbs +7 -0
  233. data/sig/openai/models/responses/function_tool.rbs +7 -0
  234. data/sig/openai/models/responses/namespace_tool.rbs +7 -0
  235. data/sig/openai/models/responses/response.rbs +3 -1
  236. data/sig/openai/models/responses/response_compact_params.rbs +3 -1
  237. data/sig/openai/models/responses/response_configuration_update_item.rbs +46 -0
  238. data/sig/openai/models/responses/response_configuration_update_item_param.rbs +46 -0
  239. data/sig/openai/models/responses/response_custom_tool_call.rbs +7 -0
  240. data/sig/openai/models/responses/response_custom_tool_call_item.rbs +3 -0
  241. data/sig/openai/models/responses/response_error.rbs +79 -3
  242. data/sig/openai/models/responses/response_function_tool_call.rbs +7 -0
  243. data/sig/openai/models/responses/response_function_tool_call_item.rbs +3 -0
  244. data/sig/openai/models/responses/response_input_item.rbs +1 -0
  245. data/sig/openai/models/responses/response_item.rbs +1 -0
  246. data/sig/openai/models/responses/response_steer_accepted_event.rbs +51 -0
  247. data/sig/openai/models/responses/response_steer_error_code.rbs +29 -0
  248. data/sig/openai/models/responses/response_steer_event.rbs +32 -0
  249. data/sig/openai/models/responses/response_steer_failed_event.rbs +100 -0
  250. data/sig/openai/models/responses/response_steer_input.rbs +182 -0
  251. data/sig/openai/models/responses/response_steer_input_content.rbs +16 -0
  252. data/sig/openai/models/responses/response_steer_pending_event.rbs +61 -0
  253. data/sig/openai/models/responses/response_steer_pending_reason.rbs +13 -0
  254. data/sig/openai/models/responses/response_steer_required_input.rbs +159 -0
  255. data/sig/openai/models/responses/responses_client_event.rbs +355 -344
  256. data/sig/openai/models/responses/responses_server_event.rbs +80 -3
  257. data/sig/openai/models/safety/alert_retrieve_params.rbs +22 -0
  258. data/sig/openai/models/safety/safety_alert.rbs +81 -0
  259. data/sig/openai/models/video_create_error.rbs +87 -3
  260. data/sig/openai/models/webhooks/safety_alert_created_webhook_event.rbs +52 -0
  261. data/sig/openai/models/webhooks/safety_org_alert_created_webhook_event.rbs +52 -0
  262. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +2 -0
  263. data/sig/openai/models.rbs +2 -0
  264. data/sig/openai/resources/safety/alerts.rbs +14 -0
  265. data/sig/openai/resources/safety.rbs +9 -0
  266. data/sig/openai/resources/webhooks.rbs +3 -1
  267. metadata +86 -1
@@ -23,6 +23,15 @@ module OpenAI
23
23
  end
24
24
  end
25
25
  .freeze
26
+ # @api private
27
+ RECURSIVE = Object
28
+ .new
29
+ .tap do
30
+ _1.define_singleton_method(:inspect) do
31
+ "#<#{OpenAI::Helpers::StructuredOutput::JsonSchemaConverter}::RECURSIVE>"
32
+ end
33
+ end
34
+ .freeze
26
35
 
27
36
  # rubocop:disable Lint/UnusedMethodArgument
28
37
 
@@ -56,6 +65,8 @@ module OpenAI
56
65
  {type: null}
57
66
  ]
58
67
  }
68
+ in {const: _}
69
+ {anyOf: [schema, {type: null}]}
59
70
  in {anyOf: schemas}
60
71
  null = {type: null}
61
72
  schemas.any? { _1 == null || _1 == {type: ["null"]} } ? schema : {anyOf: [*schemas, null]}
@@ -94,6 +105,10 @@ module OpenAI
94
105
  defs, path = state.fetch_values(:defs, :path)
95
106
  if (stored = defs[type])
96
107
  pointers = stored.fetch(OpenAI::Helpers::StructuredOutput::JsonSchemaConverter::POINTERS)
108
+ if pointers.first.fetch(:$ref).empty?
109
+ stored[OpenAI::Helpers::StructuredOutput::JsonSchemaConverter::RECURSIVE] = true
110
+ end
111
+
97
112
  pointers.first.except(OpenAI::Helpers::StructuredOutput::JsonSchemaConverter::NO_REF).tap do
98
113
  pointers << _1
99
114
  end
@@ -128,27 +143,35 @@ module OpenAI
128
143
  )
129
144
  reused_defs = {}
130
145
  defs.each_value do |acc|
131
- sch = acc.except(OpenAI::Helpers::StructuredOutput::JsonSchemaConverter::POINTERS)
146
+ recursive = acc.key?(OpenAI::Helpers::StructuredOutput::JsonSchemaConverter::RECURSIVE)
147
+ sch = acc.except(
148
+ OpenAI::Helpers::StructuredOutput::JsonSchemaConverter::POINTERS,
149
+ OpenAI::Helpers::StructuredOutput::JsonSchemaConverter::RECURSIVE
150
+ )
132
151
  pointers = acc.fetch(OpenAI::Helpers::StructuredOutput::JsonSchemaConverter::POINTERS)
133
152
 
134
153
  no_refs, refs = pointers.partition do
135
154
  _1.delete(OpenAI::Helpers::StructuredOutput::JsonSchemaConverter::NO_REF)
136
155
  end
137
156
 
138
- case refs
139
- in [ref]
140
- ref.replace(ref.except(:$ref).merge(sch))
141
- in [_, ref, *]
142
- reused_defs.store(ref.fetch(:$ref), sch)
143
- refs.each do
144
- unless (meta = _1.except(:$ref)).empty?
145
- _1.replace(allOf: [_1.slice(:$ref), meta])
157
+ if recursive
158
+ reused_defs.store(pointers.first.fetch(:$ref), sch)
159
+ else
160
+ case refs
161
+ in [ref]
162
+ ref.replace(ref.except(:$ref).merge(sch))
163
+ in [_, ref, *]
164
+ reused_defs.store(ref.fetch(:$ref), sch)
165
+ refs.each do
166
+ unless (meta = _1.except(:$ref)).empty?
167
+ _1.replace(allOf: [_1.slice(:$ref), meta])
168
+ end
146
169
  end
170
+ else
147
171
  end
148
- else
149
172
  end
150
173
 
151
- no_refs.each { _1.replace(_1.except(:$ref).merge(sch)) }
174
+ no_refs.each { _1.replace(_1.except(:$ref).merge(sch)) } unless recursive
152
175
  end
153
176
 
154
177
  xformed = reused_defs.transform_keys do
@@ -132,7 +132,7 @@ module OpenAI
132
132
  complete = false
133
133
  case content
134
134
  in StringIO
135
- temporary_file.write(content.string)
135
+ temporary_file.write(content.string.byteslice(content.pos..) || "")
136
136
  in String
137
137
  temporary_file.write(content)
138
138
  in IO
@@ -53,7 +53,7 @@ module OpenAI
53
53
 
54
54
  # @!attribute line_items
55
55
  # Return only costs for these exact line item names. Each value must match the
56
- # complete `line_item` value, for example `gpt-5.6-sol, input_tokens`.
56
+ # complete `line_item` value, for example `gpt-6-astra, input_tokens`.
57
57
  #
58
58
  # @return [Array<String>, nil]
59
59
  optional :line_items, OpenAI::Internal::Type::ArrayOf[String]
@@ -116,7 +116,7 @@ module OpenAI
116
116
  optional :metadata, OpenAI::Internal::Type::HashOf[String], nil?: true
117
117
 
118
118
  # @!attribute model
119
- # Model ID used to process the batch, like `gpt-5.6-sol`. OpenAI offers a wide
119
+ # Model ID used to process the batch, like `gpt-6-astra`. OpenAI offers a wide
120
120
  # range of models with different capabilities, performance characteristics, and
121
121
  # price points. Refer to the
122
122
  # [model guide](https://platform.openai.com/docs/models) to browse and compare
@@ -183,7 +183,7 @@ module OpenAI
183
183
  #
184
184
  # @param metadata [Hash{Symbol=>String}, nil] Set of 16 key-value pairs that can be attached to an object. This can be
185
185
  #
186
- # @param model [String] Model ID used to process the batch, like `gpt-5.6-sol`. OpenAI
186
+ # @param model [String] Model ID used to process the batch, like `gpt-6-astra`. OpenAI
187
187
  #
188
188
  # @param output_file_id [String] The ID of the file containing the outputs of successfully executed requests.
189
189
  #
@@ -26,6 +26,13 @@ module OpenAI
26
26
  nil?: true
27
27
  )
28
28
 
29
+ # @!attribute async
30
+ # Whether the tool response can be returned asynchronously versus immediately
31
+ # returned on next response creation.
32
+ #
33
+ # @return [Boolean, nil]
34
+ optional :async, OpenAI::Internal::Type::Boolean
35
+
29
36
  # @!attribute defer_loading
30
37
  # Whether this tool should be deferred and discovered via tool search.
31
38
  #
@@ -44,7 +51,10 @@ module OpenAI
44
51
  # @return [OpenAI::Models::Beta::BetaCustomTool::Format::Text, OpenAI::Models::Beta::BetaCustomTool::Format::Grammar, nil]
45
52
  optional :format_, union: -> { OpenAI::Beta::BetaCustomTool::Format }, api_name: :format
46
53
 
47
- # @!method initialize(name:, allowed_callers: nil, defer_loading: nil, description: nil, format_: nil, type: :custom)
54
+ # @!method initialize(name:, allowed_callers: nil, async: nil, defer_loading: nil, description: nil, format_: nil, type: :custom)
55
+ # Some parameter documentations has been truncated, see
56
+ # {OpenAI::Models::Beta::BetaCustomTool} for more details.
57
+ #
48
58
  # A custom tool that processes input using a specified format. Learn more about
49
59
  # [custom tools](https://platform.openai.com/docs/guides/function-calling#custom-tools)
50
60
  #
@@ -52,6 +62,8 @@ module OpenAI
52
62
  #
53
63
  # @param allowed_callers [Array<Symbol, OpenAI::Models::Beta::BetaCustomTool::AllowedCaller>, nil] The tool invocation context(s).
54
64
  #
65
+ # @param async [Boolean] Whether the tool response can be returned asynchronously versus immediately retu
66
+ #
55
67
  # @param defer_loading [Boolean] Whether this tool should be deferred and discovered via tool search.
56
68
  #
57
69
  # @param description [String] Optional description of the custom tool, used to provide more context.
@@ -38,6 +38,11 @@ module OpenAI
38
38
  nil?: true
39
39
  )
40
40
 
41
+ # @!attribute async
42
+ #
43
+ # @return [Boolean, nil]
44
+ optional :async, OpenAI::Internal::Type::Boolean
45
+
41
46
  # @!attribute defer_loading
42
47
  # Whether this function is deferred and loaded via tool search.
43
48
  #
@@ -58,7 +63,7 @@ module OpenAI
58
63
  # @return [Hash{Symbol=>Object}, nil]
59
64
  optional :output_schema, OpenAI::Internal::Type::HashOf[OpenAI::Internal::Type::Unknown], nil?: true
60
65
 
61
- # @!method initialize(name:, parameters:, strict:, allowed_callers: nil, defer_loading: nil, description: nil, output_schema: nil, type: :function)
66
+ # @!method initialize(name:, parameters:, strict:, allowed_callers: nil, async: nil, defer_loading: nil, description: nil, output_schema: nil, type: :function)
62
67
  # Some parameter documentations has been truncated, see
63
68
  # {OpenAI::Models::Beta::BetaFunctionTool} for more details.
64
69
  #
@@ -74,6 +79,8 @@ module OpenAI
74
79
  #
75
80
  # @param allowed_callers [Array<Symbol, OpenAI::Models::Beta::BetaFunctionTool::AllowedCaller>, nil] The tool invocation context(s).
76
81
  #
82
+ # @param async [Boolean]
83
+ #
77
84
  # @param defer_loading [Boolean] Whether this function is deferred and loaded via tool search.
78
85
  #
79
86
  # @param description [String, nil] A description of the function. Used by the model to determine whether or not to
@@ -73,6 +73,13 @@ module OpenAI
73
73
  nil?: true
74
74
  )
75
75
 
76
+ # @!attribute async
77
+ # Whether the tool response can be returned asynchronously versus immediately
78
+ # returned on next response creation.
79
+ #
80
+ # @return [Boolean, nil]
81
+ optional :async, OpenAI::Internal::Type::Boolean
82
+
76
83
  # @!attribute defer_loading
77
84
  # Whether this function should be deferred and discovered via tool search.
78
85
  #
@@ -108,7 +115,7 @@ module OpenAI
108
115
  # @return [Boolean, nil]
109
116
  optional :strict, OpenAI::Internal::Type::Boolean, nil?: true
110
117
 
111
- # @!method initialize(name:, allowed_callers: nil, defer_loading: nil, description: nil, output_schema: nil, parameters: nil, strict: nil, type: :function)
118
+ # @!method initialize(name:, allowed_callers: nil, async: nil, defer_loading: nil, description: nil, output_schema: nil, parameters: nil, strict: nil, type: :function)
112
119
  # Some parameter documentations has been truncated, see
113
120
  # {OpenAI::Models::Beta::BetaNamespaceTool::Tool::Function} for more details.
114
121
  #
@@ -116,6 +123,8 @@ module OpenAI
116
123
  #
117
124
  # @param allowed_callers [Array<Symbol, OpenAI::Models::Beta::BetaNamespaceTool::Tool::Function::AllowedCaller>, nil] The tool invocation context(s).
118
125
  #
126
+ # @param async [Boolean] Whether the tool response can be returned asynchronously versus immediately retu
127
+ #
119
128
  # @param defer_loading [Boolean] Whether this function should be deferred and discovered via tool search.
120
129
  #
121
130
  # @param description [String, nil]
@@ -38,7 +38,7 @@ module OpenAI
38
38
  # response will not be carried over to the next response. This makes it simple to
39
39
  # swap out system (or developer) messages in new responses.
40
40
  #
41
- # @return [String, Array<OpenAI::Models::Beta::BetaEasyInputMessage, OpenAI::Models::Beta::BetaResponseInputItem::Message, OpenAI::Models::Beta::BetaResponseOutputMessage, OpenAI::Models::Beta::BetaResponseFileSearchToolCall, OpenAI::Models::Beta::BetaResponseComputerToolCall, OpenAI::Models::Beta::BetaResponseInputItem::ComputerCallOutput, OpenAI::Models::Beta::BetaResponseFunctionWebSearch, OpenAI::Models::Beta::BetaResponseFunctionToolCall, OpenAI::Models::Beta::BetaResponseInputItem::FunctionCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::AgentMessage, OpenAI::Models::Beta::BetaResponseInputItem::MultiAgentCall, OpenAI::Models::Beta::BetaResponseInputItem::MultiAgentCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ToolSearchCall, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam, OpenAI::Models::Beta::BetaResponseInputItem::AdditionalTools, OpenAI::Models::Beta::BetaResponseReasoningItem, OpenAI::Models::Beta::BetaResponseCompactionItemParam, OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall, OpenAI::Models::Beta::BetaResponseCodeInterpreterToolCall, OpenAI::Models::Beta::BetaResponseInputItem::LocalShellCall, OpenAI::Models::Beta::BetaResponseInputItem::LocalShellCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ShellCall, OpenAI::Models::Beta::BetaResponseInputItem::ShellCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ApplyPatchCall, OpenAI::Models::Beta::BetaResponseInputItem::ApplyPatchCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::McpListTools, OpenAI::Models::Beta::BetaResponseInputItem::McpApprovalRequest, OpenAI::Models::Beta::BetaResponseInputItem::McpApprovalResponse, OpenAI::Models::Beta::BetaResponseInputItem::McpCall, OpenAI::Models::Beta::BetaResponseCustomToolCallOutput, OpenAI::Models::Beta::BetaResponseCustomToolCall, OpenAI::Models::Beta::BetaResponseInputItem::CompactionTrigger, OpenAI::Models::Beta::BetaResponseInputItem::ItemReference, OpenAI::Models::Beta::BetaResponseInputItem::Program, OpenAI::Models::Beta::BetaResponseInputItem::ProgramOutput>, nil]
41
+ # @return [String, Array<OpenAI::Models::Beta::BetaEasyInputMessage, OpenAI::Models::Beta::BetaResponseInputItem::Message, OpenAI::Models::Beta::BetaResponseOutputMessage, OpenAI::Models::Beta::BetaResponseFileSearchToolCall, OpenAI::Models::Beta::BetaResponseComputerToolCall, OpenAI::Models::Beta::BetaResponseInputItem::ComputerCallOutput, OpenAI::Models::Beta::BetaResponseFunctionWebSearch, OpenAI::Models::Beta::BetaResponseFunctionToolCall, OpenAI::Models::Beta::BetaResponseInputItem::FunctionCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::AgentMessage, OpenAI::Models::Beta::BetaResponseInputItem::MultiAgentCall, OpenAI::Models::Beta::BetaResponseInputItem::MultiAgentCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ToolSearchCall, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam, OpenAI::Models::Beta::BetaResponseInputItem::AdditionalTools, OpenAI::Models::Beta::BetaResponseConfigurationUpdateItemParam, OpenAI::Models::Beta::BetaResponseReasoningItem, OpenAI::Models::Beta::BetaResponseCompactionItemParam, OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall, OpenAI::Models::Beta::BetaResponseCodeInterpreterToolCall, OpenAI::Models::Beta::BetaResponseInputItem::LocalShellCall, OpenAI::Models::Beta::BetaResponseInputItem::LocalShellCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ShellCall, OpenAI::Models::Beta::BetaResponseInputItem::ShellCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ApplyPatchCall, OpenAI::Models::Beta::BetaResponseInputItem::ApplyPatchCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::McpListTools, OpenAI::Models::Beta::BetaResponseInputItem::McpApprovalRequest, OpenAI::Models::Beta::BetaResponseInputItem::McpApprovalResponse, OpenAI::Models::Beta::BetaResponseInputItem::McpCall, OpenAI::Models::Beta::BetaResponseCustomToolCallOutput, OpenAI::Models::Beta::BetaResponseCustomToolCall, OpenAI::Models::Beta::BetaResponseInputItem::CompactionTrigger, OpenAI::Models::Beta::BetaResponseInputItem::ItemReference, OpenAI::Models::Beta::BetaResponseInputItem::Program, OpenAI::Models::Beta::BetaResponseInputItem::ProgramOutput>, nil]
42
42
  required :instructions, union: -> { OpenAI::Beta::BetaResponse::Instructions }, nil?: true
43
43
 
44
44
  # @!attribute metadata
@@ -53,7 +53,7 @@ module OpenAI
53
53
  required :metadata, OpenAI::Internal::Type::HashOf[String], nil?: true
54
54
 
55
55
  # @!attribute model
56
- # Model ID used to generate the response, like `gpt-5.6-sol`. OpenAI offers a wide
56
+ # Model ID used to generate the response, like `gpt-6-astra`. OpenAI offers a wide
57
57
  # range of models with different capabilities, performance characteristics, and
58
58
  # price points. Refer to the
59
59
  # [model guide](https://platform.openai.com/docs/models) to browse and compare
@@ -356,11 +356,11 @@ module OpenAI
356
356
  #
357
357
  # @param incomplete_details [OpenAI::Models::Beta::BetaResponse::IncompleteDetails, nil] Details about why the response is incomplete.
358
358
  #
359
- # @param instructions [String, Array<OpenAI::Models::Beta::BetaEasyInputMessage, OpenAI::Models::Beta::BetaResponseInputItem::Message, OpenAI::Models::Beta::BetaResponseOutputMessage, OpenAI::Models::Beta::BetaResponseFileSearchToolCall, OpenAI::Models::Beta::BetaResponseComputerToolCall, OpenAI::Models::Beta::BetaResponseInputItem::ComputerCallOutput, OpenAI::Models::Beta::BetaResponseFunctionWebSearch, OpenAI::Models::Beta::BetaResponseFunctionToolCall, OpenAI::Models::Beta::BetaResponseInputItem::FunctionCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::AgentMessage, OpenAI::Models::Beta::BetaResponseInputItem::MultiAgentCall, OpenAI::Models::Beta::BetaResponseInputItem::MultiAgentCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ToolSearchCall, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam, OpenAI::Models::Beta::BetaResponseInputItem::AdditionalTools, OpenAI::Models::Beta::BetaResponseReasoningItem, OpenAI::Models::Beta::BetaResponseCompactionItemParam, OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall, OpenAI::Models::Beta::BetaResponseCodeInterpreterToolCall, OpenAI::Models::Beta::BetaResponseInputItem::LocalShellCall, OpenAI::Models::Beta::BetaResponseInputItem::LocalShellCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ShellCall, OpenAI::Models::Beta::BetaResponseInputItem::ShellCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ApplyPatchCall, OpenAI::Models::Beta::BetaResponseInputItem::ApplyPatchCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::McpListTools, OpenAI::Models::Beta::BetaResponseInputItem::McpApprovalRequest, OpenAI::Models::Beta::BetaResponseInputItem::McpApprovalResponse, OpenAI::Models::Beta::BetaResponseInputItem::McpCall, OpenAI::Models::Beta::BetaResponseCustomToolCallOutput, OpenAI::Models::Beta::BetaResponseCustomToolCall, OpenAI::Models::Beta::BetaResponseInputItem::CompactionTrigger, OpenAI::Models::Beta::BetaResponseInputItem::ItemReference, OpenAI::Models::Beta::BetaResponseInputItem::Program, OpenAI::Models::Beta::BetaResponseInputItem::ProgramOutput>, nil] A system (or developer) message inserted into the model's context.
359
+ # @param instructions [String, Array<OpenAI::Models::Beta::BetaEasyInputMessage, OpenAI::Models::Beta::BetaResponseInputItem::Message, OpenAI::Models::Beta::BetaResponseOutputMessage, OpenAI::Models::Beta::BetaResponseFileSearchToolCall, OpenAI::Models::Beta::BetaResponseComputerToolCall, OpenAI::Models::Beta::BetaResponseInputItem::ComputerCallOutput, OpenAI::Models::Beta::BetaResponseFunctionWebSearch, OpenAI::Models::Beta::BetaResponseFunctionToolCall, OpenAI::Models::Beta::BetaResponseInputItem::FunctionCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::AgentMessage, OpenAI::Models::Beta::BetaResponseInputItem::MultiAgentCall, OpenAI::Models::Beta::BetaResponseInputItem::MultiAgentCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ToolSearchCall, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam, OpenAI::Models::Beta::BetaResponseInputItem::AdditionalTools, OpenAI::Models::Beta::BetaResponseConfigurationUpdateItemParam, OpenAI::Models::Beta::BetaResponseReasoningItem, OpenAI::Models::Beta::BetaResponseCompactionItemParam, OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall, OpenAI::Models::Beta::BetaResponseCodeInterpreterToolCall, OpenAI::Models::Beta::BetaResponseInputItem::LocalShellCall, OpenAI::Models::Beta::BetaResponseInputItem::LocalShellCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ShellCall, OpenAI::Models::Beta::BetaResponseInputItem::ShellCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ApplyPatchCall, OpenAI::Models::Beta::BetaResponseInputItem::ApplyPatchCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::McpListTools, OpenAI::Models::Beta::BetaResponseInputItem::McpApprovalRequest, OpenAI::Models::Beta::BetaResponseInputItem::McpApprovalResponse, OpenAI::Models::Beta::BetaResponseInputItem::McpCall, OpenAI::Models::Beta::BetaResponseCustomToolCallOutput, OpenAI::Models::Beta::BetaResponseCustomToolCall, OpenAI::Models::Beta::BetaResponseInputItem::CompactionTrigger, OpenAI::Models::Beta::BetaResponseInputItem::ItemReference, OpenAI::Models::Beta::BetaResponseInputItem::Program, OpenAI::Models::Beta::BetaResponseInputItem::ProgramOutput>, nil] A system (or developer) message inserted into the model's context.
360
360
  #
361
361
  # @param metadata [Hash{Symbol=>String}, nil] Set of 16 key-value pairs that can be attached to an object. This can be
362
362
  #
363
- # @param model [Symbol, String, OpenAI::Models::Beta::BetaResponse::Model] Model ID used to generate the response, like `gpt-5.6-sol`. OpenAI
363
+ # @param model [Symbol, String, OpenAI::Models::Beta::BetaResponse::Model] Model ID used to generate the response, like `gpt-6-astra`. OpenAI
364
364
  #
365
365
  # @param output [Array<OpenAI::Models::Beta::BetaResponseOutputMessage, OpenAI::Models::Beta::BetaResponseFileSearchToolCall, OpenAI::Models::Beta::BetaResponseFunctionToolCall, OpenAI::Models::Beta::BetaResponseFunctionToolCallOutputItem, OpenAI::Models::Beta::BetaResponseOutputItem::AgentMessage, OpenAI::Models::Beta::BetaResponseOutputItem::MultiAgentCall, OpenAI::Models::Beta::BetaResponseOutputItem::MultiAgentCallOutput, OpenAI::Models::Beta::BetaResponseFunctionWebSearch, OpenAI::Models::Beta::BetaResponseComputerToolCall, OpenAI::Models::Beta::BetaResponseComputerToolCallOutputItem, OpenAI::Models::Beta::BetaResponseReasoningItem, OpenAI::Models::Beta::BetaResponseOutputItem::Program, OpenAI::Models::Beta::BetaResponseOutputItem::ProgramOutput, OpenAI::Models::Beta::BetaResponseToolSearchCall, OpenAI::Models::Beta::BetaResponseToolSearchOutputItem, OpenAI::Models::Beta::BetaResponseOutputItem::AdditionalTools, OpenAI::Models::Beta::BetaResponseCompactionItem, OpenAI::Models::Beta::BetaResponseOutputItem::ImageGenerationCall, OpenAI::Models::Beta::BetaResponseCodeInterpreterToolCall, OpenAI::Models::Beta::BetaResponseOutputItem::LocalShellCall, OpenAI::Models::Beta::BetaResponseOutputItem::LocalShellCallOutput, OpenAI::Models::Beta::BetaResponseFunctionShellToolCall, OpenAI::Models::Beta::BetaResponseFunctionShellToolCallOutput, OpenAI::Models::Beta::BetaResponseApplyPatchToolCall, OpenAI::Models::Beta::BetaResponseApplyPatchToolCallOutput, OpenAI::Models::Beta::BetaResponseOutputItem::McpCall, OpenAI::Models::Beta::BetaResponseOutputItem::McpListTools, OpenAI::Models::Beta::BetaResponseOutputItem::McpApprovalRequest, OpenAI::Models::Beta::BetaResponseOutputItem::McpApprovalResponse, OpenAI::Models::Beta::BetaResponseCustomToolCall, OpenAI::Models::Beta::BetaResponseCustomToolCallOutputItem>] An array of content items generated by the model.
366
366
  #
@@ -419,17 +419,24 @@ module OpenAI
419
419
  # @see OpenAI::Models::Beta::BetaResponse#incomplete_details
420
420
  class IncompleteDetails < OpenAI::Internal::Type::BaseModel
421
421
  # @!attribute reason
422
- # The reason why the response is incomplete.
422
+ # The reason why the response is incomplete. `steered` means the response stopped
423
+ # at a safe output boundary after a WebSocket `response.steer` event. The server
424
+ # can then create a successor response automatically with the queued input.
423
425
  #
424
426
  # @return [Symbol, OpenAI::Models::Beta::BetaResponse::IncompleteDetails::Reason, nil]
425
427
  optional :reason, enum: -> { OpenAI::Beta::BetaResponse::IncompleteDetails::Reason }
426
428
 
427
429
  # @!method initialize(reason: nil)
430
+ # Some parameter documentations has been truncated, see
431
+ # {OpenAI::Models::Beta::BetaResponse::IncompleteDetails} for more details.
432
+ #
428
433
  # Details about why the response is incomplete.
429
434
  #
430
- # @param reason [Symbol, OpenAI::Models::Beta::BetaResponse::IncompleteDetails::Reason] The reason why the response is incomplete.
435
+ # @param reason [Symbol, OpenAI::Models::Beta::BetaResponse::IncompleteDetails::Reason] The reason why the response is incomplete. `steered` means
431
436
 
432
- # The reason why the response is incomplete.
437
+ # The reason why the response is incomplete. `steered` means the response stopped
438
+ # at a safe output boundary after a WebSocket `response.steer` event. The server
439
+ # can then create a successor response automatically with the queued input.
433
440
  #
434
441
  # @see OpenAI::Models::Beta::BetaResponse::IncompleteDetails#reason
435
442
  module Reason
@@ -438,6 +445,7 @@ module OpenAI
438
445
  MAX_OUTPUT_TOKENS = :max_output_tokens
439
446
  MAX_MESSAGES = :max_messages
440
447
  CONTENT_FILTER = :content_filter
448
+ STEERED = :steered
441
449
 
442
450
  # @!method self.values
443
451
  # @return [Array<Symbol>]
@@ -463,7 +471,7 @@ module OpenAI
463
471
  variant -> { OpenAI::Models::Beta::BetaResponse::Instructions::BetaResponseInputItemArray }
464
472
 
465
473
  # @!method self.variants
466
- # @return [Array(String, Array<OpenAI::Models::Beta::BetaEasyInputMessage, OpenAI::Models::Beta::BetaResponseInputItem::Message, OpenAI::Models::Beta::BetaResponseOutputMessage, OpenAI::Models::Beta::BetaResponseFileSearchToolCall, OpenAI::Models::Beta::BetaResponseComputerToolCall, OpenAI::Models::Beta::BetaResponseInputItem::ComputerCallOutput, OpenAI::Models::Beta::BetaResponseFunctionWebSearch, OpenAI::Models::Beta::BetaResponseFunctionToolCall, OpenAI::Models::Beta::BetaResponseInputItem::FunctionCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::AgentMessage, OpenAI::Models::Beta::BetaResponseInputItem::MultiAgentCall, OpenAI::Models::Beta::BetaResponseInputItem::MultiAgentCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ToolSearchCall, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam, OpenAI::Models::Beta::BetaResponseInputItem::AdditionalTools, OpenAI::Models::Beta::BetaResponseReasoningItem, OpenAI::Models::Beta::BetaResponseCompactionItemParam, OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall, OpenAI::Models::Beta::BetaResponseCodeInterpreterToolCall, OpenAI::Models::Beta::BetaResponseInputItem::LocalShellCall, OpenAI::Models::Beta::BetaResponseInputItem::LocalShellCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ShellCall, OpenAI::Models::Beta::BetaResponseInputItem::ShellCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ApplyPatchCall, OpenAI::Models::Beta::BetaResponseInputItem::ApplyPatchCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::McpListTools, OpenAI::Models::Beta::BetaResponseInputItem::McpApprovalRequest, OpenAI::Models::Beta::BetaResponseInputItem::McpApprovalResponse, OpenAI::Models::Beta::BetaResponseInputItem::McpCall, OpenAI::Models::Beta::BetaResponseCustomToolCallOutput, OpenAI::Models::Beta::BetaResponseCustomToolCall, OpenAI::Models::Beta::BetaResponseInputItem::CompactionTrigger, OpenAI::Models::Beta::BetaResponseInputItem::ItemReference, OpenAI::Models::Beta::BetaResponseInputItem::Program, OpenAI::Models::Beta::BetaResponseInputItem::ProgramOutput>)]
474
+ # @return [Array(String, Array<OpenAI::Models::Beta::BetaEasyInputMessage, OpenAI::Models::Beta::BetaResponseInputItem::Message, OpenAI::Models::Beta::BetaResponseOutputMessage, OpenAI::Models::Beta::BetaResponseFileSearchToolCall, OpenAI::Models::Beta::BetaResponseComputerToolCall, OpenAI::Models::Beta::BetaResponseInputItem::ComputerCallOutput, OpenAI::Models::Beta::BetaResponseFunctionWebSearch, OpenAI::Models::Beta::BetaResponseFunctionToolCall, OpenAI::Models::Beta::BetaResponseInputItem::FunctionCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::AgentMessage, OpenAI::Models::Beta::BetaResponseInputItem::MultiAgentCall, OpenAI::Models::Beta::BetaResponseInputItem::MultiAgentCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ToolSearchCall, OpenAI::Models::Beta::BetaResponseToolSearchOutputItemParam, OpenAI::Models::Beta::BetaResponseInputItem::AdditionalTools, OpenAI::Models::Beta::BetaResponseConfigurationUpdateItemParam, OpenAI::Models::Beta::BetaResponseReasoningItem, OpenAI::Models::Beta::BetaResponseCompactionItemParam, OpenAI::Models::Beta::BetaResponseInputItem::ImageGenerationCall, OpenAI::Models::Beta::BetaResponseCodeInterpreterToolCall, OpenAI::Models::Beta::BetaResponseInputItem::LocalShellCall, OpenAI::Models::Beta::BetaResponseInputItem::LocalShellCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ShellCall, OpenAI::Models::Beta::BetaResponseInputItem::ShellCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::ApplyPatchCall, OpenAI::Models::Beta::BetaResponseInputItem::ApplyPatchCallOutput, OpenAI::Models::Beta::BetaResponseInputItem::McpListTools, OpenAI::Models::Beta::BetaResponseInputItem::McpApprovalRequest, OpenAI::Models::Beta::BetaResponseInputItem::McpApprovalResponse, OpenAI::Models::Beta::BetaResponseInputItem::McpCall, OpenAI::Models::Beta::BetaResponseCustomToolCallOutput, OpenAI::Models::Beta::BetaResponseCustomToolCall, OpenAI::Models::Beta::BetaResponseInputItem::CompactionTrigger, OpenAI::Models::Beta::BetaResponseInputItem::ItemReference, OpenAI::Models::Beta::BetaResponseInputItem::Program, OpenAI::Models::Beta::BetaResponseInputItem::ProgramOutput>)]
467
475
 
468
476
  # @type [OpenAI::Internal::Type::Converter]
469
477
  BetaResponseInputItemArray = OpenAI::Internal::Type::ArrayOf[
@@ -471,7 +479,7 @@ module OpenAI
471
479
  ]
472
480
  end
473
481
 
474
- # Model ID used to generate the response, like `gpt-5.6-sol`. OpenAI offers a wide
482
+ # Model ID used to generate the response, like `gpt-6-astra`. OpenAI offers a wide
475
483
  # range of models with different capabilities, performance characteristics, and
476
484
  # price points. Refer to the
477
485
  # [model guide](https://platform.openai.com/docs/models) to browse and compare
@@ -481,6 +489,8 @@ module OpenAI
481
489
  module Model
482
490
  extend OpenAI::Internal::Type::Union
483
491
 
492
+ variant const: -> { OpenAI::Models::Beta::BetaResponse::Model::GPT_6_ASTRA }
493
+
484
494
  variant const: -> { OpenAI::Models::Beta::BetaResponse::Model::GPT_5_6_SOL }
485
495
 
486
496
  variant const: -> { OpenAI::Models::Beta::BetaResponse::Model::GPT_5_6_TERRA }
@@ -696,6 +706,7 @@ module OpenAI
696
706
 
697
707
  # @!group
698
708
 
709
+ GPT_6_ASTRA = :"gpt-6-astra"
699
710
  GPT_5_6_SOL = :"gpt-5.6-sol"
700
711
  GPT_5_6_TERRA = :"gpt-5.6-terra"
701
712
  GPT_5_6_LUNA = :"gpt-5.6-luna"
@@ -0,0 +1,103 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Beta
6
+ class BetaResponseConfigurationUpdateItem < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute id
8
+ # The unique ID of the configuration update item.
9
+ #
10
+ # @return [String]
11
+ required :id, String
12
+
13
+ # @!attribute type
14
+ # The item type. Always `configuration_update`.
15
+ #
16
+ # @return [Symbol, :configuration_update]
17
+ required :type, const: :configuration_update
18
+
19
+ # @!attribute agent
20
+ # The agent that produced this item.
21
+ #
22
+ # @return [OpenAI::Models::Beta::BetaResponseConfigurationUpdateItem::Agent, nil]
23
+ optional :agent, -> { OpenAI::Beta::BetaResponseConfigurationUpdateItem::Agent }
24
+
25
+ # @!attribute reasoning
26
+ # The reasoning configuration applied by this update.
27
+ #
28
+ # @return [OpenAI::Models::Beta::BetaResponseConfigurationUpdateItem::Reasoning, nil]
29
+ optional :reasoning, -> { OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning }
30
+
31
+ # @!method initialize(id:, agent: nil, reasoning: nil, type: :configuration_update)
32
+ # A configuration update that applies to subsequent responses until it is replaced
33
+ # by another configuration update.
34
+ #
35
+ # @param id [String] The unique ID of the configuration update item.
36
+ #
37
+ # @param agent [OpenAI::Models::Beta::BetaResponseConfigurationUpdateItem::Agent] The agent that produced this item.
38
+ #
39
+ # @param reasoning [OpenAI::Models::Beta::BetaResponseConfigurationUpdateItem::Reasoning] The reasoning configuration applied by this update.
40
+ #
41
+ # @param type [Symbol, :configuration_update] The item type. Always `configuration_update`.
42
+
43
+ # @see OpenAI::Models::Beta::BetaResponseConfigurationUpdateItem#agent
44
+ class Agent < OpenAI::Internal::Type::BaseModel
45
+ # @!attribute agent_name
46
+ # The canonical name of the agent that produced this item.
47
+ #
48
+ # @return [String]
49
+ required :agent_name, String
50
+
51
+ # @!method initialize(agent_name:)
52
+ # The agent that produced this item.
53
+ #
54
+ # @param agent_name [String] The canonical name of the agent that produced this item.
55
+ end
56
+
57
+ # @see OpenAI::Models::Beta::BetaResponseConfigurationUpdateItem#reasoning
58
+ class Reasoning < OpenAI::Internal::Type::BaseModel
59
+ # @!attribute effort
60
+ # The reasoning effort used for subsequent responses until another configuration
61
+ # update replaces it.
62
+ #
63
+ # @return [Symbol, OpenAI::Models::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort, nil]
64
+ optional(
65
+ :effort,
66
+ enum: -> { OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort },
67
+ nil?: true
68
+ )
69
+
70
+ # @!method initialize(effort: nil)
71
+ # Some parameter documentations has been truncated, see
72
+ # {OpenAI::Models::Beta::BetaResponseConfigurationUpdateItem::Reasoning} for more
73
+ # details.
74
+ #
75
+ # The reasoning configuration applied by this update.
76
+ #
77
+ # @param effort [Symbol, OpenAI::Models::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort, nil] The reasoning effort used for subsequent responses until another
78
+
79
+ # The reasoning effort used for subsequent responses until another configuration
80
+ # update replaces it.
81
+ #
82
+ # @see OpenAI::Models::Beta::BetaResponseConfigurationUpdateItem::Reasoning#effort
83
+ module Effort
84
+ extend OpenAI::Internal::Type::Enum
85
+
86
+ NONE = :none
87
+ MINIMAL = :minimal
88
+ LOW = :low
89
+ MEDIUM = :medium
90
+ HIGH = :high
91
+ XHIGH = :xhigh
92
+ MAX = :max
93
+
94
+ # @!method self.values
95
+ # @return [Array<Symbol>]
96
+ end
97
+ end
98
+ end
99
+ end
100
+
101
+ BetaResponseConfigurationUpdateItem = Beta::BetaResponseConfigurationUpdateItem
102
+ end
103
+ end
@@ -0,0 +1,104 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Beta
6
+ class BetaResponseConfigurationUpdateItemParam < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute type
8
+ # The item type. Always `configuration_update`.
9
+ #
10
+ # @return [Symbol, :configuration_update]
11
+ required :type, const: :configuration_update
12
+
13
+ # @!attribute id
14
+ # The unique ID of the configuration update item.
15
+ #
16
+ # @return [String, nil]
17
+ optional :id, String, nil?: true
18
+
19
+ # @!attribute agent
20
+ # The agent that produced this item.
21
+ #
22
+ # @return [OpenAI::Models::Beta::BetaResponseConfigurationUpdateItemParam::Agent, nil]
23
+ optional :agent, -> { OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Agent }, nil?: true
24
+
25
+ # @!attribute reasoning
26
+ # Updates to reasoning configuration. Only effort is supported.
27
+ #
28
+ # @return [OpenAI::Models::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning, nil]
29
+ optional :reasoning, -> { OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning }
30
+
31
+ # @!method initialize(id: nil, agent: nil, reasoning: nil, type: :configuration_update)
32
+ # An update to the conversation's response configuration. The configuration
33
+ # remains in effect for subsequent responses until it is replaced by another
34
+ # configuration update.
35
+ #
36
+ # @param id [String, nil] The unique ID of the configuration update item.
37
+ #
38
+ # @param agent [OpenAI::Models::Beta::BetaResponseConfigurationUpdateItemParam::Agent, nil] The agent that produced this item.
39
+ #
40
+ # @param reasoning [OpenAI::Models::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning] Updates to reasoning configuration. Only effort is supported.
41
+ #
42
+ # @param type [Symbol, :configuration_update] The item type. Always `configuration_update`.
43
+
44
+ # @see OpenAI::Models::Beta::BetaResponseConfigurationUpdateItemParam#agent
45
+ class Agent < OpenAI::Internal::Type::BaseModel
46
+ # @!attribute agent_name
47
+ # The canonical name of the agent that produced this item.
48
+ #
49
+ # @return [String]
50
+ required :agent_name, String
51
+
52
+ # @!method initialize(agent_name:)
53
+ # The agent that produced this item.
54
+ #
55
+ # @param agent_name [String] The canonical name of the agent that produced this item.
56
+ end
57
+
58
+ # @see OpenAI::Models::Beta::BetaResponseConfigurationUpdateItemParam#reasoning
59
+ class Reasoning < OpenAI::Internal::Type::BaseModel
60
+ # @!attribute effort
61
+ # The reasoning effort to use for subsequent responses until another configuration
62
+ # update replaces it.
63
+ #
64
+ # @return [Symbol, OpenAI::Models::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::Effort, nil]
65
+ optional(
66
+ :effort,
67
+ enum: -> { OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::Effort },
68
+ nil?: true
69
+ )
70
+
71
+ # @!method initialize(effort: nil)
72
+ # Some parameter documentations has been truncated, see
73
+ # {OpenAI::Models::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning} for
74
+ # more details.
75
+ #
76
+ # Updates to reasoning configuration. Only effort is supported.
77
+ #
78
+ # @param effort [Symbol, OpenAI::Models::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::Effort, nil] The reasoning effort to use for subsequent responses until another
79
+
80
+ # The reasoning effort to use for subsequent responses until another configuration
81
+ # update replaces it.
82
+ #
83
+ # @see OpenAI::Models::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning#effort
84
+ module Effort
85
+ extend OpenAI::Internal::Type::Enum
86
+
87
+ NONE = :none
88
+ MINIMAL = :minimal
89
+ LOW = :low
90
+ MEDIUM = :medium
91
+ HIGH = :high
92
+ XHIGH = :xhigh
93
+ MAX = :max
94
+
95
+ # @!method self.values
96
+ # @return [Array<Symbol>]
97
+ end
98
+ end
99
+ end
100
+ end
101
+
102
+ BetaResponseConfigurationUpdateItemParam = Beta::BetaResponseConfigurationUpdateItemParam
103
+ end
104
+ end
@@ -40,6 +40,12 @@ module OpenAI
40
40
  # @return [OpenAI::Models::Beta::BetaResponseCustomToolCall::Agent, nil]
41
41
  optional :agent, -> { OpenAI::Beta::BetaResponseCustomToolCall::Agent }, nil?: true
42
42
 
43
+ # @!attribute async
44
+ # Whether the custom tool call runs asynchronously.
45
+ #
46
+ # @return [Boolean, nil]
47
+ optional :async, OpenAI::Internal::Type::Boolean
48
+
43
49
  # @!attribute caller_
44
50
  # The execution context that produced this tool call.
45
51
  #
@@ -57,7 +63,7 @@ module OpenAI
57
63
  # @return [String, nil]
58
64
  optional :namespace, String
59
65
 
60
- # @!method initialize(call_id:, input:, name:, id: nil, agent: nil, caller_: nil, namespace: nil, type: :custom_tool_call)
66
+ # @!method initialize(call_id:, input:, name:, id: nil, agent: nil, async: nil, caller_: nil, namespace: nil, type: :custom_tool_call)
61
67
  # Some parameter documentations has been truncated, see
62
68
  # {OpenAI::Models::Beta::BetaResponseCustomToolCall} for more details.
63
69
  #
@@ -73,6 +79,8 @@ module OpenAI
73
79
  #
74
80
  # @param agent [OpenAI::Models::Beta::BetaResponseCustomToolCall::Agent, nil] The agent that produced this item.
75
81
  #
82
+ # @param async [Boolean] Whether the custom tool call runs asynchronously.
83
+ #
76
84
  # @param caller_ [OpenAI::Models::Beta::BetaResponseCustomToolCall::Caller::Direct, OpenAI::Models::Beta::BetaResponseCustomToolCall::Caller::Program, nil] The execution context that produced this tool call.
77
85
  #
78
86
  # @param namespace [String] The namespace of the custom tool being called.
@@ -23,7 +23,7 @@ module OpenAI
23
23
  # @return [String, nil]
24
24
  optional :created_by, String
25
25
 
26
- # @!method initialize(call_id:, input:, name:, id:, status:, agent: nil, caller_: nil, namespace: nil, created_by: nil, type: :custom_tool_call)
26
+ # @!method initialize(call_id:, input:, name:, id:, status:, agent: nil, async: nil, caller_: nil, namespace: nil, created_by: nil, type: :custom_tool_call)
27
27
  # Some parameter documentations has been truncated, see
28
28
  # {OpenAI::Models::Beta::BetaResponseCustomToolCallItem} for more details.
29
29
  #
@@ -41,6 +41,8 @@ module OpenAI
41
41
  #
42
42
  # @param agent [OpenAI::Models::Beta::BetaResponseCustomToolCall::Agent, nil] The agent that produced this item.
43
43
  #
44
+ # @param async [Boolean] Whether the custom tool call runs asynchronously.
45
+ #
44
46
  # @param caller_ [OpenAI::Models::Beta::BetaResponseCustomToolCall::Caller::Direct, OpenAI::Models::Beta::BetaResponseCustomToolCall::Caller::Program, nil] The execution context that produced this tool call.
45
47
  #
46
48
  # @param namespace [String] The namespace of the custom tool being called.