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
@@ -22,13 +22,21 @@ module OpenAI
22
22
  sig { returns(String) }
23
23
  attr_accessor :message
24
24
 
25
+ sig { returns(T.nilable(OpenAI::Responses::ResponseError::Misalignment)) }
26
+ attr_reader :misalignment
27
+
28
+ sig { params(misalignment: OpenAI::Responses::ResponseError::Misalignment::OrHash).void }
29
+ attr_writer :misalignment
30
+
25
31
  # An error object returned when the model fails to generate a Response.
26
32
  sig do
27
33
  params(
28
34
 
29
35
  code: OpenAI::Responses::ResponseError::Code::OrSymbol,
30
36
 
31
- message: String
37
+ message: String,
38
+
39
+ misalignment: OpenAI::Responses::ResponseError::Misalignment::OrHash
32
40
  )
33
41
  .returns(T.attached_class)
34
42
  end
@@ -38,14 +46,19 @@ module OpenAI
38
46
  code:,
39
47
 
40
48
  # A human-readable description of the error.
49
+ message:,
41
50
 
42
- message:
51
+ misalignment: nil
43
52
  )
44
53
  end
45
54
 
46
55
  sig do
47
56
  override.returns(
48
- {code: OpenAI::Responses::ResponseError::Code::TaggedSymbol, message: String}
57
+ {
58
+ code: OpenAI::Responses::ResponseError::Code::TaggedSymbol,
59
+ message: String,
60
+ misalignment: OpenAI::Responses::ResponseError::Misalignment
61
+ }
49
62
  )
50
63
  end
51
64
  def to_hash
@@ -66,6 +79,10 @@ module OpenAI
66
79
  OpenAI::Responses::ResponseError::Code::TaggedSymbol
67
80
  )
68
81
  BIO_POLICY = T.let(:bio_policy, OpenAI::Responses::ResponseError::Code::TaggedSymbol)
82
+ MISALIGNMENT_POLICY_VIOLATION = T.let(
83
+ :misalignment_policy_violation,
84
+ OpenAI::Responses::ResponseError::Code::TaggedSymbol
85
+ )
69
86
  VECTOR_STORE_TIMEOUT = T.let(:vector_store_timeout, OpenAI::Responses::ResponseError::Code::TaggedSymbol)
70
87
  INVALID_IMAGE = T.let(:invalid_image, OpenAI::Responses::ResponseError::Code::TaggedSymbol)
71
88
  INVALID_IMAGE_FORMAT = T.let(:invalid_image_format, OpenAI::Responses::ResponseError::Code::TaggedSymbol)
@@ -96,6 +113,147 @@ module OpenAI
96
113
  end
97
114
  end
98
115
 
116
+ class Misalignment < OpenAI::Internal::Type::BaseModel
117
+ OrHash = T.type_alias do
118
+ T.any(
119
+ OpenAI::Responses::ResponseError::Misalignment,
120
+ OpenAI::Internal::AnyHash
121
+ )
122
+ end
123
+
124
+ # The public explanation for this block.
125
+ sig { returns(T.nilable(String)) }
126
+ attr_reader :detailed_explanation
127
+
128
+ sig { params(detailed_explanation: String).void }
129
+ attr_writer :detailed_explanation
130
+
131
+ # An optional classification; clients must accept additional values.
132
+ sig { returns(T.nilable(OpenAI::Responses::ResponseError::Misalignment::ErrorType::Variants)) }
133
+ attr_reader :error_type
134
+
135
+ sig {
136
+ params(error_type: T.any(String, OpenAI::Responses::ResponseError::Misalignment::ErrorType::OrSymbol)).void
137
+ }
138
+ attr_writer :error_type
139
+
140
+ # An optional public continuation instruction.
141
+ sig { returns(T.nilable(OpenAI::Responses::ResponseError::Misalignment::Steer)) }
142
+ attr_reader :steer
143
+
144
+ sig { params(steer: OpenAI::Responses::ResponseError::Misalignment::Steer::OrHash).void }
145
+ attr_writer :steer
146
+
147
+ sig do
148
+ params(
149
+
150
+ detailed_explanation: String,
151
+
152
+ error_type: T.any(String, OpenAI::Responses::ResponseError::Misalignment::ErrorType::OrSymbol),
153
+
154
+ steer: OpenAI::Responses::ResponseError::Misalignment::Steer::OrHash
155
+ )
156
+ .returns(T.attached_class)
157
+ end
158
+ def self.new(
159
+
160
+ # The public explanation for this block.
161
+ detailed_explanation: nil,
162
+
163
+ # An optional classification; clients must accept additional values.
164
+ error_type: nil,
165
+
166
+ # An optional public continuation instruction.
167
+
168
+ steer: nil
169
+ )
170
+ end
171
+
172
+ sig do
173
+ override.returns(
174
+ {
175
+ detailed_explanation: String,
176
+ error_type: OpenAI::Responses::ResponseError::Misalignment::ErrorType::Variants,
177
+ steer: OpenAI::Responses::ResponseError::Misalignment::Steer
178
+ }
179
+ )
180
+ end
181
+ def to_hash
182
+ end
183
+
184
+ # An optional classification; clients must accept additional values.
185
+ module ErrorType
186
+ extend OpenAI::Internal::Type::Union
187
+
188
+ Variants = T.type_alias {
189
+ T.any(String, OpenAI::Responses::ResponseError::Misalignment::ErrorType::TaggedSymbol)
190
+ }
191
+
192
+ sig { override.returns(T::Array[OpenAI::Responses::ResponseError::Misalignment::ErrorType::Variants]) }
193
+ def self.variants
194
+ end
195
+
196
+ TaggedSymbol = T.type_alias do
197
+ T.all(Symbol, OpenAI::Responses::ResponseError::Misalignment::ErrorType)
198
+ end
199
+
200
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
201
+
202
+ POTENTIALLY_UNINTENDED_DATA_TRANSFER = T.let(
203
+ :potentially_unintended_data_transfer,
204
+ OpenAI::Responses::ResponseError::Misalignment::ErrorType::TaggedSymbol
205
+ )
206
+ POTENTIALLY_UNINTENDED_DATA_ACCESS = T.let(
207
+ :potentially_unintended_data_access,
208
+ OpenAI::Responses::ResponseError::Misalignment::ErrorType::TaggedSymbol
209
+ )
210
+ POTENTIALLY_UNINTENDED_DESTRUCTIVE_ACTIVITY = T.let(
211
+ :potentially_unintended_destructive_activity,
212
+ OpenAI::Responses::ResponseError::Misalignment::ErrorType::TaggedSymbol
213
+ )
214
+ OTHER = T.let(:other, OpenAI::Responses::ResponseError::Misalignment::ErrorType::TaggedSymbol)
215
+
216
+ end
217
+
218
+ class Steer < OpenAI::Internal::Type::BaseModel
219
+ OrHash = T.type_alias do
220
+ T.any(
221
+ OpenAI::Responses::ResponseError::Misalignment::Steer,
222
+ OpenAI::Internal::AnyHash
223
+ )
224
+ end
225
+
226
+ # The public continuation instruction.
227
+ sig { returns(String) }
228
+ attr_accessor :message
229
+
230
+ # An optional public continuation instruction.
231
+ sig do
232
+ params(
233
+
234
+ message: String
235
+ )
236
+ .returns(T.attached_class)
237
+ end
238
+ def self.new(
239
+
240
+ # The public continuation instruction.
241
+
242
+ message:
243
+ )
244
+ end
245
+
246
+ sig do
247
+ override.returns(
248
+ {message: String}
249
+ )
250
+ end
251
+ def to_hash
252
+ end
253
+
254
+ end
255
+ end
256
+
99
257
  end
100
258
 
101
259
  end
@@ -41,6 +41,13 @@ module OpenAI
41
41
  sig { params(id: String).void }
42
42
  attr_writer :id
43
43
 
44
+ # Whether the function tool call runs asynchronously.
45
+ sig { returns(T.nilable(T::Boolean)) }
46
+ attr_reader :async
47
+
48
+ sig { params(async: T::Boolean).void }
49
+ attr_writer :async
50
+
44
51
  # The execution context that produced this tool call.
