openai 0.110.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 (255) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -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 +802 -28
  29. data/lib/openai/models/decision_input_json.rb +45 -0
  30. data/lib/openai/models/decision_input_message.rb +304 -48
  31. data/lib/openai/models/decision_input_part.rb +4 -1
  32. data/lib/openai/models/decision_question_input_image.rb +54 -0
  33. data/lib/openai/models/decision_question_input_part.rb +23 -0
  34. data/lib/openai/models/decision_question_input_text.rb +21 -0
  35. data/lib/openai/models/image_edit_params.rb +20 -4
  36. data/lib/openai/models/image_generate_params.rb +23 -7
  37. data/lib/openai/models/image_model.rb +2 -0
  38. data/lib/openai/models/live/client_delegation.rb +20 -1
  39. data/lib/openai/models/live/client_event.rb +4 -4
  40. data/lib/openai/models/live/commentary_append_event.rb +1 -1
  41. data/lib/openai/models/live/decision_assistant_message.rb +154 -0
  42. data/lib/openai/models/live/decision_choice_option.rb +35 -0
  43. data/lib/openai/models/live/decision_developer_message.rb +70 -0
  44. data/lib/openai/models/live/decision_input_text.rb +26 -0
  45. data/lib/openai/models/live/decision_item_create_event.rb +490 -131
  46. data/lib/openai/models/live/decision_item_created_event.rb +486 -131
  47. data/lib/openai/models/live/decision_json_object.rb +10 -0
  48. data/lib/openai/models/live/decision_question.rb +172 -0
  49. data/lib/openai/models/live/decision_stored_assistant_message.rb +152 -0
  50. data/lib/openai/models/live/decision_stored_developer_message.rb +68 -0
  51. data/lib/openai/models/live/decision_stored_system_message.rb +68 -0
  52. data/lib/openai/models/live/decision_stored_user_message.rb +195 -0
  53. data/lib/openai/models/live/decision_system_message.rb +70 -0
  54. data/lib/openai/models/live/decision_trigger.rb +6 -185
  55. data/lib/openai/models/live/decision_user_message.rb +193 -0
  56. data/lib/openai/models/live/decisions_delegation_config.rb +5 -177
  57. data/lib/openai/models/live/decisions_delegation_update_config.rb +5 -184
  58. data/lib/openai/models/live/fork_client_event.rb +4 -4
  59. data/lib/openai/models/live/fork_server_event.rb +2 -2
  60. data/lib/openai/models/live/fork_session_config.rb +20 -1
  61. data/lib/openai/models/live/input_audio_muted_event.rb +3 -2
  62. data/lib/openai/models/live/input_audio_unmute_event.rb +2 -1
  63. data/lib/openai/models/live/input_audio_unmuted_event.rb +3 -2
  64. data/lib/openai/models/live/instructions_append_event.rb +5 -2
  65. data/lib/openai/models/live/media_session_config.rb +39 -2
  66. data/lib/openai/models/live/media_session_fork_config.rb +20 -1
  67. data/lib/openai/models/live/server_event.rb +2 -2
  68. data/lib/openai/models/live/session_accept_params.rb +39 -2
  69. data/lib/openai/models/live/session_config.rb +39 -2
  70. data/lib/openai/models/live/session_resource.rb +39 -2
  71. data/lib/openai/models/live/session_update_config.rb +41 -2
  72. data/lib/openai/models/live/sideband_client_event.rb +4 -4
  73. data/lib/openai/models/live/sideband_server_event.rb +2 -2
  74. data/lib/openai/models/live/thinking_append_event.rb +1 -1
  75. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rb +10 -12
  76. data/lib/openai/models/realtime/realtime_error_event.rb +1 -1
  77. data/lib/openai/models/realtime/realtime_server_event.rb +1 -1
  78. data/lib/openai/models/realtime/realtime_translation_server_event.rb +1 -1
  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/models.rb +8 -0
  88. data/lib/openai/resources/beta/agents.rb +2 -2
  89. data/lib/openai/resources/beta/responses.rb +2 -2
  90. data/lib/openai/resources/decisions.rb +5 -6
  91. data/lib/openai/resources/images.rb +18 -6
  92. data/lib/openai/resources/live/forks.rb +2 -2
  93. data/lib/openai/resources/live/sideband.rb +2 -2
  94. data/lib/openai/resources/live.rb +2 -2
  95. data/lib/openai/resources/realtime/translations.rb +2 -2
  96. data/lib/openai/resources/realtime.rb +2 -2
  97. data/lib/openai/resources/responses.rb +2 -2
  98. data/lib/openai/version.rb +1 -1
  99. data/lib/openai.rb +16 -0
  100. data/rbi/openai/models/beta/agent.rbi +2 -1
  101. data/rbi/openai/models/beta/agent_create_params.rbi +6 -3
  102. data/rbi/openai/models/beta/agent_session.rbi +2 -1
  103. data/rbi/openai/models/beta/agent_tool.rbi +40 -1
  104. data/rbi/openai/models/beta/agent_tool_param.rbi +40 -1
  105. data/rbi/openai/models/beta/agent_update_params.rbi +6 -3
  106. data/rbi/openai/models/beta/agents/session_create_params.rbi +6 -3
  107. data/rbi/openai/models/beta/beta_response_input_file.rbi +31 -1
  108. data/rbi/openai/models/beta/beta_response_input_file_content.rbi +39 -1
  109. data/rbi/openai/models/beta/beta_response_input_image.rbi +31 -1
  110. data/rbi/openai/models/beta/beta_response_input_image_content.rbi +39 -1
  111. data/rbi/openai/models/beta/beta_response_input_text.rbi +31 -1
  112. data/rbi/openai/models/beta/beta_response_input_text_content.rbi +39 -1
  113. data/rbi/openai/models/beta/beta_response_item.rbi +58 -1
  114. data/rbi/openai/models/beta/beta_response_output_item.rbi +58 -1
  115. data/rbi/openai/models/beta/beta_response_tool_search_output_item_param.rbi +24 -15
  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/chat/chat_completion_content_part.rbi +43 -1
  120. data/rbi/openai/models/chat/chat_completion_content_part_image.rbi +41 -1
  121. data/rbi/openai/models/chat/chat_completion_content_part_input_audio.rbi +46 -1
  122. data/rbi/openai/models/chat/chat_completion_content_part_text.rbi +39 -1
  123. data/rbi/openai/models/conversations/computer_screenshot_content.rbi +48 -1
  124. data/rbi/openai/models/decision_create_params.rbi +1273 -26
  125. data/rbi/openai/models/decision_input_json.rbi +75 -0
  126. data/rbi/openai/models/decision_input_message.rbi +455 -52
  127. data/rbi/openai/models/decision_input_part.rbi +2 -1
  128. data/rbi/openai/models/decision_question_input_image.rbi +82 -0
  129. data/rbi/openai/models/decision_question_input_part.rbi +25 -0
  130. data/rbi/openai/models/decision_question_input_text.rbi +49 -0
  131. data/rbi/openai/models/image_edit_params.rbi +12 -3
  132. data/rbi/openai/models/image_generate_params.rbi +15 -6
  133. data/rbi/openai/models/live/client_delegation.rbi +23 -1
  134. data/rbi/openai/models/live/commentary_append_event.rbi +1 -1
  135. data/rbi/openai/models/live/decision_assistant_message.rbi +247 -0
  136. data/rbi/openai/models/live/decision_choice_option.rbi +67 -0
  137. data/rbi/openai/models/live/decision_developer_message.rbi +109 -0
  138. data/rbi/openai/models/live/decision_input_text.rbi +55 -0
  139. data/rbi/openai/models/live/decision_item_create_event.rbi +765 -184
  140. data/rbi/openai/models/live/decision_item_created_event.rbi +737 -184
  141. data/rbi/openai/models/live/decision_json_object.rbi +16 -0
  142. data/rbi/openai/models/live/decision_question.rbi +300 -0
  143. data/rbi/openai/models/live/decision_stored_assistant_message.rbi +245 -0
  144. data/rbi/openai/models/live/decision_stored_developer_message.rbi +107 -0
  145. data/rbi/openai/models/live/decision_stored_system_message.rbi +107 -0
  146. data/rbi/openai/models/live/decision_stored_user_message.rbi +333 -0
  147. data/rbi/openai/models/live/decision_system_message.rbi +109 -0
  148. data/rbi/openai/models/live/decision_trigger.rbi +11 -320
  149. data/rbi/openai/models/live/decision_user_message.rbi +320 -0
  150. data/rbi/openai/models/live/decisions_delegation_config.rbi +10 -321
  151. data/rbi/openai/models/live/decisions_delegation_update_config.rbi +13 -324
  152. data/rbi/openai/models/live/fork_session_config.rbi +27 -1
  153. data/rbi/openai/models/live/input_audio_muted_event.rbi +3 -2
  154. data/rbi/openai/models/live/input_audio_unmute_event.rbi +2 -1
  155. data/rbi/openai/models/live/input_audio_unmuted_event.rbi +3 -2
  156. data/rbi/openai/models/live/instructions_append_event.rbi +5 -2
  157. data/rbi/openai/models/live/media_session_config.rbi +44 -2
  158. data/rbi/openai/models/live/media_session_fork_config.rbi +27 -1
  159. data/rbi/openai/models/live/session_accept_params.rbi +44 -2
  160. data/rbi/openai/models/live/session_config.rbi +44 -2
  161. data/rbi/openai/models/live/session_resource.rbi +44 -2
  162. data/rbi/openai/models/live/session_update_config.rbi +54 -2
  163. data/rbi/openai/models/live/thinking_append_event.rbi +1 -1
  164. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rbi +10 -12
  165. data/rbi/openai/models/realtime/realtime_error_event.rbi +1 -1
  166. data/rbi/openai/models/responses/response_input_file.rbi +31 -1
  167. data/rbi/openai/models/responses/response_input_file_content.rbi +39 -1
  168. data/rbi/openai/models/responses/response_input_image.rbi +33 -1
  169. data/rbi/openai/models/responses/response_input_image_content.rbi +41 -1
  170. data/rbi/openai/models/responses/response_input_text.rbi +31 -1
  171. data/rbi/openai/models/responses/response_input_text_content.rbi +39 -1
  172. data/rbi/openai/models/responses/response_tool_search_output_item_param.rbi +24 -15
  173. data/rbi/openai/models/responses/tool.rbi +24 -15
  174. data/rbi/openai/models.rbi +8 -0
  175. data/rbi/openai/resources/beta/agents.rbi +4 -2
  176. data/rbi/openai/resources/beta/responses.rbi +8 -1
  177. data/rbi/openai/resources/decisions.rbi +4 -5
  178. data/rbi/openai/resources/images.rbi +18 -6
  179. data/rbi/openai/resources/live/forks.rbi +8 -1
  180. data/rbi/openai/resources/live/sideband.rbi +8 -1
  181. data/rbi/openai/resources/live.rbi +8 -1
  182. data/rbi/openai/resources/realtime/translations.rbi +8 -1
  183. data/rbi/openai/resources/realtime.rbi +8 -1
  184. data/rbi/openai/resources/responses.rbi +8 -1
  185. data/sig/openai/models/beta/agent_tool.rbs +14 -0
  186. data/sig/openai/models/beta/agent_tool_param.rbs +14 -0
  187. data/sig/openai/models/beta/beta_response_input_file.rbs +34 -3
  188. data/sig/openai/models/beta/beta_response_input_file_content.rbs +34 -3
  189. data/sig/openai/models/beta/beta_response_input_image.rbs +34 -3
  190. data/sig/openai/models/beta/beta_response_input_image_content.rbs +34 -3
  191. data/sig/openai/models/beta/beta_response_input_text.rbs +34 -3
  192. data/sig/openai/models/beta/beta_response_input_text_content.rbs +34 -3
  193. data/sig/openai/models/beta/beta_response_item.rbs +34 -3
  194. data/sig/openai/models/beta/beta_response_output_item.rbs +34 -3
  195. data/sig/openai/models/beta/beta_response_tool_search_output_item_param.rbs +24 -15
  196. data/sig/openai/models/beta/beta_tool.rbs +24 -15
  197. data/sig/openai/models/beta/persisted_agent_tool.rbs +14 -0
  198. data/sig/openai/models/beta/persisted_agent_tool_param.rbs +14 -0
  199. data/sig/openai/models/chat/chat_completion_content_part.rbs +34 -3
  200. data/sig/openai/models/chat/chat_completion_content_part_image.rbs +34 -3
  201. data/sig/openai/models/chat/chat_completion_content_part_input_audio.rbs +34 -3
  202. data/sig/openai/models/chat/chat_completion_content_part_text.rbs +34 -3
  203. data/sig/openai/models/conversations/computer_screenshot_content.rbs +34 -3
  204. data/sig/openai/models/decision_create_params.rbs +610 -24
  205. data/sig/openai/models/decision_input_json.rbs +34 -0
  206. data/sig/openai/models/decision_input_message.rbs +264 -35
  207. data/sig/openai/models/decision_input_part.rbs +3 -1
  208. data/sig/openai/models/decision_question_input_image.rbs +51 -0
  209. data/sig/openai/models/decision_question_input_part.rbs +14 -0
  210. data/sig/openai/models/decision_question_input_text.rbs +15 -0
  211. data/sig/openai/models/image_edit_params.rbs +8 -2
  212. data/sig/openai/models/image_generate_params.rbs +10 -4
  213. data/sig/openai/models/live/client_delegation.rbs +30 -3
  214. data/sig/openai/models/live/decision_assistant_message.rbs +134 -0
  215. data/sig/openai/models/live/decision_choice_option.rbs +37 -0
  216. data/sig/openai/models/live/decision_developer_message.rbs +67 -0
  217. data/sig/openai/models/live/decision_input_text.rbs +20 -0
  218. data/sig/openai/models/live/decision_item_create_event.rbs +413 -131
  219. data/sig/openai/models/live/decision_item_created_event.rbs +401 -131
  220. data/sig/openai/models/live/decision_json_object.rbs +9 -0
  221. data/sig/openai/models/live/decision_question.rbs +164 -0
  222. data/sig/openai/models/live/decision_stored_assistant_message.rbs +131 -0
  223. data/sig/openai/models/live/decision_stored_developer_message.rbs +64 -0
  224. data/sig/openai/models/live/decision_stored_system_message.rbs +64 -0
  225. data/sig/openai/models/live/decision_stored_user_message.rbs +177 -0
  226. data/sig/openai/models/live/decision_system_message.rbs +67 -0
  227. data/sig/openai/models/live/decision_trigger.rbs +8 -171
  228. data/sig/openai/models/live/decision_user_message.rbs +180 -0
  229. data/sig/openai/models/live/decisions_delegation_config.rbs +6 -167
  230. data/sig/openai/models/live/decisions_delegation_update_config.rbs +8 -169
  231. data/sig/openai/models/live/fork_session_config.rbs +26 -0
  232. data/sig/openai/models/live/media_session_config.rbs +53 -4
  233. data/sig/openai/models/live/media_session_fork_config.rbs +26 -0
  234. data/sig/openai/models/live/session_accept_params.rbs +53 -4
  235. data/sig/openai/models/live/session_config.rbs +53 -4
  236. data/sig/openai/models/live/session_resource.rbs +53 -4
  237. data/sig/openai/models/live/session_update_config.rbs +52 -0
  238. data/sig/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rbs +10 -12
  239. data/sig/openai/models/responses/response_input_file.rbs +34 -3
  240. data/sig/openai/models/responses/response_input_file_content.rbs +34 -3
  241. data/sig/openai/models/responses/response_input_image.rbs +34 -3
  242. data/sig/openai/models/responses/response_input_image_content.rbs +34 -3
  243. data/sig/openai/models/responses/response_input_text.rbs +34 -3
  244. data/sig/openai/models/responses/response_input_text_content.rbs +34 -3
  245. data/sig/openai/models/responses/response_tool_search_output_item_param.rbs +24 -15
  246. data/sig/openai/models/responses/tool.rbs +24 -15
  247. data/sig/openai/models.rbs +9 -1
  248. data/sig/openai/resources/beta/responses.rbs +2 -1
  249. data/sig/openai/resources/live/forks.rbs +2 -1
  250. data/sig/openai/resources/live/sideband.rbs +2 -1
  251. data/sig/openai/resources/live.rbs +2 -1
  252. data/sig/openai/resources/realtime/translations.rbs +2 -1
  253. data/sig/openai/resources/realtime.rbs +2 -1
  254. data/sig/openai/resources/responses.rbs +2 -1
  255. metadata +49 -1
