v1.17.0
What's Changed
- feat(tools/tom_consult): declare resources for parallel execution by @VascoSch92 in #2663
- fix(acp): install Node 22 for ACP and defer remote ACP init until run by @simonrosenberg in #2656
- Release v1.16.1 by @all-hands-bot in #2665
- chore(deps): bump cryptography from 46.0.5 to 46.0.6 by @dependabot[bot] in #2672
- chore(deps): bump actions/checkout from 4 to 6 by @dependabot[bot] in #2661
- fix(tools): prevent duplicate WithRisk/WithSummary Action classes in sub-agent conversations by @VascoSch92 in #2649
- fix: propagate acp_model to metrics for accurate cost attribution by @simonrosenberg in #2677
- Add dashscope/qwen3.6-plus to resolve_model_config.py by @juanmichelini in #2681
- fix(sdk): use AI agent in disclosure example by @enyst in #2675
- Add contributors section to README by @jamiechicago312 in #2658
- feat: add automation context tags to conversations by @malhotra5 in #2632
- chore(deps): bump lewagon/wait-on-check-action from 1.5.0 to 1.6.0 by @dependabot[bot] in #2660
- feat(security): defense-in-depth security analyzers by @Fieldnote-Echo in #2472
- feat(skills): add shell command execution in frontmatter for dynamic context by @VascoSch92 in #2582
- Apptainer gpu passthrough by @neubig in #2695
- fix(acp): add activity heartbeat to prevent idle runtime kill during conn.prompt() by @simonrosenberg in #2698
- feat(sdk): add redact_url_params() for URL query parameter redaction by @simonrosenberg in #2700
- fix(agent-server): sanitize 422 error responses to prevent secret leakage by @simonrosenberg in #2679
- fix(acp): retry transient ACP server errors (JSON-RPC -32603) by @simonrosenberg in #2699
- Add instruction to verify PR status before pushing by @xingyaoww in #2696
- Bump pytest to >=9.0.0 to unblock Dependabot by @aivong-openhands in #2705
- Fix auto-title race condition: extract message before background task by @rbren in #2599
- docs: add cross-repo testing skill for SDK ↔ OH Cloud e2e workflow by @xingyaoww in #2477
- Fix _extract_summary popping real tool parameters named "summary" by @xingyaoww in #2633
- fix(deps): upgrade litellm to fix fastapi import bug in Responses API by @xingyaoww in #2714
- fix: ERROR when agent finishes on final iteration (#2659) by @trayanmomkov in #2720
- feat(agent-server): expose settings schema by @neubig in #2651
- Migrate Claude ACP package name by @simonrosenberg in #2702
- fix: Incremental view construction by @csmith49 in #2586
- fix(sdk): recover malformed tool history via condensation by @enyst in #2613
- chore(deps): bump slackapi/slack-github-action from 2.1.1 to 3.0.1 by @dependabot[bot] in #2578
- feat(agent-server): register builtin agents on startup by @VascoSch92 in #2710
- Deprecate DelegateTool in favor of TaskToolSet by @VascoSch92 in #2668
- chore(deps): bump pygments from 2.19.2 to 2.20.0 by @dependabot[bot] in #2731
- chore(deps): bump fastmcp from 3.1.0 to 3.2.0 by @dependabot[bot] in #2643
- chore(deps): bump aiohttp from 3.13.3 to 3.13.4 by @dependabot[bot] in #2732
- chore(test): update docstring link to correct PR (#2264) by @kushalsai-01 in #2733
- refactor(tools): built-in agents by @VascoSch92 in #2511
- fix(sdk): Use concise error message for tool validation errors by @VascoSch92 in #2748
- fix(llm): cap auto-detected max_output_tokens when it fills the entire context window by @csmith49 in #2747
- feat(tools/task): make TaskManager thread-safe for parallel execution by @VascoSch92 in #2719
- fix: add prompt-level defense against repo context injection attacks by @sumleo in #2543
- fix(sdk): recover dict/list args with trailing garbage in tool calls by @VascoSch92 in #2753
- chore(deps): bump litellm from 1.82.6 to 1.83.0 by @dependabot[bot] in #2750
- feat(tools/gemini): declare file-path resources for parallel execution by @VascoSch92 in #2723
- Add trinity-large-thinking to resolve_model_config.py by @juanmichelini in #2760
- Update PR template to match OpenHands/OpenHands repository by @jamiechicago312 in #2730
- feat(tools/terminal): tmux pane pool for parallel terminal execution by @VascoSch92 in #2669
- feat: add experimental QA changes workflow by @xingyaoww in #2717
- feat: Expose agent final response via REST API endpoint by @xingyaoww in #2690
- chore(deps): bump pypdf from 6.9.1 to 6.9.2 by @dependabot[bot] in #2646
- Add openrouter/z-ai/glm-5.1 to resolve_model_config (fixes #2768) by @juanmichelini in #2769
- fix(agent-server): await conversation teardown in EventService.close() by @VascoSch92 in #2734
- Add support for EXTENSIONS_REF environment variable by @juanmichelini in #2607
- docs: document gh workflow run for integration tests in ADDINGMODEL.md by @juanmichelini in #2783
- Unify skills modules: move context/skills to sdk/skills by @csmith49 in #2774
- Move marketplace definitions to openhands.sdk.marketplace module by @csmith49 in #2786
- fix(sdk): metrics desync between LLM and Telemetry after restore by @VascoSch92 in #2736
- fix: restore self-contained /agent-server with uv-managed Python by @simonrosenberg in #2765
- Skip PyPI publishing for GitHub pre-releases by @xingyaoww in #2800
- fix: use GITHUB_SHA env var for image tag in server workflow by @simonrosenberg in #2799
- test: add additional regression tests for restore_metrics telemetry sync (#13843) by @Jinhaooo in #2793
- fix(ci): keep REST release-based and enforce SDK deprecation runway by @enyst in #2802
- Fix remaining tmux session leaks in agent-server startup and task cleanup by @rbren in #2805
- refactor(settings): split agent and conversation settings schemas by @neubig in #2789
New Contributors
- @Fieldnote-Echo made their first contribution in #2472
- @trayanmomkov made their first contribution in #2720
- @kushalsai-01 made their first contribution in #2733
- @sumleo made their first contribution in #2543
- @Jinhaooo made their first contribution in #2793
Full Changelog: v1.16.1...v1.17.0