Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
e44497d
Update codex to 0.142.2 (#239)
acp-release-bot[bot] Jun 25, 2026
30e6144
Pin GitHub Actions to commit SHAs (#218)
benbrandt Jun 25, 2026
94712ca
Cleanups (#219)
benbrandt Jun 25, 2026
302e995
fix: keep exec command fallback tracking consistent (#220)
benbrandt Jun 25, 2026
a193548
fix: Map collab agent tool call events (#223)
benbrandt Jun 25, 2026
374e684
fix: Remove sub-agent sources from session listing (#235)
benbrandt Jun 25, 2026
3a63598
Support API key auth from environment variables (#236)
benbrandt Jun 25, 2026
72c9a10
build(deps): bump the github-actions group with 3 updates (#241)
dependabot[bot] Jun 25, 2026
1f58237
Handle ACP request cancellation (#221)
benbrandt Jun 25, 2026
54dcc04
fix: use configured model provider on session resume (#224)
david-melville Jun 26, 2026
b7c78dd
fix: Track configured auth for turn errors (#245)
benbrandt Jun 26, 2026
b719332
Update ACP SDK to 1.0.0 (#246)
benbrandt Jun 26, 2026
373c42d
fix: Skip ChatGPT login when already authenticated (#247)
benbrandt Jun 26, 2026
ebc65b5
Keep configured model id for custom providers instead of forcing the …
scottzx Jun 26, 2026
956f71a
Release v1.0.1
github-actions[bot] Jun 26, 2026
b861bca
Update codex to 0.142.3 (#249)
acp-release-bot[bot] Jun 29, 2026
50c6adf
Update codex to 0.142.4 (#253)
acp-release-bot[bot] Jun 29, 2026
211b7d7
feat: Add /goal support (#240)
benbrandt Jun 29, 2026
3a3e8f6
Fix skill listing for session cwd (#251)
LucaDiba Jun 29, 2026
fbc8f84
fix: remove fast session config option if model doesn't support it (#…
AlexandrSuhinin Jun 29, 2026
5506fba
Release v1.0.2
github-actions[bot] Jun 29, 2026
7fb6ddd
Update ACP SDK v1.1 and dev tools (#257)
benbrandt Jun 30, 2026
a5d223c
Handle completed image generation items (#262)
benbrandt Jul 1, 2026
2753785
Update codex to 0.142.5 (#261)
acp-release-bot[bot] Jul 1, 2026
a744380
Emit goal changes as session metadata (#263)
benbrandt Jul 1, 2026
ef5e169
Support boolean Fast mode config options (#255)
benbrandt Jul 2, 2026
8309bc2
feat: Add message IDs to text session chunks (#256)
benbrandt Jul 2, 2026
259c16d
Upgrade vscode-jsonrpc to v9 (#258)
benbrandt Jul 2, 2026
c4e55d5
Release v1.1.0
github-actions[bot] Jul 2, 2026
c516b9a
Update ACP SDK to 1.2.0 (#265)
benbrandt Jul 7, 2026
6a314a5
build: Don't create empty commits for Codex update
ishulgin Jul 8, 2026
f0d6ff2
Update codex to 0.143.0
github-actions[bot] Jul 8, 2026
80691ad
build: Delete branches for obsolete Codex update PRs
ishulgin Jul 8, 2026
27cb818
test: Wrap expected content in file approval e2e test prompt
ishulgin Jul 8, 2026
843a504
Expose Codex agent message phases in ACP chunks (#267)
nikita-ashihmin Jul 8, 2026
8872bc2
build(deps): bump openai/codex-action in the github-actions group (#273)
dependabot[bot] Jul 8, 2026
3f78868
Support MCP elicitation if the client does (#268)
benbrandt Jul 9, 2026
8d13a10
Update to ACP SDK 1.2.1 (#275)
benbrandt Jul 9, 2026
f9f0994
Release v1.1.1
github-actions[bot] Jul 9, 2026
6ff8d01
Update codex to 0.144.0
github-actions[bot] Jul 9, 2026
5013bd9
Release v1.1.2
github-actions[bot] Jul 9, 2026
8aff492
test: Fix missing model id
ishulgin Jul 9, 2026
fb85c05
Merge remote-tracking branch 'upstream/main'
Leeeon233 Jul 9, 2026
1632afa
docs: design upstream goal cleanup
Leeeon233 Jul 10, 2026
51ad48d
refactor: remove duplicate goal implementation
Leeeon233 Jul 10, 2026
7357481
chore:
Leeeon233 Jul 10, 2026
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
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
# Check for updates to GitHub Actions every week
interval: "weekly"
groups:
github-actions:
patterns:
- "*"
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ jobs:
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- uses: actions/setup-node@v6
with:
node-version: '24'
- uses: oven-sh/setup-bun@v2
node-version: "24"
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6
with:
bun-version: 1.3.11
- name: Install dependencies
Expand Down
25 changes: 13 additions & 12 deletions .github/workflows/codex-update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@ name: Codex Update

on:
schedule:
- cron: '0 5 * * *'
- cron: "0 5 * * *"
workflow_dispatch:

permissions:
contents: read
packages: read

env:
CODEX_PACKAGE: '@openai/codex'
CODEX_UPDATE_LABEL: 'codex-update'
GITHUB_BOT_USERNAME: 'github-actions[bot]'
CODEX_PACKAGE: "@openai/codex"
CODEX_UPDATE_LABEL: "codex-update"
GITHUB_BOT_USERNAME: "github-actions[bot]"

jobs:
check:
Expand All @@ -22,7 +22,7 @@ jobs:
version: ${{ steps.check.outputs.version }}
branch: ${{ steps.check.outputs.branch }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
fetch-depth: 0

Expand Down Expand Up @@ -58,13 +58,13 @@ jobs:
VERSION: ${{ needs.check.outputs.version }}
steps:
- name: Generate GitHub token
uses: actions/create-github-app-token@v2
uses: actions/create-github-app-token@v3
id: generate-token
with:
app-id: ${{ secrets.RELEASE_PLZ_APP_ID }}
private-key: ${{ secrets.RELEASE_PLZ_APP_PRIVATE_KEY }}

- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
token: ${{ steps.generate-token.outputs.token }}

Expand All @@ -83,20 +83,21 @@ jobs:

- name: Finalize update with Codex
id: codex-finalize
uses: openai/codex-action@v1
uses: openai/codex-action@52fe01ec70a42f454c9d2ebd47598f9fd6893d56
with:
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
codex-version: ${{ env.VERSION }}
output-file: pr-body.md
codex-args: >-
-c sandbox_workspace_write.writable_roots=["${{ github.workspace }}/.git"]
prompt: >
Finalize the update using codex-update-compat skill.
Commit the changes, the message should mention that types or/and tests after the update were fixed.
Finalize the update using codex-update-compat skill.
Commit only tracked file changes, and never create an empty commit.
If there are changes, the commit message should mention that types or/and tests after the update were fixed.
When creating the final message do not mention:
* Validation run details.
* Commits.
* Hyperlinks.
* Hyperlinks.
Mention only previously failed tests with failure reasons, also what you changed and why.

- name: Push branch updates
Expand Down Expand Up @@ -141,6 +142,6 @@ jobs:
fi

gh pr close "$pr_number" \
--delete-branch \
--comment "Closing obsolete update PR"
done

8 changes: 4 additions & 4 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- uses: actions/setup-node@v6
with:
node-version: '24'
Expand All @@ -40,7 +40,7 @@ jobs:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- uses: actions/setup-node@v6
with:
node-version: '24'
Expand All @@ -54,14 +54,14 @@ jobs:
permissions: {}
steps:
- name: Generate GitHub token
uses: actions/create-github-app-token@v2
uses: actions/create-github-app-token@v3
id: generate-token
with:
app-id: ${{ secrets.RELEASE_PLZ_APP_ID }}
private-key: ${{ secrets.RELEASE_PLZ_APP_PRIVATE_KEY }}

- name: Create Release
uses: softprops/action-gh-release@3bb12739c298aeb8a4eeaf626c5b8d85266b0e65 # v2.6.2
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
with:
token: ${{ steps.generate-token.outputs.token }}
generate_release_notes: true
4 changes: 2 additions & 2 deletions .github/workflows/version-bump.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Generate GitHub token
uses: actions/create-github-app-token@v2
uses: actions/create-github-app-token@v3
id: generate-token
with:
app-id: ${{ secrets.RELEASE_PLZ_APP_ID }}
private-key: ${{ secrets.RELEASE_PLZ_APP_PRIVATE_KEY }}

- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
token: ${{ steps.generate-token.outputs.token }}

Expand Down
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,17 +40,20 @@ CODEX_PATH=/path/to/codex npx -y acp-extension-codex

The adapter advertises ACP auth methods during initialization. Clients can authenticate with:

- ChatGPT login.
- OpenAI API key.
- ChatGPT login. Set `NO_BROWSER=1` to hide this method in remote or browserless environments.
- API key via `CODEX_API_KEY` or `OPENAI_API_KEY`.
- A custom OpenAI-compatible gateway, when the client opts in to the gateway auth capability.

## Runtime options

- `CODEX_API_KEY` - API key used when the API-key auth method is selected. Takes precedence over `OPENAI_API_KEY`.
- `OPENAI_API_KEY` - fallback API key used when the API-key auth method is selected.
- `CODEX_PATH` - run a specific Codex executable instead of the bundled package dependency.
- `CODEX_CONFIG` - JSON object merged into the Codex session config.
- `MODEL_PROVIDER` - model provider to pass to Codex for new sessions.
- `DEFAULT_AUTH_REQUEST` - ACP auth request JSON used when Codex requires authentication.
- `INITIAL_AGENT_MODE` - initial mode id: `read-only`, `agent`, or `agent-full-access`.
- `NO_BROWSER` - hide browser-based ChatGPT auth when set.
- `APP_SERVER_LOGS` - directory for adapter logs.

## Development
Expand Down
11 changes: 11 additions & 0 deletions docs/superpowers/plans/2026-07-10-upstream-goal-fast-cleanup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Upstream Goal/Fast Cleanup Implementation Plan

1. Remove fork goal ACP extension constants, request types, parsers, route registration, and server/client forwarding wrappers.
2. Preserve upstream goal setters, runtime-effect tracking, session metadata, cancellation, and `/goal` orchestration.
3. Remove raw goal notifications and restore upstream goal event tests/snapshots.
4. Restore upstream no-argument `/goal` behavior and remove fork-only goal formatting/tests.
5. Delete the fork goal extension test suite and scan for remaining fork goal symbols.
6. Verify Plan Mode/proposed-plan code is unchanged.
7. Verify Fast Mode source and behavior match upstream and the ACP SDK dependency/lock resolution matches upstream.
8. Run targeted tests, typecheck, the complete test suite, npm build/package checks, and all CI Bun bundles.
9. Review the final diff and commit the implementation.
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
# Upstream Goal/Fast Cleanup Design

## Objective

Remove the fork-specific goal implementation added by commit `20f61f9` now that upstream implements goal behavior. Keep the fork-only Plan Mode because upstream does not implement it. Keep Fast Mode as an upstream-owned feature and align the ACP SDK dependency with upstream.

## Historical Boundary

The fork-specific goal layer was introduced by `20f61f9` after the shared base `37a98b3`. It added ACP extension routes for `thread/goal/get`, `thread/goal/set`, and `thread/goal/clear`; raw goal notifications; a custom no-argument `/goal` view; and corresponding tests.

Fast Mode was introduced before the fork diverged by upstream commit `64d3bc2`. The fork has no independent Fast Mode implementation to remove. Later upstream commits `fbc8f84` and `ef5e169` own model-capability filtering and boolean config support.

Upstream does not contain `PlanModeConfig.ts` or the fork's collaboration-mode plumbing, so Plan Mode remains fork-owned.

## Selected Approach

Use a symbol-level cleanup based on the historical diff rather than replacing entire files with upstream versions. This removes only the duplicated goal layer while preserving unrelated fork extensions and Plan Mode.

Whole-file replacement was rejected because files such as `AcpExtensions.ts`, `CodexAcpServer.ts`, and `CodexEventHandler.ts` also contain retained fork behavior for usage, rate limits, proposed plans, packaging identity, and Plan Mode.

Reverting all of `20f61f9` was rejected because it would remove retained features and create a substantially larger reconstruction diff.

## Runtime Changes

### Remove fork goal extensions

- Remove the `THREAD_GOAL_GET_METHOD`, `THREAD_GOAL_SET_METHOD`, and `THREAD_GOAL_CLEAR_METHOD` ACP extension constants and request types.
- Remove their Zod request parsers and server route registration from `src/index.ts`.
- Restore extension-method dispatch to the upstream-supported authentication and legacy model methods.
- Remove fork-only goal parameter parsing and wrapper methods from `CodexAcpServer` and `CodexAcpClient`.
- Remove only `threadGoalGet` from `CodexAppServerClient`. Retain upstream's `threadGoalSet`, `threadGoalClear`, `runGoalSet`, and `runGoalClear` implementation.

### Use upstream goal behavior exclusively

- Restore the upstream `/goal` command behavior, including the no-argument usage message.
- Remove the fork-only goal summary formatting and direct goal lookup.
- Stop forwarding `thread/goal/updated` and `thread/goal/cleared` as raw ACP notifications.
- Retain upstream `session_info_update` goal metadata, duplicate suppression, continuation-turn routing, grace periods, and cancellation behavior.

### Retain Plan Mode

- Keep `src/PlanModeConfig.ts` and its tests.
- Keep `planModeEnabled` and `planModeExplicitlySet` session state.
- Keep the `collaborationMode` turn parameter and plan/default mode switching.
- Keep `_acp_ext:codex_proposed_plan` streaming/completion notifications.
- Keep `experimentalApi: true` and `requestAttestation: false` as the existing fork capability configuration required by the retained Plan Mode integration.

### Retain unrelated fork extensions

- Keep `_acp_ext:session_usage_update`.
- Keep `_acp_ext:session_rate_limits`.
- Keep authentication extensions, the legacy session-model extension, fork package identity, and fork binary names.

## Fast Mode and SDK Alignment

Fast Mode remains enabled and should behave exactly like upstream:

- expose Fast Mode only for models with a fast speed tier;
- use boolean config options when the ACP client advertises support;
- otherwise use the upstream select option;
- retain the selected preference across model switches but apply the service tier only to supported models.

`src/FastModeConfig.ts` must have no fork-only behavioral diff from `upstream/main`. Adjacent `CodexAcpServer` changes may differ only where Plan Mode is inserted.

The dependency range for `@agentclientprotocol/sdk` must match `upstream/main` exactly (`^1.2.1` at design time). The resolved SDK package and transitive dependency graph in `package-lock.json` must follow upstream; only fork root metadata such as package name, version, and binary name may differ.

## Tests and Fixtures

- Delete `thread-goal-ext-methods.test.ts`.
- Restore upstream `thread-goal-events.test.ts` expectations and its three goal metadata snapshots.
- Remove the fork-only no-argument goal-view test and restore the upstream missing-input test.
- Keep upstream goal runtime, routing, cancellation, deduplication, and metadata coverage.
- Keep Plan Mode and proposed-plan tests unchanged except for mechanical fixture updates if required.
- Keep upstream Fast Mode tests unchanged.

## Error Handling and Compatibility

Requests to the removed fork-only goal extension routes will no longer be registered. Goal operations remain available through upstream's `/goal` command and app-server flow.

No compatibility shim or deprecation response will be added because the requested outcome is complete removal of the local implementation.

## Verification

1. Confirm no fork goal constants, parsers, wrappers, raw notifications, or tests remain.
2. Compare Fast Mode source and behavior with `upstream/main`.
3. Compare the SDK dependency range and resolved package with `upstream/main`.
4. Run targeted goal, Plan Mode, proposed-plan, Fast Mode, and initialization tests.
5. Run `npm run typecheck` and `npm test`.
6. Run `npm run build`, `npm pack --dry-run`, and `npm run bundle:all` with the CI Bun version.

## Success Criteria

- Goal behavior is provided only by upstream code paths.
- Fast Mode and the ACP SDK follow upstream.
- Plan Mode and unrelated fork extensions remain functional.
- The repository passes the full verification workflow with a clean working tree after commit.
Loading