openai 0.22.1 → 0.23.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 (158) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/README.md +1 -1
  4. data/lib/openai/models/realtime/audio_transcription.rb +60 -0
  5. data/lib/openai/models/realtime/client_secret_create_params.rb +18 -9
  6. data/lib/openai/models/realtime/client_secret_create_response.rb +11 -250
  7. data/lib/openai/models/realtime/conversation_item.rb +1 -1
  8. data/lib/openai/models/realtime/conversation_item_added.rb +14 -1
  9. data/lib/openai/models/realtime/conversation_item_done.rb +3 -0
  10. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_completed_event.rb +10 -8
  11. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rb +14 -5
  12. data/lib/openai/models/realtime/conversation_item_truncate_event.rb +2 -2
  13. data/lib/openai/models/realtime/input_audio_buffer_append_event.rb +10 -5
  14. data/lib/openai/models/realtime/models.rb +58 -0
  15. data/lib/openai/models/realtime/noise_reduction_type.rb +20 -0
  16. data/lib/openai/models/realtime/realtime_audio_config.rb +6 -427
  17. data/lib/openai/models/realtime/realtime_audio_config_input.rb +89 -0
  18. data/lib/openai/models/realtime/realtime_audio_config_output.rb +100 -0
  19. data/lib/openai/models/realtime/realtime_audio_formats.rb +121 -0
  20. data/lib/openai/models/realtime/realtime_audio_input_turn_detection.rb +131 -0
  21. data/lib/openai/models/realtime/realtime_client_event.rb +31 -23
  22. data/lib/openai/models/realtime/realtime_conversation_item_assistant_message.rb +43 -10
  23. data/lib/openai/models/realtime/realtime_conversation_item_function_call.rb +16 -7
  24. data/lib/openai/models/realtime/realtime_conversation_item_function_call_output.rb +15 -7
  25. data/lib/openai/models/realtime/realtime_conversation_item_system_message.rb +18 -6
  26. data/lib/openai/models/realtime/realtime_conversation_item_user_message.rb +62 -13
  27. data/lib/openai/models/realtime/realtime_response.rb +117 -107
  28. data/lib/openai/models/realtime/realtime_response_create_audio_output.rb +100 -0
  29. data/lib/openai/models/realtime/realtime_response_create_mcp_tool.rb +310 -0
  30. data/lib/openai/models/realtime/realtime_response_create_params.rb +225 -0
  31. data/lib/openai/models/realtime/realtime_response_status.rb +1 -1
  32. data/lib/openai/models/realtime/realtime_response_usage.rb +5 -2
  33. data/lib/openai/models/realtime/realtime_response_usage_input_token_details.rb +58 -8
  34. data/lib/openai/models/realtime/realtime_server_event.rb +21 -5
  35. data/lib/openai/models/realtime/realtime_session.rb +9 -125
  36. data/lib/openai/models/realtime/realtime_session_client_secret.rb +36 -0
  37. data/lib/openai/models/realtime/realtime_session_create_request.rb +50 -71
  38. data/lib/openai/models/realtime/realtime_session_create_response.rb +621 -219
  39. data/lib/openai/models/realtime/realtime_tools_config_union.rb +2 -53
  40. data/lib/openai/models/realtime/realtime_tracing_config.rb +7 -6
  41. data/lib/openai/models/realtime/realtime_transcription_session_audio.rb +19 -0
  42. data/lib/openai/models/realtime/realtime_transcription_session_audio_input.rb +90 -0
  43. data/lib/openai/models/realtime/realtime_transcription_session_audio_input_turn_detection.rb +131 -0
  44. data/lib/openai/models/realtime/realtime_transcription_session_client_secret.rb +38 -0
  45. data/lib/openai/models/realtime/realtime_transcription_session_create_request.rb +12 -270
  46. data/lib/openai/models/realtime/realtime_transcription_session_create_response.rb +78 -0
  47. data/lib/openai/models/realtime/realtime_transcription_session_input_audio_transcription.rb +66 -0
  48. data/lib/openai/models/realtime/realtime_transcription_session_turn_detection.rb +57 -0
  49. data/lib/openai/models/realtime/realtime_truncation.rb +8 -40
  50. data/lib/openai/models/realtime/realtime_truncation_retention_ratio.rb +34 -0
  51. data/lib/openai/models/realtime/response_cancel_event.rb +3 -1
  52. data/lib/openai/models/realtime/response_create_event.rb +18 -348
  53. data/lib/openai/models/realtime/response_done_event.rb +7 -0
  54. data/lib/openai/models/realtime/session_created_event.rb +20 -4
  55. data/lib/openai/models/realtime/session_update_event.rb +36 -12
  56. data/lib/openai/models/realtime/session_updated_event.rb +20 -4
  57. data/lib/openai/models/realtime/transcription_session_created.rb +8 -243
  58. data/lib/openai/models/realtime/transcription_session_update.rb +179 -3
  59. data/lib/openai/models/realtime/transcription_session_updated_event.rb +8 -243
  60. data/lib/openai/resources/realtime/client_secrets.rb +2 -3
  61. data/lib/openai/version.rb +1 -1
  62. data/lib/openai.rb +19 -1
  63. data/rbi/openai/models/realtime/audio_transcription.rbi +132 -0
  64. data/rbi/openai/models/realtime/client_secret_create_params.rbi +25 -11
  65. data/rbi/openai/models/realtime/client_secret_create_response.rbi +2 -587
  66. data/rbi/openai/models/realtime/conversation_item_added.rbi +14 -1
  67. data/rbi/openai/models/realtime/conversation_item_done.rbi +3 -0
  68. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_completed_event.rbi +11 -8
  69. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rbi +15 -5
  70. data/rbi/openai/models/realtime/conversation_item_truncate_event.rbi +2 -2
  71. data/rbi/openai/models/realtime/input_audio_buffer_append_event.rbi +10 -5
  72. data/rbi/openai/models/realtime/models.rbi +97 -0
  73. data/rbi/openai/models/realtime/noise_reduction_type.rbi +31 -0
  74. data/rbi/openai/models/realtime/realtime_audio_config.rbi +8 -956
  75. data/rbi/openai/models/realtime/realtime_audio_config_input.rbi +221 -0
  76. data/rbi/openai/models/realtime/realtime_audio_config_output.rbi +222 -0
  77. data/rbi/openai/models/realtime/realtime_audio_formats.rbi +329 -0
  78. data/rbi/openai/models/realtime/realtime_audio_input_turn_detection.rbi +262 -0
  79. data/rbi/openai/models/realtime/realtime_conversation_item_assistant_message.rbi +51 -10
  80. data/rbi/openai/models/realtime/realtime_conversation_item_function_call.rbi +16 -7
  81. data/rbi/openai/models/realtime/realtime_conversation_item_function_call_output.rbi +14 -7
  82. data/rbi/openai/models/realtime/realtime_conversation_item_system_message.rbi +16 -6
  83. data/rbi/openai/models/realtime/realtime_conversation_item_user_message.rbi +110 -12
  84. data/rbi/openai/models/realtime/realtime_response.rbi +287 -212
  85. data/rbi/openai/models/realtime/realtime_response_create_audio_output.rbi +250 -0
  86. data/rbi/openai/models/realtime/realtime_response_create_mcp_tool.rbi +616 -0
  87. data/rbi/openai/models/realtime/realtime_response_create_params.rbi +529 -0
  88. data/rbi/openai/models/realtime/realtime_response_usage.rbi +8 -2
  89. data/rbi/openai/models/realtime/realtime_response_usage_input_token_details.rbi +106 -7
  90. data/rbi/openai/models/realtime/realtime_server_event.rbi +4 -1
  91. data/rbi/openai/models/realtime/realtime_session.rbi +12 -262
  92. data/rbi/openai/models/realtime/realtime_session_client_secret.rbi +49 -0
  93. data/rbi/openai/models/realtime/realtime_session_create_request.rbi +112 -133
  94. data/rbi/openai/models/realtime/realtime_session_create_response.rbi +1229 -405
  95. data/rbi/openai/models/realtime/realtime_tools_config_union.rbi +1 -117
  96. data/rbi/openai/models/realtime/realtime_tracing_config.rbi +11 -10
  97. data/rbi/openai/models/realtime/realtime_transcription_session_audio.rbi +50 -0
  98. data/rbi/openai/models/realtime/realtime_transcription_session_audio_input.rbi +226 -0
  99. data/rbi/openai/models/realtime/realtime_transcription_session_audio_input_turn_detection.rbi +259 -0
  100. data/rbi/openai/models/realtime/realtime_transcription_session_client_secret.rbi +51 -0
  101. data/rbi/openai/models/realtime/realtime_transcription_session_create_request.rbi +25 -597
  102. data/rbi/openai/models/realtime/realtime_transcription_session_create_response.rbi +195 -0
  103. data/rbi/openai/models/realtime/realtime_transcription_session_input_audio_transcription.rbi +144 -0
  104. data/rbi/openai/models/realtime/realtime_transcription_session_turn_detection.rbi +94 -0
  105. data/rbi/openai/models/realtime/realtime_truncation.rbi +5 -56
  106. data/rbi/openai/models/realtime/realtime_truncation_retention_ratio.rbi +45 -0
  107. data/rbi/openai/models/realtime/response_cancel_event.rbi +3 -1
  108. data/rbi/openai/models/realtime/response_create_event.rbi +19 -786
  109. data/rbi/openai/models/realtime/response_done_event.rbi +7 -0
  110. data/rbi/openai/models/realtime/session_created_event.rbi +42 -9
  111. data/rbi/openai/models/realtime/session_update_event.rbi +57 -19
  112. data/rbi/openai/models/realtime/session_updated_event.rbi +42 -9
  113. data/rbi/openai/models/realtime/transcription_session_created.rbi +17 -591
  114. data/rbi/openai/models/realtime/transcription_session_update.rbi +425 -7
  115. data/rbi/openai/models/realtime/transcription_session_updated_event.rbi +14 -591
  116. data/rbi/openai/resources/realtime/client_secrets.rbi +5 -3
  117. data/sig/openai/models/realtime/audio_transcription.rbs +57 -0
  118. data/sig/openai/models/realtime/client_secret_create_response.rbs +1 -251
  119. data/sig/openai/models/realtime/models.rbs +57 -0
  120. data/sig/openai/models/realtime/noise_reduction_type.rbs +16 -0
  121. data/sig/openai/models/realtime/realtime_audio_config.rbs +12 -331
  122. data/sig/openai/models/realtime/realtime_audio_config_input.rbs +72 -0
  123. data/sig/openai/models/realtime/realtime_audio_config_output.rbs +72 -0
  124. data/sig/openai/models/realtime/realtime_audio_formats.rbs +128 -0
  125. data/sig/openai/models/realtime/realtime_audio_input_turn_detection.rbs +99 -0
  126. data/sig/openai/models/realtime/realtime_conversation_item_assistant_message.rbs +17 -2
  127. data/sig/openai/models/realtime/realtime_conversation_item_user_message.rbs +30 -1
  128. data/sig/openai/models/realtime/realtime_response.rbs +103 -82
  129. data/sig/openai/models/realtime/realtime_response_create_audio_output.rbs +84 -0
  130. data/sig/openai/models/realtime/realtime_response_create_mcp_tool.rbs +218 -0
  131. data/sig/openai/models/realtime/realtime_response_create_params.rbs +148 -0
  132. data/sig/openai/models/realtime/realtime_response_usage_input_token_details.rbs +50 -1
  133. data/sig/openai/models/realtime/realtime_session.rbs +16 -106
  134. data/sig/openai/models/realtime/realtime_session_client_secret.rbs +20 -0
  135. data/sig/openai/models/realtime/realtime_session_create_request.rbs +27 -43
  136. data/sig/openai/models/realtime/realtime_session_create_response.rbs +389 -187
  137. data/sig/openai/models/realtime/realtime_tools_config_union.rbs +1 -53
  138. data/sig/openai/models/realtime/realtime_transcription_session_audio.rbs +24 -0
  139. data/sig/openai/models/realtime/realtime_transcription_session_audio_input.rbs +72 -0
  140. data/sig/openai/models/realtime/realtime_transcription_session_audio_input_turn_detection.rbs +99 -0
  141. data/sig/openai/models/realtime/realtime_transcription_session_client_secret.rbs +20 -0
  142. data/sig/openai/models/realtime/realtime_transcription_session_create_request.rbs +11 -203
  143. data/sig/openai/models/realtime/realtime_transcription_session_create_response.rbs +69 -0
  144. data/sig/openai/models/realtime/realtime_transcription_session_input_audio_transcription.rbs +59 -0
  145. data/sig/openai/models/realtime/realtime_transcription_session_turn_detection.rbs +47 -0
  146. data/sig/openai/models/realtime/realtime_truncation.rbs +1 -28
  147. data/sig/openai/models/realtime/realtime_truncation_retention_ratio.rbs +21 -0
  148. data/sig/openai/models/realtime/response_create_event.rbs +6 -249
  149. data/sig/openai/models/realtime/session_created_event.rbs +14 -4
  150. data/sig/openai/models/realtime/session_update_event.rbs +14 -4
  151. data/sig/openai/models/realtime/session_updated_event.rbs +14 -4
  152. data/sig/openai/models/realtime/transcription_session_created.rbs +4 -254
  153. data/sig/openai/models/realtime/transcription_session_update.rbs +154 -4
  154. data/sig/openai/models/realtime/transcription_session_updated_event.rbs +4 -254
  155. metadata +59 -5
  156. data/lib/openai/models/realtime/realtime_client_secret_config.rb +0 -64
  157. data/rbi/openai/models/realtime/realtime_client_secret_config.rbi +0 -147
  158. data/sig/openai/models/realtime/realtime_client_secret_config.rbs +0 -60
