openai 0.111.0 → 0.112.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 (230) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/README.md +1 -1
  4. data/lib/openai/models/beta/agent.rb +2 -2
  5. data/lib/openai/models/beta/agent_create_params.rb +2 -2
  6. data/lib/openai/models/beta/agent_session.rb +2 -2
  7. data/lib/openai/models/beta/agent_tool.rb +18 -1
  8. data/lib/openai/models/beta/agent_tool_param.rb +18 -1
  9. data/lib/openai/models/beta/agent_update_params.rb +2 -2
  10. data/lib/openai/models/beta/agents/session_create_params.rb +2 -2
  11. data/lib/openai/models/beta/beta_response_input_file.rb +23 -1
  12. data/lib/openai/models/beta/beta_response_input_file_content.rb +23 -1
  13. data/lib/openai/models/beta/beta_response_input_image.rb +23 -1
  14. data/lib/openai/models/beta/beta_response_input_image_content.rb +23 -1
  15. data/lib/openai/models/beta/beta_response_input_text.rb +23 -1
  16. data/lib/openai/models/beta/beta_response_input_text_content.rb +23 -1
  17. data/lib/openai/models/beta/beta_response_item.rb +28 -1
  18. data/lib/openai/models/beta/beta_response_output_item.rb +28 -1
  19. data/lib/openai/models/beta/beta_response_tool_search_output_item_param.rb +26 -15
  20. data/lib/openai/models/beta/beta_tool.rb +26 -15
  21. data/lib/openai/models/beta/persisted_agent_tool.rb +18 -1
  22. data/lib/openai/models/beta/persisted_agent_tool_param.rb +18 -1
  23. data/lib/openai/models/chat/chat_completion_content_part.rb +23 -1
  24. data/lib/openai/models/chat/chat_completion_content_part_image.rb +23 -1
  25. data/lib/openai/models/chat/chat_completion_content_part_input_audio.rb +23 -1
  26. data/lib/openai/models/chat/chat_completion_content_part_text.rb +23 -1
  27. data/lib/openai/models/conversations/computer_screenshot_content.rb +23 -1
  28. data/lib/openai/models/decision_create_params.rb +8 -4
  29. data/lib/openai/models/image_edit_params.rb +20 -4
  30. data/lib/openai/models/image_generate_params.rb +23 -7
  31. data/lib/openai/models/image_model.rb +2 -0
  32. data/lib/openai/models/live/client_delegation.rb +20 -1
  33. data/lib/openai/models/live/client_event.rb +4 -4
  34. data/lib/openai/models/live/commentary_append_event.rb +1 -1
  35. data/lib/openai/models/live/decision_assistant_message.rb +154 -0
  36. data/lib/openai/models/live/decision_choice_option.rb +35 -0
  37. data/lib/openai/models/live/decision_developer_message.rb +70 -0
  38. data/lib/openai/models/live/decision_input_text.rb +26 -0
  39. data/lib/openai/models/live/decision_item_create_event.rb +490 -131
  40. data/lib/openai/models/live/decision_item_created_event.rb +486 -131
  41. data/lib/openai/models/live/decision_json_object.rb +10 -0
  42. data/lib/openai/models/live/decision_question.rb +172 -0
  43. data/lib/openai/models/live/decision_stored_assistant_message.rb +152 -0
  44. data/lib/openai/models/live/decision_stored_developer_message.rb +68 -0
  45. data/lib/openai/models/live/decision_stored_system_message.rb +68 -0
  46. data/lib/openai/models/live/decision_stored_user_message.rb +195 -0
  47. data/lib/openai/models/live/decision_system_message.rb +70 -0
  48. data/lib/openai/models/live/decision_trigger.rb +6 -258
  49. data/lib/openai/models/live/decision_user_message.rb +193 -0
  50. data/lib/openai/models/live/decisions_delegation_config.rb +5 -250
  51. data/lib/openai/models/live/decisions_delegation_update_config.rb +5 -257
  52. data/lib/openai/models/live/fork_client_event.rb +4 -4
  53. data/lib/openai/models/live/fork_server_event.rb +2 -2
  54. data/lib/openai/models/live/fork_session_config.rb +20 -1
  55. data/lib/openai/models/live/input_audio_muted_event.rb +3 -2
  56. data/lib/openai/models/live/input_audio_unmute_event.rb +2 -1
  57. data/lib/openai/models/live/input_audio_unmuted_event.rb +3 -2
  58. data/lib/openai/models/live/instructions_append_event.rb +5 -2
  59. data/lib/openai/models/live/media_session_config.rb +39 -2
  60. data/lib/openai/models/live/media_session_fork_config.rb +20 -1
  61. data/lib/openai/models/live/server_event.rb +2 -2
  62. data/lib/openai/models/live/session_accept_params.rb +39 -2
  63. data/lib/openai/models/live/session_config.rb +39 -2
  64. data/lib/openai/models/live/session_resource.rb +39 -2
  65. data/lib/openai/models/live/session_update_config.rb +41 -2
  66. data/lib/openai/models/live/sideband_client_event.rb +4 -4
  67. data/lib/openai/models/live/sideband_server_event.rb +2 -2
  68. data/lib/openai/models/live/thinking_append_event.rb +1 -1
  69. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rb +10 -12
  70. data/lib/openai/models/realtime/realtime_error_event.rb +1 -1
  71. data/lib/openai/models/realtime/realtime_server_event.rb +1 -1
  72. data/lib/openai/models/realtime/realtime_translation_server_event.rb +1 -1
  73. data/lib/openai/models/responses/response_input_file.rb +23 -1
  74. data/lib/openai/models/responses/response_input_file_content.rb +23 -1
  75. data/lib/openai/models/responses/response_input_image.rb +23 -1
  76. data/lib/openai/models/responses/response_input_image_content.rb +23 -1
  77. data/lib/openai/models/responses/response_input_text.rb +23 -1
  78. data/lib/openai/models/responses/response_input_text_content.rb +23 -1
  79. data/lib/openai/models/responses/response_tool_search_output_item_param.rb +26 -15
  80. data/lib/openai/models/responses/tool.rb +26 -15
  81. data/lib/openai/resources/beta/agents.rb +2 -2
  82. data/lib/openai/resources/beta/responses.rb +2 -2
  83. data/lib/openai/resources/images.rb +18 -6
  84. data/lib/openai/resources/live/forks.rb +2 -2
  85. data/lib/openai/resources/live/sideband.rb +2 -2
  86. data/lib/openai/resources/live.rb +2 -2
  87. data/lib/openai/resources/realtime/translations.rb +2 -2
  88. data/lib/openai/resources/realtime.rb +2 -2
  89. data/lib/openai/resources/responses.rb +2 -2
  90. data/lib/openai/version.rb +1 -1
  91. data/lib/openai.rb +12 -0
  92. data/rbi/openai/models/beta/agent.rbi +2 -1
  93. data/rbi/openai/models/beta/agent_create_params.rbi +6 -3
  94. data/rbi/openai/models/beta/agent_session.rbi +2 -1
  95. data/rbi/openai/models/beta/agent_tool.rbi +40 -1
  96. data/rbi/openai/models/beta/agent_tool_param.rbi +40 -1
  97. data/rbi/openai/models/beta/agent_update_params.rbi +6 -3
  98. data/rbi/openai/models/beta/agents/session_create_params.rbi +6 -3
  99. data/rbi/openai/models/beta/beta_response_input_file.rbi +31 -1
  100. data/rbi/openai/models/beta/beta_response_input_file_content.rbi +39 -1
  101. data/rbi/openai/models/beta/beta_response_input_image.rbi +31 -1
  102. data/rbi/openai/models/beta/beta_response_input_image_content.rbi +39 -1
  103. data/rbi/openai/models/beta/beta_response_input_text.rbi +31 -1
  104. data/rbi/openai/models/beta/beta_response_input_text_content.rbi +39 -1
  105. data/rbi/openai/models/beta/beta_response_item.rbi +58 -1
  106. data/rbi/openai/models/beta/beta_response_output_item.rbi +58 -1
  107. data/rbi/openai/models/beta/beta_response_tool_search_output_item_param.rbi +24 -15
  108. data/rbi/openai/models/beta/beta_tool.rbi +24 -15
  109. data/rbi/openai/models/beta/persisted_agent_tool.rbi +40 -1
  110. data/rbi/openai/models/beta/persisted_agent_tool_param.rbi +40 -1
  111. data/rbi/openai/models/chat/chat_completion_content_part.rbi +43 -1
  112. data/rbi/openai/models/chat/chat_completion_content_part_image.rbi +41 -1
  113. data/rbi/openai/models/chat/chat_completion_content_part_input_audio.rbi +46 -1
  114. data/rbi/openai/models/chat/chat_completion_content_part_text.rbi +39 -1
  115. data/rbi/openai/models/conversations/computer_screenshot_content.rbi +48 -1
  116. data/rbi/openai/models/image_edit_params.rbi +12 -3
  117. data/rbi/openai/models/image_generate_params.rbi +15 -6
  118. data/rbi/openai/models/live/client_delegation.rbi +23 -1
  119. data/rbi/openai/models/live/commentary_append_event.rbi +1 -1
  120. data/rbi/openai/models/live/decision_assistant_message.rbi +247 -0
  121. data/rbi/openai/models/live/decision_choice_option.rbi +67 -0
  122. data/rbi/openai/models/live/decision_developer_message.rbi +109 -0
  123. data/rbi/openai/models/live/decision_input_text.rbi +55 -0
  124. data/rbi/openai/models/live/decision_item_create_event.rbi +765 -184
  125. data/rbi/openai/models/live/decision_item_created_event.rbi +737 -184
  126. data/rbi/openai/models/live/decision_json_object.rbi +16 -0
  127. data/rbi/openai/models/live/decision_question.rbi +300 -0
  128. data/rbi/openai/models/live/decision_stored_assistant_message.rbi +245 -0
  129. data/rbi/openai/models/live/decision_stored_developer_message.rbi +107 -0
  130. data/rbi/openai/models/live/decision_stored_system_message.rbi +107 -0
  131. data/rbi/openai/models/live/decision_stored_user_message.rbi +333 -0
  132. data/rbi/openai/models/live/decision_system_message.rbi +109 -0
  133. data/rbi/openai/models/live/decision_trigger.rbi +11 -383
  134. data/rbi/openai/models/live/decision_user_message.rbi +320 -0
  135. data/rbi/openai/models/live/decisions_delegation_config.rbi +10 -384
  136. data/rbi/openai/models/live/decisions_delegation_update_config.rbi +13 -387
  137. data/rbi/openai/models/live/fork_session_config.rbi +27 -1
  138. data/rbi/openai/models/live/input_audio_muted_event.rbi +3 -2
  139. data/rbi/openai/models/live/input_audio_unmute_event.rbi +2 -1
  140. data/rbi/openai/models/live/input_audio_unmuted_event.rbi +3 -2
  141. data/rbi/openai/models/live/instructions_append_event.rbi +5 -2
  142. data/rbi/openai/models/live/media_session_config.rbi +44 -2
  143. data/rbi/openai/models/live/media_session_fork_config.rbi +27 -1
  144. data/rbi/openai/models/live/session_accept_params.rbi +44 -2
  145. data/rbi/openai/models/live/session_config.rbi +44 -2
  146. data/rbi/openai/models/live/session_resource.rbi +44 -2
  147. data/rbi/openai/models/live/session_update_config.rbi +54 -2
  148. data/rbi/openai/models/live/thinking_append_event.rbi +1 -1
  149. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rbi +10 -12
  150. data/rbi/openai/models/realtime/realtime_error_event.rbi +1 -1
  151. data/rbi/openai/models/responses/response_input_file.rbi +31 -1
  152. data/rbi/openai/models/responses/response_input_file_content.rbi +39 -1
  153. data/rbi/openai/models/responses/response_input_image.rbi +33 -1
  154. data/rbi/openai/models/responses/response_input_image_content.rbi +41 -1
  155. data/rbi/openai/models/responses/response_input_text.rbi +31 -1
  156. data/rbi/openai/models/responses/response_input_text_content.rbi +39 -1
  157. data/rbi/openai/models/responses/response_tool_search_output_item_param.rbi +24 -15
  158. data/rbi/openai/models/responses/tool.rbi +24 -15
  159. data/rbi/openai/resources/beta/agents.rbi +4 -2
  160. data/rbi/openai/resources/beta/responses.rbi +8 -1
  161. data/rbi/openai/resources/images.rbi +18 -6
  162. data/rbi/openai/resources/live/forks.rbi +8 -1
  163. data/rbi/openai/resources/live/sideband.rbi +8 -1
  164. data/rbi/openai/resources/live.rbi +8 -1
  165. data/rbi/openai/resources/realtime/translations.rbi +8 -1
  166. data/rbi/openai/resources/realtime.rbi +8 -1
  167. data/rbi/openai/resources/responses.rbi +8 -1
  168. data/sig/openai/models/beta/agent_tool.rbs +14 -0
  169. data/sig/openai/models/beta/agent_tool_param.rbs +14 -0
  170. data/sig/openai/models/beta/beta_response_input_file.rbs +34 -3
  171. data/sig/openai/models/beta/beta_response_input_file_content.rbs +34 -3
  172. data/sig/openai/models/beta/beta_response_input_image.rbs +34 -3
  173. data/sig/openai/models/beta/beta_response_input_image_content.rbs +34 -3
  174. data/sig/openai/models/beta/beta_response_input_text.rbs +34 -3
  175. data/sig/openai/models/beta/beta_response_input_text_content.rbs +34 -3
  176. data/sig/openai/models/beta/beta_response_item.rbs +34 -3
  177. data/sig/openai/models/beta/beta_response_output_item.rbs +34 -3
  178. data/sig/openai/models/beta/beta_response_tool_search_output_item_param.rbs +24 -15
  179. data/sig/openai/models/beta/beta_tool.rbs +24 -15
  180. data/sig/openai/models/beta/persisted_agent_tool.rbs +14 -0
  181. data/sig/openai/models/beta/persisted_agent_tool_param.rbs +14 -0
  182. data/sig/openai/models/chat/chat_completion_content_part.rbs +34 -3
  183. data/sig/openai/models/chat/chat_completion_content_part_image.rbs +34 -3
  184. data/sig/openai/models/chat/chat_completion_content_part_input_audio.rbs +34 -3
  185. data/sig/openai/models/chat/chat_completion_content_part_text.rbs +34 -3
  186. data/sig/openai/models/conversations/computer_screenshot_content.rbs +34 -3
  187. data/sig/openai/models/image_edit_params.rbs +8 -2
  188. data/sig/openai/models/image_generate_params.rbs +10 -4
  189. data/sig/openai/models/live/client_delegation.rbs +30 -3
  190. data/sig/openai/models/live/decision_assistant_message.rbs +134 -0
  191. data/sig/openai/models/live/decision_choice_option.rbs +37 -0
  192. data/sig/openai/models/live/decision_developer_message.rbs +67 -0
  193. data/sig/openai/models/live/decision_input_text.rbs +20 -0
  194. data/sig/openai/models/live/decision_item_create_event.rbs +413 -131
  195. data/sig/openai/models/live/decision_item_created_event.rbs +401 -131
  196. data/sig/openai/models/live/decision_json_object.rbs +9 -0
  197. data/sig/openai/models/live/decision_question.rbs +164 -0
  198. data/sig/openai/models/live/decision_stored_assistant_message.rbs +131 -0
  199. data/sig/openai/models/live/decision_stored_developer_message.rbs +64 -0
  200. data/sig/openai/models/live/decision_stored_system_message.rbs +64 -0
  201. data/sig/openai/models/live/decision_stored_user_message.rbs +177 -0
  202. data/sig/openai/models/live/decision_system_message.rbs +67 -0
  203. data/sig/openai/models/live/decision_trigger.rbs +8 -208
  204. data/sig/openai/models/live/decision_user_message.rbs +180 -0
  205. data/sig/openai/models/live/decisions_delegation_config.rbs +6 -204
  206. data/sig/openai/models/live/decisions_delegation_update_config.rbs +8 -206
  207. data/sig/openai/models/live/fork_session_config.rbs +26 -0
  208. data/sig/openai/models/live/media_session_config.rbs +53 -4
  209. data/sig/openai/models/live/media_session_fork_config.rbs +26 -0
  210. data/sig/openai/models/live/session_accept_params.rbs +53 -4
  211. data/sig/openai/models/live/session_config.rbs +53 -4
  212. data/sig/openai/models/live/session_resource.rbs +53 -4
  213. data/sig/openai/models/live/session_update_config.rbs +52 -0
  214. data/sig/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rbs +10 -12
  215. data/sig/openai/models/responses/response_input_file.rbs +34 -3
  216. data/sig/openai/models/responses/response_input_file_content.rbs +34 -3
  217. data/sig/openai/models/responses/response_input_image.rbs +34 -3
  218. data/sig/openai/models/responses/response_input_image_content.rbs +34 -3
  219. data/sig/openai/models/responses/response_input_text.rbs +34 -3
  220. data/sig/openai/models/responses/response_input_text_content.rbs +34 -3
  221. data/sig/openai/models/responses/response_tool_search_output_item_param.rbs +24 -15
  222. data/sig/openai/models/responses/tool.rbs +24 -15
  223. data/sig/openai/resources/beta/responses.rbs +2 -1
  224. data/sig/openai/resources/live/forks.rbs +2 -1
  225. data/sig/openai/resources/live/sideband.rbs +2 -1
  226. data/sig/openai/resources/live.rbs +2 -1
  227. data/sig/openai/resources/realtime/translations.rbs +2 -1
  228. data/sig/openai/resources/realtime.rbs +2 -1
  229. data/sig/openai/resources/responses.rbs +2 -1
  230. metadata +37 -1
