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
@@ -106,6 +106,14 @@ module OpenAI
106
106
  }
107
107
  attr_accessor :allowed_callers
108
108
 
109
+ # Whether the tool response can be returned asynchronously versus immediately
110
+ # returned on next response creation.
111
+ sig { returns(T.nilable(T::Boolean)) }
112
+ attr_reader :async
113
+
114
+ sig { params(async: T::Boolean).void }
115
+ attr_writer :async
116
+
109
117
  # Whether this function should be deferred and discovered via tool search.
110
118
  sig { returns(T.nilable(T::Boolean)) }
111
119
  attr_reader :defer_loading
@@ -139,6 +147,8 @@ module OpenAI
139
147
  T::Array[OpenAI::Beta::BetaNamespaceTool::Tool::Function::AllowedCaller::OrSymbol]
140
148
  ),
141
149
 
150
+ async: T::Boolean,
151
+
142
152
  defer_loading: T::Boolean,
143
153
 
144
154
  description: T.nilable(String),
@@ -160,6 +170,10 @@ module OpenAI
160
170
  # The tool invocation context(s).
161
171
  allowed_callers: nil,
162
172
 
173
+ # Whether the tool response can be returned asynchronously versus immediately
174
+ # returned on next response creation.
175
+ async: nil,
176
+
163
177
  # Whether this function should be deferred and discovered via tool search.
164
178
  defer_loading: nil,
165
179
 
@@ -188,6 +202,7 @@ module OpenAI
188
202
  allowed_callers: T.nilable(
189
203
  T::Array[OpenAI::Beta::BetaNamespaceTool::Tool::Function::AllowedCaller::OrSymbol]
190
204
  ),
205
+ async: T::Boolean,
191
206
  defer_loading: T::Boolean,
192
207
  description: T.nilable(String),
193
208
  output_schema: T.nilable(T::Hash[Symbol, T.anything]),
@@ -55,7 +55,7 @@ module OpenAI
55
55
  sig { returns(T.nilable(T::Hash[Symbol, String])) }
56
56
  attr_accessor :metadata
57
57
 
58
- # Model ID used to generate the response, like `gpt-5.6-sol`. OpenAI offers a wide
58
+ # Model ID used to generate the response, like `gpt-6-astra`. OpenAI offers a wide
59
59
  # range of models with different capabilities, performance characteristics, and
60
60
  # price points. Refer to the
61
61
  # [model guide](https://platform.openai.com/docs/models) to browse and compare
@@ -475,7 +475,7 @@ module OpenAI
475
475
  # a maximum length of 512 characters.
476
476
  metadata:,
477
477
 
478
- # Model ID used to generate the response, like `gpt-5.6-sol`. OpenAI offers a wide
478
+ # Model ID used to generate the response, like `gpt-6-astra`. OpenAI offers a wide
479
479
  # range of models with different capabilities, performance characteristics, and
480
480
  # price points. Refer to the
481
481
  # [model guide](https://platform.openai.com/docs/models) to browse and compare
@@ -729,7 +729,9 @@ module OpenAI
729
729
  )
730
730
  end
731
731
 
732
- # The reason why the response is incomplete.
732
+ # The reason why the response is incomplete. `steered` means the response stopped
733
+ # at a safe output boundary after a WebSocket `response.steer` event. The server
734
+ # can then create a successor response automatically with the queued input.
733
735
  sig { returns(T.nilable(OpenAI::Beta::BetaResponse::IncompleteDetails::Reason::TaggedSymbol)) }
734
736
  attr_reader :reason
735
737
 
@@ -746,7 +748,9 @@ module OpenAI
746
748
  end
747
749
  def self.new(
748
750
 
749
- # The reason why the response is incomplete.
751
+ # The reason why the response is incomplete. `steered` means the response stopped
752
+ # at a safe output boundary after a WebSocket `response.steer` event. The server
753
+ # can then create a successor response automatically with the queued input.
750
754
 
751
755
  reason: nil
752
756
  )
@@ -760,7 +764,9 @@ module OpenAI
760
764
  def to_hash
761
765
  end
762
766
 
