openai 0.96.0 → 0.98.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 (176) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +31 -0
  3. data/README.md +76 -1
  4. data/lib/openai/helpers/agents/session_stream.rb +60 -3
  5. data/lib/openai/helpers/beta/agents/artifacts.rb +72 -0
  6. data/lib/openai/helpers/beta/agents/creation_stream.rb +69 -0
  7. data/lib/openai/helpers/beta/agents/files.rb +236 -0
  8. data/lib/openai/helpers/beta/agents/function_tool.rb +65 -0
  9. data/lib/openai/helpers/beta/agents/model_adapter.rb +27 -0
  10. data/lib/openai/helpers/beta/agents/result.rb +170 -0
  11. data/lib/openai/helpers/beta/agents/typed_output.rb +191 -0
  12. data/lib/openai/helpers/live/websocket.rb +7 -1
  13. data/lib/openai/helpers/realtime/conversation_item_variant_resolver.rb +1 -1
  14. data/lib/openai/helpers/responses_websocket/connection.rb +7 -1
  15. data/lib/openai/helpers/responses_websocket/session.rb +5 -1
  16. data/lib/openai/helpers/responses_websocket/transports/async_websocket.rb +12 -2
  17. data/lib/openai/internal/transport/base_client.rb +18 -0
  18. data/lib/openai/internal/type/array_of.rb +1 -1
  19. data/lib/openai/internal/type/base_model.rb +6 -3
  20. data/lib/openai/internal/type/converter.rb +50 -3
  21. data/lib/openai/internal/type/hash_of.rb +1 -1
  22. data/lib/openai/internal/type/union.rb +6 -6
  23. data/lib/openai/models/beta/agent.rb +2 -2
  24. data/lib/openai/models/beta/agent_browser_authentication_cancel_param.rb +23 -0
  25. data/lib/openai/models/beta/agent_browser_authentication_submit_param.rb +70 -0
  26. data/lib/openai/models/beta/agent_browser_origin_access_param.rb +45 -0
  27. data/lib/openai/models/beta/agent_create_params.rb +2 -2
  28. data/lib/openai/models/beta/agent_output_item.rb +276 -1
  29. data/lib/openai/models/beta/agent_session.rb +251 -5
  30. data/lib/openai/models/beta/agent_session_input_param.rb +64 -1
  31. data/lib/openai/models/beta/agent_session_item.rb +391 -1
  32. data/lib/openai/models/beta/agent_session_turn_item_added_event.rb +2 -2
  33. data/lib/openai/models/beta/agent_session_turn_item_done_event.rb +2 -2
  34. data/lib/openai/models/beta/agent_tool.rb +27 -1
  35. data/lib/openai/models/beta/agent_tool_param.rb +27 -1
  36. data/lib/openai/models/beta/agent_update_params.rb +2 -2
  37. data/lib/openai/models/beta/agents/environments/environment_template.rb +26 -2
  38. data/lib/openai/models/beta/agents/environments/template_create_params.rb +48 -3
  39. data/lib/openai/models/beta/agents/environments/template_update_params.rb +45 -3
  40. data/lib/openai/models/beta/agents/session_create_params.rb +2 -2
  41. data/lib/openai/models/beta/agents/sessions/event_create_params.rb +2 -2
  42. data/lib/openai/models/beta/agents/sessions/session_trace.rb +64 -0
  43. data/lib/openai/models/beta/agents/sessions/trace_list_params.rb +68 -0
  44. data/lib/openai/models/beta/agents/vaults/credential.rb +8 -4
  45. data/lib/openai/models/beta/beta_response_output_text.rb +2 -2
  46. data/lib/openai/models/beta/beta_response_output_text_annotation_added_event.rb +2 -2
  47. data/lib/openai/models/beta/environment.rb +58 -2
  48. data/lib/openai/models/beta/environment_param.rb +66 -3
  49. data/lib/openai/models/beta/persisted_agent_tool.rb +27 -1
  50. data/lib/openai/models/beta/persisted_agent_tool_param.rb +27 -1
  51. data/lib/openai/models/beta/session_turn_error.rb +3 -0
  52. data/lib/openai/models/chat/chat_completion_content_part_image.rb +1 -0
  53. data/lib/openai/models/live/fork_server_event.rb +14 -3
  54. data/lib/openai/models/live/server_event.rb +14 -3
  55. data/lib/openai/models/realtime/translations/client_secret_create_params.rb +28 -0
  56. data/lib/openai/models/responses/response_output_text.rb +2 -2
  57. data/lib/openai/models/responses/response_output_text_annotation_added_event.rb +2 -2
  58. data/lib/openai/resources/beta/agents/environments/files.rb +31 -0
  59. data/lib/openai/resources/beta/agents/environments/templates.rb +9 -2
  60. data/lib/openai/resources/beta/agents/sessions/artifacts.rb +8 -0
  61. data/lib/openai/resources/beta/agents/sessions/events.rb +7 -6
  62. data/lib/openai/resources/beta/agents/sessions/items.rb +1 -1
  63. data/lib/openai/resources/beta/agents/sessions/subagents/items.rb +1 -1
  64. data/lib/openai/resources/beta/agents/sessions/subagents/turns/items.rb +1 -1
  65. data/lib/openai/resources/beta/agents/sessions/traces.rb +58 -0
  66. data/lib/openai/resources/beta/agents/sessions.rb +18 -5
  67. data/lib/openai/resources/beta/agents.rb +2 -2
  68. data/lib/openai/resources/evals/runs.rb +1 -1
  69. data/lib/openai/resources/realtime/translations/client_secrets.rb +58 -0
  70. data/lib/openai/resources/realtime/translations.rb +20 -0
  71. data/lib/openai/resources/realtime.rb +4 -0
  72. data/lib/openai/version.rb +1 -1
  73. data/lib/openai.rb +12 -1
  74. data/rbi/openai/helpers/agents.rbi +20 -1
  75. data/rbi/openai/helpers/beta/agents/artifacts.rbi +29 -0
  76. data/rbi/openai/helpers/beta/agents/files.rbi +65 -0
  77. data/rbi/openai/helpers/beta/agents/function_tool.rbi +40 -0
  78. data/rbi/openai/helpers/beta/agents/model_adapter.rbi +22 -0
  79. data/rbi/openai/helpers/beta/agents.rbi +146 -0
  80. data/rbi/openai/internal/transport/base_client.rbi +12 -0
  81. data/rbi/openai/internal/type/base_model.rbi +2 -2
  82. data/rbi/openai/internal/type/converter.rbi +21 -3
  83. data/rbi/openai/internal/type/union.rbi +6 -2
  84. data/rbi/openai/models/beta/agent.rbi +2 -1
  85. data/rbi/openai/models/beta/agent_browser_authentication_cancel_param.rbi +53 -0
  86. data/rbi/openai/models/beta/agent_browser_authentication_submit_param.rbi +125 -0
  87. data/rbi/openai/models/beta/agent_browser_origin_access_param.rbi +76 -0
  88. data/rbi/openai/models/beta/agent_create_params.rbi +6 -3
  89. data/rbi/openai/models/beta/agent_output_item.rbi +422 -0
  90. data/rbi/openai/models/beta/agent_session.rbi +373 -1
  91. data/rbi/openai/models/beta/agent_session_input_param.rbi +102 -0
  92. data/rbi/openai/models/beta/agent_session_item.rbi +614 -0
  93. data/rbi/openai/models/beta/agent_session_turn_item_added_event.rbi +3 -0
  94. data/rbi/openai/models/beta/agent_session_turn_item_done_event.rbi +2 -0
  95. data/rbi/openai/models/beta/agent_tool.rbi +49 -1
  96. data/rbi/openai/models/beta/agent_tool_param.rbi +52 -1
  97. data/rbi/openai/models/beta/agent_update_params.rbi +6 -3
  98. data/rbi/openai/models/beta/agents/environments/environment_template.rbi +53 -2
  99. data/rbi/openai/models/beta/agents/environments/template_create_params.rbi +74 -4
  100. data/rbi/openai/models/beta/agents/environments/template_update_params.rbi +71 -4
  101. data/rbi/openai/models/beta/agents/session_create_params.rbi +6 -3
  102. data/rbi/openai/models/beta/agents/sessions/event_create_params.rbi +3 -0
  103. data/rbi/openai/models/beta/agents/sessions/session_trace.rbi +97 -0
  104. data/rbi/openai/models/beta/agents/sessions/trace_list_params.rbi +121 -0
  105. data/rbi/openai/models/beta/agents/vaults/credential.rbi +5 -5
  106. data/rbi/openai/models/beta/beta_response_output_text.rbi +2 -2
  107. data/rbi/openai/models/beta/beta_response_output_text_annotation_added_event.rbi +2 -2
  108. data/rbi/openai/models/beta/environment.rbi +82 -2
  109. data/rbi/openai/models/beta/environment_param.rbi +103 -4
  110. data/rbi/openai/models/beta/persisted_agent_tool.rbi +49 -1
  111. data/rbi/openai/models/beta/persisted_agent_tool_param.rbi +52 -1
  112. data/rbi/openai/models/beta/session_turn_error.rbi +3 -0
  113. data/rbi/openai/models/chat/chat_completion_content_part_image.rbi +1 -0
  114. data/rbi/openai/models/live/fork_server_event.rbi +14 -2
  115. data/rbi/openai/models/live/server_event.rbi +14 -2
  116. data/rbi/openai/models/realtime/translations/client_secret_create_params.rbi +68 -0
  117. data/rbi/openai/models/responses/response_output_text.rbi +2 -2
  118. data/rbi/openai/models/responses/response_output_text_annotation_added_event.rbi +2 -2
  119. data/rbi/openai/resources/beta/agents/environments/files.rbi +31 -0
  120. data/rbi/openai/resources/beta/agents/environments/templates.rbi +7 -0
  121. data/rbi/openai/resources/beta/agents/sessions/artifacts.rbi +8 -0
  122. data/rbi/openai/resources/beta/agents/sessions/events.rbi +7 -5
  123. data/rbi/openai/resources/beta/agents/sessions/traces.rbi +54 -0
  124. data/rbi/openai/resources/beta/agents/sessions.rbi +6 -1
  125. data/rbi/openai/resources/beta/agents.rbi +4 -2
  126. data/rbi/openai/resources/realtime/translations/client_secrets.rbi +54 -0
  127. data/rbi/openai/resources/realtime/translations.rbi +22 -0
  128. data/rbi/openai/resources/realtime.rbi +3 -0
  129. data/sig/openai/helpers/agents.rbs +7 -0
  130. data/sig/openai/helpers/beta/agents/artifacts.rbs +20 -0
  131. data/sig/openai/helpers/beta/agents/files.rbs +41 -0
  132. data/sig/openai/helpers/beta/agents/function_tool.rbs +24 -0
  133. data/sig/openai/helpers/beta/agents/model_adapter.rbs +16 -0
  134. data/sig/openai/helpers/beta/agents.rbs +71 -0
  135. data/sig/openai/helpers/structured_output.rbs +12 -0
  136. data/sig/openai/internal/transport/base_client.rbs +8 -0
  137. data/sig/openai/internal/type/base_model.rbs +3 -1
  138. data/sig/openai/internal/type/converter.rbs +16 -2
  139. data/sig/openai/internal/type/union.rbs +2 -1
  140. data/sig/openai/models/beta/agent_browser_authentication_cancel_param.rbs +21 -0
  141. data/sig/openai/models/beta/agent_browser_authentication_submit_param.rbs +63 -0
  142. data/sig/openai/models/beta/agent_browser_origin_access_param.rbs +47 -0
  143. data/sig/openai/models/beta/agent_output_item.rbs +254 -0
  144. data/sig/openai/models/beta/agent_session.rbs +215 -1
  145. data/sig/openai/models/beta/agent_session_input_param.rbs +51 -1
  146. data/sig/openai/models/beta/agent_session_item.rbs +362 -0
  147. data/sig/openai/models/beta/agent_tool.rbs +22 -0
  148. data/sig/openai/models/beta/agent_tool_param.rbs +25 -0
  149. data/sig/openai/models/beta/agents/environments/environment_template.rbs +29 -3
  150. data/sig/openai/models/beta/agents/environments/template_create_params.rbs +39 -4
  151. data/sig/openai/models/beta/agents/environments/template_update_params.rbs +37 -4
  152. data/sig/openai/models/beta/agents/sessions/session_trace.rbs +65 -0
  153. data/sig/openai/models/beta/agents/sessions/trace_list_params.rbs +81 -0
  154. data/sig/openai/models/beta/agents/vaults/credential.rbs +5 -5
  155. data/sig/openai/models/beta/beta_response_output_text.rbs +2 -2
  156. data/sig/openai/models/beta/beta_response_output_text_annotation_added_event.rbs +2 -2
  157. data/sig/openai/models/beta/environment.rbs +51 -3
  158. data/sig/openai/models/beta/environment_param.rbs +64 -4
  159. data/sig/openai/models/beta/persisted_agent_tool.rbs +22 -0
  160. data/sig/openai/models/beta/persisted_agent_tool_param.rbs +25 -0
  161. data/sig/openai/models/beta/session_turn_error.rbs +4 -0
  162. data/sig/openai/models/chat/chat_completion_content_part_image.rbs +2 -1
  163. data/sig/openai/models/live/fork_server_event.rbs +17 -2
  164. data/sig/openai/models/live/server_event.rbs +17 -2
  165. data/sig/openai/models/realtime/translations/client_secret_create_params.rbs +39 -0
  166. data/sig/openai/models/responses/response_output_text.rbs +2 -2
  167. data/sig/openai/models/responses/response_output_text_annotation_added_event.rbs +2 -2
  168. data/sig/openai/resources/beta/agents/environments/files.rbs +17 -0
  169. data/sig/openai/resources/beta/agents/environments/templates.rbs +2 -0
  170. data/sig/openai/resources/beta/agents/sessions/artifacts.rbs +4 -0
  171. data/sig/openai/resources/beta/agents/sessions/traces.rbs +21 -0
  172. data/sig/openai/resources/beta/agents/sessions.rbs +4 -1
  173. data/sig/openai/resources/realtime/translations/client_secrets.rbs +17 -0
  174. data/sig/openai/resources/realtime/translations.rbs +11 -0
  175. data/sig/openai/resources/realtime.rbs +2 -0
  176. metadata +46 -1
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Resources
5
+ class Realtime
6
+ class Translations
7
+ class ClientSecrets
8
+ # Create a Realtime translation client secret with an associated translation
9
+ # session configuration.
10
+ #
11
+ # Client secrets are short-lived tokens that can be passed to a client app, such
12
+ # as a web frontend or mobile client, which grants access to the Realtime
13
+ # Translation API without leaking your main API key. You can configure a custom
14
+ # TTL for each client secret.
15
+ #
16
+ # Returns the created client secret and the effective translation session object.
17
+ # The client secret is a string that looks like `ek_1234`.
18
+ #
19
+ # @overload create(session:, expires_after: nil, request_options: {})
20
+ #
21
+ # @param session [OpenAI::Models::Realtime::RealtimeTranslationSessionCreateRequest]
22
+ # Realtime translation session configuration. Translation sessions stream source
23
+ # audio in and translated audio plus transcript deltas out continuously.
24
+ #
25
+ # @param expires_after [OpenAI::Models::Realtime::RealtimeTranslationClientSecretCreateRequest::ExpiresAfter]
26
+ # Configuration for the client secret expiration. Expiration refers to the time
27
+ # after which a client secret will no longer be valid for creating sessions. The
28
+ # session itself may continue after that time once started. A secret can be used
29
+ # to create multiple sessions until it expires.
30
+ #
31
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
32
+ #
33
+ # @return [OpenAI::Models::Realtime::RealtimeTranslationClientSecretCreateResponse]
34
+ #
35
+ # @see OpenAI::Models::Realtime::Translations::ClientSecretCreateParams
36
+ def create(params)
37
+ parsed, options = OpenAI::Realtime::Translations::ClientSecretCreateParams.dump_request(params)
38
+ @client.request(
39
+ method: :post,
40
+ path: "realtime/translations/client_secrets",
41
+ body: parsed,
42
+ model: OpenAI::Realtime::RealtimeTranslationClientSecretCreateResponse,
43
+ security: {bearer_auth: true},
44
+ options: options
45
+ )
46
+ end
47
+
48
+ # @api private
49
+ #
50
+ # @param client [OpenAI::Client]
51
+ def initialize(client:)
52
+ @client = client
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Resources
5
+ class Realtime
6
+ class Translations
7
+ # @return [OpenAI::Resources::Realtime::Translations::ClientSecrets]
8
+ attr_reader :client_secrets
9
+
10
+ # @api private
11
+ #
12
+ # @param client [OpenAI::Client]
13
+ def initialize(client:)
14
+ @client = client
15
+ @client_secrets = OpenAI::Resources::Realtime::Translations::ClientSecrets.new(client: client)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -9,6 +9,9 @@ module OpenAI
9
9
  # @return [OpenAI::Resources::Realtime::Calls]
