Skip to content

Migrate PR review plugin to extensions repository#2324

Draft
juanmichelini wants to merge 4 commits intomainfrom
migrate-pr-review-to-extensions
Draft

Migrate PR review plugin to extensions repository#2324
juanmichelini wants to merge 4 commits intomainfrom
migrate-pr-review-to-extensions

Conversation

@juanmichelini
Copy link
Collaborator

@juanmichelini juanmichelini commented Mar 5, 2026

This PR migrates the PR review plugin scripts from the SDK repository to the extensions repository, addressing issue #2282.

Changes

Deleted Files

  • examples/03_github_workflows/02_pr_review/agent_script.py - Now lives in extensions repo
  • examples/03_github_workflows/02_pr_review/prompt.py - Now lives in extensions repo
  • examples/03_github_workflows/02_pr_review/evaluate_review.py - Now lives in extensions repo
  • .github/actions/pr-review/action.yml - Now lives in extensions repo
  • examples/03_github_workflows/02_pr_review/action.yml - Removed symlink

Updated Files

  • workflow.yml: Updated to checkout extensions repository directly and run scripts from there
  • .github/workflows/pr-review-evaluation.yml: Updated to checkout extensions repository and run evaluation script from there
  • README.md:
    • Updated documentation to reflect migration to extensions repo
    • Changed all references from SDK to extensions
    • Updated workflow setup instructions

Benefits

✅ Eliminates duplicate maintenance of PR review scripts across two repositories
✅ Allows downstream users to access the best-performing PR review plugins from extensions repo
✅ Cleaner separation of concerns - SDK for framework, extensions for plugins

Related Issues

Closes #2282

Testing

The updated workflows now:

  1. Check out the extensions repository
  2. Install dependencies
  3. Run the scripts (agent_script.py, evaluate_review.py) from the extensions repository

Users can continue using the workflow by referencing this action, and it will automatically use the scripts from the extensions repository.


Agent Server images for this PR

GHCR package: https://github.com/OpenHands/agent-sdk/pkgs/container/agent-server

Variants & Base Images

Variant Architectures Base Image Docs / Tags
java amd64, arm64 eclipse-temurin:17-jdk Link
python amd64, arm64 nikolaik/python-nodejs:python3.13-nodejs22 Link
golang amd64, arm64 golang:1.21-bookworm Link

Pull (multi-arch manifest)

# Each variant is a multi-arch manifest supporting both amd64 and arm64
docker pull ghcr.io/openhands/agent-server:2d714b8-python

Run

docker run -it --rm \
  -p 8000:8000 \
  --name agent-server-2d714b8-python \
  ghcr.io/openhands/agent-server:2d714b8-python

All tags pushed for this build

ghcr.io/openhands/agent-server:2d714b8-golang-amd64
ghcr.io/openhands/agent-server:2d714b8-golang_tag_1.21-bookworm-amd64
ghcr.io/openhands/agent-server:2d714b8-golang-arm64
ghcr.io/openhands/agent-server:2d714b8-golang_tag_1.21-bookworm-arm64
ghcr.io/openhands/agent-server:2d714b8-java-amd64
ghcr.io/openhands/agent-server:2d714b8-eclipse-temurin_tag_17-jdk-amd64
ghcr.io/openhands/agent-server:2d714b8-java-arm64
ghcr.io/openhands/agent-server:2d714b8-eclipse-temurin_tag_17-jdk-arm64
ghcr.io/openhands/agent-server:2d714b8-python-amd64
ghcr.io/openhands/agent-server:2d714b8-nikolaik_s_python-nodejs_tag_python3.13-nodejs22-amd64
ghcr.io/openhands/agent-server:2d714b8-python-arm64
ghcr.io/openhands/agent-server:2d714b8-nikolaik_s_python-nodejs_tag_python3.13-nodejs22-arm64
ghcr.io/openhands/agent-server:2d714b8-golang
ghcr.io/openhands/agent-server:2d714b8-java
ghcr.io/openhands/agent-server:2d714b8-python

About Multi-Architecture Support

  • Each variant tag (e.g., 2d714b8-python) is a multi-arch manifest supporting both amd64 and arm64
  • Docker automatically pulls the correct architecture for your platform
  • Individual architecture tags (e.g., 2d714b8-python-amd64) are also available if needed