763
- # The reason why the response is incomplete.
767
+ # The reason why the response is incomplete. `steered` means the response stopped
768
+ # at a safe output boundary after a WebSocket `response.steer` event. The server
769
+ # can then create a successor response automatically with the queued input.
764
770
  module Reason
765
771
  extend OpenAI::Internal::Type::Enum
766
772
 
@@ -773,6 +779,7 @@ module OpenAI
773
779
  )
774
780
  MAX_MESSAGES = T.let(:max_messages, OpenAI::Beta::BetaResponse::IncompleteDetails::Reason::TaggedSymbol)
775
781
  CONTENT_FILTER = T.let(:content_filter, OpenAI::Beta::BetaResponse::IncompleteDetails::Reason::TaggedSymbol)
782
+ STEERED = T.let(:steered, OpenAI::Beta::BetaResponse::IncompleteDetails::Reason::TaggedSymbol)
776
783
 
777
784
  sig { override.returns(T::Array[OpenAI::Beta::BetaResponse::IncompleteDetails::Reason::TaggedSymbol]) }
778
785
  def self.values
@@ -801,7 +808,7 @@ module OpenAI
801
808
 
802
809
  end
803
810
 
804
- # Model ID used to generate the response, like `gpt-5.6-sol`. OpenAI offers a wide
811
+ # Model ID used to generate the response, like `gpt-6-astra`. OpenAI offers a wide
805
812
  # range of models with different capabilities, performance characteristics, and
806
813
  # price points. Refer to the
807
814
  # [model guide](https://platform.openai.com/docs/models) to browse and compare
@@ -821,6 +828,7 @@ module OpenAI
821
828
 
822
829
  OrSymbol = T.type_alias { T.any(Symbol, String) }
823
830
 
