Skip to content

Commit 89fbe0d

Browse files
committed
Merge remote-tracking branch 'origin/main' into codex/retry-transient-cron-failover
# Conflicts: # src/cron/schedule-identity.ts # src/tui/gateway-chat.test.ts
2 parents cd0bc51 + 6f9d5e1 commit 89fbe0d

214 files changed

Lines changed: 10653 additions & 1444 deletions

File tree

Some content is hidden

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

.github/codeql/openclaw-boundary/queries/raw-socket-callsite-classification.ql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ predicate allowedRawSocketClientCall(Expr call) {
7676
or
7777
allowedOwnerScope(call, "src/proxy-capture/proxy-server.ts", "startDebugProxyServer")
7878
or
79+
allowedOwnerScope(call, "extensions/codex-supervisor/src/json-rpc-client.ts", "connectCodexSupervisorUnixSocket")
80+
or
7981
allowedOwnerScope(call, "extensions/irc/src/client.ts", "connectIrcClient")
8082
or
8183
allowedOwnerScope(call, "extensions/qa-lab/src/lab-server-capture.ts", "probeTcpReachability")

.github/labeler.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,12 @@
399399
- changed-files:
400400
- any-glob-to-any-file:
401401
- "extensions/codex/**"
402+
"extensions: codex-supervisor":
403+
- changed-files:
404+
- any-glob-to-any-file:
405+
- "extensions/codex-supervisor/**"
406+
- "docs/plugins/reference/codex-supervisor.md"
407+
- "docs/specs/claw-supervisor.md"
402408
"extensions: kimi-coding":
403409
- changed-files:
404410
- any-glob-to-any-file:

.github/workflows/dependency-guard.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: Dependency Guard
22

33
on:
44
pull_request_target: # zizmor: ignore[dangerous-triggers] checks trusted base script only; never checks out PR head
5-
types: [opened, reopened, synchronize, ready_for_review]
5+
types: [opened, reopened, synchronize, ready_for_review, labeled]
66

77
permissions:
88
contents: read
@@ -15,7 +15,7 @@ concurrency:
1515

1616
jobs:
1717
dependency-guard:
18-
if: ${{ !github.event.pull_request.draft }}
18+
if: ${{ !github.event.pull_request.draft && (github.event.action != 'labeled' || github.event.label.name == 'dependency-guard-backfill') }}
1919
runs-on: ubuntu-24.04
2020
timeout-minutes: 5
2121
steps:

config/knip.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const bundledPluginEntries = [
2727
"setup-entry.ts!",
2828
"{api,contract-api,helper-api,runtime-api,light-runtime-api,update-offset-runtime-api,channel-plugin-api,provider-plugin-api,setup-api}.ts!",
2929
"subagent-hooks-api.ts!",
30-
"src/{api,runtime-api,light-runtime-api,update-offset-runtime-api,channel-plugin-api,provider-plugin-api,doctor-contract,setup-surface}.ts!",
30+
"src/{api,runtime-api,light-runtime-api,update-offset-runtime-api,channel-plugin-api,provider-plugin-api,doctor-contract,setup-surface,mcp-serve}.ts!",
3131
"src/subagent-hooks-api.ts!",
3232
] as const;
3333

docs/automation/cron-jobs.md

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ Cron is the Gateway's built-in scheduler. It persists jobs, wakes the agent at t
1515
<Steps>
1616
<Step title="Add a one-shot reminder">
1717
```bash
18-
openclaw cron add \
18+
openclaw cron create "2026-02-01T16:00:00Z" \
1919
--name "Reminder" \
20-
--at "2026-02-01T16:00:00Z" \
2120
--session main \
2221
--system-event "Reminder: check the cron docs draft" \
2322
--wake now \
@@ -215,12 +214,11 @@ Failure notifications follow a separate destination path:
215214
</Tab>
216215
<Tab title="Recurring isolated job">
217216
```bash
218-
openclaw cron add \
217+
openclaw cron create "0 7 * * *" \
218+
"Summarize overnight updates." \
219219
--name "Morning brief" \
220-
--cron "0 7 * * *" \
221220
--tz "America/Los_Angeles" \
222221
--session isolated \
223-
--message "Summarize overnight updates." \
224222
--announce \
225223
--channel slack \
226224
--to "channel:C1234567890"
@@ -239,6 +237,14 @@ Failure notifications follow a separate destination path:
239237
--announce
240238
```
241239
</Tab>
240+
<Tab title="Webhook output">
241+
```bash
242+
openclaw cron create "0 18 * * 1-5" \
243+
"Summarize today's deploys as JSON." \
244+
--name "Deploy digest" \
245+
--webhook "https://example.invalid/openclaw/cron"
246+
```
247+
</Tab>
242248
</Tabs>
243249

244250
## Webhooks
@@ -411,12 +417,14 @@ openclaw cron runs --id <jobId> --run-id <runId>
411417
openclaw cron remove <jobId>
412418

413419
# Agent selection (multi-agent setups)
414-
openclaw cron add --name "Ops sweep" --cron "0 6 * * *" --session isolated --message "Check ops queue" --agent ops
420+
openclaw cron create "0 6 * * *" "Check ops queue" --name "Ops sweep" --session isolated --agent ops
415421
openclaw cron edit <jobId> --clear-agent
416422
```
417423

418424
`openclaw cron run <jobId>` returns after enqueueing the manual run. Use `--wait` for shutdown hooks, maintenance scripts, or other automation that must block until the queued run finishes. Wait mode polls the exact returned `runId`; it exits `0` for status `ok` and non-zero for `error`, `skipped`, or a wait timeout.
419425

426+
`openclaw cron create` is an alias for `openclaw cron add`, and new jobs can use a positional schedule (`"0 9 * * 1"`, `"every 1h"`, `"20m"`, or an ISO timestamp) followed by a positional agent prompt. Use `--webhook <url>` on `cron add|create` or `cron edit` to POST the finished run payload to an HTTP endpoint. Webhook delivery cannot be combined with chat delivery flags such as `--announce`, `--channel`, `--to`, `--thread-id`, or `--account`.
427+
420428
<Note>
421429
Model override note:
422430

docs/channels/discord.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -696,6 +696,7 @@ Default slash command settings:
696696
maxLines: 8,
697697
maxLineChars: 120,
698698
toolProgress: true,
699+
commentary: false,
699700
},
700701
},
701702
},
@@ -708,6 +709,7 @@ Default slash command settings:
708709
- Media, error, and explicit-reply finals cancel pending preview edits.
709710
- `streaming.preview.toolProgress` (default `true`) controls whether tool/progress updates reuse the preview message.
710711
- Tool/progress rows render as compact emoji + title + detail when available, for example `🛠️ Bash: run tests` or `🔎 Web Search: for "query"`.
712+
- `streaming.progress.commentary` (default `false`) opts into assistant commentary/preamble text in the temporary progress draft. Commentary is cleaned before display, stays transient, and does not change final answer delivery.
711713
- `streaming.progress.maxLineChars` controls the per-line progress preview budget. Prose is shortened on word boundaries; command and path details keep useful suffixes.
712714
- `streaming.preview.commandText` / `streaming.progress.commandText` controls command/exec detail in compact progress lines: `raw` (default) or `status` (tool label only).
713715

