openai 0.83.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 (293) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +59 -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/auth/workload_identity_auth.rb +17 -2
  7. data/lib/openai/client.rb +24 -6
  8. data/lib/openai/errors.rb +1 -1
  9. data/lib/openai/helpers/streaming/chat_completion_stream.rb +18 -10
  10. data/lib/openai/helpers/streaming/response_events.rb +2 -2
  11. data/lib/openai/helpers/streaming/response_stream.rb +80 -44
  12. data/lib/openai/helpers/structured_output/array_of.rb +2 -2
  13. data/lib/openai/helpers/structured_output/base_model.rb +19 -5
  14. data/lib/openai/helpers/structured_output/chat_completion_parser.rb +12 -3
  15. data/lib/openai/helpers/structured_output/json_schema_converter.rb +34 -11
  16. data/lib/openai/helpers/structured_output/response_parser.rb +1 -1
  17. data/lib/openai/internal/type/base_model.rb +2 -2
  18. data/lib/openai/internal/type/converter.rb +1 -1
  19. data/lib/openai/internal/util.rb +2 -2
  20. data/lib/openai/internal/vector_store_file_uploader.rb +1 -1
  21. data/lib/openai/models/admin/organization/usage_costs_params.rb +10 -1
  22. data/lib/openai/models/batch.rb +4 -4
  23. data/lib/openai/models/beta/beta_custom_tool.rb +13 -1
  24. data/lib/openai/models/beta/beta_function_tool.rb +8 -1
  25. data/lib/openai/models/beta/beta_namespace_tool.rb +10 -1
  26. data/lib/openai/models/beta/beta_response.rb +26 -18
  27. data/lib/openai/models/beta/beta_response_configuration_update_item.rb +103 -0
  28. data/lib/openai/models/beta/beta_response_configuration_update_item_param.rb +104 -0
  29. data/lib/openai/models/beta/beta_response_custom_tool_call.rb +9 -1
  30. data/lib/openai/models/beta/beta_response_custom_tool_call_item.rb +3 -1
  31. data/lib/openai/models/beta/beta_response_error.rb +96 -1
  32. data/lib/openai/models/beta/beta_response_function_tool_call.rb +9 -1
  33. data/lib/openai/models/beta/beta_response_function_tool_call_item.rb +3 -1
  34. data/lib/openai/models/beta/beta_response_incomplete_event.rb +4 -0
  35. data/lib/openai/models/beta/beta_response_inject_event.rb +2 -2
  36. data/lib/openai/models/beta/beta_response_inject_failed_event.rb +2 -2
  37. data/lib/openai/models/beta/beta_response_input_item.rb +6 -1
  38. data/lib/openai/models/beta/beta_response_item.rb +5 -1
  39. data/lib/openai/models/beta/beta_response_steer_accepted_event.rb +81 -0
  40. data/lib/openai/models/beta/beta_response_steer_error_code.rb +61 -0
  41. data/lib/openai/models/beta/beta_response_steer_event.rb +75 -0
  42. data/lib/openai/models/beta/beta_response_steer_failed_event.rb +151 -0
  43. data/lib/openai/models/beta/beta_response_steer_input.rb +360 -0
  44. data/lib/openai/models/beta/beta_response_steer_input_content.rb +28 -0
  45. data/lib/openai/models/beta/beta_response_steer_pending_event.rb +113 -0
  46. data/lib/openai/models/beta/beta_response_steer_pending_reason.rb +26 -0
  47. data/lib/openai/models/beta/beta_response_steer_required_input.rb +215 -0
  48. data/lib/openai/models/beta/beta_response_stream_event.rb +4 -0
  49. data/lib/openai/models/beta/beta_response_usage.rb +1 -12
  50. data/lib/openai/models/beta/beta_responses_client_event.rb +45 -16
  51. data/lib/openai/models/beta/beta_responses_server_event.rb +164 -2
  52. data/lib/openai/models/beta/response_compact_params.rb +13 -10
  53. data/lib/openai/models/beta/response_create_params.rb +14 -15
  54. data/lib/openai/models/beta/responses/beta_response_item_list.rb +2 -2
  55. data/lib/openai/models/beta/responses/input_token_count_params.rb +3 -3
  56. data/lib/openai/models/chat/completion_create_params.rb +8 -8
  57. data/lib/openai/models/chat_model.rb +1 -0
  58. data/lib/openai/models/completion_usage.rb +1 -12
  59. data/lib/openai/models/conversations/conversation_create_params.rb +2 -2
  60. data/lib/openai/models/conversations/conversation_item.rb +5 -1
  61. data/lib/openai/models/conversations/conversation_item_list.rb +2 -2
  62. data/lib/openai/models/conversations/item_create_params.rb +2 -2
  63. data/lib/openai/models/error_object.rb +90 -1
  64. data/lib/openai/models/eval_create_response.rb +1 -1
  65. data/lib/openai/models/eval_list_response.rb +1 -1
  66. data/lib/openai/models/eval_retrieve_response.rb +1 -1
  67. data/lib/openai/models/eval_update_response.rb +1 -1
  68. data/lib/openai/models/evals/create_eval_completions_run_data_source.rb +2 -2
  69. data/lib/openai/models/reasoning.rb +0 -2
  70. data/lib/openai/models/responses/custom_tool.rb +13 -1
  71. data/lib/openai/models/responses/function_tool.rb +8 -1
  72. data/lib/openai/models/responses/input_token_count_params.rb +3 -3
  73. data/lib/openai/models/responses/namespace_tool.rb +10 -1
  74. data/lib/openai/models/responses/response.rb +20 -13
  75. data/lib/openai/models/responses/response_compact_params.rb +13 -10
  76. data/lib/openai/models/responses/response_configuration_update_item.rb +56 -0
  77. data/lib/openai/models/responses/response_configuration_update_item_param.rb +57 -0
  78. data/lib/openai/models/responses/response_create_params.rb +8 -10
  79. data/lib/openai/models/responses/response_custom_tool_call.rb +9 -1
  80. data/lib/openai/models/responses/response_custom_tool_call_item.rb +3 -1
  81. data/lib/openai/models/responses/response_error.rb +96 -1
  82. data/lib/openai/models/responses/response_function_tool_call.rb +9 -1
  83. data/lib/openai/models/responses/response_function_tool_call_item.rb +3 -1
  84. data/lib/openai/models/responses/response_incomplete_event.rb +4 -0
  85. data/lib/openai/models/responses/response_input_item.rb +6 -1
  86. data/lib/openai/models/responses/response_item.rb +5 -1
  87. data/lib/openai/models/responses/response_item_list.rb +2 -2
  88. data/lib/openai/models/responses/response_steer_accepted_event.rb +79 -0
  89. data/lib/openai/models/responses/response_steer_error_code.rb +59 -0
  90. data/lib/openai/models/responses/response_steer_event.rb +73 -0
  91. data/lib/openai/models/responses/response_steer_failed_event.rb +149 -0
  92. data/lib/openai/models/responses/response_steer_input.rb +304 -0
  93. data/lib/openai/models/responses/response_steer_input_content.rb +26 -0
  94. data/lib/openai/models/responses/response_steer_pending_event.rb +111 -0
  95. data/lib/openai/models/responses/response_steer_pending_reason.rb +24 -0
  96. data/lib/openai/models/responses/response_steer_required_input.rb +213 -0
  97. data/lib/openai/models/responses/response_stream_event.rb +4 -0
  98. data/lib/openai/models/responses/response_usage.rb +1 -12
  99. data/lib/openai/models/responses/responses_client_event.rb +872 -771
  100. data/lib/openai/models/responses/responses_server_event.rb +162 -2
  101. data/lib/openai/models/safety/alert_retrieve_params.rb +24 -0
  102. data/lib/openai/models/safety/safety_alert.rb +96 -0
  103. data/lib/openai/models/video_create_error.rb +93 -1
  104. data/lib/openai/models/webhooks/safety_alert_created_webhook_event.rb +63 -0
  105. data/lib/openai/models/webhooks/safety_org_alert_created_webhook_event.rb +63 -0
  106. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +7 -1
  107. data/lib/openai/models.rb +2 -0
  108. data/lib/openai/net_http_client.rb +1 -1
  109. data/lib/openai/providers/bedrock.rb +20 -12
  110. data/lib/openai/resources/admin/organization/usage.rb +3 -1
  111. data/lib/openai/resources/beta/responses/input_items.rb +1 -1
  112. data/lib/openai/resources/beta/responses/input_tokens.rb +1 -1
  113. data/lib/openai/resources/beta/responses.rb +8 -8
  114. data/lib/openai/resources/chat/completions.rb +2 -2
  115. data/lib/openai/resources/conversations/items.rb +3 -3
  116. data/lib/openai/resources/conversations.rb +1 -1
  117. data/lib/openai/resources/responses/input_items.rb +1 -1
  118. data/lib/openai/resources/responses/input_tokens.rb +1 -1
  119. data/lib/openai/resources/responses.rb +10 -9
  120. data/lib/openai/resources/safety/alerts.rb +37 -0
  121. data/lib/openai/resources/safety.rb +18 -0
  122. data/lib/openai/resources/webhooks.rb +1 -1
  123. data/lib/openai/version.rb +1 -1
  124. data/lib/openai.rb +29 -0
  125. data/rbi/openai/client.rbi +3 -0
  126. data/rbi/openai/errors.rbi +1 -1
  127. data/rbi/openai/helpers/streaming/events.rbi +2 -2
  128. data/rbi/openai/helpers/streaming/response_stream.rbi +3 -3
  129. data/rbi/openai/models/admin/organization/usage_costs_params.rbi +15 -0
  130. data/rbi/openai/models/batch.rbi +6 -6
  131. data/rbi/openai/models/beta/beta_custom_tool.rbi +15 -0
  132. data/rbi/openai/models/beta/beta_function_tool.rbi +11 -0
  133. data/rbi/openai/models/beta/beta_namespace_tool.rbi +15 -0
  134. data/rbi/openai/models/beta/beta_response.rbi +21 -18
  135. data/rbi/openai/models/beta/beta_response_configuration_update_item.rbi +200 -0
  136. data/rbi/openai/models/beta/beta_response_configuration_update_item_param.rbi +207 -0
  137. data/rbi/openai/models/beta/beta_response_custom_tool_call.rbi +13 -0
  138. data/rbi/openai/models/beta/beta_response_custom_tool_call_item.rbi +6 -0
  139. data/rbi/openai/models/beta/beta_response_error.rbi +161 -3
  140. data/rbi/openai/models/beta/beta_response_function_tool_call.rbi +13 -0
  141. data/rbi/openai/models/beta/beta_response_function_tool_call_item.rbi +6 -0
  142. data/rbi/openai/models/beta/beta_response_incomplete_event.rbi +4 -0
  143. data/rbi/openai/models/beta/beta_response_inject_event.rbi +3 -0
  144. data/rbi/openai/models/beta/beta_response_inject_failed_event.rbi +3 -0
  145. data/rbi/openai/models/beta/beta_response_input_item.rbi +1 -0
  146. data/rbi/openai/models/beta/beta_response_item.rbi +1 -0
  147. data/rbi/openai/models/beta/beta_response_steer_accepted_event.rbi +148 -0
  148. data/rbi/openai/models/beta/beta_response_steer_error_code.rbi +65 -0
  149. data/rbi/openai/models/beta/beta_response_steer_event.rbi +118 -0
  150. data/rbi/openai/models/beta/beta_response_steer_failed_event.rbi +267 -0
  151. data/rbi/openai/models/beta/beta_response_steer_input.rbi +602 -0
  152. data/rbi/openai/models/beta/beta_response_steer_input_content.rbi +31 -0
  153. data/rbi/openai/models/beta/beta_response_steer_pending_event.rbi +222 -0
  154. data/rbi/openai/models/beta/beta_response_steer_pending_reason.rbi +35 -0
  155. data/rbi/openai/models/beta/beta_response_steer_required_input.rbi +379 -0
  156. data/rbi/openai/models/beta/beta_response_usage.rbi +3 -13
  157. data/rbi/openai/models/beta/beta_responses_client_event.rbi +14 -15
  158. data/rbi/openai/models/beta/beta_responses_server_event.rbi +206 -3
  159. data/rbi/openai/models/beta/response_compact_params.rbi +10 -9
  160. data/rbi/openai/models/beta/response_create_params.rbi +10 -15
  161. data/rbi/openai/models/beta/responses/beta_response_item_list.rbi +1 -0
  162. data/rbi/openai/models/chat/completion_create_params.rbi +9 -9
  163. data/rbi/openai/models/chat_model.rbi +1 -0
  164. data/rbi/openai/models/completion_usage.rbi +0 -10
  165. data/rbi/openai/models/conversations/conversation_create_params.rbi +3 -0
  166. data/rbi/openai/models/conversations/conversation_item.rbi +1 -0
  167. data/rbi/openai/models/conversations/conversation_item_list.rbi +1 -0
  168. data/rbi/openai/models/conversations/item_create_params.rbi +3 -0
  169. data/rbi/openai/models/error_object.rbi +156 -3
  170. data/rbi/openai/models/eval_create_response.rbi +1 -1
  171. data/rbi/openai/models/eval_list_response.rbi +1 -1
  172. data/rbi/openai/models/eval_retrieve_response.rbi +1 -1
  173. data/rbi/openai/models/eval_update_response.rbi +1 -1
  174. data/rbi/openai/models/evals/create_eval_completions_run_data_source.rbi +2 -2
  175. data/rbi/openai/models/reasoning.rbi +0 -2
  176. data/rbi/openai/models/responses/custom_tool.rbi +15 -0
  177. data/rbi/openai/models/responses/function_tool.rbi +11 -0
  178. data/rbi/openai/models/responses/namespace_tool.rbi +15 -0
  179. data/rbi/openai/models/responses/response.rbi +17 -13
  180. data/rbi/openai/models/responses/response_compact_params.rbi +10 -9
  181. data/rbi/openai/models/responses/response_configuration_update_item.rbi +112 -0
  182. data/rbi/openai/models/responses/response_configuration_update_item_param.rbi +117 -0
  183. data/rbi/openai/models/responses/response_create_params.rbi +6 -10
  184. data/rbi/openai/models/responses/response_custom_tool_call.rbi +13 -0
  185. data/rbi/openai/models/responses/response_custom_tool_call_item.rbi +6 -0
  186. data/rbi/openai/models/responses/response_error.rbi +161 -3
  187. data/rbi/openai/models/responses/response_function_tool_call.rbi +13 -0
  188. data/rbi/openai/models/responses/response_function_tool_call_item.rbi +6 -0
  189. data/rbi/openai/models/responses/response_incomplete_event.rbi +4 -0
  190. data/rbi/openai/models/responses/response_input_item.rbi +1 -0
  191. data/rbi/openai/models/responses/response_item.rbi +1 -0
  192. data/rbi/openai/models/responses/response_item_list.rbi +1 -0
  193. data/rbi/openai/models/responses/response_steer_accepted_event.rbi +146 -0
  194. data/rbi/openai/models/responses/response_steer_error_code.rbi +63 -0
  195. data/rbi/openai/models/responses/response_steer_event.rbi +119 -0
  196. data/rbi/openai/models/responses/response_steer_failed_event.rbi +268 -0
  197. data/rbi/openai/models/responses/response_steer_input.rbi +474 -0
  198. data/rbi/openai/models/responses/response_steer_input_content.rbi +29 -0
  199. data/rbi/openai/models/responses/response_steer_pending_event.rbi +220 -0
  200. data/rbi/openai/models/responses/response_steer_pending_reason.rbi +33 -0
  201. data/rbi/openai/models/responses/response_steer_required_input.rbi +377 -0
  202. data/rbi/openai/models/responses/response_usage.rbi +3 -13
  203. data/rbi/openai/models/responses/responses_client_event.rbi +1205 -1041
  204. data/rbi/openai/models/responses/responses_server_event.rbi +202 -3
  205. data/rbi/openai/models/safety/alert_retrieve_params.rbi +55 -0
  206. data/rbi/openai/models/safety/safety_alert.rbi +147 -0
  207. data/rbi/openai/models/video_create_error.rbi +149 -3
  208. data/rbi/openai/models/webhooks/safety_alert_created_webhook_event.rbi +130 -0
  209. data/rbi/openai/models/webhooks/safety_org_alert_created_webhook_event.rbi +130 -0
  210. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +3 -1
  211. data/rbi/openai/models.rbi +2 -0
  212. data/rbi/openai/resources/admin/organization/usage.rbi +4 -0
  213. data/rbi/openai/resources/beta/responses.rbi +7 -11
  214. data/rbi/openai/resources/chat/completions.rbi +6 -6
  215. data/rbi/openai/resources/conversations/items.rbi +1 -0
  216. data/rbi/openai/resources/conversations.rbi +1 -0
  217. data/rbi/openai/resources/responses.rbi +9 -13
  218. data/rbi/openai/resources/safety/alerts.rbi +30 -0
  219. data/rbi/openai/resources/safety.rbi +18 -0
  220. data/rbi/openai/resources/webhooks.rbi +3 -1
  221. data/sig/openai/client.rbs +2 -0
  222. data/sig/openai/errors.rbs +1 -1
  223. data/sig/openai/internal/transport/base_client.rbs +4 -19
  224. data/sig/openai/models/admin/organization/usage_costs_params.rbs +7 -0
  225. data/sig/openai/models/beta/beta_custom_tool.rbs +7 -0
  226. data/sig/openai/models/beta/beta_function_tool.rbs +7 -0
  227. data/sig/openai/models/beta/beta_namespace_tool.rbs +7 -0
  228. data/sig/openai/models/beta/beta_response.rbs +7 -2
  229. data/sig/openai/models/beta/beta_response_configuration_update_item.rbs +91 -0
  230. data/sig/openai/models/beta/beta_response_configuration_update_item_param.rbs +87 -0
  231. data/sig/openai/models/beta/beta_response_custom_tool_call.rbs +7 -0
  232. data/sig/openai/models/beta/beta_response_custom_tool_call_item.rbs +3 -0
  233. data/sig/openai/models/beta/beta_response_error.rbs +82 -3
  234. data/sig/openai/models/beta/beta_response_function_tool_call.rbs +7 -0
  235. data/sig/openai/models/beta/beta_response_function_tool_call_item.rbs +3 -0
  236. data/sig/openai/models/beta/beta_response_input_item.rbs +1 -0
  237. data/sig/openai/models/beta/beta_response_item.rbs +1 -0
  238. data/sig/openai/models/beta/beta_response_steer_accepted_event.rbs +53 -0
  239. data/sig/openai/models/beta/beta_response_steer_error_code.rbs +31 -0
  240. data/sig/openai/models/beta/beta_response_steer_event.rbs +34 -0
  241. data/sig/openai/models/beta/beta_response_steer_failed_event.rbs +102 -0
  242. data/sig/openai/models/beta/beta_response_steer_input.rbs +214 -0
  243. data/sig/openai/models/beta/beta_response_steer_input_content.rbs +18 -0
  244. data/sig/openai/models/beta/beta_response_steer_pending_event.rbs +63 -0
  245. data/sig/openai/models/beta/beta_response_steer_pending_reason.rbs +16 -0
  246. data/sig/openai/models/beta/beta_response_steer_required_input.rbs +161 -0
  247. data/sig/openai/models/beta/beta_response_usage.rbs +3 -8
  248. data/sig/openai/models/beta/beta_responses_client_event.rbs +4 -1
  249. data/sig/openai/models/beta/beta_responses_server_event.rbs +80 -3
  250. data/sig/openai/models/beta/response_compact_params.rbs +3 -1
  251. data/sig/openai/models/beta/response_create_params.rbs +3 -1
  252. data/sig/openai/models/chat_model.rbs +3 -1
  253. data/sig/openai/models/completion_usage.rbs +0 -5
  254. data/sig/openai/models/conversations/conversation_item.rbs +1 -0
  255. data/sig/openai/models/error_object.rbs +82 -3
  256. data/sig/openai/models/responses/custom_tool.rbs +7 -0
  257. data/sig/openai/models/responses/function_tool.rbs +7 -0
  258. data/sig/openai/models/responses/namespace_tool.rbs +7 -0
  259. data/sig/openai/models/responses/response.rbs +4 -1
  260. data/sig/openai/models/responses/response_compact_params.rbs +3 -1
  261. data/sig/openai/models/responses/response_configuration_update_item.rbs +46 -0
  262. data/sig/openai/models/responses/response_configuration_update_item_param.rbs +46 -0
  263. data/sig/openai/models/responses/response_custom_tool_call.rbs +7 -0
  264. data/sig/openai/models/responses/response_custom_tool_call_item.rbs +3 -0
  265. data/sig/openai/models/responses/response_error.rbs +79 -3
  266. data/sig/openai/models/responses/response_function_tool_call.rbs +7 -0
  267. data/sig/openai/models/responses/response_function_tool_call_item.rbs +3 -0
  268. data/sig/openai/models/responses/response_input_item.rbs +1 -0
  269. data/sig/openai/models/responses/response_item.rbs +1 -0
  270. data/sig/openai/models/responses/response_steer_accepted_event.rbs +51 -0
  271. data/sig/openai/models/responses/response_steer_error_code.rbs +29 -0
  272. data/sig/openai/models/responses/response_steer_event.rbs +32 -0
  273. data/sig/openai/models/responses/response_steer_failed_event.rbs +100 -0
  274. data/sig/openai/models/responses/response_steer_input.rbs +182 -0
  275. data/sig/openai/models/responses/response_steer_input_content.rbs +16 -0
  276. data/sig/openai/models/responses/response_steer_pending_event.rbs +61 -0
  277. data/sig/openai/models/responses/response_steer_pending_reason.rbs +13 -0
  278. data/sig/openai/models/responses/response_steer_required_input.rbs +159 -0
  279. data/sig/openai/models/responses/response_usage.rbs +3 -8
  280. data/sig/openai/models/responses/responses_client_event.rbs +355 -344
  281. data/sig/openai/models/responses/responses_server_event.rbs +80 -3
  282. data/sig/openai/models/safety/alert_retrieve_params.rbs +22 -0
  283. data/sig/openai/models/safety/safety_alert.rbs +81 -0
  284. data/sig/openai/models/video_create_error.rbs +87 -3
  285. data/sig/openai/models/webhooks/safety_alert_created_webhook_event.rbs +52 -0
  286. data/sig/openai/models/webhooks/safety_org_alert_created_webhook_event.rbs +52 -0
  287. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +2 -0
  288. data/sig/openai/models.rbs +2 -0
  289. data/sig/openai/resources/admin/organization/usage.rbs +1 -0
  290. data/sig/openai/resources/safety/alerts.rbs +14 -0
  291. data/sig/openai/resources/safety.rbs +9 -0
  292. data/sig/openai/resources/webhooks.rbs +3 -1
  293. metadata +86 -1
