fix(openhands-api): share the Agent Canvas link for delegated conversations - #714
Merged
Merged
Conversation
…ations The delegation checklist and Python example built the legacy /conversations/<id> route. OpenHandsAPI.app_conversation_ui_url() returns the server's conversation_ui_url and falls back to <base_url>/canvas/conversations/<id> on servers that predate the field. Co-authored-by: openhands <openhands@all-hands.dev>
2 of 6 tasks
lilagrc
marked this pull request as ready for review
October 1, 2026 20:13
Closed
8 tasks
lilagrc
marked this pull request as draft
October 1, 2026 20:21
2 of 6 tasks
lilagrc
marked this pull request as ready for review
October 1, 2026 22:45
saurya
approved these changes
Oct 2, 2026
Contributor
|
🚀 Released in v0.26.0. |
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:
Manually verified this, along with OpenHands/OpenHands#17842 and OpenHands/enterprise#606, produced the correct, canvas conversation link when for a sub agent delegated conversation.
TODO
AGENT:
Why
When an agent delegates work with
POST /api/v1/app-conversations, it gives the user a link built from this skill:https://app.all-hands.dev/conversations/<id>in the delegation checklist, and{base_url}/conversations/<id>in the Python example. Both open the legacy UI, not Agent Canvas, which is served at/canvas. The checklist also hardcodes the Cloud host, so agents running on self-hosted Enterprise link to a different server.Summary
OpenHandsAPI.app_conversation_ui_url(conversation_id). It returns the conversation'sconversation_ui_url, which the app server adds in fix(conversations): OHE-3432 return an Agent Canvas link in the API enterprise#606. Servers that don't return it yet get<base_url>/canvas/conversations/<id>.conversation_url, which is the sandbox's agent-server API.skills/index.jsis regenerated withnpm run build:skills.Issue Number
Fixes #717
Tracked in Linear as OHE-3432. Related fixes: OpenHands/enterprise#606 (server) and OpenHands/OpenHands#17842 (Agent Canvas).
How to Test
uv run pytest -q tests/test_openhands_api_python.py: the two new tests failed before the change (AttributeError: 'OpenHandsAPI' object has no attribute 'app_conversation_ui_url') and pass now. They cover the server-provided link and the fallback.uv run pytest -q: 1102 passed, 23 skipped.python scripts/sync_extensions.py --checkis clean.End to end, read-only, against a live OpenHands Enterprise instance, using the edited client with an existing conversation:
That instance doesn't run the server change yet, so this exercised the fallback. The link opens the conversation in Agent Canvas. The server-provided path is covered by the unit test until the server change is deployed.
Video/Screenshots
None. The change is to a client helper and docs.
Notes
<LOCAL_AGENT_SERVER_URL>/conversations/<id>. That's correct: standalone Agent Canvas serves at the root, not under/canvas.github-issue-to-pr,gitlab-issue-to-mr,slack-channel-monitor,news-digest, and others) also build/conversations/<id>links. They are separate skills and are left for follow-up PRs.This PR was drafted by an AI agent on behalf of the user.
@lilagrc can click here to continue refining the PR