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
@@ -0,0 +1,151 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Beta
6
+ class BetaResponseSteerFailedEvent < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute error
8
+ # Information about why the input could not be committed.
9
+ #
10
+ # @return [OpenAI::Models::Beta::BetaResponseSteerFailedEvent::Error]
11
+ required :error, -> { OpenAI::Beta::BetaResponseSteerFailedEvent::Error }
12
+
13
+ # @!attribute sequence_number
14
+ # The sequence number for this event.
15
+ #
16
+ # @return [Integer]
17
+ required :sequence_number, Integer
18
+
19
+ # @!attribute steer
20
+ # The steering submission that could not be committed.
21
+ #
22
+ # @return [OpenAI::Models::Beta::BetaResponseSteerFailedEvent::Steer]
23
+ required :steer, -> { OpenAI::Beta::BetaResponseSteerFailedEvent::Steer }
24
+
25
+ # @!attribute type
26
+ # The event discriminator. Always `response.steer.failed`.
27
+ #
28
+ # @return [Symbol, :"response.steer.failed"]
29
+ required :type, const: :"response.steer.failed"
30
+
31
+ # @!attribute stream_id
32
+ # The WebSocket lane that emitted this event, when the target response is
33
+ # available and its `response.create` event supplied a `stream_id`.
34
+ #
35
+ # @return [String, nil]
36
+ optional :stream_id, String
37
+
38
+ # @!method initialize(error:, sequence_number:, steer:, stream_id: nil, type: :"response.steer.failed")
39
+ # Some parameter documentations has been truncated, see
40
+ # {OpenAI::Models::Beta::BetaResponseSteerFailedEvent} for more details.
41
+ #
42
+ # Emitted when steering input is rejected or cannot be committed to a successor
43
+ # response. Returns the original, uncommitted input so the client can carry it
44
+ # into `response.create` when appropriate. Invalid input must be corrected before
45
+ # retrying.
46
+ #
47
+ # Failures after acceptance include the same steering ID. Failures before an ID is
48
+ # allocated omit `steer.id`. A lost connection or missing acknowledgement leaves
49
+ # the outcome unknown; it is not proof that the input was rejected.
50
+ #
51
+ # @param error [OpenAI::Models::Beta::BetaResponseSteerFailedEvent::Error] Information about why the input could not be committed.
52
+ #
53
+ # @param sequence_number [Integer] The sequence number for this event.
54
+ #
55
+ # @param steer [OpenAI::Models::Beta::BetaResponseSteerFailedEvent::Steer] The steering submission that could not be committed.
56
+ #
57
+ # @param stream_id [String] The WebSocket lane that emitted this event, when the target response is
58
+ #
59
+ # @param type [Symbol, :"response.steer.failed"] The event discriminator. Always `response.steer.failed`.
60
+
61
+ # @see OpenAI::Models::Beta::BetaResponseSteerFailedEvent#error
62
+ class Error < OpenAI::Internal::Type::BaseModel
63
+ # @!attribute code
64
+ # A machine-readable steering error code. Clients should handle unknown values
65
+ # because additional codes may be introduced. Known values include:
66
+ #
67
+ # - `response_not_found`: The target response is not available on this connection.
68
+ # - `invalid_input`: The event or input failed validation.
69
+ # - `steering_not_supported`: The model or response execution mode does not
70
+ # support steering.
71
+ # - `too_many_pending_steers`: Too much steering input is pending for the
72
+ # response.
73
+ # - `response_already_completed`: The response completed and is no longer
74
+ # accepting steering input.
75
+ # - `response_not_active`: The response is no longer accepting steering input.
76
+ # - `successor_creation_failed`: The successor response could not be created.
77
+ #
78
+ # @return [Symbol, String, OpenAI::Models::Beta::BetaResponseSteerErrorCode]
79
+ required :code, union: -> { OpenAI::Beta::BetaResponseSteerErrorCode }
80
+
81
+ # @!attribute message
82
+ # A human-readable description of the error.
83
+ #
84
+ # @return [String]
85
+ required :message, String
86
+
87
+ # @!attribute type
88
+ # The error type. Always `invalid_request_error`.
89
+ #
90
+ # @return [Symbol, :invalid_request_error]
91
+ required :type, const: :invalid_request_error
92
+
93
+ # @!method initialize(code:, message:, type: :invalid_request_error)
94
+ # Some parameter documentations has been truncated, see
95
+ # {OpenAI::Models::Beta::BetaResponseSteerFailedEvent::Error} for more details.
96
+ #
97
+ # Information about why the input could not be committed.
98
+ #
99
+ # @param code [Symbol, String, OpenAI::Models::Beta::BetaResponseSteerErrorCode] A machine-readable steering error code. Clients should handle unknown
100
+ #
101
+ # @param message [String] A human-readable description of the error.
102
+ #
103
+ # @param type [Symbol, :invalid_request_error] The error type. Always `invalid_request_error`.
104
+ end
105
+
106
+ # @see OpenAI::Models::Beta::BetaResponseSteerFailedEvent#steer
107
+ class Steer < OpenAI::Internal::Type::BaseModel
108
+ # @!attribute input
109
+ # Input to queue for a continuation of the response. Uses the same string or
110
+ # input-item shape as `response.create.input`, with a non-empty array when
111
+ # supplying input items.
112
+ #
113
+ # Steering accepts only messages with the `user` role. Each message may contain
114
+ # only `type`, `role`, and `content`, with `content` as a string or an array of
115
+ # `input_text`, `input_image`, and `input_file` parts. The optional `type` must be
116
+ # `message`. Other roles, tool outputs, and item types are not supported for
117
+ # steering.
118
+ #
119
+ # @return [String, Array<Hash{Symbol=>Object}>]
120
+ required :input, union: -> { OpenAI::Beta::BetaResponseSteerInput }
121
+
122
+ # @!attribute previous_response_id
123
+ # The ID of the response that was targeted for steering.
124
+ #
125
+ # @return [String]
126
+ required :previous_response_id, String
127
+
128
+ # @!attribute id
129
+ # The ID assigned to the steering submission, if one was allocated.
130
+ #
131
+ # @return [String, nil]
132
+ optional :id, String
133
+
134
+ # @!method initialize(input:, previous_response_id:, id: nil)
135
+ # Some parameter documentations has been truncated, see
136
+ # {OpenAI::Models::Beta::BetaResponseSteerFailedEvent::Steer} for more details.
137
+ #
138
+ # The steering submission that could not be committed.
139
+ #
140
+ # @param input [String, Array<Hash{Symbol=>Object}>] Input to queue for a continuation of the response. Uses the same string or
141
+ #
142
+ # @param previous_response_id [String] The ID of the response that was targeted for steering.
143
+ #
144
+ # @param id [String] The ID assigned to the steering submission, if one was allocated.
145
+ end
146
+ end
147
+ end
148
+
149
+ BetaResponseSteerFailedEvent = Beta::BetaResponseSteerFailedEvent
150
+ end
151
+ end
@@ -0,0 +1,360 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Beta
6
+ # Input to queue for a continuation of the response. Uses the same string or
7
+ # input-item shape as `response.create.input`, with a non-empty array when
8
+ # supplying input items.
9
+ #
10
+ # Steering accepts only messages with the `user` role. Each message may contain
11
+ # only `type`, `role`, and `content`, with `content` as a string or an array of
12
+ # `input_text`, `input_image`, and `input_file` parts. The optional `type` must be
13
+ # `message`. Other roles, tool outputs, and item types are not supported for
14
+ # steering.
15
+ module BetaResponseSteerInput
16
+ extend OpenAI::Internal::Type::Union
17
+
18
+ # A text input, equivalent to a message with the `user` role.
19
+ variant String
20
+
21
+ # A non-empty list of message inputs to queue for the response.
22
+ variant -> { OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemListArray }
23
+
24
+ # The output of a function tool call.
25
+ module ResponseSteerInputItemList
26
+ extend OpenAI::Internal::Type::Union
27
+
28
+ discriminator :type
29
+
30
+ variant :message, -> { OpenAI::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::Message }
31
+
32
+ # The output of a function tool call.
33
+ variant(
34
+ :function_call_output,
35
+ -> { OpenAI::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput }
36
+ )
37
+
38
+ class Message < OpenAI::Internal::Type::BaseModel
39
+ # @!attribute content
40
+ # The message content, as an array of content parts.
41
+ #
42
+ # @return [Array<OpenAI::Models::Beta::BetaResponseInputTextContent, OpenAI::Models::Beta::BetaResponseInputImageContent, OpenAI::Models::Beta::BetaResponseInputFileContent>, String]
43
+ required(
44
+ :content,
45
+ union: -> { OpenAI::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::Message::Content }
46
+ )
47
+
48
+ # @!attribute role
49
+ # The message role. Always `user`.
50
+ #
51
+ # @return [Symbol, :user]
52
+ required :role, const: :user
53
+
54
+ # @!attribute type
55
+ # The item type. Always `message`.
56
+ #
57
+ # @return [Symbol, :message]
58
+ required :type, const: :message
59
+
60
+ # @!attribute id
61
+ # The unique ID of this message item.
62
+ #
63
+ # @return [String, nil]
64
+ optional :id, String, nil?: true
65
+
66
+ # @!attribute agent
67
+ # The agent that produced this item.
68
+ #
69
+ # @return [OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::Message::Agent, nil]
70
+ optional(
71
+ :agent,
72
+ -> { OpenAI::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::Message::Agent },
73
+ nil?: true
74
+ )
75
+
76
+ # @!attribute status
77
+ # The status of the message item.
78
+ #
79
+ # @return [String, nil]
80
+ optional :status, String, nil?: true
81
+
82
+ # @!method initialize(content:, id: nil, agent: nil, status: nil, role: :user, type: :message)
83
+ # @param content [Array<OpenAI::Models::Beta::BetaResponseInputTextContent, OpenAI::Models::Beta::BetaResponseInputImageContent, OpenAI::Models::Beta::BetaResponseInputFileContent>, String] The message content, as an array of content parts.
84
+ #
85
+ # @param id [String, nil] The unique ID of this message item.
86
+ #
87
+ # @param agent [OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::Message::Agent, nil] The agent that produced this item.
88
+ #
89
+ # @param status [String, nil] The status of the message item.
90
+ #
91
+ # @param role [Symbol, :user] The message role. Always `user`.
92
+ #
93
+ # @param type [Symbol, :message] The item type. Always `message`.
94
+
95
+ # The message content, as an array of content parts.
96
+ #
97
+ # @see OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::Message#content
98
+ module Content
99
+ extend OpenAI::Internal::Type::Union
100
+
101
+ variant(
102
+ -> {
103
+ OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::Message::Content::BetaResponseSteerInputContentArray
104
+ }
105
+ )
106
+
107
+ # The message content, as a single string.
108
+ variant String
109
+
110
+ # @!method self.variants
111
+ # @return [Array(Array<OpenAI::Models::Beta::BetaResponseInputTextContent, OpenAI::Models::Beta::BetaResponseInputImageContent, OpenAI::Models::Beta::BetaResponseInputFileContent>, String)]
112
+
113
+ # @type [OpenAI::Internal::Type::Converter]
114
+ BetaResponseSteerInputContentArray = OpenAI::Internal::Type::ArrayOf[
115
+ union: -> { OpenAI::Beta::BetaResponseSteerInputContent }
116
+ ]
117
+ end
118
+
119
+ # @see OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::Message#agent
120
+ class Agent < OpenAI::Internal::Type::BaseModel
121
+ # @!attribute agent_name
122
+ # The canonical name of the agent that produced this item.
123
+ #
124
+ # @return [String]
125
+ required :agent_name, String
126
+
127
+ # @!method initialize(agent_name:)
128
+ # The agent that produced this item.
129
+ #
130
+ # @param agent_name [String] The canonical name of the agent that produced this item.
131
+ end
132
+ end
133
+
134
+ class FunctionCallOutput < OpenAI::Internal::Type::BaseModel
135
+ # @!attribute output
136
+ # Text, image, or file output of the function tool call.
137
+ #
138
+ # @return [String, Array<OpenAI::Models::Beta::BetaResponseInputTextContent, OpenAI::Models::Beta::BetaResponseInputImageContent, OpenAI::Models::Beta::BetaResponseInputFileContent>]
139
+ required(
140
+ :output,
141
+ union: -> {
142
+ OpenAI::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Output
143
+ }
144
+ )
145
+
146
+ # @!attribute type
147
+ # The type of the function tool call output. Always `function_call_output`.
148
+ #
149
+ # @return [Symbol, :function_call_output]
150
+ required :type, const: :function_call_output
151
+
152
+ # @!attribute id
153
+ # The unique ID of the function tool call output. Populated when this item is
154
+ # returned via API.
155
+ #
156
+ # @return [String, nil]
157
+ optional :id, String, nil?: true
158
+
159
+ # @!attribute agent
160
+ # The agent that produced this item.
161
+ #
162
+ # @return [OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Agent, nil]
163
+ optional(
164
+ :agent,
165
+ -> {
166
+ OpenAI::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Agent
167
+ },
168
+ nil?: true
169
+ )
170
+
171
+ # @!attribute call_id
172
+ # The unique ID of the function tool call generated by the model.
173
+ #
174
+ # @return [String, nil]
175
+ optional :call_id, String, nil?: true
176
+
177
+ # @!attribute caller_
178
+ # The execution context that produced this tool call.
179
+ #
180
+ # @return [OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller::Direct, OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller::Program, nil]
181
+ optional(
182
+ :caller_,
183
+ union: -> {
184
+ OpenAI::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller
185
+ },
186
+ api_name: :caller,
187
+ nil?: true
188
+ )
189
+
190
+ # @!attribute name
191
+ # The name of the tool that produced the output.
192
+ #
193
+ # @return [String, nil]
194
+ optional :name, String, nil?: true
195
+
196
+ # @!attribute namespace
197
+ # The namespace of the tool that produced the output.
198
+ #
199
+ # @return [String, nil]
200
+ optional :namespace, String, nil?: true
201
+
202
+ # @!attribute status
203
+ # The status of the item. One of `in_progress`, `completed`, or `incomplete`.
204
+ # Populated when items are returned via API.
205
+ #
206
+ # @return [Symbol, OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Status, nil]
207
+ optional(
208
+ :status,
209
+ enum: -> {
210
+ OpenAI::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Status
211
+ },
212
+ nil?: true
213
+ )
214
+
215
+ # @!method initialize(output:, id: nil, agent: nil, call_id: nil, caller_: nil, name: nil, namespace: nil, status: nil, type: :function_call_output)
216
+ # Some parameter documentations has been truncated, see
217
+ # {OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput}
218
+ # for more details.
219
+ #
220
+ # The output of a function tool call.
221
+ #
222
+ # @param output [String, Array<OpenAI::Models::Beta::BetaResponseInputTextContent, OpenAI::Models::Beta::BetaResponseInputImageContent, OpenAI::Models::Beta::BetaResponseInputFileContent>] Text, image, or file output of the function tool call.
223
+ #
224
+ # @param id [String, nil] The unique ID of the function tool call output. Populated when this item is retu
225
+ #
226
+ # @param agent [OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Agent, nil] The agent that produced this item.
227
+ #
228
+ # @param call_id [String, nil] The unique ID of the function tool call generated by the model.
229
+ #
230
+ # @param caller_ [OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller::Direct, OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller::Program, nil] The execution context that produced this tool call.
231
+ #
232
+ # @param name [String, nil] The name of the tool that produced the output.
233
+ #
234
+ # @param namespace [String, nil] The namespace of the tool that produced the output.
235
+ #
236
+ # @param status [Symbol, OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Status, nil] The status of the item. One of `in_progress`, `completed`, or `incomplete`. Popu
237
+ #
238
+ # @param type [Symbol, :function_call_output] The type of the function tool call output. Always `function_call_output`.
239
+
240
+ # Text, image, or file output of the function tool call.
241
+ #
242
+ # @see OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput#output
243
+ module Output
244
+ extend OpenAI::Internal::Type::Union
245
+
246
+ # A JSON string of the output of the function tool call.
247
+ variant String
248
+
249
+ # An array of content outputs (text, image, file) for the function tool call.
250
+ variant -> { OpenAI::Beta::BetaResponseFunctionCallOutputItemList }
251
+
252
+ # @!method self.variants
253
+ # @return [Array(String, Array<OpenAI::Models::Beta::BetaResponseInputTextContent, OpenAI::Models::Beta::BetaResponseInputImageContent, OpenAI::Models::Beta::BetaResponseInputFileContent>)]
254
+ end
255
+
256
+ # @see OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput#agent
257
+ class Agent < OpenAI::Internal::Type::BaseModel
258
+ # @!attribute agent_name
259
+ # The canonical name of the agent that produced this item.
260
+ #
261
+ # @return [String]
262
+ required :agent_name, String
263
+
264
+ # @!method initialize(agent_name:)
265
+ # The agent that produced this item.
266
+ #
267
+ # @param agent_name [String] The canonical name of the agent that produced this item.
268
+ end
269
+
270
+ # The execution context that produced this tool call.
271
+ #
272
+ # @see OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput#caller_
273
+ module Caller
274
+ extend OpenAI::Internal::Type::Union
275
+
276
+ discriminator :type
277
+
278
+ variant(
279
+ :direct,
280
+ -> {
281
+ OpenAI::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller::Direct
282
+ }
283
+ )
284
+
285
+ variant(
286
+ :program,
287
+ -> {
288
+ OpenAI::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller::Program
289
+ }
290
+ )
291
+
292
+ class Direct < OpenAI::Internal::Type::BaseModel
293
+ # @!attribute type
294
+ # The caller type. Always `direct`.
295
+ #
296
+ # @return [Symbol, :direct]
297
+ required :type, const: :direct
298
+
299
+ # @!method initialize(type: :direct)
300
+ # @param type [Symbol, :direct] The caller type. Always `direct`.
301
+ end
302
+
303
+ class Program < OpenAI::Internal::Type::BaseModel
304
+ # @!attribute caller_id
305
+ # The call ID of the program item that produced this tool call.
306
+ #
307
+ # @return [String]
308
+ required :caller_id, String
309
+
310
+ # @!attribute type
311
+ # The caller type. Always `program`.
312
+ #
313
+ # @return [Symbol, :program]
314
+ required :type, const: :program
315
+
316
+ # @!method initialize(caller_id:, type: :program)
317
+ # @param caller_id [String] The call ID of the program item that produced this tool call.
318
+ #
319
+ # @param type [Symbol, :program] The caller type. Always `program`.
320
+ end
321
+
322
+ # @!method self.variants
323
+ # @return [Array(OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller::Direct, OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller::Program)]
324
+ end
325
+
326
+ # The status of the item. One of `in_progress`, `completed`, or `incomplete`.
327
+ # Populated when items are returned via API.
328
+ #
329
+ # @see OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput#status
330
+ module Status
331
+ extend OpenAI::Internal::Type::Enum
332
+
333
+ IN_PROGRESS = :in_progress
334
+ COMPLETED = :completed
335
+ INCOMPLETE = :incomplete
336
+
337
+ # @!method self.values
338
+ # @return [Array<Symbol>]
339
+ end
340
+ end
341
+
342
+ # @!method self.variants
343
+ # @return [Array(OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::Message, OpenAI::Models::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput)]
344
+ end
345
+
346
+ # @!method self.variants
347
+ # @return [Array(String, Array<Hash{Symbol=>Object}>)]
348
+
349
+ # @type [OpenAI::Internal::Type::Converter]
350
+ ResponseSteerInputItemListArray = OpenAI::Internal::Type::ArrayOf[
351
+ union: -> {
352
+ OpenAI::Beta::BetaResponseSteerInput::ResponseSteerInputItemList
353
+ }
354
+ ]
355
+ end
356
+ end
357
+
358
+ BetaResponseSteerInput = Beta::BetaResponseSteerInput
359
+ end
360
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Beta
6
+ # A piece of message content, such as text, an image, or a file.
7
+ module BetaResponseSteerInputContent
8
+ extend OpenAI::Internal::Type::Union
9
+
10
+ discriminator :type
11
+
12
+ # A text input to the model.
13
+ variant :input_text, -> { OpenAI::Beta::BetaResponseInputTextContent }
14
+
15
+ # An image input to the model. Learn about [image inputs](https://platform.openai.com/docs/guides/vision)
16
+ variant :input_image, -> { OpenAI::Beta::BetaResponseInputImageContent }
17
+
18
+ # A file input to the model.
19
+ variant :input_file, -> { OpenAI::Beta::BetaResponseInputFileContent }
20
+
21
+ # @!method self.variants
22
+ # @return [Array(OpenAI::Models::Beta::BetaResponseInputTextContent, OpenAI::Models::Beta::BetaResponseInputImageContent, OpenAI::Models::Beta::BetaResponseInputFileContent)]
23
+ end
24
+ end
25
+
26
+ BetaResponseSteerInputContent = Beta::BetaResponseSteerInputContent
27
+ end
28
+ end
@@ -0,0 +1,113 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Beta
6
+ class BetaResponseSteerPendingEvent < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute reason
8
+ # An extensible enum describing why accepted steering input is still queued.
9
+ # Clients should handle unknown values because additional reasons may be
10
+ # introduced. Known values include:
11
+ #
12
+ # - `waiting_for_required_input`: The response is waiting for the tool results or
13
+ # approval decisions identified by `required_input`.
14
+ #
15
+ # @return [Symbol, :waiting_for_required_input, String]
16
+ required :reason, union: -> { OpenAI::Beta::BetaResponseSteerPendingReason }
17
+
18
+ # @!attribute required_input
19
+ # Input stubs identifying outstanding client-owned tool results or approval
20
+ # decisions. Each stub contains identifying fields only; the client supplies the
21
+ # result before including it in `response.create`.
22
+ #
23
+ # @return [Array<OpenAI::Models::Beta::BetaResponseSteerRequiredInput::FunctionCallOutput, OpenAI::Models::Beta::BetaResponseSteerRequiredInput::CustomToolCallOutput, OpenAI::Models::Beta::BetaResponseSteerRequiredInput::ComputerCallOutput, OpenAI::Models::Beta::BetaResponseSteerRequiredInput::ShellCallOutput, OpenAI::Models::Beta::BetaResponseSteerRequiredInput::ApplyPatchCallOutput, OpenAI::Models::Beta::BetaResponseSteerRequiredInput::ToolSearchOutput, OpenAI::Models::Beta::BetaResponseSteerRequiredInput::McpApprovalResponse>]
24
+ required(
25
+ :required_input,
26
+ -> { OpenAI::Internal::Type::ArrayOf[union: OpenAI::Beta::BetaResponseSteerRequiredInput] }
27
+ )
28
+
29
+ # @!attribute sequence_number
30
+ # The sequence number for this event.
31
+ #
32
+ # @return [Integer]
33
+ required :sequence_number, Integer
34
+
35
+ # @!attribute steer
36
+ # The steering submission that remains queued.
37
+ #
38
+ # @return [OpenAI::Models::Beta::BetaResponseSteerPendingEvent::Steer]
39
+ required :steer, -> { OpenAI::Beta::BetaResponseSteerPendingEvent::Steer }
40
+
41
+ # @!attribute type
42
+ # The event discriminator. Always `response.steer.pending`.
43
+ #
44
+ # @return [Symbol, :"response.steer.pending"]
45
+ required :type, const: :"response.steer.pending"
46
+
47
+ # @!attribute stream_id
48
+ # The WebSocket lane that emitted this event. This field is present when the
49
+ # target response's `response.create` event supplied a `stream_id`.
50
+ #
51
+ # @return [String, nil]
52
+ optional :stream_id, String
53
+
54
+ # @!method initialize(reason:, required_input:, sequence_number:, steer:, stream_id: nil, type: :"response.steer.pending")
55
+ # Some parameter documentations has been truncated, see
56
+ # {OpenAI::Models::Beta::BetaResponseSteerPendingEvent} for more details.
57
+ #
58
+ # Emitted when accepted steering input remains queued after the target response
59
+ # completes. The server still owns the input. Do not resend it. The successor's
60
+ # `response.created` event is the commit point.
61
+ #
62
+ # When `reason` is `waiting_for_required_input`, this event follows
63
+ # `response.completed` while the response waits for the tool results or approval
64
+ # decisions identified by `required_input`. Copy those stubs, fill their result
65
+ # fields using the ordinary `response.create` input schemas, and submit one
66
+ # continuation per parent with the same `previous_response_id` and WebSocket lane.
67
+ # Use saved results without rerunning tools. The queued steering input is
68
+ # prepended in submission order to the continuation's input. That explicit request
69
+ # retains its own settings.
70
+ #
71
+ # This notification is emitted at most once per steering submission. Multiple
72
+ # submissions for the same parent can report the same required inputs; they do not
73
+ # each require a separate continuation.
74
+ #
75
+ # @param reason [Symbol, :waiting_for_required_input, String] An extensible enum describing why accepted steering input is still queued.
76
+ #
77
+ # @param required_input [Array<OpenAI::Models::Beta::BetaResponseSteerRequiredInput::FunctionCallOutput, OpenAI::Models::Beta::BetaResponseSteerRequiredInput::CustomToolCallOutput, OpenAI::Models::Beta::BetaResponseSteerRequiredInput::ComputerCallOutput, OpenAI::Models::Beta::BetaResponseSteerRequiredInput::ShellCallOutput, OpenAI::Models::Beta::BetaResponseSteerRequiredInput::ApplyPatchCallOutput, OpenAI::Models::Beta::BetaResponseSteerRequiredInput::ToolSearchOutput, OpenAI::Models::Beta::BetaResponseSteerRequiredInput::McpApprovalResponse>] Input stubs identifying outstanding client-owned tool results or
78
+ #
79
+ # @param sequence_number [Integer] The sequence number for this event.
80
+ #
81
+ # @param steer [OpenAI::Models::Beta::BetaResponseSteerPendingEvent::Steer] The steering submission that remains queued.
82
+ #
83
+ # @param stream_id [String] The WebSocket lane that emitted this event. This field is present when
84
+ #
85
+ # @param type [Symbol, :"response.steer.pending"] The event discriminator. Always `response.steer.pending`.
86
+
87
+ # @see OpenAI::Models::Beta::BetaResponseSteerPendingEvent#steer
88
+ class Steer < OpenAI::Internal::Type::BaseModel
89
+ # @!attribute id
90
+ # The ID assigned to the steering submission.
91
+ #
92
+ # @return [String]
93
+ required :id, String
94
+
95
+ # @!attribute previous_response_id
96
+ # The ID of the response being steered.
97
+ #
98
+ # @return [String]
99
+ required :previous_response_id, String
100
+
101
+ # @!method initialize(id:, previous_response_id:)
102
+ # The steering submission that remains queued.
103
+ #
104
+ # @param id [String] The ID assigned to the steering submission.
105
+ #
106
+ # @param previous_response_id [String] The ID of the response being steered.
107
+ end
108
+ end
109
+ end
110
+
111
+ BetaResponseSteerPendingEvent = Beta::BetaResponseSteerPendingEvent
112
+ end
113
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Beta
6
+ # An extensible enum describing why accepted steering input is still queued.
7
+ # Clients should handle unknown values because additional reasons may be
8
+ # introduced. Known values include:
9
+ #
10
+ # - `waiting_for_required_input`: The response is waiting for the tool results or
11
+ # approval decisions identified by `required_input`.
12
+ module BetaResponseSteerPendingReason
13
+ extend OpenAI::Internal::Type::Union
14
+
15
+ variant const: :waiting_for_required_input
16
+
17
+ variant String
18
+
19
+ # @!method self.variants
20
+ # @return [Array(Symbol, :waiting_for_required_input, String)]
21
+ end
22
+ end
23
+
24
+ BetaResponseSteerPendingReason = Beta::BetaResponseSteerPendingReason
25
+ end
26
+ end