From 938af16289490d32fae350b2664e571f589a36cb Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 23 Apr 2026 07:32:58 +0100 Subject: [PATCH] docs: deep audit documentation against source --- .../.generated/plugin-sdk-api-baseline.sha256 | 4 ++-- docs/channels/channel-routing.md | 2 +- docs/channels/mattermost.md | 2 +- docs/cli/update.md | 2 +- docs/help/testing.md | 23 +++++++++++-------- docs/install/northflank.mdx | 2 ++ docs/install/railway.mdx | 2 ++ docs/install/render.mdx | 2 ++ docs/plugins/architecture.md | 2 +- docs/providers/qwen.md | 4 ++-- docs/reference/transcript-hygiene.md | 4 ++-- docs/start/hubs.md | 2 +- docs/tools/skills-config.md | 2 +- 13 files changed, 31 insertions(+), 22 deletions(-) diff --git a/docs/.generated/plugin-sdk-api-baseline.sha256 b/docs/.generated/plugin-sdk-api-baseline.sha256 index a7e7dac5f6f..1afb535b069 100644 --- a/docs/.generated/plugin-sdk-api-baseline.sha256 +++ b/docs/.generated/plugin-sdk-api-baseline.sha256 @@ -1,2 +1,2 @@ -69428c5bb07b7477bfa804b0dc3c60aee88485e8e89c1192b4f64e4be030077c plugin-sdk-api-baseline.json -7775f57fe6f855e0c8f3af1e20563bb4ba36ca8d97732e2fbaa2edcdb35c8995 plugin-sdk-api-baseline.jsonl +2787bd6f7127d09c23323c193084d9f6ceaae61d13b74f694ae12674e6152ad4 plugin-sdk-api-baseline.json +5352814e95ee2bd9668ee7a2276432d2c09a4651c648ea1b52a34a69490b27cd plugin-sdk-api-baseline.jsonl diff --git a/docs/channels/channel-routing.md b/docs/channels/channel-routing.md index 1b71e87d07b..77d8ac64f1d 100644 --- a/docs/channels/channel-routing.md +++ b/docs/channels/channel-routing.md @@ -13,7 +13,7 @@ host configuration. ## Key terms -- **Channel**: `telegram`, `whatsapp`, `discord`, `irc`, `googlechat`, `slack`, `signal`, `imessage`, `line`, plus extension channels. `webchat` is the internal WebChat UI channel and is not a configurable outbound channel. +- **Channel**: `telegram`, `whatsapp`, `discord`, `irc`, `googlechat`, `slack`, `signal`, `imessage`, `line`, plus plugin channels. `webchat` is the internal WebChat UI channel and is not a configurable outbound channel. - **AccountId**: per‑channel account instance (when supported). - Optional channel default account: `channels..defaultAccount` chooses which account is used when an outbound path does not specify `accountId`. diff --git a/docs/channels/mattermost.md b/docs/channels/mattermost.md index 918de5c2747..413c76cb80f 100644 --- a/docs/channels/mattermost.md +++ b/docs/channels/mattermost.md @@ -351,7 +351,7 @@ Config: External scripts and webhooks can post buttons directly via the Mattermost REST API instead of going through the agent's `message` tool. Use `buildButtonAttachments()` from -the extension when possible; if posting raw JSON, follow these rules: +the plugin when possible; if posting raw JSON, follow these rules: **Payload structure:** diff --git a/docs/cli/update.md b/docs/cli/update.md index 9da75e59490..8ac259c4e2c 100644 --- a/docs/cli/update.md +++ b/docs/cli/update.md @@ -107,7 +107,7 @@ High-level: 6. Installs deps with the repo package manager. For pnpm checkouts, the updater bootstraps `pnpm` on demand (via `corepack` first, then a temporary `npm install pnpm@10` fallback) instead of running `npm run build` inside a pnpm workspace. 7. Builds + builds the Control UI. 8. Runs `openclaw doctor` as the final “safe update” check. -9. Syncs plugins to the active channel (dev uses bundled extensions; stable/beta uses npm) and updates npm-installed plugins. +9. Syncs plugins to the active channel (dev uses bundled plugins; stable/beta uses npm) and updates npm-installed plugins. If an exact pinned npm plugin update resolves to an artifact whose integrity differs from the stored install record, `openclaw update` aborts that plugin diff --git a/docs/help/testing.md b/docs/help/testing.md index 3ca36b3e008..c5ca5183dfc 100644 --- a/docs/help/testing.md +++ b/docs/help/testing.md @@ -364,7 +364,7 @@ Think of the suites as “increasing realism” (and increasing flakiness/cost): - Command: `pnpm test:e2e` - Config: `vitest.e2e.config.ts` -- Files: `src/**/*.e2e.test.ts`, `test/**/*.e2e.test.ts` +- Files: `src/**/*.e2e.test.ts`, `test/**/*.e2e.test.ts`, and bundled-plugin E2E tests under `extensions/` - Runtime defaults: - Uses Vitest `threads` with `isolate: false`, matching the rest of the repo. - Uses adaptive workers (CI: up to 2, local: 1 by default). @@ -383,7 +383,7 @@ Think of the suites as “increasing realism” (and increasing flakiness/cost): ### E2E: OpenShell backend smoke - Command: `pnpm test:e2e:openshell` -- File: `test/openshell-sandbox.e2e.test.ts` +- File: `extensions/openshell/src/backend.e2e.test.ts` - Scope: - Starts an isolated OpenShell gateway on the host via Docker - Creates a sandbox from a temporary local Dockerfile @@ -401,7 +401,7 @@ Think of the suites as “increasing realism” (and increasing flakiness/cost): - Command: `pnpm test:live` - Config: `vitest.live.config.ts` -- Files: `src/**/*.live.test.ts` +- Files: `src/**/*.live.test.ts`, `test/**/*.live.test.ts`, and bundled-plugin live tests under `extensions/` - Default: **enabled** by `pnpm test:live` (sets `OPENCLAW_LIVE_TEST=1`) - Scope: - “Does this provider/model actually work _today_ with real creds?” @@ -784,13 +784,13 @@ If you want to rely on env keys (e.g. exported in your `~/.profile`), run local ## Deepgram live (audio transcription) -- Test: `src/media-understanding/providers/deepgram/audio.live.test.ts` -- Enable: `DEEPGRAM_API_KEY=... DEEPGRAM_LIVE_TEST=1 pnpm test:live src/media-understanding/providers/deepgram/audio.live.test.ts` +- Test: `extensions/deepgram/audio.live.test.ts` +- Enable: `DEEPGRAM_API_KEY=... DEEPGRAM_LIVE_TEST=1 pnpm test:live extensions/deepgram/audio.live.test.ts` ## BytePlus coding plan live -- Test: `src/agents/byteplus.live.test.ts` -- Enable: `BYTEPLUS_API_KEY=... BYTEPLUS_LIVE_TEST=1 pnpm test:live src/agents/byteplus.live.test.ts` +- Test: `extensions/byteplus/live.test.ts` +- Enable: `BYTEPLUS_API_KEY=... BYTEPLUS_LIVE_TEST=1 pnpm test:live extensions/byteplus/live.test.ts` - Optional model override: `BYTEPLUS_CODING_MODEL=ark-code-latest` ## ComfyUI workflow media live @@ -804,8 +804,8 @@ If you want to rely on env keys (e.g. exported in your `~/.profile`), run local ## Image generation live -- Test: `src/image-generation/runtime.live.test.ts` -- Command: `pnpm test:live src/image-generation/runtime.live.test.ts` +- Test: `test/image-generation.runtime.live.test.ts` +- Command: `pnpm test:live test/image-generation.runtime.live.test.ts` - Harness: `pnpm test:live:media image` - Scope: - Enumerates every registered image-generation provider plugin @@ -818,8 +818,11 @@ If you want to rely on env keys (e.g. exported in your `~/.profile`), run local - `google:pro-edit` - `openai:default-generate` - Current bundled providers covered: - - `openai` + - `fal` - `google` + - `minimax` + - `openai` + - `vydra` - `xai` - Optional narrowing: - `OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS="openai,google,xai"` diff --git a/docs/install/northflank.mdx b/docs/install/northflank.mdx index 7818b95359c..8348f340bd0 100644 --- a/docs/install/northflank.mdx +++ b/docs/install/northflank.mdx @@ -6,6 +6,8 @@ read_when: title: "Northflank" --- +# Northflank + Deploy OpenClaw on Northflank with a one-click template and access it through the web Control UI. This is the easiest "no terminal on the server" path: Northflank runs the Gateway for you. diff --git a/docs/install/railway.mdx b/docs/install/railway.mdx index cbe584fbb5d..d40c883136d 100644 --- a/docs/install/railway.mdx +++ b/docs/install/railway.mdx @@ -6,6 +6,8 @@ read_when: title: "Railway" --- +# Railway + Deploy OpenClaw on Railway with a one-click template and access it through the web Control UI. This is the easiest "no terminal on the server" path: Railway runs the Gateway for you. diff --git a/docs/install/render.mdx b/docs/install/render.mdx index 11198390123..f65d0744467 100644 --- a/docs/install/render.mdx +++ b/docs/install/render.mdx @@ -6,6 +6,8 @@ read_when: title: "Render" --- +# Render + Deploy OpenClaw on Render using Infrastructure as Code. The included `render.yaml` Blueprint defines your entire stack declaratively, service, disk, environment variables, so you can deploy with a single click and version your infrastructure alongside your code. ## Prerequisites diff --git a/docs/plugins/architecture.md b/docs/plugins/architecture.md index 2dd11ebd69d..1d46d1abad8 100644 --- a/docs/plugins/architecture.md +++ b/docs/plugins/architecture.md @@ -122,7 +122,7 @@ OpenClaw's plugin system has four layers: 1. **Manifest + discovery** OpenClaw finds candidate plugins from configured paths, workspace roots, - global extension roots, and bundled extensions. Discovery reads native + global plugin roots, and bundled plugins. Discovery reads native `openclaw.plugin.json` manifests plus supported bundle manifests first. 2. **Enablement + validation** Core decides whether a discovered plugin is enabled, disabled, blocked, or diff --git a/docs/providers/qwen.md b/docs/providers/qwen.md index 7d9bb2ae323..5464a4d4143 100644 --- a/docs/providers/qwen.md +++ b/docs/providers/qwen.md @@ -173,7 +173,7 @@ present in the bundled catalog. ## Multimodal add-ons -The `qwen` extension also exposes multimodal capabilities on the **Standard** +The `qwen` plugin also exposes multimodal capabilities on the **Standard** DashScope endpoints (not the Coding Plan endpoints): - **Video understanding** via `qwen-vl-max-latest` @@ -227,7 +227,7 @@ See [Video Generation](/tools/video-generation) for shared tool parameters, prov - The `qwen` extension is being positioned as the vendor home for the full Qwen + The `qwen` plugin is being positioned as the vendor home for the full Qwen Cloud surface, not just coding/text models. - **Text/chat models:** bundled now diff --git a/docs/reference/transcript-hygiene.md b/docs/reference/transcript-hygiene.md index 1321175ded9..eb52083e3a6 100644 --- a/docs/reference/transcript-hygiene.md +++ b/docs/reference/transcript-hygiene.md @@ -37,7 +37,7 @@ If you need transcript storage details, see: All transcript hygiene is centralized in the embedded runner: - Policy selection: `src/agents/transcript-policy.ts` -- Sanitization/repair application: `sanitizeSessionHistory` in `src/agents/pi-embedded-runner/google.ts` +- Sanitization/repair application: `sanitizeSessionHistory` in `src/agents/pi-embedded-runner/replay-history.ts` The policy uses `provider`, `modelApi`, and `modelId` to decide what to apply. @@ -73,7 +73,7 @@ persisted tool calls (for example, after a rate limit failure). Implementation: - `sanitizeToolCallInputs` in `src/agents/session-transcript-repair.ts` -- Applied in `sanitizeSessionHistory` in `src/agents/pi-embedded-runner/google.ts` +- Applied in `sanitizeSessionHistory` in `src/agents/pi-embedded-runner/replay-history.ts` --- diff --git a/docs/start/hubs.md b/docs/start/hubs.md index eaee7ff6c62..1dc18f00c74 100644 --- a/docs/start/hubs.md +++ b/docs/start/hubs.md @@ -162,7 +162,7 @@ Use these hubs to discover every page, including deep dives and reference docs t - [macOS skills](/platforms/mac/skills) - [macOS Peekaboo](/platforms/mac/peekaboo) -## Extensions + plugins +## Plugins - [Plugins overview](/tools/plugin) - [Building plugins](/plugins/building-plugins) diff --git a/docs/tools/skills-config.md b/docs/tools/skills-config.md index 74f7154e3aa..ddf84ac5b20 100644 --- a/docs/tools/skills-config.md +++ b/docs/tools/skills-config.md @@ -50,7 +50,7 @@ auth/API key. Typical examples: `GEMINI_API_KEY` or `GOOGLE_API_KEY` for Examples: -- Native Nano Banana-style setup: `agents.defaults.imageGenerationModel.primary: "google/gemini-3.1-flash-image-preview"` +- Native Nano Banana Pro-style setup: `agents.defaults.imageGenerationModel.primary: "google/gemini-3-pro-image-preview"` - Native fal setup: `agents.defaults.imageGenerationModel.primary: "fal/fal-ai/flux/dev"` ## Agent skill allowlists