openai 0.84.0 → 0.85.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/README.md +1 -1
  4. data/SECURITY.md +10 -0
  5. data/docs/architecture/security-model.md +267 -0
  6. data/lib/openai/client.rb +4 -0
  7. data/lib/openai/helpers/streaming/chat_completion_stream.rb +17 -8
  8. data/lib/openai/helpers/streaming/response_stream.rb +13 -8
  9. data/lib/openai/helpers/structured_output/array_of.rb +2 -2
  10. data/lib/openai/helpers/structured_output/base_model.rb +19 -5
  11. data/lib/openai/helpers/structured_output/chat_completion_parser.rb +6 -3
  12. data/lib/openai/helpers/structured_output/json_schema_converter.rb +34 -11
  13. data/lib/openai/internal/vector_store_file_uploader.rb +1 -1
  14. data/lib/openai/models/admin/organization/usage_costs_params.rb +1 -1
  15. data/lib/openai/models/batch.rb +2 -2
  16. data/lib/openai/models/beta/beta_custom_tool.rb +13 -1
  17. data/lib/openai/models/beta/beta_function_tool.rb +8 -1
  18. data/lib/openai/models/beta/beta_namespace_tool.rb +10 -1
  19. data/lib/openai/models/beta/beta_response.rb +20 -9
  20. data/lib/openai/models/beta/beta_response_configuration_update_item.rb +103 -0
  21. data/lib/openai/models/beta/beta_response_configuration_update_item_param.rb +104 -0
  22. data/lib/openai/models/beta/beta_response_custom_tool_call.rb +9 -1
  23. data/lib/openai/models/beta/beta_response_custom_tool_call_item.rb +3 -1
  24. data/lib/openai/models/beta/beta_response_error.rb +96 -1
  25. data/lib/openai/models/beta/beta_response_function_tool_call.rb +9 -1
  26. data/lib/openai/models/beta/beta_response_function_tool_call_item.rb +3 -1
  27. data/lib/openai/models/beta/beta_response_incomplete_event.rb +4 -0
  28. data/lib/openai/models/beta/beta_response_inject_event.rb +2 -2
  29. data/lib/openai/models/beta/beta_response_inject_failed_event.rb +2 -2
  30. data/lib/openai/models/beta/beta_response_input_item.rb +6 -1
  31. data/lib/openai/models/beta/beta_response_item.rb +5 -1
  32. data/lib/openai/models/beta/beta_response_steer_accepted_event.rb +81 -0
  33. data/lib/openai/models/beta/beta_response_steer_error_code.rb +61 -0
  34. data/lib/openai/models/beta/beta_response_steer_event.rb +75 -0
  35. data/lib/openai/models/beta/beta_response_steer_failed_event.rb +151 -0
  36. data/lib/openai/models/beta/beta_response_steer_input.rb +360 -0
  37. data/lib/openai/models/beta/beta_response_steer_input_content.rb +28 -0
  38. data/lib/openai/models/beta/beta_response_steer_pending_event.rb +113 -0
  39. data/lib/openai/models/beta/beta_response_steer_pending_reason.rb +26 -0
  40. data/lib/openai/models/beta/beta_response_steer_required_input.rb +215 -0
  41. data/lib/openai/models/beta/beta_response_stream_event.rb +4 -0
  42. data/lib/openai/models/beta/beta_responses_client_event.rb +40 -7
  43. data/lib/openai/models/beta/beta_responses_server_event.rb +164 -2
  44. data/lib/openai/models/beta/response_compact_params.rb +9 -6
  45. data/lib/openai/models/beta/response_create_params.rb +9 -6
  46. data/lib/openai/models/beta/responses/beta_response_item_list.rb +2 -2
  47. data/lib/openai/models/beta/responses/input_token_count_params.rb +3 -3
  48. data/lib/openai/models/chat/completion_create_params.rb +4 -4
  49. data/lib/openai/models/chat_model.rb +1 -0
  50. data/lib/openai/models/conversations/conversation_create_params.rb +2 -2
  51. data/lib/openai/models/conversations/conversation_item.rb +5 -1
  52. data/lib/openai/models/conversations/conversation_item_list.rb +2 -2
  53. data/lib/openai/models/conversations/item_create_params.rb +2 -2
  54. data/lib/openai/models/error_object.rb +90 -1
  55. data/lib/openai/models/eval_create_response.rb +1 -1
  56. data/lib/openai/models/eval_list_response.rb +1 -1
  57. data/lib/openai/models/eval_retrieve_response.rb +1 -1
  58. data/lib/openai/models/eval_update_response.rb +1 -1
  59. data/lib/openai/models/evals/create_eval_completions_run_data_source.rb +2 -2
  60. data/lib/openai/models/responses/custom_tool.rb +13 -1
  61. data/lib/openai/models/responses/function_tool.rb +8 -1
  62. data/lib/openai/models/responses/input_token_count_params.rb +3 -3
  63. data/lib/openai/models/responses/namespace_tool.rb +10 -1
  64. data/lib/openai/models/responses/response.rb +16 -8
  65. data/lib/openai/models/responses/response_compact_params.rb +9 -6
  66. data/lib/openai/models/responses/response_configuration_update_item.rb +56 -0
  67. data/lib/openai/models/responses/response_configuration_update_item_param.rb +57 -0
  68. data/lib/openai/models/responses/response_create_params.rb +5 -5
  69. data/lib/openai/models/responses/response_custom_tool_call.rb +9 -1
  70. data/lib/openai/models/responses/response_custom_tool_call_item.rb +3 -1
  71. data/lib/openai/models/responses/response_error.rb +96 -1
  72. data/lib/openai/models/responses/response_function_tool_call.rb +9 -1
  73. data/lib/openai/models/responses/response_function_tool_call_item.rb +3 -1
  74. data/lib/openai/models/responses/response_incomplete_event.rb +4 -0
  75. data/lib/openai/models/responses/response_input_item.rb +6 -1
  76. data/lib/openai/models/responses/response_item.rb +5 -1
  77. data/lib/openai/models/responses/response_item_list.rb +2 -2
  78. data/lib/openai/models/responses/response_steer_accepted_event.rb +79 -0
  79. data/lib/openai/models/responses/response_steer_error_code.rb +59 -0
  80. data/lib/openai/models/responses/response_steer_event.rb +73 -0
  81. data/lib/openai/models/responses/response_steer_failed_event.rb +149 -0
  82. data/lib/openai/models/responses/response_steer_input.rb +304 -0
  83. data/lib/openai/models/responses/response_steer_input_content.rb +26 -0
  84. data/lib/openai/models/responses/response_steer_pending_event.rb +111 -0
  85. data/lib/openai/models/responses/response_steer_pending_reason.rb +24 -0
  86. data/lib/openai/models/responses/response_steer_required_input.rb +213 -0
  87. data/lib/openai/models/responses/response_stream_event.rb +4 -0
  88. data/lib/openai/models/responses/responses_client_event.rb +872 -769
  89. data/lib/openai/models/responses/responses_server_event.rb +162 -2
  90. data/lib/openai/models/safety/alert_retrieve_params.rb +24 -0
  91. data/lib/openai/models/safety/safety_alert.rb +96 -0
  92. data/lib/openai/models/video_create_error.rb +93 -1
  93. data/lib/openai/models/webhooks/safety_alert_created_webhook_event.rb +63 -0
  94. data/lib/openai/models/webhooks/safety_org_alert_created_webhook_event.rb +63 -0
  95. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +7 -1
  96. data/lib/openai/models.rb +2 -0
  97. data/lib/openai/net_http_client.rb +1 -1
  98. data/lib/openai/providers/bedrock.rb +20 -12
  99. data/lib/openai/resources/beta/responses/input_items.rb +1 -1
  100. data/lib/openai/resources/beta/responses/input_tokens.rb +1 -1
  101. data/lib/openai/resources/beta/responses.rb +6 -6
  102. data/lib/openai/resources/chat/completions.rb +2 -2
  103. data/lib/openai/resources/conversations/items.rb +3 -3
  104. data/lib/openai/resources/conversations.rb +1 -1
  105. data/lib/openai/resources/responses/input_items.rb +1 -1
  106. data/lib/openai/resources/responses/input_tokens.rb +1 -1
  107. data/lib/openai/resources/responses.rb +6 -6
  108. data/lib/openai/resources/safety/alerts.rb +37 -0
  109. data/lib/openai/resources/safety.rb +18 -0
  110. data/lib/openai/resources/webhooks.rb +1 -1
  111. data/lib/openai/version.rb +1 -1
  112. data/lib/openai.rb +28 -0
  113. data/rbi/openai/client.rbi +3 -0
  114. data/rbi/openai/models/admin/organization/usage_costs_params.rbi +2 -2
  115. data/rbi/openai/models/batch.rbi +2 -2
  116. data/rbi/openai/models/beta/beta_custom_tool.rbi +15 -0
  117. data/rbi/openai/models/beta/beta_function_tool.rbi +11 -0
  118. data/rbi/openai/models/beta/beta_namespace_tool.rbi +15 -0
  119. data/rbi/openai/models/beta/beta_response.rbi +14 -6
  120. data/rbi/openai/models/beta/beta_response_configuration_update_item.rbi +200 -0
  121. data/rbi/openai/models/beta/beta_response_configuration_update_item_param.rbi +207 -0
  122. data/rbi/openai/models/beta/beta_response_custom_tool_call.rbi +13 -0
  123. data/rbi/openai/models/beta/beta_response_custom_tool_call_item.rbi +6 -0
  124. data/rbi/openai/models/beta/beta_response_error.rbi +161 -3
  125. data/rbi/openai/models/beta/beta_response_function_tool_call.rbi +13 -0
  126. data/rbi/openai/models/beta/beta_response_function_tool_call_item.rbi +6 -0
  127. data/rbi/openai/models/beta/beta_response_incomplete_event.rbi +4 -0
  128. data/rbi/openai/models/beta/beta_response_inject_event.rbi +3 -0
  129. data/rbi/openai/models/beta/beta_response_inject_failed_event.rbi +3 -0
  130. data/rbi/openai/models/beta/beta_response_input_item.rbi +1 -0
  131. data/rbi/openai/models/beta/beta_response_item.rbi +1 -0
  132. data/rbi/openai/models/beta/beta_response_steer_accepted_event.rbi +148 -0
  133. data/rbi/openai/models/beta/beta_response_steer_error_code.rbi +65 -0
  134. data/rbi/openai/models/beta/beta_response_steer_event.rbi +118 -0
  135. data/rbi/openai/models/beta/beta_response_steer_failed_event.rbi +267 -0
  136. data/rbi/openai/models/beta/beta_response_steer_input.rbi +602 -0
  137. data/rbi/openai/models/beta/beta_response_steer_input_content.rbi +31 -0
  138. data/rbi/openai/models/beta/beta_response_steer_pending_event.rbi +222 -0
  139. data/rbi/openai/models/beta/beta_response_steer_pending_reason.rbi +35 -0
  140. data/rbi/openai/models/beta/beta_response_steer_required_input.rbi +379 -0
  141. data/rbi/openai/models/beta/beta_responses_client_event.rbi +8 -3
  142. data/rbi/openai/models/beta/beta_responses_server_event.rbi +206 -3
  143. data/rbi/openai/models/beta/response_compact_params.rbi +4 -3
  144. data/rbi/openai/models/beta/response_create_params.rbi +4 -3
  145. data/rbi/openai/models/beta/responses/beta_response_item_list.rbi +1 -0
  146. data/rbi/openai/models/chat/completion_create_params.rbi +3 -3
  147. data/rbi/openai/models/chat_model.rbi +1 -0
  148. data/rbi/openai/models/conversations/conversation_create_params.rbi +3 -0
  149. data/rbi/openai/models/conversations/conversation_item.rbi +1 -0
  150. data/rbi/openai/models/conversations/conversation_item_list.rbi +1 -0
  151. data/rbi/openai/models/conversations/item_create_params.rbi +3 -0
  152. data/rbi/openai/models/error_object.rbi +156 -3
  153. data/rbi/openai/models/eval_create_response.rbi +1 -1
  154. data/rbi/openai/models/eval_list_response.rbi +1 -1
  155. data/rbi/openai/models/eval_retrieve_response.rbi +1 -1
  156. data/rbi/openai/models/eval_update_response.rbi +1 -1
  157. data/rbi/openai/models/evals/create_eval_completions_run_data_source.rbi +2 -2
  158. data/rbi/openai/models/responses/custom_tool.rbi +15 -0
  159. data/rbi/openai/models/responses/function_tool.rbi +11 -0
  160. data/rbi/openai/models/responses/namespace_tool.rbi +15 -0
  161. data/rbi/openai/models/responses/response.rbi +12 -5
  162. data/rbi/openai/models/responses/response_compact_params.rbi +4 -3
  163. data/rbi/openai/models/responses/response_configuration_update_item.rbi +112 -0
  164. data/rbi/openai/models/responses/response_configuration_update_item_param.rbi +117 -0
  165. data/rbi/openai/models/responses/response_create_params.rbi +2 -2
  166. data/rbi/openai/models/responses/response_custom_tool_call.rbi +13 -0
  167. data/rbi/openai/models/responses/response_custom_tool_call_item.rbi +6 -0
  168. data/rbi/openai/models/responses/response_error.rbi +161 -3
  169. data/rbi/openai/models/responses/response_function_tool_call.rbi +13 -0
  170. data/rbi/openai/models/responses/response_function_tool_call_item.rbi +6 -0
  171. data/rbi/openai/models/responses/response_incomplete_event.rbi +4 -0
  172. data/rbi/openai/models/responses/response_input_item.rbi +1 -0
  173. data/rbi/openai/models/responses/response_item.rbi +1 -0
  174. data/rbi/openai/models/responses/response_item_list.rbi +1 -0
  175. data/rbi/openai/models/responses/response_steer_accepted_event.rbi +146 -0
  176. data/rbi/openai/models/responses/response_steer_error_code.rbi +63 -0
  177. data/rbi/openai/models/responses/response_steer_event.rbi +119 -0
  178. data/rbi/openai/models/responses/response_steer_failed_event.rbi +268 -0
  179. data/rbi/openai/models/responses/response_steer_input.rbi +474 -0
  180. data/rbi/openai/models/responses/response_steer_input_content.rbi +29 -0
  181. data/rbi/openai/models/responses/response_steer_pending_event.rbi +220 -0
  182. data/rbi/openai/models/responses/response_steer_pending_reason.rbi +33 -0
  183. data/rbi/openai/models/responses/response_steer_required_input.rbi +377 -0
  184. data/rbi/openai/models/responses/responses_client_event.rbi +1204 -1036
  185. data/rbi/openai/models/responses/responses_server_event.rbi +202 -3
  186. data/rbi/openai/models/safety/alert_retrieve_params.rbi +55 -0
  187. data/rbi/openai/models/safety/safety_alert.rbi +147 -0
  188. data/rbi/openai/models/video_create_error.rbi +149 -3
  189. data/rbi/openai/models/webhooks/safety_alert_created_webhook_event.rbi +130 -0
  190. data/rbi/openai/models/webhooks/safety_org_alert_created_webhook_event.rbi +130 -0
  191. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +3 -1
  192. data/rbi/openai/models.rbi +2 -0
  193. data/rbi/openai/resources/admin/organization/usage.rbi +1 -1
  194. data/rbi/openai/resources/beta/responses.rbi +3 -3
  195. data/rbi/openai/resources/chat/completions.rbi +2 -2
  196. data/rbi/openai/resources/conversations/items.rbi +1 -0
  197. data/rbi/openai/resources/conversations.rbi +1 -0
  198. data/rbi/openai/resources/responses.rbi +3 -3
  199. data/rbi/openai/resources/safety/alerts.rbi +30 -0
  200. data/rbi/openai/resources/safety.rbi +18 -0
  201. data/rbi/openai/resources/webhooks.rbi +3 -1
  202. data/sig/openai/client.rbs +2 -0
  203. data/sig/openai/models/beta/beta_custom_tool.rbs +7 -0
  204. data/sig/openai/models/beta/beta_function_tool.rbs +7 -0
  205. data/sig/openai/models/beta/beta_namespace_tool.rbs +7 -0
  206. data/sig/openai/models/beta/beta_response.rbs +6 -2
  207. data/sig/openai/models/beta/beta_response_configuration_update_item.rbs +91 -0
  208. data/sig/openai/models/beta/beta_response_configuration_update_item_param.rbs +87 -0
  209. data/sig/openai/models/beta/beta_response_custom_tool_call.rbs +7 -0
  210. data/sig/openai/models/beta/beta_response_custom_tool_call_item.rbs +3 -0
  211. data/sig/openai/models/beta/beta_response_error.rbs +82 -3
  212. data/sig/openai/models/beta/beta_response_function_tool_call.rbs +7 -0
  213. data/sig/openai/models/beta/beta_response_function_tool_call_item.rbs +3 -0
  214. data/sig/openai/models/beta/beta_response_input_item.rbs +1 -0
  215. data/sig/openai/models/beta/beta_response_item.rbs +1 -0
  216. data/sig/openai/models/beta/beta_response_steer_accepted_event.rbs +53 -0
  217. data/sig/openai/models/beta/beta_response_steer_error_code.rbs +31 -0
  218. data/sig/openai/models/beta/beta_response_steer_event.rbs +34 -0
  219. data/sig/openai/models/beta/beta_response_steer_failed_event.rbs +102 -0
  220. data/sig/openai/models/beta/beta_response_steer_input.rbs +214 -0
  221. data/sig/openai/models/beta/beta_response_steer_input_content.rbs +18 -0
  222. data/sig/openai/models/beta/beta_response_steer_pending_event.rbs +63 -0
  223. data/sig/openai/models/beta/beta_response_steer_pending_reason.rbs +16 -0
  224. data/sig/openai/models/beta/beta_response_steer_required_input.rbs +161 -0
  225. data/sig/openai/models/beta/beta_responses_client_event.rbs +4 -1
  226. data/sig/openai/models/beta/beta_responses_server_event.rbs +80 -3
  227. data/sig/openai/models/beta/response_compact_params.rbs +3 -1
  228. data/sig/openai/models/beta/response_create_params.rbs +3 -1
  229. data/sig/openai/models/chat_model.rbs +3 -1
  230. data/sig/openai/models/conversations/conversation_item.rbs +1 -0
  231. data/sig/openai/models/error_object.rbs +82 -3
  232. data/sig/openai/models/responses/custom_tool.rbs +7 -0
  233. data/sig/openai/models/responses/function_tool.rbs +7 -0
  234. data/sig/openai/models/responses/namespace_tool.rbs +7 -0
  235. data/sig/openai/models/responses/response.rbs +3 -1
  236. data/sig/openai/models/responses/response_compact_params.rbs +3 -1
  237. data/sig/openai/models/responses/response_configuration_update_item.rbs +46 -0
  238. data/sig/openai/models/responses/response_configuration_update_item_param.rbs +46 -0
  239. data/sig/openai/models/responses/response_custom_tool_call.rbs +7 -0
  240. data/sig/openai/models/responses/response_custom_tool_call_item.rbs +3 -0
  241. data/sig/openai/models/responses/response_error.rbs +79 -3
  242. data/sig/openai/models/responses/response_function_tool_call.rbs +7 -0
  243. data/sig/openai/models/responses/response_function_tool_call_item.rbs +3 -0
  244. data/sig/openai/models/responses/response_input_item.rbs +1 -0
  245. data/sig/openai/models/responses/response_item.rbs +1 -0
  246. data/sig/openai/models/responses/response_steer_accepted_event.rbs +51 -0
  247. data/sig/openai/models/responses/response_steer_error_code.rbs +29 -0
  248. data/sig/openai/models/responses/response_steer_event.rbs +32 -0
  249. data/sig/openai/models/responses/response_steer_failed_event.rbs +100 -0
  250. data/sig/openai/models/responses/response_steer_input.rbs +182 -0
  251. data/sig/openai/models/responses/response_steer_input_content.rbs +16 -0
  252. data/sig/openai/models/responses/response_steer_pending_event.rbs +61 -0
  253. data/sig/openai/models/responses/response_steer_pending_reason.rbs +13 -0
  254. data/sig/openai/models/responses/response_steer_required_input.rbs +159 -0
  255. data/sig/openai/models/responses/responses_client_event.rbs +355 -344
  256. data/sig/openai/models/responses/responses_server_event.rbs +80 -3
  257. data/sig/openai/models/safety/alert_retrieve_params.rbs +22 -0
  258. data/sig/openai/models/safety/safety_alert.rbs +81 -0
  259. data/sig/openai/models/video_create_error.rbs +87 -3
  260. data/sig/openai/models/webhooks/safety_alert_created_webhook_event.rbs +52 -0
  261. data/sig/openai/models/webhooks/safety_org_alert_created_webhook_event.rbs +52 -0
  262. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +2 -0
  263. data/sig/openai/models.rbs +2 -0
  264. data/sig/openai/resources/safety/alerts.rbs +14 -0
  265. data/sig/openai/resources/safety.rbs +9 -0
  266. data/sig/openai/resources/webhooks.rbs +3 -1
  267. metadata +86 -1
