From 27318663ef14c9f458e4711fde22b7035e647f30 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 2 May 2026 15:39:58 +0100 Subject: [PATCH] docs: compact plugin inventory tables --- docs/plugins/plugin-inventory.md | 242 +++++++++++----------- scripts/generate-plugin-inventory-doc.mjs | 37 ++-- 2 files changed, 143 insertions(+), 136 deletions(-) diff --git a/docs/plugins/plugin-inventory.md b/docs/plugins/plugin-inventory.md index ee665148f95..1b9461cec23 100644 --- a/docs/plugins/plugin-inventory.md +++ b/docs/plugins/plugin-inventory.md @@ -28,130 +28,130 @@ dependencies are available. ## Core npm package -| Plugin | Package | Surface | Docs | Install | -| --------------------- | ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | -------------------- | -| alibaba | `@openclaw/alibaba-provider` | contracts: videoGenerationProviders | [alibaba](/providers/alibaba) | included in OpenClaw | -| amazon-bedrock | `@openclaw/amazon-bedrock-provider` | providers: amazon-bedrock; contracts: memoryEmbeddingProviders | [amazon-bedrock](/providers/bedrock) | included in OpenClaw | -| amazon-bedrock-mantle | `@openclaw/amazon-bedrock-mantle-provider` | providers: amazon-bedrock-mantle | [amazon-bedrock-mantle](/providers/bedrock-mantle) | included in OpenClaw | -| anthropic | `@openclaw/anthropic-provider` | providers: anthropic; contracts: mediaUnderstandingProviders | [anthropic](/providers/anthropic) | included in OpenClaw | -| anthropic-vertex | `@openclaw/anthropic-vertex-provider` | providers: anthropic-vertex | - | included in OpenClaw | -| arcee | `@openclaw/arcee-provider` | providers: arcee | [arcee](/providers/arcee) | included in OpenClaw | -| azure-speech | `@openclaw/azure-speech` | contracts: speechProviders | [azure-speech](/providers/azure-speech) | included in OpenClaw | -| bonjour | `@openclaw/bonjour` | plugin | - | included in OpenClaw | -| browser | `@openclaw/browser-plugin` | contracts: tools; skills | [browser](/tools/browser) | included in OpenClaw | -| byteplus | `@openclaw/byteplus-provider` | providers: byteplus, byteplus-plan; contracts: videoGenerationProviders | - | included in OpenClaw | -| cerebras | `@openclaw/cerebras-provider` | providers: cerebras | [cerebras](/providers/cerebras) | included in OpenClaw | -| chutes | `@openclaw/chutes-provider` | providers: chutes | [chutes](/providers/chutes) | included in OpenClaw | -| cloudflare-ai-gateway | `@openclaw/cloudflare-ai-gateway-provider` | providers: cloudflare-ai-gateway | [cloudflare-ai-gateway](/providers/cloudflare-ai-gateway) | included in OpenClaw | -| comfy | `@openclaw/comfy-provider` | providers: comfy; contracts: imageGenerationProviders, musicGenerationProviders, videoGenerationProviders | [comfy](/providers/comfy) | included in OpenClaw | -| copilot-proxy | `@openclaw/copilot-proxy` | providers: copilot-proxy | - | included in OpenClaw | -| deepgram | `@openclaw/deepgram-provider` | contracts: mediaUnderstandingProviders, realtimeTranscriptionProviders | [deepgram](/providers/deepgram) | included in OpenClaw | -| deepinfra | `@openclaw/deepinfra-provider` | providers: deepinfra; contracts: imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, speechProviders, videoGenerationProviders | [deepinfra](/providers/deepinfra) | included in OpenClaw | -| deepseek | `@openclaw/deepseek-provider` | providers: deepseek | [deepseek](/providers/deepseek) | included in OpenClaw | -| document-extract | `@openclaw/document-extract-plugin` | contracts: documentExtractors | [document-extract](/tools/pdf) | included in OpenClaw | -| duckduckgo | `@openclaw/duckduckgo-plugin` | contracts: webSearchProviders | [duckduckgo](/tools/duckduckgo-search) | included in OpenClaw | -| elevenlabs | `@openclaw/elevenlabs-speech` | contracts: mediaUnderstandingProviders, realtimeTranscriptionProviders, speechProviders | [elevenlabs](/providers/elevenlabs) | included in OpenClaw | -| exa | `@openclaw/exa-plugin` | contracts: webSearchProviders | [exa](/tools/exa-search) | included in OpenClaw | -| fal | `@openclaw/fal-provider` | providers: fal; contracts: imageGenerationProviders, videoGenerationProviders | [fal](/providers/fal) | included in OpenClaw | -| file-transfer | `@openclaw/file-transfer` | contracts: tools | - | included in OpenClaw | -| firecrawl | `@openclaw/firecrawl-plugin` | contracts: tools, webFetchProviders, webSearchProviders | [firecrawl](/tools/firecrawl) | included in OpenClaw | -| fireworks | `@openclaw/fireworks-provider` | providers: fireworks | [fireworks](/providers/fireworks) | included in OpenClaw | -| github-copilot | `@openclaw/github-copilot-provider` | providers: github-copilot; contracts: memoryEmbeddingProviders | [github-copilot](/providers/github-copilot) | included in OpenClaw | -| google | `@openclaw/google-plugin` | providers: google, google-gemini-cli, google-vertex; contracts: imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, musicGenerationProviders, realtimeVoiceProviders, speechProviders, videoGenerationProviders, webSearchProviders | [google](/providers/google) | included in OpenClaw | -| gradium | `@openclaw/gradium-speech` | contracts: speechProviders | [gradium](/providers/gradium) | included in OpenClaw | -| groq | `@openclaw/groq-provider` | providers: groq; contracts: mediaUnderstandingProviders | [groq](/providers/groq) | included in OpenClaw | -| huggingface | `@openclaw/huggingface-provider` | providers: huggingface | [huggingface](/providers/huggingface) | included in OpenClaw | -| imessage | `@openclaw/imessage` | channels: imessage | [imessage](/channels/imessage) | included in OpenClaw | -| inworld | `@openclaw/inworld-speech` | contracts: speechProviders | [inworld](/providers/inworld) | included in OpenClaw | -| irc | `@openclaw/irc` | channels: irc | [irc](/channels/irc) | included in OpenClaw | -| kilocode | `@openclaw/kilocode-provider` | providers: kilocode | [kilocode](/providers/kilocode) | included in OpenClaw | -| kimi | `@openclaw/kimi-provider` | providers: kimi, kimi-coding | [kimi](/providers/moonshot) | included in OpenClaw | -| litellm | `@openclaw/litellm-provider` | providers: litellm; contracts: imageGenerationProviders | [litellm](/providers/litellm) | included in OpenClaw | -| llm-task | `@openclaw/llm-task` | contracts: tools | - | included in OpenClaw | -| lmstudio | `@openclaw/lmstudio-provider` | providers: lmstudio; contracts: memoryEmbeddingProviders | [lmstudio](/providers/lmstudio) | included in OpenClaw | -| memory-core | `@openclaw/memory-core` | contracts: memoryEmbeddingProviders, tools | - | included in OpenClaw | -| memory-wiki | `@openclaw/memory-wiki` | contracts: tools; skills | [memory-wiki](/plugins/memory-wiki) | included in OpenClaw | -| microsoft | `@openclaw/microsoft-speech` | contracts: speechProviders | - | included in OpenClaw | -| microsoft-foundry | `@openclaw/microsoft-foundry` | providers: microsoft-foundry | - | included in OpenClaw | -| migrate-claude | `@openclaw/migrate-claude` | contracts: migrationProviders | - | included in OpenClaw | -| migrate-hermes | `@openclaw/migrate-hermes` | contracts: migrationProviders | - | included in OpenClaw | -| minimax | `@openclaw/minimax-provider` | providers: minimax, minimax-portal; contracts: imageGenerationProviders, mediaUnderstandingProviders, musicGenerationProviders, speechProviders, videoGenerationProviders, webSearchProviders | [minimax](/providers/minimax) | included in OpenClaw | -| mistral | `@openclaw/mistral-provider` | providers: mistral; contracts: mediaUnderstandingProviders, memoryEmbeddingProviders, realtimeTranscriptionProviders | [mistral](/providers/mistral) | included in OpenClaw | -| moonshot | `@openclaw/moonshot-provider` | providers: moonshot; contracts: mediaUnderstandingProviders, webSearchProviders | [moonshot](/providers/moonshot) | included in OpenClaw | -| nvidia | `@openclaw/nvidia-provider` | providers: nvidia | [nvidia](/providers/nvidia) | included in OpenClaw | -| ollama | `@openclaw/ollama-provider` | providers: ollama; contracts: memoryEmbeddingProviders, webSearchProviders | [ollama](/providers/ollama) | included in OpenClaw | -| open-prose | `@openclaw/open-prose` | skills | - | included in OpenClaw | -| openai | `@openclaw/openai-provider` | providers: openai, openai-codex; contracts: imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, realtimeTranscriptionProviders, realtimeVoiceProviders, speechProviders, videoGenerationProviders | [openai](/providers/openai) | included in OpenClaw | -| opencode | `@openclaw/opencode-provider` | providers: opencode; contracts: mediaUnderstandingProviders | [opencode](/providers/opencode) | included in OpenClaw | -| opencode-go | `@openclaw/opencode-go-provider` | providers: opencode-go; contracts: mediaUnderstandingProviders | [opencode-go](/providers/opencode-go) | included in OpenClaw | -| openrouter | `@openclaw/openrouter-provider` | providers: openrouter; contracts: imageGenerationProviders, mediaUnderstandingProviders, speechProviders, videoGenerationProviders | [openrouter](/providers/openrouter) | included in OpenClaw | -| openshell | `@openclaw/openshell-sandbox` | plugin | - | included in OpenClaw | -| perplexity | `@openclaw/perplexity-plugin` | contracts: webSearchProviders | [perplexity](/tools/perplexity-search) | included in OpenClaw | -| qianfan | `@openclaw/qianfan-provider` | providers: qianfan | [qianfan](/providers/qianfan) | included in OpenClaw | -| qwen | `@openclaw/qwen-provider` | providers: qwen, qwencloud, modelstudio, dashscope; contracts: mediaUnderstandingProviders, videoGenerationProviders | [qwen](/providers/qwen) | included in OpenClaw | -| runway | `@openclaw/runway-provider` | contracts: videoGenerationProviders | [runway](/providers/runway) | included in OpenClaw | -| searxng | `@openclaw/searxng-plugin` | contracts: webSearchProviders | - | included in OpenClaw | -| senseaudio | `@openclaw/senseaudio-provider` | contracts: mediaUnderstandingProviders | [senseaudio](/providers/senseaudio) | included in OpenClaw | -| sglang | `@openclaw/sglang-provider` | providers: sglang | [sglang](/providers/sglang) | included in OpenClaw | -| signal | `@openclaw/signal` | channels: signal | [signal](/channels/signal) | included in OpenClaw | -| skill-workshop | `@openclaw/skill-workshop` | contracts: tools | [skill-workshop](/plugins/skill-workshop) | included in OpenClaw | -| slack | `@openclaw/slack` | channels: slack | [slack](/channels/slack) | included in OpenClaw | -| stepfun | `@openclaw/stepfun-provider` | providers: stepfun, stepfun-plan | [stepfun](/providers/stepfun) | included in OpenClaw | -| synthetic | `@openclaw/synthetic-provider` | providers: synthetic | [synthetic](/providers/synthetic) | included in OpenClaw | -| tavily | `@openclaw/tavily-plugin` | contracts: tools, webSearchProviders; skills | [tavily](/tools/tavily) | included in OpenClaw | -| telegram | `@openclaw/telegram` | channels: telegram | [telegram](/channels/telegram) | included in OpenClaw | -| tencent | `@openclaw/tencent-provider` | providers: tencent-tokenhub | [tencent](/providers/tencent) | included in OpenClaw | -| together | `@openclaw/together-provider` | providers: together; contracts: videoGenerationProviders | [together](/providers/together) | included in OpenClaw | -| tokenjuice | `@openclaw/tokenjuice` | contracts: agentToolResultMiddleware | [tokenjuice](/tools/tokenjuice) | included in OpenClaw | -| tts-local-cli | `@openclaw/tts-local-cli` | contracts: speechProviders | - | included in OpenClaw | -| venice | `@openclaw/venice-provider` | providers: venice | [venice](/providers/venice) | included in OpenClaw | -| vercel-ai-gateway | `@openclaw/vercel-ai-gateway-provider` | providers: vercel-ai-gateway | [vercel-ai-gateway](/providers/vercel-ai-gateway) | included in OpenClaw | -| vllm | `@openclaw/vllm-provider` | providers: vllm | [vllm](/providers/vllm) | included in OpenClaw | -| volcengine | `@openclaw/volcengine-provider` | providers: volcengine, volcengine-plan; contracts: speechProviders | [volcengine](/providers/volcengine) | included in OpenClaw | -| voyage | `@openclaw/voyage-provider` | contracts: memoryEmbeddingProviders | - | included in OpenClaw | -| vydra | `@openclaw/vydra-provider` | providers: vydra; contracts: imageGenerationProviders, speechProviders, videoGenerationProviders | [vydra](/providers/vydra) | included in OpenClaw | -| web-readability | `@openclaw/web-readability-plugin` | contracts: webContentExtractors | - | included in OpenClaw | -| webhooks | `@openclaw/webhooks` | plugin | [webhooks](/plugins/webhooks) | included in OpenClaw | -| xai | `@openclaw/xai-plugin` | providers: xai; contracts: imageGenerationProviders, mediaUnderstandingProviders, realtimeTranscriptionProviders, speechProviders, tools, videoGenerationProviders, webSearchProviders | [xai](/providers/xai) | included in OpenClaw | -| xiaomi | `@openclaw/xiaomi-provider` | providers: xiaomi; contracts: speechProviders | [xiaomi](/providers/xiaomi) | included in OpenClaw | -| zai | `@openclaw/zai-provider` | providers: zai; contracts: mediaUnderstandingProviders | [zai](/providers/zai) | included in OpenClaw | +| Plugin | Package | Surface | Install | +| --------------------------------------------------------- | ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | +| [alibaba](/providers/alibaba) | `@openclaw/alibaba-provider` | contracts: videoGenerationProviders | included in OpenClaw | +| [amazon-bedrock](/providers/bedrock) | `@openclaw/amazon-bedrock-provider` | providers: amazon-bedrock; contracts: memoryEmbeddingProviders | included in OpenClaw | +| [amazon-bedrock-mantle](/providers/bedrock-mantle) | `@openclaw/amazon-bedrock-mantle-provider` | providers: amazon-bedrock-mantle | included in OpenClaw | +| [anthropic](/providers/anthropic) | `@openclaw/anthropic-provider` | providers: anthropic; contracts: mediaUnderstandingProviders | included in OpenClaw | +| anthropic-vertex | `@openclaw/anthropic-vertex-provider` | providers: anthropic-vertex | included in OpenClaw | +| [arcee](/providers/arcee) | `@openclaw/arcee-provider` | providers: arcee | included in OpenClaw | +| [azure-speech](/providers/azure-speech) | `@openclaw/azure-speech` | contracts: speechProviders | included in OpenClaw | +| bonjour | `@openclaw/bonjour` | plugin | included in OpenClaw | +| [browser](/tools/browser) | `@openclaw/browser-plugin` | contracts: tools; skills | included in OpenClaw | +| byteplus | `@openclaw/byteplus-provider` | providers: byteplus, byteplus-plan; contracts: videoGenerationProviders | included in OpenClaw | +| [cerebras](/providers/cerebras) | `@openclaw/cerebras-provider` | providers: cerebras | included in OpenClaw | +| [chutes](/providers/chutes) | `@openclaw/chutes-provider` | providers: chutes | included in OpenClaw | +| [cloudflare-ai-gateway](/providers/cloudflare-ai-gateway) | `@openclaw/cloudflare-ai-gateway-provider` | providers: cloudflare-ai-gateway | included in OpenClaw | +| [comfy](/providers/comfy) | `@openclaw/comfy-provider` | providers: comfy; contracts: imageGenerationProviders, musicGenerationProviders, videoGenerationProviders | included in OpenClaw | +| copilot-proxy | `@openclaw/copilot-proxy` | providers: copilot-proxy | included in OpenClaw | +| [deepgram](/providers/deepgram) | `@openclaw/deepgram-provider` | contracts: mediaUnderstandingProviders, realtimeTranscriptionProviders | included in OpenClaw | +| [deepinfra](/providers/deepinfra) | `@openclaw/deepinfra-provider` | providers: deepinfra; contracts: imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, speechProviders, videoGenerationProviders | included in OpenClaw | +| [deepseek](/providers/deepseek) | `@openclaw/deepseek-provider` | providers: deepseek | included in OpenClaw | +| [discord](/channels/discord) | `@openclaw/discord` | channels: discord | included in OpenClaw | +| [document-extract](/tools/pdf) | `@openclaw/document-extract-plugin` | contracts: documentExtractors | included in OpenClaw | +| [duckduckgo](/tools/duckduckgo-search) | `@openclaw/duckduckgo-plugin` | contracts: webSearchProviders | included in OpenClaw | +| [elevenlabs](/providers/elevenlabs) | `@openclaw/elevenlabs-speech` | contracts: mediaUnderstandingProviders, realtimeTranscriptionProviders, speechProviders | included in OpenClaw | +| [exa](/tools/exa-search) | `@openclaw/exa-plugin` | contracts: webSearchProviders | included in OpenClaw | +| [fal](/providers/fal) | `@openclaw/fal-provider` | providers: fal; contracts: imageGenerationProviders, videoGenerationProviders | included in OpenClaw | +| file-transfer | `@openclaw/file-transfer` | contracts: tools | included in OpenClaw | +| [firecrawl](/tools/firecrawl) | `@openclaw/firecrawl-plugin` | contracts: tools, webFetchProviders, webSearchProviders | included in OpenClaw | +| [fireworks](/providers/fireworks) | `@openclaw/fireworks-provider` | providers: fireworks | included in OpenClaw | +| [github-copilot](/providers/github-copilot) | `@openclaw/github-copilot-provider` | providers: github-copilot; contracts: memoryEmbeddingProviders | included in OpenClaw | +| [google](/providers/google) | `@openclaw/google-plugin` | providers: google, google-gemini-cli, google-vertex; contracts: imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, musicGenerationProviders, realtimeVoiceProviders, speechProviders, videoGenerationProviders, webSearchProviders | included in OpenClaw | +| [gradium](/providers/gradium) | `@openclaw/gradium-speech` | contracts: speechProviders | included in OpenClaw | +| [groq](/providers/groq) | `@openclaw/groq-provider` | providers: groq; contracts: mediaUnderstandingProviders | included in OpenClaw | +| [huggingface](/providers/huggingface) | `@openclaw/huggingface-provider` | providers: huggingface | included in OpenClaw | +| [imessage](/channels/imessage) | `@openclaw/imessage` | channels: imessage | included in OpenClaw | +| [inworld](/providers/inworld) | `@openclaw/inworld-speech` | contracts: speechProviders | included in OpenClaw | +| [irc](/channels/irc) | `@openclaw/irc` | channels: irc | included in OpenClaw | +| [kilocode](/providers/kilocode) | `@openclaw/kilocode-provider` | providers: kilocode | included in OpenClaw | +| [kimi](/providers/moonshot) | `@openclaw/kimi-provider` | providers: kimi, kimi-coding | included in OpenClaw | +| [litellm](/providers/litellm) | `@openclaw/litellm-provider` | providers: litellm; contracts: imageGenerationProviders | included in OpenClaw | +| llm-task | `@openclaw/llm-task` | contracts: tools | included in OpenClaw | +| [lmstudio](/providers/lmstudio) | `@openclaw/lmstudio-provider` | providers: lmstudio; contracts: memoryEmbeddingProviders | included in OpenClaw | +| memory-core | `@openclaw/memory-core` | contracts: memoryEmbeddingProviders, tools | included in OpenClaw | +| [memory-wiki](/plugins/memory-wiki) | `@openclaw/memory-wiki` | contracts: tools; skills | included in OpenClaw | +| microsoft | `@openclaw/microsoft-speech` | contracts: speechProviders | included in OpenClaw | +| microsoft-foundry | `@openclaw/microsoft-foundry` | providers: microsoft-foundry | included in OpenClaw | +| migrate-claude | `@openclaw/migrate-claude` | contracts: migrationProviders | included in OpenClaw | +| migrate-hermes | `@openclaw/migrate-hermes` | contracts: migrationProviders | included in OpenClaw | +| [minimax](/providers/minimax) | `@openclaw/minimax-provider` | providers: minimax, minimax-portal; contracts: imageGenerationProviders, mediaUnderstandingProviders, musicGenerationProviders, speechProviders, videoGenerationProviders, webSearchProviders | included in OpenClaw | +| [mistral](/providers/mistral) | `@openclaw/mistral-provider` | providers: mistral; contracts: mediaUnderstandingProviders, memoryEmbeddingProviders, realtimeTranscriptionProviders | included in OpenClaw | +| [moonshot](/providers/moonshot) | `@openclaw/moonshot-provider` | providers: moonshot; contracts: mediaUnderstandingProviders, webSearchProviders | included in OpenClaw | +| [nvidia](/providers/nvidia) | `@openclaw/nvidia-provider` | providers: nvidia | included in OpenClaw | +| [ollama](/providers/ollama) | `@openclaw/ollama-provider` | providers: ollama; contracts: memoryEmbeddingProviders, webSearchProviders | included in OpenClaw | +| open-prose | `@openclaw/open-prose` | skills | included in OpenClaw | +| [openai](/providers/openai) | `@openclaw/openai-provider` | providers: openai, openai-codex; contracts: imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, realtimeTranscriptionProviders, realtimeVoiceProviders, speechProviders, videoGenerationProviders | included in OpenClaw | +| [opencode](/providers/opencode) | `@openclaw/opencode-provider` | providers: opencode; contracts: mediaUnderstandingProviders | included in OpenClaw | +| [opencode-go](/providers/opencode-go) | `@openclaw/opencode-go-provider` | providers: opencode-go; contracts: mediaUnderstandingProviders | included in OpenClaw | +| [openrouter](/providers/openrouter) | `@openclaw/openrouter-provider` | providers: openrouter; contracts: imageGenerationProviders, mediaUnderstandingProviders, speechProviders, videoGenerationProviders | included in OpenClaw | +| openshell | `@openclaw/openshell-sandbox` | plugin | included in OpenClaw | +| [perplexity](/tools/perplexity-search) | `@openclaw/perplexity-plugin` | contracts: webSearchProviders | included in OpenClaw | +| [qianfan](/providers/qianfan) | `@openclaw/qianfan-provider` | providers: qianfan | included in OpenClaw | +| [qwen](/providers/qwen) | `@openclaw/qwen-provider` | providers: qwen, qwencloud, modelstudio, dashscope; contracts: mediaUnderstandingProviders, videoGenerationProviders | included in OpenClaw | +| [runway](/providers/runway) | `@openclaw/runway-provider` | contracts: videoGenerationProviders | included in OpenClaw | +| searxng | `@openclaw/searxng-plugin` | contracts: webSearchProviders | included in OpenClaw | +| [senseaudio](/providers/senseaudio) | `@openclaw/senseaudio-provider` | contracts: mediaUnderstandingProviders | included in OpenClaw | +| [sglang](/providers/sglang) | `@openclaw/sglang-provider` | providers: sglang | included in OpenClaw | +| [signal](/channels/signal) | `@openclaw/signal` | channels: signal | included in OpenClaw | +| [skill-workshop](/plugins/skill-workshop) | `@openclaw/skill-workshop` | contracts: tools | included in OpenClaw | +| [slack](/channels/slack) | `@openclaw/slack` | channels: slack | included in OpenClaw | +| [stepfun](/providers/stepfun) | `@openclaw/stepfun-provider` | providers: stepfun, stepfun-plan | included in OpenClaw | +| [synthetic](/providers/synthetic) | `@openclaw/synthetic-provider` | providers: synthetic | included in OpenClaw | +| [tavily](/tools/tavily) | `@openclaw/tavily-plugin` | contracts: tools, webSearchProviders; skills | included in OpenClaw | +| [telegram](/channels/telegram) | `@openclaw/telegram` | channels: telegram | included in OpenClaw | +| [tencent](/providers/tencent) | `@openclaw/tencent-provider` | providers: tencent-tokenhub | included in OpenClaw | +| [together](/providers/together) | `@openclaw/together-provider` | providers: together; contracts: videoGenerationProviders | included in OpenClaw | +| [tokenjuice](/tools/tokenjuice) | `@openclaw/tokenjuice` | contracts: agentToolResultMiddleware | included in OpenClaw | +| tts-local-cli | `@openclaw/tts-local-cli` | contracts: speechProviders | included in OpenClaw | +| [venice](/providers/venice) | `@openclaw/venice-provider` | providers: venice | included in OpenClaw | +| [vercel-ai-gateway](/providers/vercel-ai-gateway) | `@openclaw/vercel-ai-gateway-provider` | providers: vercel-ai-gateway | included in OpenClaw | +| [vllm](/providers/vllm) | `@openclaw/vllm-provider` | providers: vllm | included in OpenClaw | +| [volcengine](/providers/volcengine) | `@openclaw/volcengine-provider` | providers: volcengine, volcengine-plan; contracts: speechProviders | included in OpenClaw | +| voyage | `@openclaw/voyage-provider` | contracts: memoryEmbeddingProviders | included in OpenClaw | +| [vydra](/providers/vydra) | `@openclaw/vydra-provider` | providers: vydra; contracts: imageGenerationProviders, speechProviders, videoGenerationProviders | included in OpenClaw | +| web-readability | `@openclaw/web-readability-plugin` | contracts: webContentExtractors | included in OpenClaw | +| [webhooks](/plugins/webhooks) | `@openclaw/webhooks` | plugin | included in OpenClaw | +| [xai](/providers/xai) | `@openclaw/xai-plugin` | providers: xai; contracts: imageGenerationProviders, mediaUnderstandingProviders, realtimeTranscriptionProviders, speechProviders, tools, videoGenerationProviders, webSearchProviders | included in OpenClaw | +| [xiaomi](/providers/xiaomi) | `@openclaw/xiaomi-provider` | providers: xiaomi; contracts: speechProviders | included in OpenClaw | +| [zai](/providers/zai) | `@openclaw/zai-provider` | providers: zai; contracts: mediaUnderstandingProviders | included in OpenClaw | ## Official external packages -| Plugin | Package | Surface | Docs | Install | -| ---------------------- | ---------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------- | -| acpx | `@openclaw/acpx` | skills | [acpx](/tools/acp-agents-setup) | ClawHub + npm: `@openclaw/acpx` | -| bluebubbles | `@openclaw/bluebubbles` | channels: bluebubbles | [bluebubbles](/channels/bluebubbles) | ClawHub + npm: `@openclaw/bluebubbles` | -| brave | `@openclaw/brave-plugin` | contracts: webSearchProviders | [brave](/tools/brave-search) | ClawHub + npm: `@openclaw/brave-plugin` | -| codex | `@openclaw/codex` | providers: codex; contracts: mediaUnderstandingProviders, migrationProviders | [codex](/plugins/codex-harness) | ClawHub + npm: `@openclaw/codex` | -| diagnostics-otel | `@openclaw/diagnostics-otel` | plugin | - | ClawHub + npm: `@openclaw/diagnostics-otel` | -| diagnostics-prometheus | `@openclaw/diagnostics-prometheus` | plugin | - | ClawHub + npm: `@openclaw/diagnostics-prometheus` | -| diffs | `@openclaw/diffs` | contracts: tools; skills | - | ClawHub + npm: `@openclaw/diffs` | -| discord | `@openclaw/discord` | channels: discord | [discord](/channels/discord) | ClawHub + npm: `@openclaw/discord` | -| feishu | `@openclaw/feishu` | channels: feishu; contracts: tools; skills | [feishu](/channels/feishu) | ClawHub + npm: `@openclaw/feishu` | -| google-meet | `@openclaw/google-meet` | contracts: tools | [google-meet](/plugins/google-meet) | ClawHub + npm: `@openclaw/google-meet` | -| googlechat | `@openclaw/googlechat` | channels: googlechat | [googlechat](/channels/googlechat) | ClawHub + npm: `@openclaw/googlechat` | -| line | `@openclaw/line` | channels: line | [line](/channels/line) | ClawHub + npm: `@openclaw/line` | -| lobster | `@openclaw/lobster` | contracts: tools | - | ClawHub + npm: `@openclaw/lobster` | -| matrix | `@openclaw/matrix` | channels: matrix | [matrix](/channels/matrix) | ClawHub + npm: `@openclaw/matrix` | -| mattermost | `@openclaw/mattermost` | channels: mattermost | [mattermost](/channels/mattermost) | ClawHub + npm: `@openclaw/mattermost` | -| memory-lancedb | `@openclaw/memory-lancedb` | contracts: tools | [memory-lancedb](/plugins/memory-lancedb) | ClawHub + npm: `@openclaw/memory-lancedb` | -| msteams | `@openclaw/msteams` | channels: msteams | [msteams](/channels/msteams) | ClawHub + npm: `@openclaw/msteams` | -| nextcloud-talk | `@openclaw/nextcloud-talk` | channels: nextcloud-talk | [nextcloud-talk](/channels/nextcloud-talk) | ClawHub + npm: `@openclaw/nextcloud-talk` | -| nostr | `@openclaw/nostr` | channels: nostr | [nostr](/channels/nostr) | ClawHub + npm: `@openclaw/nostr` | -| qqbot | `@openclaw/qqbot` | channels: qqbot; contracts: tools; skills | [qqbot](/channels/qqbot) | ClawHub + npm: `@openclaw/qqbot` | -| synology-chat | `@openclaw/synology-chat` | channels: synology-chat | [synology-chat](/channels/synology-chat) | ClawHub + npm: `@openclaw/synology-chat` | -| tlon | `@openclaw/tlon` | channels: tlon; contracts: tools; skills | [tlon](/channels/tlon) | ClawHub + npm: `@openclaw/tlon` | -| twitch | `@openclaw/twitch` | channels: twitch | [twitch](/channels/twitch) | ClawHub + npm: `@openclaw/twitch` | -| voice-call | `@openclaw/voice-call` | contracts: tools | [voice-call](/plugins/voice-call) | ClawHub + npm: `@openclaw/voice-call` | -| whatsapp | `@openclaw/whatsapp` | channels: whatsapp | [whatsapp](/channels/whatsapp) | ClawHub + npm: `@openclaw/whatsapp` | -| zalo | `@openclaw/zalo` | channels: zalo | [zalo](/channels/zalo) | ClawHub + npm: `@openclaw/zalo` | -| zalouser | `@openclaw/zalouser` | channels: zalouser; contracts: tools | [zalouser](/channels/zalouser), [zalouser](/plugins/zalouser) | ClawHub + npm: `@openclaw/zalouser` | +| Plugin | Package | Surface | Install | +| ------------------------------------------ | ---------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------- | +| [acpx](/tools/acp-agents-setup) | `@openclaw/acpx` | skills | ClawHub + npm: `@openclaw/acpx` | +| [bluebubbles](/channels/bluebubbles) | `@openclaw/bluebubbles` | channels: bluebubbles | ClawHub + npm: `@openclaw/bluebubbles` | +| [brave](/tools/brave-search) | `@openclaw/brave-plugin` | contracts: webSearchProviders | ClawHub + npm: `@openclaw/brave-plugin` | +| [codex](/plugins/codex-harness) | `@openclaw/codex` | providers: codex; contracts: mediaUnderstandingProviders, migrationProviders | ClawHub + npm: `@openclaw/codex` | +| diagnostics-otel | `@openclaw/diagnostics-otel` | plugin | ClawHub + npm: `@openclaw/diagnostics-otel` | +| diagnostics-prometheus | `@openclaw/diagnostics-prometheus` | plugin | ClawHub + npm: `@openclaw/diagnostics-prometheus` | +| diffs | `@openclaw/diffs` | contracts: tools; skills | ClawHub + npm: `@openclaw/diffs` | +| [feishu](/channels/feishu) | `@openclaw/feishu` | channels: feishu; contracts: tools; skills | ClawHub + npm: `@openclaw/feishu` | +| [google-meet](/plugins/google-meet) | `@openclaw/google-meet` | contracts: tools | ClawHub + npm: `@openclaw/google-meet` | +| [googlechat](/channels/googlechat) | `@openclaw/googlechat` | channels: googlechat | ClawHub + npm: `@openclaw/googlechat` | +| [line](/channels/line) | `@openclaw/line` | channels: line | ClawHub + npm: `@openclaw/line` | +| lobster | `@openclaw/lobster` | contracts: tools | ClawHub + npm: `@openclaw/lobster` | +| [matrix](/channels/matrix) | `@openclaw/matrix` | channels: matrix | ClawHub + npm: `@openclaw/matrix` | +| [mattermost](/channels/mattermost) | `@openclaw/mattermost` | channels: mattermost | ClawHub + npm: `@openclaw/mattermost` | +| [memory-lancedb](/plugins/memory-lancedb) | `@openclaw/memory-lancedb` | contracts: tools | ClawHub + npm: `@openclaw/memory-lancedb` | +| [msteams](/channels/msteams) | `@openclaw/msteams` | channels: msteams | ClawHub + npm: `@openclaw/msteams` | +| [nextcloud-talk](/channels/nextcloud-talk) | `@openclaw/nextcloud-talk` | channels: nextcloud-talk | ClawHub + npm: `@openclaw/nextcloud-talk` | +| [nostr](/channels/nostr) | `@openclaw/nostr` | channels: nostr | ClawHub + npm: `@openclaw/nostr` | +| [qqbot](/channels/qqbot) | `@openclaw/qqbot` | channels: qqbot; contracts: tools; skills | ClawHub + npm: `@openclaw/qqbot` | +| [synology-chat](/channels/synology-chat) | `@openclaw/synology-chat` | channels: synology-chat | ClawHub + npm: `@openclaw/synology-chat` | +| [tlon](/channels/tlon) | `@openclaw/tlon` | channels: tlon; contracts: tools; skills | ClawHub + npm: `@openclaw/tlon` | +| [twitch](/channels/twitch) | `@openclaw/twitch` | channels: twitch | ClawHub + npm: `@openclaw/twitch` | +| [voice-call](/plugins/voice-call) | `@openclaw/voice-call` | contracts: tools | ClawHub + npm: `@openclaw/voice-call` | +| [whatsapp](/channels/whatsapp) | `@openclaw/whatsapp` | channels: whatsapp | ClawHub + npm: `@openclaw/whatsapp` | +| [zalo](/channels/zalo) | `@openclaw/zalo` | channels: zalo | ClawHub + npm: `@openclaw/zalo` | +| [zalouser](/channels/zalouser) | `@openclaw/zalouser` | channels: zalouser; contracts: tools | ClawHub + npm: `@openclaw/zalouser` | ## Source checkout only -| Plugin | Package | Surface | Docs | Install | -| ---------- | ---------------------- | -------------------- | ---------------------------------- | -------------------- | -| qa-channel | `@openclaw/qa-channel` | channels: qa-channel | [qa-channel](/channels/qa-channel) | source checkout only | -| qa-lab | `@openclaw/qa-lab` | plugin | - | source checkout only | -| qa-matrix | `@openclaw/qa-matrix` | plugin | - | source checkout only | +| Plugin | Package | Surface | Install | +| ---------------------------------- | ---------------------- | -------------------- | -------------------- | +| [qa-channel](/channels/qa-channel) | `@openclaw/qa-channel` | channels: qa-channel | source checkout only | +| qa-lab | `@openclaw/qa-lab` | plugin | source checkout only | +| qa-matrix | `@openclaw/qa-matrix` | plugin | source checkout only | diff --git a/scripts/generate-plugin-inventory-doc.mjs b/scripts/generate-plugin-inventory-doc.mjs index f94a7c3a145..44eae5649d8 100644 --- a/scripts/generate-plugin-inventory-doc.mjs +++ b/scripts/generate-plugin-inventory-doc.mjs @@ -56,12 +56,15 @@ function normalizeDocPath(value) { return value.replace(/\.mdx?$/u, ""); } -function docLink(label, href) { +function docLink({ label, href }) { return `[${label}](${href})`; } -function pushUnique(values, value) { - if (value && !values.includes(value)) { +function pushUniqueDocLink(values, value) { + if ( + value && + !values.some((existing) => existing.label === value.label && existing.href === value.href) + ) { values.push(value); } } @@ -70,12 +73,15 @@ function resolveDocs({ dirName, manifest, packageJson }) { const links = []; const pluginAlias = PLUGIN_DOC_ALIASES.get(manifest.id) ?? PLUGIN_DOC_ALIASES.get(dirName); if (pluginAlias) { - pushUnique(links, docLink(manifest.id ?? dirName, pluginAlias)); + pushUniqueDocLink(links, { href: pluginAlias, label: manifest.id ?? dirName }); } const channelDoc = normalizeDocPath(packageJson.openclaw?.channel?.docsPath); if (channelDoc) { - pushUnique(links, docLink(channelDoc.replace(/^\/channels\//u, ""), channelDoc)); + pushUniqueDocLink(links, { + href: channelDoc, + label: channelDoc.replace(/^\/channels\//u, ""), + }); } for (const channel of manifest.channels ?? []) { @@ -84,7 +90,7 @@ function resolveDocs({ dirName, manifest, packageJson }) { } const relativePath = `docs/channels/${channel}.md`; if (fileExists(relativePath)) { - pushUnique(links, docLink(channel, `/channels/${channel}`)); + pushUniqueDocLink(links, { href: `/channels/${channel}`, label: channel }); } } @@ -94,12 +100,12 @@ function resolveDocs({ dirName, manifest, packageJson }) { } const alias = PROVIDER_DOC_ALIASES.get(provider); if (alias) { - pushUnique(links, docLink(provider, alias)); + pushUniqueDocLink(links, { href: alias, label: provider }); continue; } const relativePath = `docs/providers/${provider}.md`; if (fileExists(relativePath)) { - pushUnique(links, docLink(provider, `/providers/${provider}`)); + pushUniqueDocLink(links, { href: `/providers/${provider}`, label: provider }); } } @@ -108,17 +114,17 @@ function resolveDocs({ dirName, manifest, packageJson }) { continue; } if (fileExists(`docs/channels/${candidate}.md`)) { - pushUnique(links, docLink(candidate, `/channels/${candidate}`)); + pushUniqueDocLink(links, { href: `/channels/${candidate}`, label: candidate }); } if (fileExists(`docs/providers/${candidate}.md`)) { - pushUnique(links, docLink(candidate, `/providers/${candidate}`)); + pushUniqueDocLink(links, { href: `/providers/${candidate}`, label: candidate }); } if (fileExists(`docs/plugins/${candidate}.md`)) { - pushUnique(links, docLink(candidate, `/plugins/${candidate}`)); + pushUniqueDocLink(links, { href: `/plugins/${candidate}`, label: candidate }); } } - return links.length > 0 ? links.join(", ") : "-"; + return links; } function resolveSurface(manifest) { @@ -185,12 +191,13 @@ function escapeCell(value) { function renderTable(records) { const rows = [ - ["Plugin", "Package", "Surface", "Docs", "Install"], + ["Plugin", "Package", "Surface", "Install"], ...records.map((record) => [ - escapeCell(record.id), + record.docs.length > 0 + ? docLink({ href: record.docs[0].href, label: escapeCell(record.id) }) + : escapeCell(record.id), `\`${escapeCell(record.packageName)}\``, escapeCell(record.surface), - escapeCell(record.docs), escapeCell(record.install), ]), ];