openai 0.95.0 → 0.97.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 (197) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +51 -0
  3. data/README.md +5 -2
  4. data/docs/architecture/security-model.md +2 -2
  5. data/examples/audio/record_and_play.rb +1 -1
  6. data/lib/openai/helpers/live/transcript_grouper.rb +264 -0
  7. data/lib/openai/helpers/live/transcript_grouping.rb +309 -0
  8. data/lib/openai/helpers/live/websocket.rb +454 -0
  9. data/lib/openai/helpers/realtime/translation.rb +440 -0
  10. data/lib/openai/helpers/realtime.rb +1 -0
  11. data/lib/openai/helpers/responses_websocket/incremental.rb +246 -0
  12. data/lib/openai/helpers/responses_websocket/transports/async_websocket.rb +183 -0
  13. data/lib/openai/helpers/responses_websocket.rb +1 -0
  14. data/lib/openai/helpers/streaming/response_stream.rb +19 -11
  15. data/lib/openai/helpers/structured_output/chat_completion_parser.rb +0 -2
  16. data/lib/openai/helpers/structured_output/response_parser.rb +1 -2
  17. data/lib/openai/helpers/structured_output/union_of.rb +0 -2
  18. data/lib/openai/helpers/websocket/async_websocket_transport.rb +11 -6
  19. data/lib/openai/helpers/websocket/connection_manager.rb +9 -0
  20. data/lib/openai/internal/read_io_adapter.rb +0 -2
  21. data/lib/openai/internal/stream.rb +0 -2
  22. data/lib/openai/internal/type/base_model.rb +4 -6
  23. data/lib/openai/internal/type/converter.rb +5 -3
  24. data/lib/openai/internal/type/enum.rb +0 -2
  25. data/lib/openai/internal/type/union.rb +0 -6
  26. data/lib/openai/internal/type/unknown.rb +34 -6
  27. data/lib/openai/internal/util.rb +0 -4
  28. data/lib/openai/models/audio/speech_create_params.rb +9 -0
  29. data/lib/openai/models/audio/transcription_create_response.rb +4 -1
  30. data/lib/openai/models/audio/translation_create_response.rb +4 -1
  31. data/lib/openai/models/beta/agent.rb +3 -2
  32. data/lib/openai/models/beta/agent_browser_authentication_cancel_param.rb +23 -0
  33. data/lib/openai/models/beta/agent_browser_authentication_submit_param.rb +70 -0
  34. data/lib/openai/models/beta/agent_browser_origin_access_param.rb +45 -0
  35. data/lib/openai/models/beta/agent_create_params.rb +5 -2
  36. data/lib/openai/models/beta/agent_output_item.rb +276 -1
  37. data/lib/openai/models/beta/agent_session.rb +252 -5
  38. data/lib/openai/models/beta/agent_session_input_param.rb +64 -1
  39. data/lib/openai/models/beta/agent_session_item.rb +391 -1
  40. data/lib/openai/models/beta/agent_session_turn_item_added_event.rb +2 -2
  41. data/lib/openai/models/beta/agent_session_turn_item_done_event.rb +2 -2
  42. data/lib/openai/models/beta/agent_tool.rb +27 -1
  43. data/lib/openai/models/beta/agent_tool_param.rb +27 -1
  44. data/lib/openai/models/beta/agent_update_params.rb +5 -2
  45. data/lib/openai/models/beta/agents/environments/environment_template.rb +26 -2
  46. data/lib/openai/models/beta/agents/environments/template_create_params.rb +51 -6
  47. data/lib/openai/models/beta/agents/environments/template_update_params.rb +51 -9
  48. data/lib/openai/models/beta/agents/session_create_params.rb +5 -2
  49. data/lib/openai/models/beta/agents/session_update_params.rb +3 -0
  50. data/lib/openai/models/beta/agents/sessions/event_create_params.rb +2 -2
  51. data/lib/openai/models/beta/agents/vaults/credential.rb +10 -1
  52. data/lib/openai/models/beta/agents/vaults/credential_create_params.rb +12 -1
  53. data/lib/openai/models/beta/agents/vaults/credential_update_params.rb +14 -3
  54. data/lib/openai/models/beta/beta_response.rb +38 -1
  55. data/lib/openai/models/beta/beta_responses_client_event.rb +73 -1
  56. data/lib/openai/models/beta/beta_web_search_preview_tool.rb +9 -3
  57. data/lib/openai/models/beta/beta_web_search_tool.rb +9 -3
  58. data/lib/openai/models/beta/environment.rb +26 -2
  59. data/lib/openai/models/beta/environment_param.rb +46 -6
  60. data/lib/openai/models/beta/persisted_agent_tool.rb +27 -1
  61. data/lib/openai/models/beta/persisted_agent_tool_param.rb +27 -1
  62. data/lib/openai/models/beta/response_compact_params.rb +3 -0
  63. data/lib/openai/models/beta/response_create_params.rb +68 -1
  64. data/lib/openai/models/beta/session_turn_error.rb +3 -0
  65. data/lib/openai/models/chat_model.rb +1 -0
  66. data/lib/openai/models/responses/response.rb +35 -1
  67. data/lib/openai/models/responses/response_compact_params.rb +3 -0
  68. data/lib/openai/models/responses/response_create_params.rb +65 -1
  69. data/lib/openai/models/responses/responses_client_event.rb +70 -1
  70. data/lib/openai/models/responses/web_search_preview_tool.rb +9 -3
  71. data/lib/openai/models/responses/web_search_tool.rb +9 -3
  72. data/lib/openai/net_http_client.rb +0 -2
  73. data/lib/openai/resources/audio/transcriptions.rb +5 -3
  74. data/lib/openai/resources/audio/translations.rb +1 -1
  75. data/lib/openai/resources/beta/agents/environments/templates.rb +12 -5
  76. data/lib/openai/resources/beta/agents/sessions/events.rb +1 -1
  77. data/lib/openai/resources/beta/agents/sessions/items.rb +1 -1
  78. data/lib/openai/resources/beta/agents/sessions/subagents/items.rb +1 -1
  79. data/lib/openai/resources/beta/agents/sessions/subagents/turns/items.rb +1 -1
  80. data/lib/openai/resources/beta/agents/vaults/credentials.rb +12 -4
  81. data/lib/openai/resources/beta/agents.rb +2 -2
  82. data/lib/openai/resources/beta/responses.rb +8 -2
  83. data/lib/openai/resources/responses.rb +8 -1
  84. data/lib/openai/version.rb +1 -1
  85. data/lib/openai.rb +4 -0
  86. data/rbi/openai/helpers/live/transcript_grouper.rbi +67 -0
  87. data/rbi/openai/helpers/live/websocket.rbi +299 -0
  88. data/rbi/openai/helpers/realtime/translation.rbi +137 -0
  89. data/rbi/openai/helpers/responses_websocket/incremental.rbi +32 -0
  90. data/rbi/openai/helpers/responses_websocket/transports/async_websocket.rbi +24 -0
  91. data/rbi/openai/helpers/streaming/response_stream.rbi +5 -0
  92. data/rbi/openai/internal/type/converter.rbi +3 -2
  93. data/rbi/openai/models/audio/speech_create_params.rbi +3 -0
  94. data/rbi/openai/models/audio/transcription_create_response.rbi +2 -1
  95. data/rbi/openai/models/audio/translation_create_response.rbi +2 -1
  96. data/rbi/openai/models/beta/agent.rbi +3 -1
  97. data/rbi/openai/models/beta/agent_browser_authentication_cancel_param.rbi +53 -0
  98. data/rbi/openai/models/beta/agent_browser_authentication_submit_param.rbi +125 -0
  99. data/rbi/openai/models/beta/agent_browser_origin_access_param.rbi +76 -0
  100. data/rbi/openai/models/beta/agent_create_params.rbi +9 -3
  101. data/rbi/openai/models/beta/agent_output_item.rbi +422 -0
  102. data/rbi/openai/models/beta/agent_session.rbi +374 -1
  103. data/rbi/openai/models/beta/agent_session_input_param.rbi +102 -0
  104. data/rbi/openai/models/beta/agent_session_item.rbi +614 -0
  105. data/rbi/openai/models/beta/agent_session_turn_item_added_event.rbi +3 -0
  106. data/rbi/openai/models/beta/agent_session_turn_item_done_event.rbi +2 -0
  107. data/rbi/openai/models/beta/agent_tool.rbi +49 -1
  108. data/rbi/openai/models/beta/agent_tool_param.rbi +52 -1
  109. data/rbi/openai/models/beta/agent_update_params.rbi +9 -3
  110. data/rbi/openai/models/beta/agents/environments/environment_template.rbi +53 -2
  111. data/rbi/openai/models/beta/agents/environments/template_create_params.rbi +77 -7
  112. data/rbi/openai/models/beta/agents/environments/template_update_params.rbi +77 -10
  113. data/rbi/openai/models/beta/agents/session_create_params.rbi +9 -3
  114. data/rbi/openai/models/beta/agents/session_update_params.rbi +3 -0
  115. data/rbi/openai/models/beta/agents/sessions/event_create_params.rbi +3 -0
  116. data/rbi/openai/models/beta/agents/vaults/credential.rbi +10 -0
  117. data/rbi/openai/models/beta/agents/vaults/credential_create_params.rbi +15 -0
  118. data/rbi/openai/models/beta/agents/vaults/credential_update_params.rbi +35 -6
  119. data/rbi/openai/models/beta/beta_response.rbi +64 -0
  120. data/rbi/openai/models/beta/beta_responses_client_event.rbi +128 -0
  121. data/rbi/openai/models/beta/beta_web_search_preview_tool.rbi +9 -3
  122. data/rbi/openai/models/beta/beta_web_search_tool.rbi +9 -3
  123. data/rbi/openai/models/beta/environment.rbi +53 -2
  124. data/rbi/openai/models/beta/environment_param.rbi +75 -7
  125. data/rbi/openai/models/beta/persisted_agent_tool.rbi +49 -1
  126. data/rbi/openai/models/beta/persisted_agent_tool_param.rbi +52 -1
  127. data/rbi/openai/models/beta/response_compact_params.rbi +1 -0
  128. data/rbi/openai/models/beta/response_create_params.rbi +100 -0
  129. data/rbi/openai/models/beta/session_turn_error.rbi +6 -0
  130. data/rbi/openai/models/chat_model.rbi +1 -0
  131. data/rbi/openai/models/responses/response.rbi +63 -0
  132. data/rbi/openai/models/responses/response_compact_params.rbi +1 -0
  133. data/rbi/openai/models/responses/response_create_params.rbi +106 -0
  134. data/rbi/openai/models/responses/responses_client_event.rbi +125 -0
  135. data/rbi/openai/models/responses/web_search_preview_tool.rbi +9 -3
  136. data/rbi/openai/models/responses/web_search_tool.rbi +9 -3
  137. data/rbi/openai/resources/audio/transcriptions.rbi +4 -2
  138. data/rbi/openai/resources/beta/agents/environments/templates.rbi +10 -3
  139. data/rbi/openai/resources/beta/agents/sessions/events.rbi +1 -0
  140. data/rbi/openai/resources/beta/agents/vaults/credentials.rbi +11 -3
  141. data/rbi/openai/resources/beta/agents.rbi +4 -2
  142. data/rbi/openai/resources/beta/responses.rbi +6 -0
  143. data/rbi/openai/resources/responses.rbi +11 -0
  144. data/responses-websocket.md +55 -0
  145. data/sig/openai/helpers/live/transcript_grouper.rbs +42 -0
  146. data/sig/openai/helpers/live/websocket.rbs +152 -0
  147. data/sig/openai/helpers/realtime/translation.rbs +81 -0
  148. data/sig/openai/helpers/responses_websocket/incremental.rbs +14 -0
  149. data/sig/openai/helpers/responses_websocket/transports/async_websocket.rbs +21 -0
  150. data/sig/openai/helpers/streaming/response_stream.rbs +9 -0
  151. data/sig/openai/internal/type/converter.rbs +3 -1
  152. data/sig/openai/models/audio/speech_create_params.rbs +6 -0
  153. data/sig/openai/models/audio/transcription_create_response.rbs +1 -0
  154. data/sig/openai/models/audio/translation_create_response.rbs +3 -1
  155. data/sig/openai/models/beta/agent.rbs +3 -1
  156. data/sig/openai/models/beta/agent_browser_authentication_cancel_param.rbs +21 -0
  157. data/sig/openai/models/beta/agent_browser_authentication_submit_param.rbs +63 -0
  158. data/sig/openai/models/beta/agent_browser_origin_access_param.rbs +47 -0
  159. data/sig/openai/models/beta/agent_create_params.rbs +5 -1
  160. data/sig/openai/models/beta/agent_output_item.rbs +254 -0
  161. data/sig/openai/models/beta/agent_session.rbs +218 -2
  162. data/sig/openai/models/beta/agent_session_input_param.rbs +51 -1
  163. data/sig/openai/models/beta/agent_session_item.rbs +362 -0
  164. data/sig/openai/models/beta/agent_tool.rbs +22 -0
  165. data/sig/openai/models/beta/agent_tool_param.rbs +25 -0
  166. data/sig/openai/models/beta/agent_update_params.rbs +5 -1
  167. data/sig/openai/models/beta/agents/environments/environment_template.rbs +29 -3
  168. data/sig/openai/models/beta/agents/environments/template_create_params.rbs +41 -6
  169. data/sig/openai/models/beta/agents/environments/template_update_params.rbs +41 -8
  170. data/sig/openai/models/beta/agents/session_create_params.rbs +5 -1
  171. data/sig/openai/models/beta/agents/session_update_params.rbs +5 -1
  172. data/sig/openai/models/beta/agents/vaults/credential.rbs +8 -0
  173. data/sig/openai/models/beta/agents/vaults/credential_create_params.rbs +14 -0
  174. data/sig/openai/models/beta/agents/vaults/credential_update_params.rbs +23 -4
  175. data/sig/openai/models/beta/beta_response.rbs +37 -0
  176. data/sig/openai/models/beta/beta_responses_client_event.rbs +79 -0
  177. data/sig/openai/models/beta/beta_web_search_preview_tool.rbs +6 -2
  178. data/sig/openai/models/beta/beta_web_search_tool.rbs +6 -2
  179. data/sig/openai/models/beta/environment.rbs +29 -3
  180. data/sig/openai/models/beta/environment_param.rbs +41 -6
  181. data/sig/openai/models/beta/persisted_agent_tool.rbs +22 -0
  182. data/sig/openai/models/beta/persisted_agent_tool_param.rbs +25 -0
  183. data/sig/openai/models/beta/response_compact_params.rbs +2 -0
  184. data/sig/openai/models/beta/response_create_params.rbs +79 -0
  185. data/sig/openai/models/beta/session_turn_error.rbs +4 -0
  186. data/sig/openai/models/chat_model.rbs +2 -0
  187. data/sig/openai/models/responses/response.rbs +35 -0
  188. data/sig/openai/models/responses/response_compact_params.rbs +2 -0
  189. data/sig/openai/models/responses/response_create_params.rbs +77 -0
  190. data/sig/openai/models/responses/responses_client_event.rbs +77 -0
  191. data/sig/openai/models/responses/web_search_preview_tool.rbs +6 -2
  192. data/sig/openai/models/responses/web_search_tool.rbs +6 -2
  193. data/sig/openai/resources/beta/agents/environments/templates.rbs +2 -0
  194. data/sig/openai/resources/beta/agents/vaults/credentials.rbs +3 -1
  195. data/sig/openai/resources/beta/responses.rbs +2 -0
  196. data/sig/openai/resources/responses.rbs +4 -0
  197. metadata +23 -1