10
10
  attr_reader :calls
11
11
 
12
+ # @return [OpenAI::Resources::Realtime::Translations]
13
+ attr_reader :translations
14
+
12
15
  # @api private
13
16
  #
14
17
  # @param client [OpenAI::Client]
@@ -16,6 +19,7 @@ module OpenAI
16
19
  @client = client
17
20
  @client_secrets = OpenAI::Resources::Realtime::ClientSecrets.new(client: client)
18
21
  @calls = OpenAI::Resources::Realtime::Calls.new(client: client)
22
+ @translations = OpenAI::Resources::Realtime::Translations.new(client: client)
19
23
  end
20
24
  end
21
25
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenAI
4
- VERSION = "0.96.0"
4
+ VERSION = "0.98.0"
5
5
  end
data/lib/openai.rb CHANGED
@@ -163,6 +163,7 @@ require_relative "openai/models/graders/python_grader"
163
163
  require_relative "openai/models/graders/text_similarity_grader"
164
164
  require_relative "openai/models/fine_tuning/fine_tuning_job_wandb_integration_object"
165
165
  require_relative "openai/models/realtime/realtime_session_create_request"
166
+ require_relative "openai/models/realtime/realtime_translation_client_secret_create_request"
166
167
  require_relative "openai/models/responses/response_custom_tool_call"
