openai 0.101.0 → 0.102.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 (90) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/README.md +1 -1
  4. data/lib/openai/models/audio/speech_create_params.rb +3 -6
  5. data/lib/openai/models/audio/voice.rb +4 -9
  6. data/lib/openai/models/audio/voice_create_params.rb +3 -100
  7. data/lib/openai/models/beta/agents/environment_create_params.rb +300 -0
  8. data/lib/openai/models/beta/agents/environment_info.rb +4 -1
  9. data/lib/openai/models/beta/agents/environment_list_params.rb +78 -0
  10. data/lib/openai/models/beta/environment_param.rb +12 -1
  11. data/lib/openai/models/chat/chat_completion_audio_param.rb +3 -3
  12. data/lib/openai/models/realtime/realtime_audio_config_output.rb +3 -6
  13. data/lib/openai/models/realtime/realtime_response_create_audio_output.rb +3 -6
  14. data/lib/openai/models/webhooks/agent_environment_failed_webhook_event.rb +73 -0
  15. data/lib/openai/models/webhooks/agent_environment_ready_webhook_event.rb +73 -0
  16. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +9 -3
  17. data/lib/openai/models/webhooks/webhook_create_params.rb +2 -0
  18. data/lib/openai/models/webhooks/webhook_test_params.rb +2 -0
  19. data/lib/openai/models/webhooks/webhook_update_params.rb +2 -0
  20. data/lib/openai/resources/audio/speech.rb +1 -2
  21. data/lib/openai/resources/audio/voices.rb +10 -10
  22. data/lib/openai/resources/beta/agents/environments/files.rb +4 -2
  23. data/lib/openai/resources/beta/agents/environments/templates.rb +10 -5
  24. data/lib/openai/resources/beta/agents/environments.rb +80 -1
  25. data/lib/openai/resources/beta/agents/sessions/artifacts.rb +8 -5
  26. data/lib/openai/resources/beta/agents/sessions/events.rb +10 -4
  27. data/lib/openai/resources/beta/agents/sessions/items.rb +2 -1
  28. data/lib/openai/resources/beta/agents/sessions/subagents/items.rb +2 -1
  29. data/lib/openai/resources/beta/agents/sessions/subagents/turns/items.rb +2 -1
  30. data/lib/openai/resources/beta/agents/sessions/subagents/turns.rb +4 -2
  31. data/lib/openai/resources/beta/agents/sessions/subagents.rb +4 -2
  32. data/lib/openai/resources/beta/agents/sessions/traces.rb +2 -1
  33. data/lib/openai/resources/beta/agents/sessions/turns/items.rb +2 -1
  34. data/lib/openai/resources/beta/agents/sessions/turns.rb +4 -2
  35. data/lib/openai/resources/beta/agents/sessions.rb +16 -7
  36. data/lib/openai/resources/beta/agents/vaults/credentials.rb +10 -5
  37. data/lib/openai/resources/beta/agents/vaults.rb +8 -4
  38. data/lib/openai/resources/beta/agents.rb +10 -5
  39. data/lib/openai/resources/beta/assistants.rb +10 -5
  40. data/lib/openai/resources/beta/chatkit/sessions.rb +4 -2
  41. data/lib/openai/resources/beta/chatkit/threads.rb +8 -4
  42. data/lib/openai/resources/beta/threads/messages.rb +10 -5
  43. data/lib/openai/resources/beta/threads/runs/steps.rb +4 -2
  44. data/lib/openai/resources/beta/threads/runs.rb +24 -10
  45. data/lib/openai/resources/beta/threads.rb +16 -7
  46. data/lib/openai/resources/vector_stores/file_batches.rb +8 -10
  47. data/lib/openai/resources/vector_stores/files.rb +12 -12
  48. data/lib/openai/resources/vector_stores.rb +12 -6
  49. data/lib/openai/resources/webhooks.rb +1 -1
  50. data/lib/openai/version.rb +1 -1
  51. data/lib/openai.rb +4 -0
  52. data/rbi/openai/models/audio/speech_create_params.rbi +3 -6
  53. data/rbi/openai/models/audio/voice.rbi +4 -9
  54. data/rbi/openai/models/audio/voice_create_params.rbi +4 -149
  55. data/rbi/openai/models/beta/agents/environment_create_params.rbi +499 -0
  56. data/rbi/openai/models/beta/agents/environment_info.rbi +3 -0
  57. data/rbi/openai/models/beta/agents/environment_list_params.rbi +136 -0
  58. data/rbi/openai/models/beta/environment_param.rbi +15 -0
  59. data/rbi/openai/models/chat/chat_completion_audio_param.rbi +3 -3
  60. data/rbi/openai/models/realtime/realtime_audio_config_output.rbi +3 -6
  61. data/rbi/openai/models/realtime/realtime_response_create_audio_output.rbi +3 -6
  62. data/rbi/openai/models/webhooks/agent_environment_failed_webhook_event.rbi +134 -0
  63. data/rbi/openai/models/webhooks/agent_environment_ready_webhook_event.rbi +134 -0
  64. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +4 -2
  65. data/rbi/openai/models/webhooks/webhook_create_params.rbi +8 -0
  66. data/rbi/openai/models/webhooks/webhook_test_params.rbi +8 -0
  67. data/rbi/openai/models/webhooks/webhook_update_params.rbi +8 -0
  68. data/rbi/openai/resources/audio/speech.rbi +1 -2
  69. data/rbi/openai/resources/audio/voices.rbi +10 -13
  70. data/rbi/openai/resources/beta/agents/environments.rbi +53 -0
  71. data/rbi/openai/resources/webhooks.rbi +2 -0
  72. data/sig/openai/models/audio/speech_create_params.rbs +2 -4
  73. data/sig/openai/models/audio/voice.rbs +3 -6
  74. data/sig/openai/models/audio/voice_create_params.rbs +1 -90
  75. data/sig/openai/models/beta/agents/environment_create_params.rbs +268 -0
  76. data/sig/openai/models/beta/agents/environment_info.rbs +5 -1
  77. data/sig/openai/models/beta/agents/environment_list_params.rbs +97 -0
  78. data/sig/openai/models/beta/environment_param.rbs +14 -0
  79. data/sig/openai/models/chat/chat_completion_audio_param.rbs +2 -2
  80. data/sig/openai/models/realtime/realtime_audio_config_output.rbs +3 -6
  81. data/sig/openai/models/realtime/realtime_response_create_audio_output.rbs +3 -6
  82. data/sig/openai/models/webhooks/agent_environment_failed_webhook_event.rbs +70 -0
  83. data/sig/openai/models/webhooks/agent_environment_ready_webhook_event.rbs +70 -0
  84. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +3 -1
  85. data/sig/openai/models/webhooks/webhook_create_params.rbs +4 -0
  86. data/sig/openai/models/webhooks/webhook_test_params.rbs +4 -0
  87. data/sig/openai/models/webhooks/webhook_update_params.rbs +4 -0
  88. data/sig/openai/resources/beta/agents/environments.rbs +15 -0
  89. data/sig/openai/resources/webhooks.rbs +3 -1
  90. metadata +13 -1