@@ -0,0 +1,220 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Responses
7
+
8
+ class ResponseSteerPendingEvent < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Responses::ResponseSteerPendingEvent,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # An extensible enum describing why accepted steering input is still queued.
18
+ # Clients should handle unknown values because additional reasons may be
19
+ # introduced. Known values include:
20
+ #
21
+ # - `waiting_for_required_input`: The response is waiting for the tool results or
22
+ # approval decisions identified by `required_input`.
23
+ sig { returns(OpenAI::Responses::ResponseSteerPendingReason::Variants) }
24
+ attr_accessor :reason
25
+
26
+ # Input stubs identifying outstanding client-owned tool results or approval
27
+ # decisions. Each stub contains identifying fields only; the client supplies the
28
+ # result before including it in `response.create`.
29
+ sig {
30
+ returns(
31
+ T::Array[
32
+ T.any(
33
+ OpenAI::Responses::ResponseSteerRequiredInput::FunctionCallOutput,
34
+ OpenAI::Responses::ResponseSteerRequiredInput::CustomToolCallOutput,
35
+ OpenAI::Responses::ResponseSteerRequiredInput::ComputerCallOutput,
36
+ OpenAI::Responses::ResponseSteerRequiredInput::ShellCallOutput,
37
+ OpenAI::Responses::ResponseSteerRequiredInput::ApplyPatchCallOutput,
38
+ OpenAI::Responses::ResponseSteerRequiredInput::ToolSearchOutput,
39
+ OpenAI::Responses::ResponseSteerRequiredInput::McpApprovalResponse
40
+ )
41
+ ]
42
+ )
43
+ }
44
+ attr_accessor :required_input
45
+
46
+ # The sequence number for this event.
47
+ sig { returns(Integer) }
48
+ attr_accessor :sequence_number
49
+
50
+ # The steering submission that remains queued.
51
+ sig { returns(OpenAI::Responses::ResponseSteerPendingEvent::Steer) }
52
+ attr_reader :steer
53
+
54
+ sig { params(steer: OpenAI::Responses::ResponseSteerPendingEvent::Steer::OrHash).void }
55
+ attr_writer :steer
56
+
57
+ # The event discriminator. Always `response.steer.pending`.
58
+ sig { returns(Symbol) }
59
+ attr_accessor :type
60
+
61
+ # The WebSocket lane that emitted this event. This field is present when the
62
+ # target response's `response.create` event supplied a `stream_id`.
63
+ sig { returns(T.nilable(String)) }
64
+ attr_reader :stream_id
65
+
66
+ sig { params(stream_id: String).void }
67
+ attr_writer :stream_id
68
+
69
+ # Emitted when accepted steering input remains queued after the target response
70
+ # completes. The server still owns the input. Do not resend it. The successor's
71
+ # `response.created` event is the commit point.
72
+ #
73
+ # When `reason` is `waiting_for_required_input`, this event follows
74
+ # `response.completed` while the response waits for the tool results or approval
75
+ # decisions identified by `required_input`. Copy those stubs, fill their result
76
+ # fields using the ordinary `response.create` input schemas, and submit one
77
+ # continuation per parent with the same `previous_response_id` and WebSocket lane.
78
+ # Use saved results without rerunning tools. The queued steering input is
79
+ # prepended in submission order to the continuation's input. That explicit request
80
+ # retains its own settings.
81
+ #
82
+ # This notification is emitted at most once per steering submission. Multiple
83
+ # submissions for the same parent can report the same required inputs; they do not
84
+ # each require a separate continuation.
85
+ sig do
86
+ params(
87
+
88
+ reason: T.any(Symbol, String),
89
+
90
+ required_input: T::Array[
91
+ T.any(
92
+ OpenAI::Responses::ResponseSteerRequiredInput::FunctionCallOutput::OrHash,
93
+ OpenAI::Responses::ResponseSteerRequiredInput::CustomToolCallOutput::OrHash,
94
+ OpenAI::Responses::ResponseSteerRequiredInput::ComputerCallOutput::OrHash,
95
+ OpenAI::Responses::ResponseSteerRequiredInput::ShellCallOutput::OrHash,
96
+ OpenAI::Responses::ResponseSteerRequiredInput::ApplyPatchCallOutput::OrHash,
97
+ OpenAI::Responses::ResponseSteerRequiredInput::ToolSearchOutput::OrHash,
98
+ OpenAI::Responses::ResponseSteerRequiredInput::McpApprovalResponse::OrHash
99
+ )
100
+ ],
101
+
102
+ sequence_number: Integer,
103
+
104
+ steer: OpenAI::Responses::ResponseSteerPendingEvent::Steer::OrHash,
105
+
106
+ stream_id: String,
107
+
108
+ type: Symbol
109
+ )
110
+ .returns(T.attached_class)
111
+ end
112
+ def self.new(
113
+
114
+ # An extensible enum describing why accepted steering input is still queued.
115
+ # Clients should handle unknown values because additional reasons may be
116
+ # introduced. Known values include:
117
+ #
118
+ # - `waiting_for_required_input`: The response is waiting for the tool results or
119
+ # approval decisions identified by `required_input`.
120
+ reason:,
121
+
122
+ # Input stubs identifying outstanding client-owned tool results or approval
123
+ # decisions. Each stub contains identifying fields only; the client supplies the
124
+ # result before including it in `response.create`.
125
+ required_input:,
126
+
127
+ # The sequence number for this event.
128
+ sequence_number:,
129
+
130
+ # The steering submission that remains queued.
131
+ steer:,
132
+
133
+ # The WebSocket lane that emitted this event. This field is present when the
134
+ # target response's `response.create` event supplied a `stream_id`.
135
+ stream_id: nil,
136
+
137
+ # The event discriminator. Always `response.steer.pending`.
138
+
139
+ type: :"response.steer.pending"
140
+ )
141
+ end
142
+
143
+ sig do
144
+ override.returns(
145
+ {
146
+ reason: OpenAI::Responses::ResponseSteerPendingReason::Variants,
147
+ required_input: T::Array[
148
+ T.any(
149
+ OpenAI::Responses::ResponseSteerRequiredInput::FunctionCallOutput,
150
+ OpenAI::Responses::ResponseSteerRequiredInput::CustomToolCallOutput,
151
+ OpenAI::Responses::ResponseSteerRequiredInput::ComputerCallOutput,
152
+ OpenAI::Responses::ResponseSteerRequiredInput::ShellCallOutput,
153
+ OpenAI::Responses::ResponseSteerRequiredInput::ApplyPatchCallOutput,
154
+ OpenAI::Responses::ResponseSteerRequiredInput::ToolSearchOutput,
155
+ OpenAI::Responses::ResponseSteerRequiredInput::McpApprovalResponse
156
+ )
157
+ ],
158
+ sequence_number: Integer,
159
+ steer: OpenAI::Responses::ResponseSteerPendingEvent::Steer,
160
+ type: Symbol,
161
+ stream_id: String
162
+ }
163
+ )
164
+ end
165
+ def to_hash
166
+ end
167
+
168
+ class Steer < OpenAI::Internal::Type::BaseModel
169
+ OrHash = T.type_alias do
170
+ T.any(
171
+ OpenAI::Responses::ResponseSteerPendingEvent::Steer,
172
+ OpenAI::Internal::AnyHash
173
+ )
174
+ end
175
+
176
+ # The ID assigned to the steering submission.
177
+ sig { returns(String) }
178
+ attr_accessor :id
179
+
180
+ # The ID of the response being steered.
181
+ sig { returns(String) }
182
+ attr_accessor :previous_response_id
183
+
184
+ # The steering submission that remains queued.
185
+ sig do
186
+ params(
187
+
188
+ id: String,
189
+
190
+ previous_response_id: String
191
+ )
192
+ .returns(T.attached_class)
193
+ end
194
+ def self.new(
195
+
196
+ # The ID assigned to the steering submission.
197
+ id:,
198
+
199
+ # The ID of the response being steered.
200
+
201
+ previous_response_id:
202
+ )
203
+ end
204
+
205
+ sig do
206
+ override.returns(
207
+ {id: String, previous_response_id: String}
208
+ )
209
+ end
210
+ def to_hash
211
+ end
212
+
213
+ end
214
+
215
+ end
216
+
217
+ end
218
+
219
+ end
220
+ end
@@ -0,0 +1,33 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Responses
7
+
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
+ module ResponseSteerPendingReason
15
+ extend OpenAI::Internal::Type::Union
16
+
17
+ Variants = T.type_alias do
18
+ T.any(
19
+ Symbol,
20
+ String
21
+ )
22
+ end
23
+
24
+ sig { override.returns(T::Array[OpenAI::Responses::ResponseSteerPendingReason::Variants]) }
25
+ def self.variants
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,377 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Responses
7
+
8
+ # An input stub identifying an outstanding client-owned tool result or approval
9
+ # decision. Copy the stub and fill the result fields using the corresponding
10
+ # `response.create` input schema. Use saved results without rerunning the tool.
11
+ # The server does not supply results, approval decisions, or safety
12
+ # acknowledgements in these stubs.
13
+ module ResponseSteerRequiredInput
14
+ extend OpenAI::Internal::Type::Union
15
+
16
+ Variants = T.type_alias do
17
+ T.any(
18
+ OpenAI::Responses::ResponseSteerRequiredInput::FunctionCallOutput,
19
+ OpenAI::Responses::ResponseSteerRequiredInput::CustomToolCallOutput,
20
+ OpenAI::Responses::ResponseSteerRequiredInput::ComputerCallOutput,
21
+ OpenAI::Responses::ResponseSteerRequiredInput::ShellCallOutput,
22
+ OpenAI::Responses::ResponseSteerRequiredInput::ApplyPatchCallOutput,
23
+ OpenAI::Responses::ResponseSteerRequiredInput::ToolSearchOutput,
24
+ OpenAI::Responses::ResponseSteerRequiredInput::McpApprovalResponse
25
+ )
26
+ end
27
+
28
+ class FunctionCallOutput < OpenAI::Internal::Type::BaseModel
29
+ OrHash = T.type_alias do
30
+ T.any(
31
+ OpenAI::Responses::ResponseSteerRequiredInput::FunctionCallOutput,
32
+ OpenAI::Internal::AnyHash
33
+ )
34
+ end
35
+
36
+ sig { returns(String) }
37
+ attr_accessor :call_id
38
+
39
+ sig { returns(String) }
40
+ attr_accessor :name
41
+
42
+ sig { returns(Symbol) }
43
+ attr_accessor :type
44
+
45
+ # Supply `output` using the function tool call output input schema.
46
+ sig do
47
+ params(
48
+
49
+ call_id: String,
50
+
51
+ name: String,
52
+
53
+ type: Symbol
54
+ )
55
+ .returns(T.attached_class)
56
+ end
57
+ def self.new(
58
+
59
+ call_id:,
60
+
61
+ name:,
62
+
63
+ type: :function_call_output
64
+ )
65
+ end
66
+
67
+ sig do
68
+ override.returns(
69
+ {call_id: String, name: String, type: Symbol}
70
+ )
71
+ end
72
+ def to_hash
73
+ end
74
+
75
+ end
76
+
77
+ class CustomToolCallOutput < OpenAI::Internal::Type::BaseModel
78
+ OrHash = T.type_alias do
79
+ T.any(
80
+ OpenAI::Responses::ResponseSteerRequiredInput::CustomToolCallOutput,
81
+ OpenAI::Internal::AnyHash
82
+ )
83
+ end
84
+
85
+ sig { returns(String) }
86
+ attr_accessor :call_id
87
+
88
+ sig { returns(Symbol) }
89
+ attr_accessor :type
90
+
91
+ # Supply `output` using the custom tool call output input schema. The original
92
+ # custom tool call supplies the tool's name.
93
+ sig do
94
+ params(
95
+
96
+ call_id: String,
97
+
98
+ type: Symbol
99
+ )
100
+ .returns(T.attached_class)
101
+ end
102
+ def self.new(
103
+
104
+ call_id:,
105
+
106
+ type: :custom_tool_call_output
107
+ )
108
+ end
109
+
110
+ sig do
111
+ override.returns(
112
+ {call_id: String, type: Symbol}
113
+ )
114
+ end
115
+ def to_hash
116
+ end
117
+
118
+ end
119
+
120
+ class ComputerCallOutput < OpenAI::Internal::Type::BaseModel
121
+ OrHash = T.type_alias do
122
+ T.any(
123
+ OpenAI::Responses::ResponseSteerRequiredInput::ComputerCallOutput,
124
+ OpenAI::Internal::AnyHash
125
+ )
126
+ end
127
+
128
+ sig { returns(String) }
129
+ attr_accessor :call_id
130
+
131
+ sig { returns(Symbol) }
132
+ attr_accessor :type
133
+
134
+ # Supply `output` using the computer tool call output input schema, including any
135
+ # required `acknowledged_safety_checks`.
136
+ sig do
137
+ params(
138
+
139
+ call_id: String,
140
+
141
+ type: Symbol
142
+ )
143
+ .returns(T.attached_class)
144
+ end
145
+ def self.new(
146
+
147
+ call_id:,
148
+
149
+ type: :computer_call_output
150
+ )
151
+ end
152
+
153
+ sig do
154
+ override.returns(
155
+ {call_id: String, type: Symbol}
156
+ )
157
+ end
158
+ def to_hash
159
+ end
160
+
161
+ end
162
+
163
+ class ShellCallOutput < OpenAI::Internal::Type::BaseModel
164
+ OrHash = T.type_alias do
165
+ T.any(
166
+ OpenAI::Responses::ResponseSteerRequiredInput::ShellCallOutput,
167
+ OpenAI::Internal::AnyHash
168
+ )
169
+ end
170
+
171
+ sig { returns(String) }
172
+ attr_accessor :call_id
173
+
174
+ sig { returns(Symbol) }
175
+ attr_accessor :type
176
+
177
+ # Supply `output` using the shell tool call output input schema. Each output entry
178
+ # includes `stdout`, `stderr`, and `outcome`.
179
+ sig do
180
+ params(
181
+
182
+ call_id: String,
183
+
184
+ type: Symbol
185
+ )
186
+ .returns(T.attached_class)
187
+ end
188
+ def self.new(
189
+
190
+ call_id:,
191
+
192
+ type: :shell_call_output
193
+ )
194
+ end
195
+
196
+ sig do
197
+ override.returns(
198
+ {call_id: String, type: Symbol}
199
+ )
200
+ end
201
+ def to_hash
202
+ end
203
+
204
+ end
205
+
206
+ class ApplyPatchCallOutput < OpenAI::Internal::Type::BaseModel
207
+ OrHash = T.type_alias do
208
+ T.any(
209
+ OpenAI::Responses::ResponseSteerRequiredInput::ApplyPatchCallOutput,
210
+ OpenAI::Internal::AnyHash
211
+ )
212
+ end
213
+
214
+ sig { returns(String) }
215
+ attr_accessor :call_id
216
+
217
+ sig { returns(Symbol) }
218
+ attr_accessor :type
219
+
220
+ # Supply `status` and optional `output` using the apply patch tool call output
221
+ # input schema.
222
+ sig do
223
+ params(
224
+
225
+ call_id: String,
226
+
227
+ type: Symbol
228
+ )
229
+ .returns(T.attached_class)
230
+ end
231
+ def self.new(
232
+
233
+ call_id:,
234
+
235
+ type: :apply_patch_call_output
236
+ )
237
+ end
238
+
239
+ sig do
240
+ override.returns(
241
+ {call_id: String, type: Symbol}
242
+ )
243
+ end
244
+ def to_hash
245
+ end
246
+
247
+ end
248
+
249
+ class ToolSearchOutput < OpenAI::Internal::Type::BaseModel
250
+ OrHash = T.type_alias do
251
+ T.any(
252
+ OpenAI::Responses::ResponseSteerRequiredInput::ToolSearchOutput,
253
+ OpenAI::Internal::AnyHash
254
+ )
255
+ end
256
+
257
+ sig { returns(String) }
258
+ attr_accessor :call_id
259
+
260
+ sig { returns(OpenAI::Responses::ResponseSteerRequiredInput::ToolSearchOutput::Execution::TaggedSymbol) }
261
+ attr_accessor :execution
262
+
263
+ sig { returns(Symbol) }
264
+ attr_accessor :type
265
+
266
+ # Supply `tools` using the tool search output input schema, retaining
267
+ # `execution: "client"`.
268
+ sig do
269
+ params(
270
+
271
+ call_id: String,
272
+
273
+ execution: OpenAI::Responses::ResponseSteerRequiredInput::ToolSearchOutput::Execution::OrSymbol,
274
+
275
+ type: Symbol
276
+ )
277
+ .returns(T.attached_class)
278
+ end
279
+ def self.new(
280
+
281
+ call_id:,
282
+
283
+ execution:,
284
+
285
+ type: :tool_search_output
286
+ )
287
+ end
288
+
289
+ sig do
290
+ override.returns(
291
+ {
292
+ call_id: String,
293
+ execution: OpenAI::Responses::ResponseSteerRequiredInput::ToolSearchOutput::Execution::TaggedSymbol,
294
+ type: Symbol
295
+ }
296
+ )
297
+ end
298
+ def to_hash
299
+ end
300
+
301
+ module Execution
302
+ extend OpenAI::Internal::Type::Enum
303
+
304
+ TaggedSymbol = T.type_alias {
305
+ T.all(Symbol, OpenAI::Responses::ResponseSteerRequiredInput::ToolSearchOutput::Execution)
306
+ }
307
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
308
+
309
+ CLIENT = T.let(
310
+ :client,
311
+ OpenAI::Responses::ResponseSteerRequiredInput::ToolSearchOutput::Execution::TaggedSymbol
312
+ )
313
+
314
+ sig {
315
+ override.returns(
316
+ T::Array[OpenAI::Responses::ResponseSteerRequiredInput::ToolSearchOutput::Execution::TaggedSymbol]
317
+ )
318
+ }
319
+ def self.values
320
+ end
321
+ end
322
+ end
323
+
324
+ class McpApprovalResponse < OpenAI::Internal::Type::BaseModel
325
+ OrHash = T.type_alias do
326
+ T.any(
327
+ OpenAI::Responses::ResponseSteerRequiredInput::McpApprovalResponse,
328
+ OpenAI::Internal::AnyHash
329
+ )
330
+ end
331
+
332
+ sig { returns(String) }
333
+ attr_accessor :approval_request_id
334
+
335
+ sig { returns(Symbol) }
336
+ attr_accessor :type
337
+
338
+ # Supply `approve` using the MCP approval response input schema. An optional
339
+ # `reason` can be supplied when denying the request. The original approval request
340
+ # identifies the tool and server.
341
+ sig do
342
+ params(
343
+
344
+ approval_request_id: String,
345
+
346
+ type: Symbol
347
+ )
348
+ .returns(T.attached_class)
349
+ end
350
+ def self.new(
351
+
352
+ approval_request_id:,
353
+
354
+ type: :mcp_approval_response
355
+ )
356
+ end
357
+
358
+ sig do
359
+ override.returns(
360
+ {approval_request_id: String, type: Symbol}
361
+ )
362
+ end
363
+ def to_hash
364
+ end
365
+
366
+ end
367
+
368
+ sig { override.returns(T::Array[OpenAI::Responses::ResponseSteerRequiredInput::Variants]) }
369
+ def self.variants
370
+ end
371
+
372
+ end
373
+
374
+ end
375
+
376
+ end
377
+ end
@@ -40,10 +40,6 @@ module OpenAI
40
40
  sig { returns(Integer) }
41
41
  attr_accessor :total_tokens
42
42
 
43
- # Compute units for the request. Currently null when available.
44
- sig { returns(T.nilable(Integer)) }
45
- attr_accessor :compute_units
46
-
47
43
  # Represents token usage details including input tokens, output tokens, a
48
44
  # breakdown of output tokens, and the total tokens used.
49
45
  sig do
@@ -57,9 +53,7 @@ module OpenAI
57
53
 
58
54
  output_tokens_details: OpenAI::Responses::ResponseUsage::OutputTokensDetails::OrHash,
59
55
 
60
- total_tokens: Integer,
61
-
62
- compute_units: T.nilable(Integer)
56
+ total_tokens: Integer
63
57
  )
64
58
  .returns(T.attached_class)
65
59
  end
@@ -78,11 +72,8 @@ module OpenAI
78
72
  output_tokens_details:,
79
73
 
80
74
  # The total number of tokens used.
81
- total_tokens:,
82
-
83
- # Compute units for the request. Currently null when available.
84
75
 
85
- compute_units: nil
76
+ total_tokens:
86
77
  )
87
78
  end
88
79
 
@@ -93,8 +84,7 @@ module OpenAI
93
84
  input_tokens_details: OpenAI::Responses::ResponseUsage::InputTokensDetails,
94
85
  output_tokens: Integer,
95
86
  output_tokens_details: OpenAI::Responses::ResponseUsage::OutputTokensDetails,
96
- total_tokens: Integer,
97
- compute_units: T.nilable(Integer)
87
+ total_tokens: Integer
98
88
  }
99
89
  )
100
90
  end