Problem
OpenCode Go is a multi-protocol provider. Different models require different API endpoints and formats:
| Endpoint |
Models |
SDK |
/responses |
grok-4.6, gpt-5.6-luna, muse-spark-1.3-contributor, muse-spark-1.2-contributor |
@ai-sdk/openai |
/messages |
minimax-m3, minimax-m2.7, minimax-m2.5, qwen3.8-max, qwen3.8-flash, qwen3.7-max, qwen3.7-plus, qwen3.6-plus |
@ai-sdk/anthropic |
/chat/completions |
glm-, kimi-, deepseek-, mimo-, hy* |
@ai-sdk/openai-compatible |
jcode currently routes all OpenAI-compatible providers through /chat/completions (hardcoded in openrouter_sse_stream.rs line 180). This means Muse, Grok, and GPT-5.6-Luna models return HTTP 500, and MiniMax/Qwen models also fail.
Reproduction
- Configure OpenCode Go provider with a valid API key
- Select
muse-spark-1.3-contributor model
- Send any message
- Observe HTTP 500 errors in logs:
API stream attempt 1/8 over HTTPS transport (model: muse-spark-1.3-contributor, endpoint: https://opencode.ai/zen/go/v1, auth: OPENCODE_GO_API_KEY)
status: 500 Internal Server Error
response: {"type":"error","error":{"type":"error","message":"Internal server error"}}
Direct curl confirmation:
muse-spark-1.3-contributor via /chat/completions → HTTP 500
muse-spark-1.3-contributor via /responses → HTTP 200
kimi-k2.7-code via /chat/completions → HTTP 200
Root Cause
In crates/jcode-provider-openrouter-runtime/src/openrouter_sse_stream.rs:
let url = format!("{}/chat/completions", api_base);
This hardcodes /chat/completions for all OpenAI-compatible providers. OpenCode Go requires per-model endpoint routing.
Expected Behavior
jcode should route OpenCode Go models to their correct endpoints:
- Muse/Grok/GPT-5.6-Luna →
/responses (OpenAI Responses API format)
- MiniMax/Qwen →
/messages (Anthropic Messages API format)
- GLM/Kimi/DeepSeek/MiMo/Hy →
/chat/completions (current behavior)
Related Issues
Workaround
Use models that work on /chat/completions: kimi-k2.7-code, glm-5.3, deepseek-v4-pro, etc.
Environment
- jcode v0.84.0 (57d5878)
- macOS aarch64
- OpenCode Go provider with valid API key
Problem
OpenCode Go is a multi-protocol provider. Different models require different API endpoints and formats:
/responses@ai-sdk/openai/messages@ai-sdk/anthropic/chat/completions@ai-sdk/openai-compatiblejcode currently routes all OpenAI-compatible providers through
/chat/completions(hardcoded inopenrouter_sse_stream.rsline 180). This means Muse, Grok, and GPT-5.6-Luna models return HTTP 500, and MiniMax/Qwen models also fail.Reproduction
muse-spark-1.3-contributormodelDirect curl confirmation:
muse-spark-1.3-contributorvia/chat/completions→ HTTP 500muse-spark-1.3-contributorvia/responses→ HTTP 200kimi-k2.7-codevia/chat/completions→ HTTP 200Root Cause
In
crates/jcode-provider-openrouter-runtime/src/openrouter_sse_stream.rs:This hardcodes
/chat/completionsfor all OpenAI-compatible providers. OpenCode Go requires per-model endpoint routing.Expected Behavior
jcode should route OpenCode Go models to their correct endpoints:
/responses(OpenAI Responses API format)/messages(Anthropic Messages API format)/chat/completions(current behavior)Related Issues
Workaround
Use models that work on
/chat/completions: kimi-k2.7-code, glm-5.3, deepseek-v4-pro, etc.Environment