openai 0.56.0 → 0.58.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 (89) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +60 -0
  3. data/README.md +98 -1
  4. data/lib/openai/auth/subject_token_provider.rb +15 -0
  5. data/lib/openai/auth/subject_token_providers/azure_managed_identity_token_provider.rb +88 -0
  6. data/lib/openai/auth/subject_token_providers/gcp_id_token_provider.rb +66 -0
  7. data/lib/openai/auth/subject_token_providers/k8s_service_account_token_provider.rb +37 -0
  8. data/lib/openai/auth/token_type.rb +10 -0
  9. data/lib/openai/auth/workload_identity.rb +23 -0
  10. data/lib/openai/auth/workload_identity_auth.rb +176 -0
  11. data/lib/openai/client.rb +59 -4
  12. data/lib/openai/errors.rb +39 -0
  13. data/lib/openai/internal/util.rb +22 -7
  14. data/lib/openai/models/conversations/conversation_item.rb +4 -1
  15. data/lib/openai/models/conversations/conversation_item_list.rb +2 -2
  16. data/lib/openai/models/conversations/message.rb +28 -1
  17. data/lib/openai/models/oauth_error_code.rb +29 -0
  18. data/lib/openai/models/realtime/realtime_session_create_request.rb +4 -3
  19. data/lib/openai/models/realtime/realtime_session_create_response.rb +7 -5
  20. data/lib/openai/models/realtime/realtime_tracing_config.rb +3 -2
  21. data/lib/openai/models/responses/compacted_response.rb +2 -2
  22. data/lib/openai/models/responses/computer_action.rb +45 -5
  23. data/lib/openai/models/responses/response.rb +2 -2
  24. data/lib/openai/models/responses/response_computer_tool_call.rb +45 -5
  25. data/lib/openai/models/responses/response_computer_tool_call_output_item.rb +31 -22
  26. data/lib/openai/models/responses/response_custom_tool_call_item.rb +53 -0
  27. data/lib/openai/models/responses/response_custom_tool_call_output_item.rb +53 -0
  28. data/lib/openai/models/responses/response_function_tool_call_item.rb +31 -1
  29. data/lib/openai/models/responses/response_function_tool_call_output_item.rb +14 -6
  30. data/lib/openai/models/responses/response_input_message_item.rb +8 -20
  31. data/lib/openai/models/responses/response_item.rb +16 -1
  32. data/lib/openai/models/responses/response_item_list.rb +2 -2
  33. data/lib/openai/models/responses/response_output_item.rb +120 -1
  34. data/lib/openai/models/responses/response_output_item_added_event.rb +2 -2
  35. data/lib/openai/models/responses/response_output_item_done_event.rb +2 -2
  36. data/lib/openai/models/vector_stores/file_batch_create_params.rb +9 -5
  37. data/lib/openai/models/vector_stores/file_create_params.rb +3 -1
  38. data/lib/openai/models.rb +2 -0
  39. data/lib/openai/resources/conversations/items.rb +2 -2
  40. data/lib/openai/resources/realtime/calls.rb +1 -1
  41. data/lib/openai/resources/responses/input_items.rb +1 -1
  42. data/lib/openai/version.rb +1 -1
  43. data/lib/openai.rb +12 -2
  44. data/rbi/openai/auth.rbi +55 -0
  45. data/rbi/openai/internal/util.rbi +8 -0
  46. data/rbi/openai/models/conversations/conversation_item.rbi +1 -0
  47. data/rbi/openai/models/conversations/conversation_item_list.rbi +1 -0
  48. data/rbi/openai/models/conversations/message.rbi +53 -1
  49. data/rbi/openai/models/oauth_error_code.rbi +24 -0
  50. data/rbi/openai/models/realtime/realtime_session_create_request.rbi +6 -4
  51. data/rbi/openai/models/realtime/realtime_session_create_response.rbi +9 -6
  52. data/rbi/openai/models/realtime/realtime_tracing_config.rbi +3 -2
  53. data/rbi/openai/models/responses/compacted_response.rbi +6 -1
  54. data/rbi/openai/models/responses/computer_action.rbi +71 -11
  55. data/rbi/openai/models/responses/response.rbi +6 -1
  56. data/rbi/openai/models/responses/response_computer_tool_call.rbi +71 -11
  57. data/rbi/openai/models/responses/response_computer_tool_call_output_item.rbi +71 -65
  58. data/rbi/openai/models/responses/response_custom_tool_call_item.rbi +111 -0
  59. data/rbi/openai/models/responses/response_custom_tool_call_output_item.rbi +111 -0
  60. data/rbi/openai/models/responses/response_function_tool_call_item.rbi +81 -3
  61. data/rbi/openai/models/responses/response_function_tool_call_output_item.rbi +19 -18
  62. data/rbi/openai/models/responses/response_input_message_item.rbi +8 -49
  63. data/rbi/openai/models/responses/response_item.rbi +5 -1
  64. data/rbi/openai/models/responses/response_item_list.rbi +5 -1
  65. data/rbi/openai/models/responses/response_output_item.rbi +186 -1
  66. data/rbi/openai/models/responses/response_output_item_added_event.rbi +6 -1
  67. data/rbi/openai/models/responses/response_output_item_done_event.rbi +6 -1
  68. data/rbi/openai/models/vector_stores/file_batch_create_params.rbi +18 -10
  69. data/rbi/openai/models/vector_stores/file_create_params.rbi +6 -2
  70. data/rbi/openai/models.rbi +2 -0
  71. data/rbi/openai/resources/realtime/calls.rbi +3 -2
  72. data/rbi/openai/resources/vector_stores/file_batches.rbi +6 -4
  73. data/rbi/openai/resources/vector_stores/files.rbi +3 -1
  74. data/sig/openai/internal/util.rbs +4 -0
  75. data/sig/openai/models/conversations/conversation_item.rbs +1 -0
  76. data/sig/openai/models/conversations/message.rbs +18 -2
  77. data/sig/openai/models/oauth_error_code.rbs +14 -0
  78. data/sig/openai/models/responses/computer_action.rbs +53 -11
  79. data/sig/openai/models/responses/response_computer_tool_call.rbs +53 -11
  80. data/sig/openai/models/responses/response_computer_tool_call_output_item.rbs +23 -19
  81. data/sig/openai/models/responses/response_custom_tool_call_item.rbs +52 -0
  82. data/sig/openai/models/responses/response_custom_tool_call_output_item.rbs +52 -0
  83. data/sig/openai/models/responses/response_function_tool_call_item.rbs +38 -3
  84. data/sig/openai/models/responses/response_function_tool_call_output_item.rbs +10 -7
  85. data/sig/openai/models/responses/response_input_message_item.rbs +7 -21
  86. data/sig/openai/models/responses/response_item.rbs +4 -0
  87. data/sig/openai/models/responses/response_output_item.rbs +86 -0
  88. data/sig/openai/models.rbs +2 -0
  89. metadata +19 -2
data/lib/openai/client.rb CHANGED
@@ -15,6 +15,8 @@ module OpenAI
15
15
  # Default max retry delay in seconds.
16
16
  DEFAULT_MAX_RETRY_DELAY = 8.0
