openai 0.88.0 → 0.89.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 (239) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/README.md +1 -1
  4. data/lib/openai/client.rb +4 -0
  5. data/lib/openai/models/beta/beta_response_input_item.rb +91 -1
  6. data/lib/openai/models/beta/beta_response_item.rb +93 -1
  7. data/lib/openai/models/beta/beta_response_output_item.rb +91 -1
  8. data/lib/openai/models/conversations/conversation_item.rb +91 -1
  9. data/lib/openai/models/live/audio_format.rb +109 -0
  10. data/lib/openai/models/live/built_in_voice.rb +38 -0
  11. data/lib/openai/models/live/client_config.rb +22 -0
  12. data/lib/openai/models/live/client_delegation.rb +22 -0
  13. data/lib/openai/models/live/client_event.rb +54 -0
  14. data/lib/openai/models/live/commentary_append_event.rb +59 -0
  15. data/lib/openai/models/live/commentary_appended_event.rb +65 -0
  16. data/lib/openai/models/live/custom_voice.rb +17 -0
  17. data/lib/openai/models/live/data_channel_config.rb +81 -0
  18. data/lib/openai/models/live/delegation_created_event.rb +140 -0
  19. data/lib/openai/models/live/error.rb +60 -0
  20. data/lib/openai/models/live/error_event.rb +52 -0
  21. data/lib/openai/models/live/fork_client_event.rb +53 -0
  22. data/lib/openai/models/live/fork_server_event.rb +295 -0
  23. data/lib/openai/models/live/fork_session_config.rb +107 -0
  24. data/lib/openai/models/live/fork_session_start_event.rb +48 -0
  25. data/lib/openai/models/live/function_tool.rb +60 -0
  26. data/lib/openai/models/live/info_event.rb +60 -0
  27. data/lib/openai/models/live/initial_item.rb +419 -0
  28. data/lib/openai/models/live/input_audio_append_event.rb +50 -0
  29. data/lib/openai/models/live/input_audio_mute_event.rb +33 -0
  30. data/lib/openai/models/live/input_audio_muted_event.rb +42 -0
  31. data/lib/openai/models/live/input_audio_unmute_event.rb +33 -0
  32. data/lib/openai/models/live/input_audio_unmuted_event.rb +42 -0
  33. data/lib/openai/models/live/input_transcript_delta_event.rb +76 -0
  34. data/lib/openai/models/live/instructions_append_event.rb +57 -0
  35. data/lib/openai/models/live/instructions_appended_event.rb +65 -0
  36. data/lib/openai/models/live/live_create_params.rb +57 -0
  37. data/lib/openai/models/live/live_create_response.rb +77 -0
  38. data/lib/openai/models/live/media_session_config.rb +227 -0
  39. data/lib/openai/models/live/media_session_fork_config.rb +75 -0
  40. data/lib/openai/models/live/output_audio_delta_event.rb +58 -0
  41. data/lib/openai/models/live/output_transcript_delta_event.rb +76 -0
  42. data/lib/openai/models/live/response_create_event.rb +33 -0
  43. data/lib/openai/models/live/response_event.rb +67 -0
  44. data/lib/openai/models/live/response_item_create_event.rb +44 -0
  45. data/lib/openai/models/live/responses_delegation_config.rb +332 -0
  46. data/lib/openai/models/live/responses_delegation_update_config.rb +332 -0
  47. data/lib/openai/models/live/server_event.rb +295 -0
  48. data/lib/openai/models/live/server_event_selector.rb +32 -0
  49. data/lib/openai/models/live/session_accept_params.rb +257 -0
  50. data/lib/openai/models/live/session_close_event.rb +33 -0
  51. data/lib/openai/models/live/session_closed_event.rb +113 -0
  52. data/lib/openai/models/live/session_config.rb +236 -0
  53. data/lib/openai/models/live/session_download_recording_params.rb +27 -0
  54. data/lib/openai/models/live/session_fork_params.rb +66 -0
  55. data/lib/openai/models/live/session_fork_response.rb +77 -0
  56. data/lib/openai/models/live/session_hangup_params.rb +22 -0
  57. data/lib/openai/models/live/session_refer_params.rb +34 -0
  58. data/lib/openai/models/live/session_reject_params.rb +32 -0
  59. data/lib/openai/models/live/session_resource.rb +268 -0
  60. data/lib/openai/models/live/session_start_event.rb +46 -0
  61. data/lib/openai/models/live/session_started_event.rb +51 -0
  62. data/lib/openai/models/live/session_update_config.rb +69 -0
  63. data/lib/openai/models/live/session_update_event.rb +46 -0
  64. data/lib/openai/models/live/session_updated_event.rb +51 -0
  65. data/lib/openai/models/live/session_usage.rb +24 -0
  66. data/lib/openai/models/live/session_usage_updated_event.rb +81 -0
  67. data/lib/openai/models/live/thinking_append_event.rb +59 -0
  68. data/lib/openai/models/live/thinking_appended_event.rb +65 -0
  69. data/lib/openai/models/responses/response_input_item.rb +91 -1
  70. data/lib/openai/models/responses/response_item.rb +93 -1
  71. data/lib/openai/models/responses/response_output_item.rb +91 -1
  72. data/lib/openai/models/webhooks/live_call_incoming_webhook_event.rb +12 -7
  73. data/lib/openai/models/webhooks/live_transport_incoming_webhook_event.rb +137 -0
  74. data/lib/openai/models/webhooks/realtime_call_incoming_webhook_event.rb +4 -4
  75. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +9 -2
  76. data/lib/openai/models.rb +2 -0
  77. data/lib/openai/resources/live/forks.rb +16 -0
  78. data/lib/openai/resources/live/sessions.rb +180 -0
  79. data/lib/openai/resources/live/sideband.rb +16 -0
  80. data/lib/openai/resources/live.rb +54 -0
  81. data/lib/openai/resources/webhooks.rb +1 -1
  82. data/lib/openai/version.rb +1 -1
  83. data/lib/openai.rb +65 -0
  84. data/rbi/openai/client.rbi +3 -0
  85. data/rbi/openai/models/beta/beta_response_input_item.rbi +109 -0
  86. data/rbi/openai/models/beta/beta_response_item.rbi +105 -0
  87. data/rbi/openai/models/beta/beta_response_output_item.rbi +119 -0
  88. data/rbi/openai/models/conversations/conversation_item.rbi +133 -0
  89. data/rbi/openai/models/live/audio_format.rbi +185 -0
  90. data/rbi/openai/models/live/built_in_voice.rbi +46 -0
  91. data/rbi/openai/models/live/client_config.rbi +54 -0
  92. data/rbi/openai/models/live/client_delegation.rbi +51 -0
  93. data/rbi/openai/models/live/client_event.rbi +41 -0
  94. data/rbi/openai/models/live/commentary_append_event.rbi +88 -0
  95. data/rbi/openai/models/live/commentary_appended_event.rbi +97 -0
  96. data/rbi/openai/models/live/custom_voice.rbi +46 -0
  97. data/rbi/openai/models/live/data_channel_config.rbi +119 -0
  98. data/rbi/openai/models/live/delegation_created_event.rbi +207 -0
  99. data/rbi/openai/models/live/error.rbi +95 -0
  100. data/rbi/openai/models/live/error_event.rbi +87 -0
  101. data/rbi/openai/models/live/fork_client_event.rbi +40 -0
  102. data/rbi/openai/models/live/fork_server_event.rbi +436 -0
  103. data/rbi/openai/models/live/fork_session_config.rbi +234 -0
  104. data/rbi/openai/models/live/fork_session_start_event.rbi +80 -0
  105. data/rbi/openai/models/live/function_tool.rbi +95 -0
  106. data/rbi/openai/models/live/info_event.rbi +92 -0
  107. data/rbi/openai/models/live/initial_item.rbi +661 -0
  108. data/rbi/openai/models/live/input_audio_append_event.rbi +79 -0
  109. data/rbi/openai/models/live/input_audio_mute_event.rbi +62 -0
  110. data/rbi/openai/models/live/input_audio_muted_event.rbi +74 -0
  111. data/rbi/openai/models/live/input_audio_unmute_event.rbi +62 -0
  112. data/rbi/openai/models/live/input_audio_unmuted_event.rbi +74 -0
  113. data/rbi/openai/models/live/input_transcript_delta_event.rbi +115 -0
  114. data/rbi/openai/models/live/instructions_append_event.rbi +86 -0
  115. data/rbi/openai/models/live/instructions_appended_event.rbi +97 -0
  116. data/rbi/openai/models/live/live_create_params.rbi +121 -0
  117. data/rbi/openai/models/live/live_create_response.rbi +160 -0
  118. data/rbi/openai/models/live/media_session_config.rbi +390 -0
  119. data/rbi/openai/models/live/media_session_fork_config.rbi +143 -0
  120. data/rbi/openai/models/live/output_audio_delta_event.rbi +93 -0
  121. data/rbi/openai/models/live/output_transcript_delta_event.rbi +115 -0
  122. data/rbi/openai/models/live/response_create_event.rbi +62 -0
  123. data/rbi/openai/models/live/response_event.rbi +105 -0
  124. data/rbi/openai/models/live/response_item_create_event.rbi +183 -0
  125. data/rbi/openai/models/live/responses_delegation_config.rbi +562 -0
  126. data/rbi/openai/models/live/responses_delegation_update_config.rbi +585 -0
  127. data/rbi/openai/models/live/server_event.rbi +436 -0
  128. data/rbi/openai/models/live/server_event_selector.rbi +64 -0
  129. data/rbi/openai/models/live/session_accept_params.rbi +451 -0
  130. data/rbi/openai/models/live/session_close_event.rbi +62 -0
  131. data/rbi/openai/models/live/session_closed_event.rbi +148 -0
  132. data/rbi/openai/models/live/session_config.rbi +427 -0
  133. data/rbi/openai/models/live/session_download_recording_params.rbi +57 -0
  134. data/rbi/openai/models/live/session_fork_params.rbi +131 -0
  135. data/rbi/openai/models/live/session_fork_response.rbi +160 -0
  136. data/rbi/openai/models/live/session_hangup_params.rbi +53 -0
  137. data/rbi/openai/models/live/session_refer_params.rbi +64 -0
  138. data/rbi/openai/models/live/session_reject_params.rbi +62 -0
  139. data/rbi/openai/models/live/session_resource.rbi +461 -0
  140. data/rbi/openai/models/live/session_start_event.rbi +78 -0
  141. data/rbi/openai/models/live/session_started_event.rbi +86 -0
  142. data/rbi/openai/models/live/session_update_config.rbi +134 -0
  143. data/rbi/openai/models/live/session_update_event.rbi +78 -0
  144. data/rbi/openai/models/live/session_updated_event.rbi +86 -0
  145. data/rbi/openai/models/live/session_usage.rbi +53 -0
  146. data/rbi/openai/models/live/session_usage_updated_event.rbi +148 -0
  147. data/rbi/openai/models/live/thinking_append_event.rbi +88 -0
  148. data/rbi/openai/models/live/thinking_appended_event.rbi +97 -0
  149. data/rbi/openai/models/responses/response_input_item.rbi +113 -0
  150. data/rbi/openai/models/responses/response_item.rbi +105 -0
  151. data/rbi/openai/models/responses/response_output_item.rbi +125 -0
  152. data/rbi/openai/models/webhooks/live_call_incoming_webhook_event.rbi +11 -7
  153. data/rbi/openai/models/webhooks/live_transport_incoming_webhook_event.rbi +226 -0
  154. data/rbi/openai/models/webhooks/realtime_call_incoming_webhook_event.rbi +4 -4
  155. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +1 -0
  156. data/rbi/openai/models.rbi +2 -0
  157. data/rbi/openai/resources/live/forks.rbi +19 -0
  158. data/rbi/openai/resources/live/sessions.rbi +110 -0
  159. data/rbi/openai/resources/live/sideband.rbi +19 -0
  160. data/rbi/openai/resources/live.rbi +43 -0
  161. data/rbi/openai/resources/responses.rbi +75 -38
  162. data/rbi/openai/resources/webhooks.rbi +1 -0
  163. data/sig/openai/client.rbs +2 -0
  164. data/sig/openai/models/beta/beta_response_input_item.rbs +56 -0
  165. data/sig/openai/models/beta/beta_response_item.rbs +56 -0
  166. data/sig/openai/models/beta/beta_response_output_item.rbs +56 -0
  167. data/sig/openai/models/conversations/conversation_item.rbs +56 -0
  168. data/sig/openai/models/live/audio_format.rbs +73 -0
  169. data/sig/openai/models/live/built_in_voice.rbs +58 -0
  170. data/sig/openai/models/live/client_config.rbs +15 -0
  171. data/sig/openai/models/live/client_delegation.rbs +15 -0
  172. data/sig/openai/models/live/client_event.rbs +24 -0
  173. data/sig/openai/models/live/commentary_append_event.rbs +37 -0
  174. data/sig/openai/models/live/commentary_appended_event.rbs +44 -0
  175. data/sig/openai/models/live/custom_voice.rbs +15 -0
  176. data/sig/openai/models/live/data_channel_config.rbs +56 -0
  177. data/sig/openai/models/live/delegation_created_event.rbs +89 -0
  178. data/sig/openai/models/live/error.rbs +46 -0
  179. data/sig/openai/models/live/error_event.rbs +39 -0
  180. data/sig/openai/models/live/fork_client_event.rbs +24 -0
  181. data/sig/openai/models/live/fork_server_event.rbs +212 -0
  182. data/sig/openai/models/live/fork_session_config.rbs +89 -0
  183. data/sig/openai/models/live/fork_session_start_event.rbs +32 -0
  184. data/sig/openai/models/live/function_tool.rbs +42 -0
  185. data/sig/openai/models/live/info_event.rbs +44 -0
  186. data/sig/openai/models/live/initial_item.rbs +332 -0
  187. data/sig/openai/models/live/input_audio_append_event.rbs +32 -0
  188. data/sig/openai/models/live/input_audio_mute_event.rbs +24 -0
  189. data/sig/openai/models/live/input_audio_muted_event.rbs +34 -0
  190. data/sig/openai/models/live/input_audio_unmute_event.rbs +24 -0
  191. data/sig/openai/models/live/input_audio_unmuted_event.rbs +34 -0
  192. data/sig/openai/models/live/input_transcript_delta_event.rbs +49 -0
  193. data/sig/openai/models/live/instructions_append_event.rbs +37 -0
  194. data/sig/openai/models/live/instructions_appended_event.rbs +44 -0
  195. data/sig/openai/models/live/live_create_params.rbs +45 -0
  196. data/sig/openai/models/live/live_create_response.rbs +49 -0
  197. data/sig/openai/models/live/media_session_config.rbs +157 -0
  198. data/sig/openai/models/live/media_session_fork_config.rbs +66 -0
  199. data/sig/openai/models/live/output_audio_delta_event.rbs +41 -0
  200. data/sig/openai/models/live/output_transcript_delta_event.rbs +49 -0
  201. data/sig/openai/models/live/response_create_event.rbs +18 -0
  202. data/sig/openai/models/live/response_event.rbs +44 -0
  203. data/sig/openai/models/live/response_item_create_event.rbs +32 -0
  204. data/sig/openai/models/live/responses_delegation_config.rbs +244 -0
  205. data/sig/openai/models/live/responses_delegation_update_config.rbs +246 -0
  206. data/sig/openai/models/live/server_event.rbs +212 -0
  207. data/sig/openai/models/live/server_event_selector.rbs +19 -0
  208. data/sig/openai/models/live/session_accept_params.rbs +185 -0
  209. data/sig/openai/models/live/session_close_event.rbs +17 -0
  210. data/sig/openai/models/live/session_closed_event.rbs +68 -0
  211. data/sig/openai/models/live/session_config.rbs +168 -0
  212. data/sig/openai/models/live/session_download_recording_params.rbs +25 -0
  213. data/sig/openai/models/live/session_fork_params.rbs +54 -0
  214. data/sig/openai/models/live/session_fork_response.rbs +49 -0
  215. data/sig/openai/models/live/session_hangup_params.rbs +25 -0
  216. data/sig/openai/models/live/session_refer_params.rbs +33 -0
  217. data/sig/openai/models/live/session_reject_params.rbs +33 -0
  218. data/sig/openai/models/live/session_resource.rbs +183 -0
  219. data/sig/openai/models/live/session_start_event.rbs +32 -0
  220. data/sig/openai/models/live/session_started_event.rbs +39 -0
  221. data/sig/openai/models/live/session_update_config.rbs +56 -0
  222. data/sig/openai/models/live/session_update_event.rbs +32 -0
  223. data/sig/openai/models/live/session_updated_event.rbs +39 -0
  224. data/sig/openai/models/live/session_usage.rbs +15 -0
  225. data/sig/openai/models/live/session_usage_updated_event.rbs +58 -0
  226. data/sig/openai/models/live/thinking_append_event.rbs +37 -0
  227. data/sig/openai/models/live/thinking_appended_event.rbs +44 -0
  228. data/sig/openai/models/responses/response_input_item.rbs +56 -0
  229. data/sig/openai/models/responses/response_item.rbs +56 -0
  230. data/sig/openai/models/responses/response_output_item.rbs +56 -0
  231. data/sig/openai/models/webhooks/live_transport_incoming_webhook_event.rbs +95 -0
  232. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +1 -0
  233. data/sig/openai/models.rbs +2 -0
  234. data/sig/openai/resources/live/forks.rbs +9 -0
  235. data/sig/openai/resources/live/sessions.rbs +44 -0
  236. data/sig/openai/resources/live/sideband.rbs +9 -0
  237. data/sig/openai/resources/live.rbs +19 -0
  238. data/sig/openai/resources/webhooks.rbs +1 -0
  239. metadata +196 -1