@@ -33,10 +33,13 @@ module OpenAI
33
33
  attr_accessor :background
34
34
 
35
35
  # The GPT image model to use for image generation. Specify a model explicitly.
36
- # Supported models include `gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`,
37
- # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
36
+ # Supported models include `gpt-image-1-mini`, `gpt-image-1.5`, `gpt-image-2`,
37
+ # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
38
38
  # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
39
39
  # `gpt-image-2.5-flare-2026-09-08`, and `chatgpt-image-latest`.
40
+ #
41
+ # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
42
+ # `gpt-image-2.5-flare` instead.
40
43
  sig { returns(T.nilable(T.any(String, OpenAI::ImageModel::OrSymbol))) }
41
44
  attr_accessor :model
42
45
 
@@ -175,10 +178,13 @@ module OpenAI
175
178
  background: nil,
176
179
 
177
180
  # The GPT image model to use for image generation. Specify a model explicitly.
178
- # Supported models include `gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`,
179
- # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
181
+ # Supported models include `gpt-image-1-mini`, `gpt-image-1.5`, `gpt-image-2`,
182
+ # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
180
183
  # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
181
184
  # `gpt-image-2.5-flare-2026-09-08`, and `chatgpt-image-latest`.
185
+ #
186
+ # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
187
+ # `gpt-image-2.5-flare` instead.
182
188
  model: nil,
