Skip to content

Commit acf577c

Browse files
authored
Merge branch 'main' into fix/53006-mistral-max-tokens
2 parents 1b418bb + f9a7427 commit acf577c

17 files changed

+209
-66
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ Docs: https://docs.openclaw.ai
2121
- Plugins/message tool: make Discord `components` and Slack `blocks` optional again so pin/unpin/react flows stop failing schema validation and Slack media sends are no longer forced into an invalid blocks-plus-media payload. Fixes #52970 and #52962. Thanks @vincentkoc.
2222
- Plugins/Feishu: route `message(..., media=...)` sends through the Feishu outbound media path so file and image attachments actually send instead of being silently dropped. Fixes #52962. Thanks @vincentkoc.
2323
- ClawHub/skills: resolve the local ClawHub auth token for gateway skill browsing and switch browse-all requests to search so ClawControl stops falling into unauthenticated 429s and empty authenticated skill lists. Fixes #52949. Thanks @vincentkoc.
24-
- Mistral/models: lower bundled Mistral max-token defaults to safe output budgets and teach `openclaw doctor --fix` to repair old persisted Mistral provider configs that still carry context-sized output limits, avoiding deterministic Mistral 422 rejects on fresh and existing setups. Fixes #52599. Thanks @vincentkoc.
24+
- Mistral/models: lower bundled Mistral max-token defaults to safe output budgets and teach `openclaw doctor --fix` to repair old persisted Mistral provider configs that still carry context-sized output limits, avoiding deterministic Mistral 422 rejects on fresh and existing setups. Fixes #52599. Thanks @MoerAI and @vincentkoc.
25+
- Gateway/model pricing: stop `openrouter/auto` pricing refresh from recursing indefinitely during bootstrap, so OpenRouter auto routes can populate cached pricing and `usage.cost` again. Fixes #53035. Thanks @vincentkoc.
2526

2627
## 2026.3.22
2728

docs/automation/webhook.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ Payload:
8686
- `deliver` optional (boolean): If `true`, the agent's response will be sent to the messaging channel. Defaults to `true`. Responses that are only heartbeat acknowledgments are automatically skipped.
8787
- `channel` optional (string): The messaging channel for delivery. Core channels: `last`, `whatsapp`, `telegram`, `discord`, `slack`, `signal`, `imessage`, `irc`, `googlechat`, `line`. Extension channels (plugins): `msteams`, `mattermost`, and others. Defaults to `last`.
8888
- `to` optional (string): The recipient identifier for the channel (e.g., phone number for WhatsApp/Signal, chat ID for Telegram, channel ID for Discord/Slack/Mattermost (plugin), conversation ID for Microsoft Teams). Defaults to the last recipient in the main session.
89-
- `model` optional (string): Model override (e.g., `anthropic/claude-3-5-sonnet` or an alias). Must be in the allowed model list if restricted.
89+
- `model` optional (string): Model override (e.g., `anthropic/claude-sonnet-4-6` or an alias). Must be in the allowed model list if restricted.
9090
- `thinking` optional (string): Thinking level override (e.g., `low`, `medium`, `high`).
9191
- `timeoutSeconds` optional (number): Maximum duration for the agent run in seconds.
9292

docs/channels/index.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,12 @@ Text is supported everywhere; media and reactions vary by channel.
2626
- [Nextcloud Talk](/channels/nextcloud-talk) — Self-hosted chat via Nextcloud Talk (plugin, installed separately).
2727
- [Nostr](/channels/nostr) — Decentralized DMs via NIP-04 (plugin, installed separately).
2828
- [Signal](/channels/signal) — signal-cli; privacy-focused.
29-
- [Synology Chat](/channels/synology-chat) — Synology NAS Chat via outgoing+incoming webhooks (plugin, installed separately).
3029
- [Slack](/channels/slack) — Bolt SDK; workspace apps.
30+
- [Synology Chat](/channels/synology-chat) — Synology NAS Chat via outgoing+incoming webhooks (plugin, installed separately).
3131
- [Telegram](/channels/telegram) — Bot API via grammY; supports groups.
3232
- [Tlon](/channels/tlon) — Urbit-based messenger (plugin, installed separately).
3333
- [Twitch](/channels/twitch) — Twitch chat via IRC connection (plugin, installed separately).
34+
- [Voice Call](/plugins/voice-call) — Telephony via Plivo or Twilio (plugin, installed separately).
3435
- [WebChat](/web/webchat) — Gateway WebChat UI over WebSocket.
3536
- [WhatsApp](/channels/whatsapp) — Most popular; uses Baileys and requires QR pairing.
3637
- [Zalo](/channels/zalo) — Zalo Bot API; Vietnam's popular messenger (plugin, installed separately).

