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