167
168
  require_relative "openai/models/responses/response_custom_tool_call_output"
168
169
  require_relative "openai/models/responses/response_function_tool_call"
@@ -465,6 +466,9 @@ require_relative "openai/models/batch_request_counts"
465
466
  require_relative "openai/models/batch_retrieve_params"
466
467
  require_relative "openai/models/batch_usage"
467
468
  require_relative "openai/models/beta/agent"
469
+ require_relative "openai/models/beta/agent_browser_authentication_cancel_param"
470
+ require_relative "openai/models/beta/agent_browser_authentication_submit_param"
471
+ require_relative "openai/models/beta/agent_browser_origin_access_param"
468
472
  require_relative "openai/models/beta/agent_close_subagent_call_item"
469
473
  require_relative "openai/models/beta/agent_command_execution_item"
470
474
  require_relative "openai/models/beta/agent_content"
@@ -512,12 +516,14 @@ require_relative "openai/models/beta/agents/sessions/event_stream_params"
512
516
  require_relative "openai/models/beta/agents/sessions/item_list_params"
513
517
  require_relative "openai/models/beta/agents/sessions/session_artifact"
514
518
  require_relative "openai/models/beta/agents/sessions/session_artifact_deleted"
519
+ require_relative "openai/models/beta/agents/sessions/session_trace"
515
520
  require_relative "openai/models/beta/agents/sessions/subagent_list_params"
