Skip to content
Open
Changes from all commits
Commits
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
38 changes: 14 additions & 24 deletions scripts/ci/assert_opencode_reasoning_effort.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,39 +47,29 @@ def validate_candidate(config: dict[str, Any], candidate: str) -> list[str]:
except ValueError as exc:
return [str(exc)]

if not config_for_model and (
provider == "github-models" or is_known_reasoning_capable(model_name)
):
return [
f"OpenCode candidate {candidate} is not defined in opencode.jsonc "
f"under provider {provider}."
]
if not config_for_model:
if provider == "github-models" or is_known_reasoning_capable(model_name):
return [
f"OpenCode candidate {candidate} is not defined in opencode.jsonc "
f"under provider {provider}."
]
return []

configured_reasoning = config_for_model.get("reasoning") is True
should_require_effort = configured_reasoning or is_known_reasoning_capable(model_name)
if not should_require_effort:
if not (configured_reasoning or is_known_reasoning_capable(model_name)):
return []

errors: list[str] = []
prefix = f"OpenCode reasoning-capable candidate {candidate} must set"
suffix = "in opencode.jsonc."

if not configured_reasoning:
errors.append(
f"OpenCode reasoning-capable candidate {candidate} must set reasoning=true "
"in opencode.jsonc."
)
errors.append(f"{prefix} reasoning=true {suffix}")
if (config_for_model.get("options") or {}).get("reasoningEffort") != "high":
errors.append(
f"OpenCode reasoning-capable candidate {candidate} must set "
"options.reasoningEffort=high in opencode.jsonc."
)
if ((config_for_model.get("variants") or {}).get("high") or {}).get(
"reasoningEffort"
) != "high":
errors.append(
f"OpenCode reasoning-capable candidate {candidate} must set "
"variants.high.reasoningEffort=high in opencode.jsonc."
)
errors.append(f"{prefix} options.reasoningEffort=high {suffix}")
if ((config_for_model.get("variants") or {}).get("high") or {}).get("reasoningEffort") != "high":
errors.append(f"{prefix} variants.high.reasoningEffort=high {suffix}")

return errors


Expand Down
Loading