docs/cli/cron.md

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,26 @@ Manage cron jobs for the Gateway scheduler.
1414
Run `openclaw cron --help` for the full command surface. See [Cron jobs](/automation/cron-jobs) for the conceptual guide.
1515
</Tip>
1616

17+
## Create jobs quickly
18+
19+
`openclaw cron create` is an alias for `openclaw cron add`. For new jobs, put the schedule first and the prompt second:
20+
21+
```bash
22+
openclaw cron create "0 7 * * *" \
23+
"Summarize overnight updates." \
24+
--name "Morning brief" \
25+
--agent ops
26+
```
27+
28+
Use `--webhook <url>` when the job should POST the finished payload instead of delivering to a chat target:
29+
30+
```bash
31+
openclaw cron create "0 18 * * 1-5" \
32+
"Summarize today's deploys as JSON." \
33+
--name "Deploy digest" \
34+
--webhook "https://example.invalid/openclaw/cron"
35+
```
36+
1737
## Sessions
1838

1939
`--session` accepts `main`, `isolated`, `current`, or `session:<id>`.
@@ -50,6 +70,8 @@ Isolated cron chat delivery is shared between the agent and the runner:
5070
- `webhook` posts the finished payload to a URL.
5171
- `none` disables runner fallback delivery.
5272

73+
Use `cron add|create --webhook <url>` or `cron edit <job-id> --webhook <url>` to set webhook delivery. Do not combine `--webhook` with chat delivery flags such as `--announce`, `--no-deliver`, `--channel`, `--to`, `--thread-id`, or `--account`.
74+
5375
`--announce` is runner fallback delivery for the final reply. `--no-deliver` disables that fallback but does not remove the agent's `message` tool when a chat route is available.
5476

