mirror of
https://github.com/OpenHands/OpenHands.git
synced 2026-10-07 16:58:14 +08:00
Closes #587. PR #416 introduced src/constants/acp-providers.ts as a hand-kept TypeScript mirror of the Python registry in openhands-sdk/openhands/sdk/settings/acp_providers.py (OpenHands/software-agent-sdk). Drift between the two is hazardous: during PR #416's E2E we briefly shipped ["npx","-y","@openai/codex","acp"], which is not a valid ACP server, and the agent-server deadlocked on the handshake instead of failing loudly. This commit adds the minimum infrastructure to catch that class of drift before it lands: - scripts/check-acp-providers-sync.mjs fetches the SDK file (from a configurable ref, default `main`), parses both registries with a string-aware brace matcher, and diffs them on the three fields canvas mirrors: key, display_name, default_command. The richer SDK record (api_key_env_var, session mode, agent_name_patterns, etc.) is intentionally not compared because canvas does not mirror it. --sdk-file lets the script run offline against a local SDK checkout for development. - .github/workflows/acp-providers-sync.yml runs the check on PRs touching the mirror or the script, on push to main, on a daily cron (to catch SDK-side drift that did not ping us), via workflow_dispatch, and via repository_dispatch (so the SDK repo can trigger us when it changes acp_providers.py — payload key `sdk_ref`). Co-authored-by: Debug Agent <debug@example.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>