45
52
  sig {
46
53
  returns(
@@ -83,6 +90,8 @@ module OpenAI
83
90
 
84
91
  id: String,
85
92
 
93
+ async: T::Boolean,
94
+
86
95
  caller_: T.nilable(
87
96
  T.any(
88
97
  OpenAI::Responses::ResponseFunctionToolCall::Caller::Direct::OrHash,
@@ -112,6 +121,9 @@ module OpenAI
112
121
  # The unique ID of the function tool call.
113
122
  id: nil,
114
123
 
124
+ # Whether the function tool call runs asynchronously.
125
+ async: nil,
126
+
115
127
  # The execution context that produced this tool call.
116
128
  caller_: nil,
117
129
 
@@ -136,6 +148,7 @@ module OpenAI
136
148
  name: String,
137
149
  type: Symbol,
138
150
  id: String,
151
+ async: T::Boolean,
139
152
  caller_: T.nilable(
140
153
  T.any(
141
154
  OpenAI::Responses::ResponseFunctionToolCall::Caller::Direct,
@@ -46,6 +46,8 @@ module OpenAI
46
46
 
47
47
  status: OpenAI::Responses::ResponseFunctionToolCallItem::Status::OrSymbol,
48
48
 
49
+ async: T::Boolean,
50
+
49
51
  caller_: T.nilable(
50
52
  T.any(
51
53
  OpenAI::Responses::ResponseFunctionToolCall::Caller::Direct::OrHash,
@@ -79,6 +81,9 @@ module OpenAI
79
81
  # Populated when items are returned via API.
80
82
  status:,
81
83
 
84
+ # Whether the function tool call runs asynchronously.
85
+ async: nil,
86
+
82
87
  # The execution context that produced this tool call.
83
88
  caller_: nil,
84
89
 
@@ -103,6 +108,7 @@ module OpenAI
103
108
  id: String,
104
109
  status: OpenAI::Responses::ResponseFunctionToolCallItem::Status::TaggedSymbol,
105
110
  type: Symbol,
111
+ async: T::Boolean,
106
112
  caller_: T.nilable(
107
113
  T.any(
108
114
  OpenAI::Responses::ResponseFunctionToolCall::Caller::Direct,
@@ -30,6 +30,10 @@ module OpenAI
30
30
  attr_accessor :type
31
31
 
32
32
  # An event that is emitted when a response finishes as incomplete.
33
+ #
34
+ # Over WebSocket, steering can finish a response with
35
+ # `response.incomplete_details.reason` set to `steered`, followed automatically by
36
+ # a successor `response.created` that commits the queued steering input.
33
37
  sig do
34
38
  params(
35
39
 
@@ -27,6 +27,7 @@ module OpenAI
27
27
  OpenAI::Responses::ResponseInputItem::ToolSearchCall,
28
28
  OpenAI::Responses::ResponseToolSearchOutputItemParam,
29
29
  OpenAI::Responses::ResponseInputItem::AdditionalTools,
30
+ OpenAI::Responses::ResponseConfigurationUpdateItemParam,
30
31
  OpenAI::Responses::ResponseReasoningItem,
31
32
  OpenAI::Responses::ResponseCompactionItemParam,
32
33
  OpenAI::Responses::ResponseInputItem::ImageGenerationCall,
@@ -22,6 +22,7 @@ module OpenAI
22
22
  OpenAI::Responses::ResponseToolSearchCall,
23
23
  OpenAI::Responses::ResponseToolSearchOutputItem,
24
24
  OpenAI::Responses::ResponseItem::AdditionalTools,
25
+ OpenAI::Responses::ResponseConfigurationUpdateItem,
25
26
  OpenAI::Responses::ResponseReasoningItem,
26
27
  OpenAI::Responses::ResponseItem::Program,
27
28
  OpenAI::Responses::ResponseItem::ProgramOutput,
@@ -53,6 +53,7 @@ module OpenAI
53
53
  OpenAI::Responses::ResponseToolSearchCall::OrHash,
54
54
  OpenAI::Responses::ResponseToolSearchOutputItem::OrHash,
55
55
  OpenAI::Responses::ResponseItem::AdditionalTools::OrHash,
56
+ OpenAI::Responses::ResponseConfigurationUpdateItem::OrHash,
56
57
  OpenAI::Responses::ResponseReasoningItem::OrHash,
57
58
  OpenAI::Responses::ResponseItem::Program::OrHash,
58
59
  OpenAI::Responses::ResponseItem::ProgramOutput::OrHash,
@@ -0,0 +1,146 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Responses
7
+
8
+ class ResponseSteerAcceptedEvent < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Responses::ResponseSteerAcceptedEvent,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # The sequence number for this event.
18
+ sig { returns(Integer) }
19
+ attr_accessor :sequence_number
20
+
21
+ # The accepted steering submission.
22
+ sig { returns(OpenAI::Responses::ResponseSteerAcceptedEvent::Steer) }
23
+ attr_reader :steer
24
+
25
+ sig { params(steer: OpenAI::Responses::ResponseSteerAcceptedEvent::Steer::OrHash).void }
26
+ attr_writer :steer
27
+
28
+ # The event discriminator. Always `response.steer.accepted`.
29
+ sig { returns(Symbol) }
30
+ attr_accessor :type
31
+
32
+ # The WebSocket lane that emitted this event. This field is present when the
33
+ # target response's `response.create` event supplied a `stream_id`.
34
+ sig { returns(T.nilable(String)) }
35
+ attr_reader :stream_id
36
+
37
+ sig { params(stream_id: String).void }
38
+ attr_writer :stream_id
39
+
40
+ # Emitted when steering input has been validated and queued. Acceptance means the
41
+ # server owns the input, not that it has been applied. The successor's
42
+ # `response.created` event is the commit point. If accepted input cannot be
43
+ # committed, `response.steer.failed` returns it with the same steering ID.
44
+ #
45
+ # When the response stops for client-owned tool output or approval, the input
46
+ # remains queued and `response.steer.pending` is emitted after
47
+ # `response.completed`. Fill the pending event's `required_input` stubs with saved
48
+ # results and send one matching explicit `response.create` per parent. Do not
49
+ # resend accepted input while it is still queued.
50
+ sig do
51
+ params(
52
+
53
+ sequence_number: Integer,
54
+
55
+ steer: OpenAI::Responses::ResponseSteerAcceptedEvent::Steer::OrHash,
56
+
57
+ stream_id: String,
58
+
59
+ type: Symbol
60
+ )
61
+ .returns(T.attached_class)
62
+ end
63
+ def self.new(
64
+
65
+ # The sequence number for this event.
66
+ sequence_number:,
67
+
68
+ # The accepted steering submission.
69
+ steer:,
70
+
71
+ # The WebSocket lane that emitted this event. This field is present when the
72
+ # target response's `response.create` event supplied a `stream_id`.
73
+ stream_id: nil,
74
+
75
+ # The event discriminator. Always `response.steer.accepted`.
76
+
77
+ type: :"response.steer.accepted"
78
+ )
79
+ end
80
+
81
+ sig do
82
+ override.returns(
83
+ {
84
+ sequence_number: Integer,
85
+ steer: OpenAI::Responses::ResponseSteerAcceptedEvent::Steer,
86
+ type: Symbol,
87
+ stream_id: String
88
+ }
89
+ )
90
+ end
91
+ def to_hash
92
+ end
93
+
94
+ class Steer < OpenAI::Internal::Type::BaseModel
95
+ OrHash = T.type_alias do
96
+ T.any(
97
+ OpenAI::Responses::ResponseSteerAcceptedEvent::Steer,
98
+ OpenAI::Internal::AnyHash
99
+ )
100
+ end
101
+
102
+ # The ID assigned to the steering submission.
103
+ sig { returns(String) }
104
+ attr_accessor :id
105
+
106
+ # The ID of the response being steered.
107
+ sig { returns(String) }
108
+ attr_accessor :previous_response_id
109
+
110
+ # The accepted steering submission.
111
+ sig do
112
+ params(
113
+
114
+ id: String,
115
+
116
+ previous_response_id: String
117
+ )
118
+ .returns(T.attached_class)
119
+ end
120
+ def self.new(
121
+
122
+ # The ID assigned to the steering submission.
123
+ id:,
124
+
125
+ # The ID of the response being steered.
126
+
127
+ previous_response_id:
128
+ )
129
+ end
130
+
131
+ sig do
132
+ override.returns(
133
+ {id: String, previous_response_id: String}
134
+ )
135
+ end
136
+ def to_hash
137
+ end
138
+
139
+ end
140
+
141
+ end
142
+
143
+ end
144
+
145
+ end
146
+ end
@@ -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