17
17
 
18
+ WORKLOAD_IDENTITY_API_KEY_PLACEHOLDER = "workload-identity-auth"
19
+
18
20
  # @return [String]
19
21
  attr_reader :api_key
20
22
 
@@ -27,6 +29,10 @@ module OpenAI
27
29
  # @return [String, nil]
28
30
  attr_reader :webhook_secret
29
31
 
32
+ # @return [OpenAI::Auth::WorkloadIdentityAuth, nil]
33
+ # @api private
34
+ attr_reader :workload_identity_auth
35
+
30
36
  # Given a prompt, the model will return one or more predicted completions, and can
31
37
  # also return the probabilities of alternative tokens at each position.
32
38
  # @return [OpenAI::Resources::Completions]
@@ -116,13 +122,48 @@ module OpenAI
116
122
  {"authorization" => "Bearer #{@api_key}"}
117
123
  end
118
124
 
125
+ # @api private
126
+ private def request_replayable?(request)
127
+ body = request[:body]
128
+ return true if body.nil? || body.is_a?(String)
129
+ return false if body.respond_to?(:read)
130
+ true
131
+ end
132
+
133
+ # @api private
134
+ private def send_request(request, redirect_count:, retry_count:, send_retry_header:)
135
+ return super unless @workload_identity_auth
136
+
137
+ token = @workload_identity_auth.get_token
138
+ updated_headers = request[:headers].merge("authorization" => "Bearer #{token}")
139
+ updated_request = request.merge(headers: updated_headers)
140
+
141
+ begin
142
+ super(updated_request, redirect_count: redirect_count, retry_count: retry_count, send_retry_header: send_retry_header)
143
+ rescue OpenAI::Errors::AuthenticationError
144
+ raise unless retry_count.zero? && request_replayable?(request)
145
+ @workload_identity_auth.invalidate_token
146
+
147
+ fresh_token = @workload_identity_auth.get_token
148
+ refreshed_headers = request[:headers].merge("authorization" => "Bearer #{fresh_token}")
149
+ refreshed_request = request.merge(headers: refreshed_headers)
150
+
151
+ super(refreshed_request, redirect_count: redirect_count, retry_count: retry_count + 1, send_retry_header: send_retry_header)
152
+ end
153
+ end
154
+
119
155
  # Creates and returns a new client for interacting with the API.
120
156
  #
121
- # @param api_key [String, nil] Defaults to `ENV["OPENAI_API_KEY"]`
157
+ # @param api_key [String, nil] Defaults to `ENV["OPENAI_API_KEY"]`.
158
+ # Mutually exclusive with `workload_identity`.
159
+ #
160
+ # @param workload_identity [OpenAI::Auth::WorkloadIdentity, nil]
161
+ # OAuth2 workload identity configuration for token exchange authentication.
162
+ # Mutually exclusive with `api_key`.
122
163
  #
123
- # @param organization [String, nil] Defaults to `ENV["OPENAI_ORG_ID"]`
164
+ # @param organization [String, nil] Defaults to `ENV["OPENAI_ORG_ID"]`.
124
165
  #
125
- # @param project [String, nil] Defaults to `ENV["OPENAI_PROJECT_ID"]`
166
+ # @param project [String, nil] Defaults to `ENV["OPENAI_PROJECT_ID"]`.
126
167
  #
127
168
  # @param webhook_secret [String, nil] Defaults to `ENV["OPENAI_WEBHOOK_SECRET"]`
128
169
  #
@@ -138,6 +179,7 @@ module OpenAI
138
179
  # @param max_retry_delay [Float]
139
180
  def initialize(
140
181
  api_key: ENV["OPENAI_API_KEY"],
182
+ workload_identity: nil,
141
183
  organization: ENV["OPENAI_ORG_ID"],
142
184
  project: ENV["OPENAI_PROJECT_ID"],
143
185
  webhook_secret: ENV["OPENAI_WEBHOOK_SECRET"],
@@ -149,7 +191,20 @@ module OpenAI
149
191
  )
150
192
  base_url ||= "https://api.openai.com/v1"
151
193
 
152
- if api_key.nil?
194
+ if workload_identity && api_key && api_key != WORKLOAD_IDENTITY_API_KEY_PLACEHOLDER
195
+ raise ArgumentError.new(
196
+ "The `api_key` and `workload_identity` arguments are mutually exclusive; " \
197
+ "only one can be passed at a time."
198
+ )
199
+ end
200
+
201
+ if workload_identity
202
+ @workload_identity_auth = OpenAI::Auth::WorkloadIdentityAuth.new(
203
+ workload_identity,
204
+ organization
205
+ )
206
+ api_key = WORKLOAD_IDENTITY_API_KEY_PLACEHOLDER
207
+ elsif api_key.nil?
153
208
  raise ArgumentError.new("api_key is required, and can be set via environ: \"OPENAI_API_KEY\"")
154
209
  end
155
210
 
data/lib/openai/errors.rb CHANGED
@@ -263,5 +263,44 @@ module OpenAI
263
263
  class InternalServerError < OpenAI::Errors::APIStatusError
264
264
  HTTP_STATUS = (500..)
265
265
  end
266
+
267
+ class OAuthError < OpenAI::Errors::APIStatusError
268
+ # @return [OpenAI::Models::OAuthErrorCode::Variants, nil]
269
+ attr_reader :error_code
270
+
271
+ def initialize(status:, body:, headers:)
272
+ @error_code = OpenAI::Internal::Type::Converter.coerce(OpenAI::Models::OAuthErrorCode, body&.dig(:error))
273
+
274
+ message =
275
+ if body&.dig(:error_description)
276
+ body[:error_description]
277
+ elsif @error_code
278
+ @error_code
279
+ else
280
+ "OAuth2 authentication error"
281
+ end
282
+
283
+ super(
284
+ url: URI("https://auth.openai.com/oauth/token"),
285
+ status: status,
286
+ headers: headers,
287
+ body: body,
288
+ request: nil,
289
+ response: nil,
290
+ message: message
291
+ )
292
+ end
293
+ end
294
+
295
+ class SubjectTokenProviderError < OpenAI::Errors::Error
296
+ attr_reader :provider
297
+ attr_accessor :cause
298
+
299
+ def initialize(message:, provider:, cause: nil)
300
+ super(message)
301
+ @provider = provider
302
+ @cause = cause
303
+ end
304
+ end
266
305
  end
267
306
  end
@@ -157,7 +157,7 @@ module OpenAI
157
157
  in Hash | nil => coerced
158
158
  coerced
159
159
  else
160
- message = "Expected a #{Hash} or #{OpenAI::Internal::Type::BaseModel}, got #{data.inspect}"
160
+ message = "Expected a #{Hash} or #{OpenAI::Internal::Type::BaseModel}, got #{input.inspect}"
161
161
  raise ArgumentError.new(message)
162
162
  end
163
163
  end
@@ -237,6 +237,11 @@ module OpenAI
237
237
  end
238
238
  end
239
239
 
