Repository navigation
feat: publish typed Agent Server OpenAPI contract - #4229
Merged
Merged
Conversation
Contributor
Python API breakage checks — ✅ PASSEDResult: ✅ PASSED |
Contributor
REST API breakage checks (OpenAPI) — ✅ PASSEDResult: ✅ PASSED |
Contributor
Coverage Report •
|
||||||||||||||||||||||||||||||||||||||||||||||||||
Co-authored-by: openhands <openhands@all-hands.dev>
neubig
force-pushed
the
feat/oss-6121-agent-server-openapi-contract
branch
from
July 27, 2026 12:26
69db2a6 to
da2876f
Compare
This was referenced Jul 27, 2026
neubig
marked this pull request as ready for review
July 27, 2026 16:07
2 of 5 tasks
2 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
HUMAN:
I have checked the schema and it looks good.
AGENT:
Why
The Python/Pydantic Agent Server models are authoritative, but consumers cannot currently obtain a deterministic, release-specific public OpenAPI document, and several MCP/settings output schemas degrade to empty or unrestricted values. That prevents
@openhands/typescript-clientfrom reproducibly generating the contract and allows security-sensitive settings shapes to drift unnoticed.Fixes #4227
Linear: OSS-6121
Summary
make test-server-schema, release tooling, and the existing API compatibility checker.openapi.jsonwith release binaries and checksums.REST API contract changes
Compared with base OpenAPI
14876fc97180for public/api/**paths.Issue Number
#4227 / OSS-6121
How to Test
SDK validation performed on commit
da2876f6:make test-server-schema— exported twice byte-identically, passed the type-quality ratchet with 98 explicitly allowlisted current locations, and passed Swagger validation.git diff --checkpassed.Canvas compatibility was exercised against this exact local SDK checkout, not a released server:
OpenHands/agent-canvasproduction app.OH_AGENT_SERVER_LOCAL_PATHpointing at this branch.tests/e2e/mock-llm/mcp/mock-llm-mcp-github.spec.tsin Chromium.The Canvas run used a temporary HOME plus separate XDG config/data/cache paths, a workspace-only
OH_CANVAS_SAFE_STATE_DIR, isolated settings/persistence/session keys, and non-default service ports. It never read or wrote~/.openhands; generated state and services were removed after the run.Video/Screenshots
Not applicable: this PR changes the server contract/export and release artifacts without changing Canvas UI. The real Canvas full-stack E2E result above is the behavioral evidence.
Type
Notes
The public release artifact prunes unreachable components, while the existing release-to-release checker deliberately retains historical components so it can enforce deprecation runway after a route is removed.
A separate
pre-commit run pyright --all-filesdiagnostic run was killed with exit 247 after reporting zero errors in the changed code and four existing warnings in untouched files. The required staged-file Pyright hook passed cleanly during commit.Agent 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:86b6cbb-pythonRun
All tags pushed for this build
About Multi-Architecture Support
86b6cbb-python) is a multi-arch manifest supporting both amd64 and arm6486b6cbb-python-amd64) are also available if needed