@@ -24,13 +24,21 @@ module OpenAI
24
24
  sig { returns(String) }
25
25
  attr_accessor :message
26
26
 
27
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponseError::Misalignment)) }
28
+ attr_reader :misalignment
29
+
30
+ sig { params(misalignment: OpenAI::Beta::BetaResponseError::Misalignment::OrHash).void }
31
+ attr_writer :misalignment
32
+
27
33
  # An error object returned when the model fails to generate a Response.
28
34
  sig do
29
35
  params(
30
36
 
31
37
  code: OpenAI::Beta::BetaResponseError::Code::OrSymbol,
32
38
 
33
- message: String
39
+ message: String,
40
+
41
+ misalignment: OpenAI::Beta::BetaResponseError::Misalignment::OrHash
34
42
  )
35
43
  .returns(T.attached_class)
36
44
  end
@@ -40,14 +48,19 @@ module OpenAI
40
48
  code:,
41
49
 
42
50
  # A human-readable description of the error.
51
+ message:,
43
52
 
44
- message:
53
+ misalignment: nil
45
54
  )
46
55
  end
47
56
 
48
57
  sig do
49
58
  override.returns(
50
- {code: OpenAI::Beta::BetaResponseError::Code::TaggedSymbol, message: String}
59
+ {
60
+ code: OpenAI::Beta::BetaResponseError::Code::TaggedSymbol,
61
+ message: String,
62
+ misalignment: OpenAI::Beta::BetaResponseError::Misalignment
63
+ }
51
64
  )
