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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -0
- data/README.md +76 -1
- data/lib/openai/helpers/agents/session_stream.rb +60 -3
- data/lib/openai/helpers/beta/agents/artifacts.rb +72 -0
- data/lib/openai/helpers/beta/agents/creation_stream.rb +69 -0
- data/lib/openai/helpers/beta/agents/files.rb +236 -0
- data/lib/openai/helpers/beta/agents/function_tool.rb +65 -0
- data/lib/openai/helpers/beta/agents/model_adapter.rb +27 -0
- data/lib/openai/helpers/beta/agents/result.rb +170 -0
- data/lib/openai/helpers/beta/agents/typed_output.rb +191 -0
- data/lib/openai/helpers/live/websocket.rb +7 -1
- data/lib/openai/helpers/realtime/conversation_item_variant_resolver.rb +1 -1
- data/lib/openai/helpers/responses_websocket/connection.rb +7 -1
- data/lib/openai/helpers/responses_websocket/session.rb +5 -1
- data/lib/openai/helpers/responses_websocket/transports/async_websocket.rb +12 -2
- data/lib/openai/internal/transport/base_client.rb +18 -0
- data/lib/openai/internal/type/array_of.rb +1 -1
- data/lib/openai/internal/type/base_model.rb +6 -3
- data/lib/openai/internal/type/converter.rb +50 -3
- data/lib/openai/internal/type/hash_of.rb +1 -1
- data/lib/openai/internal/type/union.rb +6 -6
- data/lib/openai/models/beta/agent.rb +2 -2
- data/lib/openai/models/beta/agent_browser_authentication_cancel_param.rb +23 -0
- data/lib/openai/models/beta/agent_browser_authentication_submit_param.rb +70 -0
- data/lib/openai/models/beta/agent_browser_origin_access_param.rb +45 -0
- data/lib/openai/models/beta/agent_create_params.rb +2 -2
- data/lib/openai/models/beta/agent_output_item.rb +276 -1
- data/lib/openai/models/beta/agent_session.rb +251 -5
- data/lib/openai/models/beta/agent_session_input_param.rb +64 -1
- data/lib/openai/models/beta/agent_session_item.rb +391 -1
- data/lib/openai/models/beta/agent_session_turn_item_added_event.rb +2 -2
- data/lib/openai/models/beta/agent_session_turn_item_done_event.rb +2 -2
- data/lib/openai/models/beta/agent_tool.rb +27 -1
- data/lib/openai/models/beta/agent_tool_param.rb +27 -1
- data/lib/openai/models/beta/agent_update_params.rb +2 -2
- data/lib/openai/models/beta/agents/environments/environment_template.rb +26 -2
- data/lib/openai/models/beta/agents/environments/template_create_params.rb +48 -3
- data/lib/openai/models/beta/agents/environments/template_update_params.rb +45 -3
- data/lib/openai/models/beta/agents/session_create_params.rb +2 -2
- data/lib/openai/models/beta/agents/sessions/event_create_params.rb +2 -2
- data/lib/openai/models/beta/agents/sessions/session_trace.rb +64 -0
- data/lib/openai/models/beta/agents/sessions/trace_list_params.rb +68 -0
- data/lib/openai/models/beta/agents/vaults/credential.rb +8 -4
- data/lib/openai/models/beta/beta_response_output_text.rb +2 -2
- data/lib/openai/models/beta/beta_response_output_text_annotation_added_event.rb +2 -2
- data/lib/openai/models/beta/environment.rb +58 -2
- data/lib/openai/models/beta/environment_param.rb +66 -3
- data/lib/openai/models/beta/persisted_agent_tool.rb +27 -1
- data/lib/openai/models/beta/persisted_agent_tool_param.rb +27 -1
- data/lib/openai/models/beta/session_turn_error.rb +3 -0
- data/lib/openai/models/chat/chat_completion_content_part_image.rb +1 -0
- data/lib/openai/models/live/fork_server_event.rb +14 -3
- data/lib/openai/models/live/server_event.rb +14 -3
- data/lib/openai/models/realtime/translations/client_secret_create_params.rb +28 -0
- data/lib/openai/models/responses/response_output_text.rb +2 -2
- data/lib/openai/models/responses/response_output_text_annotation_added_event.rb +2 -2
- data/lib/openai/resources/beta/agents/environments/files.rb +31 -0
- data/lib/openai/resources/beta/agents/environments/templates.rb +9 -2
- data/lib/openai/resources/beta/agents/sessions/artifacts.rb +8 -0
- data/lib/openai/resources/beta/agents/sessions/events.rb +7 -6
- data/lib/openai/resources/beta/agents/sessions/items.rb +1 -1
- data/lib/openai/resources/beta/agents/sessions/subagents/items.rb +1 -1
- data/lib/openai/resources/beta/agents/sessions/subagents/turns/items.rb +1 -1
- data/lib/openai/resources/beta/agents/sessions/traces.rb +58 -0
- data/lib/openai/resources/beta/agents/sessions.rb +18 -5
- data/lib/openai/resources/beta/agents.rb +2 -2
- data/lib/openai/resources/evals/runs.rb +1 -1
- data/lib/openai/resources/realtime/translations/client_secrets.rb +58 -0
- data/lib/openai/resources/realtime/translations.rb +20 -0
- data/lib/openai/resources/realtime.rb +4 -0
- data/lib/openai/version.rb +1 -1
- data/lib/openai.rb +12 -1
- data/rbi/openai/helpers/agents.rbi +20 -1
- data/rbi/openai/helpers/beta/agents/artifacts.rbi +29 -0
- data/rbi/openai/helpers/beta/agents/files.rbi +65 -0
- data/rbi/openai/helpers/beta/agents/function_tool.rbi +40 -0
- data/rbi/openai/helpers/beta/agents/model_adapter.rbi +22 -0
- data/rbi/openai/helpers/beta/agents.rbi +146 -0
- data/rbi/openai/internal/transport/base_client.rbi +12 -0
- data/rbi/openai/internal/type/base_model.rbi +2 -2
- data/rbi/openai/internal/type/converter.rbi +21 -3
- data/rbi/openai/internal/type/union.rbi +6 -2
- data/rbi/openai/models/beta/agent.rbi +2 -1
- data/rbi/openai/models/beta/agent_browser_authentication_cancel_param.rbi +53 -0
- data/rbi/openai/models/beta/agent_browser_authentication_submit_param.rbi +125 -0
- data/rbi/openai/models/beta/agent_browser_origin_access_param.rbi +76 -0
- data/rbi/openai/models/beta/agent_create_params.rbi +6 -3
- data/rbi/openai/models/beta/agent_output_item.rbi +422 -0
- data/rbi/openai/models/beta/agent_session.rbi +373 -1
- data/rbi/openai/models/beta/agent_session_input_param.rbi +102 -0
- data/rbi/openai/models/beta/agent_session_item.rbi +614 -0
- data/rbi/openai/models/beta/agent_session_turn_item_added_event.rbi +3 -0
- data/rbi/openai/models/beta/agent_session_turn_item_done_event.rbi +2 -0
- data/rbi/openai/models/beta/agent_tool.rbi +49 -1
- data/rbi/openai/models/beta/agent_tool_param.rbi +52 -1
- data/rbi/openai/models/beta/agent_update_params.rbi +6 -3
- data/rbi/openai/models/beta/agents/environments/environment_template.rbi +53 -2
- data/rbi/openai/models/beta/agents/environments/template_create_params.rbi +74 -4
- data/rbi/openai/models/beta/agents/environments/template_update_params.rbi +71 -4
- data/rbi/openai/models/beta/agents/session_create_params.rbi +6 -3
- data/rbi/openai/models/beta/agents/sessions/event_create_params.rbi +3 -0
- data/rbi/openai/models/beta/agents/sessions/session_trace.rbi +97 -0
- data/rbi/openai/models/beta/agents/sessions/trace_list_params.rbi +121 -0
- data/rbi/openai/models/beta/agents/vaults/credential.rbi +5 -5
- data/rbi/openai/models/beta/beta_response_output_text.rbi +2 -2
- data/rbi/openai/models/beta/beta_response_output_text_annotation_added_event.rbi +2 -2
- data/rbi/openai/models/beta/environment.rbi +82 -2
- data/rbi/openai/models/beta/environment_param.rbi +103 -4
- data/rbi/openai/models/beta/persisted_agent_tool.rbi +49 -1
- data/rbi/openai/models/beta/persisted_agent_tool_param.rbi +52 -1
- data/rbi/openai/models/beta/session_turn_error.rbi +3 -0
- data/rbi/openai/models/chat/chat_completion_content_part_image.rbi +1 -0
- data/rbi/openai/models/live/fork_server_event.rbi +14 -2
- data/rbi/openai/models/live/server_event.rbi +14 -2
- data/rbi/openai/models/realtime/translations/client_secret_create_params.rbi +68 -0
- data/rbi/openai/models/responses/response_output_text.rbi +2 -2
- data/rbi/openai/models/responses/response_output_text_annotation_added_event.rbi +2 -2
- data/rbi/openai/resources/beta/agents/environments/files.rbi +31 -0
- data/rbi/openai/resources/beta/agents/environments/templates.rbi +7 -0
- data/rbi/openai/resources/beta/agents/sessions/artifacts.rbi +8 -0
- data/rbi/openai/resources/beta/agents/sessions/events.rbi +7 -5
- data/rbi/openai/resources/beta/agents/sessions/traces.rbi +54 -0
- data/rbi/openai/resources/beta/agents/sessions.rbi +6 -1
- data/rbi/openai/resources/beta/agents.rbi +4 -2
- data/rbi/openai/resources/realtime/translations/client_secrets.rbi +54 -0
- data/rbi/openai/resources/realtime/translations.rbi +22 -0
- data/rbi/openai/resources/realtime.rbi +3 -0
- data/sig/openai/helpers/agents.rbs +7 -0
- data/sig/openai/helpers/beta/agents/artifacts.rbs +20 -0
- data/sig/openai/helpers/beta/agents/files.rbs +41 -0
- data/sig/openai/helpers/beta/agents/function_tool.rbs +24 -0
- data/sig/openai/helpers/beta/agents/model_adapter.rbs +16 -0
- data/sig/openai/helpers/beta/agents.rbs +71 -0
- data/sig/openai/helpers/structured_output.rbs +12 -0
- data/sig/openai/internal/transport/base_client.rbs +8 -0
- data/sig/openai/internal/type/base_model.rbs +3 -1
- data/sig/openai/internal/type/converter.rbs +16 -2
- data/sig/openai/internal/type/union.rbs +2 -1
- data/sig/openai/models/beta/agent_browser_authentication_cancel_param.rbs +21 -0
- data/sig/openai/models/beta/agent_browser_authentication_submit_param.rbs +63 -0
- data/sig/openai/models/beta/agent_browser_origin_access_param.rbs +47 -0
- data/sig/openai/models/beta/agent_output_item.rbs +254 -0
- data/sig/openai/models/beta/agent_session.rbs +215 -1
- data/sig/openai/models/beta/agent_session_input_param.rbs +51 -1
- data/sig/openai/models/beta/agent_session_item.rbs +362 -0
- data/sig/openai/models/beta/agent_tool.rbs +22 -0
- data/sig/openai/models/beta/agent_tool_param.rbs +25 -0
- data/sig/openai/models/beta/agents/environments/environment_template.rbs +29 -3
- data/sig/openai/models/beta/agents/environments/template_create_params.rbs +39 -4
- data/sig/openai/models/beta/agents/environments/template_update_params.rbs +37 -4
- data/sig/openai/models/beta/agents/sessions/session_trace.rbs +65 -0
- data/sig/openai/models/beta/agents/sessions/trace_list_params.rbs +81 -0
- data/sig/openai/models/beta/agents/vaults/credential.rbs +5 -5
- data/sig/openai/models/beta/beta_response_output_text.rbs +2 -2
- data/sig/openai/models/beta/beta_response_output_text_annotation_added_event.rbs +2 -2
- data/sig/openai/models/beta/environment.rbs +51 -3
- data/sig/openai/models/beta/environment_param.rbs +64 -4
- data/sig/openai/models/beta/persisted_agent_tool.rbs +22 -0
- data/sig/openai/models/beta/persisted_agent_tool_param.rbs +25 -0
- data/sig/openai/models/beta/session_turn_error.rbs +4 -0
- data/sig/openai/models/chat/chat_completion_content_part_image.rbs +2 -1
- data/sig/openai/models/live/fork_server_event.rbs +17 -2
- data/sig/openai/models/live/server_event.rbs +17 -2
- data/sig/openai/models/realtime/translations/client_secret_create_params.rbs +39 -0
- data/sig/openai/models/responses/response_output_text.rbs +2 -2
- data/sig/openai/models/responses/response_output_text_annotation_added_event.rbs +2 -2
- data/sig/openai/resources/beta/agents/environments/files.rbs +17 -0
- data/sig/openai/resources/beta/agents/environments/templates.rbs +2 -0
- data/sig/openai/resources/beta/agents/sessions/artifacts.rbs +4 -0
- data/sig/openai/resources/beta/agents/sessions/traces.rbs +21 -0
- data/sig/openai/resources/beta/agents/sessions.rbs +4 -1
- data/sig/openai/resources/realtime/translations/client_secrets.rbs +17 -0
- data/sig/openai/resources/realtime/translations.rbs +11 -0
- data/sig/openai/resources/realtime.rbs +2 -0
- metadata +46 -1
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Models
|
|
5
|
+
|
|
6
|
+
module Beta
|
|
7
|
+
|
|
8
|
+
module Agents
|
|
9
|
+
|
|
10
|
+
module Sessions
|
|
11
|
+
|
|
12
|
+
class TraceListParams < OpenAI::Internal::Type::BaseModel
|
|
13
|
+
|
|
14
|
+
extend OpenAI::Internal::Type::RequestParameters::Converter
|
|
15
|
+
include OpenAI::Internal::Type::RequestParameters
|
|
16
|
+
|
|
17
|
+
OrHash = T.type_alias do
|
|
18
|
+
T.any(
|
|
19
|
+
OpenAI::Beta::Agents::Sessions::TraceListParams,
|
|
20
|
+
OpenAI::Internal::AnyHash
|
|
21
|
+
)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
sig { returns(String) }
|
|
25
|
+
attr_accessor :session_id
|
|
26
|
+
|
|
27
|
+
# Return resources after this resource ID in the selected order.
|
|
28
|
+
sig { returns(T.nilable(String)) }
|
|
29
|
+
attr_reader :after
|
|
30
|
+
|
|
31
|
+
sig { params(after: String).void }
|
|
32
|
+
attr_writer :after
|
|
33
|
+
|
|
34
|
+
# The maximum number of resources to return, between 1 and 100. Defaults to 20.
|
|
35
|
+
sig { returns(T.nilable(Integer)) }
|
|
36
|
+
attr_reader :limit
|
|
37
|
+
|
|
38
|
+
sig { params(limit: Integer).void }
|
|
39
|
+
attr_writer :limit
|
|
40
|
+
|
|
41
|
+
# The order in which resources are returned. Defaults to `desc`.
|
|
42
|
+
sig { returns(T.nilable(OpenAI::Beta::Agents::Sessions::TraceListParams::Order::OrSymbol)) }
|
|
43
|
+
attr_reader :order
|
|
44
|
+
|
|
45
|
+
sig { params(order: OpenAI::Beta::Agents::Sessions::TraceListParams::Order::OrSymbol).void }
|
|
46
|
+
attr_writer :order
|
|
47
|
+
|
|
48
|
+
sig do
|
|
49
|
+
params(
|
|
50
|
+
|
|
51
|
+
session_id: String,
|
|
52
|
+
|
|
53
|
+
after: String,
|
|
54
|
+
|
|
55
|
+
limit: Integer,
|
|
56
|
+
|
|
57
|
+
order: OpenAI::Beta::Agents::Sessions::TraceListParams::Order::OrSymbol,
|
|
58
|
+
|
|
59
|
+
request_options: OpenAI::RequestOptions::OrHash
|
|
60
|
+
)
|
|
61
|
+
.returns(T.attached_class)
|
|
62
|
+
end
|
|
63
|
+
def self.new(
|
|
64
|
+
|
|
65
|
+
session_id:,
|
|
66
|
+
|
|
67
|
+
# Return resources after this resource ID in the selected order.
|
|
68
|
+
after: nil,
|
|
69
|
+
|
|
70
|
+
# The maximum number of resources to return, between 1 and 100. Defaults to 20.
|
|
71
|
+
limit: nil,
|
|
72
|
+
|
|
73
|
+
# The order in which resources are returned. Defaults to `desc`.
|
|
74
|
+
order: nil,
|
|
75
|
+
|
|
76
|
+
request_options: {}
|
|
77
|
+
)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
sig do
|
|
81
|
+
override.returns(
|
|
82
|
+
{
|
|
83
|
+
session_id: String,
|
|
84
|
+
after: String,
|
|
85
|
+
limit: Integer,
|
|
86
|
+
order: OpenAI::Beta::Agents::Sessions::TraceListParams::Order::OrSymbol,
|
|
87
|
+
request_options: OpenAI::RequestOptions
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
end
|
|
91
|
+
def to_hash
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# The order in which resources are returned. Defaults to `desc`.
|
|
95
|
+
module Order
|
|
96
|
+
extend OpenAI::Internal::Type::Enum
|
|
97
|
+
|
|
98
|
+
TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Beta::Agents::Sessions::TraceListParams::Order) }
|
|
99
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
100
|
+
|
|
101
|
+
# Returns resources in ascending order.
|
|
102
|
+
ASC = T.let(:asc, OpenAI::Beta::Agents::Sessions::TraceListParams::Order::TaggedSymbol)
|
|
103
|
+
|
|
104
|
+
# Returns resources in descending order.
|
|
105
|
+
DESC = T.let(:desc, OpenAI::Beta::Agents::Sessions::TraceListParams::Order::TaggedSymbol)
|
|
106
|
+
|
|
107
|
+
sig { override.returns(T::Array[OpenAI::Beta::Agents::Sessions::TraceListParams::Order::TaggedSymbol]) }
|
|
108
|
+
def self.values
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
end
|
|
121
|
+
end
|
|
@@ -64,14 +64,14 @@ module OpenAI
|
|
|
64
64
|
|
|
65
65
|
created_at: Integer,
|
|
66
66
|
|
|
67
|
-
metadata: T::Hash[Symbol, String],
|
|
68
|
-
|
|
69
67
|
name: String,
|
|
70
68
|
|
|
71
69
|
updated_at: Integer,
|
|
72
70
|
|
|
73
71
|
vault_id: String,
|
|
74
72
|
|
|
73
|
+
metadata: T::Hash[Symbol, String],
|
|
74
|
+
|
|
75
75
|
object: Symbol
|
|
76
76
|
)
|
|
77
77
|
.returns(T.attached_class)
|
|
@@ -87,9 +87,6 @@ module OpenAI
|
|
|
87
87
|
# The Unix timestamp, in seconds, when the credential was created.
|
|
88
88
|
created_at:,
|
|
89
89
|
|
|
90
|
-
# Application-defined key-value pairs associated with this credential.
|
|
91
|
-
metadata:,
|
|
92
|
-
|
|
93
90
|
# The human-readable name of the credential.
|
|
94
91
|
name:,
|
|
95
92
|
|
|
@@ -99,6 +96,9 @@ module OpenAI
|
|
|
99
96
|
# The ID of the vault containing this credential.
|
|
100
97
|
vault_id:,
|
|
101
98
|
|
|
99
|
+
# Application-defined key-value pairs associated with this credential.
|
|
100
|
+
metadata: {},
|
|
101
|
+
|
|
102
102
|
# The object type. Always `vault.credential`.
|
|
103
103
|
|
|
104
104
|
object: :"vault.credential"
|
|
@@ -131,7 +131,7 @@ module OpenAI
|
|
|
131
131
|
sig { returns(String) }
|
|
132
132
|
attr_accessor :filename
|
|
133
133
|
|
|
134
|
-
# The index
|
|
134
|
+
# The index in the output text at which to insert the file citation.
|
|
135
135
|
sig { returns(Integer) }
|
|
136
136
|
attr_accessor :index
|
|
137
137
|
|
|
@@ -161,7 +161,7 @@ module OpenAI
|
|
|
161
161
|
# The filename of the file cited.
|
|
162
162
|
filename:,
|
|
163
163
|
|
|
164
|
-
# The index
|
|
164
|
+
# The index in the output text at which to insert the file citation.
|
|
165
165
|
index:,
|
|
166
166
|
|
|
167
167
|
# The type of the file citation. Always `file_citation`.
|
|
@@ -155,7 +155,7 @@ module OpenAI
|
|
|
155
155
|
sig { returns(String) }
|
|
156
156
|
attr_accessor :filename
|
|
157
157
|
|
|
158
|
-
# The index
|
|
158
|
+
# The index in the output text at which to insert the file citation.
|
|
159
159
|
sig { returns(Integer) }
|
|
160
160
|
attr_accessor :index
|
|
161
161
|
|
|
@@ -185,7 +185,7 @@ module OpenAI
|
|
|
185
185
|
# The filename of the file cited.
|
|
186
186
|
filename:,
|
|
187
187
|
|
|
188
|
-
# The index
|
|
188
|
+
# The index in the output text at which to insert the file citation.
|
|
189
189
|
index:,
|
|
190
190
|
|
|
191
191
|
# The type of the file citation. Always `file_citation`.
|
|
@@ -102,6 +102,18 @@ module OpenAI
|
|
|
102
102
|
sig { returns(Symbol) }
|
|
103
103
|
attr_accessor :type
|
|
104
104
|
|
|
105
|
+
# The effective CPU and memory tier, or null when unknown or outside the public
|
|
106
|
+
# tiers.
|
|
107
|
+
sig { returns(T.nilable(OpenAI::Beta::Environment::OpenAIHosted::ContainerSize::TaggedSymbol)) }
|
|
108
|
+
attr_accessor :container_size
|
|
109
|
+
|
|
110
|
+
# The effective desktop configuration.
|
|
111
|
+
sig { returns(T.nilable(OpenAI::Beta::Environment::OpenAIHosted::Desktop)) }
|
|
112
|
+
attr_reader :desktop
|
|
113
|
+
|
|
114
|
+
sig { params(desktop: OpenAI::Beta::Environment::OpenAIHosted::Desktop::OrHash).void }
|
|
115
|
+
attr_writer :desktop
|
|
116
|
+
|
|
105
117
|
# An environment hosted by OpenAI.
|
|
106
118
|
sig do
|
|
107
119
|
params(
|
|
@@ -127,6 +139,10 @@ module OpenAI
|
|
|
127
139
|
T.any(OpenAI::Beta::HostedSkillReference::OrHash, OpenAI::Beta::HostedSkill::Inline::OrHash)
|
|
128
140
|
],
|
|
129
141
|
|
|
142
|
+
container_size: T.nilable(OpenAI::Beta::Environment::OpenAIHosted::ContainerSize::OrSymbol),
|
|
143
|
+
|
|
144
|
+
desktop: OpenAI::Beta::Environment::OpenAIHosted::Desktop::OrHash,
|
|
145
|
+
|
|
130
146
|
type: Symbol
|
|
131
147
|
)
|
|
132
148
|
.returns(T.attached_class)
|
|
@@ -154,6 +170,13 @@ module OpenAI
|
|
|
154
170
|
# Skills installed in the environment, excluding their archive contents.
|
|
155
171
|
skills:,
|
|
156
172
|
|
|
173
|
+
# The effective CPU and memory tier, or null when unknown or outside the public
|
|
174
|
+
# tiers.
|
|
175
|
+
container_size: nil,
|
|
176
|
+
|
|
177
|
+
# The effective desktop configuration.
|
|
178
|
+
desktop: nil,
|
|
179
|
+
|
|
157
180
|
# The type of the object. Always `openai_hosted`.
|
|
158
181
|
|
|
159
182
|
type: :openai_hosted
|
|
@@ -170,7 +193,9 @@ module OpenAI
|
|
|
170
193
|
packages: OpenAI::Beta::Environment::OpenAIHosted::Packages,
|
|
171
194
|
plugins: T::Array[OpenAI::Beta::HostedPlugin],
|
|
172
195
|
skills: T::Array[OpenAI::Beta::HostedSkill::Variants],
|
|
173
|
-
type: Symbol
|
|
196
|
+
type: Symbol,
|
|
197
|
+
container_size: T.nilable(OpenAI::Beta::Environment::OpenAIHosted::ContainerSize::TaggedSymbol),
|
|
198
|
+
desktop: OpenAI::Beta::Environment::OpenAIHosted::Desktop
|
|
174
199
|
}
|
|
175
200
|
)
|
|
176
201
|
end
|
|
@@ -238,7 +263,7 @@ module OpenAI
|
|
|
238
263
|
# Disables network access.
|
|
239
264
|
DISABLED = T.let(:disabled, OpenAI::Beta::Environment::OpenAIHosted::Network::Access::TaggedSymbol)
|
|
240
265
|
|
|
241
|
-
#
|
|
266
|
+
# Applies the configured domain restrictions.
|
|
242
267
|
RESTRICTED = T.let(:restricted, OpenAI::Beta::Environment::OpenAIHosted::Network::Access::TaggedSymbol)
|
|
243
268
|
|
|
244
269
|
sig {
|
|
@@ -304,6 +329,61 @@ module OpenAI
|
|
|
304
329
|
end
|
|
305
330
|
|
|
306
331
|
end
|
|
332
|
+
|
|
333
|
+
# The effective CPU and memory tier, or null when unknown or outside the public
|
|
334
|
+
# tiers.
|
|
335
|
+
module ContainerSize
|
|
336
|
+
extend OpenAI::Internal::Type::Enum
|
|
337
|
+
|
|
338
|
+
TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Beta::Environment::OpenAIHosted::ContainerSize) }
|
|
339
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
340
|
+
|
|
341
|
+
SMALL = T.let(:small, OpenAI::Beta::Environment::OpenAIHosted::ContainerSize::TaggedSymbol)
|
|
342
|
+
MEDIUM = T.let(:medium, OpenAI::Beta::Environment::OpenAIHosted::ContainerSize::TaggedSymbol)
|
|
343
|
+
LARGE = T.let(:large, OpenAI::Beta::Environment::OpenAIHosted::ContainerSize::TaggedSymbol)
|
|
344
|
+
|
|
345
|
+
sig { override.returns(T::Array[OpenAI::Beta::Environment::OpenAIHosted::ContainerSize::TaggedSymbol]) }
|
|
346
|
+
def self.values
|
|
347
|
+
end
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
class Desktop < OpenAI::Internal::Type::BaseModel
|
|
351
|
+
OrHash = T.type_alias do
|
|
352
|
+
T.any(
|
|
353
|
+
OpenAI::Beta::Environment::OpenAIHosted::Desktop,
|
|
354
|
+
OpenAI::Internal::AnyHash
|
|
355
|
+
)
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
# Whether the environment provisions a desktop and browser proxy.
|
|
359
|
+
sig { returns(T::Boolean) }
|
|
360
|
+
attr_accessor :enabled
|
|
361
|
+
|
|
362
|
+
# The effective desktop configuration.
|
|
363
|
+
sig do
|
|
364
|
+
params(
|
|
365
|
+
|
|
366
|
+
enabled: T::Boolean
|
|
367
|
+
)
|
|
368
|
+
.returns(T.attached_class)
|
|
369
|
+
end
|
|
370
|
+
def self.new(
|
|
371
|
+
|
|
372
|
+
# Whether the environment provisions a desktop and browser proxy.
|
|
373
|
+
|
|
374
|
+
enabled:
|
|
375
|
+
)
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
sig do
|
|
379
|
+
override.returns(
|
|
380
|
+
{enabled: T::Boolean}
|
|
381
|
+
)
|
|
382
|
+
end
|
|
383
|
+
def to_hash
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
end
|
|
307
387
|
end
|
|
308
388
|
|
|
309
389
|
class SelfHosted < OpenAI::Internal::Type::BaseModel
|
|
@@ -72,6 +72,21 @@ module OpenAI
|
|
|
72
72
|
sig { returns(T.nilable(T::Array[String])) }
|
|
73
73
|
attr_accessor :capability_directories
|
|
74
74
|
|
|
75
|
+
# The hosted container size. Omission selects the medium tier.
|
|
76
|
+
sig { returns(T.nilable(OpenAI::Beta::EnvironmentParam::OpenAIHosted::ContainerSize::OrSymbol)) }
|
|
77
|
+
attr_reader :container_size
|
|
78
|
+
|
|
79
|
+
sig { params(container_size: OpenAI::Beta::EnvironmentParam::OpenAIHosted::ContainerSize::OrSymbol).void }
|
|
80
|
+
attr_writer :container_size
|
|
81
|
+
|
|
82
|
+
# Desktop provisioning. Omission or null inherits the template setting, or
|
|
83
|
+
# defaults to disabled.
|
|
84
|
+
sig { returns(T.nilable(OpenAI::Beta::EnvironmentParam::OpenAIHosted::Desktop)) }
|
|
85
|
+
attr_reader :desktop
|
|
86
|
+
|
|
87
|
+
sig { params(desktop: T.nilable(OpenAI::Beta::EnvironmentParam::OpenAIHosted::Desktop::OrHash)).void }
|
|
88
|
+
attr_writer :desktop
|
|
89
|
+
|
|
75
90
|
# Environment variables made available to the agent.
|
|
76
91
|
sig { returns(T.nilable(T::Hash[Symbol, String])) }
|
|
77
92
|
attr_accessor :env
|
|
@@ -140,6 +155,10 @@ module OpenAI
|
|
|
140
155
|
|
|
141
156
|
capability_directories: T.nilable(T::Array[String]),
|
|
142
157
|
|
|
158
|
+
container_size: OpenAI::Beta::EnvironmentParam::OpenAIHosted::ContainerSize::OrSymbol,
|
|
159
|
+
|
|
160
|
+
desktop: T.nilable(OpenAI::Beta::EnvironmentParam::OpenAIHosted::Desktop::OrHash),
|
|
161
|
+
|
|
143
162
|
env: T.nilable(T::Hash[Symbol, String]),
|
|
144
163
|
|
|
145
164
|
environment_template_id: String,
|
|
@@ -180,6 +199,13 @@ module OpenAI
|
|
|
180
199
|
# list.
|
|
181
200
|
capability_directories: nil,
|
|
182
201
|
|
|
202
|
+
# The hosted container size. Omission selects the medium tier.
|
|
203
|
+
container_size: nil,
|
|
204
|
+
|
|
205
|
+
# Desktop provisioning. Omission or null inherits the template setting, or
|
|
206
|
+
# defaults to disabled.
|
|
207
|
+
desktop: nil,
|
|
208
|
+
|
|
183
209
|
# Environment variables made available to the agent.
|
|
184
210
|
env: nil,
|
|
185
211
|
|
|
@@ -218,6 +244,8 @@ module OpenAI
|
|
|
218
244
|
{
|
|
219
245
|
type: Symbol,
|
|
220
246
|
capability_directories: T.nilable(T::Array[String]),
|
|
247
|
+
container_size: OpenAI::Beta::EnvironmentParam::OpenAIHosted::ContainerSize::OrSymbol,
|
|
248
|
+
desktop: T.nilable(OpenAI::Beta::EnvironmentParam::OpenAIHosted::Desktop),
|
|
221
249
|
env: T.nilable(T::Hash[Symbol, String]),
|
|
222
250
|
environment_template_id: String,
|
|
223
251
|
files: T.nilable(
|
|
@@ -243,6 +271,63 @@ module OpenAI
|
|
|
243
271
|
def to_hash
|
|
244
272
|
end
|
|
245
273
|
|
|
274
|
+
# The hosted container size. Omission selects the medium tier.
|
|
275
|
+
module ContainerSize
|
|
276
|
+
extend OpenAI::Internal::Type::Enum
|
|
277
|
+
|
|
278
|
+
TaggedSymbol = T.type_alias { T.all(Symbol, OpenAI::Beta::EnvironmentParam::OpenAIHosted::ContainerSize) }
|
|
279
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
280
|
+
|
|
281
|
+
SMALL = T.let(:small, OpenAI::Beta::EnvironmentParam::OpenAIHosted::ContainerSize::TaggedSymbol)
|
|
282
|
+
MEDIUM = T.let(:medium, OpenAI::Beta::EnvironmentParam::OpenAIHosted::ContainerSize::TaggedSymbol)
|
|
283
|
+
LARGE = T.let(:large, OpenAI::Beta::EnvironmentParam::OpenAIHosted::ContainerSize::TaggedSymbol)
|
|
284
|
+
|
|
285
|
+
sig {
|
|
286
|
+
override.returns(T::Array[OpenAI::Beta::EnvironmentParam::OpenAIHosted::ContainerSize::TaggedSymbol])
|
|
287
|
+
}
|
|
288
|
+
def self.values
|
|
289
|
+
end
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
class Desktop < OpenAI::Internal::Type::BaseModel
|
|
293
|
+
OrHash = T.type_alias do
|
|
294
|
+
T.any(
|
|
295
|
+
OpenAI::Beta::EnvironmentParam::OpenAIHosted::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
|
+
|
|
246
331
|
class Network < OpenAI::Internal::Type::BaseModel
|
|
247
332
|
OrHash = T.type_alias do
|
|
248
333
|
T.any(
|
|
@@ -259,6 +344,12 @@ module OpenAI
|
|
|
259
344
|
sig { returns(T.nilable(T::Array[String])) }
|
|
260
345
|
attr_accessor :allowed_domains
|
|
261
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
|
+
|
|
262
353
|
# Network access policy for the environment. Defaults to disabled for GA requests
|
|
263
354
|
# and enabled for beta requests.
|
|
264
355
|
sig do
|
|
@@ -266,7 +357,9 @@ module OpenAI
|
|
|
266
357
|
|
|
267
358
|
access: OpenAI::Beta::EnvironmentParam::OpenAIHosted::Network::Access::OrSymbol,
|
|
268
359
|
|
|
269
|
-
allowed_domains: T.nilable(T::Array[String])
|
|
360
|
+
allowed_domains: T.nilable(T::Array[String]),
|
|
361
|
+
|
|
362
|
+
blocked_domains: T.nilable(T::Array[String])
|
|
270
363
|
)
|
|
271
364
|
.returns(T.attached_class)
|
|
272
365
|
end
|
|
@@ -276,8 +369,13 @@ module OpenAI
|
|
|
276
369
|
access:,
|
|
277
370
|
|
|
278
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.
|
|
279
377
|
|
|
280
|
-
|
|
378
|
+
blocked_domains: nil
|
|
281
379
|
)
|
|
282
380
|
end
|
|
283
381
|
|
|
@@ -285,7 +383,8 @@ module OpenAI
|
|
|
285
383
|
override.returns(
|
|
286
384
|
{
|
|
287
385
|
access: OpenAI::Beta::EnvironmentParam::OpenAIHosted::Network::Access::OrSymbol,
|
|
288
|
-
allowed_domains: T.nilable(T::Array[String])
|
|
386
|
+
allowed_domains: T.nilable(T::Array[String]),
|
|
387
|
+
blocked_domains: T.nilable(T::Array[String])
|
|
289
388
|
}
|
|
290
389
|
)
|
|
291
390
|
end
|
|
@@ -307,7 +406,7 @@ module OpenAI
|
|
|
307
406
|
# Disables network access.
|
|
308
407
|
DISABLED = T.let(:disabled, OpenAI::Beta::EnvironmentParam::OpenAIHosted::Network::Access::TaggedSymbol)
|
|
309
408
|
|
|
310
|
-
#
|
|
409
|
+
# Applies the configured domain restrictions.
|
|
311
410
|
RESTRICTED = T.let(
|
|
312
411
|
:restricted,
|
|
313
412
|
OpenAI::Beta::EnvironmentParam::OpenAIHosted::Network::Access::TaggedSymbol
|
|
@@ -15,7 +15,8 @@ module OpenAI
|
|
|
15
15
|
OpenAI::Beta::PersistedAgentTool::ToolSearch,
|
|
16
16
|
OpenAI::Beta::PersistedAgentTool::ProgrammaticToolCalling,
|
|
17
17
|
OpenAI::Beta::PersistedAgentTool::Mcp,
|
|
18
|
-
OpenAI::Beta::PersistedAgentTool::WebSearch
|
|
18
|
+
OpenAI::Beta::PersistedAgentTool::WebSearch,
|
|
19
|
+
OpenAI::Beta::PersistedAgentTool::ComputerUse
|
|
19
20
|
)
|
|
20
21
|
end
|
|
21
22
|
|
|
@@ -495,6 +496,53 @@ module OpenAI
|
|
|
495
496
|
end
|
|
496
497
|
end
|
|
497
498
|
|
|
499
|
+
class ComputerUse < OpenAI::Internal::Type::BaseModel
|
|
500
|
+
OrHash = T.type_alias do
|
|
501
|
+
T.any(
|
|
502
|
+
OpenAI::Beta::PersistedAgentTool::ComputerUse,
|
|
503
|
+
OpenAI::Internal::AnyHash
|
|
504
|
+
)
|
|
505
|
+
end
|
|
506
|
+
|
|
507
|
+
# Whether computer tool outputs include screenshots.
|
|
508
|
+
sig { returns(T::Boolean) }
|
|
509
|
+
attr_accessor :include_screenshots
|
|
510
|
+
|
|
511
|
+
# The type of the object. Always `computer_use`.
|
|
512
|
+
sig { returns(Symbol) }
|
|
513
|
+
attr_accessor :type
|
|
514
|
+
|
|
515
|
+
# Browser use in an OpenAI-hosted session.
|
|
516
|
+
sig do
|
|
517
|
+
params(
|
|
518
|
+
|
|
519
|
+
include_screenshots: T::Boolean,
|
|
520
|
+
|
|
521
|
+
type: Symbol
|
|
522
|
+
)
|
|
523
|
+
.returns(T.attached_class)
|
|
524
|
+
end
|
|
525
|
+
def self.new(
|
|
526
|
+
|
|
527
|
+
# Whether computer tool outputs include screenshots.
|
|
528
|
+
include_screenshots:,
|
|
529
|
+
|
|
530
|
+
# The type of the object. Always `computer_use`.
|
|
531
|
+
|
|
532
|
+
type: :computer_use
|
|
533
|
+
)
|
|
534
|
+
end
|
|
535
|
+
|
|
536
|
+
sig do
|
|
537
|
+
override.returns(
|
|
538
|
+
{include_screenshots: T::Boolean, type: Symbol}
|
|
539
|
+
)
|
|
540
|
+
end
|
|
541
|
+
def to_hash
|
|
542
|
+
end
|
|
543
|
+
|
|
544
|
+
end
|
|
545
|
+
|
|
498
546
|
sig { override.returns(T::Array[OpenAI::Beta::PersistedAgentTool::Variants]) }
|
|
499
547
|
def self.variants
|
|
500
548
|
end
|
|
@@ -15,7 +15,8 @@ module OpenAI
|
|
|
15
15
|
OpenAI::Beta::PersistedAgentToolParam::ToolSearch,
|
|
16
16
|
OpenAI::Beta::PersistedAgentToolParam::ProgrammaticToolCalling,
|
|
17
17
|
OpenAI::Beta::PersistedAgentToolParam::Mcp,
|
|
18
|
-
OpenAI::Beta::PersistedAgentToolParam::WebSearch
|
|
18
|
+
OpenAI::Beta::PersistedAgentToolParam::WebSearch,
|
|
19
|
+
OpenAI::Beta::PersistedAgentToolParam::ComputerUse
|
|
19
20
|
)
|
|
20
21
|
end
|
|
21
22
|
|
|
@@ -534,6 +535,56 @@ module OpenAI
|
|
|
534
535
|
end
|
|
535
536
|
end
|
|
536
537
|
|
|
538
|
+
class ComputerUse < OpenAI::Internal::Type::BaseModel
|
|
539
|
+
OrHash = T.type_alias do
|
|
540
|
+
T.any(
|
|
541
|
+
OpenAI::Beta::PersistedAgentToolParam::ComputerUse,
|
|
542
|
+
OpenAI::Internal::AnyHash
|
|
543
|
+
)
|
|
544
|
+
end
|
|
545
|
+
|
|
546
|
+
# The type of the object. Always `computer_use`.
|
|
547
|
+
sig { returns(Symbol) }
|
|
548
|
+
attr_accessor :type
|
|
549
|
+
|
|
550
|
+
# Whether computer tool outputs include screenshots. Defaults to `false`.
|
|
551
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
552
|
+
attr_reader :include_screenshots
|
|
553
|
+
|
|
554
|
+
sig { params(include_screenshots: T::Boolean).void }
|
|
555
|
+
attr_writer :include_screenshots
|
|
556
|
+
|
|
557
|
+
# Browser use in an OpenAI-hosted session.
|
|
558
|
+
sig do
|
|
559
|
+
params(
|
|
560
|
+
|
|
561
|
+
include_screenshots: T::Boolean,
|
|
562
|
+
|
|
563
|
+
type: Symbol
|
|
564
|
+
)
|
|
565
|
+
.returns(T.attached_class)
|
|
566
|
+
end
|
|
567
|
+
def self.new(
|
|
568
|
+
|
|
569
|
+
# Whether computer tool outputs include screenshots. Defaults to `false`.
|
|
570
|
+
include_screenshots: nil,
|
|
571
|
+
|
|
572
|
+
# The type of the object. Always `computer_use`.
|
|
573
|
+
|
|
574
|
+
type: :computer_use
|
|
575
|
+
)
|
|
576
|
+
end
|
|
577
|
+
|
|
578
|
+
sig do
|
|
579
|
+
override.returns(
|
|
580
|
+
{type: Symbol, include_screenshots: T::Boolean}
|
|
581
|
+
)
|
|
582
|
+
end
|
|
583
|
+
def to_hash
|
|
584
|
+
end
|
|
585
|
+
|
|
586
|
+
end
|
|
587
|
+
|
|
537
588
|
sig { override.returns(T::Array[OpenAI::Beta::PersistedAgentToolParam::Variants]) }
|
|
538
589
|
def self.variants
|
|
539
590
|
end
|
|
@@ -76,6 +76,9 @@ module OpenAI
|
|
|
76
76
|
# The request exceeds the available rate limit.
|
|
77
77
|
RATE_LIMIT_EXCEEDED = T.let(:rate_limit_exceeded, OpenAI::Beta::SessionTurnError::Code::TaggedSymbol)
|
|
78
78
|
|
|
79
|
+
# Flex processing is temporarily unavailable.
|
|
80
|
+
FLEX_UNAVAILABLE = T.let(:flex_unavailable, OpenAI::Beta::SessionTurnError::Code::TaggedSymbol)
|
|
81
|
+
|
|
79
82
|
# The model service is temporarily overloaded.
|
|
80
83
|
SERVER_OVERLOADED = T.let(:server_overloaded, OpenAI::Beta::SessionTurnError::Code::TaggedSymbol)
|
|
81
84
|
|
|
@@ -140,6 +140,7 @@ module OpenAI
|
|
|
140
140
|
AUTO = T.let(:auto, OpenAI::Chat::ChatCompletionContentPartImage::ImageURL::Detail::TaggedSymbol)
|
|
141
141
|
LOW = T.let(:low, OpenAI::Chat::ChatCompletionContentPartImage::ImageURL::Detail::TaggedSymbol)
|
|
142
142
|
HIGH = T.let(:high, OpenAI::Chat::ChatCompletionContentPartImage::ImageURL::Detail::TaggedSymbol)
|
|
143
|
+
ORIGINAL = T.let(:original, OpenAI::Chat::ChatCompletionContentPartImage::ImageURL::Detail::TaggedSymbol)
|
|
143
144
|
|
|
144
145
|
sig {
|
|
145
146
|
override.returns(T::Array[OpenAI::Chat::ChatCompletionContentPartImage::ImageURL::Detail::TaggedSymbol])
|
|
@@ -159,7 +159,14 @@ module OpenAI
|
|
|
159
159
|
sig { returns(Symbol) }
|
|
160
160
|
attr_accessor :type
|
|
161
161
|
|
|
162
|
-
#
|
|
162
|
+
# The event_id of the client command, when supplied.
|
|
163
|
+
sig { returns(T.nilable(String)) }
|
|
164
|
+
attr_reader :client_event_id
|
|
165
|
+
|
|
166
|
+
sig { params(client_event_id: String).void }
|
|
167
|
+
attr_writer :client_event_id
|
|
168
|
+
|
|
169
|
+
# A SIP DTMF keypress successfully sent to the SIP trunk. Delivered only to
|
|
163
170
|
# sideband observers; this is not a client command.
|
|
164
171
|
sig do
|
|
165
172
|
params(
|
|
@@ -168,6 +175,8 @@ module OpenAI
|
|
|
168
175
|
|
|
169
176
|
event_id: String,
|
|
170
177
|
|
|
178
|
+
client_event_id: String,
|
|
179
|
+
|
|
171
180
|
type: Symbol
|
|
172
181
|
)
|
|
173
182
|
.returns(T.attached_class)
|
|
@@ -178,13 +187,16 @@ module OpenAI
|
|
|
178
187
|
|
|
179
188
|
event_id:,
|
|
180
189
|
|
|
190
|
+
# The event_id of the client command, when supplied.
|
|
191
|
+
client_event_id: nil,
|
|
192
|
+
|
|
181
193
|
type: :"transport.dtmf.send"
|
|
182
194
|
)
|
|
183
195
|
end
|
|
184
196
|
|
|
185
197
|
sig do
|
|
186
198
|
override.returns(
|
|
187
|
-
{event: String, event_id: String, type: Symbol}
|
|
199
|
+
{event: String, event_id: String, type: Symbol, client_event_id: T.nilable(String)}
|
|
188
200
|
)
|
|
189
201
|
end
|
|
190
202
|
def to_hash
|