Skip to content

fix(model-normalize): stop converting dots to hyphens for opencode-zen - #7497

Closed
sharziki wants to merge 1 commit into
NousResearch:mainfrom
sharziki:fix/7421-opencode-zen-model-dots
Closed

fix(model-normalize): stop converting dots to hyphens for opencode-zen#7497
sharziki wants to merge 1 commit into
NousResearch:mainfrom
sharziki:fix/7421-opencode-zen-model-dots

Conversation

@sharziki

Copy link
Copy Markdown
Contributor

Summary

  • Remove opencode-zen from _DOT_TO_HYPHEN_PROVIDERS — OpenCode Zen accepts dots in model names natively
  • Move it to _MATCHING_PREFIX_STRIP_PROVIDERS so vendor prefixes are stripped but dots preserved
  • Update docstring and tests to reflect correct behavior
  • Previously, models like minimax-m2.5-free were mangled to minimax-m2-5-free, causing 401 errors

Fixes #7421

Test plan

  • Verify minimax-m2.5-free is sent as-is to OpenCode Zen API (no dot-to-hyphen conversion)
  • Verify opencode-zen/claude-sonnet-4.6 strips prefix but preserves dots -> claude-sonnet-4.6
  • Verify Anthropic provider still converts dots to hyphens (claude-sonnet-4.6 -> claude-sonnet-4-6)
  • Run pytest tests/hermes_cli/test_model_normalize.py

🤖 Generated with Claude Code

OpenCode Zen accepts model names with dots preserved (e.g.
minimax-m2.5-free). The dot-to-hyphen conversion caused 401
"Model not supported" errors for models like minimax-m2.5-free
which became minimax-m2-5-free.

Move opencode-zen from _DOT_TO_HYPHEN_PROVIDERS to
_MATCHING_PREFIX_STRIP_PROVIDERS so it strips vendor prefixes
but preserves dots in model names.

Fixes #7421

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
teknium1 added a commit that referenced this pull request Apr 13, 2026
OpenCode Zen was in _DOT_TO_HYPHEN_PROVIDERS, causing all dotted model
names (minimax-m2.5-free, gpt-5.4, glm-5.1) to be mangled. The fix:

Layer 1 (model_normalize.py): Remove opencode-zen from the blanket
dot-to-hyphen set. Add an explicit block that preserves dots for
non-Claude models while keeping Claude hyphenated (Zen's Claude
endpoint uses anthropic_messages mode which expects hyphens).

Layer 2 (run_agent.py _anthropic_preserve_dots): Add opencode-zen and
zai to the provider allowlist. Broaden URL check from opencode.ai/zen/go
to opencode.ai/zen/ to cover both Go and Zen endpoints. Add bigmodel.cn
for ZAI URL detection.

Also adds glm-5.1 to ZAI model lists in models.py and setup.py.

Closes #7710

