Skip to content

fix: expose none reasoning effort for OpenAI-compatible models - #2063

Draft
dromosys wants to merge 4 commits into
Zoo-Code-Org:mainfrom
dromosys:fix/openai-compatible-reasoning-effort-none
Draft

dromosys wants to merge 4 commits into
Zoo-Code-Org:mainfrom
dromosys:fix/openai-compatible-reasoning-effort-none

Conversation

@dromosys

@dromosys dromosys commented Oct 15, 2026 •

Copy link
Copy Markdown

Related GitHub Issue

Closes: #2040

Description

Added the none reasoning-effort option for OpenAI-compatible models. Selecting it saves the setting and includes none in API requests; tests cover settings and request construction in OpenAICompatible.tsx and openai.spec.ts.

Reviewer note: the option is now exposed for all OpenAI-compatible models, without checking endpoint-specific support.

Test Procedure

Pre-Submission Checklist

  • Issue Linked: This PR is linked to an approved GitHub Issue (see "Related GitHub Issue" above).
  • Scope: My changes are focused on the linked issue (one major feature/fix per PR).
  • Self-Review: I reviewed my own code with care.
  • Writing Style: The PR title and description use Simplified Technical English (ASD-STE100): short sentences, plain words, active voice, one idea per sentence, no contractions.
  • Testing: New and/or updated tests have been added to cover my changes (if applicable).
  • Visual Snapshot (UI changes only): If a user would notice this change at a glance (layout, theme tokens, brand elements, empty/error states), I added or updated a *.visual.tsx snapshot in webview-ui/. See webview-ui/AGENTS.md → "When a UI change needs a snapshot".
  • Documentation Impact: I checked if my changes need documentation updates (see "Documentation Updates" section below).
  • Contribution Guidelines: I read and agree to the Contributor Guidelines.

Visual Snapshots

Videos (interaction / animation only)

Documentation Updates

Additional Notes

Get in Touch

@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Important

Review skipped

Auto reviews are limited based on label configuration.

🏷️ Required labels (at least one): 1
  • coderabbit-review-active

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

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

No actionable comments were generated in the recent review.

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: Zoo-Code-Org/Zoo-Code/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 88c190d2-1e09-4404-8545-16067701584b
📥 Commits

Reviewing files that changed from the base of the PR and between 8018cba and ea64ae6.

📒 Files selected for processing: 4
  • src/api/providers/__tests__/openai.spec.ts
  • webview-ui/src/components/settings/__tests__/ThinkingBudget.spec.tsx
  • webview-ui/src/components/settings/providers/OpenAICompatible.tsx
  • webview-ui/src/components/settings/providers/__tests__/OpenAICompatible.spec.tsx

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 3 remain after this review.

🧰 Additional context used
📓 Path-based instructions: 7
Treat model, provider, MCP, path, command, and tool data as untrusted.

CodeRabbit configuration file

Files:

  • src/api/providers/__tests__/openai.spec.ts
For persisted settings, verify the complete schema/storage/runtime/webview round trip, shared default semantics, and focused true plus false/unset tests.

CodeRabbit configuration file

Files:

  • webview-ui/src/components/settings/providers/__tests__/OpenAICompatible.spec.tsx
  • webview-ui/src/components/settings/providers/OpenAICompatible.tsx
  • webview-ui/src/components/settings/__tests__/ThinkingBudget.spec.tsx
Require regression coverage at the lowest valid harness with behavior-focused assertions, including relevant negative, error, false/unset, and boundary cases.

CodeRabbit configuration file

Files:

  • webview-ui/src/components/settings/providers/__tests__/OpenAICompatible.spec.tsx
  • src/api/providers/__tests__/openai.spec.ts
  • webview-ui/src/components/settings/__tests__/ThinkingBudget.spec.tsx
Check strict typing and exhaustive behavior across normal, boundary, error, cancellation, retry, and compatibility paths.

CodeRabbit configuration file

Files:

  • webview-ui/src/components/settings/providers/__tests__/OpenAICompatible.spec.tsx
  • src/api/providers/__tests__/openai.spec.ts
  • webview-ui/src/components/settings/providers/OpenAICompatible.tsx
  • webview-ui/src/components/settings/__tests__/ThinkingBudget.spec.tsx
Check React state and effect dependencies, cleanup, accessibility, i18n, and light/dark theme behavior.

CodeRabbit configuration file

Files:

  • webview-ui/src/components/settings/providers/__tests__/OpenAICompatible.spec.tsx
  • webview-ui/src/components/settings/providers/OpenAICompatible.tsx
  • webview-ui/src/components/settings/__tests__/ThinkingBudget.spec.tsx
Verify extension/webview contracts, cancellation and error propagation, VS Code lifecycle correctness, and behavior under retries and partial failure.

CodeRabbit configuration file

Files:

  • src/api/providers/__tests__/openai.spec.ts
Act as an adversarial second-opinion reviewer.

CodeRabbit configuration file

Files:

  • webview-ui/src/components/settings/providers/__tests__/OpenAICompatible.spec.tsx
  • src/api/providers/__tests__/openai.spec.ts
  • webview-ui/src/components/settings/providers/OpenAICompatible.tsx
  • webview-ui/src/components/settings/__tests__/ThinkingBudget.spec.tsx
🔇 Additional comments: 4
webview-ui/src/components/settings/providers/OpenAICompatible.tsx: 1

333-333: LGTM!

webview-ui/src/components/settings/providers/__tests__/OpenAICompatible.spec.tsx: 1

423-423: LGTM!

