- Add mistral-medium-3-5 to model catalog with reasoning: true
- Add compat support for reasoning in api.ts
- Update docs/providers/mistral.md
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Add an accordion under the Built-in provider tab describing the runtime
catalog refresh from the Copilot `/models` endpoint and the
`plugins.entries.github-copilot.config.discovery.enabled = false` opt-out
for offline / air-gapped scenarios. Pairs with the
`fetchCopilotModelCatalog` change so users know what the new behavior
is and how to disable it if needed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add resolveBedrockServiceTier() and createBedrockServiceTierWrapper()
to bedrock-stream-wrappers.ts
- Export service tier functions from provider-stream-shared.ts SDK barrel
- Wire service tier into Bedrock provider wrapStreamFn
- Accepts serviceTier or service_tier via agents.defaults.params
Valid values: default, flex, priority, reserved
Authored by Deepseek-v4-Pro, reviewed by rob@mobilinkd.com.
Add openai/chat-latest as an explicit direct API-key OpenAI model override, document the moving alias, and normalize unsupported Responses text verbosity for that model.
SenseAudio (docs/providers/senseaudio.md): removed the duplicate
'# SenseAudio' H1 (Mintlify renders title from frontmatter; an in-body
H1 produces a brittle anchor). Reordered the properties table to lead
with provider id, plugin, and the speechProviders/mediaUnderstanding
contract before the website/docs links, sourced from
extensions/senseaudio/openclaw.plugin.json. Lowercased the H2 to
'Getting started' for consistency.
Xiaomi (docs/providers/xiaomi.md): expanded the 4-row properties table
to include plugin, onboarding flag, direct CLI flag, and contracts
(chat completions plus speechProviders). The TTS default is surfaced
inline so readers see the dual-contract setup in one glance, sourced
from extensions/xiaomi/openclaw.plugin.json.
Inworld (docs/providers/inworld.md): renamed the table header from
'Detail' to 'Property' and added bundled-plugin status and the
speechProviders contract. Surfaced the audio output formats (MP3,
OGG_OPUS, PCM 22050 Hz) as a Property row so readers do not have to
read the Audio outputs accordion to confirm telephony support.
Verified against extensions/inworld/openclaw.plugin.json.
Tencent (docs/providers/tencent.md): rewrote against
extensions/tencent/openclaw.plugin.json. Removed the duplicate
'# Tencent Cloud TokenHub' H1 (Mintlify renders title from frontmatter;
the in-body H1 produces a brittle anchor). Added a properties summary
with onboarding flag and direct CLI flag. Promoted the Quick Start
auth step into a CodeGroup covering onboarding/direct/env. Added a
tiered-pricing table sourced from the bundled cost.tieredPricing
metadata so cost expectations are visible alongside the catalog.
Replaced trailing bullet list under 'Related documentation' with a
CardGroup pointing at TokenHub product/model-card pages.
Mistral (docs/providers/mistral.md): replaced the 3-bullet provider
header with a properties table that surfaces all four contracts the
plugin registers (chat completions via the model catalog, media
understanding Voxtral batch, voice-call streaming Voxtral Realtime, and
memory embeddings via mistral-embed) plus the onboarding flag and
direct CLI flag. Removed a stray 'Z.AI uses Bearer auth' line that had
leaked into the 'Auth and base URL' accordion from a copy-paste
elsewhere; replaced it with a Mistral-correct base-URL override note.
Verified the seven-row LLM catalog matches plugin manifest model ids.
Inferrs (docs/providers/inferrs.md): added a properties table
explicitly stating that inferrs is NOT a bundled plugin and is
configured under models.providers.inferrs (no onboarding choice flag,
no extension package). Cross-linked SGLang and vLLM as bundled
self-hosted alternatives so readers picking a local backend can
compare.
GLM (docs/providers/glm.md): rewrote against extensions/zai/openclaw.plugin.json.
Removed the duplicate '# GLM models' H1 (Mintlify renders title from
frontmatter; an in-body H1 produces a brittle anchor). Replaced the
two-column model table with a single Notes column covering all 13
bundled refs, including which are reasoning, which accept image input,
and which is the default image model (zai/glm-4.6v from the auto-routing
defaults). Expanded the auth-choice step into a CodeGroup covering all
five onboarding choices (zai-api-key, zai-coding-global, zai-coding-cn,
zai-global, zai-cn) sourced from the plugin manifest's
providerAuthChoices.
Runway (docs/providers/runway.md): expanded the supported-modes table
to cover all seven Runway models from
extensions/runway/video-generation-provider.ts. Text-to-video now lists
veo3, veo3.1, veo3.1_fast alongside gen4.5; image-to-video adds
gen4_turbo, gen3a_turbo, veo3, veo3.1, and veo3.1_fast. Added an
aspect-ratio table covering the documented RUNWAY_TEXT_ASPECT_RATIOS
('16:9'/'9:16') and RUNWAY_EDIT_ASPECT_RATIOS ('1:1'/'16:9'/'9:16'/
'3:4'/'4:3'/'21:9'). Promoted the existing properties table with
plugin/onboarding/CLI flag rows from the manifest.
Vydra (docs/providers/vydra.md): added a properties table sourced from
extensions/vydra/openclaw.plugin.json, including the three
providerAuthContract memberships (image/video/speech) and the
vydra-api-key onboarding choice plus --vydra-api-key direct flag. Kept
the existing Warning about the apex-host redirect intact.
Cerebras (docs/providers/cerebras.md): rewrote against
extensions/cerebras/openclaw.plugin.json. Added a complete properties
summary, CodeGroup for onboarding/direct-flag/env, a Reasoning column on
the four-model catalog table (Z.ai GLM 4.7 and GPT OSS 120B are
reasoning-capable; Qwen 3 235B and Llama 3.1 8B are not), and a
CardGroup of related links.
Groq (docs/providers/groq.md): expanded the catalog from 4 hand-picked
entries to all 18 bundled models from extensions/groq/openclaw.plugin.json
with model refs, reasoning flags, input modalities, and context windows.
Removed a stale 'Mixtral 8x7B' row that does not exist in the bundled
catalog. Surfaced the audio media-understanding contract (whisper-large-v3-turbo,
auto priority 20) as a properties table and explained the per-model
reasoning_effort mapping for qwen/qwen3-32b vs the GPT OSS reasoning
models. Added an onboarding CodeGroup so the API-key step does not skip
'openclaw onboard --auth-choice groq-api-key'.
SGLang (docs/providers/sglang.md): added a properties summary table at
the top, including the Qwen/Qwen3-8B model placeholder from
extensions/sglang/defaults.ts, the supportsStreamingUsage runtime flag,
and the modelPricing.external: false setting. Clarified that the
onboarding choice id is bare 'sglang' (custom method) rather than the
'-api-key' suffix used by other providers, matching the manifest.
Verified against extensions/fireworks/openclaw.plugin.json and the
bundled provider entry. The plugin is enabledByDefault, registers the
`fireworks-ai` alias (defineSingleProviderPluginEntry), and dynamically
clones the Fire Pass template for any custom Fireworks model id with
thinking forced off when the id matches the Kimi pattern (model-id.ts +
thinking-policy.ts).
Added: alias mention, direct CLI flag, properties summary, dedicated
Note explaining why thinking is forced off for Kimi (the bundled
thinking policy + Fireworks API rejecting reasoning_* params), and a
'Why thinking is off' accordion pointing operators at Moonshot for
native reasoning. Replaced the broken `/concepts/model-providers` Tip
ordering and added a Thinking modes card to round out cross-links.
Reorganized Step 1 as a CodeGroup so onboarding, direct flag, and env
fallback are visible up front instead of buried under a separate
non-interactive example block (kept the non-interactive block for full
unattended install). Verified `/concepts/model-providers`,
`/help/troubleshooting`, `/tools/thinking`, and `/providers/moonshot`
targets exist on origin/main.
Fixed: the Getting Started step pointed users at `--auth-choice
qwen-standard-api-key`, which is the Qwen plugin's onboarding choice,
not Alibaba's. The bundled Alibaba plugin's manifest declares
`alibaba-model-studio-api-key` as its onboarding choiceId and
`--alibaba-model-studio-api-key <key>` as its direct CLI flag
(extensions/alibaba/openclaw.plugin.json). Restate against that source
of truth.
Added: provider properties summary table; explicit baseUrl override for
the China-region DashScope endpoint with the trailing-slash handling
documented; per-mode capability table (text-to-video / image-to-video /
reference-to-video) sourced from DASHSCOPE_WAN_VIDEO_CAPABILITIES in
src/video-generation/dashscope-compatible.ts; default-duration note
sourced from DEFAULT_VIDEO_GENERATION_DURATION_SECONDS = 5; Models FAQ
cross-link for auth profile mechanics; clarified the overlap with the
Qwen plugin (one MODELSTUDIO_API_KEY authenticates both).
Verified Wan model list, default model id, default base URL, and auth
env precedence against extensions/alibaba/video-generation-provider.ts
and extensions/alibaba/openclaw.plugin.json.
Summary:
- The PR removes `max` from OpenRouter DeepSeek V4 thinking profiles, maps stale OpenRouter `max` overrides to `xhigh`, preserves direct DeepSeek behavior, and updates docs, tests, and changelog.
- Reproducibility: yes. Source inspection on current main shows OpenRouter DeepSeek V4 advertises `max` and se ... ffort: "max"`, matching the linked 400 logs; I did not need a live OpenRouter request for this assist pass.
Automerge notes:
- Ran the ClawSweeper repair loop before final review.
- Addressed earlier ClawSweeper review findings before merge.
- Included post-review commit in the final squash: docs(changelog): credit OpenRouter duplicate fix
- Included post-review commit in the final squash: fix(openrouter): keep DeepSeek V4 reasoning effort valid
Validation:
- ClawSweeper review passed for head becdea4223.
- Required merge gates passed before the squash merge.
Prepared head SHA: becdea4223
Review: https://github.com/openclaw/openclaw/pull/77423#issuecomment-4372880583
Co-authored-by: sallyom <somalley@redhat.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>