openai 0.111.0 → 0.113.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 (248) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -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.rb +3 -0
  12. data/lib/openai/models/beta/beta_response_input_file.rb +23 -1
  13. data/lib/openai/models/beta/beta_response_input_file_content.rb +23 -1
  14. data/lib/openai/models/beta/beta_response_input_image.rb +23 -1
  15. data/lib/openai/models/beta/beta_response_input_image_content.rb +23 -1
  16. data/lib/openai/models/beta/beta_response_input_text.rb +23 -1
  17. data/lib/openai/models/beta/beta_response_input_text_content.rb +23 -1
  18. data/lib/openai/models/beta/beta_response_item.rb +28 -1
  19. data/lib/openai/models/beta/beta_response_output_item.rb +28 -1
  20. data/lib/openai/models/beta/beta_response_tool_search_output_item_param.rb +26 -15
  21. data/lib/openai/models/beta/beta_responses_client_event.rb +3 -0
  22. data/lib/openai/models/beta/beta_tool.rb +26 -15
  23. data/lib/openai/models/beta/persisted_agent_tool.rb +18 -1
  24. data/lib/openai/models/beta/persisted_agent_tool_param.rb +18 -1
  25. data/lib/openai/models/beta/response_compact_params.rb +3 -0
  26. data/lib/openai/models/beta/response_create_params.rb +3 -0
  27. data/lib/openai/models/chat/chat_completion_content_part.rb +23 -1
  28. data/lib/openai/models/chat/chat_completion_content_part_image.rb +23 -1
  29. data/lib/openai/models/chat/chat_completion_content_part_input_audio.rb +23 -1
  30. data/lib/openai/models/chat/chat_completion_content_part_text.rb +23 -1
  31. data/lib/openai/models/chat_model.rb +1 -0
  32. data/lib/openai/models/conversations/computer_screenshot_content.rb +23 -1
  33. data/lib/openai/models/decision_create_params.rb +8 -4
  34. data/lib/openai/models/image_edit_params.rb +20 -4
  35. data/lib/openai/models/image_generate_params.rb +23 -7
  36. data/lib/openai/models/image_model.rb +2 -0
  37. data/lib/openai/models/live/client_delegation.rb +20 -1
  38. data/lib/openai/models/live/client_event.rb +4 -4
  39. data/lib/openai/models/live/commentary_append_event.rb +1 -1
  40. data/lib/openai/models/live/decision_assistant_message.rb +154 -0
  41. data/lib/openai/models/live/decision_choice_option.rb +35 -0
  42. data/lib/openai/models/live/decision_developer_message.rb +70 -0
  43. data/lib/openai/models/live/decision_input_text.rb +26 -0
  44. data/lib/openai/models/live/decision_item_create_event.rb +490 -131
  45. data/lib/openai/models/live/decision_item_created_event.rb +486 -131
  46. data/lib/openai/models/live/decision_json_object.rb +10 -0
  47. data/lib/openai/models/live/decision_question.rb +172 -0
  48. data/lib/openai/models/live/decision_stored_assistant_message.rb +152 -0
  49. data/lib/openai/models/live/decision_stored_developer_message.rb +68 -0
  50. data/lib/openai/models/live/decision_stored_system_message.rb +68 -0
  51. data/lib/openai/models/live/decision_stored_user_message.rb +195 -0
  52. data/lib/openai/models/live/decision_system_message.rb +70 -0
  53. data/lib/openai/models/live/decision_trigger.rb +6 -258
  54. data/lib/openai/models/live/decision_user_message.rb +193 -0
  55. data/lib/openai/models/live/decisions_delegation_config.rb +5 -250
  56. data/lib/openai/models/live/decisions_delegation_update_config.rb +5 -257
  57. data/lib/openai/models/live/fork_client_event.rb +4 -4
  58. data/lib/openai/models/live/fork_server_event.rb +2 -2
  59. data/lib/openai/models/live/fork_session_config.rb +20 -1
  60. data/lib/openai/models/live/input_audio_muted_event.rb +3 -2
  61. data/lib/openai/models/live/input_audio_unmute_event.rb +2 -1
  62. data/lib/openai/models/live/input_audio_unmuted_event.rb +3 -2
  63. data/lib/openai/models/live/instructions_append_event.rb +5 -2
  64. data/lib/openai/models/live/media_session_config.rb +39 -2
  65. data/lib/openai/models/live/media_session_fork_config.rb +20 -1
  66. data/lib/openai/models/live/server_event.rb +2 -2
  67. data/lib/openai/models/live/session_accept_params.rb +39 -2
  68. data/lib/openai/models/live/session_config.rb +39 -2
  69. data/lib/openai/models/live/session_resource.rb +39 -2
  70. data/lib/openai/models/live/session_update_config.rb +41 -2
  71. data/lib/openai/models/live/sideband_client_event.rb +4 -4
  72. data/lib/openai/models/live/sideband_server_event.rb +2 -2
  73. data/lib/openai/models/live/thinking_append_event.rb +1 -1
  74. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rb +10 -12
  75. data/lib/openai/models/realtime/realtime_error_event.rb +1 -1
  76. data/lib/openai/models/realtime/realtime_server_event.rb +1 -1
  77. data/lib/openai/models/realtime/realtime_translation_server_event.rb +1 -1
  78. data/lib/openai/models/responses/response_compact_params.rb +3 -0
  79. data/lib/openai/models/responses/response_input_file.rb +23 -1
  80. data/lib/openai/models/responses/response_input_file_content.rb +23 -1
  81. data/lib/openai/models/responses/response_input_image.rb +23 -1
  82. data/lib/openai/models/responses/response_input_image_content.rb +23 -1
  83. data/lib/openai/models/responses/response_input_text.rb +23 -1
  84. data/lib/openai/models/responses/response_input_text_content.rb +23 -1
  85. data/lib/openai/models/responses/response_tool_search_output_item_param.rb +26 -15
  86. data/lib/openai/models/responses/tool.rb +26 -15
  87. data/lib/openai/resources/beta/agents.rb +2 -2
  88. data/lib/openai/resources/beta/responses.rb +2 -2
  89. data/lib/openai/resources/images.rb +18 -6
  90. data/lib/openai/resources/live/forks.rb +2 -2
  91. data/lib/openai/resources/live/sideband.rb +2 -2
  92. data/lib/openai/resources/live.rb +2 -2
  93. data/lib/openai/resources/realtime/translations.rb +2 -2
  94. data/lib/openai/resources/realtime.rb +2 -2
  95. data/lib/openai/resources/responses.rb +2 -2
  96. data/lib/openai/version.rb +1 -1
  97. data/lib/openai.rb +12 -0
  98. data/rbi/openai/models/beta/agent.rbi +2 -1
  99. data/rbi/openai/models/beta/agent_create_params.rbi +6 -3
  100. data/rbi/openai/models/beta/agent_session.rbi +2 -1
  101. data/rbi/openai/models/beta/agent_tool.rbi +40 -1
  102. data/rbi/openai/models/beta/agent_tool_param.rbi +40 -1
  103. data/rbi/openai/models/beta/agent_update_params.rbi +6 -3
  104. data/rbi/openai/models/beta/agents/session_create_params.rbi +6 -3
  105. data/rbi/openai/models/beta/beta_response.rbi +1 -0
  106. data/rbi/openai/models/beta/beta_response_input_file.rbi +31 -1
  107. data/rbi/openai/models/beta/beta_response_input_file_content.rbi +39 -1
  108. data/rbi/openai/models/beta/beta_response_input_image.rbi +31 -1
  109. data/rbi/openai/models/beta/beta_response_input_image_content.rbi +39 -1
  110. data/rbi/openai/models/beta/beta_response_input_text.rbi +31 -1
  111. data/rbi/openai/models/beta/beta_response_input_text_content.rbi +39 -1
  112. data/rbi/openai/models/beta/beta_response_item.rbi +58 -1
  113. data/rbi/openai/models/beta/beta_response_output_item.rbi +58 -1
  114. data/rbi/openai/models/beta/beta_response_tool_search_output_item_param.rbi +24 -15
  115. data/rbi/openai/models/beta/beta_responses_client_event.rbi +4 -0
  116. data/rbi/openai/models/beta/beta_tool.rbi +24 -15
  117. data/rbi/openai/models/beta/persisted_agent_tool.rbi +40 -1
  118. data/rbi/openai/models/beta/persisted_agent_tool_param.rbi +40 -1
  119. data/rbi/openai/models/beta/response_compact_params.rbi +1 -0
  120. data/rbi/openai/models/beta/response_create_params.rbi +1 -0
  121. data/rbi/openai/models/chat/chat_completion_content_part.rbi +43 -1
  122. data/rbi/openai/models/chat/chat_completion_content_part_image.rbi +41 -1
  123. data/rbi/openai/models/chat/chat_completion_content_part_input_audio.rbi +46 -1
  124. data/rbi/openai/models/chat/chat_completion_content_part_text.rbi +39 -1
  125. data/rbi/openai/models/chat_model.rbi +1 -0
  126. data/rbi/openai/models/conversations/computer_screenshot_content.rbi +48 -1
  127. data/rbi/openai/models/image_edit_params.rbi +12 -3
  128. data/rbi/openai/models/image_generate_params.rbi +15 -6
  129. data/rbi/openai/models/live/client_delegation.rbi +23 -1
  130. data/rbi/openai/models/live/commentary_append_event.rbi +1 -1
  131. data/rbi/openai/models/live/decision_assistant_message.rbi +247 -0
  132. data/rbi/openai/models/live/decision_choice_option.rbi +67 -0
  133. data/rbi/openai/models/live/decision_developer_message.rbi +109 -0
  134. data/rbi/openai/models/live/decision_input_text.rbi +55 -0
  135. data/rbi/openai/models/live/decision_item_create_event.rbi +765 -184
  136. data/rbi/openai/models/live/decision_item_created_event.rbi +737 -184
  137. data/rbi/openai/models/live/decision_json_object.rbi +16 -0
  138. data/rbi/openai/models/live/decision_question.rbi +300 -0
  139. data/rbi/openai/models/live/decision_stored_assistant_message.rbi +245 -0
  140. data/rbi/openai/models/live/decision_stored_developer_message.rbi +107 -0
  141. data/rbi/openai/models/live/decision_stored_system_message.rbi +107 -0
  142. data/rbi/openai/models/live/decision_stored_user_message.rbi +333 -0
  143. data/rbi/openai/models/live/decision_system_message.rbi +109 -0
  144. data/rbi/openai/models/live/decision_trigger.rbi +11 -383
  145. data/rbi/openai/models/live/decision_user_message.rbi +320 -0
  146. data/rbi/openai/models/live/decisions_delegation_config.rbi +10 -384
  147. data/rbi/openai/models/live/decisions_delegation_update_config.rbi +13 -387
  148. data/rbi/openai/models/live/fork_session_config.rbi +27 -1
  149. data/rbi/openai/models/live/input_audio_muted_event.rbi +3 -2
  150. data/rbi/openai/models/live/input_audio_unmute_event.rbi +2 -1
  151. data/rbi/openai/models/live/input_audio_unmuted_event.rbi +3 -2
  152. data/rbi/openai/models/live/instructions_append_event.rbi +5 -2
  153. data/rbi/openai/models/live/media_session_config.rbi +44 -2
  154. data/rbi/openai/models/live/media_session_fork_config.rbi +27 -1
  155. data/rbi/openai/models/live/session_accept_params.rbi +44 -2
  156. data/rbi/openai/models/live/session_config.rbi +44 -2
  157. data/rbi/openai/models/live/session_resource.rbi +44 -2
  158. data/rbi/openai/models/live/session_update_config.rbi +54 -2
  159. data/rbi/openai/models/live/thinking_append_event.rbi +1 -1
  160. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rbi +10 -12
  161. data/rbi/openai/models/realtime/realtime_error_event.rbi +1 -1
  162. data/rbi/openai/models/responses/response_compact_params.rbi +1 -0
  163. data/rbi/openai/models/responses/response_input_file.rbi +31 -1
  164. data/rbi/openai/models/responses/response_input_file_content.rbi +39 -1
  165. data/rbi/openai/models/responses/response_input_image.rbi +33 -1
  166. data/rbi/openai/models/responses/response_input_image_content.rbi +41 -1
  167. data/rbi/openai/models/responses/response_input_text.rbi +31 -1
  168. data/rbi/openai/models/responses/response_input_text_content.rbi +39 -1
  169. data/rbi/openai/models/responses/response_tool_search_output_item_param.rbi +24 -15
  170. data/rbi/openai/models/responses/tool.rbi +24 -15
  171. data/rbi/openai/resources/beta/agents.rbi +4 -2
  172. data/rbi/openai/resources/beta/responses.rbi +8 -1
  173. data/rbi/openai/resources/images.rbi +18 -6
  174. data/rbi/openai/resources/live/forks.rbi +8 -1
  175. data/rbi/openai/resources/live/sideband.rbi +8 -1
  176. data/rbi/openai/resources/live.rbi +8 -1
  177. data/rbi/openai/resources/realtime/translations.rbi +8 -1
  178. data/rbi/openai/resources/realtime.rbi +8 -1
  179. data/rbi/openai/resources/responses.rbi +8 -1
  180. data/sig/openai/models/beta/agent_tool.rbs +14 -0
  181. data/sig/openai/models/beta/agent_tool_param.rbs +14 -0
  182. data/sig/openai/models/beta/beta_response.rbs +2 -0
  183. data/sig/openai/models/beta/beta_response_input_file.rbs +34 -3
  184. data/sig/openai/models/beta/beta_response_input_file_content.rbs +34 -3
  185. data/sig/openai/models/beta/beta_response_input_image.rbs +34 -3
  186. data/sig/openai/models/beta/beta_response_input_image_content.rbs +34 -3
  187. data/sig/openai/models/beta/beta_response_input_text.rbs +34 -3
  188. data/sig/openai/models/beta/beta_response_input_text_content.rbs +34 -3
  189. data/sig/openai/models/beta/beta_response_item.rbs +34 -3
  190. data/sig/openai/models/beta/beta_response_output_item.rbs +34 -3
  191. data/sig/openai/models/beta/beta_response_tool_search_output_item_param.rbs +24 -15
  192. data/sig/openai/models/beta/beta_responses_client_event.rbs +2 -0
  193. data/sig/openai/models/beta/beta_tool.rbs +24 -15
  194. data/sig/openai/models/beta/persisted_agent_tool.rbs +14 -0
  195. data/sig/openai/models/beta/persisted_agent_tool_param.rbs +14 -0
  196. data/sig/openai/models/beta/response_compact_params.rbs +2 -0
  197. data/sig/openai/models/beta/response_create_params.rbs +2 -0
  198. data/sig/openai/models/chat/chat_completion_content_part.rbs +34 -3
  199. data/sig/openai/models/chat/chat_completion_content_part_image.rbs +34 -3
  200. data/sig/openai/models/chat/chat_completion_content_part_input_audio.rbs +34 -3
  201. data/sig/openai/models/chat/chat_completion_content_part_text.rbs +34 -3
  202. data/sig/openai/models/chat_model.rbs +2 -0
  203. data/sig/openai/models/conversations/computer_screenshot_content.rbs +34 -3
  204. data/sig/openai/models/image_edit_params.rbs +8 -2
  205. data/sig/openai/models/image_generate_params.rbs +10 -4
  206. data/sig/openai/models/live/client_delegation.rbs +30 -3
  207. data/sig/openai/models/live/decision_assistant_message.rbs +134 -0
  208. data/sig/openai/models/live/decision_choice_option.rbs +37 -0
  209. data/sig/openai/models/live/decision_developer_message.rbs +67 -0
  210. data/sig/openai/models/live/decision_input_text.rbs +20 -0
  211. data/sig/openai/models/live/decision_item_create_event.rbs +413 -131
  212. data/sig/openai/models/live/decision_item_created_event.rbs +401 -131
  213. data/sig/openai/models/live/decision_json_object.rbs +9 -0
  214. data/sig/openai/models/live/decision_question.rbs +164 -0
  215. data/sig/openai/models/live/decision_stored_assistant_message.rbs +131 -0
  216. data/sig/openai/models/live/decision_stored_developer_message.rbs +64 -0
  217. data/sig/openai/models/live/decision_stored_system_message.rbs +64 -0
  218. data/sig/openai/models/live/decision_stored_user_message.rbs +177 -0
  219. data/sig/openai/models/live/decision_system_message.rbs +67 -0
  220. data/sig/openai/models/live/decision_trigger.rbs +8 -208
  221. data/sig/openai/models/live/decision_user_message.rbs +180 -0
  222. data/sig/openai/models/live/decisions_delegation_config.rbs +6 -204
  223. data/sig/openai/models/live/decisions_delegation_update_config.rbs +8 -206
  224. data/sig/openai/models/live/fork_session_config.rbs +26 -0
  225. data/sig/openai/models/live/media_session_config.rbs +53 -4
  226. data/sig/openai/models/live/media_session_fork_config.rbs +26 -0
  227. data/sig/openai/models/live/session_accept_params.rbs +53 -4
  228. data/sig/openai/models/live/session_config.rbs +53 -4
  229. data/sig/openai/models/live/session_resource.rbs +53 -4
  230. data/sig/openai/models/live/session_update_config.rbs +52 -0
  231. data/sig/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rbs +10 -12
  232. data/sig/openai/models/responses/response_compact_params.rbs +2 -0
  233. data/sig/openai/models/responses/response_input_file.rbs +34 -3
  234. data/sig/openai/models/responses/response_input_file_content.rbs +34 -3
  235. data/sig/openai/models/responses/response_input_image.rbs +34 -3
  236. data/sig/openai/models/responses/response_input_image_content.rbs +34 -3
  237. data/sig/openai/models/responses/response_input_text.rbs +34 -3
  238. data/sig/openai/models/responses/response_input_text_content.rbs +34 -3
  239. data/sig/openai/models/responses/response_tool_search_output_item_param.rbs +24 -15
  240. data/sig/openai/models/responses/tool.rbs +24 -15
  241. data/sig/openai/resources/beta/responses.rbs +2 -1
  242. data/sig/openai/resources/live/forks.rbs +2 -1
  243. data/sig/openai/resources/live/sideband.rbs +2 -1
  244. data/sig/openai/resources/live.rbs +2 -1
  245. data/sig/openai/resources/realtime/translations.rbs +2 -1
  246. data/sig/openai/resources/realtime.rbs +2 -1
  247. data/sig/openai/resources/responses.rbs +2 -1
  248. metadata +37 -1
