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,148 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ BetaResponseSteerAcceptedEvent = Beta::BetaResponseSteerAcceptedEvent
7
+
8
+ module Beta
9
+
10
+ class BetaResponseSteerAcceptedEvent < OpenAI::Internal::Type::BaseModel
11
+
12
+ OrHash = T.type_alias do
13
+ T.any(
14
+ OpenAI::Beta::BetaResponseSteerAcceptedEvent,
15
+ OpenAI::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ # The sequence number for this event.
20
+ sig { returns(Integer) }
21
+ attr_accessor :sequence_number
22
+
23
+ # The accepted steering submission.
24
+ sig { returns(OpenAI::Beta::BetaResponseSteerAcceptedEvent::Steer) }
25
+ attr_reader :steer
26
+
27
+ sig { params(steer: OpenAI::Beta::BetaResponseSteerAcceptedEvent::Steer::OrHash).void }
28
+ attr_writer :steer
29
+
30
+ # The event discriminator. Always `response.steer.accepted`.
31
+ sig { returns(Symbol) }
32
+ attr_accessor :type
33
+
34
+ # The WebSocket lane that emitted this event. This field is present when the
35
+ # target response's `response.create` event supplied a `stream_id`.
36
+ sig { returns(T.nilable(String)) }
37
+ attr_reader :stream_id
38
+
39
+ sig { params(stream_id: String).void }
40
+ attr_writer :stream_id
41
+
42
+ # Emitted when steering input has been validated and queued. Acceptance means the
43
+ # server owns the input, not that it has been applied. The successor's
44
+ # `response.created` event is the commit point. If accepted input cannot be
45
+ # committed, `response.steer.failed` returns it with the same steering ID.
46
+ #
47
+ # When the response stops for client-owned tool output or approval, the input
48
+ # remains queued and `response.steer.pending` is emitted after
49
+ # `response.completed`. Fill the pending event's `required_input` stubs with saved
50
+ # results and send one matching explicit `response.create` per parent. Do not
51
+ # resend accepted input while it is still queued.
52
+ sig do
53
+ params(
54
+
55
+ sequence_number: Integer,
56
+
57
+ steer: OpenAI::Beta::BetaResponseSteerAcceptedEvent::Steer::OrHash,
58
+
59
+ stream_id: String,
60
+
61
+ type: Symbol
62
+ )
63
+ .returns(T.attached_class)
64
+ end
65
+ def self.new(
66
+
67
+ # The sequence number for this event.
68
+ sequence_number:,
69
+
70
+ # The accepted steering submission.
71
+ steer:,
72
+
73
+ # The WebSocket lane that emitted this event. This field is present when the
74
+ # target response's `response.create` event supplied a `stream_id`.
75
+ stream_id: nil,
76
+
77
+ # The event discriminator. Always `response.steer.accepted`.
78
+
79
+ type: :"response.steer.accepted"
80
+ )
81
+ end
82
+
83
+ sig do
84
+ override.returns(
85
+ {
86
+ sequence_number: Integer,
87
+ steer: OpenAI::Beta::BetaResponseSteerAcceptedEvent::Steer,
88
+ type: Symbol,
89
+ stream_id: String
90
+ }
91
+ )
92
+ end
93
+ def to_hash
94
+ end
95
+
96
+ class Steer < OpenAI::Internal::Type::BaseModel
97
+ OrHash = T.type_alias do
98
+ T.any(
99
+ OpenAI::Beta::BetaResponseSteerAcceptedEvent::Steer,
100
+ OpenAI::Internal::AnyHash
101
+ )
102
+ end
103
+
104
+ # The ID assigned to the steering submission.
105
+ sig { returns(String) }
106
+ attr_accessor :id
107
+
108
+ # The ID of the response being steered.
109
+ sig { returns(String) }
110
+ attr_accessor :previous_response_id
111
+
112
+ # The accepted steering submission.
113
+ sig do
114
+ params(
115
+
116
+ id: String,
117
+
118
+ previous_response_id: String
119
+ )
120
+ .returns(T.attached_class)
121
+ end
122
+ def self.new(
123
+
124
+ # The ID assigned to the steering submission.
125
+ id:,
126
+
127
+ # The ID of the response being steered.
128
+
129
+ previous_response_id:
130
+ )
131
+ end
132
+
133
+ sig do
134
+ override.returns(
135
+ {id: String, previous_response_id: String}
136
+ )
137
+ end
138
+ def to_hash
139
+ end
140
+
141
+ end
142
+
143
+ end
144
+
145
+ end
146
+
147
+ end
148
+ end
@@ -0,0 +1,65 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ BetaResponseSteerErrorCode = Beta::BetaResponseSteerErrorCode
7
+
8
+ module Beta
9
+
10
+ # A machine-readable steering error code. Clients should handle unknown values
11
+ # because additional codes may be introduced. Known values include:
12
+ #
13
+ # - `response_not_found`: The target response is not available on this connection.
14
+ # - `invalid_input`: The event or input failed validation.
15
+ # - `steering_not_supported`: The model or response execution mode does not
16
+ # support steering.
17
+ # - `too_many_pending_steers`: Too much steering input is pending for the
18
+ # response.
19
+ # - `response_already_completed`: The response completed and is no longer
20
+ # accepting steering input.
21
+ # - `response_not_active`: The response is no longer accepting steering input.
22
+ # - `successor_creation_failed`: The successor response could not be created.
23
+ module BetaResponseSteerErrorCode
24
+ extend OpenAI::Internal::Type::Union
25
+
26
+ Variants = T.type_alias do
27
+ T.any(
28
+ OpenAI::Beta::BetaResponseSteerErrorCode::TaggedSymbol,
29
+ String
30
+ )
31
+ end
32
+
33
+ sig { override.returns(T::Array[OpenAI::Beta::BetaResponseSteerErrorCode::Variants]) }
34
+ def self.variants
35
+ end
36
+
37
+ TaggedSymbol = T.type_alias do
38
+ T.all(Symbol, OpenAI::Beta::BetaResponseSteerErrorCode)
39
+ end
40
+
41
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
42
+
43
+ RESPONSE_NOT_FOUND = T.let(:response_not_found, OpenAI::Beta::BetaResponseSteerErrorCode::TaggedSymbol)
44
+ INVALID_INPUT = T.let(:invalid_input, OpenAI::Beta::BetaResponseSteerErrorCode::TaggedSymbol)
45
+ STEERING_NOT_SUPPORTED = T.let(:steering_not_supported, OpenAI::Beta::BetaResponseSteerErrorCode::TaggedSymbol)
46
+ TOO_MANY_PENDING_STEERS = T.let(
47
+ :too_many_pending_steers,
48
+ OpenAI::Beta::BetaResponseSteerErrorCode::TaggedSymbol
49
+ )
50
+ RESPONSE_ALREADY_COMPLETED = T.let(
51
+ :response_already_completed,
52
+ OpenAI::Beta::BetaResponseSteerErrorCode::TaggedSymbol
53
+ )
54
+ RESPONSE_NOT_ACTIVE = T.let(:response_not_active, OpenAI::Beta::BetaResponseSteerErrorCode::TaggedSymbol)
55
+ SUCCESSOR_CREATION_FAILED = T.let(
56
+ :successor_creation_failed,
57
+ OpenAI::Beta::BetaResponseSteerErrorCode::TaggedSymbol
58
+ )
59
+
60
+ end
61
+
62
+ end
63
+
64
+ end
65
+ end
@@ -0,0 +1,118 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ BetaResponseSteerEvent = Beta::BetaResponseSteerEvent
7
+
8
+ module Beta
9
+
10
+ class BetaResponseSteerEvent < OpenAI::Internal::Type::BaseModel
11
+
12
+ OrHash = T.type_alias do
13
+ T.any(
14
+ OpenAI::Beta::BetaResponseSteerEvent,
15
+ OpenAI::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ # Input to queue for a continuation of the response. Uses the same string or
20
+ # input-item shape as `response.create.input`, with a non-empty array when
21
+ # supplying input items.
22
+ #
23
+ # Steering accepts only messages with the `user` role. Each message may contain
24
+ # only `type`, `role`, and `content`, with `content` as a string or an array of
25
+ # `input_text`, `input_image`, and `input_file` parts. The optional `type` must be
26
+ # `message`. Other roles, tool outputs, and item types are not supported for
27
+ # steering.
28
+ sig {
29
+ returns(T.any(String, T::Array[OpenAI::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::Variants]))
30
+ }
31
+ attr_accessor :input
32
+
33
+ # The ID of the response to steer on this WebSocket connection.
34
+ sig { returns(String) }
35
+ attr_accessor :previous_response_id
36
+
37
+ # The event discriminator. Always `response.steer`.
38
+ sig { returns(Symbol) }
39
+ attr_accessor :type
40
+
41
+ # Queues user input to steer a response on this WebSocket connection. Input can
42
+ # contain text, images, and files. Steering is supported only for single-agent
43
+ # responses on models and execution modes that support steering. Responses bound
44
+ # to a conversation or using automatic compaction do not support steering.
45
+ #
46
+ # A `response.steer.accepted` event acknowledges that the server owns the queued
47
+ # input, not that it has been applied. The successor's `response.created` event is
48
+ # the commit point. Input that cannot be committed is returned in
49
+ # `response.steer.failed`.
50
+ #
51
+ # Steering may cause the active response to finish at a safe output boundary with
52
+ # `response.incomplete` and `incomplete_details.reason` set to `steered`, followed
53
+ # automatically by a successor `response.created`. Normal completion can also be
54
+ # followed by an automatic successor. Automatic successors inherit the previous
55
+ # response's settings and continue from it with the queued input.
56
+ #
57
+ # If the response stops for client-owned tool output or approval, accepted
58
+ # steering input remains queued and `response.steer.pending` is emitted after
59
+ # `response.completed`. Fill the `required_input` stubs from that event with saved
60
+ # tool results or approval decisions, and send one explicit `response.create` per
61
+ # parent with the same `previous_response_id` and WebSocket lane. Do not rerun
62
+ # tools or resend accepted steering input. The queued input is prepended in
63
+ # submission order to that request's input, and the explicit request retains its
64
+ # own settings.
65
+ #
66
+ # This event accepts only `type`, `previous_response_id`, and `input`. Do not send
67
+ # `stream_id`; the target response determines the WebSocket lane.
68
+ sig do
69
+ params(
70
+
71
+ input: T.any(String, T::Array[OpenAI::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::Variants]),
72
+
73
+ previous_response_id: String,
74
+
75
+ type: Symbol
76
+ )
77
+ .returns(T.attached_class)
78
+ end
79
+ def self.new(
80
+
81
+ # Input to queue for a continuation of the response. Uses the same string or
82
+ # input-item shape as `response.create.input`, with a non-empty array when
83
+ # supplying input items.
84
+ #
85
+ # Steering accepts only messages with the `user` role. Each message may contain
86
+ # only `type`, `role`, and `content`, with `content` as a string or an array of
87
+ # `input_text`, `input_image`, and `input_file` parts. The optional `type` must be
88
+ # `message`. Other roles, tool outputs, and item types are not supported for
89
+ # steering.
90
+ input:,
91
+
92
+ # The ID of the response to steer on this WebSocket connection.
93
+ previous_response_id:,
94
+
95
+ # The event discriminator. Always `response.steer`.
96
+
97
+ type: :"response.steer"
98
+ )
99
+ end
100
+
101
+ sig do
102
+ override.returns(
103
+ {
104
+ input: T.any(String, T::Array[OpenAI::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::Variants]),
105
+ previous_response_id: String,
106
+ type: Symbol
107
+ }
108
+ )
109
+ end
110
+ def to_hash
111
+ end
112
+
113
+ end
114
+
115
+ end
116
+
117
+ end
118
+ end
@@ -0,0 +1,267 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ BetaResponseSteerFailedEvent = Beta::BetaResponseSteerFailedEvent
7
+
8
+ module Beta
9
+
10
+ class BetaResponseSteerFailedEvent < OpenAI::Internal::Type::BaseModel
11
+
12
+ OrHash = T.type_alias do
13
+ T.any(
14
+ OpenAI::Beta::BetaResponseSteerFailedEvent,
15
+ OpenAI::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ # Information about why the input could not be committed.
20
+ sig { returns(OpenAI::Beta::BetaResponseSteerFailedEvent::Error) }
21
+ attr_reader :error
22
+
23
+ sig { params(error: OpenAI::Beta::BetaResponseSteerFailedEvent::Error::OrHash).void }
24
+ attr_writer :error
25
+
26
+ # The sequence number for this event.
27
+ sig { returns(Integer) }
28
+ attr_accessor :sequence_number
29
+
30
+ # The steering submission that could not be committed.
31
+ sig { returns(OpenAI::Beta::BetaResponseSteerFailedEvent::Steer) }
32
+ attr_reader :steer
33
+
34
+ sig { params(steer: OpenAI::Beta::BetaResponseSteerFailedEvent::Steer::OrHash).void }
35
+ attr_writer :steer
36
+
37
+ # The event discriminator. Always `response.steer.failed`.
38
+ sig { returns(Symbol) }
39
+ attr_accessor :type
40
+
41
+ # The WebSocket lane that emitted this event, when the target response is
42
+ # available and its `response.create` event supplied a `stream_id`.
43
+ sig { returns(T.nilable(String)) }
44
+ attr_reader :stream_id
45
+
46
+ sig { params(stream_id: String).void }
47
+ attr_writer :stream_id
48
+
49
+ # Emitted when steering input is rejected or cannot be committed to a successor
50
+ # response. Returns the original, uncommitted input so the client can carry it
51
+ # into `response.create` when appropriate. Invalid input must be corrected before
52
+ # retrying.
53
+ #
54
+ # Failures after acceptance include the same steering ID. Failures before an ID is
55
+ # allocated omit `steer.id`. A lost connection or missing acknowledgement leaves
56
+ # the outcome unknown; it is not proof that the input was rejected.
57
+ sig do
58
+ params(
59
+
60
+ error: OpenAI::Beta::BetaResponseSteerFailedEvent::Error::OrHash,
61
+
62
+ sequence_number: Integer,
63
+
64
+ steer: OpenAI::Beta::BetaResponseSteerFailedEvent::Steer::OrHash,
65
+
66
+ stream_id: String,
67
+
68
+ type: Symbol
69
+ )
70
+ .returns(T.attached_class)
71
+ end
72
+ def self.new(
73
+
74
+ # Information about why the input could not be committed.
75
+ error:,
76
+
77
+ # The sequence number for this event.
78
+ sequence_number:,
79
+
80
+ # The steering submission that could not be committed.
81
+ steer:,
82
+
83
+ # The WebSocket lane that emitted this event, when the target response is
84
+ # available and its `response.create` event supplied a `stream_id`.
85
+ stream_id: nil,
86
+
87
+ # The event discriminator. Always `response.steer.failed`.
88
+
89
+ type: :"response.steer.failed"
90
+ )
91
+ end
92
+
93
+ sig do
94
+ override.returns(
95
+ {
96
+ error: OpenAI::Beta::BetaResponseSteerFailedEvent::Error,
97
+ sequence_number: Integer,
98
+ steer: OpenAI::Beta::BetaResponseSteerFailedEvent::Steer,
99
+ type: Symbol,
100
+ stream_id: String
101
+ }
102
+ )
103
+ end
104
+ def to_hash
105
+ end
106
+
107
+ class Error < OpenAI::Internal::Type::BaseModel
108
+ OrHash = T.type_alias do
109
+ T.any(
110
+ OpenAI::Beta::BetaResponseSteerFailedEvent::Error,
111
+ OpenAI::Internal::AnyHash
112
+ )
113
+ end
114
+
115
+ # A machine-readable steering error code. Clients should handle unknown values
116
+ # because additional codes may be introduced. Known values include:
117
+ #
118
+ # - `response_not_found`: The target response is not available on this connection.
119
+ # - `invalid_input`: The event or input failed validation.
120
+ # - `steering_not_supported`: The model or response execution mode does not
121
+ # support steering.
122
+ # - `too_many_pending_steers`: Too much steering input is pending for the
123
+ # response.
124
+ # - `response_already_completed`: The response completed and is no longer
125
+ # accepting steering input.
126
+ # - `response_not_active`: The response is no longer accepting steering input.
127
+ # - `successor_creation_failed`: The successor response could not be created.
128
+ sig { returns(OpenAI::Beta::BetaResponseSteerErrorCode::Variants) }
129
+ attr_accessor :code
130
+
131
+ # A human-readable description of the error.
132
+ sig { returns(String) }
133
+ attr_accessor :message
134
+
135
+ # The error type. Always `invalid_request_error`.
136
+ sig { returns(Symbol) }
137
+ attr_accessor :type
138
+
139
+ # Information about why the input could not be committed.
140
+ sig do
141
+ params(
142
+
143
+ code: T.any(OpenAI::Beta::BetaResponseSteerErrorCode::OrSymbol, String),
144
+
145
+ message: String,
146
+
147
+ type: Symbol
148
+ )
149
+ .returns(T.attached_class)
150
+ end
151
+ def self.new(
152
+
153
+ # A machine-readable steering error code. Clients should handle unknown values
154
+ # because additional codes may be introduced. Known values include:
155
+ #
156
+ # - `response_not_found`: The target response is not available on this connection.
157
+ # - `invalid_input`: The event or input failed validation.
158
+ # - `steering_not_supported`: The model or response execution mode does not
159
+ # support steering.
160
+ # - `too_many_pending_steers`: Too much steering input is pending for the
161
+ # response.
162
+ # - `response_already_completed`: The response completed and is no longer
163
+ # accepting steering input.
164
+ # - `response_not_active`: The response is no longer accepting steering input.
165
+ # - `successor_creation_failed`: The successor response could not be created.
166
+ code:,
167
+
168
+ # A human-readable description of the error.
169
+ message:,
170
+
171
+ # The error type. Always `invalid_request_error`.
172
+
173
+ type: :invalid_request_error
174
+ )
175
+ end
176
+
177
+ sig do
178
+ override.returns(
179
+ {code: OpenAI::Beta::BetaResponseSteerErrorCode::Variants, message: String, type: Symbol}
180
+ )
181
+ end
182
+ def to_hash
183
+ end
184
+
185
+ end
186
+
187
+ class Steer < OpenAI::Internal::Type::BaseModel
188
+ OrHash = T.type_alias do
189
+ T.any(
190
+ OpenAI::Beta::BetaResponseSteerFailedEvent::Steer,
191
+ OpenAI::Internal::AnyHash
192
+ )
193
+ end
194
+
195
+ # Input to queue for a continuation of the response. Uses the same string or
196
+ # input-item shape as `response.create.input`, with a non-empty array when
197
+ # supplying input items.
198
+ #
199
+ # Steering accepts only messages with the `user` role. Each message may contain
200
+ # only `type`, `role`, and `content`, with `content` as a string or an array of
201
+ # `input_text`, `input_image`, and `input_file` parts. The optional `type` must be
202
+ # `message`. Other roles, tool outputs, and item types are not supported for
203
+ # steering.
204
+ sig { returns(OpenAI::Beta::BetaResponseSteerInput::Variants) }
205
+ attr_accessor :input
206
+
207
+ # The ID of the response that was targeted for steering.
208
+ sig { returns(String) }
209
+ attr_accessor :previous_response_id
210
+
211
+ # The ID assigned to the steering submission, if one was allocated.
212
+ sig { returns(T.nilable(String)) }
213
+ attr_reader :id
214
+
215
+ sig { params(id: String).void }
216
+ attr_writer :id
217
+
218
+ # The steering submission that could not be committed.
219
+ sig do
220
+ params(
221
+
222
+ input: T.any(String, T::Array[OpenAI::Beta::BetaResponseSteerInput::ResponseSteerInputItemList::Variants]),
223
+
224
+ previous_response_id: String,
225
+
226
+ id: String
227
+ )
228
+ .returns(T.attached_class)
229
+ end
230
+ def self.new(
231
+
232
+ # Input to queue for a continuation of the response. Uses the same string or
233
+ # input-item shape as `response.create.input`, with a non-empty array when
234
+ # supplying input items.
235
+ #
236
+ # Steering accepts only messages with the `user` role. Each message may contain
237
+ # only `type`, `role`, and `content`, with `content` as a string or an array of
238
+ # `input_text`, `input_image`, and `input_file` parts. The optional `type` must be
239
+ # `message`. Other roles, tool outputs, and item types are not supported for
240
+ # steering.
241
+ input:,
242
+
243
+ # The ID of the response that was targeted for steering.
244
+ previous_response_id:,
245
+
246
+ # The ID assigned to the steering submission, if one was allocated.
247
+
248
+ id: nil
249
+ )
250
+ end
251
+
252
+ sig do
253
+ override.returns(
254
+ {input: OpenAI::Beta::BetaResponseSteerInput::Variants, previous_response_id: String, id: String}
255
+ )
256
+ end
257
+ def to_hash
258
+ end
259
+
260
+ end
261
+
262
+ end
263
+
264
+ end
265
+
266
+ end
267
+ end