@@ -19,20 +19,13 @@ module OpenAI
19
19
 
20
20
  # Creates a voice from a consent recording and an audio sample. Requires
21
21
  # multipart/form-data.
22
- sig {
23
- returns(
24
- T.any(OpenAI::Audio::VoiceCreateParams::Body::AudioSample, OpenAI::Audio::VoiceCreateParams::Body::Prompt)
25
- )
26
- }
22
+ sig { returns(OpenAI::Audio::VoiceCreateParams::Body::AudioSample) }
27
23
  attr_accessor :body
28
24
 
29
25
  sig do
30
26
  params(
31
27
 
32
- body: T.any(
33
- OpenAI::Audio::VoiceCreateParams::Body::AudioSample::OrHash,
34
- OpenAI::Audio::VoiceCreateParams::Body::Prompt::OrHash
35
- ),
28
+ body: OpenAI::Audio::VoiceCreateParams::Body::AudioSample::OrHash,
36
29
 
37
30
  request_options: OpenAI::RequestOptions::OrHash
38
31
  )
@@ -50,13 +43,7 @@ module OpenAI
50
43
 
51
44
  sig do
52
45
  override.returns(
53
- {
54
- body: T.any(
55
- OpenAI::Audio::VoiceCreateParams::Body::AudioSample,
56
- OpenAI::Audio::VoiceCreateParams::Body::Prompt
57
- ),
58
- request_options: OpenAI::RequestOptions
59
- }
46
+ {body: OpenAI::Audio::VoiceCreateParams::Body::AudioSample, request_options: OpenAI::RequestOptions}
60
47
  )