@@ -10,10 +10,29 @@ module OpenAI
10
10
  # @return [Symbol, :client]
11
11
  required :type, const: :client
12
12
 
13
- # @!method initialize(type: :client)
13
+ # @!attribute acknowledgement_delay_ms
14
+ # Milliseconds to wait before requesting an automatic spoken acknowledgement for a
15
+ # delegation. The model may still speak before this delay. Any commentary or
16
+ # thinking appended to the session cancels all pending acknowledgements, including
17
+ # those for other delegations. Defaults to 400 for Decisions sessions and 0
18
+ # (request immediately) for other sessions. Omission in a session update preserves
19
+ # the current value. Updates apply to subsequent delegations.
20
+ #
21
+ # @return [Integer, nil]
22
+ optional :acknowledgement_delay_ms, Integer
23
+
24
+ # @!method initialize(acknowledgement_delay_ms: nil, type: :client)
14
25
  # Delegate tasks to your application. The Live session emits delegation events
15
26
  # that your backend handles.
16
27
  #
28
+ # @param acknowledgement_delay_ms [Integer]
29
+ # Milliseconds to wait before requesting an automatic spoken acknowledgement for a
30
+ # delegation. The model may still speak before this delay. Any commentary or
31
+ # thinking appended to the session cancels all pending acknowledgements, including
32
+ # those for other delegations. Defaults to 400 for Decisions sessions and 0
33
+ # (request immediately) for other sessions. Omission in a session update preserves
34
+ # the current value. Updates apply to subsequent delegations.
35
+ #
17
36
  # @param type [Symbol, :client]