183
189
 
184
190
  # Control the content-moderation level for images generated by the GPT image
@@ -302,10 +308,13 @@ module OpenAI
302
308
  end
303
309
 
304
310
  # The GPT image model to use for image generation. Specify a model explicitly.
305
- # Supported models include `gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`,
306
- # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
311
+ # Supported models include `gpt-image-1-mini`, `gpt-image-1.5`, `gpt-image-2`,
312
+ # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
307
313
  # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
308
314
  # `gpt-image-2.5-flare-2026-09-08`, and `chatgpt-image-latest`.
315
+ #
316
+ # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
317
+ # `gpt-image-2.5-flare` instead.
309
318
  module Model
310
319
  extend OpenAI::Internal::Type::Union
311
320
 
@@ -18,17 +18,39 @@ module OpenAI
18
18
  sig { returns(Symbol) }
19
19
  attr_accessor :type
20
20
 
21
+ # Milliseconds to wait before requesting an automatic spoken acknowledgement for a
22
+ # delegation. The model may still speak before this delay. Any commentary or
23
+ # thinking appended to the session cancels all pending acknowledgements, including
24
+ # those for other delegations. Defaults to 400 for Decisions sessions and 0
25
+ # (request immediately) for other sessions. Omission in a session update preserves
26
+ # the current value. Updates apply to subsequent delegations.
27
+ sig { returns(T.nilable(Integer)) }
28
+ attr_reader :acknowledgement_delay_ms
29
+
30
+ sig { params(acknowledgement_delay_ms: Integer).void }
31
+ attr_writer :acknowledgement_delay_ms
32
+
21
33
  # Delegate tasks to your application. The Live session emits delegation events