@@ -0,0 +1,332 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Live
6
+ class ResponsesDelegationUpdateConfig < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute instructions
8
+ # Instructions for the delegated Responses model, separate from Live instructions.
9
+ # See
10
+ # [backend prompting](https://developers.openai.com/api/docs/guides/live-delegation#start-with-your-existing-backend-prompt).
11
+ #
12
+ # @return [String, nil]
13
+ optional :instructions, String, nil?: true
14
+
15
+ # @!attribute max_output_tokens
16
+ # Maximum number of output tokens for each delegated response.
17
+ #
18
+ # @return [Integer, nil]
19
+ optional :max_output_tokens, Integer, nil?: true
20
+
21
+ # @!attribute model
22
+ # The Responses backend model to use for subsequent delegated requests. Omit to
23
+ # keep the current backend model.
24
+ #
25
+ # @return [String, nil]
26
+ optional :model, String
27
+
28
+ # @!attribute parallel_tool_calls
29
+ # Whether the delegated Responses model may request multiple tool calls in a
30
+ # single response.
31
+ #
32
+ # @return [Boolean, nil]
33
+ optional :parallel_tool_calls, OpenAI::Internal::Type::Boolean, nil?: true
34
+
35
+ # @!attribute reasoning
36
+ # Reasoning settings passed to each delegated Responses request.
37
+ #
38
+ # @return [OpenAI::Models::Live::ResponsesDelegationUpdateConfig::Reasoning, nil]
39
+ optional :reasoning, -> { OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning }, nil?: true
40
+
41
+ # @!attribute service_tier
42
+ # Service tier for delegated Responses requests.
43
+ #
44
+ # @return [Symbol, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::ServiceTier, nil]
45
+ optional(
46
+ :service_tier,
47
+ enum: -> { OpenAI::Live::ResponsesDelegationUpdateConfig::ServiceTier },
48
+ nil?: true
49
+ )
50
+
51
+ # @!attribute text
52
+ # Text generation settings passed to each delegated Responses request.
53
+ #
54
+ # @return [OpenAI::Models::Live::ResponsesDelegationUpdateConfig::Text, nil]
55
+ optional :text, -> { OpenAI::Live::ResponsesDelegationUpdateConfig::Text }, nil?: true
56
+
57
+ # @!attribute tool_choice
58
+ # Controls which tool the Responses backend uses when handling a task delegated by
59
+ # the Live model.
60
+ #
61
+ # @return [Symbol, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveToolChoiceEnum, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveFunctionToolChoiceParam, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveMCPToolChoiceParam, nil]
62
+ optional :tool_choice, union: -> { OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice }
63
+
64
+ # @!attribute tools
65
+ # Tools available to the Responses backend while it handles tasks delegated by the
66
+ # Live model.
67
+ #
68
+ # @return [Array<OpenAI::Models::Live::FunctionTool, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::Tool::WebSearch>, nil]
69
+ optional(
70
+ :tools,
71
+ -> { OpenAI::Internal::Type::ArrayOf[union: OpenAI::Live::ResponsesDelegationUpdateConfig::Tool] }
72
+ )
73
+
74
+ # @!method initialize(instructions: nil, max_output_tokens: nil, model: nil, parallel_tool_calls: nil, reasoning: nil, service_tier: nil, text: nil, tool_choice: nil, tools: nil)
75
+ # Updates to the Responses backend of an existing Live session. Omitted settings
76
+ # retain their current values.
77
+ #
78
+ # @param instructions [String, nil]
79
+ # Instructions for the delegated Responses model, separate from Live instructions.
80
+ # See
81
+ # [backend prompting](https://developers.openai.com/api/docs/guides/live-delegation#start-with-your-existing-backend-prompt).
82
+ #
83
+ # @param max_output_tokens [Integer, nil]
84
+ # Maximum number of output tokens for each delegated response.
85
+ #
86
+ # @param model [String]
87
+ # The Responses backend model to use for subsequent delegated requests. Omit to
88
+ # keep the current backend model.
89
+ #
90
+ # @param parallel_tool_calls [Boolean, nil]
91
+ # Whether the delegated Responses model may request multiple tool calls in a
92
+ # single response.
93
+ #
94
+ # @param reasoning [OpenAI::Models::Live::ResponsesDelegationUpdateConfig::Reasoning, nil]
95
+ # Reasoning settings passed to each delegated Responses request.
96
+ #
97
+ # @param service_tier [Symbol, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::ServiceTier, nil]
98
+ # Service tier for delegated Responses requests.
99
+ #
100
+ # @param text [OpenAI::Models::Live::ResponsesDelegationUpdateConfig::Text, nil]
101
+ # Text generation settings passed to each delegated Responses request.
102
+ #
103
+ # @param tool_choice [Symbol, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveToolChoiceEnum, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveFunctionToolChoiceParam, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveMCPToolChoiceParam]
104
+ # Controls which tool the Responses backend uses when handling a task delegated by
105
+ # the Live model.
106
+ #
107
+ # @param tools [Array<OpenAI::Models::Live::FunctionTool, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::Tool::WebSearch>]
108
+ # Tools available to the Responses backend while it handles tasks delegated by the
109
+ # Live model.
110
+
111
+ # @see OpenAI::Models::Live::ResponsesDelegationUpdateConfig#reasoning
112
+ class Reasoning < OpenAI::Internal::Type::BaseModel
113
+ # @!attribute effort
114
+ # How much reasoning effort the delegated Responses model should use. Supported
115
+ # values depend on the backend model.
116
+ #
117
+ # @return [Symbol, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::Reasoning::Effort, nil]
118
+ optional(
119
+ :effort,
120
+ enum: -> { OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Effort },
121
+ nil?: true
122
+ )
123
+
124
+ # @!attribute summary
125
+ # The reasoning summary to request from the delegated Responses model, when
126
+ # supported.
127
+ #
128
+ # @return [Symbol, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::Reasoning::Summary, nil]
129
+ optional(
130
+ :summary,
131
+ enum: -> { OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Summary },
132
+ nil?: true
133
+ )
134
+
135
+ # @!method initialize(effort: nil, summary: nil)
136
+ # Reasoning settings passed to each delegated Responses request.
137
+ #
138
+ # @param effort [Symbol, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::Reasoning::Effort, nil]
139
+ # How much reasoning effort the delegated Responses model should use. Supported
140
+ # values depend on the backend model.
141
+ #
142
+ # @param summary [Symbol, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::Reasoning::Summary, nil]
143
+ # The reasoning summary to request from the delegated Responses model, when
144
+ # supported.
145
+
146
+ # How much reasoning effort the delegated Responses model should use. Supported
147
+ # values depend on the backend model.
148
+ #
149
+ # @see OpenAI::Models::Live::ResponsesDelegationUpdateConfig::Reasoning#effort
150
+ module Effort
151
+ extend OpenAI::Internal::Type::Enum
152
+
153
+ NONE = :none
154
+ MINIMAL = :minimal
155
+ LOW = :low
156
+ MEDIUM = :medium
157
+ HIGH = :high
158
+ XHIGH = :xhigh
159
+
160
+ # @!method self.values
161
+ # @return [Array<Symbol>]
162
+ end
163
+
164
+ # The reasoning summary to request from the delegated Responses model, when
165
+ # supported.
166
+ #
167
+ # @see OpenAI::Models::Live::ResponsesDelegationUpdateConfig::Reasoning#summary
168
+ module Summary
169
+ extend OpenAI::Internal::Type::Enum
170
+
171
+ CONCISE = :concise
172
+ DETAILED = :detailed
173
+ AUTO = :auto
174
+
175
+ # @!method self.values
176
+ # @return [Array<Symbol>]
177
+ end
178
+ end
179
+
180
+ # Service tier for delegated Responses requests.
181
+ #
182
+ # @see OpenAI::Models::Live::ResponsesDelegationUpdateConfig#service_tier
183
+ module ServiceTier
184
+ extend OpenAI::Internal::Type::Enum
185
+
186
+ AUTO = :auto
187
+ DEFAULT = :default
188
+ FAST_TIER_TEMP_PILOT = :fast_tier_temp_pilot
189
+ FLEX = :flex
190
+ PRIORITY = :priority
191
+ ULTRAFAST = :ultrafast
192
+
193
+ # @!method self.values
194
+ # @return [Array<Symbol>]
195
+ end
196
+
197
+ # @see OpenAI::Models::Live::ResponsesDelegationUpdateConfig#text
198
+ class Text < OpenAI::Internal::Type::BaseModel
199
+ # @!attribute verbosity
200
+ # The amount of detail in text generated by the Responses backend. This does not
201
+ # configure the Live model’s spoken delivery.
202
+ #
203
+ # @return [Symbol, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::Text::Verbosity, nil]
204
+ optional(
205
+ :verbosity,
206
+ enum: -> { OpenAI::Live::ResponsesDelegationUpdateConfig::Text::Verbosity },
207
+ nil?: true
208
+ )
209
+
210
+ # @!method initialize(verbosity: nil)
211
+ # Text generation settings passed to each delegated Responses request.
212
+ #
213
+ # @param verbosity [Symbol, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::Text::Verbosity, nil]
214
+ # The amount of detail in text generated by the Responses backend. This does not
215
+ # configure the Live model’s spoken delivery.
216
+
217
+ # The amount of detail in text generated by the Responses backend. This does not
218
+ # configure the Live model’s spoken delivery.
219
+ #
220
+ # @see OpenAI::Models::Live::ResponsesDelegationUpdateConfig::Text#verbosity
221
+ module Verbosity
222
+ extend OpenAI::Internal::Type::Enum
223
+
224
+ LOW = :low
225
+ MEDIUM = :medium
226
+ HIGH = :high
227
+
228
+ # @!method self.values
229
+ # @return [Array<Symbol>]
230
+ end
231
+ end
232
+
233
+ # Controls which tool the Responses backend uses when handling a task delegated by
234
+ # the Live model.
235
+ #
236
+ # @see OpenAI::Models::Live::ResponsesDelegationUpdateConfig#tool_choice
237
+ module ToolChoice
238
+ extend OpenAI::Internal::Type::Union
239
+
240
+ variant enum: -> { OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveToolChoiceEnum }
241
+
242
+ variant -> { OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveFunctionToolChoiceParam }
243
+
244
+ variant -> { OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveMCPToolChoiceParam }
245
+
246
+ module LiveToolChoiceEnum
247
+ extend OpenAI::Internal::Type::Enum
248
+
249
+ AUTO = :auto
250
+ NONE = :none
251
+ REQUIRED = :required
252
+
253
+ # @!method self.values
254
+ # @return [Array<Symbol>]
255
+ end
256
+
257
+ class LiveFunctionToolChoiceParam < OpenAI::Internal::Type::BaseModel
258
+ # @!attribute name
259
+ #
260
+ # @return [String]
261
+ required :name, String
262
+
263
+ # @!attribute type
264
+ #
265
+ # @return [Symbol, :function]
266
+ required :type, const: :function
267
+
268
+ # @!method initialize(name:, type: :function)
269
+ # @param name [String]
270
+ # @param type [Symbol, :function]
271
+ end
272
+
273
+ class LiveMCPToolChoiceParam < OpenAI::Internal::Type::BaseModel
274
+ # @!attribute name
275
+ #
276
+ # @return [String]
277
+ required :name, String
278
+
279
+ # @!attribute server_label
280
+ #
281
+ # @return [String]
282
+ required :server_label, String
283
+
284
+ # @!attribute type
285
+ #
286
+ # @return [Symbol, :mcp]
287
+ required :type, const: :mcp
288
+
289
+ # @!method initialize(name:, server_label:, type: :mcp)
290
+ # @param name [String]
291
+ # @param server_label [String]
292
+ # @param type [Symbol, :mcp]
293
+ end
294
+
295
+ # @!method self.variants
296
+ # @return [Array(Symbol, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveToolChoiceEnum, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveFunctionToolChoiceParam, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveMCPToolChoiceParam)]
297
+ end
298
+
299
+ # A function tool available to the Responses backend when the Live model delegates
300
+ # a task.
301
+ module Tool
302
+ extend OpenAI::Internal::Type::Union
303
+
304
+ discriminator :type
305
+
306
+ # A function tool available to the Responses backend when the Live model delegates a task.
307
+ variant :function, -> { OpenAI::Live::FunctionTool }
308
+
309
+ # A web search tool available to the Live session’s Responses backend.
310
+ variant :web_search, -> { OpenAI::Live::ResponsesDelegationUpdateConfig::Tool::WebSearch }
311
+
312
+ class WebSearch < OpenAI::Internal::Type::BaseModel
313
+ # @!attribute type
314
+ # The tool type. Always `web_search`.
315
+ #
316
+ # @return [Symbol, :web_search]
317
+ required :type, const: :web_search
318
+
319
+ # @!method initialize(type: :web_search)
320
+ # A web search tool available to the Live session’s Responses backend.
321
+ #
322
+ # @param type [Symbol, :web_search]
323
+ # The tool type. Always `web_search`.
324
+ end
325
+
326
+ # @!method self.variants
327
+ # @return [Array(OpenAI::Models::Live::FunctionTool, OpenAI::Models::Live::ResponsesDelegationUpdateConfig::Tool::WebSearch)]
328
+ end
329
+ end
330
+ end
331
+ end
332
+ end
@@ -0,0 +1,295 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Live
6
+ # Server events for Live. Response lifecycle events are wrapped inside
7
+ # response.event; dispatch the nested event by its full type and tolerate new
8
+ # response event types. Follow the
9
+ # [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting)
10
+ # when designing the conversation and delegation policy.
11
+ module ServerEvent
12
+ extend OpenAI::Internal::Type::Union
13
+
14
+ discriminator :type
15
+
16
+ # Returned when a Live session has started. Contains the resolved session configuration, including server defaults.
17
+ variant :"session.started", -> { OpenAI::Live::SessionStartedEvent }
18
+
19
+ # Returned when a Live session update is accepted. Contains the resolved session configuration after the update.
20
+ variant :"session.updated", -> { OpenAI::Live::SessionUpdatedEvent }
21
+
22
+ # Returned when a session.input_audio.mute command is accepted. Input audio is no longer sent to the model; sideband audio reflection continues.
23
+ variant :"session.input_audio.muted", -> { OpenAI::Live::InputAudioMutedEvent }
24
+
25
+ # Returned when a session.input_audio.unmute command is accepted. Input audio is sent to the model again.
26
+ variant :"session.input_audio.unmuted", -> { OpenAI::Live::InputAudioUnmutedEvent }
27
+
28
+ # Returned when a session.instructions.append command is accepted into the Live session timeline. Acknowledges the appended instructions without guaranteeing that the model has acted on them.
29
+ variant :"session.instructions.appended", -> { OpenAI::Live::InstructionsAppendedEvent }
30
+
31
+ # Returned when a session.thinking.append command is accepted into the Live session timeline. Acknowledges the added reasoning context without guaranteeing any spoken output.
32
+ variant :"session.thinking.appended", -> { OpenAI::Live::ThinkingAppendedEvent }
33
+
34
+ # Returned when a session.commentary.append command is accepted into the Live session timeline. Acknowledges the added commentary without guaranteeing exact wording or completed audio playback.
35
+ variant :"session.commentary.appended", -> { OpenAI::Live::CommentaryAppendedEvent }
36
+
37
+ # Input audio received from the primary transport and reflected to a Live sideband connection before model-input muting.
38
+ variant :"session.input_audio.append", -> { OpenAI::Live::ServerEvent::SessionInputAudioAppend }
39
+
40
+ # An audio chunk generated by the Live model. Decode and play primary WebSocket chunks in delivery order using the configured session audio format. Sideband connections receive reflected output audio with timestamps.
41
+ variant :"session.output_audio.delta", -> { OpenAI::Live::OutputAudioDeltaEvent }
42
+
43
+ # A transcript fragment for user input audio in the Live session. Accumulate fragments in delivery order; these events do not define complete turns or include a transcript-done event.
44
+ variant :"session.input_transcript.delta", -> { OpenAI::Live::InputTranscriptDeltaEvent }
45
+
46
+ # A transcript fragment for assistant output audio in the Live session. Accumulate fragments in delivery order; these events do not define complete turns or include a transcript-done event.
47
+ variant :"session.output_transcript.delta", -> { OpenAI::Live::OutputTranscriptDeltaEvent }
48
+
49
+ # Returned when the Live model delegates work to your application or a Responses backend. Contains delegation metadata and the position on the session timeline where the work was delegated.
50
+ variant :"session.delegation.created", -> { OpenAI::Live::DelegationCreatedEvent }
51
+
52
+ # A streaming Responses API event from a backend delegated to by the Live session. Use the outer delegation_id to associate the nested stream with its Live delegation.
53
+ variant :"response.event", -> { OpenAI::Live::ResponseEvent }
54
+
55
+ # Reports cumulative Live audio usage and, when available, the most recent context-window usage. Delegated Responses token usage is reported separately in response.event events.
56
+ variant :"session.usage.updated", -> { OpenAI::Live::SessionUsageUpdatedEvent }
57
+
58
+ # Returned after the Live session finishes finalizing, with the close reason, final session snapshot, and cumulative audio usage. A connection closing without this event does not confirm successful finalization.
59
+ variant :"session.closed", -> { OpenAI::Live::SessionClosedEvent }
60
+
61
+ # Reports an error in the Live session, such as an invalid client command. Use error.client_event_id, when present, to identify the command that caused the error.
62
+ variant :error, -> { OpenAI::Live::ErrorEvent }
63
+
64
+ # An informational notice about the Live session, such as the event permissions applied to a frontend data channel.
65
+ variant :info, -> { OpenAI::Live::InfoEvent }
66
+
67
+ # A SIP DTMF keypress received from the caller. Delivered only to sideband observers.
68
+ variant :"transport.dtmf.received", -> { OpenAI::Live::ServerEvent::TransportDtmfReceived }
69
+
70
+ # A SIP DTMF keypress successfully sent by the hosted tool. Delivered only to sideband observers; this is not a client command.
71
+ variant :"transport.dtmf.send", -> { OpenAI::Live::ServerEvent::TransportDtmfSend }
72
+
73
+ # The outbound SIP provider leg is ringing or providing early media. Delivered only to sideband observers.
74
+ variant :"transport.ringing", -> { OpenAI::Live::ServerEvent::TransportRinging }
75
+
76
+ # The outbound SIP provider leg answered and media is established. Delivered only to sideband observers.
77
+ variant :"transport.answered", -> { OpenAI::Live::ServerEvent::TransportAnswered }
78
+
79
+ # An asynchronous outbound SIP setup failure. Delivered only to sideband observers.
80
+ variant :"transport.failed", -> { OpenAI::Live::ServerEvent::TransportFailed }
81
+
82
+ class SessionInputAudioAppend < OpenAI::Internal::Type::BaseModel
83
+ # @!attribute audio
84
+ # Base64-encoded raw mono PCM16LE at 24 kHz received from the primary transport,
85
+ # reflected to the sideband before model-input muting. This server event uses the
86
+ # same audio key as the client command, but is not an acknowledgment of it.
87
+ #
88
+ # @return [String]
89
+ required :audio, String
90
+
91
+ # @!attribute type
92
+ # The event type, always `session.input_audio.append`.
93
+ #
94
+ # @return [Symbol, :"session.input_audio.append"]
95
+ required :type, const: :"session.input_audio.append"
96
+
97
+ # @!method initialize(audio:, type: :"session.input_audio.append")
98
+ # Input audio received from the primary transport and reflected to a Live sideband
99
+ # connection before model-input muting.
100
+ #
101
+ # @param audio [String]
102
+ # Base64-encoded raw mono PCM16LE at 24 kHz received from the primary transport,
103
+ # reflected to the sideband before model-input muting. This server event uses the
104
+ # same audio key as the client command, but is not an acknowledgment of it.
105
+ #
106
+ # @param type [Symbol, :"session.input_audio.append"]
107
+ # The event type, always `session.input_audio.append`.
108
+ end
109
+
110
+ class TransportDtmfReceived < OpenAI::Internal::Type::BaseModel
111
+ # @!attribute event
112
+ #
113
+ # @return [String]
114
+ required :event, String
115
+
116
+ # @!attribute event_id
117
+ #
118
+ # @return [String]
119
+ required :event_id, String
120
+
121
+ # @!attribute type
122
+ #
123
+ # @return [Symbol, :"transport.dtmf.received"]
124
+ required :type, const: :"transport.dtmf.received"
125
+
126
+ # @!method initialize(event:, event_id:, type: :"transport.dtmf.received")
127
+ # A SIP DTMF keypress received from the caller. Delivered only to sideband
128
+ # observers.
129
+ #
130
+ # @param event [String]
131
+ # @param event_id [String]
132
+ # @param type [Symbol, :"transport.dtmf.received"]
133
+ end
134
+
135
+ class TransportDtmfSend < OpenAI::Internal::Type::BaseModel
136
+ # @!attribute event
137
+ #
138
+ # @return [String]
139
+ required :event, String
140
+
141
+ # @!attribute event_id
142
+ #
143
+ # @return [String]
144
+ required :event_id, String
145
+
146
+ # @!attribute type
147
+ #
148
+ # @return [Symbol, :"transport.dtmf.send"]
149
+ required :type, const: :"transport.dtmf.send"
150
+
151
+ # @!method initialize(event:, event_id:, type: :"transport.dtmf.send")
152
+ # A SIP DTMF keypress successfully sent by the hosted tool. Delivered only to
153
+ # sideband observers; this is not a client command.
154
+ #
155
+ # @param event [String]
156
+ # @param event_id [String]
157
+ # @param type [Symbol, :"transport.dtmf.send"]
158
+ end
159
+
160
+ class TransportRinging < OpenAI::Internal::Type::BaseModel
161
+ # @!attribute event_id
162
+ #
163
+ # @return [String]
164
+ required :event_id, String
165
+
166
+ # @!attribute session_id
167
+ # The canonical Live session ID.
168
+ #
169
+ # @return [String]
170
+ required :session_id, String
171
+
172
+ # @!attribute type
173
+ #
174
+ # @return [Symbol, :"transport.ringing"]
175
+ required :type, const: :"transport.ringing"
176
+
177
+ # @!method initialize(event_id:, session_id:, type: :"transport.ringing")
178
+ # The outbound SIP provider leg is ringing or providing early media. Delivered
179
+ # only to sideband observers.
180
+ #
181
+ # @param event_id [String]
182
+ #
183
+ # @param session_id [String]
184
+ # The canonical Live session ID.
185
+ #
186
+ # @param type [Symbol, :"transport.ringing"]
187
+ end
188
+
189
+ class TransportAnswered < OpenAI::Internal::Type::BaseModel
190
+ # @!attribute event_id
191
+ #
192
+ # @return [String]
193
+ required :event_id, String
194
+
195
+ # @!attribute session_id
196
+ # The canonical Live session ID.
197
+ #
198
+ # @return [String]
199
+ required :session_id, String
200
+
201
+ # @!attribute type
202
+ #
203
+ # @return [Symbol, :"transport.answered"]
204
+ required :type, const: :"transport.answered"
205
+
206
+ # @!method initialize(event_id:, session_id:, type: :"transport.answered")
207
+ # The outbound SIP provider leg answered and media is established. Delivered only
208
+ # to sideband observers.
209
+ #
210
+ # @param event_id [String]
211
+ #
212
+ # @param session_id [String]
213
+ # The canonical Live session ID.
214
+ #
215
+ # @param type [Symbol, :"transport.answered"]
216
+ end
217
+
218
+ class TransportFailed < OpenAI::Internal::Type::BaseModel
219
+ # @!attribute error
220
+ #
221
+ # @return [OpenAI::Models::Live::ServerEvent::TransportFailed::Error]
222
+ required :error, -> { OpenAI::Live::ServerEvent::TransportFailed::Error }
223
+
224
+ # @!attribute event_id
225
+ #
226
+ # @return [String]
227
+ required :event_id, String
228
+
229
+ # @!attribute session_id
230
+ # The canonical Live session ID.
231
+ #
232
+ # @return [String]
233
+ required :session_id, String
234
+
235
+ # @!attribute type
236
+ #
237
+ # @return [Symbol, :"transport.failed"]
238
+ required :type, const: :"transport.failed"
239
+
240
+ # @!method initialize(error:, event_id:, session_id:, type: :"transport.failed")
241
+ # An asynchronous outbound SIP setup failure. Delivered only to sideband
242
+ # observers.
243
+ #
244
+ # @param error [OpenAI::Models::Live::ServerEvent::TransportFailed::Error]
245
+ #
246
+ # @param event_id [String]
247
+ #
248
+ # @param session_id [String]
249
+ # The canonical Live session ID.
250
+ #
251
+ # @param type [Symbol, :"transport.failed"]
252
+
253
+ # @see OpenAI::Models::Live::ServerEvent::TransportFailed#error
254
+ class Error < OpenAI::Internal::Type::BaseModel
255
+ # @!attribute code
256
+ # The call setup failure code.
257
+ #
258
+ # @return [String]
259
+ required :code, String
260
+
261
+ # @!attribute message
262
+ #
263
+ # @return [String]
264
+ required :message, String
265
+
266
+ # @!attribute type
267
+ #
268
+ # @return [Symbol, :call_error]
269
+ required :type, const: :call_error
270
+
271
+ # @!attribute param
272
+ # The parameter related to the error, if any. Empty when no parameter applies.
273
+ #
274
+ # @return [String, nil]
275
+ optional :param, String
276
+
277
+ # @!method initialize(code:, message:, param: nil, type: :call_error)
278
+ # @param code [String]
279
+ # The call setup failure code.
280
+ #
281
+ # @param message [String]
282
+ #
283
+ # @param param [String]
284
+ # The parameter related to the error, if any. Empty when no parameter applies.
285
+ #
286
+ # @param type [Symbol, :call_error]
287
+ end
288
+ end
289
+
290
+ # @!method self.variants
291
+ # @return [Array(OpenAI::Models::Live::SessionStartedEvent, OpenAI::Models::Live::SessionUpdatedEvent, OpenAI::Models::Live::InputAudioMutedEvent, OpenAI::Models::Live::InputAudioUnmutedEvent, OpenAI::Models::Live::InstructionsAppendedEvent, OpenAI::Models::Live::ThinkingAppendedEvent, OpenAI::Models::Live::CommentaryAppendedEvent, OpenAI::Models::Live::ServerEvent::SessionInputAudioAppend, OpenAI::Models::Live::OutputAudioDeltaEvent, OpenAI::Models::Live::InputTranscriptDeltaEvent, OpenAI::Models::Live::OutputTranscriptDeltaEvent, OpenAI::Models::Live::DelegationCreatedEvent, OpenAI::Models::Live::ResponseEvent, OpenAI::Models::Live::SessionUsageUpdatedEvent, OpenAI::Models::Live::SessionClosedEvent, OpenAI::Models::Live::ErrorEvent, OpenAI::Models::Live::InfoEvent, OpenAI::Models::Live::ServerEvent::TransportDtmfReceived, OpenAI::Models::Live::ServerEvent::TransportDtmfSend, OpenAI::Models::Live::ServerEvent::TransportRinging, OpenAI::Models::Live::ServerEvent::TransportAnswered, OpenAI::Models::Live::ServerEvent::TransportFailed)]
292
+ end
293
+ end
294
+ end
295
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module Live
6
+ class ServerEventSelector < OpenAI::Internal::Type::BaseModel
7
+ # @!attribute type
8
+ # The outer Live server event type. Use 'response.event' for Responses events.
9
+ #
10
+ # @return [String]
11
+ required :type, String
12
+
13
+ # @!attribute response_event
14
+ # The nested Responses event type. Required when type is 'response.event';
15
+ # forbidden for other event types.
16
+ #
17
+ # @return [String, nil]
18
+ optional :response_event, String
19
+
20
+ # @!method initialize(type:, response_event: nil)
21
+ # A Live server event selector for the WebRTC frontend data channel.
22
+ #
23
+ # @param type [String]
24
+ # The outer Live server event type. Use 'response.event' for Responses events.
25
+ #
26
+ # @param response_event [String]
27
+ # The nested Responses event type. Required when type is 'response.event';
28
+ # forbidden for other event types.
29
+ end
30
+ end
31
+ end
32
+ end