openai 0.84.0 → 0.85.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 +30 -0
- data/README.md +1 -1
- data/SECURITY.md +10 -0
- data/docs/architecture/security-model.md +267 -0
- data/lib/openai/client.rb +4 -0
- data/lib/openai/helpers/streaming/chat_completion_stream.rb +17 -8
- data/lib/openai/helpers/streaming/response_stream.rb +13 -8
- data/lib/openai/helpers/structured_output/array_of.rb +2 -2
- data/lib/openai/helpers/structured_output/base_model.rb +19 -5
- data/lib/openai/helpers/structured_output/chat_completion_parser.rb +6 -3
- data/lib/openai/helpers/structured_output/json_schema_converter.rb +34 -11
- data/lib/openai/internal/vector_store_file_uploader.rb +1 -1
- data/lib/openai/models/admin/organization/usage_costs_params.rb +1 -1
- data/lib/openai/models/batch.rb +2 -2
- data/lib/openai/models/beta/beta_custom_tool.rb +13 -1
- data/lib/openai/models/beta/beta_function_tool.rb +8 -1
- data/lib/openai/models/beta/beta_namespace_tool.rb +10 -1
- data/lib/openai/models/beta/beta_response.rb +20 -9
- data/lib/openai/models/beta/beta_response_configuration_update_item.rb +103 -0
- data/lib/openai/models/beta/beta_response_configuration_update_item_param.rb +104 -0
- data/lib/openai/models/beta/beta_response_custom_tool_call.rb +9 -1
- data/lib/openai/models/beta/beta_response_custom_tool_call_item.rb +3 -1
- data/lib/openai/models/beta/beta_response_error.rb +96 -1
- data/lib/openai/models/beta/beta_response_function_tool_call.rb +9 -1
- data/lib/openai/models/beta/beta_response_function_tool_call_item.rb +3 -1
- data/lib/openai/models/beta/beta_response_incomplete_event.rb +4 -0
- data/lib/openai/models/beta/beta_response_inject_event.rb +2 -2
- data/lib/openai/models/beta/beta_response_inject_failed_event.rb +2 -2
- data/lib/openai/models/beta/beta_response_input_item.rb +6 -1
- data/lib/openai/models/beta/beta_response_item.rb +5 -1
- data/lib/openai/models/beta/beta_response_steer_accepted_event.rb +81 -0
- data/lib/openai/models/beta/beta_response_steer_error_code.rb +61 -0
- data/lib/openai/models/beta/beta_response_steer_event.rb +75 -0
- data/lib/openai/models/beta/beta_response_steer_failed_event.rb +151 -0
- data/lib/openai/models/beta/beta_response_steer_input.rb +360 -0
- data/lib/openai/models/beta/beta_response_steer_input_content.rb +28 -0
- data/lib/openai/models/beta/beta_response_steer_pending_event.rb +113 -0
- data/lib/openai/models/beta/beta_response_steer_pending_reason.rb +26 -0
- data/lib/openai/models/beta/beta_response_steer_required_input.rb +215 -0
- data/lib/openai/models/beta/beta_response_stream_event.rb +4 -0
- data/lib/openai/models/beta/beta_responses_client_event.rb +40 -7
- data/lib/openai/models/beta/beta_responses_server_event.rb +164 -2
- data/lib/openai/models/beta/response_compact_params.rb +9 -6
- data/lib/openai/models/beta/response_create_params.rb +9 -6
- data/lib/openai/models/beta/responses/beta_response_item_list.rb +2 -2
- data/lib/openai/models/beta/responses/input_token_count_params.rb +3 -3
- data/lib/openai/models/chat/completion_create_params.rb +4 -4
- data/lib/openai/models/chat_model.rb +1 -0
- data/lib/openai/models/conversations/conversation_create_params.rb +2 -2
- data/lib/openai/models/conversations/conversation_item.rb +5 -1
- data/lib/openai/models/conversations/conversation_item_list.rb +2 -2
- data/lib/openai/models/conversations/item_create_params.rb +2 -2
- data/lib/openai/models/error_object.rb +90 -1
- data/lib/openai/models/eval_create_response.rb +1 -1
- data/lib/openai/models/eval_list_response.rb +1 -1
- data/lib/openai/models/eval_retrieve_response.rb +1 -1
- data/lib/openai/models/eval_update_response.rb +1 -1
- data/lib/openai/models/evals/create_eval_completions_run_data_source.rb +2 -2
- data/lib/openai/models/responses/custom_tool.rb +13 -1
- data/lib/openai/models/responses/function_tool.rb +8 -1
- data/lib/openai/models/responses/input_token_count_params.rb +3 -3
- data/lib/openai/models/responses/namespace_tool.rb +10 -1
- data/lib/openai/models/responses/response.rb +16 -8
- data/lib/openai/models/responses/response_compact_params.rb +9 -6
- data/lib/openai/models/responses/response_configuration_update_item.rb +56 -0
- data/lib/openai/models/responses/response_configuration_update_item_param.rb +57 -0
- data/lib/openai/models/responses/response_create_params.rb +5 -5
- data/lib/openai/models/responses/response_custom_tool_call.rb +9 -1
- data/lib/openai/models/responses/response_custom_tool_call_item.rb +3 -1
- data/lib/openai/models/responses/response_error.rb +96 -1
- data/lib/openai/models/responses/response_function_tool_call.rb +9 -1
- data/lib/openai/models/responses/response_function_tool_call_item.rb +3 -1
- data/lib/openai/models/responses/response_incomplete_event.rb +4 -0
- data/lib/openai/models/responses/response_input_item.rb +6 -1
- data/lib/openai/models/responses/response_item.rb +5 -1
- data/lib/openai/models/responses/response_item_list.rb +2 -2
- data/lib/openai/models/responses/response_steer_accepted_event.rb +79 -0
- data/lib/openai/models/responses/response_steer_error_code.rb +59 -0
- data/lib/openai/models/responses/response_steer_event.rb +73 -0
- data/lib/openai/models/responses/response_steer_failed_event.rb +149 -0
- data/lib/openai/models/responses/response_steer_input.rb +304 -0
- data/lib/openai/models/responses/response_steer_input_content.rb +26 -0
- data/lib/openai/models/responses/response_steer_pending_event.rb +111 -0
- data/lib/openai/models/responses/response_steer_pending_reason.rb +24 -0
- data/lib/openai/models/responses/response_steer_required_input.rb +213 -0
- data/lib/openai/models/responses/response_stream_event.rb +4 -0
- data/lib/openai/models/responses/responses_client_event.rb +872 -769
- data/lib/openai/models/responses/responses_server_event.rb +162 -2
- data/lib/openai/models/safety/alert_retrieve_params.rb +24 -0
- data/lib/openai/models/safety/safety_alert.rb +96 -0
- data/lib/openai/models/video_create_error.rb +93 -1
- data/lib/openai/models/webhooks/safety_alert_created_webhook_event.rb +63 -0
- data/lib/openai/models/webhooks/safety_org_alert_created_webhook_event.rb +63 -0
- data/lib/openai/models/webhooks/unwrap_webhook_event.rb +7 -1
- data/lib/openai/models.rb +2 -0
- data/lib/openai/net_http_client.rb +1 -1
- data/lib/openai/providers/bedrock.rb +20 -12
- data/lib/openai/resources/beta/responses/input_items.rb +1 -1
- data/lib/openai/resources/beta/responses/input_tokens.rb +1 -1
- data/lib/openai/resources/beta/responses.rb +6 -6
- data/lib/openai/resources/chat/completions.rb +2 -2
- data/lib/openai/resources/conversations/items.rb +3 -3
- data/lib/openai/resources/conversations.rb +1 -1
- data/lib/openai/resources/responses/input_items.rb +1 -1
- data/lib/openai/resources/responses/input_tokens.rb +1 -1
- data/lib/openai/resources/responses.rb +6 -6
- data/lib/openai/resources/safety/alerts.rb +37 -0
- data/lib/openai/resources/safety.rb +18 -0
- data/lib/openai/resources/webhooks.rb +1 -1
- data/lib/openai/version.rb +1 -1
- data/lib/openai.rb +28 -0
- data/rbi/openai/client.rbi +3 -0
- data/rbi/openai/models/admin/organization/usage_costs_params.rbi +2 -2
- data/rbi/openai/models/batch.rbi +2 -2
- data/rbi/openai/models/beta/beta_custom_tool.rbi +15 -0
- data/rbi/openai/models/beta/beta_function_tool.rbi +11 -0
- data/rbi/openai/models/beta/beta_namespace_tool.rbi +15 -0
- data/rbi/openai/models/beta/beta_response.rbi +14 -6
- data/rbi/openai/models/beta/beta_response_configuration_update_item.rbi +200 -0
- data/rbi/openai/models/beta/beta_response_configuration_update_item_param.rbi +207 -0
- data/rbi/openai/models/beta/beta_response_custom_tool_call.rbi +13 -0
- data/rbi/openai/models/beta/beta_response_custom_tool_call_item.rbi +6 -0
- data/rbi/openai/models/beta/beta_response_error.rbi +161 -3
- data/rbi/openai/models/beta/beta_response_function_tool_call.rbi +13 -0
- data/rbi/openai/models/beta/beta_response_function_tool_call_item.rbi +6 -0
- data/rbi/openai/models/beta/beta_response_incomplete_event.rbi +4 -0
- data/rbi/openai/models/beta/beta_response_inject_event.rbi +3 -0
- data/rbi/openai/models/beta/beta_response_inject_failed_event.rbi +3 -0
- data/rbi/openai/models/beta/beta_response_input_item.rbi +1 -0
- data/rbi/openai/models/beta/beta_response_item.rbi +1 -0
- data/rbi/openai/models/beta/beta_response_steer_accepted_event.rbi +148 -0
- data/rbi/openai/models/beta/beta_response_steer_error_code.rbi +65 -0
- data/rbi/openai/models/beta/beta_response_steer_event.rbi +118 -0
- data/rbi/openai/models/beta/beta_response_steer_failed_event.rbi +267 -0
- data/rbi/openai/models/beta/beta_response_steer_input.rbi +602 -0
- data/rbi/openai/models/beta/beta_response_steer_input_content.rbi +31 -0
- data/rbi/openai/models/beta/beta_response_steer_pending_event.rbi +222 -0
- data/rbi/openai/models/beta/beta_response_steer_pending_reason.rbi +35 -0
- data/rbi/openai/models/beta/beta_response_steer_required_input.rbi +379 -0
- data/rbi/openai/models/beta/beta_responses_client_event.rbi +8 -3
- data/rbi/openai/models/beta/beta_responses_server_event.rbi +206 -3
- data/rbi/openai/models/beta/response_compact_params.rbi +4 -3
- data/rbi/openai/models/beta/response_create_params.rbi +4 -3
- data/rbi/openai/models/beta/responses/beta_response_item_list.rbi +1 -0
- data/rbi/openai/models/chat/completion_create_params.rbi +3 -3
- data/rbi/openai/models/chat_model.rbi +1 -0
- data/rbi/openai/models/conversations/conversation_create_params.rbi +3 -0
- data/rbi/openai/models/conversations/conversation_item.rbi +1 -0
- data/rbi/openai/models/conversations/conversation_item_list.rbi +1 -0
- data/rbi/openai/models/conversations/item_create_params.rbi +3 -0
- data/rbi/openai/models/error_object.rbi +156 -3
- data/rbi/openai/models/eval_create_response.rbi +1 -1
- data/rbi/openai/models/eval_list_response.rbi +1 -1
- data/rbi/openai/models/eval_retrieve_response.rbi +1 -1
- data/rbi/openai/models/eval_update_response.rbi +1 -1
- data/rbi/openai/models/evals/create_eval_completions_run_data_source.rbi +2 -2
- data/rbi/openai/models/responses/custom_tool.rbi +15 -0
- data/rbi/openai/models/responses/function_tool.rbi +11 -0
- data/rbi/openai/models/responses/namespace_tool.rbi +15 -0
- data/rbi/openai/models/responses/response.rbi +12 -5
- data/rbi/openai/models/responses/response_compact_params.rbi +4 -3
- data/rbi/openai/models/responses/response_configuration_update_item.rbi +112 -0
- data/rbi/openai/models/responses/response_configuration_update_item_param.rbi +117 -0
- data/rbi/openai/models/responses/response_create_params.rbi +2 -2
- data/rbi/openai/models/responses/response_custom_tool_call.rbi +13 -0
- data/rbi/openai/models/responses/response_custom_tool_call_item.rbi +6 -0
- data/rbi/openai/models/responses/response_error.rbi +161 -3
- data/rbi/openai/models/responses/response_function_tool_call.rbi +13 -0
- data/rbi/openai/models/responses/response_function_tool_call_item.rbi +6 -0
- data/rbi/openai/models/responses/response_incomplete_event.rbi +4 -0
- data/rbi/openai/models/responses/response_input_item.rbi +1 -0
- data/rbi/openai/models/responses/response_item.rbi +1 -0
- data/rbi/openai/models/responses/response_item_list.rbi +1 -0
- data/rbi/openai/models/responses/response_steer_accepted_event.rbi +146 -0
- data/rbi/openai/models/responses/response_steer_error_code.rbi +63 -0
- data/rbi/openai/models/responses/response_steer_event.rbi +119 -0
- data/rbi/openai/models/responses/response_steer_failed_event.rbi +268 -0
- data/rbi/openai/models/responses/response_steer_input.rbi +474 -0
- data/rbi/openai/models/responses/response_steer_input_content.rbi +29 -0
- data/rbi/openai/models/responses/response_steer_pending_event.rbi +220 -0
- data/rbi/openai/models/responses/response_steer_pending_reason.rbi +33 -0
- data/rbi/openai/models/responses/response_steer_required_input.rbi +377 -0
- data/rbi/openai/models/responses/responses_client_event.rbi +1204 -1036
- data/rbi/openai/models/responses/responses_server_event.rbi +202 -3
- data/rbi/openai/models/safety/alert_retrieve_params.rbi +55 -0
- data/rbi/openai/models/safety/safety_alert.rbi +147 -0
- data/rbi/openai/models/video_create_error.rbi +149 -3
- data/rbi/openai/models/webhooks/safety_alert_created_webhook_event.rbi +130 -0
- data/rbi/openai/models/webhooks/safety_org_alert_created_webhook_event.rbi +130 -0
- data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +3 -1
- data/rbi/openai/models.rbi +2 -0
- data/rbi/openai/resources/admin/organization/usage.rbi +1 -1
- data/rbi/openai/resources/beta/responses.rbi +3 -3
- data/rbi/openai/resources/chat/completions.rbi +2 -2
- data/rbi/openai/resources/conversations/items.rbi +1 -0
- data/rbi/openai/resources/conversations.rbi +1 -0
- data/rbi/openai/resources/responses.rbi +3 -3
- data/rbi/openai/resources/safety/alerts.rbi +30 -0
- data/rbi/openai/resources/safety.rbi +18 -0
- data/rbi/openai/resources/webhooks.rbi +3 -1
- data/sig/openai/client.rbs +2 -0
- data/sig/openai/models/beta/beta_custom_tool.rbs +7 -0
- data/sig/openai/models/beta/beta_function_tool.rbs +7 -0
- data/sig/openai/models/beta/beta_namespace_tool.rbs +7 -0
- data/sig/openai/models/beta/beta_response.rbs +6 -2
- data/sig/openai/models/beta/beta_response_configuration_update_item.rbs +91 -0
- data/sig/openai/models/beta/beta_response_configuration_update_item_param.rbs +87 -0
- data/sig/openai/models/beta/beta_response_custom_tool_call.rbs +7 -0
- data/sig/openai/models/beta/beta_response_custom_tool_call_item.rbs +3 -0
- data/sig/openai/models/beta/beta_response_error.rbs +82 -3
- data/sig/openai/models/beta/beta_response_function_tool_call.rbs +7 -0
- data/sig/openai/models/beta/beta_response_function_tool_call_item.rbs +3 -0
- data/sig/openai/models/beta/beta_response_input_item.rbs +1 -0
- data/sig/openai/models/beta/beta_response_item.rbs +1 -0
- data/sig/openai/models/beta/beta_response_steer_accepted_event.rbs +53 -0
- data/sig/openai/models/beta/beta_response_steer_error_code.rbs +31 -0
- data/sig/openai/models/beta/beta_response_steer_event.rbs +34 -0
- data/sig/openai/models/beta/beta_response_steer_failed_event.rbs +102 -0
- data/sig/openai/models/beta/beta_response_steer_input.rbs +214 -0
- data/sig/openai/models/beta/beta_response_steer_input_content.rbs +18 -0
- data/sig/openai/models/beta/beta_response_steer_pending_event.rbs +63 -0
- data/sig/openai/models/beta/beta_response_steer_pending_reason.rbs +16 -0
- data/sig/openai/models/beta/beta_response_steer_required_input.rbs +161 -0
- data/sig/openai/models/beta/beta_responses_client_event.rbs +4 -1
- data/sig/openai/models/beta/beta_responses_server_event.rbs +80 -3
- data/sig/openai/models/beta/response_compact_params.rbs +3 -1
- data/sig/openai/models/beta/response_create_params.rbs +3 -1
- data/sig/openai/models/chat_model.rbs +3 -1
- data/sig/openai/models/conversations/conversation_item.rbs +1 -0
- data/sig/openai/models/error_object.rbs +82 -3
- data/sig/openai/models/responses/custom_tool.rbs +7 -0
- data/sig/openai/models/responses/function_tool.rbs +7 -0
- data/sig/openai/models/responses/namespace_tool.rbs +7 -0
- data/sig/openai/models/responses/response.rbs +3 -1
- data/sig/openai/models/responses/response_compact_params.rbs +3 -1
- data/sig/openai/models/responses/response_configuration_update_item.rbs +46 -0
- data/sig/openai/models/responses/response_configuration_update_item_param.rbs +46 -0
- data/sig/openai/models/responses/response_custom_tool_call.rbs +7 -0
- data/sig/openai/models/responses/response_custom_tool_call_item.rbs +3 -0
- data/sig/openai/models/responses/response_error.rbs +79 -3
- data/sig/openai/models/responses/response_function_tool_call.rbs +7 -0
- data/sig/openai/models/responses/response_function_tool_call_item.rbs +3 -0
- data/sig/openai/models/responses/response_input_item.rbs +1 -0
- data/sig/openai/models/responses/response_item.rbs +1 -0
- data/sig/openai/models/responses/response_steer_accepted_event.rbs +51 -0
- data/sig/openai/models/responses/response_steer_error_code.rbs +29 -0
- data/sig/openai/models/responses/response_steer_event.rbs +32 -0
- data/sig/openai/models/responses/response_steer_failed_event.rbs +100 -0
- data/sig/openai/models/responses/response_steer_input.rbs +182 -0
- data/sig/openai/models/responses/response_steer_input_content.rbs +16 -0
- data/sig/openai/models/responses/response_steer_pending_event.rbs +61 -0
- data/sig/openai/models/responses/response_steer_pending_reason.rbs +13 -0
- data/sig/openai/models/responses/response_steer_required_input.rbs +159 -0
- data/sig/openai/models/responses/responses_client_event.rbs +355 -344
- data/sig/openai/models/responses/responses_server_event.rbs +80 -3
- data/sig/openai/models/safety/alert_retrieve_params.rbs +22 -0
- data/sig/openai/models/safety/safety_alert.rbs +81 -0
- data/sig/openai/models/video_create_error.rbs +87 -3
- data/sig/openai/models/webhooks/safety_alert_created_webhook_event.rbs +52 -0
- data/sig/openai/models/webhooks/safety_org_alert_created_webhook_event.rbs +52 -0
- data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +2 -0
- data/sig/openai/models.rbs +2 -0
- data/sig/openai/resources/safety/alerts.rbs +14 -0
- data/sig/openai/resources/safety.rbs +9 -0
- data/sig/openai/resources/webhooks.rbs +3 -1
- metadata +86 -1
|
@@ -22,13 +22,21 @@ module OpenAI
|
|
|
22
22
|
sig { returns(String) }
|
|
23
23
|
attr_accessor :message
|
|
24
24
|
|
|
25
|
+
sig { returns(T.nilable(OpenAI::Responses::ResponseError::Misalignment)) }
|
|
26
|
+
attr_reader :misalignment
|
|
27
|
+
|
|
28
|
+
sig { params(misalignment: OpenAI::Responses::ResponseError::Misalignment::OrHash).void }
|
|
29
|
+
attr_writer :misalignment
|
|
30
|
+
|
|
25
31
|
# An error object returned when the model fails to generate a Response.
|
|
26
32
|
sig do
|
|
27
33
|
params(
|
|
28
34
|
|
|
29
35
|
code: OpenAI::Responses::ResponseError::Code::OrSymbol,
|
|
30
36
|
|
|
31
|
-
message: String
|
|
37
|
+
message: String,
|
|
38
|
+
|
|
39
|
+
misalignment: OpenAI::Responses::ResponseError::Misalignment::OrHash
|
|
32
40
|
)
|
|
33
41
|
.returns(T.attached_class)
|
|
34
42
|
end
|
|
@@ -38,14 +46,19 @@ module OpenAI
|
|
|
38
46
|
code:,
|
|
39
47
|
|
|
40
48
|
# A human-readable description of the error.
|
|
49
|
+
message:,
|
|
41
50
|
|
|
42
|
-
|
|
51
|
+
misalignment: nil
|
|
43
52
|
)
|
|
44
53
|
end
|
|
45
54
|
|
|
46
55
|
sig do
|
|
47
56
|
override.returns(
|
|
48
|
-
{
|
|
57
|
+
{
|
|
58
|
+
code: OpenAI::Responses::ResponseError::Code::TaggedSymbol,
|
|
59
|
+
message: String,
|
|
60
|
+
misalignment: OpenAI::Responses::ResponseError::Misalignment
|
|
61
|
+
}
|
|
49
62
|
)
|
|
50
63
|
end
|
|
51
64
|
def to_hash
|
|
@@ -66,6 +79,10 @@ module OpenAI
|
|
|
66
79
|
OpenAI::Responses::ResponseError::Code::TaggedSymbol
|
|
67
80
|
)
|
|
68
81
|
BIO_POLICY = T.let(:bio_policy, OpenAI::Responses::ResponseError::Code::TaggedSymbol)
|
|
82
|
+
MISALIGNMENT_POLICY_VIOLATION = T.let(
|
|
83
|
+
:misalignment_policy_violation,
|
|
84
|
+
OpenAI::Responses::ResponseError::Code::TaggedSymbol
|
|
85
|
+
)
|
|
69
86
|
VECTOR_STORE_TIMEOUT = T.let(:vector_store_timeout, OpenAI::Responses::ResponseError::Code::TaggedSymbol)
|
|
70
87
|
INVALID_IMAGE = T.let(:invalid_image, OpenAI::Responses::ResponseError::Code::TaggedSymbol)
|
|
71
88
|
INVALID_IMAGE_FORMAT = T.let(:invalid_image_format, OpenAI::Responses::ResponseError::Code::TaggedSymbol)
|
|
@@ -96,6 +113,147 @@ module OpenAI
|
|
|
96
113
|
end
|
|
97
114
|
end
|
|
98
115
|
|
|
116
|
+
class Misalignment < OpenAI::Internal::Type::BaseModel
|
|
117
|
+
OrHash = T.type_alias do
|
|
118
|
+
T.any(
|
|
119
|
+
OpenAI::Responses::ResponseError::Misalignment,
|
|
120
|
+
OpenAI::Internal::AnyHash
|
|
121
|
+
)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# The public explanation for this block.
|
|
125
|
+
sig { returns(T.nilable(String)) }
|
|
126
|
+
attr_reader :detailed_explanation
|
|
127
|
+
|
|
128
|
+
sig { params(detailed_explanation: String).void }
|
|
129
|
+
attr_writer :detailed_explanation
|
|
130
|
+
|
|
131
|
+
# An optional classification; clients must accept additional values.
|
|
132
|
+
sig { returns(T.nilable(OpenAI::Responses::ResponseError::Misalignment::ErrorType::Variants)) }
|
|
133
|
+
attr_reader :error_type
|
|
134
|
+
|
|
135
|
+
sig {
|
|
136
|
+
params(error_type: T.any(String, OpenAI::Responses::ResponseError::Misalignment::ErrorType::OrSymbol)).void
|
|
137
|
+
}
|
|
138
|
+
attr_writer :error_type
|
|
139
|
+
|
|
140
|
+
# An optional public continuation instruction.
|
|
141
|
+
sig { returns(T.nilable(OpenAI::Responses::ResponseError::Misalignment::Steer)) }
|
|
142
|
+
attr_reader :steer
|
|
143
|
+
|
|
144
|
+
sig { params(steer: OpenAI::Responses::ResponseError::Misalignment::Steer::OrHash).void }
|
|
145
|
+
attr_writer :steer
|
|
146
|
+
|
|
147
|
+
sig do
|
|
148
|
+
params(
|
|
149
|
+
|
|
150
|
+
detailed_explanation: String,
|
|
151
|
+
|
|
152
|
+
error_type: T.any(String, OpenAI::Responses::ResponseError::Misalignment::ErrorType::OrSymbol),
|
|
153
|
+
|
|
154
|
+
steer: OpenAI::Responses::ResponseError::Misalignment::Steer::OrHash
|
|
155
|
+
)
|
|
156
|
+
.returns(T.attached_class)
|
|
157
|
+
end
|
|
158
|
+
def self.new(
|
|
159
|
+
|
|
160
|
+
# The public explanation for this block.
|
|
161
|
+
detailed_explanation: nil,
|
|
162
|
+
|
|
163
|
+
# An optional classification; clients must accept additional values.
|
|
164
|
+
error_type: nil,
|
|
165
|
+
|
|
166
|
+
# An optional public continuation instruction.
|
|
167
|
+
|
|
168
|
+
steer: nil
|
|
169
|
+
)
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
sig do
|
|
173
|
+
override.returns(
|
|
174
|
+
{
|
|
175
|
+
detailed_explanation: String,
|
|
176
|
+
error_type: OpenAI::Responses::ResponseError::Misalignment::ErrorType::Variants,
|
|
177
|
+
steer: OpenAI::Responses::ResponseError::Misalignment::Steer
|
|
178
|
+
}
|
|
179
|
+
)
|
|
180
|
+
end
|
|
181
|
+
def to_hash
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# An optional classification; clients must accept additional values.
|
|
185
|
+
module ErrorType
|
|
186
|
+
extend OpenAI::Internal::Type::Union
|
|
187
|
+
|
|
188
|
+
Variants = T.type_alias {
|
|
189
|
+
T.any(String, OpenAI::Responses::ResponseError::Misalignment::ErrorType::TaggedSymbol)
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
sig { override.returns(T::Array[OpenAI::Responses::ResponseError::Misalignment::ErrorType::Variants]) }
|
|
193
|
+
def self.variants
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
TaggedSymbol = T.type_alias do
|
|
197
|
+
T.all(Symbol, OpenAI::Responses::ResponseError::Misalignment::ErrorType)
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
201
|
+
|
|
202
|
+
POTENTIALLY_UNINTENDED_DATA_TRANSFER = T.let(
|
|
203
|
+
:potentially_unintended_data_transfer,
|
|
204
|
+
OpenAI::Responses::ResponseError::Misalignment::ErrorType::TaggedSymbol
|
|
205
|
+
)
|
|
206
|
+
POTENTIALLY_UNINTENDED_DATA_ACCESS = T.let(
|
|
207
|
+
:potentially_unintended_data_access,
|
|
208
|
+
OpenAI::Responses::ResponseError::Misalignment::ErrorType::TaggedSymbol
|
|
209
|
+
)
|
|
210
|
+
POTENTIALLY_UNINTENDED_DESTRUCTIVE_ACTIVITY = T.let(
|
|
211
|
+
:potentially_unintended_destructive_activity,
|
|
212
|
+
OpenAI::Responses::ResponseError::Misalignment::ErrorType::TaggedSymbol
|
|
213
|
+
)
|
|
214
|
+
OTHER = T.let(:other, OpenAI::Responses::ResponseError::Misalignment::ErrorType::TaggedSymbol)
|
|
215
|
+
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
class Steer < OpenAI::Internal::Type::BaseModel
|
|
219
|
+
OrHash = T.type_alias do
|
|
220
|
+
T.any(
|
|
221
|
+
OpenAI::Responses::ResponseError::Misalignment::Steer,
|
|
222
|
+
OpenAI::Internal::AnyHash
|
|
223
|
+
)
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
# The public continuation instruction.
|
|
227
|
+
sig { returns(String) }
|
|
228
|
+
attr_accessor :message
|
|
229
|
+
|
|
230
|
+
# An optional public continuation instruction.
|
|
231
|
+
sig do
|
|
232
|
+
params(
|
|
233
|
+
|
|
234
|
+
message: String
|
|
235
|
+
)
|
|
236
|
+
.returns(T.attached_class)
|
|
237
|
+
end
|
|
238
|
+
def self.new(
|
|
239
|
+
|
|
240
|
+
# The public continuation instruction.
|
|
241
|
+
|
|
242
|
+
message:
|
|
243
|
+
)
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
sig do
|
|
247
|
+
override.returns(
|
|
248
|
+
{message: String}
|
|
249
|
+
)
|
|
250
|
+
end
|
|
251
|
+
def to_hash
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
|
|
99
257
|
end
|
|
100
258
|
|
|
101
259
|
end
|
|
@@ -41,6 +41,13 @@ module OpenAI
|
|
|
41
41
|
sig { params(id: String).void }
|
|
42
42
|
attr_writer :id
|
|
43
43
|
|
|
44
|
+
# Whether the function tool call runs asynchronously.
|
|
45
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
46
|
+
attr_reader :async
|
|
47
|
+
|
|
48
|
+
sig { params(async: T::Boolean).void }
|
|
49
|
+
attr_writer :async
|
|
50
|
+
|
|
44
51
|
# The execution context that produced this tool call.
|
|
45
52
|
sig {
|
|
46
53
|
returns(
|
|
@@ -83,6 +90,8 @@ module OpenAI
|
|
|
83
90
|
|
|
84
91
|
id: String,
|
|
85
92
|
|
|
93
|
+
async: T::Boolean,
|
|
94
|
+
|
|
86
95
|
caller_: T.nilable(
|
|
87
96
|
T.any(
|
|
88
97
|
OpenAI::Responses::ResponseFunctionToolCall::Caller::Direct::OrHash,
|
|
@@ -112,6 +121,9 @@ module OpenAI
|
|
|
112
121
|
# The unique ID of the function tool call.
|
|
113
122
|
id: nil,
|
|
114
123
|
|
|
124
|
+
# Whether the function tool call runs asynchronously.
|
|
125
|
+
async: nil,
|
|
126
|
+
|
|
115
127
|
# The execution context that produced this tool call.
|
|
116
128
|
caller_: nil,
|
|
117
129
|
|
|
@@ -136,6 +148,7 @@ module OpenAI
|
|
|
136
148
|
name: String,
|
|
137
149
|
type: Symbol,
|
|
138
150
|
id: String,
|
|
151
|
+
async: T::Boolean,
|
|
139
152
|
caller_: T.nilable(
|
|
140
153
|
T.any(
|
|
141
154
|
OpenAI::Responses::ResponseFunctionToolCall::Caller::Direct,
|
|
@@ -46,6 +46,8 @@ module OpenAI
|
|
|
46
46
|
|
|
47
47
|
status: OpenAI::Responses::ResponseFunctionToolCallItem::Status::OrSymbol,
|
|
48
48
|
|
|
49
|
+
async: T::Boolean,
|
|
50
|
+
|
|
49
51
|
caller_: T.nilable(
|
|
50
52
|
T.any(
|
|
51
53
|
OpenAI::Responses::ResponseFunctionToolCall::Caller::Direct::OrHash,
|
|
@@ -79,6 +81,9 @@ module OpenAI
|
|
|
79
81
|
# Populated when items are returned via API.
|
|
80
82
|
status:,
|
|
81
83
|
|
|
84
|
+
# Whether the function tool call runs asynchronously.
|
|
85
|
+
async: nil,
|
|
86
|
+
|
|
82
87
|
# The execution context that produced this tool call.
|
|
83
88
|
caller_: nil,
|
|
84
89
|
|
|
@@ -103,6 +108,7 @@ module OpenAI
|
|
|
103
108
|
id: String,
|
|
104
109
|
status: OpenAI::Responses::ResponseFunctionToolCallItem::Status::TaggedSymbol,
|
|
105
110
|
type: Symbol,
|
|
111
|
+
async: T::Boolean,
|
|
106
112
|
caller_: T.nilable(
|
|
107
113
|
T.any(
|
|
108
114
|
OpenAI::Responses::ResponseFunctionToolCall::Caller::Direct,
|
|
@@ -30,6 +30,10 @@ module OpenAI
|
|
|
30
30
|
attr_accessor :type
|
|
31
31
|
|
|
32
32
|
# An event that is emitted when a response finishes as incomplete.
|
|
33
|
+
#
|
|
34
|
+
# Over WebSocket, steering can finish a response with
|
|
35
|
+
# `response.incomplete_details.reason` set to `steered`, followed automatically by
|
|
36
|
+
# a successor `response.created` that commits the queued steering input.
|
|
33
37
|
sig do
|
|
34
38
|
params(
|
|
35
39
|
|
|
@@ -27,6 +27,7 @@ module OpenAI
|
|
|
27
27
|
OpenAI::Responses::ResponseInputItem::ToolSearchCall,
|
|
28
28
|
OpenAI::Responses::ResponseToolSearchOutputItemParam,
|
|
29
29
|
OpenAI::Responses::ResponseInputItem::AdditionalTools,
|
|
30
|
+
OpenAI::Responses::ResponseConfigurationUpdateItemParam,
|
|
30
31
|
OpenAI::Responses::ResponseReasoningItem,
|
|
31
32
|
OpenAI::Responses::ResponseCompactionItemParam,
|
|
32
33
|
OpenAI::Responses::ResponseInputItem::ImageGenerationCall,
|
|
@@ -22,6 +22,7 @@ module OpenAI
|
|
|
22
22
|
OpenAI::Responses::ResponseToolSearchCall,
|
|
23
23
|
OpenAI::Responses::ResponseToolSearchOutputItem,
|
|
24
24
|
OpenAI::Responses::ResponseItem::AdditionalTools,
|
|
25
|
+
OpenAI::Responses::ResponseConfigurationUpdateItem,
|
|
25
26
|
OpenAI::Responses::ResponseReasoningItem,
|
|
26
27
|
OpenAI::Responses::ResponseItem::Program,
|
|
27
28
|
OpenAI::Responses::ResponseItem::ProgramOutput,
|
|
@@ -53,6 +53,7 @@ module OpenAI
|
|
|
53
53
|
OpenAI::Responses::ResponseToolSearchCall::OrHash,
|
|
54
54
|
OpenAI::Responses::ResponseToolSearchOutputItem::OrHash,
|
|
55
55
|
OpenAI::Responses::ResponseItem::AdditionalTools::OrHash,
|
|
56
|
+
OpenAI::Responses::ResponseConfigurationUpdateItem::OrHash,
|
|
56
57
|
OpenAI::Responses::ResponseReasoningItem::OrHash,
|
|
57
58
|
OpenAI::Responses::ResponseItem::Program::OrHash,
|
|
58
59
|
OpenAI::Responses::ResponseItem::ProgramOutput::OrHash,
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Models
|
|
5
|
+
|
|
6
|
+
module Responses
|
|
7
|
+
|
|
8
|
+
class ResponseSteerAcceptedEvent < OpenAI::Internal::Type::BaseModel
|
|
9
|
+
|
|
10
|
+
OrHash = T.type_alias do
|
|
11
|
+
T.any(
|
|
12
|
+
OpenAI::Responses::ResponseSteerAcceptedEvent,
|
|
13
|
+
OpenAI::Internal::AnyHash
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# The sequence number for this event.
|
|
18
|
+
sig { returns(Integer) }
|
|
19
|
+
attr_accessor :sequence_number
|
|
20
|
+
|
|
21
|
+
# The accepted steering submission.
|
|
22
|
+
sig { returns(OpenAI::Responses::ResponseSteerAcceptedEvent::Steer) }
|
|
23
|
+
attr_reader :steer
|
|
24
|
+
|
|
25
|
+
sig { params(steer: OpenAI::Responses::ResponseSteerAcceptedEvent::Steer::OrHash).void }
|
|
26
|
+
attr_writer :steer
|
|
27
|
+
|
|
28
|
+
# The event discriminator. Always `response.steer.accepted`.
|
|
29
|
+
sig { returns(Symbol) }
|
|
30
|
+
attr_accessor :type
|
|
31
|
+
|
|
32
|
+
# The WebSocket lane that emitted this event. This field is present when the
|
|
33
|
+
# target response's `response.create` event supplied a `stream_id`.
|
|
34
|
+
sig { returns(T.nilable(String)) }
|
|
35
|
+
attr_reader :stream_id
|
|
36
|
+
|
|
37
|
+
sig { params(stream_id: String).void }
|
|
38
|
+
attr_writer :stream_id
|
|
39
|
+
|
|
40
|
+
# Emitted when steering input has been validated and queued. Acceptance means the
|
|
41
|
+
# server owns the input, not that it has been applied. The successor's
|
|
42
|
+
# `response.created` event is the commit point. If accepted input cannot be
|
|
43
|
+
# committed, `response.steer.failed` returns it with the same steering ID.
|
|
44
|
+
#
|
|
45
|
+
# When the response stops for client-owned tool output or approval, the input
|
|
46
|
+
# remains queued and `response.steer.pending` is emitted after
|
|
47
|
+
# `response.completed`. Fill the pending event's `required_input` stubs with saved
|
|
48
|
+
# results and send one matching explicit `response.create` per parent. Do not
|
|
49
|
+
# resend accepted input while it is still queued.
|
|
50
|
+
sig do
|
|
51
|
+
params(
|
|
52
|
+
|
|
53
|
+
sequence_number: Integer,
|
|
54
|
+
|
|
55
|
+
steer: OpenAI::Responses::ResponseSteerAcceptedEvent::Steer::OrHash,
|
|
56
|
+
|
|
57
|
+
stream_id: String,
|
|
58
|
+
|
|
59
|
+
type: Symbol
|
|
60
|
+
)
|
|
61
|
+
.returns(T.attached_class)
|
|
62
|
+
end
|
|
63
|
+
def self.new(
|
|
64
|
+
|
|
65
|
+
# The sequence number for this event.
|
|
66
|
+
sequence_number:,
|
|
67
|
+
|
|
68
|
+
# The accepted steering submission.
|
|
69
|
+
steer:,
|
|
70
|
+
|
|
71
|
+
# The WebSocket lane that emitted this event. This field is present when the
|
|
72
|
+
# target response's `response.create` event supplied a `stream_id`.
|
|
73
|
+
stream_id: nil,
|
|
74
|
+
|
|
75
|
+
# The event discriminator. Always `response.steer.accepted`.
|
|
76
|
+
|
|
77
|
+
type: :"response.steer.accepted"
|
|
78
|
+
)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
sig do
|
|
82
|
+
override.returns(
|
|
83
|
+
{
|
|
84
|
+
sequence_number: Integer,
|
|
85
|
+
steer: OpenAI::Responses::ResponseSteerAcceptedEvent::Steer,
|
|
86
|
+
type: Symbol,
|
|
87
|
+
stream_id: String
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
end
|
|
91
|
+
def to_hash
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
class Steer < OpenAI::Internal::Type::BaseModel
|
|
95
|
+
OrHash = T.type_alias do
|
|
96
|
+
T.any(
|
|
97
|
+
OpenAI::Responses::ResponseSteerAcceptedEvent::Steer,
|
|
98
|
+
OpenAI::Internal::AnyHash
|
|
99
|
+
)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# The ID assigned to the steering submission.
|
|
103
|
+
sig { returns(String) }
|
|
104
|
+
attr_accessor :id
|
|
105
|
+
|
|
106
|
+
# The ID of the response being steered.
|
|
107
|
+
sig { returns(String) }
|
|
108
|
+
attr_accessor :previous_response_id
|
|
109
|
+
|
|
110
|
+
# The accepted steering submission.
|
|
111
|
+
sig do
|
|
112
|
+
params(
|
|
113
|
+
|
|
114
|
+
id: String,
|
|
115
|
+
|
|
116
|
+
previous_response_id: String
|
|
117
|
+
)
|
|
118
|
+
.returns(T.attached_class)
|
|
119
|
+
end
|
|
120
|
+
def self.new(
|
|
121
|
+
|
|
122
|
+
# The ID assigned to the steering submission.
|
|
123
|
+
id:,
|
|
124
|
+
|
|
125
|
+
# The ID of the response being steered.
|
|
126
|
+
|
|
127
|
+
previous_response_id:
|
|
128
|
+
)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
sig do
|
|
132
|
+
override.returns(
|
|
133
|
+
{id: String, previous_response_id: String}
|
|
134
|
+
)
|
|
135
|
+
end
|
|
136
|
+
def to_hash
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
end
|
|
146
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Models
|
|
5
|
+
|
|
6
|
+
module Responses
|
|
7
|
+
|
|
8
|
+
# A machine-readable steering error code. Clients should handle unknown values
|
|
9
|
+
# because additional codes may be introduced. Known values include:
|
|
10
|
+
#
|
|
11
|
+
# - `response_not_found`: The target response is not available on this connection.
|
|
12
|
+
# - `invalid_input`: The event or input failed validation.
|
|
13
|
+
# - `steering_not_supported`: The model or response execution mode does not
|
|
14
|
+
# support steering.
|
|
15
|
+
# - `too_many_pending_steers`: Too much steering input is pending for the
|
|
16
|
+
# response.
|
|
17
|
+
# - `response_already_completed`: The response completed and is no longer
|
|
18
|
+
# accepting steering input.
|
|
19
|
+
# - `response_not_active`: The response is no longer accepting steering input.
|
|
20
|
+
# - `successor_creation_failed`: The successor response could not be created.
|
|
21
|
+
module ResponseSteerErrorCode
|
|
22
|
+
extend OpenAI::Internal::Type::Union
|
|
23
|
+
|
|
24
|
+
Variants = T.type_alias do
|
|
25
|
+
T.any(
|
|
26
|
+
OpenAI::Responses::ResponseSteerErrorCode::TaggedSymbol,
|
|
27
|
+
String
|
|
28
|
+
)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
sig { override.returns(T::Array[OpenAI::Responses::ResponseSteerErrorCode::Variants]) }
|
|
32
|
+
def self.variants
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
TaggedSymbol = T.type_alias do
|
|
36
|
+
T.all(Symbol, OpenAI::Responses::ResponseSteerErrorCode)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
40
|
+
|
|
41
|
+
RESPONSE_NOT_FOUND = T.let(:response_not_found, OpenAI::Responses::ResponseSteerErrorCode::TaggedSymbol)
|
|
42
|
+
INVALID_INPUT = T.let(:invalid_input, OpenAI::Responses::ResponseSteerErrorCode::TaggedSymbol)
|
|
43
|
+
STEERING_NOT_SUPPORTED = T.let(:steering_not_supported, OpenAI::Responses::ResponseSteerErrorCode::TaggedSymbol)
|
|
44
|
+
TOO_MANY_PENDING_STEERS = T.let(
|
|
45
|
+
:too_many_pending_steers,
|
|
46
|
+
OpenAI::Responses::ResponseSteerErrorCode::TaggedSymbol
|
|
47
|
+
)
|
|
48
|
+
RESPONSE_ALREADY_COMPLETED = T.let(
|
|
49
|
+
:response_already_completed,
|
|
50
|
+
OpenAI::Responses::ResponseSteerErrorCode::TaggedSymbol
|
|
51
|
+
)
|
|
52
|
+
RESPONSE_NOT_ACTIVE = T.let(:response_not_active, OpenAI::Responses::ResponseSteerErrorCode::TaggedSymbol)
|
|
53
|
+
SUCCESSOR_CREATION_FAILED = T.let(
|
|
54
|
+
:successor_creation_failed,
|
|
55
|
+
OpenAI::Responses::ResponseSteerErrorCode::TaggedSymbol
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module OpenAI
|
|
4
|
+
module Models
|
|
5
|
+
|
|
6
|
+
module Responses
|
|
7
|
+
|
|
8
|
+
class ResponseSteerEvent < OpenAI::Internal::Type::BaseModel
|
|
9
|
+
|
|
10
|
+
OrHash = T.type_alias do
|
|
11
|
+
T.any(
|
|
12
|
+
OpenAI::Responses::ResponseSteerEvent,
|
|
13
|
+
OpenAI::Internal::AnyHash
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Input to queue for a continuation of the response. Uses the same string or
|
|
18
|
+
# input-item shape as `response.create.input`, with a non-empty array when
|
|
19
|
+
# supplying input items.
|
|
20
|
+
#
|
|
21
|
+
# Steering accepts only messages with the `user` role. Each message may contain
|
|
22
|
+
# only `type`, `role`, and `content`, with `content` as a string or an array of
|
|
23
|
+
# `input_text`, `input_image`, and `input_file` parts. The optional `type` must be
|
|
24
|
+
# `message`. Other roles, tool outputs, and item types are not supported for
|
|
25
|
+
# steering.
|
|
26
|
+
sig {
|
|
27
|
+
returns(T.any(String, T::Array[OpenAI::Responses::ResponseSteerInput::ResponseSteerInputItemList::Variants]))
|
|
28
|
+
}
|
|
29
|
+
attr_accessor :input
|
|
30
|
+
|
|
31
|
+
# The ID of the response to steer on this WebSocket connection.
|
|
32
|
+
sig { returns(String) }
|
|
33
|
+
attr_accessor :previous_response_id
|
|
34
|
+
|
|
35
|
+
# The event discriminator. Always `response.steer`.
|
|
36
|
+
sig { returns(Symbol) }
|
|
37
|
+
attr_accessor :type
|
|
38
|
+
|
|
39
|
+
# Queues user input to steer a response on this WebSocket connection. Input can
|
|
40
|
+
# contain text, images, and files. Steering is supported only for single-agent
|
|
41
|
+
# responses on models and execution modes that support steering. Responses bound
|
|
42
|
+
# to a conversation or using automatic compaction do not support steering.
|
|
43
|
+
#
|
|
44
|
+
# A `response.steer.accepted` event acknowledges that the server owns the queued
|
|
45
|
+
# input, not that it has been applied. The successor's `response.created` event is
|
|
46
|
+
# the commit point. Input that cannot be committed is returned in
|
|
47
|
+
# `response.steer.failed`.
|
|
48
|
+
#
|
|
49
|
+
# Steering may cause the active response to finish at a safe output boundary with
|
|
50
|
+
# `response.incomplete` and `incomplete_details.reason` set to `steered`, followed
|
|
51
|
+
# automatically by a successor `response.created`. Normal completion can also be
|
|
52
|
+
# followed by an automatic successor. Automatic successors inherit the previous
|
|
53
|
+
# response's settings and continue from it with the queued input.
|
|
54
|
+
#
|
|
55
|
+
# If the response stops for client-owned tool output or approval, accepted
|
|
56
|
+
# steering input remains queued and `response.steer.pending` is emitted after
|
|
57
|
+
# `response.completed`. Fill the `required_input` stubs from that event with saved
|
|
58
|
+
# tool results or approval decisions, and send one explicit `response.create` per
|
|
59
|
+
# parent with the same `previous_response_id` and WebSocket lane. Do not rerun
|
|
60
|
+
# tools or resend accepted steering input. The queued input is prepended in
|
|
61
|
+
# submission order to that request's input, and the explicit request retains its
|
|
62
|
+
# own settings.
|
|
63
|
+
#
|
|
64
|
+
# This event accepts only `type`, `previous_response_id`, and `input`. Do not send
|
|
65
|
+
# `stream_id`; the target response determines the WebSocket lane.
|
|
66
|
+
sig do
|
|
67
|
+
params(
|
|
68
|
+
|
|
69
|
+
input: T.any(String, T::Array[OpenAI::Responses::ResponseSteerInput::ResponseSteerInputItemList::Variants]),
|
|
70
|
+
|
|
71
|
+
previous_response_id: String,
|
|
72
|
+
|
|
73
|
+
type: Symbol
|
|
74
|
+
)
|
|
75
|
+
.returns(T.attached_class)
|
|
76
|
+
end
|
|
77
|
+
def self.new(
|
|
78
|
+
|
|
79
|
+
# Input to queue for a continuation of the response. Uses the same string or
|
|
80
|
+
# input-item shape as `response.create.input`, with a non-empty array when
|
|
81
|
+
# supplying input items.
|
|
82
|
+
#
|
|
83
|
+
# Steering accepts only messages with the `user` role. Each message may contain
|
|
84
|
+
# only `type`, `role`, and `content`, with `content` as a string or an array of
|
|
85
|
+
# `input_text`, `input_image`, and `input_file` parts. The optional `type` must be
|
|
86
|
+
# `message`. Other roles, tool outputs, and item types are not supported for
|
|
87
|
+
# steering.
|
|
88
|
+
input:,
|
|
89
|
+
|
|
90
|
+
# The ID of the response to steer on this WebSocket connection.
|
|
91
|
+
previous_response_id:,
|
|
92
|
+
|
|
93
|
+
# The event discriminator. Always `response.steer`.
|
|
94
|
+
|
|
95
|
+
type: :"response.steer"
|
|
96
|
+
)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
sig do
|
|
100
|
+
override.returns(
|
|
101
|
+
{
|
|
102
|
+
input: T.any(
|
|
103
|
+
String,
|
|
104
|
+
T::Array[OpenAI::Responses::ResponseSteerInput::ResponseSteerInputItemList::Variants]
|
|
105
|
+
),
|
|
106
|
+
previous_response_id: String,
|
|
107
|
+
type: Symbol
|
|
108
|
+
}
|
|
109
|
+
)
|
|
110
|
+
end
|
|
111
|
+
def to_hash
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
end
|
|
119
|
+
end
|