Release v1.36.1#4120
Conversation
Co-authored-by: openhands <openhands@all-hands.dev>
|
Hi! I started running the integration tests on your PR. You will receive a comment with the results shortly. |
|
Hi! I started running the behavior tests on your PR. You will receive a comment with the results shortly. |
🔒 Release Security Scan🔒 Approval drift (time-of-check vs time-of-use)Baseline:
Audited 2 PR(s): 2 clean, 0 flagged, 0 un-auditable. 📦 Supply-chain dependency diff✅ no findings Baseline: OSV: no known vulns across 4 new/bumped dep(s). Bumped dependencies
Deterministic scanners: approval-drift + supply-chain dependency diff. Read-only; no PR code executed. |
Python API breakage checks — ✅ PASSEDResult: ✅ PASSED |
REST API breakage checks (OpenAPI) — ✅ PASSEDResult: ✅ PASSED |
all-hands-bot
left a comment
There was a problem hiding this comment.
✅ QA Report: PASS
Verified the release bump as a real install/build/server user path: installed package metadata, built wheel metadata, and the running agent-server /server_info endpoint all report 1.36.1 on the PR.
Does this PR achieve its stated goal?
Yes. The stated goal is to prepare release 1.36.1 by setting package versions to 1.36.1; after applying the PR commit, all four editable packages installed as 1.36.1, the built wheels carry 1.36.1 metadata, and a live agent-server returned version, sdk_version, tools_version, and workspace_version as 1.36.1. The same checks on main reported 1.36.0, confirming the PR changes produce the intended release-version delta.
| Phase | Result |
|---|---|
| Environment Setup | ✅ make build completed successfully and installed the workspace packages. |
| CI Status | ⏳ GitHub reports 13 successful, 21 pending, 13 skipped, 0 failing checks at review time. |
| Functional Verification | ✅ Package install metadata, built release artifacts, and live /server_info all report 1.36.1. |
Functional Verification
Test 1: Installed package metadata and live server version endpoint
Step 1 — Establish baseline on main:
Ran git checkout --detach origin/main && uv sync --frozen && uv run python -c "...metadata.version(...)...", then started the real server with OH_SECRET_KEY=qa-secret uv run agent-server --host 127.0.0.1 --port 8010 and requested GET /server_info:
openhands-sdk=1.36.0
openhands-tools=1.36.0
openhands-workspace=1.36.0
openhands-agent-server=1.36.0
SERVER_INFO_MAIN
{"version":"1.36.0","sdk_version":"1.36.0","tools_version":"1.36.0","workspace_version":"1.36.0", ...}
This shows the pre-PR user-visible package/server versions are 1.36.0.
Step 2 — Apply the PR's changes:
Checked out PR commit c2d9695f7ab4b7f579b04d2fd16bd0d2ebefffb1 and reran uv sync --frozen.
Step 3 — Re-run with the PR in place:
Ran the same installed metadata check, then started the real server with OH_SECRET_KEY=qa-secret uv run agent-server --host 127.0.0.1 --port 8011 and requested GET /server_info:
openhands-sdk=1.36.1
openhands-tools=1.36.1
openhands-workspace=1.36.1
openhands-agent-server=1.36.1
SERVER_INFO_PR
{"version":"1.36.1","sdk_version":"1.36.1","tools_version":"1.36.1","workspace_version":"1.36.1", ...}
This confirms the installed packages and the live server endpoint expose the release version intended by the PR.
Test 2: Release artifact build metadata
Step 1 — Baseline:
The main-branch install/server check above reported all package versions as 1.36.0, so a release artifact built from the pre-PR state would not represent 1.36.1.
Step 2 — Apply the PR's changes:
Using the same PR checkout at c2d9695f7ab4b7f579b04d2fd16bd0d2ebefffb1.
Step 3 — Build and inspect artifacts:
Ran uv build --all-packages --out-dir /tmp/oh-qa-dist, then inspected each wheel's METADATA:
Successfully built /tmp/oh-qa-dist/openhands_agent_server-1.36.1-py3-none-any.whl
Successfully built /tmp/oh-qa-dist/openhands_sdk-1.36.1-py3-none-any.whl
Successfully built /tmp/oh-qa-dist/openhands_tools-1.36.1-py3-none-any.whl
Successfully built /tmp/oh-qa-dist/openhands_workspace-1.36.1-py3-none-any.whl
openhands_agent_server-1.36.1-py3-none-any.whl: openhands-agent-server==1.36.1
openhands_sdk-1.36.1-py3-none-any.whl: openhands-sdk==1.36.1
openhands_tools-1.36.1-py3-none-any.whl: openhands-tools==1.36.1
openhands_workspace-1.36.1-py3-none-any.whl: openhands-workspace==1.36.1
This confirms the artifacts that would be published for the release carry the intended 1.36.1 package metadata.
Issues Found
None.
This review was created by an AI agent (OpenHands) on behalf of the user.
🧪 Integration Tests ResultsOverall Success Rate: 97.7% 📁 Detailed Logs & ArtifactsClick the links below to access detailed agent/LLM logs showing the complete reasoning process for each model. On the GitHub Actions page, scroll down to the 'Artifacts' section to download the logs.
📊 Summary
📋 Detailed Resultslitellm_proxy_anthropic_claude_sonnet_4_6
Failed Tests:
litellm_proxy_gemini_3.1_pro_preview
litellm_proxy_openai_gpt_5.5
litellm_proxy_deepseek_deepseek_v4_flash
Skipped Tests:
litellm_proxy_minimax_MiniMax_M2.7
Skipped Tests:
|
🔄 Running Examples with
|
| Example | Status | Duration | Cost |
|---|---|---|---|
| 01_standalone_sdk/02_custom_tools.py | ✅ PASS | 33.3s | $0.03 |
| 01_standalone_sdk/03_activate_skill.py | ✅ PASS | 27.6s | $0.03 |
| 01_standalone_sdk/05_use_llm_registry.py | ✅ PASS | 9.8s | $0.00 |
| 01_standalone_sdk/07_mcp_integration.py | ✅ PASS | 48.9s | $0.04 |
| 01_standalone_sdk/09_pause_example.py | ✅ PASS | 13.8s | $0.01 |
| 01_standalone_sdk/10_persistence.py | ✅ PASS | 33.2s | $0.03 |
| 01_standalone_sdk/11_async.py | ✅ PASS | 27.1s | $0.03 |
| 01_standalone_sdk/12_custom_secrets.py | ✅ PASS | 14.3s | $0.01 |
| 01_standalone_sdk/13_get_llm_metrics.py | ✅ PASS | 20.6s | $0.02 |
| 01_standalone_sdk/14_context_condenser.py | ✅ PASS | 2m 16s | $0.15 |
| 01_standalone_sdk/17_image_input.py | ✅ PASS | 18.6s | $0.02 |
| 01_standalone_sdk/18_send_message_while_processing.py | ✅ PASS | 17.1s | $0.01 |
| 01_standalone_sdk/19_llm_routing.py | ✅ PASS | 18.3s | $0.02 |
| 01_standalone_sdk/20_stuck_detector.py | ✅ PASS | 17.8s | $0.03 |
| 01_standalone_sdk/21_generate_extraneous_conversation_costs.py | ✅ PASS | 10.6s | $0.01 |
| 01_standalone_sdk/22_anthropic_thinking.py | ✅ PASS | 18.8s | $0.01 |
| 01_standalone_sdk/23_responses_reasoning.py | ✅ PASS | 36.4s | $0.01 |
| 01_standalone_sdk/24_planning_agent_workflow.py | ✅ PASS | 3m 40s | $0.28 |
| 01_standalone_sdk/25_agent_delegation.py | ✅ PASS | 56.9s | $0.05 |
| 01_standalone_sdk/26_custom_visualizer.py | ✅ PASS | 17.6s | $0.02 |
| 01_standalone_sdk/28_ask_agent_example.py | ✅ PASS | 39.6s | $0.04 |
| 01_standalone_sdk/29_llm_streaming.py | ✅ PASS | 38.1s | $0.02 |
| 01_standalone_sdk/30_tom_agent.py | ✅ PASS | 9.1s | $0.01 |
| 01_standalone_sdk/31_iterative_refinement.py | ✅ PASS | 1m 9s | $0.07 |
| 01_standalone_sdk/32_configurable_security_policy.py | ✅ PASS | 19.3s | $0.02 |
| 01_standalone_sdk/33_hooks/main.py | ✅ PASS | 32.9s | $0.04 |
| 01_standalone_sdk/34_critic_example.py | ✅ PASS | 6m 48s | $0.71 |
| 01_standalone_sdk/36_event_json_to_openai_messages.py | ✅ PASS | 9.3s | $0.00 |
| 01_standalone_sdk/37_llm_profile_store/main.py | ✅ PASS | 5.5s | $0.00 |
| 01_standalone_sdk/38_browser_session_recording.py | ✅ PASS | 36.8s | $0.04 |
| 01_standalone_sdk/39_llm_fallback.py | ✅ PASS | 18.1s | $0.01 |
| 01_standalone_sdk/40_acp_agent_example.py | ✅ PASS | 50.4s | $0.32 |
| 01_standalone_sdk/41_task_tool_set.py | ✅ PASS | 24.7s | $0.03 |
| 01_standalone_sdk/42_file_based_subagents.py | ✅ PASS | 51.6s | $0.05 |
| 01_standalone_sdk/44_model_switching_in_convo.py | ✅ PASS | 8.3s | $0.01 |
| 01_standalone_sdk/45_parallel_tool_execution.py | ✅ PASS | 9m 31s | $0.75 |
| 01_standalone_sdk/46_agent_settings.py | ✅ PASS | 10.1s | $0.01 |
| 01_standalone_sdk/47_defense_in_depth_security.py | ✅ PASS | 3.8s | $0.00 |
| 01_standalone_sdk/48_conversation_fork.py | ✅ PASS | 22.2s | $0.01 |
| 01_standalone_sdk/49_switch_llm_tool.py | ✅ PASS | 8.3s | $0.04 |
| 01_standalone_sdk/50_async_cancellation.py | ✅ PASS | 13.0s | $0.00 |
| 01_standalone_sdk/51_agent_hooks/main.py | ✅ PASS | 1m 1s | $0.05 |
| 01_standalone_sdk/52_dynamic_workflow.py | ✅ PASS | 5m 35s | $0.08 |
| 01_standalone_sdk/53_client_defined_tools.py | ✅ PASS | 18.6s | $0.01 |
| 01_standalone_sdk/54_goal_completion_loop.py | ✅ PASS | 32.3s | $0.02 |
| 02_remote_agent_server/01_convo_with_local_agent_server.py | ✅ PASS | 37.6s | $0.03 |
| 02_remote_agent_server/02_convo_with_docker_sandboxed_server.py | ✅ PASS | 1m 41s | $0.04 |
| 02_remote_agent_server/03_browser_use_with_docker_sandboxed_server.py | ✅ PASS | 51.6s | $0.06 |
| 02_remote_agent_server/04_convo_with_api_sandboxed_server.py | ✅ PASS | 1m 48s | $0.05 |
| 02_remote_agent_server/06_custom_tool/main.py | ✅ PASS | 5m 3s | $0.03 |
| 02_remote_agent_server/07_convo_with_cloud_workspace.py | ✅ PASS | 46.3s | $0.03 |
| 02_remote_agent_server/08_convo_with_apptainer_sandboxed_server.py | ✅ PASS | 3m 46s | $0.02 |
| 02_remote_agent_server/09_acp_agent_with_remote_runtime.py | ✅ PASS | 1m 4s | $0.35 |
| 02_remote_agent_server/10_cloud_workspace_share_credentials.py | ✅ PASS | 54.1s | $0.04 |
| 02_remote_agent_server/11_conversation_fork.py | ✅ PASS | 55.4s | $0.00 |
| 02_remote_agent_server/12_settings_and_secrets_api.py | ✅ PASS | 2m 18s | $0.02 |
| 02_remote_agent_server/13_workspace_get_llm.py | ✅ PASS | 31.5s | $0.02 |
| 02_remote_agent_server/14_client_defined_tools.py | ✅ PASS | 32.4s | $0.02 |
| 02_remote_agent_server/15_openai_compatible_gateway.py | ✅ PASS | 17.4s | $0.02 |
| 02_remote_agent_server/16_deferred_init.py | ✅ PASS | 21.9s | $0.01 |
| 04_llm_specific_tools/01_gpt5_apply_patch_preset.py | ✅ PASS | 24.0s | $0.02 |
| 04_llm_specific_tools/02_gemini_file_tools.py | ✅ PASS | 35.7s | $0.06 |
| 05_skills_and_plugins/01_loading_agentskills/main.py | ✅ PASS | 16.5s | $0.02 |
| 05_skills_and_plugins/02_loading_plugins/main.py | ✅ PASS | 19.5s | $0.02 |
| 05_skills_and_plugins/04_mixed_marketplace_skills/main.py | ✅ PASS | 3.6s | $0.00 |
✅ All tests passed!
Total: 65 | Passed: 65 | Failed: 0 | Total Cost: $4.04
🧪 Integration Tests ResultsOverall Success Rate: 96.0% 📁 Detailed Logs & ArtifactsClick the links below to access detailed agent/LLM logs showing the complete reasoning process for each model. On the GitHub Actions page, scroll down to the 'Artifacts' section to download the logs.
📊 Summary
📋 Detailed Resultslitellm_proxy_anthropic_claude_sonnet_4_6
litellm_proxy_minimax_MiniMax_M2.7
litellm_proxy_openai_gpt_5.5
litellm_proxy_gemini_3.1_pro_preview
Failed Tests:
litellm_proxy_deepseek_deepseek_v4_flash
|
Release v1.36.1
This PR prepares the release for version 1.36.1.
Started by: @hieptl
Release Checklist
integration-test)behavior-test)test-examples)security-scan)release-note-requiredPRs are accurately called out in the final release notesWhat happens on merge
When this PR is merged, the
create-release.ymlworkflow will automatically:v1.36.1and auto-generated notes, plus an explicit preamble for mergedrelease-note-requiredPRspypi-release.ymlto publish all packages to PyPIversion-bump-prs.ymlto create downstream version bump PRsAgent Server images for this PR
• GHCR package: https://github.com/OpenHands/agent-sdk/pkgs/container/agent-server
Variants & Base Images
eclipse-temurin:17-jdknikolaik/python-nodejs:python3.13-nodejs22-slimgolang:1.21-bookwormPull (multi-arch manifest)
# Each variant is a multi-arch manifest supporting both amd64 and arm64 docker pull ghcr.io/openhands/agent-server:c2d9695-pythonRun
All tags pushed for this build
About Multi-Architecture Support
c2d9695-python) is a multi-arch manifest supporting both amd64 and arm64c2d9695-python-amd64) are also available if needed