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,585 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class ResponsesDelegationUpdateConfig < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Live::ResponsesDelegationUpdateConfig,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # Instructions for the delegated Responses model, separate from Live instructions.
18
+ # See
19
+ # [backend prompting](https://developers.openai.com/api/docs/guides/live-delegation#start-with-your-existing-backend-prompt).
20
+ sig { returns(T.nilable(String)) }
21
+ attr_accessor :instructions
22
+
23
+ # Maximum number of output tokens for each delegated response.
24
+ sig { returns(T.nilable(Integer)) }
25
+ attr_accessor :max_output_tokens
26
+
27
+ # The Responses backend model to use for subsequent delegated requests. Omit to
28
+ # keep the current backend model.
29
+ sig { returns(T.nilable(String)) }
30
+ attr_reader :model
31
+
32
+ sig { params(model: String).void }
33
+ attr_writer :model
34
+
35
+ # Whether the delegated Responses model may request multiple tool calls in a
36
+ # single response.
37
+ sig { returns(T.nilable(T::Boolean)) }
38
+ attr_accessor :parallel_tool_calls
39
+
40
+ # Reasoning settings passed to each delegated Responses request.
41
+ sig { returns(T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning)) }
42
+ attr_reader :reasoning
43
+
44
+ sig { params(reasoning: T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::OrHash)).void }
45
+ attr_writer :reasoning
46
+
47
+ # Service tier for delegated Responses requests.
48
+ sig { returns(T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::ServiceTier::OrSymbol)) }
49
+ attr_accessor :service_tier
50
+
51
+ # Text generation settings passed to each delegated Responses request.
52
+ sig { returns(T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Text)) }
53
+ attr_reader :text
54
+
55
+ sig { params(text: T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Text::OrHash)).void }
56
+ attr_writer :text
57
+
58
+ # Controls which tool the Responses backend uses when handling a task delegated by
59
+ # the Live model.
60
+ sig {
61
+ returns(
62
+ T.nilable(
63
+ T.any(
64
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveToolChoiceEnum::OrSymbol,
65
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveFunctionToolChoiceParam,
66
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveMCPToolChoiceParam
67
+ )
68
+ )
69
+ )
70
+ }
71
+ attr_reader :tool_choice
72
+
73
+ sig {
74
+ params(
75
+ tool_choice: T.any(
76
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveToolChoiceEnum::OrSymbol,
77
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveFunctionToolChoiceParam::OrHash,
78
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveMCPToolChoiceParam::OrHash
79
+ )
80
+ )
81
+ .void
82
+ }
83
+ attr_writer :tool_choice
84
+
85
+ # Tools available to the Responses backend while it handles tasks delegated by the
86
+ # Live model.
87
+ sig {
88
+ returns(
89
+ T.nilable(
90
+ T::Array[
91
+ T.any(OpenAI::Live::FunctionTool, OpenAI::Live::ResponsesDelegationUpdateConfig::Tool::WebSearch)
92
+ ]
93
+ )
94
+ )
95
+ }
96
+ attr_reader :tools
97
+
98
+ sig {
99
+ params(
100
+ tools: T::Array[
101
+ T.any(
102
+ OpenAI::Live::FunctionTool::OrHash,
103
+ OpenAI::Live::ResponsesDelegationUpdateConfig::Tool::WebSearch::OrHash
104
+ )
105
+ ]
106
+ )
107
+ .void
108
+ }
109
+ attr_writer :tools
110
+
111
+ # Updates to the Responses backend of an existing Live session. Omitted settings
112
+ # retain their current values.
113
+ sig do
114
+ params(
115
+
116
+ instructions: T.nilable(String),
117
+
118
+ max_output_tokens: T.nilable(Integer),
119
+
120
+ model: String,
121
+
122
+ parallel_tool_calls: T.nilable(T::Boolean),
123
+
124
+ reasoning: T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::OrHash),
125
+
126
+ service_tier: T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::ServiceTier::OrSymbol),
127
+
128
+ text: T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Text::OrHash),
129
+
130
+ tool_choice: T.any(
131
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveToolChoiceEnum::OrSymbol,
132
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveFunctionToolChoiceParam::OrHash,
133
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveMCPToolChoiceParam::OrHash
134
+ ),
135
+
136
+ tools: T::Array[
137
+ T.any(
138
+ OpenAI::Live::FunctionTool::OrHash,
139
+ OpenAI::Live::ResponsesDelegationUpdateConfig::Tool::WebSearch::OrHash
140
+ )
141
+ ]
142
+ )
143
+ .returns(T.attached_class)
144
+ end
145
+ def self.new(
146
+
147
+ # Instructions for the delegated Responses model, separate from Live instructions.
148
+ # See
149
+ # [backend prompting](https://developers.openai.com/api/docs/guides/live-delegation#start-with-your-existing-backend-prompt).
150
+ instructions: nil,
151
+
152
+ # Maximum number of output tokens for each delegated response.
153
+ max_output_tokens: nil,
154
+
155
+ # The Responses backend model to use for subsequent delegated requests. Omit to
156
+ # keep the current backend model.
157
+ model: nil,
158
+
159
+ # Whether the delegated Responses model may request multiple tool calls in a
160
+ # single response.
161
+ parallel_tool_calls: nil,
162
+
163
+ # Reasoning settings passed to each delegated Responses request.
164
+ reasoning: nil,
165
+
166
+ # Service tier for delegated Responses requests.
167
+ service_tier: nil,
168
+
169
+ # Text generation settings passed to each delegated Responses request.
170
+ text: nil,
171
+
172
+ # Controls which tool the Responses backend uses when handling a task delegated by
173
+ # the Live model.
174
+ tool_choice: nil,
175
+
176
+ # Tools available to the Responses backend while it handles tasks delegated by the
177
+ # Live model.
178
+
179
+ tools: nil
180
+ )
181
+ end
182
+
183
+ sig do
184
+ override.returns(
185
+ {
186
+ instructions: T.nilable(String),
187
+ max_output_tokens: T.nilable(Integer),
188
+ model: String,
189
+ parallel_tool_calls: T.nilable(T::Boolean),
190
+ reasoning: T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning),
191
+ service_tier: T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::ServiceTier::OrSymbol),
192
+ text: T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Text),
193
+ tool_choice: T.any(
194
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveToolChoiceEnum::OrSymbol,
195
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveFunctionToolChoiceParam,
196
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveMCPToolChoiceParam
197
+ ),
198
+ tools: T::Array[
199
+ T.any(OpenAI::Live::FunctionTool, OpenAI::Live::ResponsesDelegationUpdateConfig::Tool::WebSearch)
200
+ ]
201
+ }
202
+ )
203
+ end
204
+ def to_hash
205
+ end
206
+
207
+ class Reasoning < OpenAI::Internal::Type::BaseModel
208
+ OrHash = T.type_alias do
209
+ T.any(
210
+ OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning,
211
+ OpenAI::Internal::AnyHash
212
+ )
213
+ end
214
+
215
+ # How much reasoning effort the delegated Responses model should use. Supported
216
+ # values depend on the backend model.
217
+ sig { returns(T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Effort::OrSymbol)) }
218
+ attr_accessor :effort
219
+
220
+ # The reasoning summary to request from the delegated Responses model, when
221
+ # supported.
222
+ sig { returns(T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Summary::OrSymbol)) }
223
+ attr_accessor :summary
224
+
225
+ # Reasoning settings passed to each delegated Responses request.
226
+ sig do
227
+ params(
228
+
229
+ effort: T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Effort::OrSymbol),
230
+
231
+ summary: T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Summary::OrSymbol)
232
+ )
233
+ .returns(T.attached_class)
234
+ end
235
+ def self.new(
236
+
237
+ # How much reasoning effort the delegated Responses model should use. Supported
238
+ # values depend on the backend model.
239
+ effort: nil,
240
+
241
+ # The reasoning summary to request from the delegated Responses model, when
242
+ # supported.
243
+
244
+ summary: nil
245
+ )
246
+ end
247
+
248
+ sig do
249
+ override.returns(
250
+ {
251
+ effort: T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Effort::OrSymbol),
252
+ summary: T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Summary::OrSymbol)
253
+ }
254
+ )
255
+ end
256
+ def to_hash
257
+ end
258
+
259
+ # How much reasoning effort the delegated Responses model should use. Supported
260
+ # values depend on the backend model.
261
+ module Effort
262
+ extend OpenAI::Internal::Type::Enum
263
+
264
+ TaggedSymbol = T.type_alias {
265
+ T.all(Symbol, OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Effort)
266
+ }
267
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
268
+
269
+ NONE = T.let(:none, OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Effort::TaggedSymbol)
270
+ MINIMAL = T.let(:minimal, OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Effort::TaggedSymbol)
271
+ LOW = T.let(:low, OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Effort::TaggedSymbol)
272
+ MEDIUM = T.let(:medium, OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Effort::TaggedSymbol)
273
+ HIGH = T.let(:high, OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Effort::TaggedSymbol)
274
+ XHIGH = T.let(:xhigh, OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Effort::TaggedSymbol)
275
+
276
+ sig {
277
+ override.returns(T::Array[OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Effort::TaggedSymbol])
278
+ }
279
+ def self.values
280
+ end
281
+ end
282
+
283
+ # The reasoning summary to request from the delegated Responses model, when
284
+ # supported.
285
+ module Summary
286
+ extend OpenAI::Internal::Type::Enum
287
+
288
+ TaggedSymbol = T.type_alias {
289
+ T.all(Symbol, OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Summary)
290
+ }
291
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
292
+
293
+ CONCISE = T.let(:concise, OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Summary::TaggedSymbol)
294
+ DETAILED = T.let(:detailed, OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Summary::TaggedSymbol)
295
+ AUTO = T.let(:auto, OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Summary::TaggedSymbol)
296
+
297
+ sig {
298
+ override.returns(
299
+ T::Array[OpenAI::Live::ResponsesDelegationUpdateConfig::Reasoning::Summary::TaggedSymbol]
300
+ )
301
+ }
302
+ def self.values
303
+ end
304
+ end
305
+ end
306
+
307
+ # Service tier for delegated Responses requests.
308
+ module ServiceTier
309
+ extend OpenAI::Internal::Type::Enum
310
+
311
+ TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Live::ResponsesDelegationUpdateConfig::ServiceTier) }
312
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
313
+
314
+ AUTO = T.let(:auto, OpenAI::Live::ResponsesDelegationUpdateConfig::ServiceTier::TaggedSymbol)
315
+ DEFAULT = T.let(:default, OpenAI::Live::ResponsesDelegationUpdateConfig::ServiceTier::TaggedSymbol)
316
+ FAST_TIER_TEMP_PILOT = T.let(
317
+ :fast_tier_temp_pilot,
318
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ServiceTier::TaggedSymbol
319
+ )
320
+ FLEX = T.let(:flex, OpenAI::Live::ResponsesDelegationUpdateConfig::ServiceTier::TaggedSymbol)
321
+ PRIORITY = T.let(:priority, OpenAI::Live::ResponsesDelegationUpdateConfig::ServiceTier::TaggedSymbol)
322
+ ULTRAFAST = T.let(:ultrafast, OpenAI::Live::ResponsesDelegationUpdateConfig::ServiceTier::TaggedSymbol)
323
+
324
+ sig { override.returns(T::Array[OpenAI::Live::ResponsesDelegationUpdateConfig::ServiceTier::TaggedSymbol]) }
325
+ def self.values
326
+ end
327
+ end
328
+
329
+ class Text < OpenAI::Internal::Type::BaseModel
330
+ OrHash = T.type_alias do
331
+ T.any(
332
+ OpenAI::Live::ResponsesDelegationUpdateConfig::Text,
333
+ OpenAI::Internal::AnyHash
334
+ )
335
+ end
336
+
337
+ # The amount of detail in text generated by the Responses backend. This does not
338
+ # configure the Live model’s spoken delivery.
339
+ sig { returns(T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Text::Verbosity::OrSymbol)) }
340
+ attr_accessor :verbosity
341
+
342
+ # Text generation settings passed to each delegated Responses request.
343
+ sig do
344
+ params(
345
+
346
+ verbosity: T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Text::Verbosity::OrSymbol)
347
+ )
348
+ .returns(T.attached_class)
349
+ end
350
+ def self.new(
351
+
352
+ # The amount of detail in text generated by the Responses backend. This does not
353
+ # configure the Live model’s spoken delivery.
354
+
355
+ verbosity: nil
356
+ )
357
+ end
358
+
359
+ sig do
360
+ override.returns(
361
+ {verbosity: T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig::Text::Verbosity::OrSymbol)}
362
+ )
363
+ end
364
+ def to_hash
365
+ end
366
+
367
+ # The amount of detail in text generated by the Responses backend. This does not
368
+ # configure the Live model’s spoken delivery.
369
+ module Verbosity
370
+ extend OpenAI::Internal::Type::Enum
371
+
372
+ TaggedSymbol = T.type_alias {
373
+ T.all(Symbol, OpenAI::Live::ResponsesDelegationUpdateConfig::Text::Verbosity)
374
+ }
375
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
376
+
377
+ LOW = T.let(:low, OpenAI::Live::ResponsesDelegationUpdateConfig::Text::Verbosity::TaggedSymbol)
378
+ MEDIUM = T.let(:medium, OpenAI::Live::ResponsesDelegationUpdateConfig::Text::Verbosity::TaggedSymbol)
379
+ HIGH = T.let(:high, OpenAI::Live::ResponsesDelegationUpdateConfig::Text::Verbosity::TaggedSymbol)
380
+
381
+ sig {
382
+ override.returns(T::Array[OpenAI::Live::ResponsesDelegationUpdateConfig::Text::Verbosity::TaggedSymbol])
383
+ }
384
+ def self.values
385
+ end
386
+ end
387
+ end
388
+
389
+ # Controls which tool the Responses backend uses when handling a task delegated by
390
+ # the Live model.
391
+ module ToolChoice
392
+ extend OpenAI::Internal::Type::Union
393
+
394
+ Variants = T.type_alias {
395
+ T.any(
396
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveToolChoiceEnum::TaggedSymbol,
397
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveFunctionToolChoiceParam,
398
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveMCPToolChoiceParam
399
+ )
400
+ }
401
+
402
+ module LiveToolChoiceEnum
403
+ extend OpenAI::Internal::Type::Enum
404
+
405
+ TaggedSymbol = T.type_alias {
406
+ T.all(Symbol, OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveToolChoiceEnum)
407
+ }
408
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
409
+
410
+ AUTO = T.let(
411
+ :auto,
412
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveToolChoiceEnum::TaggedSymbol
413
+ )
414
+ NONE = T.let(
415
+ :none,
416
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveToolChoiceEnum::TaggedSymbol
417
+ )
418
+ REQUIRED = T.let(
419
+ :required,
420
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveToolChoiceEnum::TaggedSymbol
421
+ )
422
+
423
+ sig {
424
+ override.returns(
425
+ T::Array[OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveToolChoiceEnum::TaggedSymbol]
426
+ )
427
+ }
428
+ def self.values
429
+ end
430
+ end
431
+
432
+ class LiveFunctionToolChoiceParam < OpenAI::Internal::Type::BaseModel
433
+ OrHash = T.type_alias do
434
+ T.any(
435
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveFunctionToolChoiceParam,
436
+ OpenAI::Internal::AnyHash
437
+ )
438
+ end
439
+
440
+ sig { returns(String) }
441
+ attr_accessor :name
442
+
443
+ sig { returns(Symbol) }
444
+ attr_accessor :type
445
+
446
+ sig do
447
+ params(
448
+
449
+ name: String,
450
+
451
+ type: Symbol
452
+ )
453
+ .returns(T.attached_class)
454
+ end
455
+ def self.new(
456
+
457
+ name:,
458
+
459
+ type: :function
460
+ )
461
+ end
462
+
463
+ sig do
464
+ override.returns(
465
+ {name: String, type: Symbol}
466
+ )
467
+ end
468
+ def to_hash
469
+ end
470
+
471
+ end
472
+
473
+ class LiveMCPToolChoiceParam < OpenAI::Internal::Type::BaseModel
474
+ OrHash = T.type_alias do
475
+ T.any(
476
+ OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::LiveMCPToolChoiceParam,
477
+ OpenAI::Internal::AnyHash
478
+ )
479
+ end
480
+
481
+ sig { returns(String) }
482
+ attr_accessor :name
483
+
484
+ sig { returns(String) }
485
+ attr_accessor :server_label
486
+
487
+ sig { returns(Symbol) }
488
+ attr_accessor :type
489
+
490
+ sig do
491
+ params(
492
+
493
+ name: String,
494
+
495
+ server_label: String,
496
+
497
+ type: Symbol
498
+ )
499
+ .returns(T.attached_class)
500
+ end
501
+ def self.new(
502
+
503
+ name:,
504
+
505
+ server_label:,
506
+
507
+ type: :mcp
508
+ )
509
+ end
510
+
511
+ sig do
512
+ override.returns(
513
+ {name: String, server_label: String, type: Symbol}
514
+ )
515
+ end
516
+ def to_hash
517
+ end
518
+
519
+ end
520
+
521
+ sig { override.returns(T::Array[OpenAI::Live::ResponsesDelegationUpdateConfig::ToolChoice::Variants]) }
522
+ def self.variants
523
+ end
524
+
525
+ end
526
+
527
+ # A function tool available to the Responses backend when the Live model delegates
528
+ # a task.
529
+ module Tool
530
+ extend OpenAI::Internal::Type::Union
531
+
532
+ Variants = T.type_alias {
533
+ T.any(OpenAI::Live::FunctionTool, OpenAI::Live::ResponsesDelegationUpdateConfig::Tool::WebSearch)
534
+ }
535
+
536
+ class WebSearch < OpenAI::Internal::Type::BaseModel
537
+ OrHash = T.type_alias do
538
+ T.any(
539
+ OpenAI::Live::ResponsesDelegationUpdateConfig::Tool::WebSearch,
540
+ OpenAI::Internal::AnyHash
541
+ )
542
+ end
543
+
544
+ # The tool type. Always `web_search`.
545
+ sig { returns(Symbol) }
546
+ attr_accessor :type
547
+
548
+ # A web search tool available to the Live session’s Responses backend.
549
+ sig do
550
+ params(
551
+
552
+ type: Symbol
553
+ )
554
+ .returns(T.attached_class)
555
+ end
556
+ def self.new(
557
+
558
+ # The tool type. Always `web_search`.
559
+
560
+ type: :web_search
561
+ )
562
+ end
563
+
564
+ sig do
565
+ override.returns(
566
+ {type: Symbol}
567
+ )
568
+ end
569
+ def to_hash
570
+ end
571
+
572
+ end
573
+
574
+ sig { override.returns(T::Array[OpenAI::Live::ResponsesDelegationUpdateConfig::Tool::Variants]) }
575
+ def self.variants
576
+ end
577
+
578
+ end
579
+
580
+ end
581
+
582
+ end
583
+
584
+ end
585
+ end