52
65
  end
53
66
  def to_hash
@@ -65,6 +78,10 @@ module OpenAI
65
78
  INVALID_PROMPT = T.let(:invalid_prompt, OpenAI::Beta::BetaResponseError::Code::TaggedSymbol)
66
79
  DATA_RESIDENCY_MISMATCH = T.let(:data_residency_mismatch, OpenAI::Beta::BetaResponseError::Code::TaggedSymbol)
67
80
  BIO_POLICY = T.let(:bio_policy, OpenAI::Beta::BetaResponseError::Code::TaggedSymbol)
81
+ MISALIGNMENT_POLICY_VIOLATION = T.let(
82
+ :misalignment_policy_violation,
83
+ OpenAI::Beta::BetaResponseError::Code::TaggedSymbol
84
+ )
68
85
  VECTOR_STORE_TIMEOUT = T.let(:vector_store_timeout, OpenAI::Beta::BetaResponseError::Code::TaggedSymbol)
69
86
  INVALID_IMAGE = T.let(:invalid_image, OpenAI::Beta::BetaResponseError::Code::TaggedSymbol)
70
87
  INVALID_IMAGE_FORMAT = T.let(:invalid_image_format, OpenAI::Beta::BetaResponseError::Code::TaggedSymbol)
@@ -95,6 +112,147 @@ module OpenAI
95
112
  end