831
+ GPT_6_ASTRA = T.let(:"gpt-6-astra", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
824
832
  GPT_5_6_SOL = T.let(:"gpt-5.6-sol", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
825
833
  GPT_5_6_TERRA = T.let(:"gpt-5.6-terra", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
826
834
  GPT_5_6_LUNA = T.let(:"gpt-5.6-luna", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
@@ -0,0 +1,200 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ BetaResponseConfigurationUpdateItem = Beta::BetaResponseConfigurationUpdateItem
7
+
8
+ module Beta
9
+
10
+ class BetaResponseConfigurationUpdateItem < OpenAI::Internal::Type::BaseModel
11
+
12
+ OrHash = T.type_alias do
13
+ T.any(
14
+ OpenAI::Beta::BetaResponseConfigurationUpdateItem,
15
+ OpenAI::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ # The unique ID of the configuration update item.
20
+ sig { returns(String) }
21
+ attr_accessor :id
22
+
23
+ # The item type. Always `configuration_update`.
24
+ sig { returns(Symbol) }
25
+ attr_accessor :type
26
+
27
+ # The agent that produced this item.
28
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItem::Agent)) }
29
+ attr_reader :agent
30
+
31
+ sig { params(agent: OpenAI::Beta::BetaResponseConfigurationUpdateItem::Agent::OrHash).void }
32
+ attr_writer :agent
33
+
34
+ # The reasoning configuration applied by this update.
35
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning)) }
36
+ attr_reader :reasoning
37
+
38
+ sig { params(reasoning: OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::OrHash).void }
39
+ attr_writer :reasoning
40
+
41
+ # A configuration update that applies to subsequent responses until it is replaced
42
+ # by another configuration update.
43
+ sig do
44
+ params(
45
+
46
+ id: String,
47
+
48
+ agent: OpenAI::Beta::BetaResponseConfigurationUpdateItem::Agent::OrHash,
49
+
50
+ reasoning: OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::OrHash,
51
+
52
+ type: Symbol
53
+ )
54
+ .returns(T.attached_class)
55
+ end
56
+ def self.new(
57
+
58
+ # The unique ID of the configuration update item.
59
+ id:,
60
+
61
+ # The agent that produced this item.
62
+ agent: nil,
63
+
64
+ # The reasoning configuration applied by this update.
65
+ reasoning: nil,
66
+
67
+ # The item type. Always `configuration_update`.
68
+
69
+ type: :configuration_update
70
+ )
71
+ end
72
+
73
+ sig do
74
+ override.returns(
75
+ {
76
+ id: String,
77
+ type: Symbol,
78
+ agent: OpenAI::Beta::BetaResponseConfigurationUpdateItem::Agent,
79
+ reasoning: OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning
80
+ }
81
+ )
82
+ end
83
+ def to_hash
84
+ end
85
+
86
+ class Agent < OpenAI::Internal::Type::BaseModel
87
+ OrHash = T.type_alias do
88
+ T.any(
89
+ OpenAI::Beta::BetaResponseConfigurationUpdateItem::Agent,
90
+ OpenAI::Internal::AnyHash
91
+ )
92
+ end
93
+
94
+ # The canonical name of the agent that produced this item.
95
+ sig { returns(String) }
96
+ attr_accessor :agent_name
97
+
98
+ # The agent that produced this item.
99
+ sig do
100
+ params(
101
+
102
+ agent_name: String
103
+ )
104
+ .returns(T.attached_class)
105
+ end
106
+ def self.new(
107
+
108
+ # The canonical name of the agent that produced this item.
109
+
110
+ agent_name:
111
+ )
112
+ end
113
+
114
+ sig do
115
+ override.returns(
116
+ {agent_name: String}
117
+ )
118
+ end
119
+ def to_hash
120
+ end
121
+
122
+ end
123
+
124
+ class Reasoning < OpenAI::Internal::Type::BaseModel
125
+ OrHash = T.type_alias do
126
+ T.any(
127
+ OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning,
128
+ OpenAI::Internal::AnyHash
129
+ )
130
+ end
131
+
132
+ # The reasoning effort used for subsequent responses until another configuration
133
+ # update replaces it.
134
+ sig {
135
+ returns(T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol))
136
+ }
137
+ attr_accessor :effort
138
+
139
+ # The reasoning configuration applied by this update.
140
+ sig do
141
+ params(
142
+
143
+ effort: T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::OrSymbol)
144
+ )
145
+ .returns(T.attached_class)
146
+ end
147
+ def self.new(
148
+
149
+ # The reasoning effort used for subsequent responses until another configuration
150
+ # update replaces it.
151
+
152
+ effort: nil
153
+ )
154
+ end
155
+
156
+ sig do
157
+ override.returns(
158
+ {effort: T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol)}
159
+ )
160
+ end
161
+ def to_hash
162
+ end
163
+
164
+ # The reasoning effort used for subsequent responses until another configuration
165
+ # update replaces it.
166
+ module Effort
167
+ extend OpenAI::Internal::Type::Enum
168
+
169
+ TaggedSymbol = T.type_alias {
170
+ T.all(Symbol, OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort)
171
+ }
172
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
173
+
174
+ NONE = T.let(:none, OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol)
175
+ MINIMAL = T.let(
176
+ :minimal,
177
+ OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol
178
+ )
179
+ LOW = T.let(:low, OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol)
180
+ MEDIUM = T.let(:medium, OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol)
181
+ HIGH = T.let(:high, OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol)
182
+ XHIGH = T.let(:xhigh, OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol)
183
+ MAX = T.let(:max, OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol)
184
+
185
+ sig {
186
+ override.returns(
187
+ T::Array[OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol]
188
+ )
189
+ }
190
+ def self.values
191
+ end
192
+ end
193
+ end
194
+
195
+ end
196
+
197
+ end
198
+
199
+ end
200
+ end
@@ -0,0 +1,207 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ BetaResponseConfigurationUpdateItemParam = Beta::BetaResponseConfigurationUpdateItemParam
7
+
8
+ module Beta
9
+
10
+ class BetaResponseConfigurationUpdateItemParam < OpenAI::Internal::Type::BaseModel
11
+
12
+ OrHash = T.type_alias do
13
+ T.any(
14
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam,
15
+ OpenAI::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ # The item type. Always `configuration_update`.
20
+ sig { returns(Symbol) }
21
+ attr_accessor :type
22
+
23
+ # The unique ID of the configuration update item.
24
+ sig { returns(T.nilable(String)) }
25
+ attr_accessor :id
26
+
27
+ # The agent that produced this item.
28
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Agent)) }
29
+ attr_reader :agent
30
+
31
+ sig { params(agent: T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Agent::OrHash)).void }
32
+ attr_writer :agent
33
+
34
+ # Updates to reasoning configuration. Only effort is supported.
35
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning)) }
36
+ attr_reader :reasoning
37
+
38
+ sig { params(reasoning: OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::OrHash).void }
39
+ attr_writer :reasoning
40
+
41
+ # An update to the conversation's response configuration. The configuration
42
+ # remains in effect for subsequent responses until it is replaced by another
43
+ # configuration update.
44
+ sig do
45
+ params(
46
+
47
+ id: T.nilable(String),
48
+
49
+ agent: T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Agent::OrHash),
50
+
51
+ reasoning: OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::OrHash,
52
+
53
+ type: Symbol
54
+ )
55
+ .returns(T.attached_class)
56
+ end
57
+ def self.new(
58
+
59
+ # The unique ID of the configuration update item.
60
+ id: nil,
61
+
62
+ # The agent that produced this item.
63
+ agent: nil,
64
+
65
+ # Updates to reasoning configuration. Only effort is supported.
66
+ reasoning: nil,
67
+
68
+ # The item type. Always `configuration_update`.
69
+
70
+ type: :configuration_update
71
+ )
72
+ end
73
+
74
+ sig do
75
+ override.returns(
76
+ {
77
+ type: Symbol,
78
+ id: T.nilable(String),
79
+ agent: T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Agent),
80
+ reasoning: OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning
81
+ }
82
+ )
83
+ end
84
+ def to_hash
85
+ end
86
+
87
+ class Agent < OpenAI::Internal::Type::BaseModel
88
+ OrHash = T.type_alias do
89
+ T.any(
90
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Agent,
91
+ OpenAI::Internal::AnyHash
92
+ )
93
+ end
94
+
95
+ # The canonical name of the agent that produced this item.
96
+ sig { returns(String) }
97
+ attr_accessor :agent_name
98
+
99
+ # The agent that produced this item.
100
+ sig do
101
+ params(
102
+
103
+ agent_name: String
104
+ )
105
+ .returns(T.attached_class)
106
+ end
107
+ def self.new(
108
+
109
+ # The canonical name of the agent that produced this item.
110
+
111
+ agent_name:
112
+ )
113
+ end
114
+
115
+ sig do
116
+ override.returns(
117
+ {agent_name: String}
118
+ )
119
+ end
120
+ def to_hash
121
+ end
122
+
123
+ end
124
+
125
+ class Reasoning < OpenAI::Internal::Type::BaseModel
126
+ OrHash = T.type_alias do
127
+ T.any(
128
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning,
129
+ OpenAI::Internal::AnyHash
130
+ )
131
+ end
132
+
133
+ # The reasoning effort to use for subsequent responses until another configuration
134
+ # update replaces it.
135
+ sig {
136
+ returns(T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::Effort::OrSymbol))
137
+ }
138
+ attr_accessor :effort
139
+
140
+ # Updates to reasoning configuration. Only effort is supported.
141
+ sig do
142
+ params(
143
+
144
+ effort: T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::Effort::OrSymbol)
145
+ )
146
+ .returns(T.attached_class)
147
+ end
148
+ def self.new(
149
+
150
+ # The reasoning effort to use for subsequent responses until another configuration
151
+ # update replaces it.
152
+
153
+ effort: nil
154
+ )
155
+ end
156
+
157
+ sig do
158
+ override.returns(
159
+ {effort: T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::Effort::OrSymbol)}
160
+ )
161
+ end
162
+ def to_hash
163
+ end
164
+
165
+ # The reasoning effort to use for subsequent responses until another configuration
166
+ # update replaces it.
167
+ module Effort
168
+ extend OpenAI::Internal::Type::Enum
169
+
170
+ TaggedSymbol = T.type_alias {
171
+ T.all(Symbol, OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::Effort)
172
+ }
173
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
174
+
175
+ NONE = T.let(:none, OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::Effort::TaggedSymbol)
176
+ MINIMAL = T.let(
177
+ :minimal,
178
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::Effort::TaggedSymbol
179
+ )
180
+ LOW = T.let(:low, OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::Effort::TaggedSymbol)
181
+ MEDIUM = T.let(
182
+ :medium,
183
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::Effort::TaggedSymbol
184
+ )
185
+ HIGH = T.let(:high, OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::Effort::TaggedSymbol)
186
+ XHIGH = T.let(
187
+ :xhigh,
188
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::Effort::TaggedSymbol
189
+ )
190
+ MAX = T.let(:max, OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::Effort::TaggedSymbol)
191
+
192
+ sig {
193
+ override.returns(
194
+ T::Array[OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::Reasoning::Effort::TaggedSymbol]
195
+ )
196
+ }
197
+ def self.values
198
+ end
199
+ end
200
+ end
201
+
202
+ end
203
+
204
+ end
205
+
206
+ end
207
+ end
@@ -46,6 +46,13 @@ module OpenAI
46
46
  sig { params(agent: T.nilable(OpenAI::Beta::BetaResponseCustomToolCall::Agent::OrHash)).void }
