Skip to content

fix(grok): expose advertised reasoning levels - #6386

Open
SunkenInTime wants to merge 6 commits into
pingdotgg:mainfrom
SunkenInTime:t3code/add-grok-reasoning-levels
Open

fix(grok): expose advertised reasoning levels#6386
SunkenInTime wants to merge 6 commits into
pingdotgg:mainfrom
SunkenInTime:t3code/add-grok-reasoning-levels

Conversation

@SunkenInTime

@SunkenInTime SunkenInTime commented Aug 12, 2026

Copy link
Copy Markdown

What Changed

  • map each Grok model's advertised ACP reasoning menu into the existing model-option contract
  • preserve ACP descriptions, reject malformed effort tokens, and keep current selection separate from the advertised default badge
  • show those choices in the shared composer on web, desktop, and mobile surfaces
  • send the selected effort in session/set_model metadata, including same-model changes and explicit clearing back to the model default
  • honor the same selection in Grok-backed title, commit, PR, and branch-name generation
  • cover the metadata mapping and dispatch path with focused tests and an opt-in real-CLI probe

Why

Grok 4.6 advertises Extra High, High, Medium, and Low reasoning levels through its ACP model metadata, but T3 discarded Grok model capabilities and only sent model IDs. That left the composer without a reasoning control and made same-model effort changes impossible.

This is a focused reasoning-only fix. It overlaps the reasoning portion of #6383, which appeared after this work started and also bundles Grok auth, rewind, and token-usage changes.

I also compared this implementation with the orchestrator-v2 work in #5160. This PR reuses the portable safeguards from that work: safe ACP token parsing, preserved descriptions, current-vs-default separation, one default badge, and symmetric effort clearing. It intentionally leaves out v2-only lifecycle scaffolding, spawn-bound locks, and fallback catalogs.

UI Changes

Before

Grok 4.6 had no reasoning control.

Grok 4.6 before, without reasoning levels

After

The composer reads Grok 4.6's live effort menu, and changing the selection updates the visible value.

The Effort suffix in this screenshot comes from Grok 4.6's ACP-provided labels. T3 displays only ACP-advertised options, preserving their labels verbatim without synthesizing a fallback menu.

Grok 4.6 after, with Medium selected from the reasoning menu

Verification

  • vp test run apps/server/src/provider/acp/GrokAcpSupport.test.ts apps/server/src/provider/Layers/GrokProvider.test.ts apps/server/src/provider/Layers/GrokAdapter.test.ts apps/server/src/textGeneration/GrokTextGeneration.test.ts (51 tests passed)
  • T3_GROK_ACP_PROBE=1 vp test run apps/server/src/provider/acp/GrokAcpCliProbe.test.ts --reporter=verbose (4 tests passed against Grok CLI 1.0.3)
  • vp run --filter=t3 typecheck
  • targeted vp fmt --check and vp lint for all changed files
  • full Computer Use verification in Safari against the local T3 app: Grok 4.6 exposed all four advertised levels, accepted a change from Extra High to Medium, and kept the ACP default badge on Extra High

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for the UI change
  • No animation or timing behavior changed, so a video is not applicable

Implemented with gpt-5.6-sol through the Codex harness in T3 Code.


Note

Medium Risk
Changes Grok session model binding and session/set_model behavior (including same-model effort and clearing), which affects live turns and auxiliary Grok prompts; risk is mitigated by validation, deferred set_model until after turn validation, and broad tests.

Overview
Grok reasoning effort is now wired end-to-end from ACP model metadata into the composer and runtime.

Discovery and UI contract: buildGrokModelCapabilities turns each model’s _meta.reasoningEffort / reasoningEfforts into a reasoningEffort select (labels, descriptions, default badge, token validation). Discovered Grok models use these capabilities instead of empty option lists.

ACP dispatch: setSessionModel accepts optional _meta; applyGrokAcpModelSelection compares current vs requested effort and calls session/set_model with { reasoningEffort } when the model or effort changes, or omits _meta to clear effort on the same model. GrokAdapter tracks currentReasoningEffort, applies selection after turn validation (so failed prep/validation does not call set_model), and avoids leaking prior-session effort on start when switching models. Grok text generation applies the same selection path.

Tests and the mock ACP agent cover effort metadata; install docs mention the Reasoning control for supported Grok models.

Reviewed by Cursor Bugbot for commit e0fc12b. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Expose Grok reasoning effort levels from ACP model metadata in model capabilities

  • buildGrokModelCapabilities in GrokProvider.ts parses _meta.reasoningEffort and _meta.reasoningEfforts from ACP model metadata and returns a reasoningEffort select option when present; discovered models now use this instead of empty capabilities.
  • applyGrokAcpModelSelection in GrokAcpSupport.ts now tracks current and requested reasoning effort, triggering session/set_model with _meta.reasoningEffort when effort changes on the same model, and clearing it when omitted.
  • AcpSessionRuntime.setSessionModel in AcpSessionRuntime.ts accepts an optional _meta payload so reasoning effort can be forwarded in set-model requests.
  • The GrokAdapter tracks currentReasoningEffort in session context and applies it alongside model selection on sendTurn; session/set_model is no longer issued when sendTurn validation fails.
  • A Reasoning control is documented in install.md for Grok models that advertise adjustable reasoning levels.

Macroscope summarized e0fc12b.

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 99c9db43-bb0d-4dc1-bd65-013bbda6379a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 12, 2026
Comment thread apps/server/src/provider/Layers/GrokAdapter.ts Outdated
@SunkenInTime
SunkenInTime marked this pull request as ready for review August 12, 2026 22:30
Comment thread apps/server/src/provider/Layers/GrokAdapter.ts Outdated
@macroscopeapp

macroscopeapp Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces new user-facing functionality - reasoning level selection for Grok models. The changes expose previously hidden metadata as UI controls and propagate new configuration through the ACP session. While thoroughly tested, this is a new capability from a new contributor to this area of the codebase.

You can customize Macroscope's approvability policy. Learn more.

@SunkenInTime
SunkenInTime force-pushed the t3code/add-grok-reasoning-levels branch from 534f90f to e0fc12b Compare August 13, 2026 00:23
@SunkenInTime

Copy link
Copy Markdown
Author

cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit e0fc12b. Configure here.

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

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant