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,304 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Responses
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 ResponseSteerInput
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::Responses::ResponseSteerInput::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::Responses::ResponseSteerInput::ResponseSteerInputItemList::Message }
31
+
32
+ # The output of a function tool call.
33
+ variant(
34
+ :function_call_output,
35
+ -> { OpenAI::Responses::ResponseSteerInput::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::Responses::ResponseInputTextContent, OpenAI::Models::Responses::ResponseInputImageContent, OpenAI::Models::Responses::ResponseInputFileContent>, String]
43
+ required(
44
+ :content,
45
+ union: -> { OpenAI::Responses::ResponseSteerInput::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 status
67
+ # The status of the message item.
68
+ #
69
+ # @return [String, nil]
70
+ optional :status, String, nil?: true
71
+
72
+ # @!method initialize(content:, id: nil, status: nil, role: :user, type: :message)
73
+ # @param content [Array<OpenAI::Models::Responses::ResponseInputTextContent, OpenAI::Models::Responses::ResponseInputImageContent, OpenAI::Models::Responses::ResponseInputFileContent>, String] The message content, as an array of content parts.
74
+ #
75
+ # @param id [String, nil] The unique ID of this message item.
76
+ #
77
+ # @param status [String, nil] The status of the message item.
78
+ #
79
+ # @param role [Symbol, :user] The message role. Always `user`.
80
+ #
81
+ # @param type [Symbol, :message] The item type. Always `message`.
82
+
83
+ # The message content, as an array of content parts.
84
+ #
85
+ # @see OpenAI::Models::Responses::ResponseSteerInput::ResponseSteerInputItemList::Message#content
86
+ module Content
87
+ extend OpenAI::Internal::Type::Union
88
+
89
+ variant(
90
+ -> {
91
+ OpenAI::Models::Responses::ResponseSteerInput::ResponseSteerInputItemList::Message::Content::ResponseSteerInputContentArray
92
+ }
93
+ )
94
+
95
+ # The message content, as a single string.
96
+ variant String
97
+
98
+ # @!method self.variants
99
+ # @return [Array(Array<OpenAI::Models::Responses::ResponseInputTextContent, OpenAI::Models::Responses::ResponseInputImageContent, OpenAI::Models::Responses::ResponseInputFileContent>, String)]
100
+
101
+ # @type [OpenAI::Internal::Type::Converter]
102
+ ResponseSteerInputContentArray = OpenAI::Internal::Type::ArrayOf[
103
+ union: -> { OpenAI::Responses::ResponseSteerInputContent }
104
+ ]
105
+ end
106
+ end
107
+
108
+ class FunctionCallOutput < OpenAI::Internal::Type::BaseModel
109
+ # @!attribute output
110
+ # Text, image, or file output of the function tool call.
111
+ #
112
+ # @return [String, Array<OpenAI::Models::Responses::ResponseInputTextContent, OpenAI::Models::Responses::ResponseInputImageContent, OpenAI::Models::Responses::ResponseInputFileContent>]
113
+ required(
114
+ :output,
115
+ union: -> {
116
+ OpenAI::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Output
117
+ }
118
+ )
119
+
120
+ # @!attribute type
121
+ # The type of the function tool call output. Always `function_call_output`.
122
+ #
123
+ # @return [Symbol, :function_call_output]
124
+ required :type, const: :function_call_output
125
+
126
+ # @!attribute id
127
+ # The unique ID of the function tool call output. Populated when this item is
128
+ # returned via API.
129
+ #
130
+ # @return [String, nil]
131
+ optional :id, String, nil?: true
132
+
133
+ # @!attribute call_id
134
+ # The unique ID of the function tool call generated by the model.
135
+ #
136
+ # @return [String, nil]
137
+ optional :call_id, String, nil?: true
138
+
139
+ # @!attribute caller_
140
+ # The execution context that produced this tool call.
141
+ #
142
+ # @return [OpenAI::Models::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller::Direct, OpenAI::Models::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller::Program, nil]
143
+ optional(
144
+ :caller_,
145
+ union: -> {
146
+ OpenAI::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller
147
+ },
148
+ api_name: :caller,
149
+ nil?: true
150
+ )
151
+
152
+ # @!attribute name
153
+ # The name of the tool that produced the output.
154
+ #
155
+ # @return [String, nil]
156
+ optional :name, String, nil?: true
157
+
158
+ # @!attribute namespace
159
+ # The namespace of the tool that produced the output.
160
+ #
161
+ # @return [String, nil]
162
+ optional :namespace, String, nil?: true
163
+
164
+ # @!attribute status
165
+ # The status of the item. One of `in_progress`, `completed`, or `incomplete`.
166
+ # Populated when items are returned via API.
167
+ #
168
+ # @return [Symbol, OpenAI::Models::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Status, nil]
169
+ optional(
170
+ :status,
171
+ enum: -> {
172
+ OpenAI::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Status
173
+ },
174
+ nil?: true
175
+ )
176
+
177
+ # @!method initialize(output:, id: nil, call_id: nil, caller_: nil, name: nil, namespace: nil, status: nil, type: :function_call_output)
178
+ # Some parameter documentations has been truncated, see
179
+ # {OpenAI::Models::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput}
180
+ # for more details.
181
+ #
182
+ # The output of a function tool call.
183
+ #
184
+ # @param output [String, Array<OpenAI::Models::Responses::ResponseInputTextContent, OpenAI::Models::Responses::ResponseInputImageContent, OpenAI::Models::Responses::ResponseInputFileContent>] Text, image, or file output of the function tool call.
185
+ #
186
+ # @param id [String, nil] The unique ID of the function tool call output. Populated when this item is retu
187
+ #
188
+ # @param call_id [String, nil] The unique ID of the function tool call generated by the model.
189
+ #
190
+ # @param caller_ [OpenAI::Models::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller::Direct, OpenAI::Models::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller::Program, nil] The execution context that produced this tool call.
191
+ #
192
+ # @param name [String, nil] The name of the tool that produced the output.
193
+ #
194
+ # @param namespace [String, nil] The namespace of the tool that produced the output.
195
+ #
196
+ # @param status [Symbol, OpenAI::Models::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Status, nil] The status of the item. One of `in_progress`, `completed`, or `incomplete`. Popu
197
+ #
198
+ # @param type [Symbol, :function_call_output] The type of the function tool call output. Always `function_call_output`.
199
+
200
+ # Text, image, or file output of the function tool call.
201
+ #
202
+ # @see OpenAI::Models::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput#output
203
+ module Output
204
+ extend OpenAI::Internal::Type::Union
205
+
206
+ # A JSON string of the output of the function tool call.
207
+ variant String
208
+
209
+ # An array of content outputs (text, image, file) for the function tool call.
210
+ variant -> { OpenAI::Responses::ResponseFunctionCallOutputItemList }
211
+
212
+ # @!method self.variants
213
+ # @return [Array(String, Array<OpenAI::Models::Responses::ResponseInputTextContent, OpenAI::Models::Responses::ResponseInputImageContent, OpenAI::Models::Responses::ResponseInputFileContent>)]
214
+ end
215
+
216
+ # The execution context that produced this tool call.
217
+ #
218
+ # @see OpenAI::Models::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput#caller_
219
+ module Caller
220
+ extend OpenAI::Internal::Type::Union
221
+
222
+ discriminator :type
223
+
224
+ variant(
225
+ :direct,
226
+ -> {
227
+ OpenAI::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller::Direct
228
+ }
229
+ )
230
+
231
+ variant(
232
+ :program,
233
+ -> {
234
+ OpenAI::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller::Program
235
+ }
236
+ )
237
+
238
+ class Direct < OpenAI::Internal::Type::BaseModel
239
+ # @!attribute type
240
+ # The caller type. Always `direct`.
241
+ #
242
+ # @return [Symbol, :direct]
243
+ required :type, const: :direct
244
+
245
+ # @!method initialize(type: :direct)
246
+ # @param type [Symbol, :direct] The caller type. Always `direct`.
247
+ end
248
+
249
+ class Program < OpenAI::Internal::Type::BaseModel
250
+ # @!attribute caller_id
251
+ # The call ID of the program item that produced this tool call.
252
+ #
253
+ # @return [String]
254
+ required :caller_id, String
255
+
256
+ # @!attribute type
257
+ # The caller type. Always `program`.
258
+ #
259
+ # @return [Symbol, :program]
260
+ required :type, const: :program
261
+
262
+ # @!method initialize(caller_id:, type: :program)
263
+ # @param caller_id [String] The call ID of the program item that produced this tool call.
264
+ #
265
+ # @param type [Symbol, :program] The caller type. Always `program`.
266
+ end
267
+
268
+ # @!method self.variants
269
+ # @return [Array(OpenAI::Models::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller::Direct, OpenAI::Models::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput::Caller::Program)]
270
+ end
271
+
272
+ # The status of the item. One of `in_progress`, `completed`, or `incomplete`.
273
+ # Populated when items are returned via API.
274
+ #
275
+ # @see OpenAI::Models::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput#status
276
+ module Status
277
+ extend OpenAI::Internal::Type::Enum
278
+
279
+ IN_PROGRESS = :in_progress
280
+ COMPLETED = :completed
281
+ INCOMPLETE = :incomplete
282
+
283
+ # @!method self.values
284
+ # @return [Array<Symbol>]
285
+ end
286
+ end
287
+
288
+ # @!method self.variants
289
+ # @return [Array(OpenAI::Models::Responses::ResponseSteerInput::ResponseSteerInputItemList::Message, OpenAI::Models::Responses::ResponseSteerInput::ResponseSteerInputItemList::FunctionCallOutput)]
290
+ end
291
+
292
+ # @!method self.variants
293
+ # @return [Array(String, Array<Hash{Symbol=>Object}>)]
294
+
295
+ # @type [OpenAI::Internal::Type::Converter]
296
+ ResponseSteerInputItemListArray = OpenAI::Internal::Type::ArrayOf[
297
+ union: -> {
298
+ OpenAI::Responses::ResponseSteerInput::ResponseSteerInputItemList
299
+ }
300
+ ]
301
+ end
302
+ end
303
+ end
304
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Responses
6
+ # A piece of message content, such as text, an image, or a file.
7
+ module ResponseSteerInputContent
8
+ extend OpenAI::Internal::Type::Union
9
+
10
+ discriminator :type
11
+
12
+ # A text input to the model.
13
+ variant :input_text, -> { OpenAI::Responses::ResponseInputTextContent }
14
+
15
+ # An image input to the model. Learn about [image inputs](https://platform.openai.com/docs/guides/vision)
16
+ variant :input_image, -> { OpenAI::Responses::ResponseInputImageContent }
17
+
18
+ # A file input to the model.
19
+ variant :input_file, -> { OpenAI::Responses::ResponseInputFileContent }
20
+
21
+ # @!method self.variants
22
+ # @return [Array(OpenAI::Models::Responses::ResponseInputTextContent, OpenAI::Models::Responses::ResponseInputImageContent, OpenAI::Models::Responses::ResponseInputFileContent)]
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Responses
6
+ class ResponseSteerPendingEvent < 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::Responses::ResponseSteerPendingReason }
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::Responses::ResponseSteerRequiredInput::FunctionCallOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::CustomToolCallOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::ComputerCallOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::ShellCallOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::ApplyPatchCallOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::ToolSearchOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::McpApprovalResponse>]
24
+ required(
25
+ :required_input,
26
+ -> { OpenAI::Internal::Type::ArrayOf[union: OpenAI::Responses::ResponseSteerRequiredInput] }
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::Responses::ResponseSteerPendingEvent::Steer]
39
+ required :steer, -> { OpenAI::Responses::ResponseSteerPendingEvent::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::Responses::ResponseSteerPendingEvent} 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::Responses::ResponseSteerRequiredInput::FunctionCallOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::CustomToolCallOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::ComputerCallOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::ShellCallOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::ApplyPatchCallOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::ToolSearchOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::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::Responses::ResponseSteerPendingEvent::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::Responses::ResponseSteerPendingEvent#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
+ end
111
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Responses
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 ResponseSteerPendingReason
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
+ end
24
+ end
@@ -0,0 +1,213 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Responses
6
+ # An input stub identifying an outstanding client-owned tool result or approval
7
+ # decision. Copy the stub and fill the result fields using the corresponding
8
+ # `response.create` input schema. Use saved results without rerunning the tool.
9
+ # The server does not supply results, approval decisions, or safety
10
+ # acknowledgements in these stubs.
11
+ module ResponseSteerRequiredInput
12
+ extend OpenAI::Internal::Type::Union
13
+
14
+ discriminator :type
15
+
16
+ # Supply `output` using the function tool call output input schema.
17
+ variant :function_call_output, -> { OpenAI::Responses::ResponseSteerRequiredInput::FunctionCallOutput }
18
+
19
+ # Supply `output` using the custom tool call output input schema. The
20
+ # original custom tool call supplies the tool's name.
21
+ variant(
22
+ :custom_tool_call_output,
23
+ -> { OpenAI::Responses::ResponseSteerRequiredInput::CustomToolCallOutput }
24
+ )
25
+
26
+ # Supply `output` using the computer tool call output input schema,
27
+ # including any required `acknowledged_safety_checks`.
28
+ variant :computer_call_output, -> { OpenAI::Responses::ResponseSteerRequiredInput::ComputerCallOutput }
29
+
30
+ # Supply `output` using the shell tool call output input schema. Each
31
+ # output entry includes `stdout`, `stderr`, and `outcome`.
32
+ variant :shell_call_output, -> { OpenAI::Responses::ResponseSteerRequiredInput::ShellCallOutput }
33
+
34
+ # Supply `status` and optional `output` using the apply patch tool call
35
+ # output input schema.
36
+ variant(
37
+ :apply_patch_call_output,
38
+ -> { OpenAI::Responses::ResponseSteerRequiredInput::ApplyPatchCallOutput }
39
+ )
40
+
41
+ # Supply `tools` using the tool search output input schema, retaining
42
+ # `execution: "client"`.
43
+ variant :tool_search_output, -> { OpenAI::Responses::ResponseSteerRequiredInput::ToolSearchOutput }
44
+
45
+ # Supply `approve` using the MCP approval response input schema. An
46
+ # optional `reason` can be supplied when denying the request. The original
47
+ # approval request identifies the tool and server.
48
+ variant :mcp_approval_response, -> { OpenAI::Responses::ResponseSteerRequiredInput::McpApprovalResponse }
49
+
50
+ class FunctionCallOutput < OpenAI::Internal::Type::BaseModel
51
+ # @!attribute call_id
52
+ #
53
+ # @return [String]
54
+ required :call_id, String
55
+
56
+ # @!attribute name
57
+ #
58
+ # @return [String]
59
+ required :name, String
60
+
61
+ # @!attribute type
62
+ #
63
+ # @return [Symbol, :function_call_output]
64
+ required :type, const: :function_call_output
65
+
66
+ # @!method initialize(call_id:, name:, type: :function_call_output)
67
+ # Supply `output` using the function tool call output input schema.
68
+ #
69
+ # @param call_id [String]
70
+ # @param name [String]
71
+ # @param type [Symbol, :function_call_output]
72
+ end
73
+
74
+ class CustomToolCallOutput < OpenAI::Internal::Type::BaseModel
75
+ # @!attribute call_id
76
+ #
77
+ # @return [String]
78
+ required :call_id, String
79
+
80
+ # @!attribute type
81
+ #
82
+ # @return [Symbol, :custom_tool_call_output]
83
+ required :type, const: :custom_tool_call_output
84
+
85
+ # @!method initialize(call_id:, type: :custom_tool_call_output)
86
+ # Supply `output` using the custom tool call output input schema. The original
87
+ # custom tool call supplies the tool's name.
88
+ #
89
+ # @param call_id [String]
90
+ # @param type [Symbol, :custom_tool_call_output]
91
+ end
92
+
93
+ class ComputerCallOutput < OpenAI::Internal::Type::BaseModel
94
+ # @!attribute call_id
95
+ #
96
+ # @return [String]
97
+ required :call_id, String
98
+
99
+ # @!attribute type
100
+ #
101
+ # @return [Symbol, :computer_call_output]
102
+ required :type, const: :computer_call_output
103
+
104
+ # @!method initialize(call_id:, type: :computer_call_output)
105
+ # Supply `output` using the computer tool call output input schema, including any
106
+ # required `acknowledged_safety_checks`.
107
+ #
108
+ # @param call_id [String]
109
+ # @param type [Symbol, :computer_call_output]
110
+ end
111
+
112
+ class ShellCallOutput < OpenAI::Internal::Type::BaseModel
113
+ # @!attribute call_id
114
+ #
115
+ # @return [String]
116
+ required :call_id, String
117
+
118
+ # @!attribute type
119
+ #
120
+ # @return [Symbol, :shell_call_output]
121
+ required :type, const: :shell_call_output
122
+
123
+ # @!method initialize(call_id:, type: :shell_call_output)
124
+ # Supply `output` using the shell tool call output input schema. Each output entry
125
+ # includes `stdout`, `stderr`, and `outcome`.
126
+ #
127
+ # @param call_id [String]
128
+ # @param type [Symbol, :shell_call_output]
129
+ end
130
+
131
+ class ApplyPatchCallOutput < OpenAI::Internal::Type::BaseModel
132
+ # @!attribute call_id
133
+ #
134
+ # @return [String]
135
+ required :call_id, String
136
+
137
+ # @!attribute type
138
+ #
139
+ # @return [Symbol, :apply_patch_call_output]
140
+ required :type, const: :apply_patch_call_output
141
+
142
+ # @!method initialize(call_id:, type: :apply_patch_call_output)
143
+ # Supply `status` and optional `output` using the apply patch tool call output
144
+ # input schema.
145
+ #
146
+ # @param call_id [String]
147
+ # @param type [Symbol, :apply_patch_call_output]
148
+ end
149
+
150
+ class ToolSearchOutput < OpenAI::Internal::Type::BaseModel
151
+ # @!attribute call_id
152
+ #
153
+ # @return [String]
154
+ required :call_id, String
155
+
156
+ # @!attribute execution
157
+ #
158
+ # @return [Symbol, OpenAI::Models::Responses::ResponseSteerRequiredInput::ToolSearchOutput::Execution]
159
+ required(
160
+ :execution,
161
+ enum: -> { OpenAI::Responses::ResponseSteerRequiredInput::ToolSearchOutput::Execution }
162
+ )
163
+
164
+ # @!attribute type
165
+ #
166
+ # @return [Symbol, :tool_search_output]
167
+ required :type, const: :tool_search_output
168
+
169
+ # @!method initialize(call_id:, execution:, type: :tool_search_output)
170
+ # Supply `tools` using the tool search output input schema, retaining
171
+ # `execution: "client"`.
172
+ #
173
+ # @param call_id [String]
174
+ # @param execution [Symbol, OpenAI::Models::Responses::ResponseSteerRequiredInput::ToolSearchOutput::Execution]
175
+ # @param type [Symbol, :tool_search_output]
176
+
177
+ # @see OpenAI::Models::Responses::ResponseSteerRequiredInput::ToolSearchOutput#execution
178
+ module Execution
179
+ extend OpenAI::Internal::Type::Enum
180
+
181
+ CLIENT = :client
182
+
183
+ # @!method self.values
184
+ # @return [Array<Symbol>]
185
+ end
186
+ end
187
+
188
+ class McpApprovalResponse < OpenAI::Internal::Type::BaseModel
189
+ # @!attribute approval_request_id
190
+ #
191
+ # @return [String]
192
+ required :approval_request_id, String
193
+
194
+ # @!attribute type
195
+ #
196
+ # @return [Symbol, :mcp_approval_response]
197
+ required :type, const: :mcp_approval_response
198
+
199
+ # @!method initialize(approval_request_id:, type: :mcp_approval_response)
200
+ # Supply `approve` using the MCP approval response input schema. An optional
201
+ # `reason` can be supplied when denying the request. The original approval request
202
+ # identifies the tool and server.
203
+ #
204
+ # @param approval_request_id [String]
205
+ # @param type [Symbol, :mcp_approval_response]
206
+ end
207
+
208
+ # @!method self.variants
209
+ # @return [Array(OpenAI::Models::Responses::ResponseSteerRequiredInput::FunctionCallOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::CustomToolCallOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::ComputerCallOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::ShellCallOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::ApplyPatchCallOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::ToolSearchOutput, OpenAI::Models::Responses::ResponseSteerRequiredInput::McpApprovalResponse)]
210
+ end
211
+ end
212
+ end
213
+ end