61
48
  end
62
49
  def to_hash
@@ -67,9 +54,7 @@ module OpenAI
67
54
  module Body
68
55
  extend OpenAI::Internal::Type::Union
69
56
 
70
- Variants = T.type_alias {
71
- T.any(OpenAI::Audio::VoiceCreateParams::Body::AudioSample, OpenAI::Audio::VoiceCreateParams::Body::Prompt)
72
- }
57
+ Variants = T.type_alias { OpenAI::Audio::VoiceCreateParams::Body::AudioSample }
73
58
 
74
59
  class AudioSample < OpenAI::Internal::Type::BaseModel
75
60
  OrHash = T.type_alias do
@@ -177,136 +162,6 @@ module OpenAI
177
162
  end
178
163
  end
179
164
 
180
- class Prompt < OpenAI::Internal::Type::BaseModel
181
- OrHash = T.type_alias do
182
- T.any(
183
- OpenAI::Audio::VoiceCreateParams::Body::Prompt,
184
- OpenAI::Internal::AnyHash
185
- )
186
- end
187
-
188
- # The name of the new voice.
189
- sig { returns(String) }
190
- attr_accessor :name
191
-
192
- # A description of the desired voice. Must not contain only whitespace.
193
- sig { returns(String) }
194
- attr_accessor :prompt
195
-
196
- # Set to `prompt` to create a voice from a text description.
197
- sig { returns(OpenAI::Audio::VoiceCreateParams::Body::Prompt::Type::OrSymbol) }
198
- attr_accessor :type
199
-
200
- # The voice creation model to use. Defaults to `auto`.
201
- sig { returns(T.nilable(T.any(String, OpenAI::Audio::VoiceCreateParams::Body::Prompt::Model::OrSymbol))) }
202
- attr_reader :model
203
-
204
- sig { params(model: T.any(String, OpenAI::Audio::VoiceCreateParams::Body::Prompt::Model::OrSymbol)).void }
205
- attr_writer :model
206
-
207
- # Optional text for the voice to speak during creation. If omitted, a script is
208
- # generated from the prompt. Must not be blank after trimming whitespace; scripts
209
- # that are too short are rejected.
210
- sig { returns(T.nilable(String)) }
211
- attr_reader :script_hint
212
-
213
- sig { params(script_hint: String).void }
214
- attr_writer :script_hint
215
-
216
- # Creates a synthetic voice from a text description. Supports application/json or
217
- # multipart/form-data.
218
- sig do
219
- params(
220
-
221
- name: String,
222
-
223
- prompt: String,
224
-
225
- type: OpenAI::Audio::VoiceCreateParams::Body::Prompt::Type::OrSymbol,
226
-
227
- model: T.any(String, OpenAI::Audio::VoiceCreateParams::Body::Prompt::Model::OrSymbol),
228
-
229
- script_hint: String
230
- )
231
- .returns(T.attached_class)
232
- end
233
- def self.new(
234
-
235
- # The name of the new voice.
236
- name:,
237
-
238
- # A description of the desired voice. Must not contain only whitespace.
239
- prompt:,
240
-
241
- # Set to `prompt` to create a voice from a text description.
242
- type:,
243
-
244
- # The voice creation model to use. Defaults to `auto`.
245
- model: nil,
246
-
247
- # Optional text for the voice to speak during creation. If omitted, a script is
248
- # generated from the prompt. Must not be blank after trimming whitespace; scripts
249
- # that are too short are rejected.
250
-
251
- script_hint: nil
252
- )
253
- end
254
-
255
- sig do
256
- override.returns(
257
- {
258
- name: String,
259
- prompt: String,
260
- type: OpenAI::Audio::VoiceCreateParams::Body::Prompt::Type::OrSymbol,
261
- model: T.any(String, OpenAI::Audio::VoiceCreateParams::Body::Prompt::Model::OrSymbol),
262
- script_hint: String
263
- }
264
- )
265
- end
266
- def to_hash
267
- end
268
-
269
- # Set to `prompt` to create a voice from a text description.
270
- module Type
271
- extend OpenAI::Internal::Type::Enum
272
-
273
- TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Audio::VoiceCreateParams::Body::Prompt::Type) }
274
- OrSymbol = T.type_alias { T.any(Symbol, String) }
275
-
276
- PROMPT = T.let(:prompt, OpenAI::Audio::VoiceCreateParams::Body::Prompt::Type::TaggedSymbol)
277
-
278
- sig { override.returns(T::Array[OpenAI::Audio::VoiceCreateParams::Body::Prompt::Type::TaggedSymbol]) }
279
- def self.values
280
- end
281
- end
282
-
283
- # The voice creation model to use. Defaults to `auto`.
284
- module Model
285
- extend OpenAI::Internal::Type::Union
286
-
287
- Variants = T.type_alias {
288
- T.any(String, OpenAI::Audio::VoiceCreateParams::Body::Prompt::Model::TaggedSymbol)
289
- }
290
-
291
- sig { override.returns(T::Array[OpenAI::Audio::VoiceCreateParams::Body::Prompt::Model::Variants]) }
292
- def self.variants
293
- end
294
-
295
- TaggedSymbol = T.type_alias do
296
- T.all(Symbol, OpenAI::Audio::VoiceCreateParams::Body::Prompt::Model)
297
- end
298
-
299
- OrSymbol = T.type_alias { T.any(Symbol, String) }
300
-
301
- AUTO = T.let(:auto, OpenAI::Audio::VoiceCreateParams::Body::Prompt::Model::TaggedSymbol)
302
- MODEL_2026_10_01 = T.let(
303
- :"2026-10-01",
304
- OpenAI::Audio::VoiceCreateParams::Body::Prompt::Model::TaggedSymbol
305
- )
306
-
307
- end
308
- end
309
-
310
165
  sig { override.returns(T::Array[OpenAI::Audio::VoiceCreateParams::Body::Variants]) }
