Skip to content

Commit 2115521

Browse files
Auto-merge upstream openclaw/openclaw
2 parents a8cbba0 + 9eb3718 commit 2115521

70 files changed

Lines changed: 523 additions & 216 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CONTRIBUTING.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ Welcome to the lobster tank! 🦞
8585
4. **Test/CI-only PRs for known `main` failures** → Don't open a PR. The Maintainer team is already tracking those failures, and PRs that only tweak tests or CI to chase them will be closed unless they are required to validate a new fix.
8686
5. **Questions** → Discord [#help](https://discord.com/channels/1456350064065904867/1459642797895319552) / [#users-helping-users](https://discord.com/channels/1456350064065904867/1459007081603403828)
8787

88+
## PR Limits
89+
90+
We cap at **10 open PRs per author**. If you exceed this, the `r: too-many-prs` label is added and your PR is auto-closed. This is a hard limit.
91+
92+
For coordinated change sets that genuinely need more than 10 PRs, join the **#clawtributors** channel in Discord and talk to maintainers first.
93+
8894
## Before You PR
8995

9096
- Test locally with your OpenClaw instance

docs/.i18n/glossary.zh-CN.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,10 @@
171171
"source": "Network model",
172172
"target": "网络模型"
173173
},
174+
{
175+
"source": "Bridge protocol (legacy nodes, historical)",
176+
"target": "Bridge protocol(旧版节点,历史参考)"
177+
},
174178
{
175179
"source": "Doctor",
176180
"target": "Doctor"

docs/automation/tasks.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Not every agent run creates a task. Heartbeat turns and normal interactive chat
2828
- Cron tasks stay live while the cron runtime still owns the job; chat-backed CLI tasks stay live only while their owning run context is still active.
2929
- Completion is push-driven: detached work can notify directly or wake the
3030
requester session/heartbeat when it finishes, so status polling loops are
31-
usually unnecessary.
31+
usually the wrong shape.
3232
- Isolated cron runs and subagent completions best-effort clean up tracked browser tabs/processes for their child session before final cleanup bookkeeping.
3333
- Isolated cron delivery suppresses stale interim parent replies while
3434
descendant subagent work is still draining, and it prefers final descendant

docs/channels/discord.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -959,6 +959,9 @@ Default slash command settings:
959959
When `target` is `channel` or `both`, the approval prompt is visible in the channel. Only resolved approvers can use the buttons; other users receive an ephemeral denial. Approval prompts include the command text, so only enable channel delivery in trusted channels. If the channel ID cannot be derived from the session key, OpenClaw falls back to DM delivery.
960960

961961
Discord also renders the shared approval buttons used by other chat channels. The native Discord adapter mainly adds approver DM routing and channel fanout.
962+
When those buttons are present, they are the primary approval UX; OpenClaw
963+
should only include a manual `/approve` command when the tool result says
964+
chat approvals are unavailable or manual approval is the only path.
962965

963966
Gateway auth for this handler uses the same shared credential resolution contract as other Gateway clients:
964967

docs/channels/feishu.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -764,7 +764,8 @@ When the agent handles a Drive comment event, it receives:
764764
- the comment thread context for in-thread replies
765765

766766
After making document edits, the agent is guided to use `feishu_drive.reply_comment` to notify the
767-
commenter and then output `NO_REPLY` to avoid duplicate sends.
767+
commenter and then output the exact silent token `NO_REPLY` / `no_reply` to
768+
avoid duplicate sends.
768769

769770
## Runtime action surface
770771

docs/channels/group-messages.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Note: `agents.list[].groupChat.mentionPatterns` is now used by Telegram/Discord/
1313

1414
## Current implementation (2025-12-03)
1515

16-
- Activation modes: `mention` (default) or `always`. `mention` requires a ping (real WhatsApp @-mentions via `mentionedJids`, safe regex patterns, or the bot’s E.164 anywhere in the text). `always` wakes the agent on every message but it should reply only when it can add meaningful value; otherwise it returns the silent token `NO_REPLY`. Defaults can be set in config (`channels.whatsapp.groups`) and overridden per group via `/activation`. When `channels.whatsapp.groups` is set, it also acts as a group allowlist (include `"*"` to allow all).
16+
- Activation modes: `mention` (default) or `always`. `mention` requires a ping (real WhatsApp @-mentions via `mentionedJids`, safe regex patterns, or the bot’s E.164 anywhere in the text). `always` wakes the agent on every message but it should reply only when it can add meaningful value; otherwise it returns the exact silent token `NO_REPLY` / `no_reply`. Defaults can be set in config (`channels.whatsapp.groups`) and overridden per group via `/activation`. When `channels.whatsapp.groups` is set, it also acts as a group allowlist (include `"*"` to allow all).
1717
- Group policy: `channels.whatsapp.groupPolicy` controls whether group messages are accepted (`open|disabled|allowlist`). `allowlist` uses `channels.whatsapp.groupAllowFrom` (fallback: explicit `channels.whatsapp.allowFrom`). Default is `allowlist` (blocked until you add senders).
1818
- Per-group sessions: session keys look like `agent:<agentId>:whatsapp:group:<jid>` so commands such as `/verbose on` or `/think high` (sent as standalone messages) are scoped to that group; personal DM state is untouched. Heartbeats are skipped for group threads.
1919
- Context injection: **pending-only** group messages (default 50) that _did not_ trigger a run are prefixed under `[Chat messages since your last reply - for context]`, with the triggering line under `[Current message - respond to this]`. Messages already in the session are not re-injected.

docs/channels/slack.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,9 @@ Slack can act as a native approval client with interactive buttons and interacti
512512
- Approver authorization is still enforced: only users identified as approvers can approve or deny requests through Slack.
513513

514514
This uses the same shared approval button surface as other channels. When `interactivity` is enabled in your Slack app settings, approval prompts render as Block Kit buttons directly in the conversation.
515+
When those buttons are present, they are the primary approval UX; OpenClaw
516+
should only include a manual `/approve` command when the tool result says chat
517+
approvals are unavailable or manual approval is the only path.
515518

516519
Config path:
517520

docs/channels/telegram.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -823,6 +823,9 @@ openclaw message poll --channel telegram --target -1001234567890:topic:42 \
823823
Approvers must be numeric Telegram user IDs. Telegram auto-enables native exec approvals when `enabled` is unset or `"auto"` and at least one approver can be resolved, either from `execApprovals.approvers` or from the account's numeric owner config (`allowFrom` and direct-message `defaultTo`). Set `enabled: false` to disable Telegram as a native approval client explicitly. Approval requests otherwise fall back to other configured approval routes or the exec approval fallback policy.
824824

825825
Telegram also renders the shared approval buttons used by other chat channels. The native Telegram adapter mainly adds approver DM routing, channel/topic fanout, and typing hints before delivery.
826+
When those buttons are present, they are the primary approval UX; OpenClaw
827+
should only include a manual `/approve` command when the tool result says
828+
chat approvals are unavailable or manual approval is the only path.
826829

827830
Delivery rules:
828831

docs/cli/config.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,9 @@ Print the generated JSON schema for `openclaw.json` to stdout as JSON.
5353
What it includes:
5454

5555
- The current root config schema, plus a root `$schema` string field for editor tooling
56-
- Field `title` and `description` metadata derived from the same labels/help used by the Control UI
57-
- Nested object, wildcard (`*`), and array-item (`[]`) nodes inherit the same `title` / `description` metadata when labels/help exist
56+
- Field `title` and `description` docs metadata used by the Control UI
57+
- Nested object, wildcard (`*`), and array-item (`[]`) nodes inherit the same `title` / `description` metadata when matching field documentation exists
58+
- `anyOf` / `oneOf` / `allOf` branches inherit the same docs metadata too when matching field documentation exists
5859
- Best-effort live plugin + channel schema metadata when runtime manifests can be loaded
5960
- A clean fallback schema even when the current config is invalid
6061

docs/cli/index.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ Most plugin changes require a gateway restart. See [/plugin](/tools/plugin).
421421

422422
Vector search over `MEMORY.md` + `memory/*.md`:
423423

424-
- `openclaw memory status` — show index stats; use `--deep` for provider probes or `--fix` to repair stale recall/promotion artifacts.
424+
- `openclaw memory status` — show index stats; use `--deep` for vector + embedding readiness checks or `--fix` to repair stale recall/promotion artifacts.
425425
- `openclaw memory index` — reindex memory files.
426426
- `openclaw memory search "<query>"` (or `--query "<query>"`) — semantic search over memory.
427427
- `openclaw memory promote` — rank short-term recalls and optionally append top entries into `MEMORY.md`.
@@ -579,7 +579,7 @@ Subcommands:
579579
- `config set --strict-json`: require JSON5 parsing for path/value input. `--json` remains a legacy alias for strict parsing outside dry-run output mode.
580580
- `config unset <path>`: remove a value.
581581
- `config file`: print the active config file path.
582-
- `config schema`: print the generated JSON schema for `openclaw.json`, including field `title` / `description` metadata and best-effort live plugin/channel schema metadata.
582+
- `config schema`: print the generated JSON schema for `openclaw.json`, including propagated field `title` / `description` docs metadata across nested object, wildcard, array-item, and composition branches, plus best-effort live plugin/channel schema metadata.
583583
- `config validate`: validate the current config against the schema without starting the gateway.
584584
- `config validate --json`: emit machine-readable JSON output.
585585

@@ -1473,6 +1473,7 @@ Tip: when calling `config.set`/`config.apply`/`config.patch` directly, pass `bas
14731473
`config.get` if a config already exists.
14741474
Tip: for partial edits, inspect with `config.schema.lookup` first and prefer `config.patch`.
14751475
Tip: these config write RPCs preflight active SecretRef resolution for refs in the submitted config payload and reject writes when an effectively active submitted ref is unresolved.
1476+
Tip: the owner-only `gateway` runtime tool still refuses to rewrite `tools.exec.ask` or `tools.exec.security`; legacy `tools.bash.*` aliases normalize to the same protected exec paths.
14761477

14771478
## Models
14781479

@@ -1606,6 +1607,8 @@ Options:
16061607
Notes:
16071608

16081609
- `setup-token` and `paste-token` are generic token commands for providers that expose token auth methods.
1610+
- `setup-token` requires an interactive TTY and runs the provider's token-auth method.
1611+
- `paste-token` prompts for the token value and defaults to auth profile id `<provider>:manual` when `--profile-id` is omitted.
16091612
- Anthropic legacy token profiles still run if already configured, but Anthropic no longer supports `setup-token` or `paste-token` as a new OpenClaw auth path.
16101613

16111614
### `models auth order get|set|clear`

0 commit comments

Comments
 (0)