Release v1.42.0 - #4466
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. |
1 similar comment
|
Hi! I started running the behavior tests on your PR. You will receive a comment with the results shortly. |
|
Hi! I started running the integration tests on your PR. You will receive a comment with the results shortly. |
Python API breakage checks — ✅ PASSEDResult: ✅ PASSED |
🔒 Release Security Scan🔒 Approval drift (time-of-check vs time-of-use)❌ 5 blocking finding(s) Baseline:
Audited 22 PR(s): 17 clean, 5 flagged, 0 un-auditable. 📦 Supply-chain dependency diff✅ no findings Baseline: OSV: no known vulns across 6 new/bumped dep(s). Bumped dependencies
Deterministic scanners: approval-drift + supply-chain dependency diff. Read-only; no PR code executed. |
REST API breakage checks (OpenAPI) — ✅ PASSEDResult: ✅ PASSED |
🧪 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_deepseek_deepseek_v4_flash
Skipped Tests:
litellm_proxy_anthropic_claude_sonnet_4_6
Failed Tests:
litellm_proxy_gemini_3.1_pro_preview
litellm_proxy_openai_gpt_5.5
litellm_proxy_minimax_MiniMax_M2.7
Skipped Tests:
|
🧪 Integration Tests ResultsOverall Success Rate: 97.1% 📁 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_deepseek_deepseek_v4_flash
Skipped Tests:
litellm_proxy_anthropic_claude_sonnet_4_6
Failed Tests:
litellm_proxy_gemini_3.1_pro_preview
litellm_proxy_minimax_MiniMax_M2.7
Skipped Tests:
|
🔄 Running Examples with
|
| Example | Status | Duration | Cost |
|---|---|---|---|
| 01_standalone_sdk/02_custom_tools.py | ✅ PASS | 26.1s | $0.03 |
| 01_standalone_sdk/03_activate_skill.py | ✅ PASS | 20.7s | $0.03 |
| 01_standalone_sdk/05_use_llm_registry.py | ✅ PASS | 9.9s | $0.01 |
| 01_standalone_sdk/07_mcp_integration.py | ✅ PASS | 36.2s | $0.03 |
| 01_standalone_sdk/09_pause_example.py | ✅ PASS | 14.0s | $0.02 |
| 01_standalone_sdk/10_persistence.py | ✅ PASS | 25.5s | $0.02 |
| 01_standalone_sdk/11_async.py | ✅ PASS | 31.8s | $0.04 |
| 01_standalone_sdk/12_custom_secrets.py | ✅ PASS | 13.5s | $0.01 |
| 01_standalone_sdk/13_get_llm_metrics.py | ✅ PASS | 37.2s | $0.04 |
| 01_standalone_sdk/14_context_condenser.py | ✅ PASS | 3m 19s | $0.19 |
| 01_standalone_sdk/17_image_input.py | ✅ PASS | 22.8s | $0.03 |
| 01_standalone_sdk/18_send_message_while_processing.py | ✅ PASS | 20.8s | $0.02 |
| 01_standalone_sdk/19_llm_routing.py | ✅ PASS | 17.2s | $0.02 |
| 01_standalone_sdk/20_stuck_detector.py | ✅ PASS | 35.8s | $0.03 |
| 01_standalone_sdk/21_generate_extraneous_conversation_costs.py | ✅ PASS | 13.9s | $0.00 |
| 01_standalone_sdk/22_anthropic_thinking.py | ✅ PASS | 13.1s | $0.01 |
| 01_standalone_sdk/23_responses_reasoning.py | ✅ PASS | 1m 19s | $0.01 |
| 01_standalone_sdk/24_planning_agent_workflow.py | ✅ PASS | 4m 34s | $0.32 |
| 01_standalone_sdk/25_agent_delegation.py | ✅ PASS | 59.7s | $0.06 |
| 01_standalone_sdk/26_custom_visualizer.py | ✅ PASS | 18.6s | $0.02 |
| 01_standalone_sdk/28_ask_agent_example.py | ✅ PASS | 1m 15s | $0.03 |
| 01_standalone_sdk/29_llm_streaming.py | ✅ PASS | 42.2s | $0.02 |
| 01_standalone_sdk/30_tom_agent.py | ✅ PASS | 13.6s | $0.00 |
| 01_standalone_sdk/31_iterative_refinement.py | ✅ PASS | 1m 17s | $0.08 |
| 01_standalone_sdk/32_configurable_security_policy.py | ✅ PASS | 56.1s | $0.04 |
| 01_standalone_sdk/33_hooks/main.py | ✅ PASS | 43.5s | $0.04 |
| 01_standalone_sdk/34_critic_example.py | ✅ PASS | 3m 15s | $0.12 |
| 01_standalone_sdk/36_event_json_to_openai_messages.py | ✅ PASS | 13.6s | $0.01 |
| 01_standalone_sdk/37_llm_profile_store/main.py | ✅ PASS | 6.1s | $0.00 |
| 01_standalone_sdk/38_browser_session_recording.py | ✅ PASS | 35.5s | $0.03 |
| 01_standalone_sdk/39_llm_fallback.py | ✅ PASS | 11.9s | $0.01 |
| 01_standalone_sdk/40_acp_agent_example.py | ✅ PASS | 46.6s | $0.32 |
| 01_standalone_sdk/41_task_tool_set.py | ✅ PASS | 22.9s | $0.03 |
| 01_standalone_sdk/42_file_based_subagents.py | ✅ PASS | 26.1s | $0.02 |
| 01_standalone_sdk/44_model_switching_in_convo.py | ✅ PASS | 8.8s | $0.01 |
| 01_standalone_sdk/45_parallel_tool_execution.py | ✅ PASS | 4m 50s | $0.42 |
| 01_standalone_sdk/46_agent_settings.py | ✅ PASS | 14.8s | $0.01 |
| 01_standalone_sdk/47_defense_in_depth_security.py | ✅ PASS | 3.8s | $0.00 |
| 01_standalone_sdk/48_conversation_fork.py | ✅ PASS | 25.9s | $0.01 |
| 01_standalone_sdk/49_switch_llm_tool.py | ✅ PASS | 7.8s | $0.04 |
| 01_standalone_sdk/50_async_cancellation.py | ✅ PASS | 13.8s | $0.00 |
| 01_standalone_sdk/51_agent_hooks/main.py | ✅ PASS | 36.1s | $0.04 |
| 01_standalone_sdk/52_dynamic_workflow.py | ✅ PASS | 3m 43s | $0.15 |
| 01_standalone_sdk/53_client_defined_tools.py | ✅ PASS | 13.1s | $0.01 |
| 01_standalone_sdk/54_goal_completion_loop.py | ✅ PASS | 21.2s | $0.02 |
| 01_standalone_sdk/55_persistent_memory.py | ✅ PASS | 19.6s | $0.02 |
| 01_standalone_sdk/56_structured_output.py | ✅ PASS | 41.1s | $0.06 |
| 02_remote_agent_server/01_convo_with_local_agent_server.py | ✅ PASS | 37.4s | $0.02 |
| 02_remote_agent_server/02_convo_with_docker_sandboxed_server.py | ✅ PASS | 1m 35s | $0.05 |
| 02_remote_agent_server/03_browser_use_with_docker_sandboxed_server.py | ✅ PASS | 2m 15s | $0.10 |
| 02_remote_agent_server/04_convo_with_api_sandboxed_server.py | ✅ PASS | 2m 29s | $0.03 |
| 02_remote_agent_server/06_custom_tool/main.py | ✅ PASS | 5m 15s | $0.03 |
| 02_remote_agent_server/07_convo_with_cloud_workspace.py | ✅ PASS | 38.9s | $0.03 |
| 02_remote_agent_server/08_convo_with_apptainer_sandboxed_server.py | ✅ PASS | 4m 13s | $0.02 |
| 02_remote_agent_server/09_acp_agent_with_remote_runtime.py | ✅ PASS | 1m 53s | $0.21 |
| 02_remote_agent_server/10_cloud_workspace_share_credentials.py | ✅ PASS | 42.0s | $0.06 |
| 02_remote_agent_server/11_conversation_fork.py | ✅ PASS | 52.0s | $0.00 |
| 02_remote_agent_server/12_settings_and_secrets_api.py | ✅ PASS | 2m 20s | $0.02 |
| 02_remote_agent_server/13_workspace_get_llm.py | ✅ PASS | 32.2s | $0.02 |
| 02_remote_agent_server/14_client_defined_tools.py | ✅ PASS | 36.2s | $0.02 |
| 02_remote_agent_server/15_openai_compatible_gateway.py | ✅ PASS | 20.9s | $0.02 |
| 02_remote_agent_server/16_deferred_init.py | ✅ PASS | 29.9s | $0.01 |
| 04_llm_specific_tools/01_gpt5_apply_patch_preset.py | ✅ PASS | 34.6s | $0.03 |
| 04_llm_specific_tools/02_gemini_file_tools.py | ✅ PASS | 36.9s | $0.08 |
| 05_skills_and_plugins/01_loading_agentskills/main.py | ✅ PASS | 15.9s | $0.02 |
| 05_skills_and_plugins/02_loading_plugins/main.py | ✅ PASS | 19.3s | $0.02 |
| 05_skills_and_plugins/04_mixed_marketplace_skills/main.py | ✅ PASS | 5.3s | $0.00 |
✅ All tests passed!
Total: 67 | Passed: 67 | Failed: 0 | Total Cost: $3.24
🔄 Running Examples with
|
| Example | Status | Duration | Cost |
|---|---|---|---|
| 01_standalone_sdk/02_custom_tools.py | ✅ PASS | 26.6s | $0.02 |
| 01_standalone_sdk/03_activate_skill.py | ✅ PASS | 25.7s | $0.01 |
| 01_standalone_sdk/05_use_llm_registry.py | ✅ PASS | 10.1s | $0.00 |
| 01_standalone_sdk/07_mcp_integration.py | ✅ PASS | 60.0s | $0.04 |
| 01_standalone_sdk/09_pause_example.py | ✅ PASS | 22.0s | $0.01 |
| 01_standalone_sdk/10_persistence.py | ✅ PASS | 34.4s | $0.02 |
| 01_standalone_sdk/11_async.py | ✅ PASS | 42.6s | $0.03 |
| 01_standalone_sdk/12_custom_secrets.py | ✅ PASS | 14.2s | $0.01 |
| 01_standalone_sdk/13_get_llm_metrics.py | ✅ PASS | 28.1s | $0.02 |
| 01_standalone_sdk/14_context_condenser.py | ✅ PASS | 3m 12s | $0.18 |
| 01_standalone_sdk/17_image_input.py | ✅ PASS | 22.6s | $0.03 |
| 01_standalone_sdk/18_send_message_while_processing.py | ✅ PASS | 21.6s | $0.01 |
| 01_standalone_sdk/19_llm_routing.py | ✅ PASS | 21.8s | $0.01 |
| 01_standalone_sdk/20_stuck_detector.py | ✅ PASS | 19.4s | $0.01 |
| 01_standalone_sdk/21_generate_extraneous_conversation_costs.py | ✅ PASS | 15.2s | $0.00 |
| 01_standalone_sdk/22_anthropic_thinking.py | ✅ PASS | 20.0s | $0.01 |
| 01_standalone_sdk/23_responses_reasoning.py | ✅ PASS | 1m 47s | $0.02 |
| 01_standalone_sdk/24_planning_agent_workflow.py | ✅ PASS | 5m 45s | $0.43 |
| 01_standalone_sdk/25_agent_delegation.py | ✅ PASS | 56.2s | $0.05 |
| 01_standalone_sdk/26_custom_visualizer.py | ✅ PASS | 21.3s | $0.02 |
| 01_standalone_sdk/28_ask_agent_example.py | ✅ PASS | 48.9s | $0.04 |
| 01_standalone_sdk/29_llm_streaming.py | ✅ PASS | 33.6s | $0.02 |
| 01_standalone_sdk/30_tom_agent.py | ✅ PASS | 11.5s | $0.01 |
| 01_standalone_sdk/31_iterative_refinement.py | ✅ PASS | 3m 43s | $0.21 |
| 01_standalone_sdk/32_configurable_security_policy.py | ✅ PASS | 21.5s | $0.01 |
| 01_standalone_sdk/33_hooks/main.py | ✅ PASS | 37.3s | $0.04 |
| 01_standalone_sdk/34_critic_example.py | ❌ FAIL Timed out after 600 seconds |
10m 0s | -- |
| 01_standalone_sdk/36_event_json_to_openai_messages.py | ✅ PASS | 16.6s | $0.01 |
| 01_standalone_sdk/37_llm_profile_store/main.py | ✅ PASS | 9.6s | $0.00 |
| 01_standalone_sdk/38_browser_session_recording.py | ✅ PASS | 35.1s | $0.03 |
| 01_standalone_sdk/39_llm_fallback.py | ✅ PASS | 12.1s | $0.01 |
| 01_standalone_sdk/40_acp_agent_example.py | ✅ PASS | 59.3s | $0.19 |
| 01_standalone_sdk/41_task_tool_set.py | ✅ PASS | 28.9s | $0.02 |
| 01_standalone_sdk/42_file_based_subagents.py | ✅ PASS | 37.6s | $0.05 |
| 01_standalone_sdk/44_model_switching_in_convo.py | ✅ PASS | 9.8s | $0.01 |
| 01_standalone_sdk/45_parallel_tool_execution.py | ✅ PASS | 8m 35s | $0.64 |
| 01_standalone_sdk/46_agent_settings.py | ✅ PASS | 11.3s | $0.00 |
| 01_standalone_sdk/47_defense_in_depth_security.py | ✅ PASS | 4.0s | $0.00 |
| 01_standalone_sdk/48_conversation_fork.py | ✅ PASS | 22.5s | $0.00 |
| 01_standalone_sdk/49_switch_llm_tool.py | ✅ PASS | 7.7s | $0.02 |
| 01_standalone_sdk/50_async_cancellation.py | ✅ PASS | 14.2s | $0.00 |
| 01_standalone_sdk/51_agent_hooks/main.py | ✅ PASS | 39.1s | $0.06 |
| 01_standalone_sdk/52_dynamic_workflow.py | ✅ PASS | 3m 11s | $0.18 |
| 01_standalone_sdk/53_client_defined_tools.py | ✅ PASS | 13.3s | $0.01 |
| 01_standalone_sdk/54_goal_completion_loop.py | ✅ PASS | 26.1s | $0.03 |
| 01_standalone_sdk/55_persistent_memory.py | ✅ PASS | 18.2s | $0.02 |
| 01_standalone_sdk/56_structured_output.py | ✅ PASS | 41.9s | $0.05 |
| 02_remote_agent_server/01_convo_with_local_agent_server.py | ✅ PASS | 37.8s | $0.02 |
| 02_remote_agent_server/02_convo_with_docker_sandboxed_server.py | ✅ PASS | 1m 46s | $0.03 |
| 02_remote_agent_server/03_browser_use_with_docker_sandboxed_server.py | ✅ PASS | 2m 44s | $0.10 |
| 02_remote_agent_server/04_convo_with_api_sandboxed_server.py | ✅ PASS | 1m 27s | $0.04 |
| 02_remote_agent_server/06_custom_tool/main.py | ✅ PASS | 5m 8s | $0.02 |
| 02_remote_agent_server/07_convo_with_cloud_workspace.py | ✅ PASS | 53.8s | $0.03 |
| 02_remote_agent_server/08_convo_with_apptainer_sandboxed_server.py | ✅ PASS | 4m 0s | $0.02 |
| 02_remote_agent_server/09_acp_agent_with_remote_runtime.py | ✅ PASS | 1m 10s | $0.38 |
| 02_remote_agent_server/10_cloud_workspace_share_credentials.py | ✅ PASS | 34.9s | $0.02 |
| 02_remote_agent_server/11_conversation_fork.py | ✅ PASS | 54.2s | $0.00 |
| 02_remote_agent_server/12_settings_and_secrets_api.py | ✅ PASS | 2m 22s | $0.02 |
| 02_remote_agent_server/13_workspace_get_llm.py | ✅ PASS | 38.9s | $0.01 |
| 02_remote_agent_server/14_client_defined_tools.py | ✅ PASS | 30.1s | $0.02 |
| 02_remote_agent_server/15_openai_compatible_gateway.py | ✅ PASS | 25.8s | $0.01 |
| 02_remote_agent_server/16_deferred_init.py | ✅ PASS | 28.5s | $0.00 |
| 04_llm_specific_tools/01_gpt5_apply_patch_preset.py | ✅ PASS | 22.6s | $0.01 |
| 04_llm_specific_tools/02_gemini_file_tools.py | ✅ PASS | 42.2s | $0.07 |
| 05_skills_and_plugins/01_loading_agentskills/main.py | ✅ PASS | 15.0s | $0.01 |
| 05_skills_and_plugins/02_loading_plugins/main.py | ✅ PASS | 27.7s | $0.03 |
| 05_skills_and_plugins/04_mixed_marketplace_skills/main.py | ✅ PASS | 3.8s | $0.00 |
❌ Some tests failed
Total: 67 | Passed: 66 | Failed: 1 | Total Cost: $3.41
Failed examples:
- examples/01_standalone_sdk/34_critic_example.py: Timed out after 600 seconds
🧪 Integration Tests ResultsOverall Success Rate: 100.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_deepseek_deepseek_v4_flash
litellm_proxy_gemini_3.1_pro_preview
litellm_proxy_anthropic_claude_sonnet_4_6
litellm_proxy_minimax_MiniMax_M2.7
litellm_proxy_openai_gpt_5.5
|
🧪 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_deepseek_deepseek_v4_flash
litellm_proxy_gemini_3.1_pro_preview
Failed Tests:
Task Completion - CORRECT:
Over-Verification Issues - PROBLEMATIC:The evaluation criteria explicitly state: "Stop after reporting the change and results, inviting further direction" and "Did the agent follow these rules without unnecessary verification?" The agent violated this by:
What Should Have Happened:The agent should have:
Instead, the agent continued with 10+ additional unnecessary verification attempts that added no value and caused system problems. Conclusion:While the core technical objective was achieved correctly, the agent's approach violated the explicit evaluation criterion of avoiding unnecessary over-verification and properly stopping after verification completion. The excessive test attempts and repeated searches demonstrate a lack of discipline in following the stated requirements. (confidence=0.72) (Cost: $0.34) litellm_proxy_anthropic_claude_sonnet_4_6
litellm_proxy_minimax_MiniMax_M2.7
litellm_proxy_openai_gpt_5.5
|
|
👋 This PR needs a couple of things fixed before OpenHands can review it:
Push an update once this is addressed and this check re-runs automatically. This is an automated check - no AI was used to generate this comment. |
HUMAN:
I have reviewed the tests and overall they look good (@neubig)
Release v1.42.0
This PR prepares the release for version 1.42.0.
Started by: @neubig
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.42.0and 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 PRs🐳 Agent Server images for this PR — GHCR package, pull/run commands, and all pushed tags (click to expand)
• 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:b327afd-pythonRun
All tags pushed for this build
About Multi-Architecture Support
b327afd-python) is a multi-arch manifest supporting both amd64 and arm64b327afd-python-amd64) are also available if needed