You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reasoningEffort becomes optional end to end. When it is omitted the harness sends no reasoning object at all, so the model or router default applies. The CLI still defaults to high, and --reasoning-effort default is the explicit opt-in to omit it.
What changed?
GenerateConfig.reasoningEffort, InferenceOverrideSchema.reasoningEffort, and the search solver/request option types are now optional.
Responses request builders only include reasoning when an effort is set (previously always reasoning: { effort }):
CLI: --reasoning-effort default maps to undefined. Omitting the flag still resolves to high. The ORI agentReasoningEffort derivation is skipped when effort is unset.
Tests: config schema accepts a missing effort, Responses and search bodies have no reasoning key when unset, CLI default produces a config without reasoningEffort. Explicit-effort tests are unchanged.
Why?
Benchmarking a router that picks its own effort (e.g. openrouter/jev) requires a request with no reasoning.effort pinned. Today omission is impossible: the config schema rejects it and the request builder always sends an effort. A Temporal run without the field failed before launching any child workflow.
This partially reverses #62 (ECO-3608), which made explicit effort mandatory. The default remains explicit high for every existing entry point, so existing runs are unaffected. Omission is opt-in only.
How to test
bun test src/cli src/providers/responses-model.test.ts src/benchmarks/search/core/request.test.ts src/benchmarks/benchmark-config.test.ts
Expected: all pass, including leaves reasoning effort unset for --reasoning-effort default and omits reasoning when no effort is requested.
Full validation run locally: bun run format:check, bun run check, bun run typecheck, bun test (1508 pass), bun run build.
Benchmark impact
None for existing callers, the CLI default is still high and explicit values are sent unchanged. Runs that opt in via --reasoning-effort default (or a Temporal config with the field omitted) will send no reasoning object, which changes the model's reasoning behavior and therefore scores and cost for those runs only.
Note the Temporal BenchmarkConfig schema in openrouter-web still defaults a missing reasoningEffort to high. A follow-up there is needed before an omitted effort reaches this code in production.
Reviewer focus
Whether reversing the ECO-3608 requirement as opt-in omission is acceptable.
definedValues usage in responses-model.ts and search/core/request.ts drops the key entirely rather than sending effort: undefined.
Checklist
Tests cover changed behavior
Public API or configuration changes are backward compatible, or the break is documented
Benchmark changes document dataset provenance and licensing (n/a)
No credentials, private results, or restricted dataset contents are included
Documentation is updated where needed (no docs reference --reasoning-effort)
The <latest_message> is the message that you should use to guide your goals + task for this session, and you should use the rest of the slack thread as context.
A [ts=...] marker on a Slack message is that message's timestamp. To act on a specific message with the slack tool (e.g. adding an emoji reaction via the reaction command), pass that value as timestamp along with the Channel ID — no extra lookup call is needed.
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
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.
TL;DR
reasoningEffortbecomes optional end to end. When it is omitted the harness sends noreasoningobject at all, so the model or router default applies. The CLI still defaults tohigh, and--reasoning-effort defaultis the explicit opt-in to omit it.What changed?
GenerateConfig.reasoningEffort,InferenceOverrideSchema.reasoningEffort, and the search solver/request option types are now optional.reasoningwhen an effort is set (previously alwaysreasoning: { effort }):--reasoning-effort defaultmaps to undefined. Omitting the flag still resolves tohigh. The ORIagentReasoningEffortderivation is skipped when effort is unset.reasoningkey when unset, CLIdefaultproduces a config withoutreasoningEffort. Explicit-effort tests are unchanged.Why?
Benchmarking a router that picks its own effort (e.g.
openrouter/jev) requires a request with noreasoning.effortpinned. Today omission is impossible: the config schema rejects it and the request builder always sends an effort. A Temporal run without the field failed before launching any child workflow.This partially reverses #62 (ECO-3608), which made explicit effort mandatory. The default remains explicit
highfor every existing entry point, so existing runs are unaffected. Omission is opt-in only.How to test
Expected: all pass, including
leaves reasoning effort unset for --reasoning-effort defaultandomits reasoning when no effort is requested.Full validation run locally:
bun run format:check,bun run check,bun run typecheck,bun test(1508 pass),bun run build.Benchmark impact
None for existing callers, the CLI default is still
highand explicit values are sent unchanged. Runs that opt in via--reasoning-effort default(or a Temporal config with the field omitted) will send noreasoningobject, which changes the model's reasoning behavior and therefore scores and cost for those runs only.Note the Temporal
BenchmarkConfigschema in openrouter-web still defaults a missingreasoningEfforttohigh. A follow-up there is needed before an omitted effort reaches this code in production.Reviewer focus
definedValuesusage inresponses-model.tsandsearch/core/request.tsdrops the key entirely rather than sendingeffort: undefined.Checklist
--reasoning-effort)Link to Devin session: https://openrouter.devinenterprise.com/sessions/8caab1dda9764cc38dbbba486bc04687
Open in Devin Desktop: https://openrouter.devinenterprise.com/desktop/session/8caab1dda9764cc38dbbba486bc04687?variant=devin
Requested by: @ayush-or