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