@@ -30,14 +30,36 @@ module OpenAI
30
30
  # Replacement values for the credential's existing authentication method.
31
31
  sig {
32
32
  returns(
33
- T.any(
34
- OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::McpOauth,
35
- OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::StaticBearer,
36
- OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::EnvironmentVariable
33
+ T.nilable(
34
+ T.any(
35
+ OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::McpOauth,
36
+ OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::StaticBearer,
37
+ OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::EnvironmentVariable
38
+ )
37
39
  )
38
40
  )
39
41
  }
40
- attr_accessor :auth
42
+ attr_reader :auth
43
+
44
+ sig {
45
+ params(
46
+ auth: T.any(
47
+ OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::McpOauth::OrHash,
48
+ OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::StaticBearer::OrHash,
49
+ OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::EnvironmentVariable::OrHash
50
+ )
51
+ )
52
+ .void
53
+ }
54
+ attr_writer :auth
55
+
56
+ # Replaces all metadata. Omit to preserve it, or pass {} to clear it. Up to 16
57
+ # string key-value pairs, with keys up to 64 and values up to 512 characters.
58
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
59
+ attr_reader :metadata
60
+
61
+ sig { params(metadata: T::Hash[Symbol, String]).void }
62
+ attr_writer :metadata
41
63
 
42
64
  sig do
43
65
  params(
@@ -52,6 +74,8 @@ module OpenAI
52
74
  OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::EnvironmentVariable::OrHash
53
75
  ),
54
76
 
77
+ metadata: T::Hash[Symbol, String],
78
+
55
79
  request_options: OpenAI::RequestOptions::OrHash
56
80
  )
57
81
  .returns(T.attached_class)
@@ -63,7 +87,11 @@ module OpenAI
63
87
  credential_id:,
64
88
 
65
89
  # Replacement values for the credential's existing authentication method.
66
- auth:,
90
+ auth: nil,
91
+
92
+ # Replaces all metadata. Omit to preserve it, or pass {} to clear it. Up to 16
93
+ # string key-value pairs, with keys up to 64 and values up to 512 characters.
94
+ metadata: nil,
67
95
 
68
96
  request_options: {}
69
97
  )
@@ -79,6 +107,7 @@ module OpenAI
79
107
  OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::StaticBearer,
80
108
  OpenAI::Beta::Agents::Vaults::CredentialAuthRotateParam::EnvironmentVariable
81
109
  ),
110
+ metadata: T::Hash[Symbol, String],
82
111
  request_options: OpenAI::RequestOptions
83
112
  }
84
113
  )
@@ -20,6 +20,12 @@ module OpenAI
20
20
  sig { returns(String) }
21
21
  attr_accessor :id
22
22
 
23
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponse::AccessPrograms)) }
24
+ attr_reader :access_programs
25
+
26
+ sig { params(access_programs: T.nilable(OpenAI::Beta::BetaResponse::AccessPrograms::OrHash)).void }
27
+ attr_writer :access_programs
28
+
23
29
  # Unix timestamp (in seconds) of when this Response was created.
24
30
  sig { returns(Float) }
25
31
  attr_accessor :created_at
@@ -335,6 +341,8 @@ module OpenAI
335
341
 
336
342
  id: String,
337
343
 
344
+ access_programs: T.nilable(OpenAI::Beta::BetaResponse::AccessPrograms::OrHash),
345
+
338
346
  created_at: Float,
339
347
 
340
348
  error: T.nilable(OpenAI::Beta::BetaResponseError::OrHash),
@@ -478,6 +486,8 @@ module OpenAI
478
486
  # Unique identifier for this Response.
479
487
  id:,
480
488
 
489
+ access_programs:,
490
+
481
491
  # Unix timestamp (in seconds) of when this Response was created.
482
492
  created_at:,
483
493
 
@@ -715,6 +725,7 @@ module OpenAI
715
725
  override.returns(
716
726
  {
717
727
  id: String,
728
+ access_programs: T.nilable(OpenAI::Beta::BetaResponse::AccessPrograms),
718
729
  created_at: Float,
719
730
  error: T.nilable(OpenAI::Beta::BetaResponseError),
720
731
  incomplete_details: T.nilable(OpenAI::Beta::BetaResponse::IncompleteDetails),
@@ -755,6 +766,58 @@ module OpenAI
755
766
  def to_hash
756
767
  end
757
768
 
769
+ class AccessPrograms < OpenAI::Internal::Type::BaseModel
770
+ OrHash = T.type_alias do
771
+ T.any(
772
+ OpenAI::Beta::BetaResponse::AccessPrograms,
773
+ OpenAI::Internal::AnyHash
774
+ )
775
+ end
776
+
777
+ # The effective Cyber access program used for this response.
778
+ sig { returns(OpenAI::Beta::BetaResponse::AccessPrograms::Cyber::TaggedSymbol) }
779
+ attr_accessor :cyber
780
+
781
+ sig do
782
+ params(
783
+
784
+ cyber: OpenAI::Beta::BetaResponse::AccessPrograms::Cyber::OrSymbol
785
+ )
786
+ .returns(T.attached_class)
787
+ end
788
+ def self.new(
789
+
790
+ # The effective Cyber access program used for this response.
791
+
792
+ cyber:
793
+ )
794
+ end
795
+
796
+ sig do
797
+ override.returns(
798
+ {cyber: OpenAI::Beta::BetaResponse::AccessPrograms::Cyber::TaggedSymbol}
799
+ )
800
+ end
801
+ def to_hash
802
+ end
803
+
804
+ # The effective Cyber access program used for this response.
805
+ module Cyber
806
+ extend OpenAI::Internal::Type::Enum
807
+
808
+ TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Beta::BetaResponse::AccessPrograms::Cyber) }
809
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
810
+
811
+ STANDARD = T.let(:standard, OpenAI::Beta::BetaResponse::AccessPrograms::Cyber::TaggedSymbol)
812
+ DAYBREAK_BLUE = T.let(:daybreak_blue, OpenAI::Beta::BetaResponse::AccessPrograms::Cyber::TaggedSymbol)
813
+ DAYBREAK_RED = T.let(:daybreak_red, OpenAI::Beta::BetaResponse::AccessPrograms::Cyber::TaggedSymbol)
814
+
815
+ sig { override.returns(T::Array[OpenAI::Beta::BetaResponse::AccessPrograms::Cyber::TaggedSymbol]) }
816
+ def self.values
817
+ end
818
+ end
819
+ end
820
+
758
821
  class IncompleteDetails < OpenAI::Internal::Type::BaseModel