22
34
  # that your backend handles.
23
35
  sig do
24
36
  params(
25
37
 
38
+ acknowledgement_delay_ms: Integer,
39
+
26
40
  type: Symbol
27
41
  )
28
42
  .returns(T.attached_class)
29
43
  end
30
44
  def self.new(
31
45
 
46
+ # Milliseconds to wait before requesting an automatic spoken acknowledgement for a
47
+ # delegation. The model may still speak before this delay. Any commentary or
48
+ # thinking appended to the session cancels all pending acknowledgements, including
49
+ # those for other delegations. Defaults to 400 for Decisions sessions and 0
50
+ # (request immediately) for other sessions. Omission in a session update preserves
51
+ # the current value. Updates apply to subsequent delegations.
52
+ acknowledgement_delay_ms: nil,
53
+
32
54
  # The delegation owner. Always `client` for tasks handled by your application.
33
55
 
34
56
  type: :client
@@ -37,7 +59,7 @@ module OpenAI
37
59
 
38
60
  sig do
39
61
  override.returns(
40
- {type: Symbol}
62
+ {type: Symbol, acknowledgement_delay_ms: Integer}
41
63
  )
42
64
  end
43
65
  def to_hash
@@ -36,7 +36,7 @@ module OpenAI
36
36
  attr_accessor :event_id
37
37
 
38
38
  # Provide context the Live model can communicate to the user, optionally for an
39
- # existing client delegation.
39
+ # existing client delegation. Rejected while an audio fixture is active.
40
40
  sig do
41
41
  params(
42
42
 
@@ -0,0 +1,247 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class DecisionAssistantMessage < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Live::DecisionAssistantMessage,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # The text input to the model.
18
+ sig { returns(OpenAI::Live::DecisionAssistantMessage::Content::Variants) }
19
+ attr_accessor :content
20
+
21
+ sig { returns(Symbol) }
22
+ attr_accessor :role
23
+
24
+ # The unique ID of this message item.
25
+ sig { returns(T.nilable(String)) }
26
+ attr_accessor :id
27
+
28
+ # Labels an `assistant` message as intermediate commentary (`commentary`) or the
29
+ # final answer (`final_answer`). For models like `gpt-5.3-codex` and beyond, when
30
+ # sending follow-up requests, preserve and resend phase on all assistant messages
31
+ # — dropping it can degrade performance. Not used for user messages.
32
+ sig { returns(T.nilable(OpenAI::Live::DecisionAssistantMessage::Phase::OrSymbol)) }
33
+ attr_accessor :phase
34
+
35
+ sig { returns(T.nilable(OpenAI::Live::DecisionAssistantMessage::Type::OrSymbol)) }
36
+ attr_reader :type
37
+
38
+ sig { params(type: OpenAI::Live::DecisionAssistantMessage::Type::OrSymbol).void }
39
+ attr_writer :type
40
+
41
+ sig do
42
+ params(
43
+
44
+ content: OpenAI::Live::DecisionAssistantMessage::Content::Variants,
45
+
46
+ id: T.nilable(String),
47
+
48
+ phase: T.nilable(OpenAI::Live::DecisionAssistantMessage::Phase::OrSymbol),
49
+
50
+ type: OpenAI::Live::DecisionAssistantMessage::Type::OrSymbol,
51
+
52
+ role: Symbol
53
+ )
54
+ .returns(T.attached_class)
55
+ end
56
+ def self.new(
57
+
58
+ # The text input to the model.
59
+ content:,
60
+
61
+ # The unique ID of this message item.
62
+ id: nil,
63
+
64
+ # Labels an `assistant` message as intermediate commentary (`commentary`) or the
65
+ # final answer (`final_answer`). For models like `gpt-5.3-codex` and beyond, when
66
+ # sending follow-up requests, preserve and resend phase on all assistant messages
67
+ # — dropping it can degrade performance. Not used for user messages.
68
+ phase: nil,
69
+
70
+ type: nil,
71
+
72
+ role: :assistant
73
+ )
74
+ end
75
+
76
+ sig do
77
+ override.returns(
78
+ {
79
+ content: OpenAI::Live::DecisionAssistantMessage::Content::Variants,
80
+ role: Symbol,
81
+ id: T.nilable(String),
82
+ phase: T.nilable(OpenAI::Live::DecisionAssistantMessage::Phase::OrSymbol),
83
+ type: OpenAI::Live::DecisionAssistantMessage::Type::OrSymbol
84
+ }
85
+ )
86
+ end
87
+ def to_hash
88
+ end
89
+
90
+ # The text input to the model.
91
+ module Content
92
+ extend OpenAI::Internal::Type::Union
93
+
94
+ Variants = T.type_alias {
95
+ T.any(String, T::Array[OpenAI::Live::DecisionAssistantMessage::Content::Part::Variants])
96
+ }
97
+
98
+ module Part
99
+ extend OpenAI::Internal::Type::Union
100
+
101
+ Variants = T.type_alias {
102
+ T.any(
103
+ OpenAI::Live::DecisionAssistantMessage::Content::Part::OutputText,
104
+ OpenAI::Live::DecisionAssistantMessage::Content::Part::Refusal
105
+ )
106
+ }
107
+
108
+ class OutputText < OpenAI::Internal::Type::BaseModel
109
+ OrHash = T.type_alias do
110
+ T.any(
111
+ OpenAI::Live::DecisionAssistantMessage::Content::Part::OutputText,
112
+ OpenAI::Internal::AnyHash
113
+ )
114
+ end
115
+
116
+ # The text content.
117
+ sig { returns(String) }
118
+ attr_accessor :text
119
+
120
+ sig { returns(Symbol) }
121
+ attr_accessor :type
122
+
123
+ sig do
124
+ params(
125
+
126
+ text: String,
127
+
128
+ type: Symbol
129
+ )
130
+ .returns(T.attached_class)
131
+ end
132
+ def self.new(
133
+
134
+ # The text content.
135
+ text:,
136
+
137
+ type: :output_text
138
+ )
139
+ end
140
+
141
+ sig do
142
+ override.returns(
143
+ {text: String, type: Symbol}
144
+ )
145
+ end
146
+ def to_hash
147
+ end
148
+
149
+ end
150
+
151
+ class Refusal < OpenAI::Internal::Type::BaseModel
152
+ OrHash = T.type_alias do
153
+ T.any(
154
+ OpenAI::Live::DecisionAssistantMessage::Content::Part::Refusal,
155
+ OpenAI::Internal::AnyHash
156
+ )
157
+ end
158
+
159
+ # The refusal text.
160
+ sig { returns(String) }
161
+ attr_accessor :refusal
162
+
163
+ sig { returns(Symbol) }
164
+ attr_accessor :type
165
+
166
+ sig do
167
+ params(
168
+
169
+ refusal: String,
170
+
171
+ type: Symbol
172
+ )
173
+ .returns(T.attached_class)
174
+ end
175
+ def self.new(
176
+
177
+ # The refusal text.
178
+ refusal:,
179
+
180
+ type: :refusal
181
+ )
182
+ end
183
+
184
+ sig do
185
+ override.returns(
186
+ {refusal: String, type: Symbol}
187
+ )
188
+ end
189
+ def to_hash
190
+ end
191
+
192
+ end
193
+
194
+ sig { override.returns(T::Array[OpenAI::Live::DecisionAssistantMessage::Content::Part::Variants]) }
195
+ def self.variants
196
+ end
197
+
198
+ end
199
+
200
+ sig { override.returns(T::Array[OpenAI::Live::DecisionAssistantMessage::Content::Variants]) }
201
+ def self.variants
202
+ end
203
+
204
+ PartsArray = T.let(
205
+ OpenAI::Internal::Type::ArrayOf[union: OpenAI::Live::DecisionAssistantMessage::Content::Part],
206
+ OpenAI::Internal::Type::Converter
207
+ )
208
+
209
+ end
210
+
211
+ # Labels an `assistant` message as intermediate commentary (`commentary`) or the
212
+ # final answer (`final_answer`). For models like `gpt-5.3-codex` and beyond, when
213
+ # sending follow-up requests, preserve and resend phase on all assistant messages
214
+ # — dropping it can degrade performance. Not used for user messages.
215
+ module Phase
216
+ extend OpenAI::Internal::Type::Enum
217
+
218
+ TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Live::DecisionAssistantMessage::Phase) }
219
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
220
+
221
+ COMMENTARY = T.let(:commentary, OpenAI::Live::DecisionAssistantMessage::Phase::TaggedSymbol)
222
+ FINAL_ANSWER = T.let(:final_answer, OpenAI::Live::DecisionAssistantMessage::Phase::TaggedSymbol)
223
+
224
+ sig { override.returns(T::Array[OpenAI::Live::DecisionAssistantMessage::Phase::TaggedSymbol]) }
225
+ def self.values
226
+ end
227
+ end
228
+
229
+ module Type
230
+ extend OpenAI::Internal::Type::Enum
231
+
232
+ TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Live::DecisionAssistantMessage::Type) }
233
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
234
+
235
+ MESSAGE = T.let(:message, OpenAI::Live::DecisionAssistantMessage::Type::TaggedSymbol)
236
+
237
+ sig { override.returns(T::Array[OpenAI::Live::DecisionAssistantMessage::Type::TaggedSymbol]) }
238
+ def self.values
239
+ end
240
+ end
241
+
242
+ end
243
+
244
+ end
245
+
246
+ end
247
+ end
@@ -0,0 +1,67 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class DecisionChoiceOption < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Live::DecisionChoiceOption,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ sig { returns(T.any(String, T::Boolean)) }
18
+ attr_accessor :value
19
+
20
+ sig { returns(T.nilable(String)) }
21
+ attr_reader :description
22
+
23
+ sig { params(description: String).void }
24
+ attr_writer :description
25
+
26
+ sig do
27
+ params(
28
+
29
+ value: T.any(String, T::Boolean),
30
+
31
+ description: String
32
+ )
33
+ .returns(T.attached_class)
34
+ end
35
+ def self.new(
36
+
37
+ value:,
38
+
39
+ description: nil
40
+ )
41
+ end
42
+
43
+ sig do
44
+ override.returns(
45
+ {value: T.any(String, T::Boolean), description: String}
46
+ )
47
+ end
48
+ def to_hash
49
+ end
50
+
51
+ module Value
52
+ extend OpenAI::Internal::Type::Union
53
+
54
+ Variants = T.type_alias { T.any(String, T::Boolean) }
55
+
56
+ sig { override.returns(T::Array[OpenAI::Live::DecisionChoiceOption::Value::Variants]) }
57
+ def self.variants
58
+ end
59
+
60
+ end
61
+
62
+ end
63
+
64
+ end
65
+
66
+ end
67
+ end
@@ -0,0 +1,109 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class DecisionDeveloperMessage < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Live::DecisionDeveloperMessage,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # The text input to the model.
18
+ sig { returns(OpenAI::Live::DecisionDeveloperMessage::Content::Variants) }
19
+ attr_accessor :content
20
+
21
+ sig { returns(Symbol) }
22
+ attr_accessor :role
23
+
24
+ # The unique ID of this message item.
25
+ sig { returns(T.nilable(String)) }
26
+ attr_accessor :id
27
+
28
+ sig { returns(T.nilable(OpenAI::Live::DecisionDeveloperMessage::Type::OrSymbol)) }
29
+ attr_reader :type
30
+
31
+ sig { params(type: OpenAI::Live::DecisionDeveloperMessage::Type::OrSymbol).void }
32
+ attr_writer :type
33
+
34
+ sig do
35
+ params(
36
+
37
+ content: OpenAI::Live::DecisionDeveloperMessage::Content::Variants,
38
+
39
+ id: T.nilable(String),
40
+
41
+ type: OpenAI::Live::DecisionDeveloperMessage::Type::OrSymbol,
42
+
43
+ role: Symbol
44
+ )
45
+ .returns(T.attached_class)
46
+ end
47
+ def self.new(
48
+
49
+ # The text input to the model.
50
+ content:,
51
+
52
+ # The unique ID of this message item.
53
+ id: nil,
54
+
55
+ type: nil,
56
+
57
+ role: :developer
58
+ )
59
+ end
60
+
61
+ sig do
62
+ override.returns(
63
+ {
64
+ content: OpenAI::Live::DecisionDeveloperMessage::Content::Variants,
65
+ role: Symbol,
66
+ id: T.nilable(String),
67
+ type: OpenAI::Live::DecisionDeveloperMessage::Type::OrSymbol
68
+ }
69
+ )
70
+ end
71
+ def to_hash
72
+ end
73
+
74
+ # The text input to the model.
75
+ module Content
76
+ extend OpenAI::Internal::Type::Union
77
+
78
+ Variants = T.type_alias { T.any(String, T::Array[OpenAI::Live::DecisionInputText]) }
79
+
80
+ sig { override.returns(T::Array[OpenAI::Live::DecisionDeveloperMessage::Content::Variants]) }
81
+ def self.variants
82
+ end
83
+
84
+ DecisionInputTextArray = T.let(
85
+ OpenAI::Internal::Type::ArrayOf[OpenAI::Live::DecisionInputText],
86
+ OpenAI::Internal::Type::Converter
87
+ )
88
+
89
+ end
90
+
91
+ module Type
92
+ extend OpenAI::Internal::Type::Enum
93
+
94
+ TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Live::DecisionDeveloperMessage::Type) }
95
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
96
+
97
+ MESSAGE = T.let(:message, OpenAI::Live::DecisionDeveloperMessage::Type::TaggedSymbol)
98
+
99
+ sig { override.returns(T::Array[OpenAI::Live::DecisionDeveloperMessage::Type::TaggedSymbol]) }
100
+ def self.values
101
+ end
102
+ end
103
+
104
+ end
105
+
106
+ end
107
+
108
+ end
109
+ end
@@ -0,0 +1,55 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class DecisionInputText < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Live::DecisionInputText,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # The text input to the model.
18
+ sig { returns(String) }
19
+ attr_accessor :text
20
+
21
+ sig { returns(Symbol) }
22
+ attr_accessor :type
23
+
24
+ sig do
25
+ params(
26
+
27
+ text: String,
28
+
29
+ type: Symbol
30
+ )
31
+ .returns(T.attached_class)
32
+ end
33
+ def self.new(
34
+
35
+ # The text input to the model.
36
+ text:,
37
+
38
+ type: :input_text
39
+ )
40
+ end
41
+
42
+ sig do
43
+ override.returns(
44
+ {text: String, type: Symbol}
45
+ )
46
+ end
47
+ def to_hash
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+
54
+ end
55
+ end