claw-code/rust/crates/api/src
YeonGyu-Kim 3ac97e635e feat(api): add qwen/ prefix routing for Alibaba DashScope provider
Users in Discord #clawcode-get-help (web3g) asked for Qwen 3.6 Plus via
native Alibaba DashScope API instead of OpenRouter, which has stricter
rate limits. This commit adds first-class routing for qwen/ and bare
qwen- prefixed model names.

Changes:
- DEFAULT_DASHSCOPE_BASE_URL constant: /compatible-mode/v1 endpoint
- OpenAiCompatConfig::dashscope() factory mirroring openai()/xai()
- DASHSCOPE_ENV_VARS + credential_env_vars() wiring
- metadata_for_model: qwen/ and qwen- prefix routes to DashScope with
  auth_env=DASHSCOPE_API_KEY, reuses ProviderKind::OpenAi because
  DashScope speaks the OpenAI REST shape
- is_reasoning_model: detect qwen-qwq, qwq-*, and *-thinking variants
  so tuning params (temperature, top_p, etc.) get stripped before
  payload assembly (same pattern as o1/o3/grok-3-mini)

Tests added:
- providers::tests::qwen_prefix_routes_to_dashscope_not_anthropic
- openai_compat::tests::qwen_reasoning_variants_are_detected

89 api lib tests passing, 0 failing. cargo fmt --check: clean.

Closes the user-reported gap: 'use Qwen 3.6 Plus via Alibaba API
directly, not OpenRouter' without needing OPENAI_BASE_URL override
or unsetting ANTHROPIC_API_KEY.
2026-04-08 14:06:26 +09:00
..
providers feat(api): add qwen/ prefix routing for Alibaba DashScope provider 2026-04-08 14:06:26 +09:00
client.rs chore: additional AI slop cleanup and enforcer wiring from sessions 1/5 2026-04-03 18:35:27 +09:00
error.rs fix(api): Windows env hint + .env file loading fallback 2026-04-07 14:22:41 +09:00
http_client.rs feat: b6-openai-models — batch 6 2026-04-07 15:52:30 +09:00
lib.rs feat: b6-pdf-extract-v2 follow-up work — batch 6 2026-04-07 16:11:51 +09:00
prompt_cache.rs feat(api): add tuning params (temperature, top_p, penalties, stop) to MessageRequest 2026-04-08 07:07:33 +09:00
sse.rs fix(api): enrich JSON parse errors with response body, provider, and model 2026-04-07 14:22:05 +09:00
types.rs feat(api): add tuning params (temperature, top_p, penalties, stop) to MessageRequest 2026-04-08 07:07:33 +09:00