18
37
  # The delegation owner. Always `client` for tasks handled by your application.
19
38
  end
@@ -25,19 +25,19 @@ module OpenAI
25
25
  # Mute audio input to the Live model without closing the session. The server acknowledges with `session.input_audio.muted`.
26
26
  variant :"session.input_audio.mute", -> { OpenAI::Live::InputAudioMuteEvent }
27
27
 
28
- # Resume audio input to a Live model after muting it. The server acknowledges with `session.input_audio.unmuted`.
28
+ # Resume audio input to a Live model after muting it. The server acknowledges with `session.input_audio.unmuted`. An active audio fixture still pauses inference until playback finishes.
29
29
  variant :"session.input_audio.unmute", -> { OpenAI::Live::InputAudioUnmuteEvent }
30
30
 
31
31
  # Play one complete audio fixture through the session output. Send this event over the primary WebSocket or a server sideband. Audio must be raw mono PCM16 little-endian at 24 kHz, regardless of the session audio format, and at most 30 seconds. The entire payload is validated before model speech is interrupted and input is muted. Only one fixture can be active. fixture.playing acknowledges acceptance and fixture.played reports server mixer drain. These notifications are not exact transport-media boundaries. Input arriving during playback is dropped and not replayed.
32
32
  variant :"session.output_audio.fixture.play", -> { OpenAI::Live::OutputAudioFixturePlayEvent }
