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