311
166
  def self.variants
312
167
  end
@@ -0,0 +1,499 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Beta
7
+
8
+ module Agents
9
+
10
+ class EnvironmentCreateParams < OpenAI::Internal::Type::BaseModel
11
+
12
+ extend OpenAI::Internal::Type::RequestParameters::Converter
13
+ include OpenAI::Internal::Type::RequestParameters
14
+
15
+ OrHash = T.type_alias do
16
+ T.any(
17
+ OpenAI::Beta::Agents::EnvironmentCreateParams,
18
+ OpenAI::Internal::AnyHash
19
+ )
20
+ end
21
+
22
+ # The required hosting type and its configuration.
23
+ sig { returns(OpenAI::Beta::Agents::EnvironmentCreateParams::Environment) }
24
+ attr_reader :environment
25
+
26
+ sig { params(environment: OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::OrHash).void }
27
+ attr_writer :environment
28
+
29
+ # The IDs of up to 10 vaults made available to an OpenAI-hosted environment.
30
+ sig { returns(T.nilable(T::Array[String])) }
31
+ attr_accessor :vault_ids
32
+
33
+ sig { returns(T.nilable(String)) }
34
+ attr_reader :idempotency_key
35
+
36
+ sig { params(idempotency_key: String).void }
37
+ attr_writer :idempotency_key
38
+
39
+ sig do
40
+ params(
41
+
42
+ environment: OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::OrHash,
43
+
44
+ vault_ids: T.nilable(T::Array[String]),
45
+
46
+ idempotency_key: String,
47
+
48
+ request_options: OpenAI::RequestOptions::OrHash
49
+ )
50
+ .returns(T.attached_class)
51
+ end
52
+ def self.new(
53
+
54
+ # The required hosting type and its configuration.
55
+ environment:,
56
+
57
+ # The IDs of up to 10 vaults made available to an OpenAI-hosted environment.
58
+ vault_ids: nil,
59
+
60
+ idempotency_key: nil,
61
+
62
+ request_options: {}
63
+ )
64
+ end
65
+
66
+ sig do
67
+ override.returns(
68
+ {
69
+ environment: OpenAI::Beta::Agents::EnvironmentCreateParams::Environment,
70
+ vault_ids: T.nilable(T::Array[String]),
71
+ idempotency_key: String,
72
+ request_options: OpenAI::RequestOptions
73
+ }
74
+ )
75
+ end
76
+ def to_hash
77
+ end
78
+
79
+ class Environment < OpenAI::Internal::Type::BaseModel
80
+ OrHash = T.type_alias do
81
+ T.any(
82
+ OpenAI::Beta::Agents::EnvironmentCreateParams::Environment,
83
+ OpenAI::Internal::AnyHash
84
+ )
85
+ end
86
+
87
+ # The type of the object. Always `openai_hosted`.
88
+ sig { returns(Symbol) }
89
+ attr_accessor :type
90
+
91
+ # Directories that contain capabilities exposed to the agent. Defaults to an empty
92
+ # list.
93
+ sig { returns(T.nilable(T::Array[String])) }
94
+ attr_accessor :capability_directories
95
+
96
+ # Desktop provisioning. Omission or null inherits the template setting, or
97
+ # defaults to disabled.
98
+ sig { returns(T.nilable(OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Desktop)) }
99
+ attr_reader :desktop
100
+
101
+ sig {
102
+ params(desktop: T.nilable(OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Desktop::OrHash))
103
+ .void
104
+ }
105
+ attr_writer :desktop
106
+
107
+ # Environment variables made available to the agent.
108
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
109
+ attr_accessor :env
110
+
111
+ # A reusable hosted template applied before inline configuration. Omitted fields
112
+ # inherit the template; network overrides cannot broaden its policy.
113
+ sig { returns(T.nilable(String)) }
114
+ attr_reader :environment_template_id
115
+
116
+ sig { params(environment_template_id: String).void }
117
+ attr_writer :environment_template_id
118
+
119
+ # Files available before the agent starts. Defaults to an empty list.
120
+ sig {
121
+ returns(
122
+ T.nilable(
123
+ T::Array[
124
+ T.any(
125
+ OpenAI::Beta::HostedEnvironmentFileParam::FileID,
126
+ OpenAI::Beta::HostedEnvironmentFileParam::Inline
127
+ )
128
+ ]
129
+ )
130
+ )
131
+ }
132
+ attr_accessor :files
133
+
134
+ # Network access policy for the environment. If omitted, the API version
135
+ # determines whether network access is enabled or disabled.
136
+ sig { returns(T.nilable(OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Network)) }
137
+ attr_reader :network
138
+
139
+ sig {
140
+ params(network: T.nilable(OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Network::OrHash))
141
+ .void
142
+ }
143
+ attr_writer :network
144
+
145
+ # Packages to install in the environment. Defaults to empty package lists.
146
+ sig { returns(T.nilable(OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Packages)) }
147
+ attr_reader :packages
148
+
149
+ sig {
150
+ params(packages: T.nilable(OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Packages::OrHash))
151
+ .void
152
+ }
153
+ attr_writer :packages
154
+
155
+ # Plugins provided as inline ZIP archives. Defaults to an empty list.
156
+ sig { returns(T.nilable(T::Array[OpenAI::Beta::HostedPluginParam])) }
157
+ attr_accessor :plugins
158
+
159
+ # Ordered, confidential setup commands. Command bodies are never returned.
160
+ sig { returns(T.nilable(T::Array[OpenAI::Beta::SetupCommandParam])) }
161
+ attr_accessor :setup_commands
162
+
163
+ # Skills referenced by ID or provided as inline ZIP archives. Defaults to an empty
164
+ # list.
165
+ sig {
166
+ returns(
167
+ T.nilable(
168
+ T::Array[
169
+ T.any(OpenAI::Beta::HostedSkillParam::SkillReference, OpenAI::Beta::HostedSkillParam::Inline)
170
+ ]
171
+ )
172
+ )
173
+ }
174
+ attr_accessor :skills
175
+
176
+ # The required hosting type and its configuration.
177
+ sig do
178
+ params(
179
+
180
+ capability_directories: T.nilable(T::Array[String]),
181
+
182
+ desktop: T.nilable(OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Desktop::OrHash),
183
+
184
+ env: T.nilable(T::Hash[Symbol, String]),
185
+
186
+ environment_template_id: String,
187
+
188
+ files: T.nilable(
189
+ T::Array[
190
+ T.any(
191
+ OpenAI::Beta::HostedEnvironmentFileParam::FileID::OrHash,
192
+ OpenAI::Beta::HostedEnvironmentFileParam::Inline::OrHash
193
+ )
194
+ ]
195
+ ),
196
+
197
+ network: T.nilable(OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Network::OrHash),
198
+
199
+ packages: T.nilable(OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Packages::OrHash),
200
+
201
+ plugins: T.nilable(T::Array[OpenAI::Beta::HostedPluginParam::OrHash]),
202
+
203
+ setup_commands: T.nilable(T::Array[OpenAI::Beta::SetupCommandParam::OrHash]),
204
+
205
+ skills: T.nilable(
206
+ T::Array[
207
+ T.any(
208
+ OpenAI::Beta::HostedSkillParam::SkillReference::OrHash,
209
+ OpenAI::Beta::HostedSkillParam::Inline::OrHash
210
+ )
211
+ ]
212
+ ),
213
+
214
+ type: Symbol
215
+ )
216
+ .returns(T.attached_class)
217
+ end
218
+ def self.new(
219
+
220
+ # Directories that contain capabilities exposed to the agent. Defaults to an empty
221
+ # list.
222
+ capability_directories: nil,
223
+
224
+ # Desktop provisioning. Omission or null inherits the template setting, or
225
+ # defaults to disabled.
226
+ desktop: nil,
227
+
228
+ # Environment variables made available to the agent.
229
+ env: nil,
230
+
231
+ # A reusable hosted template applied before inline configuration. Omitted fields
232
+ # inherit the template; network overrides cannot broaden its policy.
233
+ environment_template_id: nil,
234
+
235
+ # Files available before the agent starts. Defaults to an empty list.
236
+ files: nil,
237
+
238
+ # Network access policy for the environment. If omitted, the API version
239
+ # determines whether network access is enabled or disabled.
240
+ network: nil,
241
+
242
+ # Packages to install in the environment. Defaults to empty package lists.
243
+ packages: nil,
244
+
245
+ # Plugins provided as inline ZIP archives. Defaults to an empty list.
246
+ plugins: nil,
247
+
248
+ # Ordered, confidential setup commands. Command bodies are never returned.
249
+ setup_commands: nil,
250
+
251
+ # Skills referenced by ID or provided as inline ZIP archives. Defaults to an empty
252
+ # list.
253
+ skills: nil,
254
+
255
+ # The type of the object. Always `openai_hosted`.
256
+
257
+ type: :openai_hosted
258
+ )
259
+ end
260
+
261
+ sig do
262
+ override.returns(
263
+ {
264
+ type: Symbol,
265
+ capability_directories: T.nilable(T::Array[String]),
266
+ desktop: T.nilable(OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Desktop),
267
+ env: T.nilable(T::Hash[Symbol, String]),
268
+ environment_template_id: String,
269
+ files: T.nilable(
270
+ T::Array[
271
+ T.any(
272
+ OpenAI::Beta::HostedEnvironmentFileParam::FileID,
273
+ OpenAI::Beta::HostedEnvironmentFileParam::Inline
274
+ )
275
+ ]
276
+ ),
277
+ network: T.nilable(OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Network),
278
+ packages: T.nilable(OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Packages),
279
+ plugins: T.nilable(T::Array[OpenAI::Beta::HostedPluginParam]),
280
+ setup_commands: T.nilable(T::Array[OpenAI::Beta::SetupCommandParam]),
281
+ skills: T.nilable(
282
+ T::Array[
283
+ T.any(OpenAI::Beta::HostedSkillParam::SkillReference, OpenAI::Beta::HostedSkillParam::Inline)
284
+ ]
285
+ )
286
+ }
287
+ )
288
+ end
289
+ def to_hash
290
+ end
291
+
292
+ class Desktop < OpenAI::Internal::Type::BaseModel
293
+ OrHash = T.type_alias do
294
+ T.any(
295
+ OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Desktop,
296
+ OpenAI::Internal::AnyHash
297
+ )
298
+ end
299
+
300
+ # Whether to provision the desktop and its browser proxy.
301
+ sig { returns(T::Boolean) }
302
+ attr_accessor :enabled
303
+
304
+ # Desktop provisioning. Omission or null inherits the template setting, or
305
+ # defaults to disabled.
306
+ sig do
307
+ params(
308
+
309
+ enabled: T::Boolean
310
+ )
311
+ .returns(T.attached_class)
312
+ end
313
+ def self.new(
314
+
315
+ # Whether to provision the desktop and its browser proxy.
316
+
317
+ enabled:
318
+ )
319
+ end
320
+
321
+ sig do
322
+ override.returns(
323
+ {enabled: T::Boolean}
324
+ )
325
+ end
326
+ def to_hash
327
+ end
328
+
329
+ end
330
+
331
+ class Network < OpenAI::Internal::Type::BaseModel
332
+ OrHash = T.type_alias do
333
+ T.any(
334
+ OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Network,
335
+ OpenAI::Internal::AnyHash
336
+ )
337
+ end
338
+
339
+ # The environment's network access mode.
340
+ sig { returns(OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Network::Access::OrSymbol) }
341
+ attr_accessor :access
342
+
343
+ # Domains the environment may access when network access is restricted.
344
+ sig { returns(T.nilable(T::Array[String])) }
345
+ attr_accessor :allowed_domains
346
+
347
+ # Domains blocked for both executor and browser when access is restricted. A
348
+ # nonempty list requires `access: restricted` and cannot be combined with nonempty
349
+ # `allowed_domains`. Wildcard domains are not supported.
350
+ sig { returns(T.nilable(T::Array[String])) }
351
+ attr_accessor :blocked_domains
352
+
353
+ # Network access policy for the environment. If omitted, the API version
354
+ # determines whether network access is enabled or disabled.
355
+ sig do
356
+ params(
357
+
358
+ access: OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Network::Access::OrSymbol,
359
+
360
+ allowed_domains: T.nilable(T::Array[String]),
361
+
362
+ blocked_domains: T.nilable(T::Array[String])
363
+ )
364
+ .returns(T.attached_class)
365
+ end
366
+ def self.new(
367
+
368
+ # The environment's network access mode.
369
+ access:,
370
+
371
+ # Domains the environment may access when network access is restricted.
372
+ allowed_domains: nil,
373
+
374
+ # Domains blocked for both executor and browser when access is restricted. A
375
+ # nonempty list requires `access: restricted` and cannot be combined with nonempty
376
+ # `allowed_domains`. Wildcard domains are not supported.
377
+
378
+ blocked_domains: nil
379
+ )
380
+ end
381
+
382
+ sig do
383
+ override.returns(
384
+ {
385
+ access: OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Network::Access::OrSymbol,
386
+ allowed_domains: T.nilable(T::Array[String]),
387
+ blocked_domains: T.nilable(T::Array[String])
388
+ }
389
+ )
390
+ end
391
+ def to_hash
392
+ end
393
+
394
+ # The environment's network access mode.
395
+ module Access
396
+ extend OpenAI::Internal::Type::Enum
397
+
398
+ TaggedSymbol = T.type_alias {
399
+ T.all(Symbol, OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Network::Access)
400
+ }
401
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
402
+
403
+ # Allows unrestricted network access.
404
+ ENABLED = T.let(
405
+ :enabled,
406
+ OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Network::Access::TaggedSymbol
407
+ )
408
+
409
+ # Disables network access.
410
+ DISABLED = T.let(
411
+ :disabled,
412
+ OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Network::Access::TaggedSymbol
413
+ )
414
+
415
+ # Applies the configured domain restrictions.
416
+ RESTRICTED = T.let(
417
+ :restricted,
418
+ OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Network::Access::TaggedSymbol
419
+ )
420
+
421
+ sig {
422
+ override.returns(
423
+ T::Array[OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Network::Access::TaggedSymbol]
424
+ )
425
+ }
426
+ def self.values
427
+ end
428
+ end
429
+ end
430
+
431
+ class Packages < OpenAI::Internal::Type::BaseModel
432
+ OrHash = T.type_alias do
433
+ T.any(
434
+ OpenAI::Beta::Agents::EnvironmentCreateParams::Environment::Packages,
435
+ OpenAI::Internal::AnyHash
436
+ )
437
+ end
438
+
439
+ # npm packages to install globally. Defaults to an empty list.
440
+ sig { returns(T.nilable(T::Array[String])) }
441
+ attr_accessor :npm
442
+
443
+ # Python packages to install. Defaults to an empty list.
444
+ sig { returns(T.nilable(T::Array[String])) }
445
+ attr_accessor :python
446
+
447
+ # System packages to install. Defaults to an empty list.
448
+ sig { returns(T.nilable(T::Array[String])) }
449
+ attr_accessor :system_
450
+
451
+ # Packages to install in the environment. Defaults to empty package lists.
452
+ sig do
453
+ params(
454
+
455
+ npm: T.nilable(T::Array[String]),
456
+
457
+ python: T.nilable(T::Array[String]),
458
+
459
+ system_: T.nilable(T::Array[String])
460
+ )
461
+ .returns(T.attached_class)
462
+ end
463
+ def self.new(
464
+
465
+ # npm packages to install globally. Defaults to an empty list.
466
+ npm: nil,
467
+
468
+ # Python packages to install. Defaults to an empty list.
469
+ python: nil,
470
+
471
+ # System packages to install. Defaults to an empty list.
472
+
473
+ system_: nil
474
+ )
475
+ end
476
+
477
+ sig do
478
+ override.returns(
479
+ {
480
+ npm: T.nilable(T::Array[String]),
481
+ python: T.nilable(T::Array[String]),
482
+ system_: T.nilable(T::Array[String])
483
+ }
484
+ )
485
+ end
486
+ def to_hash
487
+ end
488
+
489
+ end
490
+ end
491
+
492
+ end
493
+
494
+ end
495
+
496
+ end
497
+
498
+ end
499
+ end
@@ -121,6 +121,9 @@ module OpenAI
121
121
  OrSymbol = T.type_alias { T.any(Symbol, String) }
122
122
 
123
123
  PENDING = T.let(:pending, OpenAI::Beta::Agents::EnvironmentInfo::Status::TaggedSymbol)
124
+ # Provisioning succeeded and the environment is available for attachment or use.
125
+ READY = T.let(:ready, OpenAI::Beta::Agents::EnvironmentInfo::Status::TaggedSymbol)
126
+
124
127
  CONNECTED = T.let(:connected, OpenAI::Beta::Agents::EnvironmentInfo::Status::TaggedSymbol)
125
128
  DISCONNECTED = T.let(:disconnected, OpenAI::Beta::Agents::EnvironmentInfo::Status::TaggedSymbol)
126
129
  EXPIRED = T.let(:expired, OpenAI::Beta::Agents::EnvironmentInfo::Status::TaggedSymbol)