docs/cli/index.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,9 @@ openclaw [--dev] [--profile <name>] <command>
113113
audit
114114
secrets
115115
reload
116-
migrate
116+
audit
117+
configure
118+
apply
117119
reset
118120
uninstall
119121
update
@@ -132,16 +134,21 @@ openclaw [--dev] [--profile <name>] <command>
132134
check
133135
plugins
134136
list
135-
info
137+
inspect
136138
install
139+
uninstall
140+
update
137141
enable
138142
disable
139143
doctor
144+
marketplace list
140145
memory
141146
status
142147
index
143148
search
144149
message
150+
send
151+
broadcast
145152
agent
146153
agents
147154
list

docs/docs.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -950,6 +950,7 @@
950950
"pages": [
951951
"install/updating",
952952
"install/migrating",
953+
"install/migrating-matrix",
953954
"install/uninstall",
954955
"install/development-channels"
955956
]
@@ -979,8 +980,8 @@
979980
"channels/nextcloud-talk",
980981
"channels/nostr",
981982
"channels/signal",
982-
"channels/synology-chat",
983983
"channels/slack",
984+
"channels/synology-chat",
984985
"channels/telegram",
985986
"channels/tlon",
986987
"channels/twitch",
@@ -1180,35 +1181,35 @@
11801181
"pages": [
11811182
"providers/anthropic",
11821183
"providers/bedrock",
1183-
"providers/cloudflare-ai-gateway",
11841184
"providers/claude-max-api-proxy",
1185+
"providers/cloudflare-ai-gateway",
11851186
"providers/deepgram",
11861187
"providers/deepseek",
11871188
"providers/github-copilot",
1189+
"providers/glm",
11881190
"providers/google",
11891191
"providers/groq",
11901192
"providers/huggingface",
11911193
"providers/kilocode",
11921194
"providers/litellm",
1193-
"providers/glm",
11941195
"providers/minimax",
1196+
"providers/mistral",
11951197
"providers/modelstudio",
11961198
"providers/moonshot",
1197-
"providers/mistral",
11981199
"providers/nvidia",
11991200
"providers/ollama",
12001201
"providers/openai",
1201-
"providers/opencode-go",
12021202
"providers/opencode",
1203+
"providers/opencode-go",
12031204
"providers/openrouter",
12041205
"providers/perplexity-provider",
12051206
"providers/qianfan",
12061207
"providers/qwen",
12071208
"providers/sglang",
12081209
"providers/synthetic",
12091210
"providers/together",
1210-
"providers/vercel-ai-gateway",
12111211
"providers/venice",
1212+
"providers/vercel-ai-gateway",
12121213
"providers/vllm",
12131214
"providers/volcengine",
12141215
"providers/xai",
@@ -1745,7 +1746,6 @@
17451746
{
17461747
"group": "扩展",
17471748
"pages": [
1748-
"zh-CN/plugins/architecture",
17491749
"zh-CN/plugins/voice-call",
17501750
"zh-CN/plugins/zalouser",
17511751
"zh-CN/plugins/manifest",

docs/plugins/sdk-overview.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,6 @@ Always import from a specific subpath:
2727
```typescript
2828
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
2929
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/core";
30-
31-
// Deprecated — will be removed in the next major release
32-
import { definePluginEntry } from "openclaw/plugin-sdk";
3330
```
3431

3532
Each subpath is a small, self-contained module. This keeps startup fast and

docs/providers/index.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ Looking for chat channel docs (WhatsApp/Telegram/Discord/Slack/Mattermost (plugi
2929
- [Amazon Bedrock](/providers/bedrock)
3030
- [Anthropic (API + Claude Code CLI)](/providers/anthropic)
3131
- [Cloudflare AI Gateway](/providers/cloudflare-ai-gateway)
32+
- [DeepSeek](/providers/deepseek)
33+
- [GitHub Copilot](/providers/github-copilot)
3234
- [GLM models](/providers/glm)
3335
- [Google (Gemini)](/providers/google)
3436
- [Groq (LPU inference)](/providers/groq)
@@ -42,15 +44,17 @@ Looking for chat channel docs (WhatsApp/Telegram/Discord/Slack/Mattermost (plugi
4244
- [NVIDIA](/providers/nvidia)
4345
- [Ollama (cloud + local models)](/providers/ollama)
4446
- [OpenAI (API + Codex)](/providers/openai)
45-
- [OpenCode (Zen + Go)](/providers/opencode)
47+
- [OpenCode](/providers/opencode)
48+
- [OpenCode Go](/providers/opencode-go)
4649
- [OpenRouter](/providers/openrouter)
4750
- [Perplexity (web search)](/providers/perplexity-provider)
4851
- [Qianfan](/providers/qianfan)
4952
- [Qwen (OAuth)](/providers/qwen)
5053
- [SGLang (local models)](/providers/sglang)
54+
- [Synthetic](/providers/synthetic)
5155
- [Together AI](/providers/together)
52-
- [Vercel AI Gateway](/providers/vercel-ai-gateway)
5356
- [Venice (Venice AI, privacy-focused)](/providers/venice)
57+
- [Vercel AI Gateway](/providers/vercel-ai-gateway)
5458
- [vLLM (local models)](/providers/vllm)
5559
- [Volcengine (Doubao)](/providers/volcengine)
5660
- [xAI](/providers/xai)

docs/tools/index.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -109,18 +109,18 @@ Per-agent override: `agents.list[].tools.profile`.
109109

110110
Use `group:*` shorthands in allow/deny lists:
111111

112-
| Group | Tools |
113-
| ------------------ | ------------------------------------------------------------------------------ |
114-
| `group:runtime` | exec, bash, process |
115-
| `group:fs` | read, write, edit, apply_patch |
116-
| `group:sessions` | sessions_list, sessions_history, sessions_send, sessions_spawn, session_status |
117-
| `group:memory` | memory_search, memory_get |
118-
| `group:web` | web_search, web_fetch |
119-
| `group:ui` | browser, canvas |
120-
| `group:automation` | cron, gateway |
121-
| `group:messaging` | message |
122-
| `group:nodes` | nodes |
123-
| `group:openclaw` | All built-in OpenClaw tools (excludes plugin tools) |
112+
| Group | Tools |
113+
| ------------------ | --------------------------------------------------------------------------------------------------------- |
114+
| `group:runtime` | exec, bash, process |
115+
| `group:fs` | read, write, edit, apply_patch |
116+
| `group:sessions` | sessions_list, sessions_history, sessions_send, sessions_spawn, sessions_yield, subagents, session_status |
117+
| `group:memory` | memory_search, memory_get |
118+
| `group:web` | web_search, web_fetch |
119+
| `group:ui` | browser, canvas |
120+
| `group:automation` | cron, gateway |
121+
| `group:messaging` | message |
122+
| `group:nodes` | nodes |
123+
| `group:openclaw` | All built-in OpenClaw tools (excludes plugin tools) |
124124

125125
### Provider-specific restrictions
126126

src/agents/bash-tools.exec.approval-id.test.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import fs from "node:fs/promises";
22
import os from "node:os";
33
import path from "node:path";
4-
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
4+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
55
import { clearConfigCache } from "../config/config.js";
66
import { buildSystemRunPreparePayload } from "../test-utils/system-run-prepare-payload.js";
77

@@ -203,19 +203,17 @@ describe("exec approvals", () => {
203203
let previousHome: string | undefined;
204204
let previousUserProfile: string | undefined;
205205

206-
beforeAll(async () => {
207-
({ callGatewayTool } = await import("./tools/gateway.js"));
208-
({ createExecTool } = await import("./bash-tools.exec.js"));
209-
({ detectCommandObfuscation } = await import("../infra/exec-obfuscation-detect.js"));
210-
});
211-
212206
beforeEach(async () => {
213207
previousHome = process.env.HOME;
214208
previousUserProfile = process.env.USERPROFILE;
215209
const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-test-"));
216210
process.env.HOME = tempDir;
217211
// Windows uses USERPROFILE for os.homedir()
218212
process.env.USERPROFILE = tempDir;
213+
vi.resetModules();
214+
({ callGatewayTool } = await import("./tools/gateway.js"));
215+
({ createExecTool } = await import("./bash-tools.exec.js"));
216+
({ detectCommandObfuscation } = await import("../infra/exec-obfuscation-detect.js"));
219217
});
220218

221219
afterEach(() => {

src/agents/pi-embedded-runner/compact.hooks.harness.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,7 @@ export async function loadCompactHooksHarness(): Promise<{
280280

281281
vi.doMock("../../process/command-queue.js", () => ({
282282
enqueueCommandInLane: vi.fn((_lane: unknown, task: () => unknown) => task()),
283+
clearCommandLane: vi.fn(() => 0),
283284
}));
284285

285286
vi.doMock("./lanes.js", () => ({

0 commit comments

Comments
 (0)