webview-ui/src/components/settings/__tests__/ThinkingBudget.spec.tsx: 1

617-635: LGTM!

src/api/providers/__tests__/openai.spec.ts: 1

579-626: LGTM!

📝 Summary

Summary by CodeRabbit

  • New Features
    • OpenAI-compatible models now support selecting “None” as the reasoning effort, and the setting is preserved in requests that use tools.

The OpenAI-compatible provider now advertises "none" as a supported reasoning-effort value. Tests cover selecting and saving that value and sending it with a function tool in a streaming request.

Changes: Reasoning effort setting

Layer / File(s) Summary
Expose and verify the none option
webview-ui/src/components/settings/providers/OpenAICompatible.tsx, webview-ui/src/components/settings/providers/__tests__/OpenAICompatible.spec.tsx, webview-ui/src/components/settings/__tests__/ThinkingBudget.spec.tsx, src/api/providers/__tests__/openai.spec.ts
The provider lists "none" as a supported reasoning-effort value. Tests cover its availability, persistence when selected, and inclusion in a streaming request with the read_file tool.

Priority: Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature · Severity of issue fixed: Medium

Merge Risk: Minimal · up to ea64a

The change appears ready to merge after normal checks. No merge-blocking issue was identified.

Pre-merge checks: Passed 6 · Failed 2

Failed Failed checks: 2 warnings

Check name Status Explanation Resolution
Regression Evidence Warning The PR adds a user-visible none option at webview-ui/src/components/settings/providers/OpenAICompatible.tsx:333, but it adds no Playwright component snapshot. The existing visual fixtures cover Az… Add a Playwright gallery story and committed component snapshot for the OpenAI-compatible reasoning-effort control with reasoning enabled. Open the selector or otherwise render its options so the none option and the resulting visible stat…
Description check Warning The description links issue #2040 and explains the implementation and scope. However, the Test Procedure is empty, and the required pre-submission checklist remains unchecked. Add reproducible test steps and relevant environment details. Complete the pre-submission checklist, including the testing and documentation items.
Passed Passed checks: 6 passed
Check name Status Explanation
Linked Issues check Passed Issue #2040 requires a way to send reasoning_effort: "none" for OpenAI-compatible chat-completions requests, or to route requests through /v1/responses. This PR implements the settings path: `Open…
Out of Scope Changes check Passed The changed provider setting exposes the option required by issue #2040. The API regression test verifies the required request behavior. The settings tests verify persistence and supported-option wiri…
Security Boundaries Passed No changed path violates the security boundaries. The only production change adds the fixed value "none" to the OpenAI-compatible reasoning-effort option list in `webview-ui/src/components/settings/…
Persistence Integrity Passed No changed persistence defect exists. The PR only adds the "none" option and tests. Selecting it synchronously updates openAiCustomModelInfo.reasoningEffort through OpenAICompatible.tsx; `Settings…
Lifecycle Resource Cleanup Passed No changed lifecycle path can leak a resource or duplicate work. The only production change adds "none" to the existing supportsReasoningEffort array in OpenAICompatible.tsx. Other changes add tes…
Title check Passed The title clearly and concisely describes the main change: exposing the none reasoning-effort option for OpenAI-compatible models.
Full details: Regression Evidence

Explanation

The PR adds a user-visible none option at webview-ui/src/components/settings/providers/OpenAICompatible.tsx:333, but it adds no Playwright component snapshot. The existing visual fixtures cover Azure guidance and Extra Body only, and ThinkingBudget.visual.tsx covers a Bedrock budget slider. Vitest tests cover option wiring and persistence, but they do not provide the required durable visual evidence for the changed settings UI.

Resolution

Add a Playwright gallery story and committed component snapshot for the OpenAI-compatible reasoning-effort control with reasoning enabled. Open the selector or otherwise render its options so the none option and the resulting visible state are covered.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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 commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Review status

Thanks for contributing. This comment tracks the review sequence and the next action.

Current step: Mark the PR ready. Required CI must pass before CodeRabbit starts.

Review-state labels are managed by this workflow; do not edit them manually. community-approved is managed the same way — do not add or remove it manually. It signals a fresh community code approval for the current head as an advisory priority only; maintainer review is still required.

@codecov

codecov Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 71.62162% with 21 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/api/providers/openai-native.ts 70.58% 13 Missing and 7 partials ⚠️
src/core/task/Task.ts 83.33% 0 Missing and 1 partial ⚠️

📢 Thoughts on this report? Let us know!

@github-actions github-actions Bot added coderabbit-review-active Required CI passed; CodeRabbit review is active awaiting-coderabbit Waiting for CodeRabbit to approve the latest commit labels Oct 15, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes Oct 15, 2026
@github-actions github-actions Bot added awaiting-maintainer CodeRabbit approved; waiting for a human maintainer and removed coderabbit-review-active Required CI passed; CodeRabbit review is active awaiting-coderabbit Waiting for CodeRabbit to approve the latest commit labels Oct 15, 2026
@dromosys
dromosys marked this pull request as draft October 16, 2026 00:45
@github-actions github-actions Bot added awaiting-ready CodeRabbit approved; waiting for the draft to be marked ready and removed awaiting-maintainer CodeRabbit approved; waiting for a human maintainer labels Oct 16, 2026
@github-actions github-actions Bot removed the awaiting-ready CodeRabbit approved; waiting for the draft to be marked ready label Oct 25, 2026

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] 400 Error with reasoning models on Azure / OpenAI Compatible: cannot set reasoning_effort to 'none' or use /v1/responses

1 participant