516
521
  require_relative "openai/models/beta/agents/sessions/subagent_retrieve_params"
517
522
  require_relative "openai/models/beta/agents/sessions/subagents/item_list_params"
518
523
  require_relative "openai/models/beta/agents/sessions/subagents/turn_list_params"
519
524
  require_relative "openai/models/beta/agents/sessions/subagents/turn_retrieve_params"
520
525
  require_relative "openai/models/beta/agents/sessions/subagents/turns/item_list_params"
526
+ require_relative "openai/models/beta/agents/sessions/trace_list_params"
521
527
  require_relative "openai/models/beta/agents/sessions/turn"
522
528
  require_relative "openai/models/beta/agents/sessions/turn_list_params"
523
529
  require_relative "openai/models/beta/agents/sessions/turn_retrieve_params"
@@ -1201,7 +1207,6 @@ require_relative "openai/models/realtime/realtime_transcription_session_create_r
1201
1207
  require_relative "openai/models/realtime/realtime_transcription_session_create_response"
1202
1208
  require_relative "openai/models/realtime/realtime_transcription_session_turn_detection"
1203
1209
  require_relative "openai/models/realtime/realtime_translation_client_event"
1204
- require_relative "openai/models/realtime/realtime_translation_client_secret_create_request"
1205
1210
  require_relative "openai/models/realtime/realtime_translation_client_secret_create_response"