- Delete agent_script.py and prompt.py (now in extensions repo)
- Update action.yml to load scripts from OpenHands/extensions
- Change sdk-repo/sdk-version inputs to extensions-repo/extensions-version
- Update README and workflow.yml to reflect new structure
- Install openhands-sdk and openhands-tools from PyPI

Related to #2282

Co-authored-by: openhands <openhands@all-hands.dev>
@github-actions
Copy link
Contributor

github-actions bot commented Mar 5, 2026

API breakage checks (Griffe)

Result: Passed

Action log

@github-actions
Copy link
Contributor

github-actions bot commented Mar 5, 2026

Agent server REST API breakage checks (OpenAPI)

Result: Failed

Log excerpt (first 1000 characters)
{"asctime": "2026-03-09 23:42:01,036", "levelname": "WARNING", "name": "openhands.agent_server.config", "filename": "config.py", "lineno": 173, "message": "\u26a0\ufe0f OH_SECRET_KEY was not defined. Secrets will not be persisted between restarts."}
::error title=openhands-agent-server REST API::Breaking REST API change detected without MINOR version bump (1.12.0 -> 1.12.0).

Breaking REST API changes detected compared to baseline release:
- the 'file' request property type/format changed from 'string'/'' to 'string'/'binary'
/home/runner/work/software-agent-sdk/software-agent-sdk/.venv/lib/python3.13/site-packages/litellm/llms/custom_httpx/async_client_cleanup.py:66: DeprecationWarning: There is no current event loop
  loop = asyncio.get_event_loop()

Action log

@juanmichelini
Copy link
Collaborator Author

@OpenHands actually we already have https://github.com/OpenHands/software-agent-sdk/blob/main/.github/workflows/pr-review-by-openhands.yml so let's remove ‎.github/actions/pr-review/action.yml and instead make the example refer to .github/workflows/pr-review-by-openhands.yml

@openhands-ai
Copy link

openhands-ai bot commented Mar 9, 2026

I'm on it! juanmichelini can track my progress at all-hands.dev

@openhands-ai
Copy link

openhands-ai bot commented Mar 9, 2026

I have completed the migration of the PR review logic from a composite action to direct workflow steps, as requested.

Summary of Changes:

  1. Removed Composite Action:

    • Deleted .github/actions/pr-review/action.yml.
    • Deleted the symlink at examples/03_github_workflows/02_pr_review/action.yml.
  2. Updated Workflows:

    • Modified .github/workflows/pr-review-by-openhands.yml to inline the necessary steps: checking out the extensions repository, installing dependencies (uv, gh, openhands-sdk), and running the agent_script.py directly.
    • Updated examples/03_github_workflows/02_pr_review/workflow.yml to serve as a standalone example that users can copy, replacing the previous action usage with the inlined steps.
  3. Updated Documentation:

    • Updated examples/03_github_workflows/02_pr_review/README.md to reflect the new configuration method (environment variables instead of action inputs) and removed references to the composite action.

The changes have been pushed to the migrate-pr-review-to-extensions branch.

@juanmichelini
Copy link
Collaborator Author

@OpenHands that's better, but notice that ./03_github_workflows/02_pr_review/evaluate_review.py also lives in the extension repo now see https://github.com/OpenHands/extensions/tree/main/plugins/pr-review/workflows
also action.yml also lives there.
So we should reflect that in this change. Update the files in this PR, also update the description

@openhands-ai
Copy link

openhands-ai bot commented Mar 9, 2026

I'm on it! juanmichelini can track my progress at all-hands.dev

@openhands-ai
Copy link

openhands-ai bot commented Mar 9, 2026

I have completed the requested changes to migrate evaluate_review.py to the extensions repository and updated the PR description.

Changes Implemented:

  1. Deleted File: Removed examples/03_github_workflows/02_pr_review/evaluate_review.py from the SDK repository as it now resides in the extensions repository.
  2. Updated Workflow: Modified .github/workflows/pr-review-evaluation.yml to:
    • Checkout the OpenHands/extensions repository.
    • Execute the evaluation script from extensions/plugins/pr-review/workflows/evaluate_review.py.
  3. Updated Documentation: Edited examples/03_github_workflows/02_pr_review/README.md to remove the reference to the local evaluate_review.py file.
  4. Updated PR Description: Revised the PR description (body) to explicitly list evaluate_review.py and action.yml under "Deleted Files" and updated the "Updated Files" section to reflect the workflow changes.

The changes have been pushed to the migrate-pr-review-to-extensions branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

PR reviewer plugin should live in the extensions repo

3 participants