@@ -130,18 +130,36 @@ module OpenAI
130
130
  sig { returns(Symbol) }
131
131
  attr_accessor :mode
132
132
 
133
+ # The minimum lifetime of this cache breakpoint. Defaults to the request TTL.
134
+ sig {
135
+ returns(
136
+ T.nilable(OpenAI::Conversations::ComputerScreenshotContent::PromptCacheBreakpoint::Ttl::TaggedSymbol)
137
+ )
138
+ }
139
+ attr_reader :ttl
140
+
141
+ sig {
142
+ params(ttl: OpenAI::Conversations::ComputerScreenshotContent::PromptCacheBreakpoint::Ttl::OrSymbol).void
143
+ }
144
+ attr_writer :ttl
145
+
133
146
  # Marks the exact end of a reusable prompt prefix. The breakpoint inherits its TTL
134
147
  # from the request's `prompt_cache_options.ttl`; the boundary is not rounded to a
135
148
  # token block.
136
149
  sig do
137
150
  params(
138
151
 
152
+ ttl: OpenAI::Conversations::ComputerScreenshotContent::PromptCacheBreakpoint::Ttl::OrSymbol,
153
+
139
154
  mode: Symbol
140
155
  )
141
156
  .returns(T.attached_class)
142
157
  end
143
158
  def self.new(
144
159
 
160
+ # The minimum lifetime of this cache breakpoint. Defaults to the request TTL.
161
+ ttl: nil,
162
+
145
163
  # The breakpoint mode. Always `explicit`.
146
164
 
147
165
  mode: :explicit
@@ -150,12 +168,41 @@ module OpenAI
150
168
 
151
169
  sig do
152
170
  override.returns(
153
- {mode: Symbol}
171
+ {
172
+ mode: Symbol,
173
+ ttl: OpenAI::Conversations::ComputerScreenshotContent::PromptCacheBreakpoint::Ttl::TaggedSymbol
174
+ }
154
175
  )
155
176
  end
156
177
  def to_hash
157
178
  end
158
179
 
180
+ # The minimum lifetime of this cache breakpoint. Defaults to the request TTL.
181
+ module Ttl
182
+ extend OpenAI::Internal::Type::Enum
183
+
184
+ TaggedSymbol = T.type_alias {
185
+ T.all(Symbol, OpenAI::Conversations::ComputerScreenshotContent::PromptCacheBreakpoint::Ttl)
186
+ }
187
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
188
+
189
+ TTL_30M = T.let(
190
+ :"30m",
191
+ OpenAI::Conversations::ComputerScreenshotContent::PromptCacheBreakpoint::Ttl::TaggedSymbol
192
+ )
193
+ TTL_12H = T.let(
194
+ :"12h",
195
+ OpenAI::Conversations::ComputerScreenshotContent::PromptCacheBreakpoint::Ttl::TaggedSymbol
196
+ )
197
+
198
+ sig {
199
+ override.returns(
200
+ T::Array[OpenAI::Conversations::ComputerScreenshotContent::PromptCacheBreakpoint::Ttl::TaggedSymbol]
201
+ )
202
+ }
203
+ def self.values
204
+ end
205
+ end
159
206
  end
160
207
 
161
208
  end
@@ -68,11 +68,14 @@ module OpenAI
68
68
  sig { params(mask: OpenAI::Internal::FileInput).void }
69
69
  attr_writer :mask
70
70
 
71
- # The GPT image model to use for image editing (`gpt-image-1`, `gpt-image-1-mini`,
71
+ # The GPT image model to use for image editing (`gpt-image-1-mini`,
72
72
  # `gpt-image-1.5`, `gpt-image-2`, `gpt-image-2-2026-04-21`,
73
73
  # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
74
74
  # `gpt-image-2.5-flare`, `gpt-image-2.5-flare-2026-09-08`, or
75
75
  # `chatgpt-image-latest`).
76
+ #
77
+ # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
78
+ # `gpt-image-2.5-flare` instead.
76
79
  sig { returns(T.nilable(T.any(String, OpenAI::ImageModel::OrSymbol))) }
77
80
  attr_accessor :model
78
81
 
@@ -230,11 +233,14 @@ module OpenAI
230
233
  # content type.
231
234
  mask: nil,
232
235
 
233
- # The GPT image model to use for image editing (`gpt-image-1`, `gpt-image-1-mini`,
236
+ # The GPT image model to use for image editing (`gpt-image-1-mini`,
234
237
  # `gpt-image-1.5`, `gpt-image-2`, `gpt-image-2-2026-04-21`,
235
238
  # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
236
239
  # `gpt-image-2.5-flare`, `gpt-image-2.5-flare-2026-09-08`, or
237
240
  # `chatgpt-image-latest`).
241
+ #
242
+ # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
243
+ # `gpt-image-2.5-flare` instead.
238
244
  model: nil,
239
245
 
240
246
  # The number of images to generate. Must be between 1 and 10.
@@ -390,11 +396,14 @@ module OpenAI
390
396
  end
391
397
  end
392
398
 
393
- # The GPT image model to use for image editing (`gpt-image-1`, `gpt-image-1-mini`,
399
+ # The GPT image model to use for image editing (`gpt-image-1-mini`,
394
400
  # `gpt-image-1.5`, `gpt-image-2`, `gpt-image-2-2026-04-21`,
395
401
  # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
396
402
  # `gpt-image-2.5-flare`, `gpt-image-2.5-flare-2026-09-08`, or
397
403
  # `chatgpt-image-latest`).
404
+ #
405
+ # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
406
+ # `gpt-image-2.5-flare` instead.
398
407
  module Model
399
408
  extend OpenAI::Internal::Type::Union
400
409
 
@@ -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