1206
1211
  require_relative "openai/models/realtime/realtime_translation_input_audio_buffer_append_event"
1207
1212
  require_relative "openai/models/realtime/realtime_translation_input_transcript_delta_event"
@@ -1244,6 +1249,7 @@ require_relative "openai/models/realtime/session_updated_event"
1244
1249
  require_relative "openai/models/realtime/session_update_event"
1245
1250
  require_relative "openai/models/realtime/transcription_session_update"
1246
1251
  require_relative "openai/models/realtime/transcription_session_updated_event"
1252
+ require_relative "openai/models/realtime/translations/client_secret_create_params"
1247
1253
  require_relative "openai/models/reasoning"
1248
1254
  require_relative "openai/models/response_format_json_object"
1249
1255
  require_relative "openai/models/response_format_json_schema"
@@ -1518,6 +1524,7 @@ require_relative "openai/resources/beta/agents/sessions/subagents"
1518
1524
  require_relative "openai/resources/beta/agents/sessions/subagents/items"
1519
1525
  require_relative "openai/resources/beta/agents/sessions/subagents/turns"
1520
1526
  require_relative "openai/resources/beta/agents/sessions/subagents/turns/items"
1527
+ require_relative "openai/resources/beta/agents/sessions/traces"
1521
1528
  require_relative "openai/resources/beta/agents/sessions/turns"
1522
1529
  require_relative "openai/resources/beta/agents/vaults"
1523
1530
  require_relative "openai/resources/beta/agents/vaults/credentials"
@@ -1567,6 +1574,8 @@ require_relative "openai/resources/moderations"
1567
1574
  require_relative "openai/resources/realtime"
1568
1575
  require_relative "openai/resources/realtime/calls"
1569
1576
  require_relative "openai/resources/realtime/client_secrets"
1577
+ require_relative "openai/resources/realtime/translations"
1578
+ require_relative "openai/resources/realtime/translations/client_secrets"
1570
1579
  require_relative "openai/resources/responses"
1571
1580
  require_relative "openai/resources/responses/input_items"
1572
1581
  require_relative "openai/resources/responses/input_tokens"
@@ -1596,5 +1605,7 @@ require_relative "openai/helpers/realtime"
1596
1605
  require_relative "openai/helpers/responses_websocket"
1597
1606
  require_relative "openai/helpers/live/websocket"
1598
1607
 
1608
+ require_relative "openai/helpers/beta/agents/creation_stream"
1599
1609
  require_relative "openai/helpers/agents/session_stream"
1610
+ require_relative "openai/helpers/beta/agents/function_tool"
1600
1611
  require_relative "openai/helpers/agents/message"
@@ -26,6 +26,16 @@ module OpenAI
26
26
  def each(&block)
27
27
  end
28
28
 
29
+ # @beta
30
+ sig { returns(OpenAI::Helpers::Beta::Agents::TurnResult) }
31
+ def get_final_result
32
+ end
33
+
34
+ # @beta
35
+ sig { returns(T.self_type) }
36
+ def with_result_collection
37
+ end
38
+
29
39
  sig { void }
30
40
  def close
31
41
  end
@@ -47,12 +57,21 @@ module OpenAI
47
57
  input: T.any(String, T::Array[OpenAI::Models::Beta::AgentSessionInputMessageParam::OrHash]),
