Skip to content
This repository was archived by the owner on Sep 7, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 21 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,29 @@ jobs:
with:
python-version: '3.12'

- name: Resolve openhands-sdk source

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this correct? Just asking

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is useful to test CI when typescript-client depends on an unreleased version of openhands-sdk.

id: sdk-source
env:
GH_TOKEN: ${{ github.token }}
PR_BODY: ${{ github.event.pull_request.body || '' }}
run: |
sdk_repo=OpenHands/software-agent-sdk
sdk_ref=main
if [[ "$PR_BODY" =~ github.com/OpenHands/software-agent-sdk/pull/([0-9]+) ]]; then
sdk_pr=${BASH_REMATCH[1]}
sdk_metadata=$(gh api "repos/OpenHands/software-agent-sdk/pulls/$sdk_pr")
sdk_repo=$(jq -r '.head.repo.full_name' <<< "$sdk_metadata")
sdk_ref=$(jq -r '.head.sha' <<< "$sdk_metadata")
fi
echo "repo=$sdk_repo" >> "$GITHUB_OUTPUT"
echo "ref=$sdk_ref" >> "$GITHUB_OUTPUT"

- name: Install openhands-sdk
run: pip install -r scripts/requirements-acp-check.txt
run: >-
pip install
"openhands-sdk @ git+https://github.com/${{ steps.sdk-source.outputs.repo }}@${{ steps.sdk-source.outputs.ref }}#subdirectory=openhands-sdk"

- name: Check ACP_PROVIDERS matches openhands-sdk
env:
OPENHANDS_SUPPRESS_BANNER: '1'
run: python scripts/check-acp-drift.py
run: python scripts/check-acp-drift.py
3 changes: 2 additions & 1 deletion scripts/requirements-acp-check.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Pinned dependency for scripts/check-acp-drift.py.
# Tracks `main` of OpenHands/software-agent-sdk intentionally: the drift
# check exists to fail CI when ACP_PROVIDERS moves upstream so this repo's
# JSON mirror gets updated. Do NOT pin to a tag or sha.
# JSON mirror gets updated. Do NOT pin to a tag or sha. CI resolves a companion
# SDK PR linked in the TypeScript client PR description before installing.
openhands-sdk @ git+https://github.com/OpenHands/software-agent-sdk@main#subdirectory=openhands-sdk
9 changes: 9 additions & 0 deletions src/__tests__/acp-providers.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,15 @@ describe('ACP provider credential descriptors', () => {
expect(provider.base_url_env_var).toBe(baseUrlEnvVar);
});

it('uses the maintained Codex adapter and exposes GPT-5.6 models', () => {
const codex = ACP_PROVIDERS.codex;
expect(codex.default_command).toEqual(['npx', '-y', '@agentclientprotocol/codex-acp@1.1.2']);
expect(codex.default_session_mode).toBe('agent-full-access');
expect(codex.available_models.map((model) => model.id)).toEqual(
expect.arrayContaining(['gpt-5.6', 'gpt-5.6-sol', 'gpt-5.6-terra', 'gpt-5.6-luna'])
);
});

describe('file_secrets', () => {
it('claude-code authenticates via env var only (no file secrets)', () => {
expect(ACP_PROVIDERS['claude-code'].file_secrets).toEqual([]);
Expand Down
20 changes: 18 additions & 2 deletions src/models/acp-providers.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,30 @@
"codex": {
"key": "codex",
"display_name": "Codex",
"default_command": ["npx", "-y", "@zed-industries/codex-acp@0.16.0"],
"default_command": ["npx", "-y", "@agentclientprotocol/codex-acp@1.1.2"],
"api_key_env_var": "OPENAI_API_KEY",
"base_url_env_var": "OPENAI_BASE_URL",
"default_session_mode": "full-access",
"default_session_mode": "agent-full-access",
"agent_name_patterns": ["codex-acp"],
"supports_set_session_model": true,
"session_meta_key": null,
"available_models": [
{
"id": "gpt-5.6",
"label": "GPT-5.6"
},
{
"id": "gpt-5.6-sol",
"label": "GPT-5.6 Sol"
},
{
"id": "gpt-5.6-terra",
"label": "GPT-5.6 Terra"
},
{
"id": "gpt-5.6-luna",
"label": "GPT-5.6 Luna"
},
{
"id": "gpt-5.5",
"label": "GPT-5.5"
Expand Down
Loading