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,427 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class SessionConfig < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Live::SessionConfig,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # The Live model. Required in the session configuration for every transport; do
18
+ # not pass it as a URL query parameter.
19
+ sig { returns(T.any(String, OpenAI::Live::SessionConfig::Model::OrSymbol)) }
20
+ attr_accessor :model
21
+
22
+ # Startup audio configuration. Only primary WebSockets accept audio.format; WebRTC
23
+ # and SIP negotiate their media format. Voice and format are immutable after
24
+ # startup.
25
+ sig { returns(T.nilable(OpenAI::Live::SessionConfig::Audio)) }
26
+ attr_reader :audio
27
+
28
+ sig { params(audio: OpenAI::Live::SessionConfig::Audio::OrHash).void }
29
+ attr_writer :audio
30
+
31
+ # Startup-only capabilities for an untrusted frontend attached to a unified WebRTC
32
+ # session. Trusted sideband connections are unaffected.
33
+ sig { returns(T.nilable(OpenAI::Live::ClientConfig)) }
34
+ attr_reader :client
35
+
36
+ sig { params(client: OpenAI::Live::ClientConfig::OrHash).void }
37
+ attr_writer :client
38
+
39
+ # Who handles tasks delegated by the Live model. Omitted or null selects your
40
+ # application; use `responses` to let the API manage a Responses backend.
41
+ sig {
42
+ returns(T.nilable(T.any(OpenAI::Live::ClientDelegation, OpenAI::Live::SessionConfig::Delegation::Responses)))
43
+ }
44
+ attr_accessor :delegation
45
+
46
+ # Ordered text-only history supplied before startup. Supports developer, user, and
47
+ # assistant messages with one text part each; at most 128 messages and 8,192
48
+ # rendered tokens in total.
49
+ sig {
50
+ returns(
51
+ T.nilable(
52
+ T::Array[
53
+ T.any(
54
+ OpenAI::Live::InitialItem::Developer,
55
+ OpenAI::Live::InitialItem::User,
56
+ OpenAI::Live::InitialItem::Assistant
57
+ )
58
+ ]
59
+ )
60
+ )
61
+ }
62
+ attr_reader :input
63
+
64
+ sig {
65
+ params(
66
+ input: T::Array[
67
+ T.any(
68
+ OpenAI::Live::InitialItem::Developer::OrHash,
69
+ OpenAI::Live::InitialItem::User::OrHash,
70
+ OpenAI::Live::InitialItem::Assistant::OrHash
71
+ )
72
+ ]
73
+ )
74
+ .void
75
+ }
76
+ attr_writer :input
77
+
78
+ # Frontend instructions for voice, conversation, interruptions, and when to
79
+ # delegate. Start with the
80
+ # [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting);
81
+ # put business rules and tool workflows in a separate
82
+ # [backend prompt](https://developers.openai.com/api/docs/guides/live-delegation#start-with-your-existing-backend-prompt).
83
+ # Limited to 16,384 client-supplied tokens. Omitted or blank instructions use
84
+ # server defaults. Immutable after startup.
85
+ sig { returns(T.nilable(String)) }
86
+ attr_accessor :instructions
87
+
88
+ # Whether to store the session for later forking and recording download. Defaults
89
+ # to false for new sessions.
90
+ sig { returns(T.nilable(T::Boolean)) }
91
+ attr_reader :store
92
+
93
+ sig { params(store: T::Boolean).void }
94
+ attr_writer :store
95
+
96
+ # Initial configuration for a Live session, including its model, conversation
97
+ # instructions, audio, and delegated task handling.
98
+ sig do
99
+ params(
100
+
101
+ model: T.any(String, OpenAI::Live::SessionConfig::Model::OrSymbol),
102
+
103
+ audio: OpenAI::Live::SessionConfig::Audio::OrHash,
104
+
105
+ client: OpenAI::Live::ClientConfig::OrHash,
106
+
107
+ delegation: T.nilable(
108
+ T.any(OpenAI::Live::ClientDelegation::OrHash, OpenAI::Live::SessionConfig::Delegation::Responses::OrHash)
109
+ ),
110
+
111
+ input: T::Array[
112
+ T.any(
113
+ OpenAI::Live::InitialItem::Developer::OrHash,
114
+ OpenAI::Live::InitialItem::User::OrHash,
115
+ OpenAI::Live::InitialItem::Assistant::OrHash
116
+ )
117
+ ],
118
+
119
+ instructions: T.nilable(String),
120
+
121
+ store: T::Boolean
122
+ )
123
+ .returns(T.attached_class)
124
+ end
125
+ def self.new(
126
+
127
+ # The Live model. Required in the session configuration for every transport; do
128
+ # not pass it as a URL query parameter.
129
+ model:,
130
+
131
+ # Startup audio configuration. Only primary WebSockets accept audio.format; WebRTC
132
+ # and SIP negotiate their media format. Voice and format are immutable after
133
+ # startup.
134
+ audio: nil,
135
+
136
+ # Startup-only capabilities for an untrusted frontend attached to a unified WebRTC
137
+ # session. Trusted sideband connections are unaffected.
138
+ client: nil,
139
+
140
+ # Who handles tasks delegated by the Live model. Omitted or null selects your
141
+ # application; use `responses` to let the API manage a Responses backend.
142
+ delegation: nil,
143
+
144
+ # Ordered text-only history supplied before startup. Supports developer, user, and
145
+ # assistant messages with one text part each; at most 128 messages and 8,192
146
+ # rendered tokens in total.
147
+ input: nil,
148
+
149
+ # Frontend instructions for voice, conversation, interruptions, and when to
150
+ # delegate. Start with the
151
+ # [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting);
152
+ # put business rules and tool workflows in a separate
153
+ # [backend prompt](https://developers.openai.com/api/docs/guides/live-delegation#start-with-your-existing-backend-prompt).
154
+ # Limited to 16,384 client-supplied tokens. Omitted or blank instructions use
155
+ # server defaults. Immutable after startup.
156
+ instructions: nil,
157
+
158
+ # Whether to store the session for later forking and recording download. Defaults
159
+ # to false for new sessions.
160
+
161
+ store: nil
162
+ )
163
+ end
164
+
165
+ sig do
166
+ override.returns(
167
+ {
168
+ model: T.any(String, OpenAI::Live::SessionConfig::Model::OrSymbol),
169
+ audio: OpenAI::Live::SessionConfig::Audio,
170
+ client: OpenAI::Live::ClientConfig,
171
+ delegation: T.nilable(
172
+ T.any(OpenAI::Live::ClientDelegation, OpenAI::Live::SessionConfig::Delegation::Responses)
173
+ ),
174
+ input: T::Array[
175
+ T.any(
176
+ OpenAI::Live::InitialItem::Developer,
177
+ OpenAI::Live::InitialItem::User,
178
+ OpenAI::Live::InitialItem::Assistant
179
+ )
180
+ ],
181
+ instructions: T.nilable(String),
182
+ store: T::Boolean
183
+ }
184
+ )
185
+ end
186
+ def to_hash
187
+ end
188
+
189
+ # The Live model. Required in the session configuration for every transport; do
190
+ # not pass it as a URL query parameter.
191
+ module Model
192
+ extend OpenAI::Internal::Type::Union
193
+
194
+ Variants = T.type_alias { T.any(String, OpenAI::Live::SessionConfig::Model::TaggedSymbol) }
195
+
196
+ sig { override.returns(T::Array[OpenAI::Live::SessionConfig::Model::Variants]) }
197
+ def self.variants
198
+ end
199
+
200
+ TaggedSymbol = T.type_alias do
201
+ T.all(Symbol, OpenAI::Live::SessionConfig::Model)
202
+ end
203
+
204
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
205
+
206
+ GPT_LIVE_1 = T.let(:"gpt-live-1", OpenAI::Live::SessionConfig::Model::TaggedSymbol)
207
+
208
+ end
209
+
210
+ class Audio < OpenAI::Internal::Type::BaseModel
211
+ OrHash = T.type_alias do
212
+ T.any(
213
+ OpenAI::Live::SessionConfig::Audio,
214
+ OpenAI::Internal::AnyHash
215
+ )
216
+ end
217
+
218
+ # Audio encoding and sample rate for audio sent and received over a Live WebSocket
219
+ # connection. WebRTC and SIP negotiate their media format separately.
220
+ sig {
221
+ returns(
222
+ T.nilable(
223
+ T.any(
224
+ OpenAI::Live::AudioFormat::AudioPCM,
225
+ OpenAI::Live::AudioFormat::AudioPCMU,
226
+ OpenAI::Live::AudioFormat::AudioPCMA
227
+ )
228
+ )
229
+ )
230
+ }
231
+ attr_reader :format_
232
+
233
+ sig {
234
+ params(
235
+ format_: T.any(
236
+ OpenAI::Live::AudioFormat::AudioPCM::OrHash,
237
+ OpenAI::Live::AudioFormat::AudioPCMU::OrHash,
238
+ OpenAI::Live::AudioFormat::AudioPCMA::OrHash
239
+ )
240
+ )
241
+ .void
242
+ }
243
+ attr_writer :format_
244
+
245
+ # The voice used for speech generated by the Live model.
246
+ sig { returns(T.nilable(OpenAI::Live::SessionConfig::Audio::Output)) }
247
+ attr_reader :output
248
+
249
+ sig { params(output: OpenAI::Live::SessionConfig::Audio::Output::OrHash).void }
250
+ attr_writer :output
251
+
252
+ # Startup audio configuration. Only primary WebSockets accept audio.format; WebRTC
253
+ # and SIP negotiate their media format. Voice and format are immutable after
254
+ # startup.
255
+ sig do
256
+ params(
257
+
258
+ format_: T.any(
259
+ OpenAI::Live::AudioFormat::AudioPCM::OrHash,
260
+ OpenAI::Live::AudioFormat::AudioPCMU::OrHash,
261
+ OpenAI::Live::AudioFormat::AudioPCMA::OrHash
262
+ ),
263
+
264
+ output: OpenAI::Live::SessionConfig::Audio::Output::OrHash
265
+ )
266
+ .returns(T.attached_class)
267
+ end
268
+ def self.new(
269
+
270
+ # Audio encoding and sample rate for audio sent and received over a Live WebSocket
271
+ # connection. WebRTC and SIP negotiate their media format separately.
272
+ format_: nil,
273
+
274
+ # The voice used for speech generated by the Live model.
275
+
276
+ output: nil
277
+ )
278
+ end
279
+
280
+ sig do
281
+ override.returns(
282
+ {
283
+ format_: T.any(
284
+ OpenAI::Live::AudioFormat::AudioPCM,
285
+ OpenAI::Live::AudioFormat::AudioPCMU,
286
+ OpenAI::Live::AudioFormat::AudioPCMA
287
+ ),
288
+ output: OpenAI::Live::SessionConfig::Audio::Output
289
+ }
290
+ )
291
+ end
292
+ def to_hash
293
+ end
294
+
295
+ class Output < OpenAI::Internal::Type::BaseModel
296
+ OrHash = T.type_alias do
297
+ T.any(
298
+ OpenAI::Live::SessionConfig::Audio::Output,
299
+ OpenAI::Internal::AnyHash
300
+ )
301
+ end
302
+
303
+ # The voice used for Live speech, as a built-in voice name or a custom voice
304
+ # object containing its ID. Defaults to `marin` and cannot change after startup.
305
+ sig { returns(T.nilable(T.any(String, OpenAI::Live::BuiltInVoice::OrSymbol, OpenAI::Live::CustomVoice))) }
306
+ attr_reader :voice
307
+
308
+ sig {
309
+ params(voice: T.any(String, OpenAI::Live::BuiltInVoice::OrSymbol, OpenAI::Live::CustomVoice::OrHash)).void
310
+ }
311
+ attr_writer :voice
312
+
313
+ # The voice used for speech generated by the Live model.
314
+ sig do
315
+ params(
316
+
317
+ voice: T.any(String, OpenAI::Live::BuiltInVoice::OrSymbol, OpenAI::Live::CustomVoice::OrHash)
318
+ )
319
+ .returns(T.attached_class)
320
+ end
321
+ def self.new(
322
+
323
+ # The voice used for Live speech, as a built-in voice name or a custom voice
324
+ # object containing its ID. Defaults to `marin` and cannot change after startup.
325
+
326
+ voice: nil
327
+ )
328
+ end
329
+
330
+ sig do
331
+ override.returns(
332
+ {voice: T.any(String, OpenAI::Live::BuiltInVoice::OrSymbol, OpenAI::Live::CustomVoice)}
333
+ )
334
+ end
335
+ def to_hash
336
+ end
337
+
338
+ # The voice used for Live speech, as a built-in voice name or a custom voice
339
+ # object containing its ID. Defaults to `marin` and cannot change after startup.
340
+ module Voice
341
+ extend OpenAI::Internal::Type::Union
342
+
343
+ Variants = T.type_alias {
344
+ T.any(String, OpenAI::Live::BuiltInVoice::TaggedSymbol, OpenAI::Live::CustomVoice)
345
+ }
346
+
347
+ sig { override.returns(T::Array[OpenAI::Live::SessionConfig::Audio::Output::Voice::Variants]) }
348
+ def self.variants
349
+ end
350
+
351
+ end
352
+ end
353
+ end
354
+
355
+ # Who handles tasks delegated by the Live model. Omitted or null selects your
356
+ # application; use `responses` to let the API manage a Responses backend.
357
+ module Delegation
358
+ extend OpenAI::Internal::Type::Union
359
+
360
+ Variants = T.type_alias {
361
+ T.any(OpenAI::Live::ClientDelegation, OpenAI::Live::SessionConfig::Delegation::Responses)
362
+ }
363
+
364
+ class Responses < OpenAI::Internal::Type::BaseModel
365
+ OrHash = T.type_alias do
366
+ T.any(
367
+ OpenAI::Live::SessionConfig::Delegation::Responses,
368
+ OpenAI::Internal::AnyHash
369
+ )
370
+ end
371
+
372
+ # Backend model, prompt, and tools used when the Live session delegates a task to
373
+ # Responses.
374
+ sig { returns(OpenAI::Live::ResponsesDelegationConfig) }
375
+ attr_reader :responses
376
+
377
+ sig { params(responses: OpenAI::Live::ResponsesDelegationConfig::OrHash).void }
378
+ attr_writer :responses
379
+
380
+ # The delegation owner. Always `responses` for tasks handled by the Responses API.
381
+ sig { returns(Symbol) }
382
+ attr_accessor :type
383
+
384
+ # Delegate tasks to a Responses model managed by the Live session.
385
+ sig do
386
+ params(
387
+
388
+ responses: OpenAI::Live::ResponsesDelegationConfig::OrHash,
389
+
390
+ type: Symbol
391
+ )
392
+ .returns(T.attached_class)
393
+ end
394
+ def self.new(
395
+
396
+ # Backend model, prompt, and tools used when the Live session delegates a task to
397
+ # Responses.
398
+ responses:,
399
+
400
+ # The delegation owner. Always `responses` for tasks handled by the Responses API.
401
+
402
+ type: :responses
403
+ )
404
+ end
405
+
406
+ sig do
407
+ override.returns(
408
+ {responses: OpenAI::Live::ResponsesDelegationConfig, type: Symbol}
409
+ )
410
+ end
411
+ def to_hash
412
+ end
413
+
414
+ end
415
+
416
+ sig { override.returns(T::Array[OpenAI::Live::SessionConfig::Delegation::Variants]) }
417
+ def self.variants
418
+ end
419
+
420
+ end
421
+
422
+ end
423
+
424
+ end
425
+
426
+ end
427
+ end
@@ -0,0 +1,57 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class SessionDownloadRecordingParams < OpenAI::Internal::Type::BaseModel
9
+
10
+ extend OpenAI::Internal::Type::RequestParameters::Converter
11
+ include OpenAI::Internal::Type::RequestParameters
12
+
13
+ OrHash = T.type_alias do
14
+ T.any(
15
+ OpenAI::Live::SessionDownloadRecordingParams,
16
+ OpenAI::Internal::AnyHash
17
+ )
18
+ end
19
+
20
+ # The ID of the stored Live session to download. Use the session ID returned when
21
+ # the session started with storage enabled.
22
+ sig { returns(String) }
23
+ attr_accessor :session_id
24
+
25
+ sig do
26
+ params(
27
+
28
+ session_id: String,
29
+
30
+ request_options: OpenAI::RequestOptions::OrHash
31
+ )
32
+ .returns(T.attached_class)
33
+ end
34
+ def self.new(
35
+
36
+ # The ID of the stored Live session to download. Use the session ID returned when
37
+ # the session started with storage enabled.
38
+ session_id:,
39
+
40
+ request_options: {}
41
+ )
42
+ end
43
+
44
+ sig do
45
+ override.returns(
46
+ {session_id: String, request_options: OpenAI::RequestOptions}
47
+ )
48
+ end
49
+ def to_hash
50
+ end
51
+
52
+ end
53
+
54
+ end
55
+
56
+ end
57
+ end
@@ -0,0 +1,131 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class SessionForkParams < OpenAI::Internal::Type::BaseModel
9
+
10
+ extend OpenAI::Internal::Type::RequestParameters::Converter
11
+ include OpenAI::Internal::Type::RequestParameters
12
+
13
+ OrHash = T.type_alias do
14
+ T.any(
15
+ OpenAI::Live::SessionForkParams,
16
+ OpenAI::Internal::AnyHash
17
+ )
18
+ end
19
+
20
+ sig { returns(String) }
21
+ attr_accessor :session_id
22
+
23
+ # WebRTC transport with an SDP offer for the new connection to the forked session.
24
+ sig { returns(OpenAI::Live::SessionForkParams::Transport) }
25
+ attr_reader :transport
26
+
27
+ sig { params(transport: OpenAI::Live::SessionForkParams::Transport::OrHash).void }
28
+ attr_writer :transport
29
+
30
+ # Optional configuration overrides for the new Live session. Omit this object or
31
+ # send an empty object to inherit the stored session's settings.
32
+ sig { returns(T.nilable(OpenAI::Live::MediaSessionForkConfig)) }
33
+ attr_reader :session
34
+
35
+ sig { params(session: OpenAI::Live::MediaSessionForkConfig::OrHash).void }
36
+ attr_writer :session
37
+
38
+ sig do
39
+ params(
40
+
41
+ session_id: String,
42
+
43
+ transport: OpenAI::Live::SessionForkParams::Transport::OrHash,
44
+
45
+ session: OpenAI::Live::MediaSessionForkConfig::OrHash,
46
+
47
+ request_options: OpenAI::RequestOptions::OrHash
48
+ )
49
+ .returns(T.attached_class)
50
+ end
51
+ def self.new(
52
+
53
+ session_id:,
54
+
55
+ # WebRTC transport with an SDP offer for the new connection to the forked session.
56
+ transport:,
57
+
58
+ # Optional configuration overrides for the new Live session. Omit this object or
59
+ # send an empty object to inherit the stored session's settings.
60
+ session: nil,
61
+
62
+ request_options: {}
63
+ )
64
+ end
65
+
66
+ sig do
67
+ override.returns(
68
+ {
69
+ session_id: String,
70
+ transport: OpenAI::Live::SessionForkParams::Transport,
71
+ session: OpenAI::Live::MediaSessionForkConfig,
72
+ request_options: OpenAI::RequestOptions
73
+ }
74
+ )
75
+ end
76
+ def to_hash
77
+ end
78
+
79
+ class Transport < OpenAI::Internal::Type::BaseModel
80
+ OrHash = T.type_alias do
81
+ T.any(
82
+ OpenAI::Live::SessionForkParams::Transport,
83
+ OpenAI::Internal::AnyHash
84
+ )
85
+ end
86
+
87
+ # Session Description Protocol message for the WebRTC connection.
88
+ sig { returns(String) }
89
+ attr_accessor :sdp
90
+
91
+ # The transport used for the Live session. Always `webrtc`.
92
+ sig { returns(Symbol) }
93
+ attr_accessor :type
94
+
95
+ # WebRTC transport with an SDP offer for the new connection to the forked session.
96
+ sig do
97
+ params(
98
+
99
+ sdp: String,
100
+
101
+ type: Symbol
102
+ )
103
+ .returns(T.attached_class)
104
+ end
105
+ def self.new(
106
+
107
+ # Session Description Protocol message for the WebRTC connection.
108
+ sdp:,
109
+
110
+ # The transport used for the Live session. Always `webrtc`.
111
+
112
+ type: :webrtc
113
+ )
114
+ end
115
+
116
+ sig do
117
+ override.returns(
118
+ {sdp: String, type: Symbol}
119
+ )
120
+ end
121
+ def to_hash
122
+ end
123
+
124
+ end
125
+
126
+ end
127
+
128
+ end
129
+
130
+ end
131
+ end