48
58
  tool_handlers: T::Hash[String, OpenAI::Helpers::Agents::ToolHandler],
49
59
  idempotency_key: T.nilable(String),
60
+ output_type: T.nilable(T.class_of(OpenAI::Helpers::StructuredOutput::BaseModel)),
50
61
  request_options: T.nilable(OpenAI::RequestOptions::OrHash),
51
62
  block: T.nilable(T.proc.params(stream: OpenAI::Helpers::Agents::SessionStream).void)
52
63
  )
53
64
  .returns(OpenAI::Helpers::Agents::SessionStream)
54
65
  end
55
- def stream(session_id, input:, tool_handlers: {}, idempotency_key: nil, request_options: {}, &block)
66
+ def stream(
67
+ session_id,
68
+ input:,
69
+ tool_handlers: {},
70
+ idempotency_key: nil,
71
+ output_type: nil,
72
+ request_options: {},
73
+ &block
74
+ )
56
75
  end
57
76
  end
58
77
  end
@@ -0,0 +1,29 @@
1
+ # typed: strong
2
+ module OpenAI
3
+ module Helpers
4
+ module Beta
5
+ module Agents
6
+ class ResultArtifacts
7
+ sig {
8
+ params(
9
+ artifacts: OpenAI::Resources::Beta::Agents::Sessions::Artifacts,
10
+ client: OpenAI::Client,
11
+ result: TurnResult
12
+ )
13
+ .void
14
+ }
15
+ def initialize(artifacts:, client:, result:)
16
+ end
17
+
18
+ sig {
19
+ params(path: String, to: T.untyped, request_options: OpenAI::RequestOptions::OrHash).returns(
20
+ OpenAI::Models::Beta::Agents::Sessions::SessionArtifact
21
+ )
22
+ }
23
+ def download(path:, to:, request_options: {})
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,65 @@
1
+ # typed: strong
2
+ module OpenAI
3
+ module Helpers
4
+ module Beta
5
+ module Agents
6
+ class PreparedFiles
7
+ sig { returns(T::Array[OpenAI::Models::Beta::HostedEnvironmentFileParam::FileID]) }
8
+ attr_reader :files
9
+ sig { returns(T::Array[String]) }
10
+ attr_reader :upload_ids
11
+ sig { params(files: T::Array[T::Hash[Symbol, T.untyped]]).void }
12
+ def initialize(files)
13
+ end
14
+ end
15
+
16
+ class FilePreparationError < OpenAI::Errors::Error
17
+ sig { returns(PreparedFiles) }
18
+ attr_reader :prepared
19
+ sig { params(prepared: PreparedFiles).returns(T.attached_class) }
20
+ def self.new(prepared:)
21
+ end
22
+ end
23
+ # @api private
24
+ class FilePreparation
25
+ sig {
26
+ params(client: OpenAI::Client, environment_files: OpenAI::Resources::Beta::Agents::Environments::Files).void
27
+ }
28
+ def initialize(client:, environment_files:)
29
+ end
30
+
31
+ sig {
32
+ params(files: T::Hash[String, T.any(String, Pathname)], request_options: OpenAI::RequestOptions::OrHash)
33
+ .returns(PreparedFiles)
34
+ }
35
+ def prepare(files, request_options: {})
36
+ end
37
+
38
+ sig {
39
+ params(
40
+ directory: T.any(String, Pathname),
41
+ destination: String,
42
+ include: T::Array[String],
43
+ request_options: OpenAI::RequestOptions::OrHash
44
+ )
45
+ .returns(PreparedFiles)
46
+ }
47
+ def prepare_directory(directory, destination:, include:, request_options: {})
48
+ end
49
+
50
+ sig {
51
+ params(
52
+ environment_id: String,
53
+ file: T.any(String, Pathname),
54
+ path: String,
55
+ request_options: OpenAI::RequestOptions::OrHash
56
+ )
57
+ .returns(PreparedFiles)
58
+ }
59
+ def upload(environment_id, file:, path:, request_options: {})
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,40 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Helpers
5
+ module Beta
6
+ module Agents
7
+ class FunctionTool
8
+ sig { returns(String) }
9
+ attr_reader :name
10
+
11
+ sig do
12
+ params(
13
+ name: String,
14
+ arguments: T.class_of(OpenAI::BaseModel),
15
+ description: String,
16
+ handler: T.proc.params(arguments: T.untyped).returns(OpenAI::Helpers::Agents::ToolOutput)
17
+ )
18
+ .void
19
+ end
20
+ def initialize(name:, arguments:, description: "", &handler)
21
+ end
22
+
23
+ sig { returns(OpenAI::Internal::AnyHash) }
24
+ def definition
25
+ end
26
+
27
+ sig { returns(T::Hash[String, OpenAI::Helpers::Agents::ToolHandler]) }
28
+ def handlers
29
+ end
30
+
31
+ sig {
32
+ params(arguments: T.any(String, OpenAI::Internal::AnyHash)).returns(OpenAI::Helpers::Agents::ToolOutput)
33
+ }
34
+ def call(arguments)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,22 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Helpers
5
+ module Beta
6
+ module Agents
7
+ module ModelAdapter
8
+ sig { params(model: T.untyped, parameter: String).void }
9
+ def self.validate!(model, parameter:)
10
+ end
11
+
12
+ sig do
13
+ params(model: T.class_of(OpenAI::BaseModel), value: T.untyped, memoize: T::Boolean)
14
+ .returns(T.nilable(OpenAI::BaseModel))
15
+ end
16
+ def self.coerce(model, value, memoize: false)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,146 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Helpers
5
+ module Beta
6
+ module Agents
7
+ class TurnResult
8
+ sig { returns(OpenAI::Models::Beta::Agents::Sessions::Turn) }
9
+ def turn
10
+ end
11
+
12
+ sig { returns(T::Array[OpenAI::Models::Beta::AgentSessionMessage]) }
13
+ def messages
14
+ end
15
+
16
+ sig { returns(String) }
17
+ def session_id
18
+ end
19
+
20
+ sig { returns(String) }
21
+ def turn_id
22
+ end
23
+
24
+ sig { returns(String) }
25
+ def output_text
26
+ end
27
+
28
+ sig { returns(T.untyped) }
29
+ def output_parsed
30
+ end
31
+
32
+ sig {
33
+ params(output_type: T.class_of(OpenAI::Helpers::StructuredOutput::BaseModel)).returns(ParsedTurnResult)
34
+ }
35
+ def parse(output_type:)
36
+ end
37
+ end
38
+
39
+ class ResultError < OpenAI::Errors::Error
40
+ sig { returns(Symbol) }
41
+ def reason
42
+ end
43
+
44
+ sig { returns(T.nilable(String)) }
45
+ def session_id
46
+ end
47
+
48
+ sig { returns(T.nilable(OpenAI::Models::Beta::Agents::Sessions::Turn)) }
49
+ def turn
50
+ end
51
+
52
+ sig { returns(T::Array[OpenAI::Models::Beta::AgentSessionMessage]) }
53
+ def messages
54
+ end
55
+
56
+ sig {
57
+ returns(
58
+ T::Array[T.any(OpenAI::Models::Beta::AgentSession::RequiredAction::Variants, OpenAI::Internal::AnyHash)]
59
+ )
60
+ }
61
+ def required_actions
62
+ end
63
+
64
+ sig { returns(T.nilable(String)) }
65
+ def turn_id
66
+ end
67
+ end
68
+
69
+ # @api private
70
+ class ResultCollector
71
+ sig { params(session_id: T.nilable(String), handler_names: T::Array[String]).void }
72
+ def initialize(session_id: nil, handler_names: [])
73
+ end
74
+
75
+ sig { void }
76
+ def enable
77
+ end
78
+
79
+ sig {
80
+ params(event: T.any(OpenAI::Models::Beta::AgentSessionEvent::Variants, OpenAI::Internal::AnyHash)).void
81
+ }
82
+ def observe(event)
83
+ end
84
+
85
+ sig { returns(T.nilable(T::Boolean)) }
86
+ def stopped?
87
+ end
88
+
89
+ sig { params(error: StandardError).void }
90
+ def observe_error(error)
91
+ end
92
+
93
+ sig { returns(TurnResult) }
94
+ def result
95
+ end
96
+ end
97
+
98
+ class ParsedTurnResult < TurnResult
99
+ sig { returns(TurnResult) }
100
+ attr_reader :raw_result
101
+
102
+ sig { returns(T.untyped) }
103
+ attr_reader :output_parsed
104
+ end
105
+
106
+ class OutputParseError < OpenAI::Errors::Error
107
+ sig { returns(TurnResult) }
108
+ attr_reader :raw_result
109
+ end
110
+
111
+ # @api private
112
+ class OutputParser
113
+ sig { params(model: T.class_of(OpenAI::Helpers::StructuredOutput::BaseModel)).void }
114
+ def initialize(model)
115
+ end
116
+
117
+ sig { params(params: OpenAI::Internal::AnyHash).void }
118
+ def prepare_request(params)
119
+ end
120
+
121
+ sig { params(result: TurnResult).returns(ParsedTurnResult) }
122
+ def parse(result)
123
+ end
124
+ end
125
+
126
+ class CreationStream < OpenAI::Internal::Stream
127
+ Message = type_member(:in) { {fixed: OpenAI::Internal::Util::ServerSentEvent} }
128
+ Elem = type_member(:out) { {fixed: OpenAI::Models::Beta::AgentSessionEvent::Variants} }
129
+
130
+ sig { returns(TurnResult) }
131
+ def get_final_result
132
+ end
133
+
134
+ sig { returns(T.self_type) }
135
+ def with_result_collection
136
+ end
137
+
138
+ # @api private
139
+ sig { params(parser: T.nilable(OutputParser)).returns(T.self_type) }
140
+ def configure_output_parser(parser)
141
+ end
142
+ end
143
+ end
144
+ end
145
+ end
146
+ end
@@ -409,6 +409,18 @@ module OpenAI
409
409
  )