33
33
 
34
- # Append instructions to the Live conversation while it is running, optionally associating them with an existing client delegation.
34
+ # Append developer instructions to the Live conversation while it is running, optionally associating them with an existing client delegation. Rejected while an audio fixture is active. These instructions remain in conversation history through compaction and are included in future backend delegations. For external audio, describe content already delivered so the assistant does not repeat it.
35
35
  variant :"session.instructions.append", -> { OpenAI::Live::InstructionsAppendEvent }
36
36
 
37
- # Provide silent reasoning or progress context to the Live model, optionally for an existing client delegation.
37
+ # Provide silent reasoning or progress context to the Live model, optionally for an existing client delegation. Rejected while an audio fixture is active.
38
38
  variant :"session.thinking.append", -> { OpenAI::Live::ThinkingAppendEvent }
39
39
 
40
- # Provide context the Live model can communicate to the user, optionally for an existing client delegation.
40
+ # Provide context the Live model can communicate to the user, optionally for an existing client delegation. Rejected while an audio fixture is active.
41
41
  variant :"session.commentary.append", -> { OpenAI::Live::CommentaryAppendEvent }
42
42
 
43
43
  # Evaluate the configured questions using the current conversation and Decision inputs. Reusing an event_id is rejected for the lifetime of the session.
