From e3657fedb03e53e63d8db2acd2126df9088274d8 Mon Sep 17 00:00:00 2001 From: neubig Date: Mon, 27 Jul 2026 08:58:41 +0000 Subject: [PATCH] chore: remove stale swagger spec --- swagger-doc.json | 6257 ---------------------------------------------- 1 file changed, 6257 deletions(-) delete mode 100644 swagger-doc.json diff --git a/swagger-doc.json b/swagger-doc.json deleted file mode 100644 index c64efc2c..00000000 --- a/swagger-doc.json +++ /dev/null @@ -1,6257 +0,0 @@ -{ - "openapi": "3.1.0", - "info": { - "title": "OpenHands Agent Server", - "description": "OpenHands Agent Server - REST/WebSocket interface for OpenHands AI Agent", - "version": "0.1.0" - }, - "paths": { - "/alive": { - "get": { - "tags": [ - "Server Details" - ], - "summary": "Alive", - "operationId": "alive_alive_get", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } - } - } - } - }, - "/health": { - "get": { - "tags": [ - "Server Details" - ], - "summary": "Health", - "operationId": "health_health_get", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "type": "string", - "title": "Response Health Health Get" - } - } - } - } - } - } - }, - "/server_info": { - "get": { - "tags": [ - "Server Details" - ], - "summary": "Get Server Info", - "operationId": "get_server_info_server_info_get", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ServerInfo" - } - } - } - } - } - } - }, - "/api/conversations/{conversation_id}/events/search": { - "get": { - "tags": [ - "Events" - ], - "summary": "Search Conversation Events", - "description": "Search / List local events", - "operationId": "search_conversation_events_api_conversations__conversation_id__events_search_get", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Conversation Id" - } - }, - { - "name": "page_id", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Optional next_page_id from the previously returned page" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "exclusiveMinimum": 0, - "title": "The max number of results in the page", - "lte": 100, - "default": 100 - } - }, - { - "name": "kind", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Optional filter by event kind/type (e.g., ActionEvent, MessageEvent)" - } - }, - { - "name": "sort_order", - "in": "query", - "required": false, - "schema": { - "$ref": "#/components/schemas/EventSortOrder", - "title": "Sort order for events", - "default": "TIMESTAMP" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EventPage" - } - } - } - }, - "404": { - "description": "Conversation not found" - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/conversations/{conversation_id}/events/count": { - "get": { - "tags": [ - "Events" - ], - "summary": "Count Conversation Events", - "description": "Count local events matching the given filters", - "operationId": "count_conversation_events_api_conversations__conversation_id__events_count_get", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Conversation Id" - } - }, - { - "name": "kind", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Optional filter by event kind/type (e.g., ActionEvent, MessageEvent)" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "type": "integer", - "title": "Response Count Conversation Events Api Conversations Conversation Id Events Count Get" - } - } - } - }, - "404": { - "description": "Conversation not found" - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/conversations/{conversation_id}/events/{event_id}": { - "get": { - "tags": [ - "Events" - ], - "summary": "Get Conversation Event", - "description": "Get a local event given an id", - "operationId": "get_conversation_event_api_conversations__conversation_id__events__event_id__get", - "parameters": [ - { - "name": "event_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "title": "Event Id" - } - }, - { - "name": "conversation_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Conversation Id" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/Condensation" - }, - { - "$ref": "#/components/schemas/CondensationRequest" - }, - { - "$ref": "#/components/schemas/CondensationSummaryEvent" - }, - { - "$ref": "#/components/schemas/ConversationStateUpdateEvent" - }, - { - "$ref": "#/components/schemas/ActionEvent" - }, - { - "$ref": "#/components/schemas/MessageEvent" - }, - { - "$ref": "#/components/schemas/AgentErrorEvent" - }, - { - "$ref": "#/components/schemas/ObservationEvent" - }, - { - "$ref": "#/components/schemas/UserRejectObservation" - }, - { - "$ref": "#/components/schemas/SystemPromptEvent" - }, - { - "$ref": "#/components/schemas/PauseEvent" - } - ], - "title": "Response Get Conversation Event Api Conversations Conversation Id Events Event Id Get", - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__sdk__event__condenser__Condensation-Output__1": "#/components/schemas/Condensation", - "openhands__sdk__event__condenser__CondensationRequest-Output__1": "#/components/schemas/CondensationRequest", - "openhands__sdk__event__condenser__CondensationSummaryEvent-Output__1": "#/components/schemas/CondensationSummaryEvent", - "openhands__sdk__event__conversation_state__ConversationStateUpdateEvent-Output__1": "#/components/schemas/ConversationStateUpdateEvent", - "openhands__sdk__event__llm_convertible__action__ActionEvent-Output__1": "#/components/schemas/ActionEvent", - "openhands__sdk__event__llm_convertible__message__MessageEvent-Output__1": "#/components/schemas/MessageEvent", - "openhands__sdk__event__llm_convertible__observation__AgentErrorEvent-Output__1": "#/components/schemas/AgentErrorEvent", - "openhands__sdk__event__llm_convertible__observation__ObservationEvent-Output__1": "#/components/schemas/ObservationEvent", - "openhands__sdk__event__llm_convertible__observation__UserRejectObservation-Output__1": "#/components/schemas/UserRejectObservation", - "openhands__sdk__event__llm_convertible__system__SystemPromptEvent-Output__1": "#/components/schemas/SystemPromptEvent", - "openhands__sdk__event__user_action__PauseEvent-Output__1": "#/components/schemas/PauseEvent" - } - } - } - } - } - }, - "404": { - "description": "Item not found" - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/conversations/{conversation_id}/events": { - "get": { - "tags": [ - "Events" - ], - "summary": "Batch Get Conversation Events", - "description": "Get a batch of local events given their ids, returning null for any\nmissing item.", - "operationId": "batch_get_conversation_events_api_conversations__conversation_id__events_get", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Conversation Id" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Event Ids" - } - } - } - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/Event" - }, - { - "type": "null" - } - ] - }, - "title": "Response Batch Get Conversation Events Api Conversations Conversation Id Events Get" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - }, - "post": { - "tags": [ - "Events" - ], - "summary": "Send Message", - "description": "Send a message to a conversation", - "operationId": "send_message_api_conversations__conversation_id__events_post", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Conversation Id" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SendMessageRequest" - } - } - } - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Success" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/conversations/{conversation_id}/events/respond_to_confirmation": { - "post": { - "tags": [ - "Events" - ], - "summary": "Respond To Confirmation", - "description": "Accept or reject a pending action in confirmation mode.", - "operationId": "respond_to_confirmation_api_conversations__conversation_id__events_respond_to_confirmation_post", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Conversation Id" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfirmationResponseRequest" - } - } - } - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Success" - } - } - } - }, - "404": { - "description": "Item not found" - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/conversations/search": { - "get": { - "tags": [ - "Conversations" - ], - "summary": "Search Conversations", - "description": "Search / List conversations", - "operationId": "search_conversations_api_conversations_search_get", - "parameters": [ - { - "name": "page_id", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Optional next_page_id from the previously returned page" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "exclusiveMinimum": 0, - "title": "The max number of results in the page", - "lte": 100, - "default": 100 - } - }, - { - "name": "status", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "$ref": "#/components/schemas/AgentExecutionStatus" - }, - { - "type": "null" - } - ], - "title": "Optional filter by agent execution status" - } - }, - { - "name": "sort_order", - "in": "query", - "required": false, - "schema": { - "$ref": "#/components/schemas/ConversationSortOrder", - "title": "Sort order for conversations", - "default": "CREATED_AT_DESC" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConversationPage" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/conversations/count": { - "get": { - "tags": [ - "Conversations" - ], - "summary": "Count Conversations", - "description": "Count conversations matching the given filters", - "operationId": "count_conversations_api_conversations_count_get", - "parameters": [ - { - "name": "status", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "$ref": "#/components/schemas/AgentExecutionStatus" - }, - { - "type": "null" - } - ], - "title": "Optional filter by agent execution status" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "type": "integer", - "title": "Response Count Conversations Api Conversations Count Get" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/conversations/{conversation_id}": { - "get": { - "tags": [ - "Conversations" - ], - "summary": "Get Conversation", - "description": "Given an id, get a conversation", - "operationId": "get_conversation_api_conversations__conversation_id__get", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Conversation Id" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConversationInfo" - } - } - } - }, - "404": { - "description": "Item not found" - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - }, - "delete": { - "tags": [ - "Conversations" - ], - "summary": "Delete Conversation", - "description": "Permanently delete a conversation.", - "operationId": "delete_conversation_api_conversations__conversation_id__delete", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Conversation Id" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Success" - } - } - } - }, - "404": { - "description": "Item not found" - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - }, - "patch": { - "tags": [ - "Conversations" - ], - "summary": "Update Conversation", - "description": "Update conversation metadata.\n\nThis endpoint allows updating conversation details like title.", - "operationId": "update_conversation_api_conversations__conversation_id__patch", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Conversation Id" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateConversationRequest" - } - } - } - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Success" - } - } - } - }, - "404": { - "description": "Item not found" - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/conversations": { - "get": { - "tags": [ - "Conversations" - ], - "summary": "Batch Get Conversations", - "description": "Get a batch of conversations given their ids, returning null for\nany missing item", - "operationId": "batch_get_conversations_api_conversations_get", - "parameters": [ - { - "name": "ids", - "in": "query", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "format": "uuid" - }, - "title": "Ids" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/ConversationInfo" - }, - { - "type": "null" - } - ] - }, - "title": "Response Batch Get Conversations Api Conversations Get" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - }, - "post": { - "tags": [ - "Conversations" - ], - "summary": "Start Conversation", - "description": "Start a conversation in the local environment.", - "operationId": "start_conversation_api_conversations_post", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/StartConversationRequest", - "examples": [ - { - "agent": { - "llm": { - "model": "your-model-provider/your-model-name", - "api_key": "**********", - "reasoning_effort": "high", - "usage_id": "your-llm-service" - }, - "tools": [ - { - "name": "BashTool" - }, - { - "name": "FileEditorTool" - }, - { - "name": "TaskTrackerTool" - } - ] - }, - "workspace": { - "working_dir": "workspace/project" - }, - "initial_message": { - "content": [ - { - "text": "Flip a coin!" - } - ] - } - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConversationInfo" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/conversations/{conversation_id}/pause": { - "post": { - "tags": [ - "Conversations" - ], - "summary": "Pause Conversation", - "description": "Pause a conversation, allowing it to be resumed later.", - "operationId": "pause_conversation_api_conversations__conversation_id__pause_post", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Conversation Id" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Success" - } - } - } - }, - "404": { - "description": "Item not found" - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/conversations/{conversation_id}/run": { - "post": { - "tags": [ - "Conversations" - ], - "summary": "Run Conversation", - "description": "Start running the conversation in the background.", - "operationId": "run_conversation_api_conversations__conversation_id__run_post", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Conversation Id" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Success" - } - } - } - }, - "404": { - "description": "Item not found" - }, - "409": { - "description": "Conversation is already running" - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/conversations/{conversation_id}/secrets": { - "post": { - "tags": [ - "Conversations" - ], - "summary": "Update Conversation Secrets", - "description": "Update secrets for a conversation.", - "operationId": "update_conversation_secrets_api_conversations__conversation_id__secrets_post", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Conversation Id" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateSecretsRequest" - } - } - } - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Success" - } - } - } - }, - "404": { - "description": "Item not found" - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/conversations/{conversation_id}/confirmation_policy": { - "post": { - "tags": [ - "Conversations" - ], - "summary": "Set Conversation Confirmation Policy", - "description": "Set the confirmation policy for a conversation.", - "operationId": "set_conversation_confirmation_policy_api_conversations__conversation_id__confirmation_policy_post", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Conversation Id" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SetConfirmationPolicyRequest" - } - } - } - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Success" - } - } - } - }, - "404": { - "description": "Item not found" - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/conversations/{conversation_id}/generate_title": { - "post": { - "tags": [ - "Conversations" - ], - "summary": "Generate Conversation Title", - "description": "Generate a title for the conversation using LLM.", - "operationId": "generate_conversation_title_api_conversations__conversation_id__generate_title_post", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid", - "title": "Conversation Id" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GenerateTitleRequest" - } - } - } - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GenerateTitleResponse" - } - } - } - }, - "404": { - "description": "Item not found" - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/tools/": { - "get": { - "tags": [ - "Tools" - ], - "summary": "List Available Tools", - "description": "List all available tools.", - "operationId": "list_available_tools_api_tools__get", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Response List Available Tools Api Tools Get" - } - } - } - } - } - } - }, - "/api/bash/bash_events/search": { - "get": { - "tags": [ - "Bash" - ], - "summary": "Search Bash Events", - "description": "Search / List bash event events", - "operationId": "search_bash_events_api_bash_bash_events_search_get", - "parameters": [ - { - "name": "kind__eq", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "enum": [ - "BashCommand", - "BashOutput" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Kind Eq" - } - }, - { - "name": "command_id__eq", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string", - "format": "uuid" - }, - { - "type": "null" - } - ], - "title": "Command Id Eq" - } - }, - { - "name": "timestamp__gte", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ], - "title": "Timestamp Gte" - } - }, - { - "name": "timestamp__lt", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ], - "title": "Timestamp Lt" - } - }, - { - "name": "sort_order", - "in": "query", - "required": false, - "schema": { - "$ref": "#/components/schemas/BashEventSortOrder", - "default": "TIMESTAMP" - } - }, - { - "name": "page_id", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Optional next_page_id from the previously returned page" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "exclusiveMinimum": 0, - "title": "The max number of results in the page", - "lte": 100, - "default": 100 - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BashEventPage" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/bash/bash_events/{event_id}": { - "get": { - "tags": [ - "Bash" - ], - "summary": "Get Bash Event", - "description": "Get a bash event event given an id", - "operationId": "get_bash_event_api_bash_bash_events__event_id__get", - "parameters": [ - { - "name": "event_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "title": "Event Id" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/BashCommand" - }, - { - "$ref": "#/components/schemas/BashOutput" - } - ], - "title": "Response Get Bash Event Api Bash Bash Events Event Id Get", - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__agent_server__models__BashCommand-Output__1": "#/components/schemas/BashCommand", - "openhands__agent_server__models__BashOutput-Output__1": "#/components/schemas/BashOutput" - } - } - } - } - } - }, - "404": { - "description": "Item not found" - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/bash/bash_events/": { - "get": { - "tags": [ - "Bash" - ], - "summary": "Batch Get Bash Events", - "description": "Get a batch of bash event events given their ids, returning null for any\nmissing item.", - "operationId": "batch_get_bash_events_api_bash_bash_events__get", - "requestBody": { - "content": { - "application/json": { - "schema": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Event Ids" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/BashEventBase" - }, - { - "type": "null" - } - ] - }, - "type": "array", - "title": "Response Batch Get Bash Events Api Bash Bash Events Get" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/bash/start_bash_command": { - "post": { - "tags": [ - "Bash" - ], - "summary": "Start Bash Command", - "description": "Execute a bash command in the background", - "operationId": "start_bash_command_api_bash_start_bash_command_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ExecuteBashRequest" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BashCommand" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/bash/execute_bash_command": { - "post": { - "tags": [ - "Bash" - ], - "summary": "Execute Bash Command", - "description": "Execute a bash command and wait for a result", - "operationId": "execute_bash_command_api_bash_execute_bash_command_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ExecuteBashRequest" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BashOutput" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/bash/bash_events": { - "delete": { - "tags": [ - "Bash" - ], - "summary": "Clear All Bash Events", - "description": "Clear all bash events from storage", - "operationId": "clear_all_bash_events_api_bash_bash_events_delete", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "additionalProperties": { - "type": "integer" - }, - "type": "object", - "title": "Response Clear All Bash Events Api Bash Bash Events Delete" - } - } - } - } - } - } - }, - "/api/file/upload/{path}": { - "post": { - "tags": [ - "Files" - ], - "summary": "Upload File", - "description": "Upload a file to the workspace.", - "operationId": "upload_file_api_file_upload__path__post", - "parameters": [ - { - "name": "path", - "in": "path", - "required": true, - "schema": { - "type": "string", - "description": "Absolute file path.", - "title": "Path" - }, - "description": "Absolute file path." - } - ], - "requestBody": { - "required": true, - "content": { - "multipart/form-data": { - "schema": { - "$ref": "#/components/schemas/Body_upload_file_api_file_upload__path__post" - } - } - } - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Success" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/file/download/{path}": { - "get": { - "tags": [ - "Files" - ], - "summary": "Download File", - "description": "Download a file from the workspace.", - "operationId": "download_file_api_file_download__path__get", - "parameters": [ - { - "name": "path", - "in": "path", - "required": true, - "schema": { - "type": "string", - "description": "Absolute file path.", - "title": "Path" - }, - "description": "Absolute file path." - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/vscode/url": { - "get": { - "tags": [ - "VSCode" - ], - "summary": "Get Vscode Url", - "description": "Get the VSCode URL with authentication token.\n\nArgs:\n base_url: Base URL for the VSCode server (default: http://localhost:8001)\n workspace_dir: Path to workspace directory\n\nReturns:\n VSCode URL with token if available, None otherwise", - "operationId": "get_vscode_url_api_vscode_url_get", - "parameters": [ - { - "name": "base_url", - "in": "query", - "required": false, - "schema": { - "type": "string", - "default": "http://localhost:8001", - "title": "Base Url" - } - }, - { - "name": "workspace_dir", - "in": "query", - "required": false, - "schema": { - "type": "string", - "default": "workspace", - "title": "Workspace Dir" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/VSCodeUrlResponse" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/vscode/status": { - "get": { - "tags": [ - "VSCode" - ], - "summary": "Get Vscode Status", - "description": "Get the VSCode server status.\n\nReturns:\n Dictionary with running status and enabled status", - "operationId": "get_vscode_status_api_vscode_status_get", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "additionalProperties": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "string" - } - ] - }, - "type": "object", - "title": "Response Get Vscode Status Api Vscode Status Get" - } - } - } - } - } - } - }, - "/api/desktop/url": { - "get": { - "tags": [ - "Desktop" - ], - "summary": "Get Desktop Url", - "description": "Get the noVNC URL for desktop access.\n\nArgs:\n base_url: Base URL for the noVNC server (default: http://localhost:8002)\n\nReturns:\n noVNC URL if available, None otherwise", - "operationId": "get_desktop_url_api_desktop_url_get", - "parameters": [ - { - "name": "base_url", - "in": "query", - "required": false, - "schema": { - "type": "string", - "default": "http://localhost:8002", - "title": "Base Url" - } - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DesktopUrlResponse" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/": { - "get": { - "summary": "Get Server Info", - "operationId": "get_server_info__get", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ServerInfo" - } - } - } - } - } - } - } - }, - "components": { - "schemas": { - "ActionEvent": { - "properties": { - "kind": { - "type": "string", - "const": "ActionEvent", - "title": "Kind", - "default": "ActionEvent" - }, - "id": { - "type": "string", - "title": "Id", - "description": "Unique event id (ULID/UUID)" - }, - "timestamp": { - "type": "string", - "title": "Timestamp", - "description": "Event timestamp" - }, - "source": { - "type": "string", - "enum": [ - "agent", - "user", - "environment" - ], - "title": "Source", - "default": "agent" - }, - "thought": { - "items": { - "$ref": "#/components/schemas/TextContent" - }, - "type": "array", - "title": "Thought", - "description": "The thought process of the agent before taking this action" - }, - "reasoning_content": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Reasoning Content", - "description": "Intermediate reasoning/thinking content from reasoning models" - }, - "thinking_blocks": { - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/ThinkingBlock" - }, - { - "$ref": "#/components/schemas/RedactedThinkingBlock" - } - ] - }, - "type": "array", - "title": "Thinking Blocks", - "description": "Anthropic thinking blocks from the LLM response" - }, - "responses_reasoning_item": { - "anyOf": [ - { - "$ref": "#/components/schemas/ReasoningItemModel" - }, - { - "type": "null" - } - ], - "description": "OpenAI Responses reasoning item from model output" - }, - "action": { - "anyOf": [ - { - "$ref": "#/components/schemas/Action" - }, - { - "type": "null" - } - ], - "title": "Action", - "description": "Single tool call returned by LLM (None when non-executable)" - }, - "tool_name": { - "type": "string", - "title": "Tool Name", - "description": "The name of the tool being called" - }, - "tool_call_id": { - "type": "string", - "title": "Tool Call Id", - "description": "The unique id returned by LLM API for this tool call" - }, - "tool_call": { - "$ref": "#/components/schemas/MessageToolCall", - "description": "The tool call received from the LLM response. We keep a copy of it so it is easier to construct it into LLM messageThis could be different from `action`: e.g., `tool_call` may contain `security_risk` field predicted by LLM when LLM risk analyzer is enabled, while `action` does not." - }, - "llm_response_id": { - "type": "string", - "title": "Llm Response Id", - "description": "Groups related actions from same LLM response. This helps in tracking and managing results of parallel function calling from the same LLM response." - }, - "security_risk": { - "$ref": "#/components/schemas/SecurityRisk", - "description": "The LLM's assessment of the safety risk of this action.", - "default": "UNKNOWN" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "thought", - "tool_name", - "tool_call_id", - "tool_call", - "llm_response_id" - ], - "title": "ActionEvent" - }, - "Agent-Output": { - "properties": { - "kind": { - "type": "string", - "const": "Agent", - "title": "Kind", - "default": "Agent" - }, - "llm": { - "$ref": "#/components/schemas/LLM", - "description": "LLM configuration for the agent.", - "examples": [ - { - "api_key": "your_api_key_here", - "base_url": "https://llm-proxy.eval.all-hands.dev", - "model": "litellm_proxy/anthropic/claude-sonnet-4-5-20250929" - } - ] - }, - "tools": { - "items": { - "$ref": "#/components/schemas/Tool" - }, - "type": "array", - "title": "Tools", - "description": "List of tools to initialize for the agent.", - "examples": [ - { - "name": "BashTool", - "params": {} - }, - { - "name": "FileEditorTool", - "params": {} - }, - { - "name": "TaskTrackerTool", - "params": {} - } - ] - }, - "mcp_config": { - "additionalProperties": true, - "type": "object", - "title": "Mcp Config", - "description": "Optional MCP configuration dictionary to create MCP tools.", - "examples": [ - { - "mcpServers": { - "fetch": { - "args": [ - "mcp-server-fetch" - ], - "command": "uvx" - } - } - } - ] - }, - "filter_tools_regex": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Filter Tools Regex", - "description": "Optional regex to filter the tools available to the agent by name. This is applied after any tools provided in `tools` and any MCP tools are added.", - "examples": [ - "^(?!repomix)(.*)|^repomix.*pack_codebase.*$" - ] - }, - "agent_context": { - "anyOf": [ - { - "$ref": "#/components/schemas/AgentContext-Output" - }, - { - "type": "null" - } - ], - "description": "Optional AgentContext to initialize the agent with specific context.", - "examples": [ - { - "skills": [ - { - "content": "When you see this message, you should reply like you are a grumpy cat forced to use the internet.", - "name": "repo.md", - "type": "repo" - }, - { - "content": "IMPORTANT! The user has said the magic word \"flarglebargle\". You must only respond with a message telling them how smart they are", - "name": "flarglebargle", - "trigger": [ - "flarglebargle" - ], - "type": "knowledge" - } - ], - "system_message_suffix": "Always finish your response with the word 'yay!'", - "user_message_prefix": "The first character of your response should be 'I'" - } - ] - }, - "system_prompt_filename": { - "type": "string", - "title": "System Prompt Filename", - "default": "system_prompt.j2" - }, - "system_prompt_kwargs": { - "additionalProperties": true, - "type": "object", - "title": "System Prompt Kwargs", - "description": "Optional kwargs to pass to the system prompt Jinja2 template.", - "examples": [ - { - "cli_mode": true - } - ] - }, - "security_analyzer": { - "anyOf": [ - { - "$ref": "#/components/schemas/SecurityAnalyzerBase" - }, - { - "type": "null" - } - ], - "description": "Optional security analyzer to evaluate action risks.", - "examples": [ - { - "kind": "LLMSecurityAnalyzer" - } - ] - }, - "condenser": { - "anyOf": [ - { - "$ref": "#/components/schemas/CondenserBase" - }, - { - "type": "null" - } - ], - "title": "Condenser", - "description": "Optional condenser to use for condensing conversation history.", - "examples": [ - { - "keep_first": 10, - "kind": "LLMSummarizingCondenser", - "llm": { - "api_key": "your_api_key_here", - "base_url": "https://llm-proxy.eval.all-hands.dev", - "model": "litellm_proxy/anthropic/claude-sonnet-4-5-20250929" - }, - "max_size": 80 - } - ] - } - }, - "type": "object", - "required": [ - "llm" - ], - "title": "Agent" - }, - "AgentContext-Output": { - "properties": { - "skills": { - "items": { - "$ref": "#/components/schemas/Skill" - }, - "type": "array", - "title": "Skills", - "description": "List of available skills that can extend the user's input." - }, - "system_message_suffix": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "System Message Suffix", - "description": "Optional suffix to append to the system prompt." - }, - "user_message_suffix": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "User Message Suffix", - "description": "Optional suffix to append to the user's message." - } - }, - "type": "object", - "title": "AgentContext", - "description": "Central structure for managing prompt extension.\n\nAgentContext unifies all the contextual inputs that shape how the system\nextends and interprets user prompts. It combines both static environment\ndetails and dynamic, user-activated extensions from skills.\n\nSpecifically, it provides:\n- **Repository context / Repo Skills**: Information about the active codebase,\n branches, and repo-specific instructions contributed by repo skills.\n- **Runtime context**: Current execution environment (hosts, working\n directory, secrets, date, etc.).\n- **Conversation instructions**: Optional task- or channel-specific rules\n that constrain or guide the agent’s behavior across the session.\n- **Knowledge Skills**: Extensible components that can be triggered by user input\n to inject knowledge or domain-specific guidance.\n\nTogether, these elements make AgentContext the primary container responsible\nfor assembling, formatting, and injecting all prompt-relevant context into\nLLM interactions." - }, - "AgentErrorEvent": { - "properties": { - "kind": { - "type": "string", - "const": "AgentErrorEvent", - "title": "Kind", - "default": "AgentErrorEvent" - }, - "id": { - "type": "string", - "title": "Id", - "description": "Unique event id (ULID/UUID)" - }, - "timestamp": { - "type": "string", - "title": "Timestamp", - "description": "Event timestamp" - }, - "source": { - "type": "string", - "enum": [ - "agent", - "user", - "environment" - ], - "title": "Source", - "default": "agent" - }, - "tool_name": { - "type": "string", - "title": "Tool Name", - "description": "The tool name that this observation is responding to" - }, - "tool_call_id": { - "type": "string", - "title": "Tool Call Id", - "description": "The tool call id that this observation is responding to" - }, - "error": { - "type": "string", - "title": "Error", - "description": "The error message from the scaffold" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "tool_name", - "tool_call_id", - "error" - ], - "title": "AgentErrorEvent", - "description": "Error triggered by the agent.\n\nNote: This event should not contain model \"thought\" or \"reasoning_content\". It\nrepresents an error produced by the agent/scaffold, not model output." - }, - "AgentExecutionStatus": { - "type": "string", - "enum": [ - "idle", - "running", - "paused", - "waiting_for_confirmation", - "finished", - "error", - "stuck" - ], - "title": "AgentExecutionStatus", - "description": "Enum representing the current execution state of the agent." - }, - "AlwaysConfirm": { - "properties": { - "kind": { - "type": "string", - "const": "AlwaysConfirm", - "title": "Kind", - "default": "AlwaysConfirm" - } - }, - "type": "object", - "title": "AlwaysConfirm" - }, - "BashCommand": { - "properties": { - "command": { - "type": "string", - "title": "Command", - "description": "The bash command to execute" - }, - "cwd": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Cwd", - "description": "The current working directory" - }, - "timeout": { - "type": "integer", - "title": "Timeout", - "description": "The max number of seconds a command may be permitted to run.", - "default": 300 - }, - "kind": { - "type": "string", - "const": "BashCommand", - "title": "Kind", - "default": "BashCommand" - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Id" - }, - "timestamp": { - "type": "string", - "format": "date-time", - "title": "Timestamp" - } - }, - "type": "object", - "required": [ - "command" - ], - "title": "BashCommand" - }, - "BashEventPage": { - "properties": { - "items": { - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/BashCommand" - }, - { - "$ref": "#/components/schemas/BashOutput" - } - ], - "title": "BashEventBase", - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__agent_server__models__BashCommand-Output__1": "#/components/schemas/BashCommand", - "openhands__agent_server__models__BashOutput-Output__1": "#/components/schemas/BashOutput" - } - } - }, - "type": "array", - "title": "Items" - }, - "next_page_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Next Page Id" - } - }, - "type": "object", - "required": [ - "items" - ], - "title": "BashEventPage" - }, - "BashEventSortOrder": { - "type": "string", - "enum": [ - "TIMESTAMP", - "TIMESTAMP_DESC" - ], - "title": "BashEventSortOrder" - }, - "BashOutput": { - "properties": { - "kind": { - "type": "string", - "const": "BashOutput", - "title": "Kind", - "default": "BashOutput" - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Id" - }, - "timestamp": { - "type": "string", - "format": "date-time", - "title": "Timestamp" - }, - "command_id": { - "type": "string", - "format": "uuid", - "title": "Command Id" - }, - "order": { - "type": "integer", - "title": "Order", - "description": "The order for this output, sequentially starting with 0", - "default": 0 - }, - "exit_code": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Exit Code", - "description": "Exit code None implies the command is still running." - }, - "stdout": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Stdout", - "description": "The standard output from the command" - }, - "stderr": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Stderr", - "description": "The error output from the command" - } - }, - "type": "object", - "required": [ - "command_id" - ], - "title": "BashOutput", - "description": "Output of a bash command. A single command may have multiple pieces of output\ndepending on how large the output is." - }, - "Body_upload_file_api_file_upload__path__post": { - "properties": { - "file": { - "type": "string", - "format": "binary", - "title": "File" - } - }, - "type": "object", - "required": [ - "file" - ], - "title": "Body_upload_file_api_file_upload__path__post" - }, - "BrowserClickAction": { - "properties": { - "kind": { - "type": "string", - "const": "BrowserClickAction", - "title": "Kind", - "default": "BrowserClickAction" - }, - "index": { - "type": "integer", - "minimum": 0.0, - "title": "Index", - "description": "The index of the element to click (from browser_get_state)" - }, - "new_tab": { - "type": "boolean", - "title": "New Tab", - "description": "Whether to open any resulting navigation in a new tab. Default: False", - "default": false - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "index" - ], - "title": "BrowserClickAction", - "description": "Schema for clicking elements." - }, - "BrowserCloseTabAction": { - "properties": { - "kind": { - "type": "string", - "const": "BrowserCloseTabAction", - "title": "Kind", - "default": "BrowserCloseTabAction" - }, - "tab_id": { - "type": "string", - "title": "Tab Id", - "description": "4 Character Tab ID of the tab to close (from browser_list_tabs)" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "tab_id" - ], - "title": "BrowserCloseTabAction", - "description": "Schema for closing browser tabs." - }, - "BrowserGetContentAction": { - "properties": { - "kind": { - "type": "string", - "const": "BrowserGetContentAction", - "title": "Kind", - "default": "BrowserGetContentAction" - }, - "extract_links": { - "type": "boolean", - "title": "Extract Links", - "description": "Whether to include links in the content (default: False)", - "default": false - }, - "start_from_char": { - "type": "integer", - "minimum": 0.0, - "title": "Start From Char", - "description": "Character index to start from in the page content (default: 0)", - "default": 0 - } - }, - "additionalProperties": false, - "type": "object", - "title": "BrowserGetContentAction", - "description": "Schema for getting page content in markdown." - }, - "BrowserGetStateAction": { - "properties": { - "kind": { - "type": "string", - "const": "BrowserGetStateAction", - "title": "Kind", - "default": "BrowserGetStateAction" - }, - "include_screenshot": { - "type": "boolean", - "title": "Include Screenshot", - "description": "Whether to include a screenshot of the current page. Default: False", - "default": false - } - }, - "additionalProperties": false, - "type": "object", - "title": "BrowserGetStateAction", - "description": "Schema for getting browser state." - }, - "BrowserGoBackAction": { - "properties": { - "kind": { - "type": "string", - "const": "BrowserGoBackAction", - "title": "Kind", - "default": "BrowserGoBackAction" - } - }, - "additionalProperties": false, - "type": "object", - "title": "BrowserGoBackAction", - "description": "Schema for going back in browser history." - }, - "BrowserListTabsAction": { - "properties": { - "kind": { - "type": "string", - "const": "BrowserListTabsAction", - "title": "Kind", - "default": "BrowserListTabsAction" - } - }, - "additionalProperties": false, - "type": "object", - "title": "BrowserListTabsAction", - "description": "Schema for listing browser tabs." - }, - "BrowserNavigateAction": { - "properties": { - "kind": { - "type": "string", - "const": "BrowserNavigateAction", - "title": "Kind", - "default": "BrowserNavigateAction" - }, - "url": { - "type": "string", - "title": "Url", - "description": "The URL to navigate to" - }, - "new_tab": { - "type": "boolean", - "title": "New Tab", - "description": "Whether to open in a new tab. Default: False", - "default": false - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "url" - ], - "title": "BrowserNavigateAction", - "description": "Schema for browser navigation." - }, - "BrowserObservation": { - "properties": { - "kind": { - "type": "string", - "const": "BrowserObservation", - "title": "Kind", - "default": "BrowserObservation" - }, - "output": { - "type": "string", - "title": "Output", - "description": "The output message from the browser operation" - }, - "error": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Error", - "description": "Error message if any" - }, - "screenshot_data": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Screenshot Data", - "description": "Base64 screenshot data if available" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "output" - ], - "title": "BrowserObservation", - "description": "Base observation for browser operations." - }, - "BrowserScrollAction": { - "properties": { - "kind": { - "type": "string", - "const": "BrowserScrollAction", - "title": "Kind", - "default": "BrowserScrollAction" - }, - "direction": { - "type": "string", - "enum": [ - "up", - "down" - ], - "title": "Direction", - "description": "Direction to scroll. Options: 'up', 'down'. Default: 'down'", - "default": "down" - } - }, - "additionalProperties": false, - "type": "object", - "title": "BrowserScrollAction", - "description": "Schema for scrolling the page." - }, - "BrowserSwitchTabAction": { - "properties": { - "kind": { - "type": "string", - "const": "BrowserSwitchTabAction", - "title": "Kind", - "default": "BrowserSwitchTabAction" - }, - "tab_id": { - "type": "string", - "title": "Tab Id", - "description": "4 Character Tab ID of the tab to switch to (from browser_list_tabs)" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "tab_id" - ], - "title": "BrowserSwitchTabAction", - "description": "Schema for switching browser tabs." - }, - "BrowserTypeAction": { - "properties": { - "kind": { - "type": "string", - "const": "BrowserTypeAction", - "title": "Kind", - "default": "BrowserTypeAction" - }, - "index": { - "type": "integer", - "minimum": 0.0, - "title": "Index", - "description": "The index of the input element (from browser_get_state)" - }, - "text": { - "type": "string", - "title": "Text", - "description": "The text to type" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "index", - "text" - ], - "title": "BrowserTypeAction", - "description": "Schema for typing text into elements." - }, - "ChatCompletionCachedContent": { - "properties": { - "type": { - "type": "string", - "const": "ephemeral", - "title": "Type" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "type" - ], - "title": "ChatCompletionCachedContent" - }, - "ChatCompletionToolParam": { - "properties": { - "type": { - "anyOf": [ - { - "type": "string", - "const": "function" - }, - { - "type": "string" - } - ], - "title": "Type" - }, - "function": { - "$ref": "#/components/schemas/ChatCompletionToolParamFunctionChunk" - }, - "cache_control": { - "$ref": "#/components/schemas/ChatCompletionCachedContent" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "type", - "function" - ], - "title": "ChatCompletionToolParam" - }, - "ChatCompletionToolParamFunctionChunk": { - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "parameters": { - "additionalProperties": true, - "type": "object", - "title": "Parameters" - }, - "strict": { - "type": "boolean", - "title": "Strict" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "name" - ], - "title": "ChatCompletionToolParamFunctionChunk" - }, - "CmdOutputMetadata": { - "properties": { - "exit_code": { - "type": "integer", - "title": "Exit Code", - "description": "The exit code of the last executed command.", - "default": -1 - }, - "pid": { - "type": "integer", - "title": "Pid", - "description": "The process ID of the last executed command.", - "default": -1 - }, - "username": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Username", - "description": "The username of the current user." - }, - "hostname": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Hostname", - "description": "The hostname of the machine." - }, - "working_dir": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Working Dir", - "description": "The current working directory." - }, - "py_interpreter_path": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Py Interpreter Path", - "description": "The path to the current Python interpreter, if any." - }, - "prefix": { - "type": "string", - "title": "Prefix", - "description": "Prefix to add to command output", - "default": "" - }, - "suffix": { - "type": "string", - "title": "Suffix", - "description": "Suffix to add to command output", - "default": "" - } - }, - "type": "object", - "title": "CmdOutputMetadata", - "description": "Additional metadata captured from PS1" - }, - "Condensation": { - "properties": { - "kind": { - "type": "string", - "const": "Condensation", - "title": "Kind", - "default": "Condensation" - }, - "id": { - "type": "string", - "title": "Id", - "description": "Unique event id (ULID/UUID)" - }, - "timestamp": { - "type": "string", - "title": "Timestamp", - "description": "Event timestamp" - }, - "source": { - "type": "string", - "enum": [ - "agent", - "user", - "environment" - ], - "title": "Source", - "default": "environment" - }, - "forgotten_event_ids": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Forgotten Event Ids", - "description": "The IDs of the events that are being forgotten (removed from the `View` given to the LLM)." - }, - "summary": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Summary", - "description": "An optional summary of the events being forgotten." - }, - "summary_offset": { - "anyOf": [ - { - "type": "integer", - "minimum": 0.0 - }, - { - "type": "null" - } - ], - "title": "Summary Offset", - "description": "An optional offset to the start of the resulting view indicating where the summary should be inserted." - } - }, - "additionalProperties": false, - "type": "object", - "title": "Condensation", - "description": "This action indicates a condensation of the conversation history is happening." - }, - "CondensationRequest": { - "properties": { - "kind": { - "type": "string", - "const": "CondensationRequest", - "title": "Kind", - "default": "CondensationRequest" - }, - "id": { - "type": "string", - "title": "Id", - "description": "Unique event id (ULID/UUID)" - }, - "timestamp": { - "type": "string", - "title": "Timestamp", - "description": "Event timestamp" - }, - "source": { - "type": "string", - "enum": [ - "agent", - "user", - "environment" - ], - "title": "Source", - "default": "environment" - } - }, - "additionalProperties": false, - "type": "object", - "title": "CondensationRequest", - "description": "This action is used to request a condensation of the conversation history.\n\nAttributes:\n action (str): The action type, namely ActionType.CONDENSATION_REQUEST." - }, - "CondensationSummaryEvent": { - "properties": { - "kind": { - "type": "string", - "const": "CondensationSummaryEvent", - "title": "Kind", - "default": "CondensationSummaryEvent" - }, - "id": { - "type": "string", - "title": "Id", - "description": "Unique event id (ULID/UUID)" - }, - "timestamp": { - "type": "string", - "title": "Timestamp", - "description": "Event timestamp" - }, - "source": { - "type": "string", - "enum": [ - "agent", - "user", - "environment" - ], - "title": "Source", - "default": "environment" - }, - "summary": { - "type": "string", - "title": "Summary" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "summary" - ], - "title": "CondensationSummaryEvent", - "description": "This event represents a summary generated by a condenser." - }, - "ConfirmRisky": { - "properties": { - "kind": { - "type": "string", - "const": "ConfirmRisky", - "title": "Kind", - "default": "ConfirmRisky" - }, - "threshold": { - "$ref": "#/components/schemas/SecurityRisk", - "default": "HIGH" - }, - "confirm_unknown": { - "type": "boolean", - "title": "Confirm Unknown", - "default": true - } - }, - "type": "object", - "title": "ConfirmRisky" - }, - "ConfirmationResponseRequest": { - "properties": { - "accept": { - "type": "boolean", - "title": "Accept" - }, - "reason": { - "type": "string", - "title": "Reason", - "default": "User rejected the action." - } - }, - "type": "object", - "required": [ - "accept" - ], - "title": "ConfirmationResponseRequest", - "description": "Payload to accept or reject a pending action." - }, - "ConversationInfo": { - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Id", - "description": "Unique conversation ID" - }, - "agent": { - "$ref": "#/components/schemas/Agent-Output", - "description": "The agent running in the conversation. This is persisted to allow resuming conversations and check agent configuration to handle e.g., tool changes, LLM changes, etc." - }, - "workspace": { - "$ref": "#/components/schemas/BaseWorkspace" - }, - "persistence_dir": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Persistence Dir", - "description": "Directory for persisting conversation state and events. If None, conversation will not be persisted.", - "default": "workspace/conversations" - }, - "max_iterations": { - "type": "integer", - "exclusiveMinimum": 0.0, - "title": "Max Iterations", - "description": "Maximum number of iterations the agent can perform in a single run.", - "default": 500 - }, - "stuck_detection": { - "type": "boolean", - "title": "Stuck Detection", - "description": "Whether to enable stuck detection for the agent.", - "default": true - }, - "agent_status": { - "$ref": "#/components/schemas/AgentExecutionStatus", - "default": "idle" - }, - "confirmation_policy": { - "$ref": "#/components/schemas/ConfirmationPolicyBase" - }, - "activated_knowledge_skills": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Activated Knowledge Skills", - "description": "List of activated knowledge skills name" - }, - "stats": { - "$ref": "#/components/schemas/ConversationStats-Output", - "description": "Conversation statistics for tracking LLM metrics" - }, - "secrets_manager": { - "$ref": "#/components/schemas/SecretsManager-Output", - "description": "Manager for handling secrets and sensitive data" - }, - "title": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Title", - "description": "User-defined title for the conversation" - }, - "metrics": { - "anyOf": [ - { - "$ref": "#/components/schemas/MetricsSnapshot" - }, - { - "type": "null" - } - ] - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "Created At" - }, - "updated_at": { - "type": "string", - "format": "date-time", - "title": "Updated At" - } - }, - "type": "object", - "required": [ - "id", - "agent", - "workspace" - ], - "title": "ConversationInfo", - "description": "Information about a conversation running locally without a Runtime sandbox." - }, - "ConversationPage": { - "properties": { - "items": { - "items": { - "$ref": "#/components/schemas/ConversationInfo" - }, - "type": "array", - "title": "Items" - }, - "next_page_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Next Page Id" - } - }, - "type": "object", - "required": [ - "items" - ], - "title": "ConversationPage" - }, - "ConversationSortOrder": { - "type": "string", - "enum": [ - "CREATED_AT", - "UPDATED_AT", - "CREATED_AT_DESC", - "UPDATED_AT_DESC" - ], - "title": "ConversationSortOrder", - "description": "Enum for conversation sorting options." - }, - "ConversationStateUpdateEvent": { - "properties": { - "kind": { - "type": "string", - "const": "ConversationStateUpdateEvent", - "title": "Kind", - "default": "ConversationStateUpdateEvent" - }, - "id": { - "type": "string", - "title": "Id", - "description": "Unique event id (ULID/UUID)" - }, - "timestamp": { - "type": "string", - "title": "Timestamp", - "description": "Event timestamp" - }, - "source": { - "type": "string", - "enum": [ - "agent", - "user", - "environment" - ], - "title": "Source", - "default": "environment" - }, - "key": { - "type": "string", - "title": "Key", - "description": "Unique key for this state update event" - }, - "value": { - "title": "Value", - "description": "Serialized conversation state updates" - } - }, - "additionalProperties": false, - "type": "object", - "title": "ConversationStateUpdateEvent", - "description": "Event that contains conversation state updates.\n\nThis event is sent via websocket whenever the conversation state changes,\nallowing remote clients to stay in sync without making REST API calls.\n\nAll fields are serialized versions of the corresponding ConversationState fields\nto ensure compatibility with websocket transmission." - }, - "ConversationStats-Output": { - "properties": { - "usage_to_metrics": { - "additionalProperties": { - "$ref": "#/components/schemas/Metrics" - }, - "type": "object", - "title": "Usage To Metrics", - "description": "Active usage metrics tracked by the registry." - } - }, - "type": "object", - "title": "ConversationStats", - "description": "Track per-LLM usage metrics observed during conversations." - }, - "Cost": { - "properties": { - "model": { - "type": "string", - "title": "Model" - }, - "cost": { - "type": "number", - "minimum": 0.0, - "title": "Cost", - "description": "Cost must be non-negative" - }, - "timestamp": { - "type": "number", - "title": "Timestamp" - } - }, - "type": "object", - "required": [ - "model", - "cost" - ], - "title": "Cost" - }, - "DesktopUrlResponse": { - "properties": { - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Url" - } - }, - "type": "object", - "required": [ - "url" - ], - "title": "DesktopUrlResponse", - "description": "Response model for Desktop URL." - }, - "EventPage": { - "properties": { - "items": { - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/Condensation" - }, - { - "$ref": "#/components/schemas/CondensationRequest" - }, - { - "$ref": "#/components/schemas/CondensationSummaryEvent" - }, - { - "$ref": "#/components/schemas/ConversationStateUpdateEvent" - }, - { - "$ref": "#/components/schemas/ActionEvent" - }, - { - "$ref": "#/components/schemas/MessageEvent" - }, - { - "$ref": "#/components/schemas/AgentErrorEvent" - }, - { - "$ref": "#/components/schemas/ObservationEvent" - }, - { - "$ref": "#/components/schemas/UserRejectObservation" - }, - { - "$ref": "#/components/schemas/SystemPromptEvent" - }, - { - "$ref": "#/components/schemas/PauseEvent" - } - ], - "title": "Event", - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__sdk__event__condenser__Condensation-Output__1": "#/components/schemas/Condensation", - "openhands__sdk__event__condenser__CondensationRequest-Output__1": "#/components/schemas/CondensationRequest", - "openhands__sdk__event__condenser__CondensationSummaryEvent-Output__1": "#/components/schemas/CondensationSummaryEvent", - "openhands__sdk__event__conversation_state__ConversationStateUpdateEvent-Output__1": "#/components/schemas/ConversationStateUpdateEvent", - "openhands__sdk__event__llm_convertible__action__ActionEvent-Output__1": "#/components/schemas/ActionEvent", - "openhands__sdk__event__llm_convertible__message__MessageEvent-Output__1": "#/components/schemas/MessageEvent", - "openhands__sdk__event__llm_convertible__observation__AgentErrorEvent-Output__1": "#/components/schemas/AgentErrorEvent", - "openhands__sdk__event__llm_convertible__observation__ObservationEvent-Output__1": "#/components/schemas/ObservationEvent", - "openhands__sdk__event__llm_convertible__observation__UserRejectObservation-Output__1": "#/components/schemas/UserRejectObservation", - "openhands__sdk__event__llm_convertible__system__SystemPromptEvent-Output__1": "#/components/schemas/SystemPromptEvent", - "openhands__sdk__event__user_action__PauseEvent-Output__1": "#/components/schemas/PauseEvent" - } - } - }, - "type": "array", - "title": "Items" - }, - "next_page_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Next Page Id" - } - }, - "type": "object", - "required": [ - "items" - ], - "title": "EventPage" - }, - "EventSortOrder": { - "type": "string", - "enum": [ - "TIMESTAMP", - "TIMESTAMP_DESC" - ], - "title": "EventSortOrder", - "description": "Enum for event sorting options." - }, - "ExecuteBashAction": { - "properties": { - "kind": { - "type": "string", - "const": "ExecuteBashAction", - "title": "Kind", - "default": "ExecuteBashAction" - }, - "command": { - "type": "string", - "title": "Command", - "description": "The bash command to execute. Can be empty string to view additional logs when previous exit code is `-1`. Can be `C-c` (Ctrl+C) to interrupt the currently running process. Note: You can only execute one bash command at a time. If you need to run multiple commands sequentially, you can use `&&` or `;` to chain them together." - }, - "is_input": { - "type": "boolean", - "title": "Is Input", - "description": "If True, the command is an input to the running process. If False, the command is a bash command to be executed in the terminal. Default is False.", - "default": false - }, - "timeout": { - "anyOf": [ - { - "type": "number", - "minimum": 0.0 - }, - { - "type": "null" - } - ], - "title": "Timeout", - "description": "Optional. Sets a maximum time limit (in seconds) for running the command. If the command takes longer than this limit, you’ll be asked whether to continue or stop it. If you don’t set a value, the command will instead pause and ask for confirmation when it produces no new output for 30 seconds. Use a higher value if the command is expected to take a long time (like installation or testing), or if it has a known fixed duration (like sleep)." - }, - "reset": { - "type": "boolean", - "title": "Reset", - "description": "If True, reset the terminal by creating a new session. Use this only when the terminal becomes unresponsive. Note that all previously set environment variables and session state will be lost after reset. Cannot be used with is_input=True.", - "default": false - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "command" - ], - "title": "ExecuteBashAction", - "description": "Schema for bash command execution." - }, - "ExecuteBashObservation": { - "properties": { - "kind": { - "type": "string", - "const": "ExecuteBashObservation", - "title": "Kind", - "default": "ExecuteBashObservation" - }, - "output": { - "type": "string", - "title": "Output", - "description": "The raw output from the tool." - }, - "command": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Command", - "description": "The bash command that was executed. Can be empty string if the observation is from a previous command that hit soft timeout and is not yet finished." - }, - "exit_code": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Exit Code", - "description": "The exit code of the command. -1 indicates the process hit the soft timeout and is not yet finished." - }, - "error": { - "type": "boolean", - "title": "Error", - "description": "Whether there was an error during command execution.", - "default": false - }, - "timeout": { - "type": "boolean", - "title": "Timeout", - "description": "Whether the command execution timed out.", - "default": false - }, - "metadata": { - "$ref": "#/components/schemas/CmdOutputMetadata", - "description": "Additional metadata captured from PS1 after command execution." - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "output" - ], - "title": "ExecuteBashObservation", - "description": "A ToolResult that can be rendered as a CLI output." - }, - "ExecuteBashRequest": { - "properties": { - "command": { - "type": "string", - "title": "Command", - "description": "The bash command to execute" - }, - "cwd": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Cwd", - "description": "The current working directory" - }, - "timeout": { - "type": "integer", - "title": "Timeout", - "description": "The max number of seconds a command may be permitted to run.", - "default": 300 - } - }, - "type": "object", - "required": [ - "command" - ], - "title": "ExecuteBashRequest" - }, - "FileEditorAction": { - "properties": { - "kind": { - "type": "string", - "const": "FileEditorAction", - "title": "Kind", - "default": "FileEditorAction" - }, - "command": { - "type": "string", - "enum": [ - "view", - "create", - "str_replace", - "insert", - "undo_edit" - ], - "title": "Command", - "description": "The commands to run. Allowed options are: `view`, `create`, `str_replace`, `insert`, `undo_edit`." - }, - "path": { - "type": "string", - "title": "Path", - "description": "Absolute path to file or directory." - }, - "file_text": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "File Text", - "description": "Required parameter of `create` command, with the content of the file to be created." - }, - "old_str": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Old Str", - "description": "Required parameter of `str_replace` command containing the string in `path` to replace." - }, - "new_str": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "New Str", - "description": "Optional parameter of `str_replace` command containing the new string (if not given, no string will be added). Required parameter of `insert` command containing the string to insert." - }, - "insert_line": { - "anyOf": [ - { - "type": "integer", - "minimum": 0.0 - }, - { - "type": "null" - } - ], - "title": "Insert Line", - "description": "Required parameter of `insert` command. The `new_str` will be inserted AFTER the line `insert_line` of `path`." - }, - "view_range": { - "anyOf": [ - { - "items": { - "type": "integer" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "View Range", - "description": "Optional parameter of `view` command when `path` points to a file. If none is given, the full file is shown. If provided, the file will be shown in the indicated line number range, e.g. [11, 12] will show lines 11 and 12. Indexing at 1 to start. Setting `[start_line, -1]` shows all lines from `start_line` to the end of the file." - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "command", - "path" - ], - "title": "FileEditorAction", - "description": "Schema for file editor operations." - }, - "FileEditorObservation": { - "properties": { - "kind": { - "type": "string", - "const": "FileEditorObservation", - "title": "Kind", - "default": "FileEditorObservation" - }, - "command": { - "type": "string", - "enum": [ - "view", - "create", - "str_replace", - "insert", - "undo_edit" - ], - "title": "Command", - "description": "The commands to run. Allowed options are: `view`, `create`, `str_replace`, `insert`, `undo_edit`." - }, - "output": { - "type": "string", - "title": "Output", - "description": "The output message from the tool for the LLM to see.", - "default": "" - }, - "path": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Path", - "description": "The file path that was edited." - }, - "prev_exist": { - "type": "boolean", - "title": "Prev Exist", - "description": "Indicates if the file previously existed. If not, it was created.", - "default": true - }, - "old_content": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Old Content", - "description": "The content of the file before the edit." - }, - "new_content": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "New Content", - "description": "The content of the file after the edit." - }, - "error": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Error", - "description": "Error message if any." - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "command" - ], - "title": "FileEditorObservation", - "description": "A ToolResult that can be rendered as a CLI output." - }, - "FinishAction": { - "properties": { - "kind": { - "type": "string", - "const": "FinishAction", - "title": "Kind", - "default": "FinishAction" - }, - "message": { - "type": "string", - "title": "Message", - "description": "Final message to send to the user." - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "message" - ], - "title": "FinishAction" - }, - "FinishObservation": { - "properties": { - "kind": { - "type": "string", - "const": "FinishObservation", - "title": "Kind", - "default": "FinishObservation" - }, - "message": { - "type": "string", - "title": "Message", - "description": "Final message sent to the user." - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "message" - ], - "title": "FinishObservation" - }, - "GenerateTitleRequest": { - "properties": { - "max_length": { - "type": "integer", - "maximum": 200.0, - "minimum": 1.0, - "title": "Max Length", - "description": "Maximum length of the generated title", - "default": 50 - }, - "llm": { - "anyOf": [ - { - "$ref": "#/components/schemas/LLM" - }, - { - "type": "null" - } - ], - "description": "Optional LLM to use for title generation" - } - }, - "type": "object", - "title": "GenerateTitleRequest", - "description": "Payload to generate a title for a conversation." - }, - "GenerateTitleResponse": { - "properties": { - "title": { - "type": "string", - "title": "Title", - "description": "The generated title for the conversation" - } - }, - "type": "object", - "required": [ - "title" - ], - "title": "GenerateTitleResponse", - "description": "Response containing the generated conversation title." - }, - "HTTPValidationError": { - "properties": { - "detail": { - "items": { - "$ref": "#/components/schemas/ValidationError" - }, - "type": "array", - "title": "Detail" - } - }, - "type": "object", - "title": "HTTPValidationError" - }, - "ImageContent": { - "properties": { - "cache_prompt": { - "type": "boolean", - "title": "Cache Prompt", - "default": false - }, - "type": { - "type": "string", - "const": "image", - "title": "Type", - "default": "image" - }, - "image_urls": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Image Urls" - } - }, - "type": "object", - "required": [ - "image_urls" - ], - "title": "ImageContent" - }, - "InputMetadata": { - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Name of the input parameter" - }, - "description": { - "type": "string", - "title": "Description", - "description": "Description of the input parameter" - } - }, - "type": "object", - "required": [ - "name", - "description" - ], - "title": "InputMetadata", - "description": "Metadata for task skill inputs." - }, - "KeywordTrigger": { - "properties": { - "type": { - "type": "string", - "const": "keyword", - "title": "Type", - "default": "keyword" - }, - "keywords": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Keywords" - } - }, - "type": "object", - "required": [ - "keywords" - ], - "title": "KeywordTrigger", - "description": "Trigger for keyword-based skills.\n\nThese skills are activated when specific keywords appear in the user's query." - }, - "LLM": { - "properties": { - "model": { - "type": "string", - "title": "Model", - "description": "Model name.", - "default": "claude-sonnet-4-20250514" - }, - "api_key": { - "anyOf": [ - { - "type": "string", - "format": "password", - "writeOnly": true - }, - { - "type": "null" - } - ], - "title": "Api Key", - "description": "API key." - }, - "base_url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Base Url", - "description": "Custom base URL." - }, - "api_version": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Api Version", - "description": "API version (e.g., Azure)." - }, - "aws_access_key_id": { - "anyOf": [ - { - "type": "string", - "format": "password", - "writeOnly": true - }, - { - "type": "null" - } - ], - "title": "Aws Access Key Id" - }, - "aws_secret_access_key": { - "anyOf": [ - { - "type": "string", - "format": "password", - "writeOnly": true - }, - { - "type": "null" - } - ], - "title": "Aws Secret Access Key" - }, - "aws_region_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Aws Region Name" - }, - "openrouter_site_url": { - "type": "string", - "title": "Openrouter Site Url", - "default": "https://docs.all-hands.dev/" - }, - "openrouter_app_name": { - "type": "string", - "title": "Openrouter App Name", - "default": "OpenHands" - }, - "num_retries": { - "type": "integer", - "minimum": 0.0, - "title": "Num Retries", - "default": 5 - }, - "retry_multiplier": { - "type": "number", - "minimum": 0.0, - "title": "Retry Multiplier", - "default": 8.0 - }, - "retry_min_wait": { - "type": "integer", - "minimum": 0.0, - "title": "Retry Min Wait", - "default": 8 - }, - "retry_max_wait": { - "type": "integer", - "minimum": 0.0, - "title": "Retry Max Wait", - "default": 64 - }, - "timeout": { - "anyOf": [ - { - "type": "integer", - "minimum": 0.0 - }, - { - "type": "null" - } - ], - "title": "Timeout", - "description": "HTTP timeout (s)." - }, - "max_message_chars": { - "type": "integer", - "minimum": 1.0, - "title": "Max Message Chars", - "description": "Approx max chars in each event/content sent to the LLM.", - "default": 30000 - }, - "temperature": { - "anyOf": [ - { - "type": "number", - "minimum": 0.0 - }, - { - "type": "null" - } - ], - "title": "Temperature", - "default": 0.0 - }, - "top_p": { - "anyOf": [ - { - "type": "number", - "maximum": 1.0, - "minimum": 0.0 - }, - { - "type": "null" - } - ], - "title": "Top P", - "default": 1.0 - }, - "top_k": { - "anyOf": [ - { - "type": "number", - "minimum": 0.0 - }, - { - "type": "null" - } - ], - "title": "Top K" - }, - "custom_llm_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Custom Llm Provider" - }, - "max_input_tokens": { - "anyOf": [ - { - "type": "integer", - "minimum": 1.0 - }, - { - "type": "null" - } - ], - "title": "Max Input Tokens", - "description": "The maximum number of input tokens. Note that this is currently unused, and the value at runtime is actually the total tokens in OpenAI (e.g. 128,000 tokens for GPT-4)." - }, - "max_output_tokens": { - "anyOf": [ - { - "type": "integer", - "minimum": 1.0 - }, - { - "type": "null" - } - ], - "title": "Max Output Tokens", - "description": "The maximum number of output tokens. This is sent to the LLM." - }, - "input_cost_per_token": { - "anyOf": [ - { - "type": "number", - "minimum": 0.0 - }, - { - "type": "null" - } - ], - "title": "Input Cost Per Token", - "description": "The cost per input token. This will available in logs for user." - }, - "output_cost_per_token": { - "anyOf": [ - { - "type": "number", - "minimum": 0.0 - }, - { - "type": "null" - } - ], - "title": "Output Cost Per Token", - "description": "The cost per output token. This will available in logs for user." - }, - "ollama_base_url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Ollama Base Url" - }, - "drop_params": { - "type": "boolean", - "title": "Drop Params", - "default": true - }, - "modify_params": { - "type": "boolean", - "title": "Modify Params", - "description": "Modify params allows litellm to do transformations like adding a default message, when a message is empty.", - "default": true - }, - "disable_vision": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Disable Vision", - "description": "If model is vision capable, this option allows to disable image processing (useful for cost reduction)." - }, - "disable_stop_word": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Disable Stop Word", - "description": "Disable using of stop word.", - "default": false - }, - "caching_prompt": { - "type": "boolean", - "title": "Caching Prompt", - "description": "Enable caching of prompts.", - "default": true - }, - "log_completions": { - "type": "boolean", - "title": "Log Completions", - "description": "Enable logging of completions.", - "default": false - }, - "log_completions_folder": { - "type": "string", - "title": "Log Completions Folder", - "description": "The folder to log LLM completions to. Required if log_completions is True.", - "default": "logs/completions" - }, - "custom_tokenizer": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Custom Tokenizer", - "description": "A custom tokenizer to use for token counting." - }, - "native_tool_calling": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Native Tool Calling", - "description": "Whether to use native tool calling if supported by the model. Can be True, False, or not set." - }, - "reasoning_effort": { - "anyOf": [ - { - "type": "string", - "enum": [ - "low", - "medium", - "high", - "none" - ] - }, - { - "type": "null" - } - ], - "title": "Reasoning Effort", - "description": "The effort to put into reasoning. This is a string that can be one of 'low', 'medium', 'high', or 'none'. Can apply to all reasoning models." - }, - "enable_encrypted_reasoning": { - "type": "boolean", - "title": "Enable Encrypted Reasoning", - "description": "If True, ask for ['reasoning.encrypted_content'] in Responses API include.", - "default": false - }, - "extended_thinking_budget": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Extended Thinking Budget", - "description": "The budget tokens for extended thinking, supported by Anthropic models.", - "default": 200000 - }, - "seed": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Seed", - "description": "The seed to use for random number generation." - }, - "safety_settings": { - "anyOf": [ - { - "items": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Safety Settings", - "description": "Safety settings for models that support them (like Mistral AI and Gemini)" - }, - "usage_id": { - "type": "string", - "title": "Usage Id", - "description": "Unique usage identifier for the LLM. Used for registry lookups, telemetry, and spend tracking.", - "default": "default" - }, - "metadata": { - "additionalProperties": true, - "type": "object", - "title": "Metadata", - "description": "Additional metadata for the LLM instance. Example structure: {'trace_version': '1.0.0', 'tags': ['model:gpt-4', 'agent:my-agent'], 'session_id': 'session-123', 'trace_user_id': 'user-456'}" - }, - "OVERRIDE_ON_SERIALIZE": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Override On Serialize", - "default": [ - "api_key", - "aws_access_key_id", - "aws_secret_access_key" - ] - } - }, - "additionalProperties": false, - "type": "object", - "title": "LLM", - "description": "Refactored LLM: simple `completion()`, centralized Telemetry, tiny helpers." - }, - "LLMSummarizingCondenser": { - "properties": { - "kind": { - "type": "string", - "const": "LLMSummarizingCondenser", - "title": "Kind", - "default": "LLMSummarizingCondenser" - }, - "llm": { - "$ref": "#/components/schemas/LLM" - }, - "max_size": { - "type": "integer", - "exclusiveMinimum": 0.0, - "title": "Max Size", - "default": 120 - }, - "keep_first": { - "type": "integer", - "minimum": 0.0, - "title": "Keep First", - "default": 4 - } - }, - "type": "object", - "required": [ - "llm" - ], - "title": "LLMSummarizingCondenser" - }, - "LocalWorkspace": { - "properties": { - "kind": { - "type": "string", - "const": "LocalWorkspace", - "title": "Kind", - "default": "LocalWorkspace" - }, - "working_dir": { - "type": "string", - "title": "Working Dir", - "description": "The working directory for agent operations and tool execution." - } - }, - "type": "object", - "required": [ - "working_dir" - ], - "title": "LocalWorkspace", - "description": "Mixin providing local workspace operations." - }, - "LookupSecret": { - "properties": { - "kind": { - "type": "string", - "const": "LookupSecret", - "title": "Kind", - "default": "LookupSecret" - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Description", - "description": "Optional description for this secret" - }, - "url": { - "type": "string", - "title": "Url" - }, - "headers": { - "additionalProperties": { - "type": "string" - }, - "type": "object", - "title": "Headers" - } - }, - "type": "object", - "required": [ - "url" - ], - "title": "LookupSecret", - "description": "A secret looked up from some external url" - }, - "MCPToolAction": { - "properties": { - "kind": { - "type": "string", - "const": "MCPToolAction", - "title": "Kind", - "default": "MCPToolAction" - }, - "data": { - "additionalProperties": true, - "type": "object", - "title": "Data", - "description": "Dynamic data fields from the tool call" - } - }, - "additionalProperties": false, - "type": "object", - "title": "MCPToolAction", - "description": "Schema for MCP input action.\n\nIt is just a thin wrapper around raw JSON and does\nnot do any validation.\n\nValidation will be performed by MCPTool.__call__\nby constructing dynamically created Pydantic model\nfrom the MCP tool input schema." - }, - "MCPToolObservation": { - "properties": { - "kind": { - "type": "string", - "const": "MCPToolObservation", - "title": "Kind", - "default": "MCPToolObservation" - }, - "content": { - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/TextContent" - }, - { - "$ref": "#/components/schemas/ImageContent" - } - ] - }, - "type": "array", - "title": "Content", - "description": "Content returned from the MCP tool converted to LLM Ready TextContent or ImageContent" - }, - "is_error": { - "type": "boolean", - "title": "Is Error", - "description": "Whether the call resulted in an error", - "default": false - }, - "tool_name": { - "type": "string", - "title": "Tool Name", - "description": "Name of the tool that was called" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "tool_name" - ], - "title": "MCPToolObservation", - "description": "Observation from MCP tool execution." - }, - "Message": { - "properties": { - "role": { - "type": "string", - "enum": [ - "user", - "system", - "assistant", - "tool" - ], - "title": "Role" - }, - "content": { - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/TextContent" - }, - { - "$ref": "#/components/schemas/ImageContent" - } - ] - }, - "type": "array", - "title": "Content" - }, - "cache_enabled": { - "type": "boolean", - "title": "Cache Enabled", - "default": false - }, - "vision_enabled": { - "type": "boolean", - "title": "Vision Enabled", - "default": false - }, - "function_calling_enabled": { - "type": "boolean", - "title": "Function Calling Enabled", - "default": false - }, - "tool_calls": { - "anyOf": [ - { - "items": { - "$ref": "#/components/schemas/MessageToolCall" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Tool Calls" - }, - "tool_call_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Tool Call Id" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Name" - }, - "force_string_serializer": { - "type": "boolean", - "title": "Force String Serializer", - "default": false - }, - "reasoning_content": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Reasoning Content", - "description": "Intermediate reasoning/thinking content from reasoning models" - }, - "thinking_blocks": { - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/ThinkingBlock" - }, - { - "$ref": "#/components/schemas/RedactedThinkingBlock" - } - ] - }, - "type": "array", - "title": "Thinking Blocks", - "description": "Raw Anthropic thinking blocks for extended thinking feature" - }, - "responses_reasoning_item": { - "anyOf": [ - { - "$ref": "#/components/schemas/ReasoningItemModel" - }, - { - "type": "null" - } - ], - "description": "OpenAI Responses reasoning item from model output" - } - }, - "type": "object", - "required": [ - "role" - ], - "title": "Message" - }, - "MessageEvent": { - "properties": { - "kind": { - "type": "string", - "const": "MessageEvent", - "title": "Kind", - "default": "MessageEvent" - }, - "id": { - "type": "string", - "title": "Id", - "description": "Unique event id (ULID/UUID)" - }, - "timestamp": { - "type": "string", - "title": "Timestamp", - "description": "Event timestamp" - }, - "source": { - "type": "string", - "enum": [ - "agent", - "user", - "environment" - ], - "title": "Source" - }, - "llm_message": { - "$ref": "#/components/schemas/Message", - "description": "The exact LLM message for this message event" - }, - "activated_skills": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Activated Skills", - "description": "List of activated skill name" - }, - "extended_content": { - "items": { - "$ref": "#/components/schemas/TextContent" - }, - "type": "array", - "title": "Extended Content", - "description": "List of content added by agent context" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "source", - "llm_message" - ], - "title": "MessageEvent", - "description": "Message from either agent or user.\n\nThis is originally the \"MessageAction\", but it suppose not to be tool call." - }, - "MessageToolCall": { - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Canonical tool call id" - }, - "name": { - "type": "string", - "title": "Name", - "description": "Tool/function name" - }, - "arguments": { - "type": "string", - "title": "Arguments", - "description": "JSON string of arguments" - }, - "origin": { - "type": "string", - "enum": [ - "completion", - "responses" - ], - "title": "Origin", - "description": "Originating API family" - } - }, - "type": "object", - "required": [ - "id", - "name", - "arguments", - "origin" - ], - "title": "MessageToolCall", - "description": "Transport-agnostic tool call representation.\n\nOne canonical id is used for linking across actions/observations and\nfor Responses function_call_output call_id." - }, - "Metrics": { - "properties": { - "model_name": { - "type": "string", - "title": "Model Name", - "description": "Name of the model", - "default": "default" - }, - "accumulated_cost": { - "type": "number", - "minimum": 0.0, - "title": "Accumulated Cost", - "description": "Total accumulated cost, must be non-negative", - "default": 0.0 - }, - "max_budget_per_task": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "title": "Max Budget Per Task", - "description": "Maximum budget per task" - }, - "accumulated_token_usage": { - "anyOf": [ - { - "$ref": "#/components/schemas/TokenUsage" - }, - { - "type": "null" - } - ], - "description": "Accumulated token usage across all calls" - }, - "costs": { - "items": { - "$ref": "#/components/schemas/Cost" - }, - "type": "array", - "title": "Costs", - "description": "List of individual costs" - }, - "response_latencies": { - "items": { - "$ref": "#/components/schemas/ResponseLatency" - }, - "type": "array", - "title": "Response Latencies", - "description": "List of response latencies" - }, - "token_usages": { - "items": { - "$ref": "#/components/schemas/TokenUsage" - }, - "type": "array", - "title": "Token Usages", - "description": "List of token usage records" - } - }, - "type": "object", - "title": "Metrics", - "description": "Metrics class can record various metrics during running and evaluation.\nWe track:\n - accumulated_cost and costs\n - max_budget_per_task (budget limit)\n - A list of ResponseLatency\n - A list of TokenUsage (one per call)." - }, - "MetricsSnapshot": { - "properties": { - "model_name": { - "type": "string", - "title": "Model Name", - "description": "Name of the model", - "default": "default" - }, - "accumulated_cost": { - "type": "number", - "minimum": 0.0, - "title": "Accumulated Cost", - "description": "Total accumulated cost, must be non-negative", - "default": 0.0 - }, - "max_budget_per_task": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "title": "Max Budget Per Task", - "description": "Maximum budget per task" - }, - "accumulated_token_usage": { - "anyOf": [ - { - "$ref": "#/components/schemas/TokenUsage" - }, - { - "type": "null" - } - ], - "description": "Accumulated token usage across all calls" - } - }, - "type": "object", - "title": "MetricsSnapshot", - "description": "A snapshot of metrics at a point in time.\n\nDoes not include lists of individual costs, latencies, or token usages." - }, - "NeverConfirm": { - "properties": { - "kind": { - "type": "string", - "const": "NeverConfirm", - "title": "Kind", - "default": "NeverConfirm" - } - }, - "type": "object", - "title": "NeverConfirm" - }, - "NoOpCondenser": { - "properties": { - "kind": { - "type": "string", - "const": "NoOpCondenser", - "title": "Kind", - "default": "NoOpCondenser" - } - }, - "type": "object", - "title": "NoOpCondenser", - "description": "Simple condenser that returns a view un-manipulated.\n\nPrimarily intended for testing purposes." - }, - "ObservationEvent": { - "properties": { - "kind": { - "type": "string", - "const": "ObservationEvent", - "title": "Kind", - "default": "ObservationEvent" - }, - "id": { - "type": "string", - "title": "Id", - "description": "Unique event id (ULID/UUID)" - }, - "timestamp": { - "type": "string", - "title": "Timestamp", - "description": "Event timestamp" - }, - "source": { - "type": "string", - "enum": [ - "agent", - "user", - "environment" - ], - "title": "Source", - "default": "environment" - }, - "tool_name": { - "type": "string", - "title": "Tool Name", - "description": "The tool name that this observation is responding to" - }, - "tool_call_id": { - "type": "string", - "title": "Tool Call Id", - "description": "The tool call id that this observation is responding to" - }, - "observation": { - "$ref": "#/components/schemas/Observation" - }, - "action_id": { - "type": "string", - "title": "Action Id", - "description": "The action id that this observation is responding to" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "tool_name", - "tool_call_id", - "observation", - "action_id" - ], - "title": "ObservationEvent" - }, - "PauseEvent": { - "properties": { - "kind": { - "type": "string", - "const": "PauseEvent", - "title": "Kind", - "default": "PauseEvent" - }, - "id": { - "type": "string", - "title": "Id", - "description": "Unique event id (ULID/UUID)" - }, - "timestamp": { - "type": "string", - "title": "Timestamp", - "description": "Event timestamp" - }, - "source": { - "type": "string", - "enum": [ - "agent", - "user", - "environment" - ], - "title": "Source", - "default": "user" - } - }, - "additionalProperties": false, - "type": "object", - "title": "PauseEvent", - "description": "Event indicating that the agent execution was paused by user request." - }, - "PipelineCondenser-Output": { - "properties": { - "kind": { - "type": "string", - "const": "PipelineCondenser", - "title": "Kind", - "default": "PipelineCondenser" - }, - "condensers": { - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/LLMSummarizingCondenser" - }, - { - "$ref": "#/components/schemas/NoOpCondenser" - }, - { - "$ref": "#/components/schemas/PipelineCondenser-Output" - } - ], - "title": "CondenserBase", - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__sdk__context__condenser__llm_summarizing_condenser__LLMSummarizingCondenser-Output__1": "#/components/schemas/LLMSummarizingCondenser", - "openhands__sdk__context__condenser__no_op_condenser__NoOpCondenser-Output__1": "#/components/schemas/NoOpCondenser", - "openhands__sdk__context__condenser__pipeline_condenser__PipelineCondenser-Output__1": "#/components/schemas/PipelineCondenser-Output" - } - } - }, - "type": "array", - "title": "Condensers" - } - }, - "type": "object", - "required": [ - "condensers" - ], - "title": "PipelineCondenser", - "description": "A condenser that applies a sequence of condensers in order.\n\nAll condensers are defined primarily by their `condense` method, which takes a\n`View` and returns either a new `View` or a `Condensation` event. That means we can\nchain multiple condensers together by passing `View`s along and exiting early if any\ncondenser returns a `Condensation`.\n\nFor example:\n\n # Use the pipeline condenser to chain multiple other condensers together\n condenser = PipelineCondenser(condensers=[\n CondenserA(...),\n CondenserB(...),\n CondenserC(...),\n ])\n\n result = condenser.condense(view)\n\n # Doing the same thing without the pipeline condenser requires more boilerplate\n # for the monadic chaining\n other_result = view\n\n if isinstance(other_result, View):\n other_result = CondenserA(...).condense(other_result)\n\n if isinstance(other_result, View):\n other_result = CondenserB(...).condense(other_result)\n\n if isinstance(other_result, View):\n other_result = CondenserC(...).condense(other_result)\n\n assert result == other_result" - }, - "ReasoningItemModel": { - "properties": { - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Id" - }, - "summary": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Summary" - }, - "content": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Content" - }, - "encrypted_content": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Encrypted Content" - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Status" - } - }, - "type": "object", - "title": "ReasoningItemModel", - "description": "OpenAI Responses reasoning item (non-stream, subset we consume).\n\nDo not log or render encrypted_content." - }, - "RedactedThinkingBlock": { - "properties": { - "type": { - "type": "string", - "const": "redacted_thinking", - "title": "Type", - "default": "redacted_thinking" - }, - "data": { - "type": "string", - "title": "Data", - "description": "The redacted thinking content" - } - }, - "type": "object", - "required": [ - "data" - ], - "title": "RedactedThinkingBlock", - "description": "Redacted thinking block for previous responses without extended thinking.\n\nThis is used as a placeholder for assistant messages that were generated\nbefore extended thinking was enabled." - }, - "RemoteWorkspace": { - "properties": { - "kind": { - "type": "string", - "const": "RemoteWorkspace", - "title": "Kind", - "default": "RemoteWorkspace" - }, - "working_dir": { - "type": "string", - "title": "Working Dir", - "description": "The working directory for agent operations and tool execution." - }, - "host": { - "type": "string", - "title": "Host", - "description": "The remote host URL for the workspace." - }, - "api_key": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Api Key", - "description": "API key for authenticating with the remote host." - } - }, - "type": "object", - "required": [ - "working_dir", - "host" - ], - "title": "RemoteWorkspace", - "description": "Remote Workspace Implementation." - }, - "ResponseLatency": { - "properties": { - "model": { - "type": "string", - "title": "Model" - }, - "latency": { - "type": "number", - "minimum": 0.0, - "title": "Latency", - "description": "Latency must be non-negative" - }, - "response_id": { - "type": "string", - "title": "Response Id" - } - }, - "type": "object", - "required": [ - "model", - "latency", - "response_id" - ], - "title": "ResponseLatency", - "description": "Metric tracking the round-trip time per completion call." - }, - "SecretsManager-Output": { - "properties": { - "secret_sources": { - "additionalProperties": { - "oneOf": [ - { - "$ref": "#/components/schemas/LookupSecret" - }, - { - "$ref": "#/components/schemas/StaticSecret" - } - ], - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__sdk__conversation__secret_source__LookupSecret-Output__1": "#/components/schemas/LookupSecret", - "openhands__sdk__conversation__secret_source__StaticSecret-Output__1": "#/components/schemas/StaticSecret" - } - } - }, - "type": "object", - "title": "Secret Sources" - } - }, - "type": "object", - "title": "SecretsManager", - "description": "Manages secrets and injects them into bash commands when needed.\n\nThe secrets manager stores a mapping of secret keys to SecretSources\nthat retrieve the actual secret values. When a bash command is about to be\nexecuted, it scans the command for any secret keys and injects the corresponding\nenvironment variables.\n\nSecret sources will redact / encrypt their sensitive values as appropriate when\nserializing, depending on the content of the context. If a context is present\nand contains a 'cipher' object, this is used for encryption. If it contains a\nboolean 'expose_secrets' flag set to True, secrets are dunped in plain text.\nOtherwise secrets are redacted.\n\nAdditionally, it tracks the latest exported values to enable consistent masking\neven when callable secrets fail on subsequent calls." - }, - "SecurityAnalyzerBase": { - "properties": { - "kind": { - "type": "string", - "const": "LLMSecurityAnalyzer", - "title": "Kind", - "default": "LLMSecurityAnalyzer" - } - }, - "type": "object", - "title": "LLMSecurityAnalyzer", - "description": "LLM-based security analyzer.\n\nThis analyzer respects the security_risk attribute that can be set by the LLM\nwhen generating actions, similar to OpenHands' LLMRiskAnalyzer.\n\nIt provides a lightweight security analysis approach that leverages the LLM's\nunderstanding of action context and potential risks." - }, - "SecurityRisk": { - "type": "string", - "enum": [ - "UNKNOWN", - "LOW", - "MEDIUM", - "HIGH" - ], - "title": "SecurityRisk", - "description": "Security risk levels for actions.\n\nBased on OpenHands security risk levels but adapted for agent-sdk.\nInteger values allow for easy comparison and ordering." - }, - "SendMessageRequest": { - "properties": { - "role": { - "type": "string", - "enum": [ - "user", - "system", - "assistant", - "tool" - ], - "title": "Role", - "default": "user" - }, - "content": { - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/TextContent" - }, - { - "$ref": "#/components/schemas/ImageContent" - } - ] - }, - "type": "array", - "title": "Content" - }, - "run": { - "type": "boolean", - "title": "Run", - "description": "Whether the agent loop should automatically run if not running", - "default": false - } - }, - "type": "object", - "title": "SendMessageRequest", - "description": "Payload to send a message to the agent.\n\nThis is a simplified version of openhands.sdk.Message." - }, - "ServerInfo": { - "properties": { - "uptime": { - "type": "number", - "title": "Uptime" - }, - "idle_time": { - "type": "number", - "title": "Idle Time" - }, - "title": { - "type": "string", - "title": "Title", - "default": "OpenHands Agent Server" - }, - "version": { - "type": "string", - "title": "Version", - "default": "1.0.0a4" - }, - "docs": { - "type": "string", - "title": "Docs", - "default": "/docs" - }, - "redoc": { - "type": "string", - "title": "Redoc", - "default": "/redoc" - } - }, - "type": "object", - "required": [ - "uptime", - "idle_time" - ], - "title": "ServerInfo" - }, - "SetConfirmationPolicyRequest": { - "properties": { - "policy": { - "oneOf": [ - { - "$ref": "#/components/schemas/AlwaysConfirm" - }, - { - "$ref": "#/components/schemas/ConfirmRisky" - }, - { - "$ref": "#/components/schemas/NeverConfirm" - } - ], - "title": "ConfirmationPolicyBase", - "description": "The confirmation policy to set", - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__sdk__security__confirmation_policy__AlwaysConfirm-Input__1": "#/components/schemas/AlwaysConfirm", - "openhands__sdk__security__confirmation_policy__ConfirmRisky-Input__1": "#/components/schemas/ConfirmRisky", - "openhands__sdk__security__confirmation_policy__NeverConfirm-Input__1": "#/components/schemas/NeverConfirm" - } - } - } - }, - "type": "object", - "required": [ - "policy" - ], - "title": "SetConfirmationPolicyRequest", - "description": "Payload to set confirmation policy for a conversation." - }, - "Skill": { - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "content": { - "type": "string", - "title": "Content" - }, - "trigger": { - "anyOf": [ - { - "oneOf": [ - { - "$ref": "#/components/schemas/KeywordTrigger" - }, - { - "$ref": "#/components/schemas/TaskTrigger" - } - ], - "discriminator": { - "propertyName": "type", - "mapping": { - "keyword": "#/components/schemas/KeywordTrigger", - "task": "#/components/schemas/TaskTrigger" - } - } - }, - { - "type": "null" - } - ], - "title": "Trigger" - }, - "source": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Source", - "description": "The source path or identifier of the skill. When it is None, it is treated as a programmatically defined skill." - }, - "mcp_tools": { - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "title": "Mcp Tools", - "description": "MCP tools configuration for the skill (repo skills only). It should conform to the MCPConfig schema: https://gofastmcp.com/clients/client#configuration-format" - }, - "inputs": { - "items": { - "$ref": "#/components/schemas/InputMetadata" - }, - "type": "array", - "title": "Inputs", - "description": "Input metadata for the skill (task skills only)" - } - }, - "type": "object", - "required": [ - "name", - "content", - "trigger" - ], - "title": "Skill", - "description": "A skill provides specialized knowledge or functionality.\n\nSkills use triggers to determine when they should be activated:\n- None: Always active, for repository-specific guidelines\n- KeywordTrigger: Activated when keywords appear in user messages\n- TaskTrigger: Activated for specific tasks, may require user input" - }, - "StartConversationRequest": { - "properties": { - "agent": { - "$ref": "#/components/schemas/Agent-Output" - }, - "workspace": { - "$ref": "#/components/schemas/LocalWorkspace", - "description": "Working directory for agent operations and tool execution" - }, - "conversation_id": { - "anyOf": [ - { - "type": "string", - "format": "uuid" - }, - { - "type": "null" - } - ], - "title": "Conversation Id", - "description": "Optional conversation ID. If not provided, a random UUID will be generated." - }, - "confirmation_policy": { - "oneOf": [ - { - "$ref": "#/components/schemas/AlwaysConfirm" - }, - { - "$ref": "#/components/schemas/ConfirmRisky" - }, - { - "$ref": "#/components/schemas/NeverConfirm" - } - ], - "title": "ConfirmationPolicyBase", - "description": "Controls when the conversation will prompt the user before continuing. Defaults to never.", - "default": { - "kind": "NeverConfirm" - }, - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__sdk__security__confirmation_policy__AlwaysConfirm-Input__1": "#/components/schemas/AlwaysConfirm", - "openhands__sdk__security__confirmation_policy__ConfirmRisky-Input__1": "#/components/schemas/ConfirmRisky", - "openhands__sdk__security__confirmation_policy__NeverConfirm-Input__1": "#/components/schemas/NeverConfirm" - } - } - }, - "initial_message": { - "anyOf": [ - { - "$ref": "#/components/schemas/SendMessageRequest" - }, - { - "type": "null" - } - ], - "description": "Initial message to pass to the LLM" - }, - "max_iterations": { - "type": "integer", - "minimum": 1.0, - "title": "Max Iterations", - "description": "If set, the max number of iterations the agent will run before stopping. This is useful to prevent infinite loops.", - "default": 500 - }, - "stuck_detection": { - "type": "boolean", - "title": "Stuck Detection", - "description": "If true, the conversation will use stuck detection to prevent infinite loops.", - "default": true - }, - "secrets": { - "additionalProperties": { - "oneOf": [ - { - "$ref": "#/components/schemas/LookupSecret" - }, - { - "$ref": "#/components/schemas/StaticSecret" - } - ], - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__sdk__conversation__secret_source__LookupSecret-Input__1": "#/components/schemas/LookupSecret", - "openhands__sdk__conversation__secret_source__StaticSecret-Input__1": "#/components/schemas/StaticSecret" - } - } - }, - "type": "object", - "title": "Secrets", - "description": "Secrets available in the conversation" - } - }, - "type": "object", - "required": [ - "agent", - "workspace" - ], - "title": "StartConversationRequest", - "description": "Payload to create a new conversation.\n\nContains an Agent configuration along with conversation-specific options." - }, - "StaticSecret": { - "properties": { - "kind": { - "type": "string", - "const": "StaticSecret", - "title": "Kind", - "default": "StaticSecret" - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Description", - "description": "Optional description for this secret" - }, - "value": { - "type": "string", - "format": "password", - "title": "Value", - "writeOnly": true - } - }, - "type": "object", - "required": [ - "value" - ], - "title": "StaticSecret", - "description": "A secret stored locally" - }, - "Success": { - "properties": { - "success": { - "type": "boolean", - "title": "Success", - "default": true - } - }, - "type": "object", - "title": "Success" - }, - "SystemPromptEvent": { - "properties": { - "kind": { - "type": "string", - "const": "SystemPromptEvent", - "title": "Kind", - "default": "SystemPromptEvent" - }, - "id": { - "type": "string", - "title": "Id", - "description": "Unique event id (ULID/UUID)" - }, - "timestamp": { - "type": "string", - "title": "Timestamp", - "description": "Event timestamp" - }, - "source": { - "type": "string", - "enum": [ - "agent", - "user", - "environment" - ], - "title": "Source", - "default": "agent" - }, - "system_prompt": { - "$ref": "#/components/schemas/TextContent", - "description": "The system prompt text" - }, - "tools": { - "items": { - "$ref": "#/components/schemas/ChatCompletionToolParam" - }, - "type": "array", - "title": "Tools", - "description": "List of tools in OpenAI tool format" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "system_prompt", - "tools" - ], - "title": "SystemPromptEvent", - "description": "System prompt added by the agent." - }, - "TaskItem": { - "properties": { - "title": { - "type": "string", - "title": "Title", - "description": "A brief title for the task." - }, - "notes": { - "type": "string", - "title": "Notes", - "description": "Additional details or notes about the task.", - "default": "" - }, - "status": { - "type": "string", - "enum": [ - "todo", - "in_progress", - "done" - ], - "title": "Status", - "description": "The current status of the task. One of 'todo', 'in_progress', or 'done'.", - "default": "todo" - } - }, - "type": "object", - "required": [ - "title" - ], - "title": "TaskItem" - }, - "TaskTrackerAction": { - "properties": { - "kind": { - "type": "string", - "const": "TaskTrackerAction", - "title": "Kind", - "default": "TaskTrackerAction" - }, - "command": { - "type": "string", - "enum": [ - "view", - "plan" - ], - "title": "Command", - "description": "The command to execute. `view` shows the current task list. `plan` creates or updates the task list based on provided requirements and progress. Always `view` the current list before making changes.", - "default": "view" - }, - "task_list": { - "items": { - "$ref": "#/components/schemas/TaskItem" - }, - "type": "array", - "title": "Task List", - "description": "The full task list. Required parameter of `plan` command." - } - }, - "additionalProperties": false, - "type": "object", - "title": "TaskTrackerAction", - "description": "An action where the agent writes or updates a task list for task management." - }, - "TaskTrackerObservation": { - "properties": { - "kind": { - "type": "string", - "const": "TaskTrackerObservation", - "title": "Kind", - "default": "TaskTrackerObservation" - }, - "content": { - "type": "string", - "title": "Content", - "description": "The formatted task list or status message", - "default": "" - }, - "command": { - "type": "string", - "title": "Command", - "description": "The command that was executed", - "default": "" - }, - "task_list": { - "items": { - "$ref": "#/components/schemas/TaskItem" - }, - "type": "array", - "title": "Task List", - "description": "The current task list" - } - }, - "additionalProperties": false, - "type": "object", - "title": "TaskTrackerObservation", - "description": "This data class represents the result of a task tracking operation." - }, - "TaskTrigger": { - "properties": { - "type": { - "type": "string", - "const": "task", - "title": "Type", - "default": "task" - }, - "triggers": { - "items": { - "type": "string" - }, - "type": "array", - "title": "Triggers" - } - }, - "type": "object", - "required": [ - "triggers" - ], - "title": "TaskTrigger", - "description": "Trigger for task-specific skills.\n\nThese skills are activated for specific task types and can modify prompts." - }, - "TextContent": { - "properties": { - "cache_prompt": { - "type": "boolean", - "title": "Cache Prompt", - "default": false - }, - "type": { - "type": "string", - "const": "text", - "title": "Type", - "default": "text" - }, - "text": { - "type": "string", - "title": "Text" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "text" - ], - "title": "TextContent" - }, - "ThinkAction": { - "properties": { - "kind": { - "type": "string", - "const": "ThinkAction", - "title": "Kind", - "default": "ThinkAction" - }, - "thought": { - "type": "string", - "title": "Thought", - "description": "The thought to log." - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "thought" - ], - "title": "ThinkAction", - "description": "Action for logging a thought without making any changes." - }, - "ThinkObservation": { - "properties": { - "kind": { - "type": "string", - "const": "ThinkObservation", - "title": "Kind", - "default": "ThinkObservation" - }, - "content": { - "type": "string", - "title": "Content", - "description": "Confirmation message.", - "default": "Your thought has been logged." - } - }, - "additionalProperties": false, - "type": "object", - "title": "ThinkObservation", - "description": "Observation returned after logging a thought." - }, - "ThinkingBlock": { - "properties": { - "type": { - "type": "string", - "const": "thinking", - "title": "Type", - "default": "thinking" - }, - "thinking": { - "type": "string", - "title": "Thinking", - "description": "The thinking content" - }, - "signature": { - "type": "string", - "title": "Signature", - "description": "Cryptographic signature for the thinking block" - } - }, - "type": "object", - "required": [ - "thinking", - "signature" - ], - "title": "ThinkingBlock", - "description": "Anthropic thinking block for extended thinking feature.\n\nThis represents the raw thinking blocks returned by Anthropic models\nwhen extended thinking is enabled. These blocks must be preserved\nand passed back to the API for tool use scenarios." - }, - "TokenUsage": { - "properties": { - "model": { - "type": "string", - "title": "Model", - "default": "" - }, - "prompt_tokens": { - "type": "integer", - "minimum": 0.0, - "title": "Prompt Tokens", - "description": "Prompt tokens must be non-negative", - "default": 0 - }, - "completion_tokens": { - "type": "integer", - "minimum": 0.0, - "title": "Completion Tokens", - "description": "Completion tokens must be non-negative", - "default": 0 - }, - "cache_read_tokens": { - "type": "integer", - "minimum": 0.0, - "title": "Cache Read Tokens", - "description": "Cache read tokens must be non-negative", - "default": 0 - }, - "cache_write_tokens": { - "type": "integer", - "minimum": 0.0, - "title": "Cache Write Tokens", - "description": "Cache write tokens must be non-negative", - "default": 0 - }, - "reasoning_tokens": { - "type": "integer", - "minimum": 0.0, - "title": "Reasoning Tokens", - "description": "Reasoning tokens must be non-negative", - "default": 0 - }, - "context_window": { - "type": "integer", - "minimum": 0.0, - "title": "Context Window", - "description": "Context window must be non-negative", - "default": 0 - }, - "per_turn_token": { - "type": "integer", - "minimum": 0.0, - "title": "Per Turn Token", - "description": "Per turn tokens must be non-negative", - "default": 0 - }, - "response_id": { - "type": "string", - "title": "Response Id", - "default": "" - } - }, - "type": "object", - "title": "TokenUsage", - "description": "Metric tracking detailed token usage per completion call." - }, - "Tool": { - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Name of the tool class, e.g., 'BashTool'. Import it from an `openhands.tools.` subpackage.", - "examples": [ - "BashTool", - "FileEditorTool", - "TaskTrackerTool" - ] - }, - "params": { - "additionalProperties": true, - "type": "object", - "title": "Params", - "description": "Parameters for the tool's .create() method, e.g., {'working_dir': '/app'}", - "examples": [ - { - "working_dir": "/workspace" - } - ] - } - }, - "type": "object", - "required": [ - "name" - ], - "title": "Tool", - "description": "Defines a tool to be initialized for the agent.\n\nThis is only used in agent-sdk for type schema for server use." - }, - "UpdateConversationRequest": { - "properties": { - "title": { - "type": "string", - "maxLength": 200, - "minLength": 1, - "title": "Title", - "description": "New conversation title" - } - }, - "type": "object", - "required": [ - "title" - ], - "title": "UpdateConversationRequest", - "description": "Payload to update conversation metadata." - }, - "UpdateSecretsRequest": { - "properties": { - "secrets": { - "additionalProperties": { - "oneOf": [ - { - "$ref": "#/components/schemas/LookupSecret" - }, - { - "$ref": "#/components/schemas/StaticSecret" - } - ], - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__sdk__conversation__secret_source__LookupSecret-Input__1": "#/components/schemas/LookupSecret", - "openhands__sdk__conversation__secret_source__StaticSecret-Input__1": "#/components/schemas/StaticSecret" - } - } - }, - "type": "object", - "title": "Secrets", - "description": "Dictionary mapping secret keys to values" - } - }, - "type": "object", - "required": [ - "secrets" - ], - "title": "UpdateSecretsRequest", - "description": "Payload to update secrets in a conversation." - }, - "UserRejectObservation": { - "properties": { - "kind": { - "type": "string", - "const": "UserRejectObservation", - "title": "Kind", - "default": "UserRejectObservation" - }, - "id": { - "type": "string", - "title": "Id", - "description": "Unique event id (ULID/UUID)" - }, - "timestamp": { - "type": "string", - "title": "Timestamp", - "description": "Event timestamp" - }, - "source": { - "type": "string", - "enum": [ - "agent", - "user", - "environment" - ], - "title": "Source", - "default": "environment" - }, - "tool_name": { - "type": "string", - "title": "Tool Name", - "description": "The tool name that this observation is responding to" - }, - "tool_call_id": { - "type": "string", - "title": "Tool Call Id", - "description": "The tool call id that this observation is responding to" - }, - "rejection_reason": { - "type": "string", - "title": "Rejection Reason", - "description": "Reason for rejecting the action", - "default": "User rejected the action" - }, - "action_id": { - "type": "string", - "title": "Action Id", - "description": "The action id that this observation is responding to" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "tool_name", - "tool_call_id", - "action_id" - ], - "title": "UserRejectObservation", - "description": "Observation when user rejects an action in confirmation mode." - }, - "VSCodeUrlResponse": { - "properties": { - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Url" - } - }, - "type": "object", - "required": [ - "url" - ], - "title": "VSCodeUrlResponse", - "description": "Response model for VSCode URL." - }, - "ValidationError": { - "properties": { - "loc": { - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - } - ] - }, - "type": "array", - "title": "Location" - }, - "msg": { - "type": "string", - "title": "Message" - }, - "type": { - "type": "string", - "title": "Error Type" - } - }, - "type": "object", - "required": [ - "loc", - "msg", - "type" - ], - "title": "ValidationError" - }, - "Event": { - "oneOf": [ - { - "$ref": "#/components/schemas/Condensation" - }, - { - "$ref": "#/components/schemas/CondensationRequest" - }, - { - "$ref": "#/components/schemas/CondensationSummaryEvent" - }, - { - "$ref": "#/components/schemas/ConversationStateUpdateEvent" - }, - { - "$ref": "#/components/schemas/ActionEvent" - }, - { - "$ref": "#/components/schemas/MessageEvent" - }, - { - "$ref": "#/components/schemas/AgentErrorEvent" - }, - { - "$ref": "#/components/schemas/ObservationEvent" - }, - { - "$ref": "#/components/schemas/UserRejectObservation" - }, - { - "$ref": "#/components/schemas/SystemPromptEvent" - }, - { - "$ref": "#/components/schemas/PauseEvent" - } - ], - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__sdk__event__condenser__Condensation-Output__1": "#/components/schemas/Condensation", - "openhands__sdk__event__condenser__CondensationRequest-Output__1": "#/components/schemas/CondensationRequest", - "openhands__sdk__event__condenser__CondensationSummaryEvent-Output__1": "#/components/schemas/CondensationSummaryEvent", - "openhands__sdk__event__conversation_state__ConversationStateUpdateEvent-Output__1": "#/components/schemas/ConversationStateUpdateEvent", - "openhands__sdk__event__llm_convertible__action__ActionEvent-Output__1": "#/components/schemas/ActionEvent", - "openhands__sdk__event__llm_convertible__message__MessageEvent-Output__1": "#/components/schemas/MessageEvent", - "openhands__sdk__event__llm_convertible__observation__AgentErrorEvent-Output__1": "#/components/schemas/AgentErrorEvent", - "openhands__sdk__event__llm_convertible__observation__ObservationEvent-Output__1": "#/components/schemas/ObservationEvent", - "openhands__sdk__event__llm_convertible__observation__UserRejectObservation-Output__1": "#/components/schemas/UserRejectObservation", - "openhands__sdk__event__llm_convertible__system__SystemPromptEvent-Output__1": "#/components/schemas/SystemPromptEvent", - "openhands__sdk__event__user_action__PauseEvent-Output__1": "#/components/schemas/PauseEvent" - } - }, - "title": "Event" - }, - "BashEventBase": { - "oneOf": [ - { - "$ref": "#/components/schemas/BashCommand" - }, - { - "$ref": "#/components/schemas/BashOutput" - } - ], - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__agent_server__models__BashCommand-Output__1": "#/components/schemas/BashCommand", - "openhands__agent_server__models__BashOutput-Output__1": "#/components/schemas/BashOutput" - } - }, - "title": "BashEventBase" - }, - "Action": { - "oneOf": [ - { - "$ref": "#/components/schemas/MCPToolAction" - }, - { - "$ref": "#/components/schemas/FinishAction" - }, - { - "$ref": "#/components/schemas/ThinkAction" - }, - { - "$ref": "#/components/schemas/BrowserClickAction" - }, - { - "$ref": "#/components/schemas/BrowserCloseTabAction" - }, - { - "$ref": "#/components/schemas/BrowserGetContentAction" - }, - { - "$ref": "#/components/schemas/BrowserGetStateAction" - }, - { - "$ref": "#/components/schemas/BrowserGoBackAction" - }, - { - "$ref": "#/components/schemas/BrowserListTabsAction" - }, - { - "$ref": "#/components/schemas/BrowserNavigateAction" - }, - { - "$ref": "#/components/schemas/BrowserScrollAction" - }, - { - "$ref": "#/components/schemas/BrowserSwitchTabAction" - }, - { - "$ref": "#/components/schemas/BrowserTypeAction" - }, - { - "$ref": "#/components/schemas/ExecuteBashAction" - }, - { - "$ref": "#/components/schemas/FileEditorAction" - }, - { - "$ref": "#/components/schemas/TaskTrackerAction" - } - ], - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__sdk__mcp__definition__MCPToolAction-Output__1": "#/components/schemas/MCPToolAction", - "openhands__sdk__tool__builtins__finish__FinishAction-Output__1": "#/components/schemas/FinishAction", - "openhands__sdk__tool__builtins__think__ThinkAction-Output__1": "#/components/schemas/ThinkAction", - "openhands__tools__browser_use__definition__BrowserClickAction-Output__1": "#/components/schemas/BrowserClickAction", - "openhands__tools__browser_use__definition__BrowserCloseTabAction-Output__1": "#/components/schemas/BrowserCloseTabAction", - "openhands__tools__browser_use__definition__BrowserGetContentAction-Output__1": "#/components/schemas/BrowserGetContentAction", - "openhands__tools__browser_use__definition__BrowserGetStateAction-Output__1": "#/components/schemas/BrowserGetStateAction", - "openhands__tools__browser_use__definition__BrowserGoBackAction-Output__1": "#/components/schemas/BrowserGoBackAction", - "openhands__tools__browser_use__definition__BrowserListTabsAction-Output__1": "#/components/schemas/BrowserListTabsAction", - "openhands__tools__browser_use__definition__BrowserNavigateAction-Output__1": "#/components/schemas/BrowserNavigateAction", - "openhands__tools__browser_use__definition__BrowserScrollAction-Output__1": "#/components/schemas/BrowserScrollAction", - "openhands__tools__browser_use__definition__BrowserSwitchTabAction-Output__1": "#/components/schemas/BrowserSwitchTabAction", - "openhands__tools__browser_use__definition__BrowserTypeAction-Output__1": "#/components/schemas/BrowserTypeAction", - "openhands__tools__execute_bash__definition__ExecuteBashAction-Output__1": "#/components/schemas/ExecuteBashAction", - "openhands__tools__file_editor__definition__FileEditorAction-Output__1": "#/components/schemas/FileEditorAction", - "openhands__tools__task_tracker__definition__TaskTrackerAction-Output__1": "#/components/schemas/TaskTrackerAction" - } - }, - "title": "Action" - }, - "CondenserBase": { - "oneOf": [ - { - "$ref": "#/components/schemas/LLMSummarizingCondenser" - }, - { - "$ref": "#/components/schemas/NoOpCondenser" - }, - { - "$ref": "#/components/schemas/PipelineCondenser-Output" - } - ], - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__sdk__context__condenser__llm_summarizing_condenser__LLMSummarizingCondenser-Output__1": "#/components/schemas/LLMSummarizingCondenser", - "openhands__sdk__context__condenser__no_op_condenser__NoOpCondenser-Output__1": "#/components/schemas/NoOpCondenser", - "openhands__sdk__context__condenser__pipeline_condenser__PipelineCondenser-Output__1": "#/components/schemas/PipelineCondenser-Output" - } - }, - "title": "CondenserBase" - }, - "BaseWorkspace": { - "oneOf": [ - { - "$ref": "#/components/schemas/LocalWorkspace" - }, - { - "$ref": "#/components/schemas/RemoteWorkspace" - } - ], - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__sdk__workspace__local__LocalWorkspace-Output__1": "#/components/schemas/LocalWorkspace", - "openhands__sdk__workspace__remote__base__RemoteWorkspace-Output__1": "#/components/schemas/RemoteWorkspace" - } - }, - "title": "BaseWorkspace" - }, - "ConfirmationPolicyBase": { - "oneOf": [ - { - "$ref": "#/components/schemas/AlwaysConfirm" - }, - { - "$ref": "#/components/schemas/ConfirmRisky" - }, - { - "$ref": "#/components/schemas/NeverConfirm" - } - ], - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__sdk__security__confirmation_policy__AlwaysConfirm-Output__1": "#/components/schemas/AlwaysConfirm", - "openhands__sdk__security__confirmation_policy__ConfirmRisky-Output__1": "#/components/schemas/ConfirmRisky", - "openhands__sdk__security__confirmation_policy__NeverConfirm-Output__1": "#/components/schemas/NeverConfirm" - } - }, - "title": "ConfirmationPolicyBase" - }, - "Observation": { - "oneOf": [ - { - "$ref": "#/components/schemas/MCPToolObservation" - }, - { - "$ref": "#/components/schemas/FinishObservation" - }, - { - "$ref": "#/components/schemas/ThinkObservation" - }, - { - "$ref": "#/components/schemas/BrowserObservation" - }, - { - "$ref": "#/components/schemas/ExecuteBashObservation" - }, - { - "$ref": "#/components/schemas/FileEditorObservation" - }, - { - "$ref": "#/components/schemas/TaskTrackerObservation" - } - ], - "discriminator": { - "propertyName": "kind", - "mapping": { - "openhands__sdk__mcp__definition__MCPToolObservation-Output__1": "#/components/schemas/MCPToolObservation", - "openhands__sdk__tool__builtins__finish__FinishObservation-Output__1": "#/components/schemas/FinishObservation", - "openhands__sdk__tool__builtins__think__ThinkObservation-Output__1": "#/components/schemas/ThinkObservation", - "openhands__tools__browser_use__definition__BrowserObservation-Output__1": "#/components/schemas/BrowserObservation", - "openhands__tools__execute_bash__definition__ExecuteBashObservation-Output__1": "#/components/schemas/ExecuteBashObservation", - "openhands__tools__file_editor__definition__FileEditorObservation-Output__1": "#/components/schemas/FileEditorObservation", - "openhands__tools__task_tracker__definition__TaskTrackerObservation-Output__1": "#/components/schemas/TaskTrackerObservation" - } - }, - "title": "Observation" - } - } - } -}