410
410
  end
411
411
 
412
+ # @api private
413
+ sig {
414
+ params(
415
+ req: T.untyped,
416
+ on_response: T.nilable(T.proc.returns(T.untyped)),
417
+ blk: T.proc.params(chunk: String).returns(T.untyped)
418
+ )
419
+ .void
420
+ }
421
+ def request_streaming_body(req, on_response = nil, &blk)
422
+ end
423
+
412
424
  # @api private
413
425
  sig do
414
426
  params(
@@ -51,7 +51,7 @@ module OpenAI
51
51
 
52
52
  # @api private
53
53
  sig do
54
- returns(
54
+ params(state: T.nilable(OpenAI::Internal::Type::Converter::CoerceState)).returns(
55
55
  T::Hash[
56
56
  Symbol,
57
57
  T.all(
@@ -61,7 +61,7 @@ module OpenAI
61
61
  ]
62
62
  )
63
63
  end
64
- def fields
64
+ def fields(state: nil)
65
65
  end
66
66
 
67
67
  # @api private
@@ -22,7 +22,8 @@ module OpenAI
22
22
  maybe: Integer
23
23
  },
24
24
  error: T.nilable(StandardError),
25
- branched: Integer
25
+ branched: Integer,
26
+ memo: T.nilable(T::Hash[T.untyped, T.untyped])
26
27
  }
27
28
  end
28
29
 
@@ -123,11 +124,28 @@ module OpenAI
123
124
 
124
125
  # @api private
125
126
  sig do
126
- params(translate_names: T::Boolean, request_only: T::Boolean).returns(
127
+ params(translate_names: T::Boolean, request_only: T::Boolean, memoize: T::Boolean).returns(
127
128
  OpenAI::Internal::Type::Converter::CoerceState
128
129
  )
129
130
  end
130
- def self.new_coerce_state(translate_names: true, request_only: false)
131
+ def self.new_coerce_state(translate_names: true, request_only: false, memoize: false)
132
+ end
133
+
134
+ # @api private
135
+ sig {
136
+ params(type_fn: T.proc.returns(T.untyped), state: T.nilable(OpenAI::Internal::Type::Converter::CoerceState))
137
+ .returns(T.untyped)
138
+ }
139
+ def self.resolve_type(type_fn, state: nil)
140
+ end
141
+
142
+ # @api private
143
+ sig {
144
+ params(target: T.untyped, value: T.untyped, state: OpenAI::Internal::Type::Converter::CoerceState).returns(
145
+ T.untyped
146
+ )
147
+ }
148
+ def self.coerce_cached(target, value, state:)
131
149
  end
132
150
 
133
151
  # @api private
@@ -65,8 +65,12 @@ module OpenAI
65
65
  end
66
66
 
67
67
  # @api private
68
- sig { params(value: T.anything).returns(T.nilable(T.anything)) }
69
- private def resolve_variant(value)
68
+ sig {
69
+ params(value: T.anything, state: T.nilable(OpenAI::Internal::Type::Converter::CoerceState)).returns(
70
+ T.nilable(T.anything)
71
+ )
72
+ }
73
+ private def resolve_variant(value, state: nil)
70
74
  end
71
75
 
72
76
  sig { params(other: T.anything).returns(T::Boolean) }
@@ -106,7 +106,8 @@ module OpenAI
106
106
  OpenAI::Beta::PersistedAgentTool::ToolSearch::OrHash,
107
107
  OpenAI::Beta::PersistedAgentTool::ProgrammaticToolCalling::OrHash,
108
108
  OpenAI::Beta::PersistedAgentTool::Mcp::OrHash,
109
- OpenAI::Beta::PersistedAgentTool::WebSearch::OrHash
109
+ OpenAI::Beta::PersistedAgentTool::WebSearch::OrHash,
110
+ OpenAI::Beta::PersistedAgentTool::ComputerUse::OrHash
110
111
  )
111
112
  ],
112
113
 
@@ -0,0 +1,53 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Beta
7
+
8
+ class AgentBrowserAuthenticationCancelParam < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Beta::AgentBrowserAuthenticationCancelParam,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ sig { returns(Symbol) }
18
+ attr_accessor :action
19
+
20
+ sig { returns(Symbol) }
21
+ attr_accessor :type
22
+
23
+ sig do
24
+ params(
25
+
26
+ action: Symbol,
27
+
28
+ type: Symbol
29
+ )
30
+ .returns(T.attached_class)
31
+ end
32
+ def self.new(
33
+
34
+ action: :cancel,
35
+
36
+ type: :browser_authentication
37
+ )
38
+ end
39
+
40
+ sig do
41
+ override.returns(
42
+ {action: Symbol, type: Symbol}
43
+ )
44
+ end
45
+ def to_hash
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+ end