build: prepare 2026.4.1-beta.1 release

This commit is contained in:
Peter Steinberger 2026-04-01 15:08:04 +01:00
parent 47be52e2cb
commit 8988894ff7
No known key found for this signature in database
94 changed files with 721 additions and 138 deletions

View File

@ -6,6 +6,12 @@ Docs: https://docs.openclaw.ai
### Changes
### Fixes
## 2026.4.1-beta.1
### Changes
- Tasks/chat: add `/tasks` as a chat-native background task board for the current session, with recent task details and agent-local fallback counts when no linked tasks are visible. Related #54226. Thanks @vincentkoc.
- Web search/SearXNG: add the bundled SearXNG provider plugin for `web_search` with configurable host support. (#57317) Thanks @cgdusek.
- Amazon Bedrock/Guardrails: add Bedrock Guardrails support to the bundled provider. (#58588) Thanks @MikeORed.

View File

@ -65,8 +65,8 @@ android {
applicationId = "ai.openclaw.app"
minSdk = 31
targetSdk = 36
versionCode = 2026040100
versionName = "2026.4.1"
versionCode = 2026040101
versionName = "2026.4.1-beta.1"
ndk {
// Support all major ABIs — native libs are tiny (~47 KB per ABI)
abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")

View File

@ -1,8 +1,8 @@
// Shared iOS version defaults.
// Generated overrides live in build/Version.xcconfig (git-ignored).
OPENCLAW_GATEWAY_VERSION = 2026.4.1
OPENCLAW_GATEWAY_VERSION = 2026.4.1-beta.1
OPENCLAW_MARKETING_VERSION = 2026.4.1
OPENCLAW_BUILD_VERSION = 2026040100
OPENCLAW_BUILD_VERSION = 2026040101
#include? "../build/Version.xcconfig"

View File

@ -15,9 +15,9 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>2026.4.1</string>
<string>2026.4.1-beta.1</string>
<key>CFBundleVersion</key>
<string>2026040100</string>
<string>2026040101</string>
<key>CFBundleIconFile</key>
<string>OpenClaw</string>
<key>CFBundleURLTypes</key>

View File

@ -31521,7 +31521,7 @@
"network"
],
"label": "Slack Exec Approval Approvers",
"help": "Slack user IDs allowed to approve exec requests for this workspace account. Use Slack user IDs or user targets such as `U123`, `user:U123`, or `<@U123>`. If you leave this unset, OpenClaw falls back to owner IDs inferred from channels.slack.allowFrom, channels.slack.dm.allowFrom, and defaultTo when possible.",
"help": "Slack user IDs allowed to approve exec requests for this workspace account. Use Slack user IDs or user targets such as `U123`, `user:U123`, or `<@U123>`. If you leave this unset, OpenClaw falls back to commands.ownerAllowFrom when possible.",
"hasChildren": true
},
{
@ -32768,6 +32768,31 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.direct.*.errorCooldownMs",
"kind": "channel",
"type": "integer",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.direct.*.errorPolicy",
"kind": "channel",
"type": "string",
"required": false,
"enumValues": [
"always",
"once",
"silent"
],
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.direct.*.requireTopic",
"kind": "channel",
@ -33031,6 +33056,31 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.direct.*.topics.*.errorCooldownMs",
"kind": "channel",
"type": "integer",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.direct.*.topics.*.errorPolicy",
"kind": "channel",
"type": "string",
"required": false,
"enumValues": [
"always",
"once",
"silent"
],
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.direct.*.topics.*.groupPolicy",
"kind": "channel",
@ -33193,6 +33243,31 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.errorCooldownMs",
"kind": "channel",
"type": "integer",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.errorPolicy",
"kind": "channel",
"type": "string",
"required": false,
"enumValues": [
"always",
"once",
"silent"
],
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.execApprovals",
"kind": "channel",
@ -33393,6 +33468,31 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.groups.*.errorCooldownMs",
"kind": "channel",
"type": "integer",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.groups.*.errorPolicy",
"kind": "channel",
"type": "string",
"required": false,
"enumValues": [
"always",
"once",
"silent"
],
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.groups.*.groupPolicy",
"kind": "channel",
@ -33671,6 +33771,31 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.groups.*.topics.*.errorCooldownMs",
"kind": "channel",
"type": "integer",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.groups.*.topics.*.errorPolicy",
"kind": "channel",
"type": "string",
"required": false,
"enumValues": [
"always",
"once",
"silent"
],
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.groups.*.topics.*.groupPolicy",
"kind": "channel",
@ -34805,6 +34930,31 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.direct.*.errorCooldownMs",
"kind": "channel",
"type": "integer",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.direct.*.errorPolicy",
"kind": "channel",
"type": "string",
"required": false,
"enumValues": [
"always",
"once",
"silent"
],
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.direct.*.requireTopic",
"kind": "channel",
@ -35068,6 +35218,31 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.direct.*.topics.*.errorCooldownMs",
"kind": "channel",
"type": "integer",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.direct.*.topics.*.errorPolicy",
"kind": "channel",
"type": "string",
"required": false,
"enumValues": [
"always",
"once",
"silent"
],
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.direct.*.topics.*.groupPolicy",
"kind": "channel",
@ -35236,6 +35411,31 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.errorCooldownMs",
"kind": "channel",
"type": "integer",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.errorPolicy",
"kind": "channel",
"type": "string",
"required": false,
"enumValues": [
"always",
"once",
"silent"
],
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.execApprovals",
"kind": "channel",
@ -35467,6 +35667,31 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.groups.*.errorCooldownMs",
"kind": "channel",
"type": "integer",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.groups.*.errorPolicy",
"kind": "channel",
"type": "string",
"required": false,
"enumValues": [
"always",
"once",
"silent"
],
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.groups.*.groupPolicy",
"kind": "channel",
@ -35745,6 +35970,31 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.groups.*.topics.*.errorCooldownMs",
"kind": "channel",
"type": "integer",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.groups.*.topics.*.errorPolicy",
"kind": "channel",
"type": "string",
"required": false,
"enumValues": [
"always",
"once",
"silent"
],
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.groups.*.topics.*.groupPolicy",
"kind": "channel",
@ -42753,6 +43003,31 @@
"tags": [],
"hasChildren": false
},
{
"path": "gateway.webchat",
"kind": "core",
"type": "object",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": true
},
{
"path": "gateway.webchat.chatHistoryMaxChars",
"kind": "core",
"type": "integer",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [
"network",
"performance"
],
"label": "WebChat History Max Chars",
"help": "Max characters per text field in chat.history responses before truncation (default: 12000).",
"hasChildren": false
},
{
"path": "hooks",
"kind": "core",
@ -55724,6 +55999,183 @@
"help": "Explicitly allows this plugin to request provider/model overrides in background subagent runs. Keep false unless the plugin is trusted to steer model selection.",
"hasChildren": false
},
{
"path": "plugins.entries.searxng",
"kind": "plugin",
"type": "object",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [
"advanced"
],
"label": "@openclaw/searxng-plugin",
"help": "OpenClaw SearXNG plugin (plugin: searxng)",
"hasChildren": true
},
{
"path": "plugins.entries.searxng.config",
"kind": "plugin",
"type": "object",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [
"advanced"
],
"label": "@openclaw/searxng-plugin Config",
"help": "Plugin-defined config payload for searxng.",
"hasChildren": true
},
{
"path": "plugins.entries.searxng.config.webSearch",
"kind": "plugin",
"type": "object",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": true
},
{
"path": "plugins.entries.searxng.config.webSearch.baseUrl",
"kind": "plugin",
"type": [
"object",
"string"
],
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [
"advanced",
"url-secret"
],
"label": "SearXNG Base URL",
"help": "Base URL of your SearXNG instance, such as http://localhost:8080 or https://search.example.com/searxng.",
"hasChildren": false
},
{
"path": "plugins.entries.searxng.config.webSearch.categories",
"kind": "plugin",
"type": "string",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [
"advanced"
],
"label": "SearXNG Categories",
"help": "Optional comma-separated categories such as general, news, or science.",
"hasChildren": false
},
{
"path": "plugins.entries.searxng.config.webSearch.language",
"kind": "plugin",
"type": "string",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [
"advanced"
],
"label": "SearXNG Language",
"help": "Optional language code for results such as en, de, or fr.",
"hasChildren": false
},
{
"path": "plugins.entries.searxng.enabled",
"kind": "plugin",
"type": "boolean",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [
"advanced"
],
"label": "Enable @openclaw/searxng-plugin",
"hasChildren": false
},
{
"path": "plugins.entries.searxng.hooks",
"kind": "plugin",
"type": "object",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [
"advanced"
],
"label": "Plugin Hook Policy",
"help": "Per-plugin typed hook policy controls for core-enforced safety gates. Use this to constrain high-impact hook categories without disabling the entire plugin.",
"hasChildren": true
},
{
"path": "plugins.entries.searxng.hooks.allowPromptInjection",
"kind": "plugin",
"type": "boolean",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [
"access"
],
"label": "Allow Prompt Injection Hooks",
"help": "Controls whether this plugin may mutate prompts through typed hooks. Set false to block `before_prompt_build` and ignore prompt-mutating fields from legacy `before_agent_start`, while preserving legacy `modelOverride` and `providerOverride` behavior.",
"hasChildren": false
},
{
"path": "plugins.entries.searxng.subagent",
"kind": "plugin",
"type": "object",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [
"advanced"
],
"label": "Plugin Subagent Policy",
"help": "Per-plugin subagent runtime controls for model override trust and allowlists. Keep this unset unless a plugin must explicitly steer subagent model selection.",
"hasChildren": true
},
{
"path": "plugins.entries.searxng.subagent.allowedModels",
"kind": "plugin",
"type": "array",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [
"access"
],
"label": "Plugin Subagent Allowed Models",
"help": "Allowed override targets for trusted plugin subagent runs as canonical \"provider/model\" refs. Use \"*\" only when you intentionally allow any model.",
"hasChildren": true
},
{
"path": "plugins.entries.searxng.subagent.allowedModels.*",
"kind": "plugin",
"type": "string",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "plugins.entries.searxng.subagent.allowModelOverride",
"kind": "plugin",
"type": "boolean",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [
"access"
],
"label": "Allow Plugin Subagent Model Override",
"help": "Explicitly allows this plugin to request provider/model overrides in background subagent runs. Keep false unless the plugin is trusted to steer model selection.",
"hasChildren": false
},
{
"path": "plugins.entries.sglang",
"kind": "plugin",

View File

@ -1,4 +1,4 @@
{"generatedBy":"scripts/generate-config-doc-baseline.ts","recordType":"meta","totalPaths":5730}
{"generatedBy":"scripts/generate-config-doc-baseline.ts","recordType":"meta","totalPaths":5765}
{"recordType":"path","path":"acp","kind":"core","type":"object","required":false,"deprecated":false,"sensitive":false,"tags":["advanced"],"label":"ACP","help":"ACP runtime controls for enabling dispatch, selecting backends, constraining allowed agent targets, and tuning streamed turn projection behavior.","hasChildren":true}
{"recordType":"path","path":"acp.allowedAgents","kind":"core","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":["access"],"label":"ACP Allowed Agents","help":"Allowlist of ACP target agent ids permitted for ACP runtime sessions. Empty means no additional allowlist restriction.","hasChildren":true}
{"recordType":"path","path":"acp.allowedAgents.*","kind":"core","type":"string","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
@ -2829,7 +2829,7 @@
{"recordType":"path","path":"channels.slack.execApprovals","kind":"channel","type":"object","required":false,"deprecated":false,"sensitive":false,"tags":["channels","network"],"label":"Slack Exec Approvals","help":"Slack-native exec approval routing and approver authorization. Enable this only when Slack should act as an explicit exec-approval client for the selected workspace account.","hasChildren":true}
{"recordType":"path","path":"channels.slack.execApprovals.agentFilter","kind":"channel","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":["channels","network"],"label":"Slack Exec Approval Agent Filter","help":"Optional allowlist of agent IDs eligible for Slack exec approvals, for example `[\"main\", \"ops-agent\"]`. Use this to keep approval prompts scoped to the agents you actually operate from Slack.","hasChildren":true}
{"recordType":"path","path":"channels.slack.execApprovals.agentFilter.*","kind":"channel","type":"string","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.slack.execApprovals.approvers","kind":"channel","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":["channels","network"],"label":"Slack Exec Approval Approvers","help":"Slack user IDs allowed to approve exec requests for this workspace account. Use Slack user IDs or user targets such as `U123`, `user:U123`, or `<@U123>`. If you leave this unset, OpenClaw falls back to owner IDs inferred from channels.slack.allowFrom, channels.slack.dm.allowFrom, and defaultTo when possible.","hasChildren":true}
{"recordType":"path","path":"channels.slack.execApprovals.approvers","kind":"channel","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":["channels","network"],"label":"Slack Exec Approval Approvers","help":"Slack user IDs allowed to approve exec requests for this workspace account. Use Slack user IDs or user targets such as `U123`, `user:U123`, or `<@U123>`. If you leave this unset, OpenClaw falls back to commands.ownerAllowFrom when possible.","hasChildren":true}
{"recordType":"path","path":"channels.slack.execApprovals.approvers.*","kind":"channel","type":["number","string"],"required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.slack.execApprovals.enabled","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":["channels","network"],"label":"Slack Exec Approvals Enabled","help":"Enable Slack exec approvals for this account. When false or unset, Slack messages/buttons cannot approve exec requests.","hasChildren":false}
{"recordType":"path","path":"channels.slack.execApprovals.sessionFilter","kind":"channel","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":["channels","network","storage"],"label":"Slack Exec Approval Session Filter","help":"Optional session-key filters matched as substring or regex-style patterns before Slack approval routing is used. Use narrow patterns so Slack approvals only appear for intended sessions.","hasChildren":true}
@ -2936,6 +2936,8 @@
{"recordType":"path","path":"channels.telegram.accounts.*.direct.*.autoTopicLabel.prompt","kind":"channel","type":"string","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.direct.*.dmPolicy","kind":"channel","type":"string","required":false,"enumValues":["pairing","allowlist","open","disabled"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.direct.*.enabled","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.direct.*.errorCooldownMs","kind":"channel","type":"integer","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.direct.*.errorPolicy","kind":"channel","type":"string","required":false,"enumValues":["always","once","silent"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.direct.*.requireTopic","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.direct.*.skills","kind":"channel","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":true}
{"recordType":"path","path":"channels.telegram.accounts.*.direct.*.skills.*","kind":"channel","type":"string","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
@ -2962,6 +2964,8 @@
{"recordType":"path","path":"channels.telegram.accounts.*.direct.*.topics.*.allowFrom.*","kind":"channel","type":["number","string"],"required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.direct.*.topics.*.disableAudioPreflight","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.direct.*.topics.*.enabled","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.direct.*.topics.*.errorCooldownMs","kind":"channel","type":"integer","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.direct.*.topics.*.errorPolicy","kind":"channel","type":"string","required":false,"enumValues":["always","once","silent"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.direct.*.topics.*.groupPolicy","kind":"channel","type":"string","required":false,"enumValues":["open","disabled","allowlist"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.direct.*.topics.*.requireMention","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.direct.*.topics.*.skills","kind":"channel","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":true}
@ -2977,6 +2981,8 @@
{"recordType":"path","path":"channels.telegram.accounts.*.draftChunk.maxChars","kind":"channel","type":"integer","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.draftChunk.minChars","kind":"channel","type":"integer","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.enabled","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.errorCooldownMs","kind":"channel","type":"integer","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.errorPolicy","kind":"channel","type":"string","required":false,"enumValues":["always","once","silent"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.execApprovals","kind":"channel","type":"object","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":true}
{"recordType":"path","path":"channels.telegram.accounts.*.execApprovals.agentFilter","kind":"channel","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":true}
{"recordType":"path","path":"channels.telegram.accounts.*.execApprovals.agentFilter.*","kind":"channel","type":"string","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
@ -2995,6 +3001,8 @@
{"recordType":"path","path":"channels.telegram.accounts.*.groups.*.allowFrom.*","kind":"channel","type":["number","string"],"required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.groups.*.disableAudioPreflight","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.groups.*.enabled","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.groups.*.errorCooldownMs","kind":"channel","type":"integer","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.groups.*.errorPolicy","kind":"channel","type":"string","required":false,"enumValues":["always","once","silent"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.groups.*.groupPolicy","kind":"channel","type":"string","required":false,"enumValues":["open","disabled","allowlist"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.groups.*.requireMention","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.groups.*.skills","kind":"channel","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":true}
@ -3022,6 +3030,8 @@
{"recordType":"path","path":"channels.telegram.accounts.*.groups.*.topics.*.allowFrom.*","kind":"channel","type":["number","string"],"required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.groups.*.topics.*.disableAudioPreflight","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.groups.*.topics.*.enabled","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.groups.*.topics.*.errorCooldownMs","kind":"channel","type":"integer","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.groups.*.topics.*.errorPolicy","kind":"channel","type":"string","required":false,"enumValues":["always","once","silent"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.groups.*.topics.*.groupPolicy","kind":"channel","type":"string","required":false,"enumValues":["open","disabled","allowlist"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.groups.*.topics.*.requireMention","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.accounts.*.groups.*.topics.*.skills","kind":"channel","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":true}
@ -3121,6 +3131,8 @@
{"recordType":"path","path":"channels.telegram.direct.*.autoTopicLabel.prompt","kind":"channel","type":"string","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.direct.*.dmPolicy","kind":"channel","type":"string","required":false,"enumValues":["pairing","allowlist","open","disabled"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.direct.*.enabled","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.direct.*.errorCooldownMs","kind":"channel","type":"integer","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.direct.*.errorPolicy","kind":"channel","type":"string","required":false,"enumValues":["always","once","silent"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.direct.*.requireTopic","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.direct.*.skills","kind":"channel","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":true}
{"recordType":"path","path":"channels.telegram.direct.*.skills.*","kind":"channel","type":"string","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
@ -3147,6 +3159,8 @@
{"recordType":"path","path":"channels.telegram.direct.*.topics.*.allowFrom.*","kind":"channel","type":["number","string"],"required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.direct.*.topics.*.disableAudioPreflight","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.direct.*.topics.*.enabled","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.direct.*.topics.*.errorCooldownMs","kind":"channel","type":"integer","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.direct.*.topics.*.errorPolicy","kind":"channel","type":"string","required":false,"enumValues":["always","once","silent"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.direct.*.topics.*.groupPolicy","kind":"channel","type":"string","required":false,"enumValues":["open","disabled","allowlist"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.direct.*.topics.*.requireMention","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.direct.*.topics.*.skills","kind":"channel","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":true}
@ -3162,6 +3176,8 @@
{"recordType":"path","path":"channels.telegram.draftChunk.maxChars","kind":"channel","type":"integer","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.draftChunk.minChars","kind":"channel","type":"integer","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.enabled","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.errorCooldownMs","kind":"channel","type":"integer","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.errorPolicy","kind":"channel","type":"string","required":false,"enumValues":["always","once","silent"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.execApprovals","kind":"channel","type":"object","required":false,"deprecated":false,"sensitive":false,"tags":["channels","network"],"label":"Telegram Exec Approvals","help":"Telegram-native exec approval routing and approver authorization. Enable this only when Telegram should act as an explicit exec-approval client for the selected bot account.","hasChildren":true}
{"recordType":"path","path":"channels.telegram.execApprovals.agentFilter","kind":"channel","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":["channels","network"],"label":"Telegram Exec Approval Agent Filter","help":"Optional allowlist of agent IDs eligible for Telegram exec approvals, for example `[\"main\", \"ops-agent\"]`. Use this to keep approval prompts scoped to the agents you actually operate from Telegram.","hasChildren":true}
{"recordType":"path","path":"channels.telegram.execApprovals.agentFilter.*","kind":"channel","type":"string","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
@ -3180,6 +3196,8 @@
{"recordType":"path","path":"channels.telegram.groups.*.allowFrom.*","kind":"channel","type":["number","string"],"required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.groups.*.disableAudioPreflight","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.groups.*.enabled","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.groups.*.errorCooldownMs","kind":"channel","type":"integer","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.groups.*.errorPolicy","kind":"channel","type":"string","required":false,"enumValues":["always","once","silent"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.groups.*.groupPolicy","kind":"channel","type":"string","required":false,"enumValues":["open","disabled","allowlist"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.groups.*.requireMention","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.groups.*.skills","kind":"channel","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":true}
@ -3207,6 +3225,8 @@
{"recordType":"path","path":"channels.telegram.groups.*.topics.*.allowFrom.*","kind":"channel","type":["number","string"],"required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.groups.*.topics.*.disableAudioPreflight","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.groups.*.topics.*.enabled","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.groups.*.topics.*.errorCooldownMs","kind":"channel","type":"integer","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.groups.*.topics.*.errorPolicy","kind":"channel","type":"string","required":false,"enumValues":["always","once","silent"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.groups.*.topics.*.groupPolicy","kind":"channel","type":"string","required":false,"enumValues":["open","disabled","allowlist"],"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.groups.*.topics.*.requireMention","kind":"channel","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"channels.telegram.groups.*.topics.*.skills","kind":"channel","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":true}
@ -3797,6 +3817,8 @@
{"recordType":"path","path":"gateway.tools.deny.*","kind":"core","type":"string","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"gateway.trustedProxies","kind":"core","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":["network"],"label":"Gateway Trusted Proxy CIDRs","help":"CIDR/IP allowlist of upstream proxies permitted to provide forwarded client identity headers. Keep this list narrow so untrusted hops cannot impersonate users.","hasChildren":true}
{"recordType":"path","path":"gateway.trustedProxies.*","kind":"core","type":"string","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"gateway.webchat","kind":"core","type":"object","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":true}
{"recordType":"path","path":"gateway.webchat.chatHistoryMaxChars","kind":"core","type":"integer","required":false,"deprecated":false,"sensitive":false,"tags":["network","performance"],"label":"WebChat History Max Chars","help":"Max characters per text field in chat.history responses before truncation (default: 12000).","hasChildren":false}
{"recordType":"path","path":"hooks","kind":"core","type":"object","required":false,"deprecated":false,"sensitive":false,"tags":["advanced"],"label":"Hooks","help":"Inbound webhook automation surface for mapping external events into wake or agent actions in OpenClaw. Keep this locked down with explicit token/session/agent controls before exposing it beyond trusted networks.","hasChildren":true}
{"recordType":"path","path":"hooks.allowedAgentIds","kind":"core","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":["access"],"label":"Hooks Allowed Agent IDs","help":"Allowlist of agent IDs that hook mappings are allowed to target when selecting execution agents. Use this to constrain automation events to dedicated service agents and reduce blast radius if a hook token is exposed.","hasChildren":true}
{"recordType":"path","path":"hooks.allowedAgentIds.*","kind":"core","type":"string","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
@ -4790,6 +4812,19 @@
{"recordType":"path","path":"plugins.entries.qqbot.subagent.allowedModels","kind":"plugin","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":["access"],"label":"Plugin Subagent Allowed Models","help":"Allowed override targets for trusted plugin subagent runs as canonical \"provider/model\" refs. Use \"*\" only when you intentionally allow any model.","hasChildren":true}
{"recordType":"path","path":"plugins.entries.qqbot.subagent.allowedModels.*","kind":"plugin","type":"string","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"plugins.entries.qqbot.subagent.allowModelOverride","kind":"plugin","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":["access"],"label":"Allow Plugin Subagent Model Override","help":"Explicitly allows this plugin to request provider/model overrides in background subagent runs. Keep false unless the plugin is trusted to steer model selection.","hasChildren":false}
{"recordType":"path","path":"plugins.entries.searxng","kind":"plugin","type":"object","required":false,"deprecated":false,"sensitive":false,"tags":["advanced"],"label":"@openclaw/searxng-plugin","help":"OpenClaw SearXNG plugin (plugin: searxng)","hasChildren":true}
{"recordType":"path","path":"plugins.entries.searxng.config","kind":"plugin","type":"object","required":false,"deprecated":false,"sensitive":false,"tags":["advanced"],"label":"@openclaw/searxng-plugin Config","help":"Plugin-defined config payload for searxng.","hasChildren":true}
{"recordType":"path","path":"plugins.entries.searxng.config.webSearch","kind":"plugin","type":"object","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":true}
{"recordType":"path","path":"plugins.entries.searxng.config.webSearch.baseUrl","kind":"plugin","type":["object","string"],"required":false,"deprecated":false,"sensitive":false,"tags":["advanced","url-secret"],"label":"SearXNG Base URL","help":"Base URL of your SearXNG instance, such as http://localhost:8080 or https://search.example.com/searxng.","hasChildren":false}
{"recordType":"path","path":"plugins.entries.searxng.config.webSearch.categories","kind":"plugin","type":"string","required":false,"deprecated":false,"sensitive":false,"tags":["advanced"],"label":"SearXNG Categories","help":"Optional comma-separated categories such as general, news, or science.","hasChildren":false}
{"recordType":"path","path":"plugins.entries.searxng.config.webSearch.language","kind":"plugin","type":"string","required":false,"deprecated":false,"sensitive":false,"tags":["advanced"],"label":"SearXNG Language","help":"Optional language code for results such as en, de, or fr.","hasChildren":false}
{"recordType":"path","path":"plugins.entries.searxng.enabled","kind":"plugin","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":["advanced"],"label":"Enable @openclaw/searxng-plugin","hasChildren":false}
{"recordType":"path","path":"plugins.entries.searxng.hooks","kind":"plugin","type":"object","required":false,"deprecated":false,"sensitive":false,"tags":["advanced"],"label":"Plugin Hook Policy","help":"Per-plugin typed hook policy controls for core-enforced safety gates. Use this to constrain high-impact hook categories without disabling the entire plugin.","hasChildren":true}
{"recordType":"path","path":"plugins.entries.searxng.hooks.allowPromptInjection","kind":"plugin","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":["access"],"label":"Allow Prompt Injection Hooks","help":"Controls whether this plugin may mutate prompts through typed hooks. Set false to block `before_prompt_build` and ignore prompt-mutating fields from legacy `before_agent_start`, while preserving legacy `modelOverride` and `providerOverride` behavior.","hasChildren":false}
{"recordType":"path","path":"plugins.entries.searxng.subagent","kind":"plugin","type":"object","required":false,"deprecated":false,"sensitive":false,"tags":["advanced"],"label":"Plugin Subagent Policy","help":"Per-plugin subagent runtime controls for model override trust and allowlists. Keep this unset unless a plugin must explicitly steer subagent model selection.","hasChildren":true}
{"recordType":"path","path":"plugins.entries.searxng.subagent.allowedModels","kind":"plugin","type":"array","required":false,"deprecated":false,"sensitive":false,"tags":["access"],"label":"Plugin Subagent Allowed Models","help":"Allowed override targets for trusted plugin subagent runs as canonical \"provider/model\" refs. Use \"*\" only when you intentionally allow any model.","hasChildren":true}
{"recordType":"path","path":"plugins.entries.searxng.subagent.allowedModels.*","kind":"plugin","type":"string","required":false,"deprecated":false,"sensitive":false,"tags":[],"hasChildren":false}
{"recordType":"path","path":"plugins.entries.searxng.subagent.allowModelOverride","kind":"plugin","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":["access"],"label":"Allow Plugin Subagent Model Override","help":"Explicitly allows this plugin to request provider/model overrides in background subagent runs. Keep false unless the plugin is trusted to steer model selection.","hasChildren":false}
{"recordType":"path","path":"plugins.entries.sglang","kind":"plugin","type":"object","required":false,"deprecated":false,"sensitive":false,"tags":["advanced"],"label":"@openclaw/sglang-provider","help":"OpenClaw SGLang provider plugin (plugin: sglang)","hasChildren":true}
{"recordType":"path","path":"plugins.entries.sglang.config","kind":"plugin","type":"object","required":false,"deprecated":false,"sensitive":false,"tags":["advanced"],"label":"@openclaw/sglang-provider Config","help":"Plugin-defined config payload for sglang.","hasChildren":false}
{"recordType":"path","path":"plugins.entries.sglang.enabled","kind":"plugin","type":"boolean","required":false,"deprecated":false,"sensitive":false,"tags":["advanced"],"label":"Enable @openclaw/sglang-provider","hasChildren":false}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/acpx",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw ACP runtime backend via acpx",
"type": "module",
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/amazon-bedrock-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Amazon Bedrock provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/anthropic-vertex-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Anthropic Vertex provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/anthropic-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Anthropic provider plugin",
"type": "module",

View File

@ -1,13 +1,13 @@
{
"name": "@openclaw/bluebubbles",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw BlueBubbles channel plugin",
"type": "module",
"devDependencies": {
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.4.1"
"openclaw": ">=2026.4.1-beta.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/brave-plugin",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Brave plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/browser-plugin",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw browser tool plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/byteplus-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw BytePlus provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/chutes-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Chutes.ai provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/cloudflare-ai-gateway-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Cloudflare AI Gateway provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/copilot-proxy",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Copilot Proxy provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/deepgram-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Deepgram media-understanding provider",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/deepseek-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw DeepSeek provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/diagnostics-otel",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw diagnostics OpenTelemetry exporter",
"type": "module",
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/diffs",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw diff viewer plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/discord",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw Discord channel plugin",
"type": "module",
"dependencies": {
@ -14,7 +14,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.4.1"
"openclaw": ">=2026.4.1-beta.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/duckduckgo-plugin",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw DuckDuckGo plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/elevenlabs-speech",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw ElevenLabs speech plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/exa-plugin",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Exa plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/fal-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw fal provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/firecrawl-plugin",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Firecrawl plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/github-copilot-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw GitHub Copilot provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/google-plugin",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Google plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/googlechat",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Google Chat channel plugin",
"type": "module",
@ -11,7 +11,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.4.1"
"openclaw": ">=2026.4.1-beta.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/groq-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Groq media-understanding provider",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/huggingface-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Hugging Face provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/image-generation-core",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw image generation runtime package",
"type": "module"

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/imessage",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw iMessage channel plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/irc",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw IRC channel plugin",
"type": "module",
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/kilocode-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Kilo Gateway provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/kimi-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Kimi provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/line",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw LINE channel plugin",
"type": "module",
@ -8,7 +8,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.4.1"
"openclaw": ">=2026.4.1-beta.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/litellm-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw LiteLLM provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/llm-task",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw JSON-only LLM task plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/lobster",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "Lobster workflow tool plugin (typed pipelines + resumable approvals)",
"type": "module",
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/matrix",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw Matrix channel plugin",
"type": "module",
"dependencies": {
@ -15,7 +15,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.4.1"
"openclaw": ">=2026.4.1-beta.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/mattermost",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw Mattermost channel plugin",
"type": "module",
"dependencies": {
@ -11,7 +11,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.4.1"
"openclaw": ">=2026.4.1-beta.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/media-understanding-core",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw media understanding runtime package",
"type": "module"

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/memory-core",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw core memory search plugin",
"type": "module",
@ -8,7 +8,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.4.1"
"openclaw": ">=2026.4.1-beta.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/memory-lancedb",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw LanceDB-backed long-term memory plugin with auto-recall/capture",
"type": "module",
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/microsoft-foundry",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Microsoft Foundry provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/microsoft-speech",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Microsoft speech plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/minimax-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw MiniMax provider and OAuth plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/mistral-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Mistral provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/modelstudio-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Model Studio provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/moonshot-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Moonshot provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/msteams",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw Microsoft Teams channel plugin",
"type": "module",
"dependencies": {
@ -12,7 +12,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.4.1"
"openclaw": ">=2026.4.1-beta.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@ -1,13 +1,13 @@
{
"name": "@openclaw/nextcloud-talk",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw Nextcloud Talk channel plugin",
"type": "module",
"devDependencies": {
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.4.1"
"openclaw": ">=2026.4.1-beta.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/nostr",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw Nostr channel plugin for NIP-04 encrypted DMs",
"type": "module",
"dependencies": {
@ -10,7 +10,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.4.1"
"openclaw": ">=2026.4.1-beta.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/nvidia-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw NVIDIA provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/ollama-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Ollama provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/open-prose",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenProse VM skill pack plugin (slash command + telemetry).",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/openai-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw OpenAI provider plugins",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/opencode-go-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw OpenCode Go provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/opencode-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw OpenCode Zen provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/openrouter-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw OpenRouter provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/openshell-sandbox",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw OpenShell sandbox backend",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/perplexity-plugin",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Perplexity plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/qianfan-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Qianfan provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/qqbot",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": false,
"description": "OpenClaw QQ Bot channel plugin",
"type": "module",
@ -14,7 +14,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.4.1"
"openclaw": ">=2026.4.1-beta.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/searxng-plugin",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw SearXNG plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/sglang-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw SGLang provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/signal",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Signal channel plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/slack",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Slack channel plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/speech-core",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw speech runtime package",
"type": "module"

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/synology-chat",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "Synology Chat channel plugin for OpenClaw",
"type": "module",
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/synthetic-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Synthetic provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/tavily-plugin",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Tavily plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/telegram",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Telegram channel plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/tlon",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw Tlon/Urbit channel plugin",
"type": "module",
"dependencies": {
@ -13,7 +13,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.4.1"
"openclaw": ">=2026.4.1-beta.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/together-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Together provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/twitch",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw Twitch channel plugin",
"type": "module",
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/venice-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Venice provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/vercel-ai-gateway-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Vercel AI Gateway provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/vllm-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw vLLM provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/voice-call",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw voice-call plugin",
"type": "module",
"dependencies": {
@ -12,7 +12,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.4.1"
"openclaw": ">=2026.4.1-beta.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/volcengine-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Volcengine provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/whatsapp",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw WhatsApp channel plugin",
"type": "module",
"dependencies": {
@ -11,7 +11,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.4.1"
"openclaw": ">=2026.4.1-beta.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/xai-plugin",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw xAI plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/xiaomi-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Xiaomi provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/zai-provider",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"private": true,
"description": "OpenClaw Z.AI provider plugin",
"type": "module",

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/zalo",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw Zalo channel plugin",
"type": "module",
"dependencies": {
@ -10,7 +10,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.4.1"
"openclaw": ">=2026.4.1-beta.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "@openclaw/zalouser",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "OpenClaw Zalo Personal Account plugin via native zca-js integration",
"type": "module",
"dependencies": {
@ -11,7 +11,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
"openclaw": ">=2026.4.1"
"openclaw": ">=2026.4.1-beta.1"
},
"peerDependenciesMeta": {
"openclaw": {

View File

@ -1,6 +1,6 @@
{
"name": "openclaw",
"version": "2026.4.1",
"version": "2026.4.1-beta.1",
"description": "Multi-channel AI gateway with extensible messaging integrations",
"keywords": [],
"homepage": "https://github.com/openclaw/openclaw#readme",

View File

@ -12099,10 +12099,28 @@ export const GENERATED_BUNDLED_CHANNEL_CONFIG_METADATA = [
agentId: {
type: "string",
},
errorPolicy: {
type: "string",
enum: ["always", "once", "silent"],
},
errorCooldownMs: {
type: "integer",
minimum: 0,
maximum: 9007199254740991,
},
},
additionalProperties: false,
},
},
errorPolicy: {
type: "string",
enum: ["always", "once", "silent"],
},
errorCooldownMs: {
type: "integer",
minimum: 0,
maximum: 9007199254740991,
},
},
additionalProperties: false,
},
@ -12312,10 +12330,28 @@ export const GENERATED_BUNDLED_CHANNEL_CONFIG_METADATA = [
agentId: {
type: "string",
},
errorPolicy: {
type: "string",
enum: ["always", "once", "silent"],
},
errorCooldownMs: {
type: "integer",
minimum: 0,
maximum: 9007199254740991,
},
},
additionalProperties: false,
},
},
errorPolicy: {
type: "string",
enum: ["always", "once", "silent"],
},
errorCooldownMs: {
type: "integer",
minimum: 0,
maximum: 9007199254740991,
},
requireTopic: {
type: "boolean",
},
@ -12665,6 +12701,15 @@ export const GENERATED_BUNDLED_CHANNEL_CONFIG_METADATA = [
ackReaction: {
type: "string",
},
errorPolicy: {
type: "string",
enum: ["always", "once", "silent"],
},
errorCooldownMs: {
type: "integer",
minimum: 0,
maximum: 9007199254740991,
},
apiRoot: {
type: "string",
format: "uri",
@ -13050,10 +13095,28 @@ export const GENERATED_BUNDLED_CHANNEL_CONFIG_METADATA = [
agentId: {
type: "string",
},
errorPolicy: {
type: "string",
enum: ["always", "once", "silent"],
},
errorCooldownMs: {
type: "integer",
minimum: 0,
maximum: 9007199254740991,
},
},
additionalProperties: false,
},
},
errorPolicy: {
type: "string",
enum: ["always", "once", "silent"],
},
errorCooldownMs: {
type: "integer",
minimum: 0,
maximum: 9007199254740991,
},
},
additionalProperties: false,
},
@ -13263,10 +13326,28 @@ export const GENERATED_BUNDLED_CHANNEL_CONFIG_METADATA = [
agentId: {
type: "string",
},
errorPolicy: {
type: "string",
enum: ["always", "once", "silent"],
},
errorCooldownMs: {
type: "integer",
minimum: 0,
maximum: 9007199254740991,
},
},
additionalProperties: false,
},
},
errorPolicy: {
type: "string",
enum: ["always", "once", "silent"],
},
errorCooldownMs: {
type: "integer",
minimum: 0,
maximum: 9007199254740991,
},
requireTopic: {
type: "boolean",
},
@ -13616,6 +13697,15 @@ export const GENERATED_BUNDLED_CHANNEL_CONFIG_METADATA = [
ackReaction: {
type: "string",
},
errorPolicy: {
type: "string",
enum: ["always", "once", "silent"],
},
errorCooldownMs: {
type: "integer",
minimum: 0,
maximum: 9007199254740991,
},
apiRoot: {
type: "string",
format: "uri",

View File

@ -15304,6 +15304,6 @@ export const GENERATED_BASE_CONFIG_SCHEMA = {
tags: ["advanced", "url-secret"],
},
},
version: "2026.4.1",
version: "2026.4.1-beta.1",
generatedAt: "2026-03-22T21:17:33.302Z",
} as const satisfies BaseConfigSchemaResponse;