@@ -32,6 +32,13 @@ module OpenAI
32
32
  # Returned when a Response is done streaming. Always emitted, no matter the final
33
33
  # state. The Response object included in the `response.done` event will include
34
34
  # all output Items in the Response but will omit the raw audio data.
35
+ #
36
+ # Clients should check the `status` field of the Response to determine if it was
37
+ # successful (`completed`) or if there was another outcome: `cancelled`, `failed`,
38
+ # or `incomplete`.
39
+ #
40
+ # A response will contain all output items that were generated during the
41
+ # response, excluding any audio content.
35
42
  sig do
36
43
  params(
37
44
  event_id: String,
@@ -16,12 +16,16 @@ module OpenAI
16
16
  sig { returns(String) }
17
17
  attr_accessor :event_id
18
18
 
19
- # Realtime session object.
20
- sig { returns(OpenAI::Realtime::RealtimeSession) }
21
- attr_reader :session
22
-
23
- sig { params(session: OpenAI::Realtime::RealtimeSession::OrHash).void }
24
- attr_writer :session
19
+ # The session configuration.
20
+ sig do
21
+ returns(
22
+ T.any(
23
+ OpenAI::Realtime::RealtimeSessionCreateRequest,
24
+ OpenAI::Realtime::RealtimeTranscriptionSessionCreateRequest
25
+ )
26
+ )
27
+ end
28
+ attr_accessor :session
25
29
 
26
30
  # The event type, must be `session.created`.
27
31
  sig { returns(Symbol) }
@@ -33,14 +37,18 @@ module OpenAI
33
37
  sig do
34
38
  params(
35
39
  event_id: String,
36
- session: OpenAI::Realtime::RealtimeSession::OrHash,
40
+ session:
41
+ T.any(
42
+ OpenAI::Realtime::RealtimeSessionCreateRequest::OrHash,
43
+ OpenAI::Realtime::RealtimeTranscriptionSessionCreateRequest::OrHash
44
+ ),
37
45
  type: Symbol
38
46
  ).returns(T.attached_class)
39
47
  end
40
48
  def self.new(
41
49
  # The unique ID of the server event.
42
50
  event_id:,
43
- # Realtime session object.
51
+ # The session configuration.
44
52
  session:,
45
53
  # The event type, must be `session.created`.
46
54
  type: :"session.created"
@@ -51,13 +59,38 @@ module OpenAI
51
59
  override.returns(
52
60
  {
53
61
  event_id: String,
54
- session: OpenAI::Realtime::RealtimeSession,
62
+ session:
63
+ T.any(
64
+ OpenAI::Realtime::RealtimeSessionCreateRequest,
65
+ OpenAI::Realtime::RealtimeTranscriptionSessionCreateRequest
66
+ ),
55
67
  type: Symbol
56
68
  }
57
69
  )
58
70
  end
59
71
  def to_hash
60
72
  end
73
+
74
+ # The session configuration.
75
+ module Session
76
+ extend OpenAI::Internal::Type::Union
77
+
78
+ Variants =
79
+ T.type_alias do
80
+ T.any(
81
+ OpenAI::Realtime::RealtimeSessionCreateRequest,
82
+ OpenAI::Realtime::RealtimeTranscriptionSessionCreateRequest
83
+ )
84
+ end
85
+
86
+ sig do
87
+ override.returns(
88
+ T::Array[OpenAI::Realtime::SessionCreatedEvent::Session::Variants]
89
+ )
90
+ end
91
+ def self.variants
92
+ end
93
+ end
61
94
  end
62
95
  end
63
96
  end
@@ -12,48 +12,60 @@ module OpenAI
12
12
  )
13
13
  end
14
14
 
15
- # Realtime session object configuration.
16
- sig { returns(OpenAI::Realtime::RealtimeSessionCreateRequest) }
17
- attr_reader :session
18
-
15
+ # Update the Realtime session. Choose either a realtime session or a transcription
16
+ # session.
19
17
  sig do
20
- params(
21
- session: OpenAI::Realtime::RealtimeSessionCreateRequest::OrHash
22
- ).void
18
+ returns(
19
+ T.any(
20
+ OpenAI::Realtime::RealtimeSessionCreateRequest,
21
+ OpenAI::Realtime::RealtimeTranscriptionSessionCreateRequest
22
+ )
23
+ )
23
24
  end
24
- attr_writer :session
25
+ attr_accessor :session
25
26
 
26
27
  # The event type, must be `session.update`.
27
28
  sig { returns(Symbol) }
28
29
  attr_accessor :type
29
30
 
30
- # Optional client-generated ID used to identify this event.
31
+ # Optional client-generated ID used to identify this event. This is an arbitrary
32
+ # string that a client may assign. It will be passed back if there is an error
33
+ # with the event, but the corresponding `session.updated` event will not include
34
+ # it.
31
35
  sig { returns(T.nilable(String)) }
32
36
  attr_reader :event_id
33
37
 
34
38
  sig { params(event_id: String).void }
35
39
  attr_writer :event_id
36
40
 
37
- # Send this event to update the session’s default configuration. The client may
38
- # send this event at any time to update any field, except for `voice`. However,
39
- # note that once a session has been initialized with a particular `model`, it
40
- # can’t be changed to another model using `session.update`.
41
+ # Send this event to update the session’s configuration. The client may send this
42
+ # event at any time to update any field except for `voice` and `model`. `voice`
43
+ # can be updated only if there have been no other audio outputs yet.
41
44
  #
42
45
  # When the server receives a `session.update`, it will respond with a
43
46
  # `session.updated` event showing the full, effective configuration. Only the
44
- # fields that are present are updated. To clear a field like `instructions`, pass
45
- # an empty string.
47
+ # fields that are present in the `session.update` are updated. To clear a field
48
+ # like `instructions`, pass an empty string. To clear a field like `tools`, pass
49
+ # an empty array. To clear a field like `turn_detection`, pass `null`.
46
50
  sig do
47
51
  params(
48
- session: OpenAI::Realtime::RealtimeSessionCreateRequest::OrHash,
52
+ session:
53
+ T.any(
54
+ OpenAI::Realtime::RealtimeSessionCreateRequest::OrHash,
55
+ OpenAI::Realtime::RealtimeTranscriptionSessionCreateRequest::OrHash
56
+ ),
49
57
  event_id: String,
50
58
  type: Symbol
51
59
  ).returns(T.attached_class)
52
60
  end
53
61
  def self.new(
54
- # Realtime session object configuration.
62
+ # Update the Realtime session. Choose either a realtime session or a transcription
63
+ # session.
55
64
  session:,
56
- # Optional client-generated ID used to identify this event.
65
+ # Optional client-generated ID used to identify this event. This is an arbitrary
66
+ # string that a client may assign. It will be passed back if there is an error
67
+ # with the event, but the corresponding `session.updated` event will not include
68
+ # it.
57
69
  event_id: nil,
58
70
  # The event type, must be `session.update`.
59
71
  type: :"session.update"
@@ -63,7 +75,11 @@ module OpenAI
63
75
  sig do
64
76
  override.returns(
65
77
  {
66
- session: OpenAI::Realtime::RealtimeSessionCreateRequest,
78
+ session:
79
+ T.any(
80
+ OpenAI::Realtime::RealtimeSessionCreateRequest,
81
+ OpenAI::Realtime::RealtimeTranscriptionSessionCreateRequest
82
+ ),
67
83
  type: Symbol,
68
84
  event_id: String
69
85
  }
@@ -71,6 +87,28 @@ module OpenAI
71
87
  end
72
88
  def to_hash
73
89
  end
90
+
91
+ # Update the Realtime session. Choose either a realtime session or a transcription
92
+ # session.
93
+ module Session
94
+ extend OpenAI::Internal::Type::Union
95
+
96
+ Variants =
97
+ T.type_alias do
98
+ T.any(
99
+ OpenAI::Realtime::RealtimeSessionCreateRequest,
100
+ OpenAI::Realtime::RealtimeTranscriptionSessionCreateRequest
101
+ )
102
+ end
103
+
104
+ sig do
105
+ override.returns(
106
+ T::Array[OpenAI::Realtime::SessionUpdateEvent::Session::Variants]
107
+ )
108
+ end
109
+ def self.variants
110
+ end
111
+ end
74
112
  end
75
113
  end
76
114
  end
@@ -16,12 +16,16 @@ module OpenAI
16
16
  sig { returns(String) }
17
17
  attr_accessor :event_id
18
18
 
19
- # Realtime session object.
20
- sig { returns(OpenAI::Realtime::RealtimeSession) }
21
- attr_reader :session
22
-
23
- sig { params(session: OpenAI::Realtime::RealtimeSession::OrHash).void }
24
- attr_writer :session
19
+ # The session configuration.
20
+ sig do
21
+ returns(
22
+ T.any(
23
+ OpenAI::Realtime::RealtimeSessionCreateRequest,
24
+ OpenAI::Realtime::RealtimeTranscriptionSessionCreateRequest
25
+ )
26
+ )
27
+ end
28
+ attr_accessor :session
25
29
 
26
30
  # The event type, must be `session.updated`.
27
31
  sig { returns(Symbol) }
@@ -32,14 +36,18 @@ module OpenAI
32
36
  sig do
33
37
  params(
34
38
  event_id: String,
35
- session: OpenAI::Realtime::RealtimeSession::OrHash,
39
+ session:
40
+ T.any(
41
+ OpenAI::Realtime::RealtimeSessionCreateRequest::OrHash,
42
+ OpenAI::Realtime::RealtimeTranscriptionSessionCreateRequest::OrHash
43
+ ),
36
44
  type: Symbol
37
45
  ).returns(T.attached_class)
38
46
  end
39
47
  def self.new(
40
48
  # The unique ID of the server event.
41
49
  event_id:,
42
- # Realtime session object.
50
+ # The session configuration.
43
51
  session:,
44
52
  # The event type, must be `session.updated`.
45
53
  type: :"session.updated"
@@ -50,13 +58,38 @@ module OpenAI
50
58
  override.returns(
51
59
  {
52
60
  event_id: String,
53
- session: OpenAI::Realtime::RealtimeSession,
61
+ session:
62
+ T.any(
63
+ OpenAI::Realtime::RealtimeSessionCreateRequest,
64
+ OpenAI::Realtime::RealtimeTranscriptionSessionCreateRequest
65
+ ),
54
66
  type: Symbol
55
67
  }
56
68
  )
57
69
  end
58
70
  def to_hash
59
71
  end
72
+
73
+ # The session configuration.
74
+ module Session
75
+ extend OpenAI::Internal::Type::Union
76
+
77
+ Variants =
78
+ T.type_alias do
79
+ T.any(
80
+ OpenAI::Realtime::RealtimeSessionCreateRequest,
81
+ OpenAI::Realtime::RealtimeTranscriptionSessionCreateRequest
82
+ )
83
+ end
84
+
85
+ sig do
86
+ override.returns(
87
+ T::Array[OpenAI::Realtime::SessionUpdatedEvent::Session::Variants]
88
+ )
89
+ end
90
+ def self.variants
91
+ end
92
+ end
60
93
  end
61
94
  end
62
95
  end