From 412fc5aa16ee3790ff1c0cafe6b6489f91b170c5 Mon Sep 17 00:00:00 2001 From: enyst Date: Thu, 30 Oct 2025 15:42:58 +0000 Subject: [PATCH 1/2] docs(sdk): rename Secrets Manager to Secret Registry; update link to secret_registry.py and guide title/body Co-authored-by: openhands --- sdk/arch/conversation.mdx | 2 +- sdk/guides/secrets.mdx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/arch/conversation.mdx b/sdk/arch/conversation.mdx index dbe89d0a..e0391121 100644 --- a/sdk/arch/conversation.mdx +++ b/sdk/arch/conversation.mdx @@ -186,7 +186,7 @@ The conversation system provides pluggable services that operate independently o | **[Persistence](https://github.com/OpenHands/software-agent-sdk/blob/main/openhands-sdk/openhands/sdk/conversation/state.py)** | Auto-save & resume | Debounced writes, incremental events | | **[Stuck Detection](https://github.com/OpenHands/software-agent-sdk/blob/main/openhands-sdk/openhands/sdk/conversation/stuck_detector.py)** | Loop prevention | Sliding window pattern matching | | **[Visualization](https://github.com/OpenHands/software-agent-sdk/blob/main/openhands-sdk/openhands/sdk/conversation/visualizer.py)** | Execution diagrams | Event stream → visual representation | -| **[Secrets Manager](https://github.com/OpenHands/software-agent-sdk/blob/main/openhands-sdk/openhands/sdk/conversation/secrets_manager.py)** | Secure value storage | Memory-only with masked logging | +| **[Secret Registry](https://github.com/OpenHands/software-agent-sdk/blob/main/openhands-sdk/openhands/sdk/conversation/secret_registry.py)** | Secure value storage | Memory-only with masked logging | **Design Principle:** Services read from the event log but never mutate state directly. This enables: - Services can be enabled/disabled independently diff --git a/sdk/guides/secrets.mdx b/sdk/guides/secrets.mdx index 885f500b..e2185463 100644 --- a/sdk/guides/secrets.mdx +++ b/sdk/guides/secrets.mdx @@ -1,5 +1,5 @@ --- -title: Secrets Manager +title: Secret Registry description: Provide environment variables and secrets to agent workspace securely. --- @@ -7,7 +7,7 @@ description: Provide environment variables and secrets to agent workspace secure This example is available on GitHub: [examples/01_standalone_sdk/12_custom_secrets.py](https://github.com/OpenHands/software-agent-sdk/blob/main/examples/01_standalone_sdk/12_custom_secrets.py) -The Secrets Manager provides a secure way to handle sensitive data in your agent's workspace. It automatically detects secret references in bash commands, injects them as environment variables when needed, and masks secret values in command outputs to prevent accidental exposure. +The Secret Registry provides a secure way to handle sensitive data in your agent's workspace. It automatically detects secret references in bash commands, injects them as environment variables when needed, and masks secret values in command outputs to prevent accidental exposure. ```python icon="python" expandable examples/01_standalone_sdk/12_custom_secrets.py import os From 955ce0029ca4fe2b4befb2afaf2e6ddc39a7b2d8 Mon Sep 17 00:00:00 2001 From: all-hands-bot Date: Thu, 30 Oct 2025 16:07:14 +0000 Subject: [PATCH 2/2] sync(openapi): agent-sdk/main 952c558 --- openapi/agent-sdk.json | 210 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 197 insertions(+), 13 deletions(-) diff --git a/openapi/agent-sdk.json b/openapi/agent-sdk.json index fe6474a7..88682d80 100644 --- a/openapi/agent-sdk.json +++ b/openapi/agent-sdk.json @@ -1599,6 +1599,96 @@ } } }, + "/api/git/changes/{path}": { + "get": { + "tags": [ + "Git" + ], + "summary": "Git Changes", + "operationId": "git_changes_api_git_changes__path__get", + "parameters": [ + { + "name": "path", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "path", + "title": "Path" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GitChange" + }, + "title": "Response Git Changes Api Git Changes Path Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/git/diff/{path}": { + "get": { + "tags": [ + "Git" + ], + "summary": "Git Diff", + "operationId": "git_diff_api_git_diff__path__get", + "parameters": [ + { + "name": "path", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "path", + "title": "Path" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GitDiff" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, "/api/file/upload/{path}": { "post": { "tags": [ @@ -1697,6 +1787,48 @@ } } }, + "/api/file/download-trajectory/{conversation_id}": { + "get": { + "tags": [ + "Files" + ], + "summary": "Download Trajectory", + "description": "Download a file from the workspace.", + "operationId": "download_trajectory_api_file_download_trajectory__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": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, "/api/vscode/url": { "get": { "tags": [ @@ -2080,6 +2212,7 @@ "system_prompt_filename": { "type": "string", "title": "System Prompt Filename", + "description": "System prompt template filename. Can be either:\n- A relative filename (e.g., 'system_prompt.j2') loaded from the agent's prompts directory\n- An absolute path (e.g., '/path/to/custom_prompt.j2')", "default": "system_prompt.j2" }, "system_prompt_kwargs": { @@ -2292,7 +2425,6 @@ }, "id": { "type": "string", - "format": "uuid", "title": "Id" }, "timestamp": { @@ -2367,7 +2499,6 @@ }, "id": { "type": "string", - "format": "uuid", "title": "Id" }, "timestamp": { @@ -2377,7 +2508,6 @@ }, "command_id": { "type": "string", - "format": "uuid", "title": "Command Id" }, "order": { @@ -3797,6 +3927,66 @@ "title": "GenerateTitleResponse", "description": "Response containing the generated conversation title." }, + "GitChange": { + "properties": { + "status": { + "$ref": "#/components/schemas/GitChangeStatus" + }, + "path": { + "type": "string", + "format": "path", + "title": "Path" + } + }, + "type": "object", + "required": [ + "status", + "path" + ], + "title": "GitChange" + }, + "GitChangeStatus": { + "type": "string", + "enum": [ + "MOVED", + "ADDED", + "DELETED", + "UPDATED" + ], + "title": "GitChangeStatus" + }, + "GitDiff": { + "properties": { + "modified": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Modified" + }, + "original": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Original" + } + }, + "type": "object", + "required": [ + "modified", + "original" + ], + "title": "GitDiff" + }, "HTTPValidationError": { "properties": { "detail": { @@ -4198,16 +4388,10 @@ "description": "A custom tokenizer to use for token counting." }, "native_tool_calling": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], + "type": "boolean", "title": "Native Tool Calling", - "description": "Whether to use native tool calling if supported by the model. Can be True, False, or not set." + "description": "Whether to use native tool calling.", + "default": true }, "reasoning_effort": { "anyOf": [ @@ -5203,7 +5387,7 @@ "version": { "type": "string", "title": "Version", - "default": "1.0.0a4" + "default": "1.0.0a5" }, "docs": { "type": "string",