5577
Reminders created from an active chat preserve the live chat delivery target for fallback announce delivery. Internal session keys may be lowercase; do not use them as a source of truth for case-sensitive provider IDs such as Matrix room IDs.
@@ -219,11 +241,10 @@ openclaw cron edit <job-id> --announce --channel telegram --to "-1001234567890"
219241
Create an isolated job with lightweight bootstrap context:
220242

221243
```bash
222-
openclaw cron add \
244+
openclaw cron create "0 7 * * *" \
245+
"Summarize overnight updates." \
223246
--name "Lightweight morning brief" \
224-
--cron "0 7 * * *" \
225247
--session isolated \
226-
--message "Summarize overnight updates." \
227248
--light-context \
228249
--no-deliver
229250
```
@@ -270,6 +291,7 @@ Delivery tweaks:
270291

271292
```bash
272293
openclaw cron edit <job-id> --announce --channel slack --to "channel:C1234567890"
294+
openclaw cron edit <job-id> --webhook "https://example.invalid/openclaw/cron"
273295
openclaw cron edit <job-id> --best-effort-deliver
274296
openclaw cron edit <job-id> --no-best-effort-deliver
275297
openclaw cron edit <job-id> --no-deliver

docs/concepts/models.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ When live probes run in a TTY, you can select fallbacks interactively. In non-in
340340

341341
## Models registry (`models.json`)
342342

343-
Custom providers in `models.providers` are written into `models.json` under the agent directory (default `~/.openclaw/agents/<agentId>/agent/models.json`). This file is merged by default unless `models.mode` is set to `replace`.
343+
Custom providers in `models.providers` are written into `models.json` under the agent directory (default `~/.openclaw/agents/<agentId>/agent/models.json`). Provider-plugin catalogs are stored as generated plugin-owned catalog shards under the agent's plugin state and loaded automatically. This file is merged by default unless `models.mode` is set to `replace`.
344344

345345
<AccordionGroup>
346346
<Accordion title="Merge mode precedence">

docs/gateway/config-tools.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,8 @@ Configuring a custom/local provider `baseUrl` is also the narrow network trust d
488488
- Empty or missing agent `apiKey`/`baseUrl` fall back to `models.providers` in config.
489489
- Matching model `contextWindow`/`maxTokens` use the higher value between explicit config and implicit catalog values.
490490
- Matching model `contextTokens` preserves an explicit runtime cap when present; use it to limit effective context without changing native model metadata.
491-
- Use `models.mode: "replace"` when you want config to fully rewrite `models.json`.
491+
- Provider-plugin catalogs are stored as generated plugin-owned catalog shards under the agent's plugin state.
492+
- Use `models.mode: "replace"` when you want config to fully rewrite `models.json` and active plugin catalog shards.
492493
- Marker persistence is source-authoritative: markers are written from the active source config snapshot (pre-resolution), not from resolved runtime secret values.
493494

494495
</Accordion>

docs/plugins/plugin-inventory.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ commands.
6464
| [chutes](/plugins/reference/chutes) | Adds Chutes model provider support to OpenClaw. | `@openclaw/chutes-provider`<br />included in OpenClaw | providers: chutes |
6565
| [clickclack](/plugins/reference/clickclack) | Adds the Clickclack channel surface for sending and receiving OpenClaw messages. | `@openclaw/clickclack`<br />included in OpenClaw | channels: clickclack |
6666
| [cloudflare-ai-gateway](/plugins/reference/cloudflare-ai-gateway) | Adds Cloudflare AI Gateway model provider support to OpenClaw. | `@openclaw/cloudflare-ai-gateway-provider`<br />included in OpenClaw | providers: cloudflare-ai-gateway |
67+
| [codex-supervisor](/plugins/reference/codex-supervisor) | Supervise Codex app-server sessions from OpenClaw. | `@openclaw/codex-supervisor`<br />included in OpenClaw | contracts: tools |
6768
| [comfy](/plugins/reference/comfy) | Adds ComfyUI model provider support to OpenClaw. | `@openclaw/comfy-provider`<br />included in OpenClaw | providers: comfy; contracts: imageGenerationProviders, musicGenerationProviders, videoGenerationProviders |
6869
| [copilot-proxy](/plugins/reference/copilot-proxy) | Adds Copilot Proxy model provider support to OpenClaw. | `@openclaw/copilot-proxy`<br />included in OpenClaw | providers: copilot-proxy |
6970
| [deepgram](/plugins/reference/deepgram) | Adds media understanding provider support. Adds realtime transcription provider support. | `@openclaw/deepgram-provider`<br />included in OpenClaw | contracts: mediaUnderstandingProviders, realtimeTranscriptionProviders |

0 commit comments

Comments
 (0)