240
+ # @type [Regexp]
241
+ #
242
+ # https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3
243
+ RFC_3986_NOT_PCHARS = /[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/
244
+
240
245
  class << self
241
246
  # @api private
242
247
  #
@@ -247,6 +252,15 @@ module OpenAI
247
252
  "#{uri.scheme}://#{uri.host}#{":#{uri.port}" unless uri.port == uri.default_port}"
248
253
  end
249
254
 
255
+ # @api private
256
+ #
257
+ # @param path [String, Integer]
258
+ #
259
+ # @return [String]
260
+ def encode_path(path)
261
+ path.to_s.gsub(OpenAI::Internal::Util::RFC_3986_NOT_PCHARS) { ERB::Util.url_encode(_1) }
262
+ end
263
+
250
264
  # @api private
251
265
  #
252
266
  # @param path [String, Array<String>]
@@ -259,7 +273,7 @@ module OpenAI
259
273
  in []
260
274
  ""
261
275
  in [String => p, *interpolations]
262
- encoded = interpolations.map { ERB::Util.url_encode(_1) }
276
+ encoded = interpolations.map { encode_path(_1) }
263
277
  format(p, *encoded)
264
278
  end
265
279
  end
@@ -571,16 +585,15 @@ module OpenAI
571
585
  y << "Content-Disposition: form-data"
572
586
 
573
587
  unless key.nil?
574
- name = ERB::Util.url_encode(key.to_s)
575
- y << "; name=\"#{name}\""
588
+ y << "; name=\"#{key}\""
576
589
  end
577
590
 
578
591
  case val
579
592
  in OpenAI::FilePart unless val.filename.nil?
580
- filename = ERB::Util.url_encode(val.filename)
593
+ filename = encode_path(val.filename)
581
594
  y << "; filename=\"#{filename}\""
582
595
  in Pathname | IO
583
- filename = ERB::Util.url_encode(::File.basename(val.to_path))
596
+ filename = encode_path(::File.basename(val.to_path))
584
597
  y << "; filename=\"#{filename}\""
585
598
  else
586
599
  end
@@ -597,6 +610,7 @@ module OpenAI
597
610
  #
598
611
  # @return [Array(String, Enumerable<String>)]
599
612
  private def encode_multipart_streaming(body)
613
+ # rubocop:disable Style/CaseEquality
600
614
  # RFC 1521 Section 7.2.1 says we should have 70 char maximum for boundary length
601
615
  boundary = SecureRandom.urlsafe_base64(46)
602
616
 
@@ -606,7 +620,7 @@ module OpenAI
606
620
  in Hash
607
621
  body.each do |key, val|
608
622
  case val
609
- in Array if val.all? { primitive?(_1) }
623
+ in Array if val.all? { primitive?(_1) || OpenAI::Internal::Type::FileInput === _1 }
610
624
  val.each do |v|
611
625
  write_multipart_chunk(y, boundary: boundary, key: key, val: v, closing: closing)
612
626
  end
@@ -622,6 +636,7 @@ module OpenAI
622
636
 
623
637
  fused_io = fused_enum(strio) { closing.each(&:call) }
624
638
  [boundary, fused_io]
639
+ # rubocop:enable Style/CaseEquality
625
640
  end
626
641
 
627
642
  # @api private
@@ -49,6 +49,9 @@ module OpenAI
49
49
  # [managing context](https://platform.openai.com/docs/guides/conversation-state).
50
50
  variant :reasoning, -> { OpenAI::Responses::ResponseReasoningItem }
51
51
 
52
+ # A compaction item generated by the [`v1/responses/compact` API](https://platform.openai.com/docs/api-reference/responses/compact).
53
+ variant :compaction, -> { OpenAI::Responses::ResponseCompactionItem }
54
+
52
55
  # A tool call to run code.
53
56
  variant :code_interpreter_call, -> { OpenAI::Responses::ResponseCodeInterpreterToolCall }
54
57
 
@@ -608,7 +611,7 @@ module OpenAI
608
611
  end
609
612
 
610
613
  # @!method self.variants
611
- # @return [Array(OpenAI::Models::Conversations::Message, OpenAI::Models::Responses::ResponseFunctionToolCallItem, OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem, OpenAI::Models::Responses::ResponseFileSearchToolCall, OpenAI::Models::Responses::ResponseFunctionWebSearch, OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall, OpenAI::Models::Responses::ResponseComputerToolCall, OpenAI::Models::Responses::ResponseComputerToolCallOutputItem, OpenAI::Models::Responses::ResponseToolSearchCall, OpenAI::Models::Responses::ResponseToolSearchOutputItem, OpenAI::Models::Responses::ResponseReasoningItem, OpenAI::Models::Responses::ResponseCodeInterpreterToolCall, OpenAI::Models::Conversations::ConversationItem::LocalShellCall, OpenAI::Models::Conversations::ConversationItem::LocalShellCallOutput, OpenAI::Models::Responses::ResponseFunctionShellToolCall, OpenAI::Models::Responses::ResponseFunctionShellToolCallOutput, OpenAI::Models::Responses::ResponseApplyPatchToolCall, OpenAI::Models::Responses::ResponseApplyPatchToolCallOutput, OpenAI::Models::Conversations::ConversationItem::McpListTools, OpenAI::Models::Conversations::ConversationItem::McpApprovalRequest, OpenAI::Models::Conversations::ConversationItem::McpApprovalResponse, OpenAI::Models::Conversations::ConversationItem::McpCall, OpenAI::Models::Responses::ResponseCustomToolCall, OpenAI::Models::Responses::ResponseCustomToolCallOutput)]
614
+ # @return [Array(OpenAI::Models::Conversations::Message, OpenAI::Models::Responses::ResponseFunctionToolCallItem, OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem, OpenAI::Models::Responses::ResponseFileSearchToolCall, OpenAI::Models::Responses::ResponseFunctionWebSearch, OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall, OpenAI::Models::Responses::ResponseComputerToolCall, OpenAI::Models::Responses::ResponseComputerToolCallOutputItem, OpenAI::Models::Responses::ResponseToolSearchCall, OpenAI::Models::Responses::ResponseToolSearchOutputItem, OpenAI::Models::Responses::ResponseReasoningItem, OpenAI::Models::Responses::ResponseCompactionItem, OpenAI::Models::Responses::ResponseCodeInterpreterToolCall, OpenAI::Models::Conversations::ConversationItem::LocalShellCall, OpenAI::Models::Conversations::ConversationItem::LocalShellCallOutput, OpenAI::Models::Responses::ResponseFunctionShellToolCall, OpenAI::Models::Responses::ResponseFunctionShellToolCallOutput, OpenAI::Models::Responses::ResponseApplyPatchToolCall, OpenAI::Models::Responses::ResponseApplyPatchToolCallOutput, OpenAI::Models::Conversations::ConversationItem::McpListTools, OpenAI::Models::Conversations::ConversationItem::McpApprovalRequest, OpenAI::Models::Conversations::ConversationItem::McpApprovalResponse, OpenAI::Models::Conversations::ConversationItem::McpCall, OpenAI::Models::Responses::ResponseCustomToolCall, OpenAI::Models::Responses::ResponseCustomToolCallOutput)]
612
615
  end
613
616
  end
614
617
 
@@ -8,7 +8,7 @@ module OpenAI
8
8
  # @!attribute data
9
9
  # A list of conversation items.
10
10
  #
11
- # @return [Array<OpenAI::Models::Conversations::Message, OpenAI::Models::Responses::ResponseFunctionToolCallItem, OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem, OpenAI::Models::Responses::ResponseFileSearchToolCall, OpenAI::Models::Responses::ResponseFunctionWebSearch, OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall, OpenAI::Models::Responses::ResponseComputerToolCall, OpenAI::Models::Responses::ResponseComputerToolCallOutputItem, OpenAI::Models::Responses::ResponseToolSearchCall, OpenAI::Models::Responses::ResponseToolSearchOutputItem, OpenAI::Models::Responses::ResponseReasoningItem, OpenAI::Models::Responses::ResponseCodeInterpreterToolCall, OpenAI::Models::Conversations::ConversationItem::LocalShellCall, OpenAI::Models::Conversations::ConversationItem::LocalShellCallOutput, OpenAI::Models::Responses::ResponseFunctionShellToolCall, OpenAI::Models::Responses::ResponseFunctionShellToolCallOutput, OpenAI::Models::Responses::ResponseApplyPatchToolCall, OpenAI::Models::Responses::ResponseApplyPatchToolCallOutput, OpenAI::Models::Conversations::ConversationItem::McpListTools, OpenAI::Models::Conversations::ConversationItem::McpApprovalRequest, OpenAI::Models::Conversations::ConversationItem::McpApprovalResponse, OpenAI::Models::Conversations::ConversationItem::McpCall, OpenAI::Models::Responses::ResponseCustomToolCall, OpenAI::Models::Responses::ResponseCustomToolCallOutput>]
11
+ # @return [Array<OpenAI::Models::Conversations::Message, OpenAI::Models::Responses::ResponseFunctionToolCallItem, OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem, OpenAI::Models::Responses::ResponseFileSearchToolCall, OpenAI::Models::Responses::ResponseFunctionWebSearch, OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall, OpenAI::Models::Responses::ResponseComputerToolCall, OpenAI::Models::Responses::ResponseComputerToolCallOutputItem, OpenAI::Models::Responses::ResponseToolSearchCall, OpenAI::Models::Responses::ResponseToolSearchOutputItem, OpenAI::Models::Responses::ResponseReasoningItem, OpenAI::Models::Responses::ResponseCompactionItem, OpenAI::Models::Responses::ResponseCodeInterpreterToolCall, OpenAI::Models::Conversations::ConversationItem::LocalShellCall, OpenAI::Models::Conversations::ConversationItem::LocalShellCallOutput, OpenAI::Models::Responses::ResponseFunctionShellToolCall, OpenAI::Models::Responses::ResponseFunctionShellToolCallOutput, OpenAI::Models::Responses::ResponseApplyPatchToolCall, OpenAI::Models::Responses::ResponseApplyPatchToolCallOutput, OpenAI::Models::Conversations::ConversationItem::McpListTools, OpenAI::Models::Conversations::ConversationItem::McpApprovalRequest, OpenAI::Models::Conversations::ConversationItem::McpApprovalResponse, OpenAI::Models::Conversations::ConversationItem::McpCall, OpenAI::Models::Responses::ResponseCustomToolCall, OpenAI::Models::Responses::ResponseCustomToolCallOutput>]
12
12
  required :data, -> { OpenAI::Internal::Type::ArrayOf[union: OpenAI::Conversations::ConversationItem] }
13
13
 
14
14
  # @!attribute first_id
@@ -38,7 +38,7 @@ module OpenAI
38
38
  # @!method initialize(data:, first_id:, has_more:, last_id:, object: :list)
39
39
  # A list of Conversation items.
40
40
  #
41
- # @param data [Array<OpenAI::Models::Conversations::Message, OpenAI::Models::Responses::ResponseFunctionToolCallItem, OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem, OpenAI::Models::Responses::ResponseFileSearchToolCall, OpenAI::Models::Responses::ResponseFunctionWebSearch, OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall, OpenAI::Models::Responses::ResponseComputerToolCall, OpenAI::Models::Responses::ResponseComputerToolCallOutputItem, OpenAI::Models::Responses::ResponseToolSearchCall, OpenAI::Models::Responses::ResponseToolSearchOutputItem, OpenAI::Models::Responses::ResponseReasoningItem, OpenAI::Models::Responses::ResponseCodeInterpreterToolCall, OpenAI::Models::Conversations::ConversationItem::LocalShellCall, OpenAI::Models::Conversations::ConversationItem::LocalShellCallOutput, OpenAI::Models::Responses::ResponseFunctionShellToolCall, OpenAI::Models::Responses::ResponseFunctionShellToolCallOutput, OpenAI::Models::Responses::ResponseApplyPatchToolCall, OpenAI::Models::Responses::ResponseApplyPatchToolCallOutput, OpenAI::Models::Conversations::ConversationItem::McpListTools, OpenAI::Models::Conversations::ConversationItem::McpApprovalRequest, OpenAI::Models::Conversations::ConversationItem::McpApprovalResponse, OpenAI::Models::Conversations::ConversationItem::McpCall, OpenAI::Models::Responses::ResponseCustomToolCall, OpenAI::Models::Responses::ResponseCustomToolCallOutput>] A list of conversation items.
41
+ # @param data [Array<OpenAI::Models::Conversations::Message, OpenAI::Models::Responses::ResponseFunctionToolCallItem, OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem, OpenAI::Models::Responses::ResponseFileSearchToolCall, OpenAI::Models::Responses::ResponseFunctionWebSearch, OpenAI::Models::Conversations::ConversationItem::ImageGenerationCall, OpenAI::Models::Responses::ResponseComputerToolCall, OpenAI::Models::Responses::ResponseComputerToolCallOutputItem, OpenAI::Models::Responses::ResponseToolSearchCall, OpenAI::Models::Responses::ResponseToolSearchOutputItem, OpenAI::Models::Responses::ResponseReasoningItem, OpenAI::Models::Responses::ResponseCompactionItem, OpenAI::Models::Responses::ResponseCodeInterpreterToolCall, OpenAI::Models::Conversations::ConversationItem::LocalShellCall, OpenAI::Models::Conversations::ConversationItem::LocalShellCallOutput, OpenAI::Models::Responses::ResponseFunctionShellToolCall, OpenAI::Models::Responses::ResponseFunctionShellToolCallOutput, OpenAI::Models::Responses::ResponseApplyPatchToolCall, OpenAI::Models::Responses::ResponseApplyPatchToolCallOutput, OpenAI::Models::Conversations::ConversationItem::McpListTools, OpenAI::Models::Conversations::ConversationItem::McpApprovalRequest, OpenAI::Models::Conversations::ConversationItem::McpApprovalResponse, OpenAI::Models::Conversations::ConversationItem::McpCall, OpenAI::Models::Responses::ResponseCustomToolCall, OpenAI::Models::Responses::ResponseCustomToolCallOutput>] A list of conversation items.
42
42
  #
43
43
  # @param first_id [String] The ID of the first item in the list.
44
44
  #
@@ -36,7 +36,16 @@ module OpenAI
36
36
  # @return [Symbol, :message]
37
37
  required :type, const: :message
38
38
 
39
- # @!method initialize(id:, content:, role:, status:, type: :message)
39
+ # @!attribute phase
40
+ # Labels an `assistant` message as intermediate commentary (`commentary`) or the
41
+ # final answer (`final_answer`). For models like `gpt-5.3-codex` and beyond, when
42
+ # sending follow-up requests, preserve and resend phase on all assistant messages
43
+ # — dropping it can degrade performance. Not used for user messages.
44
+ #
45
+ # @return [Symbol, OpenAI::Models::Conversations::Message::Phase, nil]
46
+ optional :phase, enum: -> { OpenAI::Conversations::Message::Phase }, nil?: true
47
+
48
+ # @!method initialize(id:, content:, role:, status:, phase: nil, type: :message)
40
49
  # Some parameter documentations has been truncated, see
41
50
  # {OpenAI::Models::Conversations::Message} for more details.
42
51
  #
@@ -50,6 +59,8 @@ module OpenAI
50
59
  #
51
60
  # @param status [Symbol, OpenAI::Models::Conversations::Message::Status] The status of item. One of `in_progress`, `completed`, or `incomplete`. Populate
52
61
  #
62
+ # @param phase [Symbol, OpenAI::Models::Conversations::Message::Phase, nil] Labels an `assistant` message as intermediate commentary (`commentary`) or the f
63
+ #
53
64
  # @param type [Symbol, :message] The type of the message. Always set to `message`.
54
65
 
55
66
  # A content part that makes up an input or output item.
@@ -144,6 +155,22 @@ module OpenAI
144
155
  # @!method self.values
145
156
  # @return [Array<Symbol>]
146
157
  end
158
+
159
+ # Labels an `assistant` message as intermediate commentary (`commentary`) or the
160
+ # final answer (`final_answer`). For models like `gpt-5.3-codex` and beyond, when
161
+ # sending follow-up requests, preserve and resend phase on all assistant messages
162
+ # — dropping it can degrade performance. Not used for user messages.
163
+ #
164
+ # @see OpenAI::Models::Conversations::Message#phase
165
+ module Phase
166
+ extend OpenAI::Internal::Type::Enum
167
+
168
+ COMMENTARY = :commentary
169
+ FINAL_ANSWER = :final_answer
170
+
171
+ # @!method self.values
172
+ # @return [Array<Symbol>]
173
+ end
147
174
  end
148
175
  end
149
176
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module OAuthErrorCode
6
+ extend OpenAI::Internal::Type::Union
7
+
8
+ variant const: -> { OpenAI::Models::OAuthErrorCode::INVALID_GRANT }
9
+
10
+ variant const: -> { OpenAI::Models::OAuthErrorCode::INVALID_SUBJECT_TOKEN }
11
+
12
+ variant String
13
+
14
+ # @!method self.variants
15
+ # @return [Array(Symbol, String)]
16
+
17
+ define_sorbet_constant!(:Variants) do
18
+ T.type_alias { T.any(OpenAI::OAuthErrorCode::TaggedSymbol, String) }
19
+ end
20
+
21
+ # @!group
22
+
23
+ INVALID_GRANT = :invalid_grant
24
+ INVALID_SUBJECT_TOKEN = :invalid_subject_token
25
+
26
+ # @!endgroup
27
+ end
28
+ end
29
+ end
@@ -88,8 +88,9 @@ module OpenAI
88
88
 
89
89
  # @!attribute tracing
90
90
  # Realtime API can write session traces to the
91
- # [Traces Dashboard](/logs?api=traces). Set to null to disable tracing. Once
92
- # tracing is enabled for a session, the configuration cannot be modified.
91
+ # [Traces Dashboard](https://platform.openai.com/logs?api=traces). Set to null to
92
+ # disable tracing. Once tracing is enabled for a session, the configuration cannot
93
+ # be modified.
93
94
  #
94
95
  # `auto` will create a trace for the session with default values for the workflow
95
96
  # name, group id, and metadata.
@@ -144,7 +145,7 @@ module OpenAI
144
145
  #
145
146
  # @param tools [Array<OpenAI::Models::Realtime::RealtimeFunctionTool, OpenAI::Models::Realtime::RealtimeToolsConfigUnion::Mcp>] Tools available to the model.
146
147
  #
147
- # @param tracing [Symbol, :auto, OpenAI::Models::Realtime::RealtimeTracingConfig::TracingConfiguration, nil] Realtime API can write session traces to the [Traces Dashboard](/logs?api=traces
148
+ # @param tracing [Symbol, :auto, OpenAI::Models::Realtime::RealtimeTracingConfig::TracingConfiguration, nil] Realtime API can write session traces to the [Traces Dashboard](https://platform
148
149
  #
149
150
  # @param truncation [Symbol, OpenAI::Models::Realtime::RealtimeTruncation::RealtimeTruncationStrategy, OpenAI::Models::Realtime::RealtimeTruncationRetentionRatio] When the number of tokens in a conversation exceeds the model's input token limi
150
151
  #
@@ -96,8 +96,9 @@ module OpenAI
96
96
 
97
97
  # @!attribute tracing
98
98
  # Realtime API can write session traces to the
99
- # [Traces Dashboard](/logs?api=traces). Set to null to disable tracing. Once
100
- # tracing is enabled for a session, the configuration cannot be modified.
99
+ # [Traces Dashboard](https://platform.openai.com/logs?api=traces). Set to null to
100
+ # disable tracing. Once tracing is enabled for a session, the configuration cannot
101
+ # be modified.
101
102
  #
102
103
  # `auto` will create a trace for the session with default values for the workflow
103
104
  # name, group id, and metadata.
@@ -155,7 +156,7 @@ module OpenAI
155
156
  #
156
157
  # @param tools [Array<OpenAI::Models::Realtime::RealtimeFunctionTool, OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tool::McpTool>] Tools available to the model.
157
158
  #
158
- # @param tracing [Symbol, :auto, OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tracing::TracingConfiguration, nil] Realtime API can write session traces to the [Traces Dashboard](/logs?api=traces
159
+ # @param tracing [Symbol, :auto, OpenAI::Models::Realtime::RealtimeSessionCreateResponse::Tracing::TracingConfiguration, nil] Realtime API can write session traces to the [Traces Dashboard](https://platform
159
160
  #
160
161
  # @param truncation [Symbol, OpenAI::Models::Realtime::RealtimeTruncation::RealtimeTruncationStrategy, OpenAI::Models::Realtime::RealtimeTruncationRetentionRatio] When the number of tokens in a conversation exceeds the model's input token limi
161
162
  #
@@ -1024,8 +1025,9 @@ module OpenAI
1024
1025
  end
1025
1026
 
1026
1027
  # Realtime API can write session traces to the
1027
- # [Traces Dashboard](/logs?api=traces). Set to null to disable tracing. Once
1028
- # tracing is enabled for a session, the configuration cannot be modified.
1028
+ # [Traces Dashboard](https://platform.openai.com/logs?api=traces). Set to null to
1029
+ # disable tracing. Once tracing is enabled for a session, the configuration cannot
1030
+ # be modified.
1029
1031
  #
1030
1032
  # `auto` will create a trace for the session with default values for the workflow
1031
1033
  # name, group id, and metadata.
@@ -4,8 +4,9 @@ module OpenAI
4
4
  module Models
5
5
  module Realtime
6
6
  # Realtime API can write session traces to the
7
- # [Traces Dashboard](/logs?api=traces). Set to null to disable tracing. Once
8
- # tracing is enabled for a session, the configuration cannot be modified.
7
+ # [Traces Dashboard](https://platform.openai.com/logs?api=traces). Set to null to
8
+ # disable tracing. Once tracing is enabled for a session, the configuration cannot
9
+ # be modified.
9
10
  #
10
11
  # `auto` will create a trace for the session with default values for the workflow
11
12
  # name, group id, and metadata.
@@ -27,7 +27,7 @@ module OpenAI
27
27
  # The compacted list of output items. This is a list of all user messages,
28
28
  # followed by a single compaction item.
29
29
  #
30
- # @return [Array<OpenAI::Models::Responses::ResponseOutputMessage, OpenAI::Models::Responses::ResponseFileSearchToolCall, OpenAI::Models::Responses::ResponseFunctionToolCall, OpenAI::Models::Responses::ResponseFunctionWebSearch, OpenAI::Models::Responses::ResponseComputerToolCall, OpenAI::Models::Responses::ResponseReasoningItem, OpenAI::Models::Responses::ResponseToolSearchCall, OpenAI::Models::Responses::ResponseToolSearchOutputItem, OpenAI::Models::Responses::ResponseCompactionItem, OpenAI::Models::Responses::ResponseOutputItem::ImageGenerationCall, OpenAI::Models::Responses::ResponseCodeInterpreterToolCall, OpenAI::Models::Responses::ResponseOutputItem::LocalShellCall, OpenAI::Models::Responses::ResponseFunctionShellToolCall, OpenAI::Models::Responses::ResponseFunctionShellToolCallOutput, OpenAI::Models::Responses::ResponseApplyPatchToolCall, OpenAI::Models::Responses::ResponseApplyPatchToolCallOutput, OpenAI::Models::Responses::ResponseOutputItem::McpCall, OpenAI::Models::Responses::ResponseOutputItem::McpListTools, OpenAI::Models::Responses::ResponseOutputItem::McpApprovalRequest, OpenAI::Models::Responses::ResponseCustomToolCall>]
30
+ # @return [Array<OpenAI::Models::Responses::ResponseOutputMessage, OpenAI::Models::Responses::ResponseFileSearchToolCall, OpenAI::Models::Responses::ResponseFunctionToolCall, OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem, OpenAI::Models::Responses::ResponseFunctionWebSearch, OpenAI::Models::Responses::ResponseComputerToolCall, OpenAI::Models::Responses::ResponseComputerToolCallOutputItem, OpenAI::Models::Responses::ResponseReasoningItem, OpenAI::Models::Responses::ResponseToolSearchCall, OpenAI::Models::Responses::ResponseToolSearchOutputItem, OpenAI::Models::Responses::ResponseCompactionItem, OpenAI::Models::Responses::ResponseOutputItem::ImageGenerationCall, OpenAI::Models::Responses::ResponseCodeInterpreterToolCall, OpenAI::Models::Responses::ResponseOutputItem::LocalShellCall, OpenAI::Models::Responses::ResponseOutputItem::LocalShellCallOutput, OpenAI::Models::Responses::ResponseFunctionShellToolCall, OpenAI::Models::Responses::ResponseFunctionShellToolCallOutput, OpenAI::Models::Responses::ResponseApplyPatchToolCall, OpenAI::Models::Responses::ResponseApplyPatchToolCallOutput, OpenAI::Models::Responses::ResponseOutputItem::McpCall, OpenAI::Models::Responses::ResponseOutputItem::McpListTools, OpenAI::Models::Responses::ResponseOutputItem::McpApprovalRequest, OpenAI::Models::Responses::ResponseOutputItem::McpApprovalResponse, OpenAI::Models::Responses::ResponseCustomToolCall, OpenAI::Models::Responses::ResponseCustomToolCallOutputItem>]
31
31
  required :output, -> { OpenAI::Internal::Type::ArrayOf[union: OpenAI::Responses::ResponseOutputItem] }
32
32
 
33
33
  # @!attribute usage
@@ -45,7 +45,7 @@ module OpenAI
45
45
  #
46
46
  # @param created_at [Integer] Unix timestamp (in seconds) when the compacted conversation was created.
47
47
  #
48
- # @param output [Array<OpenAI::Models::Responses::ResponseOutputMessage, OpenAI::Models::Responses::ResponseFileSearchToolCall, OpenAI::Models::Responses::ResponseFunctionToolCall, OpenAI::Models::Responses::ResponseFunctionWebSearch, OpenAI::Models::Responses::ResponseComputerToolCall, OpenAI::Models::Responses::ResponseReasoningItem, OpenAI::Models::Responses::ResponseToolSearchCall, OpenAI::Models::Responses::ResponseToolSearchOutputItem, OpenAI::Models::Responses::ResponseCompactionItem, OpenAI::Models::Responses::ResponseOutputItem::ImageGenerationCall, OpenAI::Models::Responses::ResponseCodeInterpreterToolCall, OpenAI::Models::Responses::ResponseOutputItem::LocalShellCall, OpenAI::Models::Responses::ResponseFunctionShellToolCall, OpenAI::Models::Responses::ResponseFunctionShellToolCallOutput, OpenAI::Models::Responses::ResponseApplyPatchToolCall, OpenAI::Models::Responses::ResponseApplyPatchToolCallOutput, OpenAI::Models::Responses::ResponseOutputItem::McpCall, OpenAI::Models::Responses::ResponseOutputItem::McpListTools, OpenAI::Models::Responses::ResponseOutputItem::McpApprovalRequest, OpenAI::Models::Responses::ResponseCustomToolCall>] The compacted list of output items. This is a list of all user messages, followe
48
+ # @param output [Array<OpenAI::Models::Responses::ResponseOutputMessage, OpenAI::Models::Responses::ResponseFileSearchToolCall, OpenAI::Models::Responses::ResponseFunctionToolCall, OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem, OpenAI::Models::Responses::ResponseFunctionWebSearch, OpenAI::Models::Responses::ResponseComputerToolCall, OpenAI::Models::Responses::ResponseComputerToolCallOutputItem, OpenAI::Models::Responses::ResponseReasoningItem, OpenAI::Models::Responses::ResponseToolSearchCall, OpenAI::Models::Responses::ResponseToolSearchOutputItem, OpenAI::Models::Responses::ResponseCompactionItem, OpenAI::Models::Responses::ResponseOutputItem::ImageGenerationCall, OpenAI::Models::Responses::ResponseCodeInterpreterToolCall, OpenAI::Models::Responses::ResponseOutputItem::LocalShellCall, OpenAI::Models::Responses::ResponseOutputItem::LocalShellCallOutput, OpenAI::Models::Responses::ResponseFunctionShellToolCall, OpenAI::Models::Responses::ResponseFunctionShellToolCallOutput, OpenAI::Models::Responses::ResponseApplyPatchToolCall, OpenAI::Models::Responses::ResponseApplyPatchToolCallOutput, OpenAI::Models::Responses::ResponseOutputItem::McpCall, OpenAI::Models::Responses::ResponseOutputItem::McpListTools, OpenAI::Models::Responses::ResponseOutputItem::McpApprovalRequest, OpenAI::Models::Responses::ResponseOutputItem::McpApprovalResponse, OpenAI::Models::Responses::ResponseCustomToolCall, OpenAI::Models::Responses::ResponseCustomToolCallOutputItem>] The compacted list of output items. This is a list of all user messages, followe
49
49
  #
50
50
  # @param usage [OpenAI::Models::Responses::ResponseUsage] Token accounting for the compaction pass, including cached, reasoning, and total
51
51
  #
@@ -62,7 +62,13 @@ module OpenAI
62
62
  # @return [Integer]
63
63
  required :y_, Integer, api_name: :y
64
64
 
65
- # @!method initialize(button:, x:, y_:, type: :click)
65
+ # @!attribute keys
66
+ # The keys being held while clicking.
67
+ #
68
+ # @return [Array<String>, nil]
69
+ optional :keys, OpenAI::Internal::Type::ArrayOf[String], nil?: true
70
+
71
+ # @!method initialize(button:, x:, y_:, keys: nil, type: :click)
66
72
  # Some parameter documentations has been truncated, see
67
73
  # {OpenAI::Models::Responses::ComputerAction::Click} for more details.
68
74
  #
@@ -74,6 +80,8 @@ module OpenAI
74
80
  #
75
81
  # @param y_ [Integer] The y-coordinate where the click occurred.
76
82
  #
83
+ # @param keys [Array<String>, nil] The keys being held while clicking.
84
+ #
77
85
  # @param type [Symbol, :click] Specifies the event type. For a click action, this property is always `click`.
78
86
 
79
87
  # Indicates which mouse button was pressed during the click. One of `left`,
@@ -95,6 +103,12 @@ module OpenAI
95
103
  end
96
104
 
97
105
  class DoubleClick < OpenAI::Internal::Type::BaseModel
106
+ # @!attribute keys
107
+ # The keys being held while double-clicking.
108
+ #
109
+ # @return [Array<String>, nil]
110
+ required :keys, OpenAI::Internal::Type::ArrayOf[String], nil?: true
111
+
98
112
  # @!attribute type
99
113
  # Specifies the event type. For a double click action, this property is always set
100
114
  # to `double_click`.
@@ -114,12 +128,14 @@ module OpenAI
114
128
  # @return [Integer]
115
129
  required :y_, Integer, api_name: :y
116
130
 
117
- # @!method initialize(x:, y_:, type: :double_click)
131
+ # @!method initialize(keys:, x:, y_:, type: :double_click)
118
132
  # Some parameter documentations has been truncated, see
119
133
  # {OpenAI::Models::Responses::ComputerAction::DoubleClick} for more details.
120
134
  #
121
135
  # A double click action.
122
136
  #
137
+ # @param keys [Array<String>, nil] The keys being held while double-clicking.
138
+ #
123
139
  # @param x [Integer] The x-coordinate where the double click occurred.
124
140
  #
125
141
  # @param y_ [Integer] The y-coordinate where the double click occurred.
@@ -149,7 +165,13 @@ module OpenAI
149
165
  # @return [Symbol, :drag]
150
166
  required :type, const: :drag
151
167
 
152
- # @!method initialize(path:, type: :drag)
168
+ # @!attribute keys
169
+ # The keys being held while dragging the mouse.
170
+ #
171
+ # @return [Array<String>, nil]
172
+ optional :keys, OpenAI::Internal::Type::ArrayOf[String], nil?: true
173
+
174
+ # @!method initialize(path:, keys: nil, type: :drag)
153
175
  # Some parameter documentations has been truncated, see
154
176
  # {OpenAI::Models::Responses::ComputerAction::Drag} for more details.
155
177
  #
@@ -157,6 +179,8 @@ module OpenAI
157
179
  #
158
180
  # @param path [Array<OpenAI::Models::Responses::ComputerAction::Drag::Path>] An array of coordinates representing the path of the drag action. Coordinates wi
159
181
  #
182
+ # @param keys [Array<String>, nil] The keys being held while dragging the mouse.
183
+ #
160
184
  # @param type [Symbol, :drag] Specifies the event type. For a drag action, this property is always set to `dra
161
185
 
162
186
  class Path < OpenAI::Internal::Type::BaseModel
@@ -227,7 +251,13 @@ module OpenAI
227
251
  # @return [Integer]
228
252
  required :y_, Integer, api_name: :y
229
253
 
230
- # @!method initialize(x:, y_:, type: :move)
254
+ # @!attribute keys
255
+ # The keys being held while moving the mouse.
256
+ #
257
+ # @return [Array<String>, nil]
258
+ optional :keys, OpenAI::Internal::Type::ArrayOf[String], nil?: true
259
+
260
+ # @!method initialize(x:, y_:, keys: nil, type: :move)
231
261
  # Some parameter documentations has been truncated, see
232
262
  # {OpenAI::Models::Responses::ComputerAction::Move} for more details.
233
263
  #
@@ -237,6 +267,8 @@ module OpenAI
237
267
  #
238
268
  # @param y_ [Integer] The y-coordinate to move to.
239
269
  #
270
+ # @param keys [Array<String>, nil] The keys being held while moving the mouse.
271
+ #
240
272
  # @param type [Symbol, :move] Specifies the event type. For a move action, this property is always set to `mov
241
273
  end
242
274
 
@@ -289,7 +321,13 @@ module OpenAI
289
321
  # @return [Integer]
290
322
  required :y_, Integer, api_name: :y
291
323
 
292
- # @!method initialize(scroll_x:, scroll_y:, x:, y_:, type: :scroll)
324
+ # @!attribute keys
325
+ # The keys being held while scrolling.
326
+ #
327
+ # @return [Array<String>, nil]
328
+ optional :keys, OpenAI::Internal::Type::ArrayOf[String], nil?: true
329
+
330
+ # @!method initialize(scroll_x:, scroll_y:, x:, y_:, keys: nil, type: :scroll)
293
331
  # Some parameter documentations has been truncated, see
294
332
  # {OpenAI::Models::Responses::ComputerAction::Scroll} for more details.
295
333
  #
@@ -303,6 +341,8 @@ module OpenAI
303
341
  #
304
342
  # @param y_ [Integer] The y-coordinate where the scroll occurred.
305
343
  #
344
+ # @param keys [Array<String>, nil] The keys being held while scrolling.
345
+ #
306
346
  # @param type [Symbol, :scroll] Specifies the event type. For a scroll action, this property is always set to `s
307
347
  end
308
348
 
@@ -77,7 +77,7 @@ module OpenAI
77
77
  # an `assistant` message with the content generated by the model, you might
78
78
  # consider using the `output_text` property where supported in SDKs.
79
79
  #
80
- # @return [Array<OpenAI::Models::Responses::ResponseOutputMessage, OpenAI::Models::Responses::ResponseFileSearchToolCall, OpenAI::Models::Responses::ResponseFunctionToolCall, OpenAI::Models::Responses::ResponseFunctionWebSearch, OpenAI::Models::Responses::ResponseComputerToolCall, OpenAI::Models::Responses::ResponseReasoningItem, OpenAI::Models::Responses::ResponseToolSearchCall, OpenAI::Models::Responses::ResponseToolSearchOutputItem, OpenAI::Models::Responses::ResponseCompactionItem, OpenAI::Models::Responses::ResponseOutputItem::ImageGenerationCall, OpenAI::Models::Responses::ResponseCodeInterpreterToolCall, OpenAI::Models::Responses::ResponseOutputItem::LocalShellCall, OpenAI::Models::Responses::ResponseFunctionShellToolCall, OpenAI::Models::Responses::ResponseFunctionShellToolCallOutput, OpenAI::Models::Responses::ResponseApplyPatchToolCall, OpenAI::Models::Responses::ResponseApplyPatchToolCallOutput, OpenAI::Models::Responses::ResponseOutputItem::McpCall, OpenAI::Models::Responses::ResponseOutputItem::McpListTools, OpenAI::Models::Responses::ResponseOutputItem::McpApprovalRequest, OpenAI::Models::Responses::ResponseCustomToolCall>]
80
+ # @return [Array<OpenAI::Models::Responses::ResponseOutputMessage, OpenAI::Models::Responses::ResponseFileSearchToolCall, OpenAI::Models::Responses::ResponseFunctionToolCall, OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem, OpenAI::Models::Responses::ResponseFunctionWebSearch, OpenAI::Models::Responses::ResponseComputerToolCall, OpenAI::Models::Responses::ResponseComputerToolCallOutputItem, OpenAI::Models::Responses::ResponseReasoningItem, OpenAI::Models::Responses::ResponseToolSearchCall, OpenAI::Models::Responses::ResponseToolSearchOutputItem, OpenAI::Models::Responses::ResponseCompactionItem, OpenAI::Models::Responses::ResponseOutputItem::ImageGenerationCall, OpenAI::Models::Responses::ResponseCodeInterpreterToolCall, OpenAI::Models::Responses::ResponseOutputItem::LocalShellCall, OpenAI::Models::Responses::ResponseOutputItem::LocalShellCallOutput, OpenAI::Models::Responses::ResponseFunctionShellToolCall, OpenAI::Models::Responses::ResponseFunctionShellToolCallOutput, OpenAI::Models::Responses::ResponseApplyPatchToolCall, OpenAI::Models::Responses::ResponseApplyPatchToolCallOutput, OpenAI::Models::Responses::ResponseOutputItem::McpCall, OpenAI::Models::Responses::ResponseOutputItem::McpListTools, OpenAI::Models::Responses::ResponseOutputItem::McpApprovalRequest, OpenAI::Models::Responses::ResponseOutputItem::McpApprovalResponse, OpenAI::Models::Responses::ResponseCustomToolCall, OpenAI::Models::Responses::ResponseCustomToolCallOutputItem>]
81
81
  required :output, -> { OpenAI::Internal::Type::ArrayOf[union: OpenAI::Responses::ResponseOutputItem] }
82
82
 
83
83
  # @!attribute parallel_tool_calls
@@ -344,7 +344,7 @@ module OpenAI
344
344
  #
345
345
  # @param model [String, Symbol, OpenAI::Models::ChatModel, OpenAI::Models::ResponsesModel::ResponsesOnlyModel] Model ID used to generate the response, like `gpt-4o` or `o3`. OpenAI
346
346
  #
347
- # @param output [Array<OpenAI::Models::Responses::ResponseOutputMessage, OpenAI::Models::Responses::ResponseFileSearchToolCall, OpenAI::Models::Responses::ResponseFunctionToolCall, OpenAI::Models::Responses::ResponseFunctionWebSearch, OpenAI::Models::Responses::ResponseComputerToolCall, OpenAI::Models::Responses::ResponseReasoningItem, OpenAI::Models::Responses::ResponseToolSearchCall, OpenAI::Models::Responses::ResponseToolSearchOutputItem, OpenAI::Models::Responses::ResponseCompactionItem, OpenAI::Models::Responses::ResponseOutputItem::ImageGenerationCall, OpenAI::Models::Responses::ResponseCodeInterpreterToolCall, OpenAI::Models::Responses::ResponseOutputItem::LocalShellCall, OpenAI::Models::Responses::ResponseFunctionShellToolCall, OpenAI::Models::Responses::ResponseFunctionShellToolCallOutput, OpenAI::Models::Responses::ResponseApplyPatchToolCall, OpenAI::Models::Responses::ResponseApplyPatchToolCallOutput, OpenAI::Models::Responses::ResponseOutputItem::McpCall, OpenAI::Models::Responses::ResponseOutputItem::McpListTools, OpenAI::Models::Responses::ResponseOutputItem::McpApprovalRequest, OpenAI::Models::Responses::ResponseCustomToolCall>] An array of content items generated by the model.
347
+ # @param output [Array<OpenAI::Models::Responses::ResponseOutputMessage, OpenAI::Models::Responses::ResponseFileSearchToolCall, OpenAI::Models::Responses::ResponseFunctionToolCall, OpenAI::Models::Responses::ResponseFunctionToolCallOutputItem, OpenAI::Models::Responses::ResponseFunctionWebSearch, OpenAI::Models::Responses::ResponseComputerToolCall, OpenAI::Models::Responses::ResponseComputerToolCallOutputItem, OpenAI::Models::Responses::ResponseReasoningItem, OpenAI::Models::Responses::ResponseToolSearchCall, OpenAI::Models::Responses::ResponseToolSearchOutputItem, OpenAI::Models::Responses::ResponseCompactionItem, OpenAI::Models::Responses::ResponseOutputItem::ImageGenerationCall, OpenAI::Models::Responses::ResponseCodeInterpreterToolCall, OpenAI::Models::Responses::ResponseOutputItem::LocalShellCall, OpenAI::Models::Responses::ResponseOutputItem::LocalShellCallOutput, OpenAI::Models::Responses::ResponseFunctionShellToolCall, OpenAI::Models::Responses::ResponseFunctionShellToolCallOutput, OpenAI::Models::Responses::ResponseApplyPatchToolCall, OpenAI::Models::Responses::ResponseApplyPatchToolCallOutput, OpenAI::Models::Responses::ResponseOutputItem::McpCall, OpenAI::Models::Responses::ResponseOutputItem::McpListTools, OpenAI::Models::Responses::ResponseOutputItem::McpApprovalRequest, OpenAI::Models::Responses::ResponseOutputItem::McpApprovalResponse, OpenAI::Models::Responses::ResponseCustomToolCall, OpenAI::Models::Responses::ResponseCustomToolCallOutputItem>] An array of content items generated by the model.
348
348
  #
349
349
  # @param parallel_tool_calls [Boolean] Whether to allow the model to run tool calls in parallel.
350
350
  #