96
113
  end
97
114
 
115
+ class Misalignment < OpenAI::Internal::Type::BaseModel
116
+ OrHash = T.type_alias do
117
+ T.any(
118
+ OpenAI::Beta::BetaResponseError::Misalignment,
119
+ OpenAI::Internal::AnyHash
120
+ )
121
+ end
122
+
123
+ # The public explanation for this block.
124
+ sig { returns(T.nilable(String)) }
125
+ attr_reader :detailed_explanation
126
+
127
+ sig { params(detailed_explanation: String).void }
128
+ attr_writer :detailed_explanation
129
+
130
+ # An optional classification; clients must accept additional values.
131
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponseError::Misalignment::ErrorType::Variants)) }
132
+ attr_reader :error_type
133
+
134
+ sig {
135
+ params(error_type: T.any(String, OpenAI::Beta::BetaResponseError::Misalignment::ErrorType::OrSymbol)).void
136
+ }
137
+ attr_writer :error_type
138
+
139
+ # An optional public continuation instruction.
140
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponseError::Misalignment::Steer)) }
141
+ attr_reader :steer
142
+
143
+ sig { params(steer: OpenAI::Beta::BetaResponseError::Misalignment::Steer::OrHash).void }
144
+ attr_writer :steer
145
+
146
+ sig do
147
+ params(
148
+
149
+ detailed_explanation: String,
150
+
151
+ error_type: T.any(String, OpenAI::Beta::BetaResponseError::Misalignment::ErrorType::OrSymbol),
152
+
153
+ steer: OpenAI::Beta::BetaResponseError::Misalignment::Steer::OrHash
154
+ )
155
+ .returns(T.attached_class)
156
+ end
157
+ def self.new(
158
+
159
+ # The public explanation for this block.
160
+ detailed_explanation: nil,
161
+
162
+ # An optional classification; clients must accept additional values.
163
+ error_type: nil,
164
+
165
+ # An optional public continuation instruction.
166
+
167
+ steer: nil
168
+ )
169
+ end
170
+
171
+ sig do
172
+ override.returns(
173
+ {
174
+ detailed_explanation: String,
175
+ error_type: OpenAI::Beta::BetaResponseError::Misalignment::ErrorType::Variants,
176
+ steer: OpenAI::Beta::BetaResponseError::Misalignment::Steer
177
+ }
178
+ )
179
+ end
180
+ def to_hash
181
+ end
182
+
183
+ # An optional classification; clients must accept additional values.
184
+ module ErrorType
185
+ extend OpenAI::Internal::Type::Union
186
+
187
+ Variants = T.type_alias {
188
+ T.any(String, OpenAI::Beta::BetaResponseError::Misalignment::ErrorType::TaggedSymbol)
189
+ }
190
+
191
+ sig { override.returns(T::Array[OpenAI::Beta::BetaResponseError::Misalignment::ErrorType::Variants]) }
192
+ def self.variants
193
+ end
194
+
195
+ TaggedSymbol = T.type_alias do
196
+ T.all(Symbol, OpenAI::Beta::BetaResponseError::Misalignment::ErrorType)
197
+ end
198
+
199
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
200
+
201
+ POTENTIALLY_UNINTENDED_DATA_TRANSFER = T.let(
202
+ :potentially_unintended_data_transfer,
203
+ OpenAI::Beta::BetaResponseError::Misalignment::ErrorType::TaggedSymbol
204
+ )
205
+ POTENTIALLY_UNINTENDED_DATA_ACCESS = T.let(
206
+ :potentially_unintended_data_access,
207
+ OpenAI::Beta::BetaResponseError::Misalignment::ErrorType::TaggedSymbol
208
+ )
209
+ POTENTIALLY_UNINTENDED_DESTRUCTIVE_ACTIVITY = T.let(
210
+ :potentially_unintended_destructive_activity,
211
+ OpenAI::Beta::BetaResponseError::Misalignment::ErrorType::TaggedSymbol
212
+ )
213
+ OTHER = T.let(:other, OpenAI::Beta::BetaResponseError::Misalignment::ErrorType::TaggedSymbol)
214
+
215
+ end
216
+
217
+ class Steer < OpenAI::Internal::Type::BaseModel
218
+ OrHash = T.type_alias do
219
+ T.any(
220
+ OpenAI::Beta::BetaResponseError::Misalignment::Steer,
221
+ OpenAI::Internal::AnyHash
222
+ )
223
+ end
224
+
225
+ # The public continuation instruction.
226
+ sig { returns(String) }
227
+ attr_accessor :message
228
+
229
+ # An optional public continuation instruction.
230
+ sig do
231
+ params(
232
+
233
+ message: String
234
+ )
235
+ .returns(T.attached_class)
236
+ end
237
+ def self.new(
238
+
239
+ # The public continuation instruction.
240
+
241
+ message:
242
+ )
243
+ end
244
+
245
+ sig do
246
+ override.returns(
247
+ {message: String}
248
+ )
249
+ end
250
+ def to_hash
251
+ end
252
+
253
+ end
254
+ end
255
+
98
256
  end