47
47
  attr_writer :agent
48
48
 
49
+ # Whether the custom tool call runs asynchronously.
50
+ sig { returns(T.nilable(T::Boolean)) }
51
+ attr_reader :async
52
+
53
+ sig { params(async: T::Boolean).void }
54
+ attr_writer :async
55
+
49
56
  # The execution context that produced this tool call.
50
57
  sig {
51
58
  returns(
@@ -80,6 +87,8 @@ module OpenAI
80
87
 
81
88
  agent: T.nilable(OpenAI::Beta::BetaResponseCustomToolCall::Agent::OrHash),
82
89
 
90
+ async: T::Boolean,
91
+
83
92
  caller_: T.nilable(
84
93
  T.any(
85
94
  OpenAI::Beta::BetaResponseCustomToolCall::Caller::Direct::OrHash,
@@ -110,6 +119,9 @@ module OpenAI
110
119
  # The agent that produced this item.
111
120
  agent: nil,
112
121
 
122
+ # Whether the custom tool call runs asynchronously.
123
+ async: nil,
124
+
113
125
  # The execution context that produced this tool call.
114
126
  caller_: nil,
115
127
 
@@ -131,6 +143,7 @@ module OpenAI
131
143
  type: Symbol,
132
144
  id: String,
133
145
  agent: T.nilable(OpenAI::Beta::BetaResponseCustomToolCall::Agent),
146
+ async: T::Boolean,
134
147
  caller_: T.nilable(
135
148
  T.any(
136
149
  OpenAI::Beta::BetaResponseCustomToolCall::Caller::Direct,
@@ -48,6 +48,8 @@ module OpenAI
48
48
 
49
49
  agent: T.nilable(OpenAI::Beta::BetaResponseCustomToolCall::Agent::OrHash),
50
50
 
51
+ async: T::Boolean,
52
+
51
53
  caller_: T.nilable(
52
54
  T.any(
53
55
  OpenAI::Beta::BetaResponseCustomToolCall::Caller::Direct::OrHash,
@@ -84,6 +86,9 @@ module OpenAI
84
86
  # The agent that produced this item.
85
87
  agent: nil,
86
88
 
89
+ # Whether the custom tool call runs asynchronously.
90
+ async: nil,
91
+
87
92
  # The execution context that produced this tool call.
88
93
  caller_: nil,
89
94
 
@@ -109,6 +114,7 @@ module OpenAI
109
114
  status: OpenAI::Beta::BetaResponseCustomToolCallItem::Status::TaggedSymbol,
110
115
  type: Symbol,
111
116
  agent: T.nilable(OpenAI::Beta::BetaResponseCustomToolCall::Agent),
117
+ async: T::Boolean,
112
118
  caller_: T.nilable(
113
119
  T.any(
114
120
  OpenAI::Beta::BetaResponseCustomToolCall::Caller::Direct,