Salvaged from contributions by:
- konsisumer (PR #7739, #7719)
- DomGrieco (PR #8708)
- Esashiero (PR #7296)
- sharziki (PR #7497)
- XiaoYingGee (PR #8750)
- APTX4869-maker (PR #8752)
- kagura-agent (PR #7157)
teknium1 added a commit that referenced this pull request Apr 13, 2026
…8794)

OpenCode Zen was in _DOT_TO_HYPHEN_PROVIDERS, causing all dotted model
names (minimax-m2.5-free, gpt-5.4, glm-5.1) to be mangled. The fix:

Layer 1 (model_normalize.py): Remove opencode-zen from the blanket
dot-to-hyphen set. Add an explicit block that preserves dots for
non-Claude models while keeping Claude hyphenated (Zen's Claude
endpoint uses anthropic_messages mode which expects hyphens).

Layer 2 (run_agent.py _anthropic_preserve_dots): Add opencode-zen and
zai to the provider allowlist. Broaden URL check from opencode.ai/zen/go
to opencode.ai/zen/ to cover both Go and Zen endpoints. Add bigmodel.cn
for ZAI URL detection.

Also adds glm-5.1 to ZAI model lists in models.py and setup.py.

Closes #7710

Salvaged from contributions by:
- konsisumer (PR #7739, #7719)
- DomGrieco (PR #8708)
- Esashiero (PR #7296)
- sharziki (PR #7497)
- XiaoYingGee (PR #8750)
- APTX4869-maker (PR #8752)
- kagura-agent (PR #7157)
@teknium1

Copy link
Copy Markdown
Contributor

Merged via PR #8794 which combines the best aspects of all open dot-preservation PRs onto current main. Your analysis that opencode-zen should preserve dots in model_normalize.py was part of the fix. Thanks for the contribution, @sharziki!

@teknium1 teknium1 closed this Apr 13, 2026
lawyerwenhan pushed a commit to lawyerwenhan/hermes-agent that referenced this pull request Apr 13, 2026
…ousResearch#8794)

OpenCode Zen was in _DOT_TO_HYPHEN_PROVIDERS, causing all dotted model
names (minimax-m2.5-free, gpt-5.4, glm-5.1) to be mangled. The fix:

Layer 1 (model_normalize.py): Remove opencode-zen from the blanket
dot-to-hyphen set. Add an explicit block that preserves dots for
non-Claude models while keeping Claude hyphenated (Zen's Claude
endpoint uses anthropic_messages mode which expects hyphens).

Layer 2 (run_agent.py _anthropic_preserve_dots): Add opencode-zen and
zai to the provider allowlist. Broaden URL check from opencode.ai/zen/go
to opencode.ai/zen/ to cover both Go and Zen endpoints. Add bigmodel.cn
for ZAI URL detection.

Also adds glm-5.1 to ZAI model lists in models.py and setup.py.

Closes NousResearch#7710

Salvaged from contributions by:
- konsisumer (PR NousResearch#7739, NousResearch#7719)
- DomGrieco (PR NousResearch#8708)
- Esashiero (PR NousResearch#7296)
- sharziki (PR NousResearch#7497)
- XiaoYingGee (PR NousResearch#8750)
- APTX4869-maker (PR NousResearch#8752)
- kagura-agent (PR NousResearch#7157)
aj-nt pushed a commit to aj-nt/hermes-agent that referenced this pull request May 1, 2026
…ousResearch#8794)

OpenCode Zen was in _DOT_TO_HYPHEN_PROVIDERS, causing all dotted model
names (minimax-m2.5-free, gpt-5.4, glm-5.1) to be mangled. The fix:

Layer 1 (model_normalize.py): Remove opencode-zen from the blanket
dot-to-hyphen set. Add an explicit block that preserves dots for
non-Claude models while keeping Claude hyphenated (Zen's Claude
endpoint uses anthropic_messages mode which expects hyphens).

Layer 2 (run_agent.py _anthropic_preserve_dots): Add opencode-zen and
zai to the provider allowlist. Broaden URL check from opencode.ai/zen/go
to opencode.ai/zen/ to cover both Go and Zen endpoints. Add bigmodel.cn
for ZAI URL detection.

Also adds glm-5.1 to ZAI model lists in models.py and setup.py.

Closes NousResearch#7710

Salvaged from contributions by:
- konsisumer (PR NousResearch#7739, NousResearch#7719)
- DomGrieco (PR NousResearch#8708)
- Esashiero (PR NousResearch#7296)
- sharziki (PR NousResearch#7497)
- XiaoYingGee (PR NousResearch#8750)
- APTX4869-maker (PR NousResearch#8752)
- kagura-agent (PR NousResearch#7157)
02356abc pushed a commit to 02356abc/hermes-agent that referenced this pull request May 14, 2026
…ousResearch#8794)

OpenCode Zen was in _DOT_TO_HYPHEN_PROVIDERS, causing all dotted model
names (minimax-m2.5-free, gpt-5.4, glm-5.1) to be mangled. The fix:

Layer 1 (model_normalize.py): Remove opencode-zen from the blanket
dot-to-hyphen set. Add an explicit block that preserves dots for
non-Claude models while keeping Claude hyphenated (Zen's Claude
endpoint uses anthropic_messages mode which expects hyphens).

Layer 2 (run_agent.py _anthropic_preserve_dots): Add opencode-zen and
zai to the provider allowlist. Broaden URL check from opencode.ai/zen/go
to opencode.ai/zen/ to cover both Go and Zen endpoints. Add bigmodel.cn
for ZAI URL detection.

Also adds glm-5.1 to ZAI model lists in models.py and setup.py.

Closes NousResearch#7710

Salvaged from contributions by:
- konsisumer (PR NousResearch#7739, NousResearch#7719)
- DomGrieco (PR NousResearch#8708)
- Esashiero (PR NousResearch#7296)
- sharziki (PR NousResearch#7497)
- XiaoYingGee (PR NousResearch#8750)
- APTX4869-maker (PR NousResearch#8752)
- kagura-agent (PR NousResearch#7157)
waefrebeorn pushed a commit to waefrebeorn/slermes that referenced this pull request Jul 2, 2026
…ousResearch#8794)

OpenCode Zen was in _DOT_TO_HYPHEN_PROVIDERS, causing all dotted model
names (minimax-m2.5-free, gpt-5.4, glm-5.1) to be mangled. The fix:

Layer 1 (model_normalize.py): Remove opencode-zen from the blanket
dot-to-hyphen set. Add an explicit block that preserves dots for
non-Claude models while keeping Claude hyphenated (Zen's Claude
endpoint uses anthropic_messages mode which expects hyphens).

Layer 2 (run_agent.py _anthropic_preserve_dots): Add opencode-zen and
zai to the provider allowlist. Broaden URL check from opencode.ai/zen/go
to opencode.ai/zen/ to cover both Go and Zen endpoints. Add bigmodel.cn
for ZAI URL detection.

Also adds glm-5.1 to ZAI model lists in models.py and setup.py.

Closes NousResearch#7710

Salvaged from contributions by:
- konsisumer (PR NousResearch#7739, NousResearch#7719)
- DomGrieco (PR NousResearch#8708)
- Esashiero (PR NousResearch#7296)
- sharziki (PR NousResearch#7497)
- XiaoYingGee (PR NousResearch#8750)
- APTX4869-maker (PR NousResearch#8752)
- kagura-agent (PR NousResearch#7157)
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: opencode-zen incorrectly converts dots to hyphens in model names

2 participants