99
257
 
100
258
  end
@@ -46,6 +46,13 @@ module OpenAI
46
46
  sig { params(agent: T.nilable(OpenAI::Beta::BetaResponseFunctionToolCall::Agent::OrHash)).void }
47
47
  attr_writer :agent
48
48
 
49
+ # Whether the function tool call runs asynchronously.
50
+ sig { returns(T.nilable(T::Boolean)) }
51
+ attr_reader :async
52
+
53
+ sig { params(async: T::Boolean).void }
54
+ attr_writer :async
55
+
49
56
  # The execution context that produced this tool call.
50
57
  sig {
51
58
  returns(
@@ -90,6 +97,8 @@ module OpenAI
90
97
 
91
98
  agent: T.nilable(OpenAI::Beta::BetaResponseFunctionToolCall::Agent::OrHash),
92
99
 
100
+ async: T::Boolean,
101
+
93
102
  caller_: T.nilable(
94
103
  T.any(
95
104
  OpenAI::Beta::BetaResponseFunctionToolCall::Caller::Direct::OrHash,
@@ -122,6 +131,9 @@ module OpenAI
122
131
  # The agent that produced this item.
123
132
  agent: nil,
124
133
 
134
+ # Whether the function tool call runs asynchronously.
135
+ async: nil,
136
+
125
137
  # The execution context that produced this tool call.
126
138
  caller_: nil,
127
139
 
@@ -147,6 +159,7 @@ module OpenAI
147
159
  type: Symbol,
148
160
  id: String,
149
161
  agent: T.nilable(OpenAI::Beta::BetaResponseFunctionToolCall::Agent),
162
+ async: T::Boolean,
150
163
  caller_: T.nilable(
151
164
  T.any(
152
165
  OpenAI::Beta::BetaResponseFunctionToolCall::Caller::Direct,
@@ -50,6 +50,8 @@ module OpenAI
50
50
 
51
51
  agent: T.nilable(OpenAI::Beta::BetaResponseFunctionToolCall::Agent::OrHash),
52
52
 
53
+ async: T::Boolean,
54
+
53
55
  caller_: T.nilable(
54
56
  T.any(
55
57
  OpenAI::Beta::BetaResponseFunctionToolCall::Caller::Direct::OrHash,
@@ -86,6 +88,9 @@ module OpenAI
86
88
  # The agent that produced this item.
87
89
  agent: nil,
88
90
 
91
+ # Whether the function tool call runs asynchronously.
92
+ async: nil,
93
+
89
94
  # The execution context that produced this tool call.
90
95
  caller_: nil,
91
96
 
@@ -111,6 +116,7 @@ module OpenAI
111
116
  status: OpenAI::Beta::BetaResponseFunctionToolCallItem::Status::TaggedSymbol,
112
117
  type: Symbol,
113
118
  agent: T.nilable(OpenAI::Beta::BetaResponseFunctionToolCall::Agent),
119
+ async: T::Boolean,
114
120
  caller_: T.nilable(
115
121
  T.any(
116
122
  OpenAI::Beta::BetaResponseFunctionToolCall::Caller::Direct,
@@ -39,6 +39,10 @@ module OpenAI
39
39
  attr_writer :agent
40
40
 
41
41
  # An event that is emitted when a response finishes as incomplete.
42
+ #
43
+ # Over WebSocket, steering can finish a response with
44
+ # `response.incomplete_details.reason` set to `steered`, followed automatically by
45
+ # a successor `response.created` that commits the queued steering input.
42
46
  sig do
43
47
  params(
44
48
 
@@ -36,6 +36,7 @@ module OpenAI
36
36
  OpenAI::Beta::BetaResponseInputItem::ToolSearchCall,
37
37
  OpenAI::Beta::BetaResponseToolSearchOutputItemParam,
38
38
  OpenAI::Beta::BetaResponseInputItem::AdditionalTools,
39
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam,
39
40
  OpenAI::Beta::BetaResponseReasoningItem,
40
41
  OpenAI::Beta::BetaResponseCompactionItemParam,
41
42
  OpenAI::Beta::BetaResponseInputItem::ImageGenerationCall,
@@ -93,6 +94,7 @@ module OpenAI
93
94
  OpenAI::Beta::BetaResponseInputItem::ToolSearchCall::OrHash,
94
95
  OpenAI::Beta::BetaResponseToolSearchOutputItemParam::OrHash,
95
96
  OpenAI::Beta::BetaResponseInputItem::AdditionalTools::OrHash,
97
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::OrHash,
96
98
  OpenAI::Beta::BetaResponseReasoningItem::OrHash,
97
99
  OpenAI::Beta::BetaResponseCompactionItemParam::OrHash,
98
100
  OpenAI::Beta::BetaResponseInputItem::ImageGenerationCall::OrHash,
@@ -156,6 +158,7 @@ module OpenAI
156
158
  OpenAI::Beta::BetaResponseInputItem::ToolSearchCall,
157
159
  OpenAI::Beta::BetaResponseToolSearchOutputItemParam,
158
160
  OpenAI::Beta::BetaResponseInputItem::AdditionalTools,
161
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam,
159
162
  OpenAI::Beta::BetaResponseReasoningItem,
160
163
  OpenAI::Beta::BetaResponseCompactionItemParam,
161
164
  OpenAI::Beta::BetaResponseInputItem::ImageGenerationCall,
@@ -43,6 +43,7 @@ module OpenAI
43
43
  OpenAI::Beta::BetaResponseInputItem::ToolSearchCall,
44
44
  OpenAI::Beta::BetaResponseToolSearchOutputItemParam,
45
45
  OpenAI::Beta::BetaResponseInputItem::AdditionalTools,
46
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam,
46
47
  OpenAI::Beta::BetaResponseReasoningItem,
47
48
  OpenAI::Beta::BetaResponseCompactionItemParam,
48
49
  OpenAI::Beta::BetaResponseInputItem::ImageGenerationCall,
@@ -114,6 +115,7 @@ module OpenAI
114
115
  OpenAI::Beta::BetaResponseInputItem::ToolSearchCall::OrHash,
115
116
  OpenAI::Beta::BetaResponseToolSearchOutputItemParam::OrHash,
116
117
  OpenAI::Beta::BetaResponseInputItem::AdditionalTools::OrHash,
118
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam::OrHash,
117
119
  OpenAI::Beta::BetaResponseReasoningItem::OrHash,
118
120
  OpenAI::Beta::BetaResponseCompactionItemParam::OrHash,
119
121
  OpenAI::Beta::BetaResponseInputItem::ImageGenerationCall::OrHash,
@@ -192,6 +194,7 @@ module OpenAI
192
194
  OpenAI::Beta::BetaResponseInputItem::ToolSearchCall,
193
195
  OpenAI::Beta::BetaResponseToolSearchOutputItemParam,
194
196
  OpenAI::Beta::BetaResponseInputItem::AdditionalTools,
197
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam,
195
198
  OpenAI::Beta::BetaResponseReasoningItem,
196
199
  OpenAI::Beta::BetaResponseCompactionItemParam,
197
200
  OpenAI::Beta::BetaResponseInputItem::ImageGenerationCall,
@@ -32,6 +32,7 @@ module OpenAI
32
32
  OpenAI::Beta::BetaResponseInputItem::ToolSearchCall,
33
33
  OpenAI::Beta::BetaResponseToolSearchOutputItemParam,
34
34
  OpenAI::Beta::BetaResponseInputItem::AdditionalTools,
35
+ OpenAI::Beta::BetaResponseConfigurationUpdateItemParam,
35
36
  OpenAI::Beta::BetaResponseReasoningItem,
36
37
  OpenAI::Beta::BetaResponseCompactionItemParam,
37
38
  OpenAI::Beta::BetaResponseInputItem::ImageGenerationCall,
@@ -27,6 +27,7 @@ module OpenAI
27
27
  OpenAI::Beta::BetaResponseToolSearchCall,
28
28
  OpenAI::Beta::BetaResponseToolSearchOutputItem,
29
29
  OpenAI::Beta::BetaResponseItem::AdditionalTools,
30
+ OpenAI::Beta::BetaResponseConfigurationUpdateItem,
30
31
  OpenAI::Beta::BetaResponseReasoningItem,
31
32
  OpenAI::Beta::BetaResponseItem::Program,
32
33
  OpenAI::Beta::BetaResponseItem::ProgramOutput,
@@ -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