759
822
  OrHash = T.type_alias do
760
823
  T.any(
@@ -863,6 +926,7 @@ module OpenAI
863
926
  OrSymbol = T.type_alias { T.any(Symbol, String) }
864
927
 
865
928
  GPT_6_ASTRA = T.let(:"gpt-6-astra", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
929
+ GPT_6_1_SOL = T.let(:"gpt-6.1-sol", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
866
930
  GPT_6_SOL = T.let(:"gpt-6-sol", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
867
931
  GPT_6_LUNA = T.let(:"gpt-6-luna", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
868
932
  GPT_5_6_SOL = T.let(:"gpt-5.6-sol", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
@@ -31,6 +31,15 @@ module OpenAI
31
31
  sig { returns(Symbol) }
32
32
  attr_accessor :type
33
33
 
34
+ # Domain-specific access programs to use for this request.
35
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms)) }
36
+ attr_reader :access_programs
37
+
38
+ sig {
39
+ params(access_programs: OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::OrHash).void
40
+ }
41
+ attr_writer :access_programs
42
+
34
43
  # Whether to run the model response in the background.
35
44
  # [Learn more](https://developers.openai.com/api/docs/guides/background).
36
45
  sig { returns(T.nilable(T::Boolean)) }
@@ -484,6 +493,8 @@ module OpenAI
484
493
  sig do
485
494
  params(
486
495
 
496
+ access_programs: OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::OrHash,
497
+
487
498
  background: T.nilable(T::Boolean),
488
499
 
489
500
  context_management: T.nilable(
@@ -589,6 +600,9 @@ module OpenAI
589
600
  end
590
601
  def self.new(
591
602
 
603
+ # Domain-specific access programs to use for this request.
604
+ access_programs: nil,
605
+
592
606
  # Whether to run the model response in the background.
593
607
  # [Learn more](https://developers.openai.com/api/docs/guides/background).
594
608
  background: nil,
@@ -862,6 +876,7 @@ module OpenAI
862
876
  override.returns(
863
877
  {
864
878
  type: Symbol,
879
+ access_programs: T.nilable(OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms),
865
880
  background: T.nilable(T::Boolean),
866
881
  context_management: T.nilable(
867
882
  T::Array[OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::ContextManagement]
@@ -940,6 +955,115 @@ module OpenAI
940
955
  def to_hash
941
956
  end
942
957
 
958
+ class AccessPrograms < OpenAI::Internal::Type::BaseModel
959
+ OrHash = T.type_alias do
960
+ T.any(
961
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms,
962
+ OpenAI::Internal::AnyHash
963
+ )
964
+ end
965
+
966
+ # The Cyber access program to use for this request. Supported values are
967
+ # `standard`, `daybreak_blue`, and `daybreak_red`. If omitted, the API resolves
968
+ # the program from the model's Cyber tier and your organization and project
969
+ # access, subject to model-specific eligibility restrictions. By default, models
970
+ # without a Cyber tier use Standard. Blue-tier models use Daybreak Blue when
971
+ # authorized; otherwise they fall back to Standard unless the model requires
972
+ # Daybreak access. Red-tier models use Daybreak Red and require authorization.
973
+ # Requests that require unavailable Daybreak access return 403. An implicit
974
+ # Standard fallback is represented by null in the response's access_programs
975
+ # field, rather than an explicit Standard selection.
976
+ sig {
977
+ returns(
978
+ T.nilable(OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::OrSymbol)
979
+ )
980
+ }
981
+ attr_reader :cyber
982
+
983
+ sig {
984
+ params(cyber: OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::OrSymbol)
985
+ .void
986
+ }
987
+ attr_writer :cyber
988
+
989
+ # Domain-specific access programs to use for this request.
990
+ sig do
991
+ params(
992
+
993
+ cyber: OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::OrSymbol
994
+ )
995
+ .returns(T.attached_class)
996
+ end
997
+ def self.new(
998
+
999
+ # The Cyber access program to use for this request. Supported values are
1000
+ # `standard`, `daybreak_blue`, and `daybreak_red`. If omitted, the API resolves
1001
+ # the program from the model's Cyber tier and your organization and project
1002
+ # access, subject to model-specific eligibility restrictions. By default, models
1003
+ # without a Cyber tier use Standard. Blue-tier models use Daybreak Blue when
1004
+ # authorized; otherwise they fall back to Standard unless the model requires
1005
+ # Daybreak access. Red-tier models use Daybreak Red and require authorization.
1006
+ # Requests that require unavailable Daybreak access return 403. An implicit
1007
+ # Standard fallback is represented by null in the response's access_programs
1008
+ # field, rather than an explicit Standard selection.
1009
+
1010
+ cyber: nil
1011
+ )
1012
+ end
1013
+
1014
+ sig do
1015
+ override.returns(
1016
+ {
1017
+ cyber: T.nilable(
1018
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::OrSymbol
1019
+ )
1020
+ }
1021
+ )
1022
+ end
1023
+ def to_hash
1024
+ end
1025
+
1026
+ # The Cyber access program to use for this request. Supported values are
1027
+ # `standard`, `daybreak_blue`, and `daybreak_red`. If omitted, the API resolves
1028
+ # the program from the model's Cyber tier and your organization and project
1029
+ # access, subject to model-specific eligibility restrictions. By default, models
1030
+ # without a Cyber tier use Standard. Blue-tier models use Daybreak Blue when
1031
+ # authorized; otherwise they fall back to Standard unless the model requires
1032
+ # Daybreak access. Red-tier models use Daybreak Red and require authorization.
1033
+ # Requests that require unavailable Daybreak access return 403. An implicit
1034
+ # Standard fallback is represented by null in the response's access_programs
1035
+ # field, rather than an explicit Standard selection.
1036
+ module Cyber
1037
+ extend OpenAI::Internal::Type::Enum
1038
+
1039
+ TaggedSymbol = T.type_alias {
1040
+ T.all(Symbol, OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber)
1041
+ }
1042
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1043
+
1044
+ STANDARD = T.let(
1045
+ :standard,
1046
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::TaggedSymbol
1047
+ )
1048
+ DAYBREAK_BLUE = T.let(
1049
+ :daybreak_blue,
1050
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::TaggedSymbol
1051
+ )
1052
+ DAYBREAK_RED = T.let(
1053
+ :daybreak_red,
1054
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::TaggedSymbol
1055
+ )
1056
+
1057
+ sig {
1058
+ override.returns(
1059
+ T::Array[OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::AccessPrograms::Cyber::TaggedSymbol]
1060
+ )
1061
+ }
1062
+ def self.values
1063
+ end
1064
+ end
1065
+ end
1066
+
943
1067
  class ContextManagement < OpenAI::Internal::Type::BaseModel
944
1068
  OrHash = T.type_alias do
945
1069
  T.any(
@@ -1049,6 +1173,10 @@ module OpenAI
1049
1173
  :"gpt-6-astra",
1050
1174
  OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Model::TaggedSymbol
1051
1175
  )
1176
+ GPT_6_1_SOL = T.let(
1177
+ :"gpt-6.1-sol",
1178
+ OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Model::TaggedSymbol
1179
+ )
1052
1180
  GPT_6_SOL = T.let(:"gpt-6-sol", OpenAI::Beta::BetaResponsesClientEvent::ResponseCreate::Model::TaggedSymbol)
1053
1181
  GPT_6_LUNA = T.let(
1054
1182
  :"gpt-6-luna",
@@ -38,7 +38,9 @@ module OpenAI
38
38
  sig { params(search_context_size: OpenAI::Beta::BetaWebSearchPreviewTool::SearchContextSize::OrSymbol).void }
39
39
  attr_writer :search_context_size
40
40
 
41
- # The user's location.
41
+ # The approximate location of the user. If omitted or null, defaults to the United
42
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
43
+ # fields. To localize results, provide the relevant location fields.
42
44
  sig { returns(T.nilable(OpenAI::Beta::BetaWebSearchPreviewTool::UserLocation)) }
43
45
  attr_reader :user_location
44
46
 
@@ -73,7 +75,9 @@ module OpenAI
73
75
  # search. One of `low`, `medium`, or `high`. `medium` is the default.
74
76
  search_context_size: nil,
75
77
 
76
- # The user's location.
78
+ # The approximate location of the user. If omitted or null, defaults to the United
79
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
80
+ # fields. To localize results, provide the relevant location fields.
77
81
 
78
82
  user_location: nil
79
83
  )
@@ -172,7 +176,9 @@ module OpenAI
172
176
  sig { returns(T.nilable(String)) }
173
177
  attr_accessor :timezone
174
178
 
175
- # The user's location.
179
+ # The approximate location of the user. If omitted or null, defaults to the United
180
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
181
+ # fields. To localize results, provide the relevant location fields.
176
182
  sig do
177
183
  params(
178
184
 
@@ -44,7 +44,9 @@ module OpenAI
44
44
  sig { params(search_context_size: OpenAI::Beta::BetaWebSearchTool::SearchContextSize::OrSymbol).void }
45
45
  attr_writer :search_context_size
46
46
 
47
- # The approximate location of the user.
47
+ # The approximate location of the user. If omitted or null, defaults to the United
48
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
49
+ # fields. To localize results, provide the relevant location fields.
48
50
  sig { returns(T.nilable(OpenAI::Beta::BetaWebSearchTool::UserLocation)) }
49
51
  attr_reader :user_location
50
52
 
@@ -85,7 +87,9 @@ module OpenAI
85
87
  # search. One of `low`, `medium`, or `high`. `medium` is the default.
86
88
  search_context_size: nil,
87
89
 
88
- # The approximate location of the user.
90
+ # The approximate location of the user. If omitted or null, defaults to the United
91
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
92
+ # fields. To localize results, provide the relevant location fields.
89
93
 
90
94
  user_location: nil
91
95
  )
@@ -214,7 +218,9 @@ module OpenAI
214
218
  sig { params(type: OpenAI::Beta::BetaWebSearchTool::UserLocation::Type::OrSymbol).void }
215
219
  attr_writer :type
216
220
 
217
- # The approximate location of the user.
221
+ # The approximate location of the user. If omitted or null, defaults to the United
222
+ # States. To avoid this fallback, pass `{"type": "approximate"}` without location
223
+ # fields. To localize results, provide the relevant location fields.
218
224
  sig do
219
225
  params(
220
226
 
@@ -102,6 +102,13 @@ module OpenAI
102
102
  sig { returns(Symbol) }
103
103
  attr_accessor :type
104
104
 
105
+ # The effective desktop configuration.
106
+ sig { returns(T.nilable(OpenAI::Beta::Environment::OpenAIHosted::Desktop)) }
107
+ attr_reader :desktop
108
+
109
+ sig { params(desktop: OpenAI::Beta::Environment::OpenAIHosted::Desktop::OrHash).void }
110
+ attr_writer :desktop
111
+
105
112
  # An environment hosted by OpenAI.
106
113
  sig do
107
114
  params(
@@ -127,6 +134,8 @@ module OpenAI
127
134
  T.any(OpenAI::Beta::HostedSkillReference::OrHash, OpenAI::Beta::HostedSkill::Inline::OrHash)
128
135
  ],
129
136
 
137
+ desktop: OpenAI::Beta::Environment::OpenAIHosted::Desktop::OrHash,
138
+
130
139
  type: Symbol
131
140
  )
132
141
  .returns(T.attached_class)
@@ -154,6 +163,9 @@ module OpenAI
154
163
  # Skills installed in the environment, excluding their archive contents.
155
164
  skills:,
156
165
 
166
+ # The effective desktop configuration.
167
+ desktop: nil,
168
+
157
169
  # The type of the object. Always `openai_hosted`.
158
170
 
159
171
  type: :openai_hosted
@@ -170,7 +182,8 @@ module OpenAI
170
182
  packages: OpenAI::Beta::Environment::OpenAIHosted::Packages,
171
183
  plugins: T::Array[OpenAI::Beta::HostedPlugin],
172
184
  skills: T::Array[OpenAI::Beta::HostedSkill::Variants],
173
- type: Symbol
185
+ type: Symbol,
186
+ desktop: OpenAI::Beta::Environment::OpenAIHosted::Desktop
174
187
  }
175
188
  )
176
189
  end
@@ -238,7 +251,7 @@ module OpenAI
238
251
  # Disables network access.
239
252
  DISABLED = T.let(:disabled, OpenAI::Beta::Environment::OpenAIHosted::Network::Access::TaggedSymbol)
240
253
 
241
- # Allows access only to configured domains.
254
+ # Applies the configured domain restrictions.
242
255
  RESTRICTED = T.let(:restricted, OpenAI::Beta::Environment::OpenAIHosted::Network::Access::TaggedSymbol)
243
256
 
244
257
  sig {
@@ -304,6 +317,44 @@ module OpenAI
304
317
  end
305
318
 
306
319
  end
320
+
321
+ class Desktop < OpenAI::Internal::Type::BaseModel
322
+ OrHash = T.type_alias do
323
+ T.any(
324
+ OpenAI::Beta::Environment::OpenAIHosted::Desktop,
325
+ OpenAI::Internal::AnyHash
326
+ )
327
+ end
328
+
329
+ # Whether the environment provisions a desktop and browser proxy.
330
+ sig { returns(T::Boolean) }
331
+ attr_accessor :enabled
332
+
333
+ # The effective desktop configuration.
334
+ sig do
335
+ params(
336
+
337
+ enabled: T::Boolean
338
+ )
339
+ .returns(T.attached_class)
340
+ end
341
+ def self.new(
342
+
343
+ # Whether the environment provisions a desktop and browser proxy.
344
+
345
+ enabled:
346
+ )
347
+ end
348
+
349
+ sig do
350
+ override.returns(
351
+ {enabled: T::Boolean}
352
+ )
353
+ end
354
+ def to_hash
355
+ end
356
+
357
+ end
307
358
  end
308
359
 
309
360
  class SelfHosted < OpenAI::Internal::Type::BaseModel
@@ -72,6 +72,14 @@ module OpenAI
72
72
  sig { returns(T.nilable(T::Array[String])) }
73
73
  attr_accessor :capability_directories
74
74
 
75
+ # Desktop provisioning. Omission or null inherits the template setting, or
76
+ # defaults to disabled.
77
+ sig { returns(T.nilable(OpenAI::Beta::EnvironmentParam::OpenAIHosted::Desktop)) }
78
+ attr_reader :desktop
79
+
80
+ sig { params(desktop: T.nilable(OpenAI::Beta::EnvironmentParam::OpenAIHosted::Desktop::OrHash)).void }
81
+ attr_writer :desktop
82
+
75
83
  # Environment variables made available to the agent.
76
84
  sig { returns(T.nilable(T::Hash[Symbol, String])) }
77
85
  attr_accessor :env
@@ -100,7 +108,7 @@ module OpenAI
100
108
  attr_accessor :files
101
109
 
102
110
  # Network access policy for the environment. Defaults to disabled for GA requests
103
- # and enabled for alpha/beta requests.
111
+ # and enabled for beta requests.
104
112
  sig { returns(T.nilable(OpenAI::Beta::EnvironmentParam::OpenAIHosted::Network)) }
105
113
  attr_reader :network
106
114
 
@@ -140,6 +148,8 @@ module OpenAI
140
148
 
141
149
  capability_directories: T.nilable(T::Array[String]),
142
150
 
151
+ desktop: T.nilable(OpenAI::Beta::EnvironmentParam::OpenAIHosted::Desktop::OrHash),
152
+
143
153
  env: T.nilable(T::Hash[Symbol, String]),
144
154
 
145
155
  environment_template_id: String,
@@ -180,6 +190,10 @@ module OpenAI
180
190
  # list.
181
191
  capability_directories: nil,
182
192
 
193
+ # Desktop provisioning. Omission or null inherits the template setting, or
194
+ # defaults to disabled.
195
+ desktop: nil,
196
+
183
197
  # Environment variables made available to the agent.
184
198
  env: nil,
185
199
 
@@ -191,7 +205,7 @@ module OpenAI
191
205
  files: nil,
192
206
 
193
207
  # Network access policy for the environment. Defaults to disabled for GA requests
194
- # and enabled for alpha/beta requests.
208
+ # and enabled for beta requests.
195
209
  network: nil,
196
210
 
197
211
  # Packages to install in the environment. Defaults to empty package lists.
@@ -218,6 +232,7 @@ module OpenAI
218
232
  {
219
233
  type: Symbol,
220
234
  capability_directories: T.nilable(T::Array[String]),
235
+ desktop: T.nilable(OpenAI::Beta::EnvironmentParam::OpenAIHosted::Desktop),
221
236
  env: T.nilable(T::Hash[Symbol, String]),
222
237
  environment_template_id: String,
223
238
  files: T.nilable(
@@ -243,6 +258,45 @@ module OpenAI
243
258
  def to_hash
244
259
  end
245
260
 
261
+ class Desktop < OpenAI::Internal::Type::BaseModel
262
+ OrHash = T.type_alias do
263
+ T.any(
264
+ OpenAI::Beta::EnvironmentParam::OpenAIHosted::Desktop,
265
+ OpenAI::Internal::AnyHash
266
+ )
267
+ end
268
+
269
+ # Whether to provision the desktop and its browser proxy.
270
+ sig { returns(T::Boolean) }
271
+ attr_accessor :enabled
272
+
273
+ # Desktop provisioning. Omission or null inherits the template setting, or
274
+ # defaults to disabled.
275
+ sig do
276
+ params(
277
+
278
+ enabled: T::Boolean
279
+ )
280
+ .returns(T.attached_class)
281
+ end
282
+ def self.new(
283
+
284
+ # Whether to provision the desktop and its browser proxy.
285
+
286
+ enabled:
287
+ )
288
+ end
289
+
290
+ sig do
291
+ override.returns(
292
+ {enabled: T::Boolean}
293
+ )
294
+ end
295
+ def to_hash
296
+ end
297
+
298
+ end
299
+
246
300
  class Network < OpenAI::Internal::Type::BaseModel
247
301
  OrHash = T.type_alias do
248
302
  T.any(
@@ -259,14 +313,22 @@ module OpenAI
259
313
  sig { returns(T.nilable(T::Array[String])) }
260
314
  attr_accessor :allowed_domains
261
315
 
316
+ # Domains blocked for both executor and browser when access is restricted. A
317
+ # nonempty list requires `access: restricted` and cannot be combined with nonempty
318
+ # `allowed_domains`. Wildcard domains are not supported.
319
+ sig { returns(T.nilable(T::Array[String])) }
320
+ attr_accessor :blocked_domains
321
+
262
322
  # Network access policy for the environment. Defaults to disabled for GA requests
263
- # and enabled for alpha/beta requests.
323
+ # and enabled for beta requests.
264
324
  sig do
265
325
  params(
266
326
 
267
327
  access: OpenAI::Beta::EnvironmentParam::OpenAIHosted::Network::Access::OrSymbol,
268
328
 
269
- allowed_domains: T.nilable(T::Array[String])
329
+ allowed_domains: T.nilable(T::Array[String]),
330
+
331
+ blocked_domains: T.nilable(T::Array[String])
270
332
  )
271
333
  .returns(T.attached_class)
272
334
  end
@@ -276,8 +338,13 @@ module OpenAI
276
338
  access:,
277
339
 
278
340
  # Domains the environment may access when network access is restricted.
341
+ allowed_domains: nil,
342
+
343
+ # Domains blocked for both executor and browser when access is restricted. A
344
+ # nonempty list requires `access: restricted` and cannot be combined with nonempty
345
+ # `allowed_domains`. Wildcard domains are not supported.
279
346
 
280
- allowed_domains: nil
347
+ blocked_domains: nil
281
348
  )
282
349
  end
283
350
 
@@ -285,7 +352,8 @@ module OpenAI
285
352
  override.returns(
286
353
  {
287
354
  access: OpenAI::Beta::EnvironmentParam::OpenAIHosted::Network::Access::OrSymbol,
288
- allowed_domains: T.nilable(T::Array[String])
355
+ allowed_domains: T.nilable(T::Array[String]),
356
+ blocked_domains: T.nilable(T::Array[String])
289
357
  }
290
358
  )
291
359
  end
@@ -307,7 +375,7 @@ module OpenAI
307
375
  # Disables network access.
308
376
  DISABLED = T.let(:disabled, OpenAI::Beta::EnvironmentParam::OpenAIHosted::Network::Access::TaggedSymbol)
309
377
 
310
- # Allows access only to configured domains.
378
+ # Applies the configured domain restrictions.
311
379
  RESTRICTED = T.let(
312
380
  :restricted,
313
381
  OpenAI::Beta::EnvironmentParam::OpenAIHosted::Network::Access::TaggedSymbol