feat: advertise recommended model and reasoning effort - #491
Merged
Merged
Conversation
There was a problem hiding this comment.
🟢 Approval recommended
The implementation is capability-gated, validates recommendations against available options, preserves existing behavior, and includes focused tests.
Pull request overview
Adds negotiated AIR recommendations for Codex model and reasoning-effort session selectors while preserving legacy behavior.
Changes:
- Advertises and negotiates
recommendedValue. - Emits validated model and effort recommendation metadata.
- Adds behavioral tests and extension documentation.
File summaries
| File | Description |
|---|---|
src/AirExtension.ts |
Defines capability and metadata helper. |
src/ModelConfigOption.ts |
Adds recommendation metadata to selectors. |
src/CodexAcpServer.ts |
Computes negotiated recommendations. |
src/__tests__/CodexACPAgent/session-config-options.test.ts |
Tests recommendation behavior. |
src/__tests__/CodexACPAgent/initialize.test.ts |
Verifies capability advertisement. |
README.md |
Documents feature availability. |
docs/recommended-config-values-extension.md |
Documents negotiation and metadata format. |
Review details
- Files reviewed: 7/7 changed files
- Comments generated: 0
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
nikita-ashihmin
deleted the
nikita.ashikhmin/recommended-config-values
branch
September 9, 2026 18:37
lodystage Bot
added a commit
to LodyAI/acp-extension-codex
that referenced
this pull request
Sep 18, 2026
* fix: paginate thread history when forking and loading sessions (agentclientprotocol#481) * fix: paginate thread history when forking and loading sessions * fix: reject cyclic thread history cursors * fix: bound history pagination to the resume cursor * fix: preserve full history reads for legacy threads * fix: finalize standalone MCP elicitation permission requests (agentclientprotocol#471) A message-only MCP elicitation that is not tied to a Codex item is presented through `session/request_permission` with a synthetic tool call id. Nothing ever updated that tool call after the user answered, so clients kept an unfinished, untitled card (LLM-29763). Give the synthetic tool call a generic title and expose the question in `rawInput.description`, and send a `tool_call_update` with `status: completed` and the chosen action once the user responds. Correlated tool-call approvals are unchanged: the real tool call is completed by Codex itself. * ci: set up preview publishing (agentclientprotocol#474) Copy of agentclientprotocol/claude-agent-acp#1084 Today nothing reaches npm between two release-please releases, so trying a merged but unreleased change means building from source. This adds a continuously published preview channel. Every CI-green push to `main` that is not a release merge publishes `<package.json version, patch bumped>-preview.N` under the `preview` dist-tag, tags the commit `v<version>`, and dispatches the same agent registry update a stable release does. With `main` at 0.73.0 that gives `0.73.1-preview.1`, `0.73.1-preview.2`, and so on; `N` restarts at 1 whenever a release moves the base. `latest` is untouched. ## Approach - **Added to `publish.yml` rather than a new workflow.** npm binds a trusted publisher to one repo + workflow filename, and a package gets only one. A separate file would fail OIDC and cost the stable path its publisher. - **Gated on the `CI` workflow succeeding** (`workflow_run`), so a red commit is never published. release-please's release merge is excluded by the head commit's author and subject — its `releases_created` output is not reachable from a different workflow run. - **`N` is the max of the npm registry and local git tags.** npm reserves versions forever, even after `unpublish`, so a reused `N` is a hard failure; but the registry is CDN-served and lags, which the tags cover. A registry read failure aborts rather than guessing. - **Base is patch+1, not release-please's prediction**, which moves mid-flight and would reset `N` under already-published previews. - **The version is applied to the CI working tree only**, never committed — `package.json` and the release-please manifest stay release-please's to own. - **`--tag preview` is mandatory:** `npm publish` defaults to `latest` even for a semver prerelease. - **Three jobs.** `publish-npm-preview` mirrors `publish-npm` and only publishes (no repo write access); `publish-tag-preview` only tags, so a failed tag is retryable with _Re-run failed jobs_ without re-publishing an immutable version; `trigger-registry-update` is shared with the stable path. Both downstream jobs gate on a `published` output the publish step sets, not on job status — the tag push happens after the publish, so a red job can still mean npm has the version. * feat: advertise recommended model and reasoning effort (agentclientprotocol#491) * feat: advertise recommended model and reasoning effort * fix: harden recommended config metadata * feat: simplify GPT model display names (agentclientprotocol#493) * feat: simplify GPT model display names * chore: update Codex to 0.153.4 * chore(main): release 1.11.0 (agentclientprotocol#483) Co-authored-by: acp-release-bot[bot] <246668977+acp-release-bot[bot]@users.noreply.github.com> * ci: poll for package availability after publish before triggering registry update (agentclientprotocol#499) * build(deps-dev): bump hono in the npm_and_yarn group across 1 directory (agentclientprotocol#488) Bumps the npm_and_yarn group with 1 update in the / directory: [hono](https://github.com/honojs/hono). Updates `hono` from 4.13.3 to 4.13.7 - [Release notes](https://github.com/honojs/hono/releases) - [Commits](honojs/hono@v4.13.3...v4.13.7) --- updated-dependencies: - dependency-name: hono dependency-version: 4.13.7 dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat: Add tool names to ACP tool call events (agentclientprotocol#513) * fix: update codex to 0.154.0 (agentclientprotocol#494) * fix: update codex to 0.154.0 * fix: fix test fixture types after Codex update Add required nullable MCP status, thread, and rate-limit fields to tests to match the Codex 0.154.0 schema. --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * fix: improve request_user_input elicitation forms (agentclientprotocol#299) * Fix request_user_input elicitation form structure * Simplify request_user_input note field IDs * Remove redundant question IDs from form fields * Remove unused request input metadata * fix: preserve request input fields and unique Other choices --------- Co-authored-by: Shushakov Daniil 84373458 <shushakov.daniil@h-partners.com> Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com> * perf: supply validated diff statistics to ACP clients (agentclientprotocol#501) * perf: supply validated diff statistics to ACP clients Clients compared full file texts again to display line counts. Supply counts and the first changed line through com.intellij/diffStats metadata. Parse each update patch once and reuse it for application and statistics. Validate hunk coordinates and content before publishing the counts. Omit statistics when validation fails so clients can compare the texts. Type checking, the build, and all 610 active tests pass; 26 tests are skipped. The new coverage includes 34 statistics and file event cases. A real Codex history imported through ACP provides statistics for all 277 diffs. * perf: use the AIR namespace for diff statistics Publish diff statistics at _meta.jetbrains.air.diffStats through the existing AIR metadata helper. Preserve the diff kind and the versioned envelope. Document the wire format, count semantics, navigation, and fallback behavior. Type checking, the build, and all 610 active tests pass; 26 tests are skipped. * perf: count diff operations without scanning file texts Use the parsed patch as the source of added and removed counts. Remove navigation coordinates and duplicate validation of complete file texts. Keep the existing patch application responsible for constructing ACP content. Count created and deleted files from the content already supplied by Codex. Update the extension specification and regression tests for counts-only metadata. Type checking, the build, and the full local test suite pass. A patch with 20 additions and 30 deletions takes about one microsecond to count. * perf: derive file change reports from turn diffs (agentclientprotocol#518) * perf: derive file change reports from turn diffs * fix: scope turn diff collection * fix: harden turn diff reports * fix: handle turn diff edge cases * fix: resolve diff paths across workspace roots * fix: bound and stabilize turn diff parsing * fix: bound retained turn diffs * fix: preserve lexical cwd for turn diff paths * fix: preserve whitespace in turn diff paths * docs: clarify empty turn diff snapshots * fix: snapshot and parse turn diff paths * chore(main): release 1.12.0 (agentclientprotocol#514) Co-authored-by: acp-release-bot[bot] <246668977+acp-release-bot[bot]@users.noreply.github.com> * feat: adopt Core 0.1.6 elicitation answer notes * refactor: remove redundant elicitation schema branches Ablation against 61 focused tests: - Removing the standard-form capability guard fails capability negotiation; restored. - Removing the selected-answer guard fails note-only response coverage; restored. - Collapsing common schema fields passes all snapshots unchanged. - Inlining the single-use base object also passes unchanged. Final validation: typecheck, build, 789 tests passed (27 skipped), and real read-only Codex smoke completed with end_turn. * chore: align adapter version with upstream 1.12.0 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: nikita-ashihmin <nikita.ashihmin@jetbrains.com> Co-authored-by: Aleksandr Suhinin <95745995+AlexandrSuhinin@users.noreply.github.com> Co-authored-by: Andrey Bragin <andrey.bragin@jetbrains.com> Co-authored-by: acp-release-bot[bot] <246668977+acp-release-bot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Daniil Shushakov <4shushakov@gmail.com> Co-authored-by: Shushakov Daniil 84373458 <shushakov.daniil@h-partners.com> Co-authored-by: Leon Zhao <leeeon233@gmail.com>
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.
Summary
recommendedValuecapability during initializationTesting
npm run typechecknpm test(553 passed, 26 skipped)