@@ -35,7 +35,7 @@ module OpenAI
35
35
 
36
36
  # @!method initialize(content:, delegation_id:, event_id: nil, type: :"session.commentary.append")
37
37
  # Provide context the Live model can communicate to the user, optionally for an
38
- # existing client delegation.
38
+ # existing client delegation. Rejected while an audio fixture is active.
39
39
  #
40
40
  # @param content [String]
41
41
  # Speakable context for the Live model, limited to 500 tokens. Use this for a
@@ -0,0 +1,154 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Live
6
+ class DecisionAssistantMessage < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute content
8
+ # The text input to the model.
9
+ #
10
+ # @return [String, Array<OpenAI::Models::Live::DecisionAssistantMessage::Content::Part::OutputText, OpenAI::Models::Live::DecisionAssistantMessage::Content::Part::Refusal>]
11
+ required :content, union: -> { OpenAI::Live::DecisionAssistantMessage::Content }
12
+
13
+ # @!attribute role
14
+ #
15
+ # @return [Symbol, :assistant]
16
+ required :role, const: :assistant
17
+
18
+ # @!attribute id
19
+ # The unique ID of this message item.
20
+ #
21
+ # @return [String, nil]
22
+ optional :id, String, nil?: true
23
+
24
+ # @!attribute phase
25
+ # Labels an `assistant` message as intermediate commentary (`commentary`) or the
26
+ # final answer (`final_answer`). For models like `gpt-5.3-codex` and beyond, when
27
+ # sending follow-up requests, preserve and resend phase on all assistant messages
28
+ # — dropping it can degrade performance. Not used for user messages.
29
+ #
30
+ # @return [Symbol, OpenAI::Models::Live::DecisionAssistantMessage::Phase, nil]
31
+ optional :phase, enum: -> { OpenAI::Live::DecisionAssistantMessage::Phase }, nil?: true
32
+
33
+ # @!attribute type
34
+ #
35
+ # @return [Symbol, OpenAI::Models::Live::DecisionAssistantMessage::Type, nil]
36
+ optional :type, enum: -> { OpenAI::Live::DecisionAssistantMessage::Type }
37
+
38
+ # @!method initialize(content:, id: nil, phase: nil, type: nil, role: :assistant)
39
+ # @param content [String, Array<OpenAI::Models::Live::DecisionAssistantMessage::Content::Part::OutputText, OpenAI::Models::Live::DecisionAssistantMessage::Content::Part::Refusal>]
40
+ # The text input to the model.
41
+ #
42
+ # @param id [String, nil]
43
+ # The unique ID of this message item.
44
+ #
45
+ # @param phase [Symbol, OpenAI::Models::Live::DecisionAssistantMessage::Phase, nil]
46
+ # Labels an `assistant` message as intermediate commentary (`commentary`) or the
47
+ # final answer (`final_answer`). For models like `gpt-5.3-codex` and beyond, when
48
+ # sending follow-up requests, preserve and resend phase on all assistant messages
49
+ # — dropping it can degrade performance. Not used for user messages.
50
+ #
51
+ # @param type [Symbol, OpenAI::Models::Live::DecisionAssistantMessage::Type]
52
+ #
53
+ # @param role [Symbol, :assistant]
54
+
55
+ # The text input to the model.
56
+ #
57
+ # @see OpenAI::Models::Live::DecisionAssistantMessage#content
58
+ module Content
59
+ extend OpenAI::Internal::Type::Union
60
+
61
+ # The text input to the model.
62
+ variant String
63
+
64
+ variant -> { OpenAI::Models::Live::DecisionAssistantMessage::Content::PartsArray }
65
+
66
+ module Part
67
+ extend OpenAI::Internal::Type::Union
68
+
69
+ discriminator :type
70
+
71
+ variant :output_text, -> { OpenAI::Live::DecisionAssistantMessage::Content::Part::OutputText }
72
+
73
+ variant :refusal, -> { OpenAI::Live::DecisionAssistantMessage::Content::Part::Refusal }
74
+
75
+ class OutputText < OpenAI::Internal::Type::BaseModel
76
+ # @!attribute text
77
+ # The text content.
78
+ #
79
+ # @return [String]
80
+ required :text, String
81
+
82
+ # @!attribute type
83
+ #
84
+ # @return [Symbol, :output_text]
85
+ required :type, const: :output_text
86
+
87
+ # @!method initialize(text:, type: :output_text)
88
+ # @param text [String]
89
+ # The text content.
90
+ #
91
+ # @param type [Symbol, :output_text]
92
+ end
93
+
94
+ class Refusal < OpenAI::Internal::Type::BaseModel
95
+ # @!attribute refusal
96
+ # The refusal text.
97
+ #
98
+ # @return [String]
99
+ required :refusal, String
100
+
101
+ # @!attribute type
102
+ #
103
+ # @return [Symbol, :refusal]
104
+ required :type, const: :refusal
105
+
106
+ # @!method initialize(refusal:, type: :refusal)
107
+ # @param refusal [String]
108
+ # The refusal text.
109
+ #
110
+ # @param type [Symbol, :refusal]
111
+ end
112
+
113
+ # @!method self.variants
114
+ # @return [Array(OpenAI::Models::Live::DecisionAssistantMessage::Content::Part::OutputText, OpenAI::Models::Live::DecisionAssistantMessage::Content::Part::Refusal)]
115
+ end
116
+
117
+ # @!method self.variants
118
+ # @return [Array(String, Array<OpenAI::Models::Live::DecisionAssistantMessage::Content::Part::OutputText, OpenAI::Models::Live::DecisionAssistantMessage::Content::Part::Refusal>)]
119
+
120
+ # @type [OpenAI::Internal::Type::Converter]
121
+ PartsArray = OpenAI::Internal::Type::ArrayOf[
122
+ union: -> { OpenAI::Live::DecisionAssistantMessage::Content::Part }
123
+ ]
124
+ end
125
+
126
+ # Labels an `assistant` message as intermediate commentary (`commentary`) or the
127
+ # final answer (`final_answer`). For models like `gpt-5.3-codex` and beyond, when
128
+ # sending follow-up requests, preserve and resend phase on all assistant messages
129
+ # — dropping it can degrade performance. Not used for user messages.
130
+ #
131
+ # @see OpenAI::Models::Live::DecisionAssistantMessage#phase
132
+ module Phase
133
+ extend OpenAI::Internal::Type::Enum
134
+
135
+ COMMENTARY = :commentary
136
+ FINAL_ANSWER = :final_answer
137
+
138
+ # @!method self.values
139
+ # @return [Array<Symbol>]
140
+ end
141
+
142
+ # @see OpenAI::Models::Live::DecisionAssistantMessage#type
143
+ module Type
144
+ extend OpenAI::Internal::Type::Enum
145
+
146
+ MESSAGE = :message
147
+
148
+ # @!method self.values
149
+ # @return [Array<Symbol>]
150
+ end
151
+ end
152
+ end
153
+ end
154
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Live
6
+ class DecisionChoiceOption < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute value
8
+ #
9
+ # @return [String, Boolean]
10
+ required :value, union: -> { OpenAI::Live::DecisionChoiceOption::Value }
11
+
12
+ # @!attribute description
13
+ #
14
+ # @return [String, nil]
15
+ optional :description, String
16
+
17
+ # @!method initialize(value:, description: nil)
18
+ # @param value [String, Boolean]
19
+ # @param description [String]
20
+
21
+ # @see OpenAI::Models::Live::DecisionChoiceOption#value
22
+ module Value
23
+ extend OpenAI::Internal::Type::Union
24
+
25
+ variant String
26
+
27
+ variant OpenAI::Internal::Type::Boolean
28
+
29
+ # @!method self.variants
30
+ # @return [Array(String, Boolean)]
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Live
6
+ class DecisionDeveloperMessage < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute content
8
+ # The text input to the model.
9
+ #
10
+ # @return [String, Array<OpenAI::Models::Live::DecisionInputText>]
11
+ required :content, union: -> { OpenAI::Live::DecisionDeveloperMessage::Content }
12
+
13
+ # @!attribute role
14
+ #
15
+ # @return [Symbol, :developer]
16
+ required :role, const: :developer
17
+
18
+ # @!attribute id
19
+ # The unique ID of this message item.
20
+ #
21
+ # @return [String, nil]
22
+ optional :id, String, nil?: true
23
+
24
+ # @!attribute type
25
+ #
26
+ # @return [Symbol, OpenAI::Models::Live::DecisionDeveloperMessage::Type, nil]
27
+ optional :type, enum: -> { OpenAI::Live::DecisionDeveloperMessage::Type }
28
+
29
+ # @!method initialize(content:, id: nil, type: nil, role: :developer)
30
+ # @param content [String, Array<OpenAI::Models::Live::DecisionInputText>]
31
+ # The text input to the model.
32
+ #
33
+ # @param id [String, nil]
34
+ # The unique ID of this message item.
35
+ #
36
+ # @param type [Symbol, OpenAI::Models::Live::DecisionDeveloperMessage::Type]
37
+ #
38
+ # @param role [Symbol, :developer]
39
+
40
+ # The text input to the model.
41
+ #
42
+ # @see OpenAI::Models::Live::DecisionDeveloperMessage#content
43
+ module Content
44
+ extend OpenAI::Internal::Type::Union
45
+
46
+ # The text input to the model.
47
+ variant String
48
+
49
+ variant -> { OpenAI::Models::Live::DecisionDeveloperMessage::Content::DecisionInputTextArray }
50
+
51
+ # @!method self.variants
52
+ # @return [Array(String, Array<OpenAI::Models::Live::DecisionInputText>)]
53
+
54
+ # @type [OpenAI::Internal::Type::Converter]
55
+ DecisionInputTextArray = OpenAI::Internal::Type::ArrayOf[-> { OpenAI::Live::DecisionInputText }]
56
+ end
57
+
58
+ # @see OpenAI::Models::Live::DecisionDeveloperMessage#type
59
+ module Type
60
+ extend OpenAI::Internal::Type::Enum
61
+
62
+ MESSAGE = :message
63
+
64
+ # @!method self.values
65
+ # @return [Array<Symbol>]
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Live
6
+ class DecisionInputText < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute text
8
+ # The text input to the model.
9
+ #
10
+ # @return [String]
11
+ required :text, String
12
+
13
+ # @!attribute type
14
+ #
15
+ # @return [Symbol, :input_text]
16
+ required :type, const: :input_text
17
+
18
+ # @!method initialize(text:, type: :input_text)
19
+ # @param text [String]
20
+ # The text input to the model.
21
+ #
22
+ # @param type [Symbol, :input_text]
23
+ end
24
+ end
25
+ end
26
+ end