durar-ai 2026.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5497 -0
- package/LICENSE +21 -0
- package/README.md +614 -0
- package/assets/avatar-placeholder.svg +19 -0
- package/assets/chrome-extension/icons/icon128.png +0 -0
- package/assets/chrome-extension/icons/icon16.png +0 -0
- package/assets/chrome-extension/icons/icon32.png +0 -0
- package/assets/chrome-extension/icons/icon48.png +0 -0
- package/assets/dmg-background-small.png +0 -0
- package/assets/dmg-background.png +0 -0
- package/docs/.i18n/README.md +72 -0
- package/docs/.i18n/ar-navigation.json +18 -0
- package/docs/.i18n/de-navigation.json +18 -0
- package/docs/.i18n/es-navigation.json +18 -0
- package/docs/.i18n/fr-navigation.json +18 -0
- package/docs/.i18n/glossary.ar.json +5 -0
- package/docs/.i18n/glossary.de.json +5 -0
- package/docs/.i18n/glossary.es.json +5 -0
- package/docs/.i18n/glossary.fr.json +5 -0
- package/docs/.i18n/glossary.id.json +5 -0
- package/docs/.i18n/glossary.it.json +5 -0
- package/docs/.i18n/glossary.ja-JP.json +14 -0
- package/docs/.i18n/glossary.ko.json +5 -0
- package/docs/.i18n/glossary.pl.json +5 -0
- package/docs/.i18n/glossary.pt-BR.json +5 -0
- package/docs/.i18n/glossary.tr.json +5 -0
- package/docs/.i18n/glossary.zh-CN.json +358 -0
- package/docs/.i18n/id-navigation.json +18 -0
- package/docs/.i18n/it-navigation.json +18 -0
- package/docs/.i18n/ja-navigation.json +18 -0
- package/docs/.i18n/ko-navigation.json +18 -0
- package/docs/.i18n/pl-navigation.json +18 -0
- package/docs/.i18n/pt-BR-navigation.json +18 -0
- package/docs/.i18n/tr-navigation.json +18 -0
- package/docs/.i18n/zh-Hans-navigation.json +544 -0
- package/docs/assets/install-script.svg +1 -0
- package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
- package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
- package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
- package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
- package/docs/assets/macos-onboarding/05-permissions.png +0 -0
- package/docs/assets/openclaw-logo-text-dark.png +0 -0
- package/docs/assets/openclaw-logo-text-dark.svg +418 -0
- package/docs/assets/openclaw-logo-text.png +0 -0
- package/docs/assets/openclaw-logo-text.svg +418 -0
- package/docs/assets/pixel-lobster.svg +60 -0
- package/docs/assets/showcase/agents-ui.jpg +0 -0
- package/docs/assets/showcase/bambu-cli.png +0 -0
- package/docs/assets/showcase/codexmonitor.png +0 -0
- package/docs/assets/showcase/gohome-grafana.png +0 -0
- package/docs/assets/showcase/ios-testflight.jpg +0 -0
- package/docs/assets/showcase/oura-health.png +0 -0
- package/docs/assets/showcase/padel-cli.svg +11 -0
- package/docs/assets/showcase/padel-screenshot.jpg +0 -0
- package/docs/assets/showcase/papla-tts.jpg +0 -0
- package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
- package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
- package/docs/assets/showcase/roborock-status.svg +13 -0
- package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
- package/docs/assets/showcase/snag.png +0 -0
- package/docs/assets/showcase/tesco-shop.jpg +0 -0
- package/docs/assets/showcase/wienerlinien.png +0 -0
- package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
- package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
- package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
- package/docs/assets/sponsors/blacksmith-light.svg +14 -0
- package/docs/assets/sponsors/blacksmith.svg +14 -0
- package/docs/assets/sponsors/convex-light.svg +16 -0
- package/docs/assets/sponsors/convex.svg +16 -0
- package/docs/assets/sponsors/github-light.svg +3 -0
- package/docs/assets/sponsors/github.svg +3 -0
- package/docs/assets/sponsors/nvidia-dark.svg +9 -0
- package/docs/assets/sponsors/nvidia.svg +9 -0
- package/docs/assets/sponsors/openai-light.svg +3 -0
- package/docs/assets/sponsors/openai.svg +3 -0
- package/docs/assets/sponsors/vercel-light.svg +5 -0
- package/docs/assets/sponsors/vercel.svg +5 -0
- package/docs/auth-credential-semantics.md +80 -0
- package/docs/automation/auth-monitoring.md +8 -0
- package/docs/automation/clawflow.md +8 -0
- package/docs/automation/cron-jobs.md +410 -0
- package/docs/automation/cron-vs-heartbeat.md +8 -0
- package/docs/automation/gmail-pubsub.md +8 -0
- package/docs/automation/hooks.md +303 -0
- package/docs/automation/index.md +115 -0
- package/docs/automation/poll.md +8 -0
- package/docs/automation/standing-orders.md +254 -0
- package/docs/automation/taskflow.md +82 -0
- package/docs/automation/tasks.md +323 -0
- package/docs/automation/troubleshooting.md +8 -0
- package/docs/automation/webhook.md +8 -0
- package/docs/brave-search.md +103 -0
- package/docs/channels/bluebubbles.md +435 -0
- package/docs/channels/broadcast-groups.md +442 -0
- package/docs/channels/channel-routing.md +139 -0
- package/docs/channels/discord.md +1254 -0
- package/docs/channels/feishu.md +793 -0
- package/docs/channels/googlechat.md +270 -0
- package/docs/channels/group-messages.md +84 -0
- package/docs/channels/groups.md +410 -0
- package/docs/channels/imessage.md +427 -0
- package/docs/channels/index.md +50 -0
- package/docs/channels/irc.md +252 -0
- package/docs/channels/line.md +225 -0
- package/docs/channels/location.md +56 -0
- package/docs/channels/matrix.md +869 -0
- package/docs/channels/mattermost.md +472 -0
- package/docs/channels/msteams.md +805 -0
- package/docs/channels/nextcloud-talk.md +149 -0
- package/docs/channels/nostr.md +252 -0
- package/docs/channels/pairing.md +129 -0
- package/docs/channels/qqbot.md +193 -0
- package/docs/channels/signal.md +337 -0
- package/docs/channels/slack.md +681 -0
- package/docs/channels/synology-chat.md +185 -0
- package/docs/channels/telegram.md +1072 -0
- package/docs/channels/tlon.md +290 -0
- package/docs/channels/troubleshooting.md +133 -0
- package/docs/channels/twitch.md +394 -0
- package/docs/channels/whatsapp.md +488 -0
- package/docs/channels/zalo.md +254 -0
- package/docs/channels/zalouser.md +195 -0
- package/docs/ci.md +66 -0
- package/docs/cli/acp.md +316 -0
- package/docs/cli/agent.md +57 -0
- package/docs/cli/agents.md +220 -0
- package/docs/cli/approvals.md +136 -0
- package/docs/cli/backup.md +84 -0
- package/docs/cli/browser.md +233 -0
- package/docs/cli/channels.md +131 -0
- package/docs/cli/clawbot.md +21 -0
- package/docs/cli/completion.md +35 -0
- package/docs/cli/config.md +353 -0
- package/docs/cli/configure.md +70 -0
- package/docs/cli/cron.md +167 -0
- package/docs/cli/daemon.md +57 -0
- package/docs/cli/dashboard.md +22 -0
- package/docs/cli/devices.md +171 -0
- package/docs/cli/directory.md +63 -0
- package/docs/cli/dns.md +48 -0
- package/docs/cli/docs.md +28 -0
- package/docs/cli/doctor.md +63 -0
- package/docs/cli/flows.md +18 -0
- package/docs/cli/gateway.md +307 -0
- package/docs/cli/health.md +36 -0
- package/docs/cli/hooks.md +337 -0
- package/docs/cli/index.md +1836 -0
- package/docs/cli/logs.md +59 -0
- package/docs/cli/mcp.md +505 -0
- package/docs/cli/memory.md +139 -0
- package/docs/cli/message.md +300 -0
- package/docs/cli/models.md +136 -0
- package/docs/cli/node.md +137 -0
- package/docs/cli/nodes.md +66 -0
- package/docs/cli/onboard.md +171 -0
- package/docs/cli/pairing.md +65 -0
- package/docs/cli/plugins.md +305 -0
- package/docs/cli/qr.md +52 -0
- package/docs/cli/reset.md +35 -0
- package/docs/cli/sandbox.md +197 -0
- package/docs/cli/secrets.md +197 -0
- package/docs/cli/security.md +86 -0
- package/docs/cli/sessions.md +113 -0
- package/docs/cli/setup.md +45 -0
- package/docs/cli/skills.md +59 -0
- package/docs/cli/status.md +35 -0
- package/docs/cli/system.md +71 -0
- package/docs/cli/tui.md +30 -0
- package/docs/cli/uninstall.md +39 -0
- package/docs/cli/update.md +113 -0
- package/docs/cli/voicecall.md +34 -0
- package/docs/cli/webhooks.md +91 -0
- package/docs/concepts/agent-loop.md +168 -0
- package/docs/concepts/agent-workspace.md +246 -0
- package/docs/concepts/agent.md +129 -0
- package/docs/concepts/architecture.md +156 -0
- package/docs/concepts/compaction.md +122 -0
- package/docs/concepts/context-engine.md +274 -0
- package/docs/concepts/context.md +179 -0
- package/docs/concepts/delegate-architecture.md +307 -0
- package/docs/concepts/dreaming.md +173 -0
- package/docs/concepts/features.md +76 -0
- package/docs/concepts/markdown-formatting.md +130 -0
- package/docs/concepts/memory-builtin.md +105 -0
- package/docs/concepts/memory-honcho.md +140 -0
- package/docs/concepts/memory-qmd.md +163 -0
- package/docs/concepts/memory-search.md +141 -0
- package/docs/concepts/memory.md +121 -0
- package/docs/concepts/messages.md +161 -0
- package/docs/concepts/model-failover.md +349 -0
- package/docs/concepts/model-providers.md +799 -0
- package/docs/concepts/models.md +255 -0
- package/docs/concepts/multi-agent.md +615 -0
- package/docs/concepts/oauth.md +225 -0
- package/docs/concepts/presence.md +102 -0
- package/docs/concepts/queue.md +89 -0
- package/docs/concepts/retry.md +69 -0
- package/docs/concepts/session-pruning.md +92 -0
- package/docs/concepts/session-tool.md +141 -0
- package/docs/concepts/session.md +116 -0
- package/docs/concepts/soul.md +110 -0
- package/docs/concepts/streaming.md +161 -0
- package/docs/concepts/system-prompt.md +182 -0
- package/docs/concepts/timezone.md +97 -0
- package/docs/concepts/typebox.md +307 -0
- package/docs/concepts/typing-indicators.md +69 -0
- package/docs/concepts/usage-tracking.md +59 -0
- package/docs/date-time.md +128 -0
- package/docs/debug/node-issue.md +85 -0
- package/docs/diagnostics/flags.md +91 -0
- package/docs/docs.json +1601 -0
- package/docs/gateway/authentication.md +218 -0
- package/docs/gateway/background-process.md +131 -0
- package/docs/gateway/bonjour.md +179 -0
- package/docs/gateway/bridge-protocol.md +89 -0
- package/docs/gateway/cli-backends.md +310 -0
- package/docs/gateway/configuration-examples.md +631 -0
- package/docs/gateway/configuration-reference.md +3618 -0
- package/docs/gateway/configuration.md +698 -0
- package/docs/gateway/discovery.md +141 -0
- package/docs/gateway/doctor.md +494 -0
- package/docs/gateway/gateway-lock.md +37 -0
- package/docs/gateway/health.md +61 -0
- package/docs/gateway/heartbeat.md +443 -0
- package/docs/gateway/index.md +367 -0
- package/docs/gateway/local-models.md +163 -0
- package/docs/gateway/logging.md +113 -0
- package/docs/gateway/multiple-gateways.md +120 -0
- package/docs/gateway/network-model.md +25 -0
- package/docs/gateway/openai-http-api.md +280 -0
- package/docs/gateway/openresponses-http-api.md +340 -0
- package/docs/gateway/openshell.md +307 -0
- package/docs/gateway/pairing.md +138 -0
- package/docs/gateway/protocol.md +588 -0
- package/docs/gateway/remote-gateway-readme.md +164 -0
- package/docs/gateway/remote.md +251 -0
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +141 -0
- package/docs/gateway/sandboxing.md +473 -0
- package/docs/gateway/secrets-plan-contract.md +116 -0
- package/docs/gateway/secrets.md +541 -0
- package/docs/gateway/security/index.md +1362 -0
- package/docs/gateway/tailscale.md +136 -0
- package/docs/gateway/tools-invoke-http-api.md +161 -0
- package/docs/gateway/troubleshooting.md +451 -0
- package/docs/gateway/trusted-proxy-auth.md +399 -0
- package/docs/help/debugging.md +168 -0
- package/docs/help/environment.md +165 -0
- package/docs/help/faq.md +3244 -0
- package/docs/help/index.md +28 -0
- package/docs/help/scripts.md +27 -0
- package/docs/help/testing.md +640 -0
- package/docs/help/troubleshooting.md +372 -0
- package/docs/images/configure-model-picker-unsearchable.png +0 -0
- package/docs/images/feishu-step2-create-app.png +0 -0
- package/docs/images/feishu-step3-credentials.png +0 -0
- package/docs/images/feishu-step4-permissions.png +0 -0
- package/docs/images/feishu-step5-bot-capability.png +0 -0
- package/docs/images/feishu-step6-event-subscription.png +0 -0
- package/docs/images/feishu-verification-token.png +0 -0
- package/docs/images/groups-flow.svg +52 -0
- package/docs/images/mobile-ui-screenshot.png +0 -0
- package/docs/index.md +196 -0
- package/docs/install/ansible.md +230 -0
- package/docs/install/azure.md +311 -0
- package/docs/install/bun.md +55 -0
- package/docs/install/clawdock.md +106 -0
- package/docs/install/development-channels.md +131 -0
- package/docs/install/digitalocean.md +129 -0
- package/docs/install/docker-vm-runtime.md +142 -0
- package/docs/install/docker.md +412 -0
- package/docs/install/exe-dev.md +133 -0
- package/docs/install/fly.md +504 -0
- package/docs/install/gcp.md +412 -0
- package/docs/install/hetzner.md +259 -0
- package/docs/install/index.md +212 -0
- package/docs/install/installer.md +443 -0
- package/docs/install/kubernetes.md +192 -0
- package/docs/install/macos-vm.md +281 -0
- package/docs/install/migrating-matrix.md +349 -0
- package/docs/install/migrating.md +112 -0
- package/docs/install/nix.md +89 -0
- package/docs/install/node.md +144 -0
- package/docs/install/northflank.mdx +42 -0
- package/docs/install/oracle.md +158 -0
- package/docs/install/podman.md +210 -0
- package/docs/install/railway.mdx +90 -0
- package/docs/install/raspberry-pi.md +159 -0
- package/docs/install/render.mdx +165 -0
- package/docs/install/uninstall.md +128 -0
- package/docs/install/updating.md +142 -0
- package/docs/logging.md +389 -0
- package/docs/nav-tabs-underline.js +100 -0
- package/docs/network.md +69 -0
- package/docs/nodes/audio.md +191 -0
- package/docs/nodes/camera.md +162 -0
- package/docs/nodes/images.md +73 -0
- package/docs/nodes/index.md +408 -0
- package/docs/nodes/location-command.md +98 -0
- package/docs/nodes/media-understanding.md +432 -0
- package/docs/nodes/talk.md +92 -0
- package/docs/nodes/troubleshooting.md +123 -0
- package/docs/nodes/voicewake.md +66 -0
- package/docs/perplexity.md +181 -0
- package/docs/pi-dev.md +80 -0
- package/docs/pi.md +570 -0
- package/docs/platforms/android.md +244 -0
- package/docs/platforms/digitalocean.md +266 -0
- package/docs/platforms/index.md +55 -0
- package/docs/platforms/ios.md +223 -0
- package/docs/platforms/linux.md +100 -0
- package/docs/platforms/mac/bundled-gateway.md +75 -0
- package/docs/platforms/mac/canvas.md +125 -0
- package/docs/platforms/mac/child-process.md +69 -0
- package/docs/platforms/mac/dev-setup.md +107 -0
- package/docs/platforms/mac/health.md +34 -0
- package/docs/platforms/mac/icon.md +31 -0
- package/docs/platforms/mac/logging.md +57 -0
- package/docs/platforms/mac/menu-bar.md +81 -0
- package/docs/platforms/mac/peekaboo.md +65 -0
- package/docs/platforms/mac/permissions.md +50 -0
- package/docs/platforms/mac/remote.md +84 -0
- package/docs/platforms/mac/signing.md +47 -0
- package/docs/platforms/mac/skills.md +40 -0
- package/docs/platforms/mac/voice-overlay.md +60 -0
- package/docs/platforms/mac/voicewake.md +67 -0
- package/docs/platforms/mac/webchat.md +51 -0
- package/docs/platforms/mac/xpc.md +61 -0
- package/docs/platforms/macos.md +229 -0
- package/docs/platforms/oracle.md +305 -0
- package/docs/platforms/raspberry-pi.md +420 -0
- package/docs/platforms/windows.md +241 -0
- package/docs/plugins/agent-tools.md +10 -0
- package/docs/plugins/architecture.md +1609 -0
- package/docs/plugins/building-extensions.md +10 -0
- package/docs/plugins/building-plugins.md +319 -0
- package/docs/plugins/bundles.md +292 -0
- package/docs/plugins/community.md +149 -0
- package/docs/plugins/manifest.md +412 -0
- package/docs/plugins/sdk-channel-plugins.md +508 -0
- package/docs/plugins/sdk-entrypoints.md +210 -0
- package/docs/plugins/sdk-migration.md +359 -0
- package/docs/plugins/sdk-overview.md +475 -0
- package/docs/plugins/sdk-provider-plugins.md +712 -0
- package/docs/plugins/sdk-runtime.md +381 -0
- package/docs/plugins/sdk-setup.md +516 -0
- package/docs/plugins/sdk-testing.md +263 -0
- package/docs/plugins/voice-call.md +466 -0
- package/docs/plugins/zalouser.md +78 -0
- package/docs/prose.md +134 -0
- package/docs/providers/anthropic.md +402 -0
- package/docs/providers/bedrock-mantle.md +91 -0
- package/docs/providers/bedrock.md +273 -0
- package/docs/providers/chutes.md +103 -0
- package/docs/providers/claude-max-api-proxy.md +163 -0
- package/docs/providers/cloudflare-ai-gateway.md +71 -0
- package/docs/providers/deepgram.md +93 -0
- package/docs/providers/deepseek.md +53 -0
- package/docs/providers/fireworks.md +69 -0
- package/docs/providers/github-copilot.md +80 -0
- package/docs/providers/glm.md +68 -0
- package/docs/providers/google.md +149 -0
- package/docs/providers/groq.md +105 -0
- package/docs/providers/huggingface.md +193 -0
- package/docs/providers/index.md +81 -0
- package/docs/providers/kilocode.md +89 -0
- package/docs/providers/litellm.md +159 -0
- package/docs/providers/minimax.md +281 -0
- package/docs/providers/mistral.md +68 -0
- package/docs/providers/models.md +56 -0
- package/docs/providers/moonshot.md +224 -0
- package/docs/providers/nvidia.md +58 -0
- package/docs/providers/ollama.md +379 -0
- package/docs/providers/openai.md +472 -0
- package/docs/providers/opencode-go.md +45 -0
- package/docs/providers/opencode.md +68 -0
- package/docs/providers/openrouter.md +59 -0
- package/docs/providers/perplexity-provider.md +62 -0
- package/docs/providers/qianfan.md +90 -0
- package/docs/providers/qwen.md +128 -0
- package/docs/providers/qwen_modelstudio.md +137 -0
- package/docs/providers/sglang.md +115 -0
- package/docs/providers/stepfun.md +152 -0
- package/docs/providers/synthetic.md +101 -0
- package/docs/providers/together.md +70 -0
- package/docs/providers/venice.md +282 -0
- package/docs/providers/vercel-ai-gateway.md +60 -0
- package/docs/providers/vllm.md +103 -0
- package/docs/providers/volcengine.md +94 -0
- package/docs/providers/xai.md +94 -0
- package/docs/providers/xiaomi.md +89 -0
- package/docs/providers/zai.md +75 -0
- package/docs/reference/AGENTS.default.md +126 -0
- package/docs/reference/RELEASING.md +138 -0
- package/docs/reference/api-usage-costs.md +198 -0
- package/docs/reference/credits.md +30 -0
- package/docs/reference/device-models.md +47 -0
- package/docs/reference/memory-config.md +421 -0
- package/docs/reference/prompt-caching.md +344 -0
- package/docs/reference/rpc.md +43 -0
- package/docs/reference/secretref-credential-surface.md +148 -0
- package/docs/reference/secretref-user-supplied-credentials-matrix.json +607 -0
- package/docs/reference/session-management-compaction.md +352 -0
- package/docs/reference/templates/AGENTS.dev.md +84 -0
- package/docs/reference/templates/AGENTS.md +219 -0
- package/docs/reference/templates/BOOT.md +12 -0
- package/docs/reference/templates/BOOTSTRAP.md +62 -0
- package/docs/reference/templates/CLAUDE.md +1 -0
- package/docs/reference/templates/HEARTBEAT.md +14 -0
- package/docs/reference/templates/IDENTITY.dev.md +48 -0
- package/docs/reference/templates/IDENTITY.md +30 -0
- package/docs/reference/templates/SOUL.dev.md +77 -0
- package/docs/reference/templates/SOUL.md +45 -0
- package/docs/reference/templates/TOOLS.dev.md +25 -0
- package/docs/reference/templates/TOOLS.md +47 -0
- package/docs/reference/templates/USER.dev.md +19 -0
- package/docs/reference/templates/USER.md +24 -0
- package/docs/reference/test.md +119 -0
- package/docs/reference/token-use.md +197 -0
- package/docs/reference/transcript-hygiene.md +151 -0
- package/docs/reference/wizard.md +245 -0
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +98 -0
- package/docs/security/THREAT-MODEL-ATLAS.md +608 -0
- package/docs/security/formal-verification.md +167 -0
- package/docs/snippets/plugin-publish/minimal-openclaw.plugin.json +9 -0
- package/docs/snippets/plugin-publish/minimal-package.json +16 -0
- package/docs/start/bootstrapping.md +41 -0
- package/docs/start/docs-directory.md +67 -0
- package/docs/start/getting-started.md +148 -0
- package/docs/start/hubs.md +199 -0
- package/docs/start/lore.md +219 -0
- package/docs/start/onboarding-overview.md +69 -0
- package/docs/start/onboarding.md +92 -0
- package/docs/start/openclaw.md +225 -0
- package/docs/start/quickstart.md +22 -0
- package/docs/start/setup.md +172 -0
- package/docs/start/showcase.md +418 -0
- package/docs/start/wizard-cli-automation.md +233 -0
- package/docs/start/wizard-cli-reference.md +324 -0
- package/docs/start/wizard.md +127 -0
- package/docs/style.css +37 -0
- package/docs/tools/acp-agents.md +837 -0
- package/docs/tools/agent-send.md +100 -0
- package/docs/tools/apply-patch.md +52 -0
- package/docs/tools/brave-search.md +107 -0
- package/docs/tools/browser-linux-troubleshooting.md +145 -0
- package/docs/tools/browser-login.md +73 -0
- package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +221 -0
- package/docs/tools/browser.md +890 -0
- package/docs/tools/btw.md +142 -0
- package/docs/tools/capability-cookbook.md +119 -0
- package/docs/tools/clawhub.md +348 -0
- package/docs/tools/code-execution.md +90 -0
- package/docs/tools/creating-skills.md +119 -0
- package/docs/tools/diffs.md +434 -0
- package/docs/tools/duckduckgo-search.md +102 -0
- package/docs/tools/elevated.md +116 -0
- package/docs/tools/exa-search.md +127 -0
- package/docs/tools/exec-approvals.md +635 -0
- package/docs/tools/exec.md +237 -0
- package/docs/tools/firecrawl.md +147 -0
- package/docs/tools/gemini-search.md +98 -0
- package/docs/tools/grok-search.md +102 -0
- package/docs/tools/image-generation.md +139 -0
- package/docs/tools/index.md +174 -0
- package/docs/tools/kimi-search.md +98 -0
- package/docs/tools/llm-task.md +119 -0
- package/docs/tools/lobster.md +348 -0
- package/docs/tools/loop-detection.md +100 -0
- package/docs/tools/minimax-search.md +99 -0
- package/docs/tools/multi-agent-sandbox-tools.md +373 -0
- package/docs/tools/ollama-search.md +100 -0
- package/docs/tools/pdf.md +176 -0
- package/docs/tools/perplexity-search.md +185 -0
- package/docs/tools/plugin.md +348 -0
- package/docs/tools/reactions.md +78 -0
- package/docs/tools/searxng-search.md +132 -0
- package/docs/tools/skills-config.md +133 -0
- package/docs/tools/skills.md +377 -0
- package/docs/tools/slash-commands.md +322 -0
- package/docs/tools/subagents.md +341 -0
- package/docs/tools/tavily.md +129 -0
- package/docs/tools/thinking.md +102 -0
- package/docs/tools/tts.md +452 -0
- package/docs/tools/web-fetch.md +159 -0
- package/docs/tools/web.md +417 -0
- package/docs/tts.md +452 -0
- package/docs/vps.md +115 -0
- package/docs/web/control-ui.md +318 -0
- package/docs/web/dashboard.md +93 -0
- package/docs/web/index.md +126 -0
- package/docs/web/tui.md +176 -0
- package/docs/web/webchat.md +77 -0
- package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
- package/docs/whatsapp-openclaw.jpg +0 -0
- package/durar.mjs +180 -0
- package/package.json +1259 -0
- package/scripts/npm-runner.mjs +111 -0
- package/scripts/postinstall-bundled-plugins.mjs +188 -0
- package/skills/1password/SKILL.md +70 -0
- package/skills/1password/references/cli-examples.md +29 -0
- package/skills/1password/references/get-started.md +17 -0
- package/skills/apple-notes/SKILL.md +77 -0
- package/skills/apple-reminders/SKILL.md +118 -0
- package/skills/bear-notes/SKILL.md +107 -0
- package/skills/blogwatcher/SKILL.md +69 -0
- package/skills/blucli/SKILL.md +47 -0
- package/skills/bluebubbles/SKILL.md +131 -0
- package/skills/camsnap/SKILL.md +45 -0
- package/skills/canvas/SKILL.md +199 -0
- package/skills/clawhub/SKILL.md +77 -0
- package/skills/coding-agent/SKILL.md +316 -0
- package/skills/discord/SKILL.md +197 -0
- package/skills/eightctl/SKILL.md +50 -0
- package/skills/gemini/SKILL.md +43 -0
- package/skills/gh-issues/SKILL.md +885 -0
- package/skills/gifgrep/SKILL.md +79 -0
- package/skills/github/SKILL.md +163 -0
- package/skills/gog/SKILL.md +116 -0
- package/skills/goplaces/SKILL.md +52 -0
- package/skills/healthcheck/SKILL.md +245 -0
- package/skills/himalaya/SKILL.md +257 -0
- package/skills/himalaya/references/configuration.md +184 -0
- package/skills/himalaya/references/message-composition.md +199 -0
- package/skills/imsg/SKILL.md +122 -0
- package/skills/mcporter/SKILL.md +61 -0
- package/skills/model-usage/SKILL.md +69 -0
- package/skills/model-usage/references/codexbar-cli.md +33 -0
- package/skills/model-usage/scripts/model_usage.py +320 -0
- package/skills/model-usage/scripts/test_model_usage.py +40 -0
- package/skills/nano-pdf/SKILL.md +38 -0
- package/skills/node-connect/SKILL.md +142 -0
- package/skills/notion/SKILL.md +174 -0
- package/skills/obsidian/SKILL.md +81 -0
- package/skills/openai-whisper/SKILL.md +38 -0
- package/skills/openai-whisper-api/SKILL.md +62 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +88 -0
- package/skills/openhue/SKILL.md +112 -0
- package/skills/oracle/SKILL.md +125 -0
- package/skills/ordercli/SKILL.md +78 -0
- package/skills/peekaboo/SKILL.md +190 -0
- package/skills/sag/SKILL.md +87 -0
- package/skills/session-logs/SKILL.md +151 -0
- package/skills/sherpa-onnx-tts/SKILL.md +109 -0
- package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
- package/skills/skill-creator/SKILL.md +372 -0
- package/skills/skill-creator/license.txt +202 -0
- package/skills/skill-creator/scripts/init_skill.py +378 -0
- package/skills/skill-creator/scripts/package_skill.py +139 -0
- package/skills/skill-creator/scripts/quick_validate.py +159 -0
- package/skills/skill-creator/scripts/test_package_skill.py +160 -0
- package/skills/skill-creator/scripts/test_quick_validate.py +72 -0
- package/skills/slack/SKILL.md +144 -0
- package/skills/songsee/SKILL.md +49 -0
- package/skills/sonoscli/SKILL.md +65 -0
- package/skills/spotify-player/SKILL.md +64 -0
- package/skills/summarize/SKILL.md +87 -0
- package/skills/taskflow/SKILL.md +149 -0
- package/skills/taskflow/examples/inbox-triage.lobster +33 -0
- package/skills/taskflow/examples/pr-intake.lobster +32 -0
- package/skills/taskflow-inbox-triage/SKILL.md +119 -0
- package/skills/things-mac/SKILL.md +86 -0
- package/skills/tmux/SKILL.md +170 -0
- package/skills/tmux/scripts/find-sessions.sh +112 -0
- package/skills/tmux/scripts/wait-for-text.sh +83 -0
- package/skills/trello/SKILL.md +108 -0
- package/skills/video-frames/SKILL.md +46 -0
- package/skills/video-frames/scripts/frame.sh +81 -0
- package/skills/voice-call/SKILL.md +45 -0
- package/skills/wacli/SKILL.md +72 -0
- package/skills/weather/SKILL.md +129 -0
- package/skills/xurl/SKILL.md +461 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Perplexity Search API and Sonar/OpenRouter compatibility for web_search"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to use Perplexity Search for web search
|
|
5
|
+
- You need PERPLEXITY_API_KEY or OPENROUTER_API_KEY setup
|
|
6
|
+
title: "Perplexity Search"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Perplexity Search API
|
|
10
|
+
|
|
11
|
+
Durar supports Perplexity Search API as a `web_search` provider.
|
|
12
|
+
It returns structured results with `title`, `url`, and `snippet` fields.
|
|
13
|
+
|
|
14
|
+
For compatibility, Durar also supports legacy Perplexity Sonar/OpenRouter setups.
|
|
15
|
+
If you use `OPENROUTER_API_KEY`, an `sk-or-...` key in `plugins.entries.perplexity.config.webSearch.apiKey`, or set `plugins.entries.perplexity.config.webSearch.baseUrl` / `model`, the provider switches to the chat-completions path and returns AI-synthesized answers with citations instead of structured Search API results.
|
|
16
|
+
|
|
17
|
+
## Getting a Perplexity API key
|
|
18
|
+
|
|
19
|
+
1. Create a Perplexity account at [perplexity.ai/settings/api](https://www.perplexity.ai/settings/api)
|
|
20
|
+
2. Generate an API key in the dashboard
|
|
21
|
+
3. Store the key in config or set `PERPLEXITY_API_KEY` in the Gateway environment.
|
|
22
|
+
|
|
23
|
+
## OpenRouter compatibility
|
|
24
|
+
|
|
25
|
+
If you were already using OpenRouter for Perplexity Sonar, keep `provider: "perplexity"` and set `OPENROUTER_API_KEY` in the Gateway environment, or store an `sk-or-...` key in `plugins.entries.perplexity.config.webSearch.apiKey`.
|
|
26
|
+
|
|
27
|
+
Optional compatibility controls:
|
|
28
|
+
|
|
29
|
+
- `plugins.entries.perplexity.config.webSearch.baseUrl`
|
|
30
|
+
- `plugins.entries.perplexity.config.webSearch.model`
|
|
31
|
+
|
|
32
|
+
## Config examples
|
|
33
|
+
|
|
34
|
+
### Native Perplexity Search API
|
|
35
|
+
|
|
36
|
+
```json5
|
|
37
|
+
{
|
|
38
|
+
plugins: {
|
|
39
|
+
entries: {
|
|
40
|
+
perplexity: {
|
|
41
|
+
config: {
|
|
42
|
+
webSearch: {
|
|
43
|
+
apiKey: "pplx-...",
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
tools: {
|
|
50
|
+
web: {
|
|
51
|
+
search: {
|
|
52
|
+
provider: "perplexity",
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### OpenRouter / Sonar compatibility
|
|
60
|
+
|
|
61
|
+
```json5
|
|
62
|
+
{
|
|
63
|
+
plugins: {
|
|
64
|
+
entries: {
|
|
65
|
+
perplexity: {
|
|
66
|
+
config: {
|
|
67
|
+
webSearch: {
|
|
68
|
+
apiKey: "<openrouter-api-key>",
|
|
69
|
+
baseUrl: "https://openrouter.ai/api/v1",
|
|
70
|
+
model: "perplexity/sonar-pro",
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
tools: {
|
|
77
|
+
web: {
|
|
78
|
+
search: {
|
|
79
|
+
provider: "perplexity",
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Where to set the key
|
|
87
|
+
|
|
88
|
+
**Via config:** run `Durar configure --section web`. It stores the key in
|
|
89
|
+
`~/.Durar/Durar.json` under `plugins.entries.perplexity.config.webSearch.apiKey`.
|
|
90
|
+
That field also accepts SecretRef objects.
|
|
91
|
+
|
|
92
|
+
**Via environment:** set `PERPLEXITY_API_KEY` or `OPENROUTER_API_KEY`
|
|
93
|
+
in the Gateway process environment. For a gateway install, put it in
|
|
94
|
+
`~/.Durar/.env` (or your service environment). See [Env vars](/help/faq#env-vars-and-env-loading).
|
|
95
|
+
|
|
96
|
+
If `provider: "perplexity"` is configured and the Perplexity key SecretRef is unresolved with no env fallback, startup/reload fails fast.
|
|
97
|
+
|
|
98
|
+
## Tool parameters
|
|
99
|
+
|
|
100
|
+
These parameters apply to the native Perplexity Search API path.
|
|
101
|
+
|
|
102
|
+
| Parameter | Description |
|
|
103
|
+
| --------------------- | ---------------------------------------------------- |
|
|
104
|
+
| `query` | Search query (required) |
|
|
105
|
+
| `count` | Number of results to return (1-10, default: 5) |
|
|
106
|
+
| `country` | 2-letter ISO country code (e.g., "US", "DE") |
|
|
107
|
+
| `language` | ISO 639-1 language code (e.g., "en", "de", "fr") |
|
|
108
|
+
| `freshness` | Time filter: `day` (24h), `week`, `month`, or `year` |
|
|
109
|
+
| `date_after` | Only results published after this date (YYYY-MM-DD) |
|
|
110
|
+
| `date_before` | Only results published before this date (YYYY-MM-DD) |
|
|
111
|
+
| `domain_filter` | Domain allowlist/denylist array (max 20) |
|
|
112
|
+
| `max_tokens` | Total content budget (default: 25000, max: 1000000) |
|
|
113
|
+
| `max_tokens_per_page` | Per-page token limit (default: 2048) |
|
|
114
|
+
|
|
115
|
+
For the legacy Sonar/OpenRouter compatibility path:
|
|
116
|
+
|
|
117
|
+
- `query`, `count`, and `freshness` are accepted
|
|
118
|
+
- `count` is compatibility-only there; the response is still one synthesized
|
|
119
|
+
answer with citations rather than an N-result list
|
|
120
|
+
- Search API-only filters such as `country`, `language`, `date_after`,
|
|
121
|
+
`date_before`, `domain_filter`, `max_tokens`, and `max_tokens_per_page`
|
|
122
|
+
return explicit errors
|
|
123
|
+
|
|
124
|
+
**Examples:**
|
|
125
|
+
|
|
126
|
+
```javascript
|
|
127
|
+
// Country and language-specific search
|
|
128
|
+
await web_search({
|
|
129
|
+
query: "renewable energy",
|
|
130
|
+
country: "DE",
|
|
131
|
+
language: "de",
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
// Recent results (past week)
|
|
135
|
+
await web_search({
|
|
136
|
+
query: "AI news",
|
|
137
|
+
freshness: "week",
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
// Date range search
|
|
141
|
+
await web_search({
|
|
142
|
+
query: "AI developments",
|
|
143
|
+
date_after: "2024-01-01",
|
|
144
|
+
date_before: "2024-06-30",
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
// Domain filtering (allowlist)
|
|
148
|
+
await web_search({
|
|
149
|
+
query: "climate research",
|
|
150
|
+
domain_filter: ["nature.com", "science.org", ".edu"],
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
// Domain filtering (denylist - prefix with -)
|
|
154
|
+
await web_search({
|
|
155
|
+
query: "product reviews",
|
|
156
|
+
domain_filter: ["-reddit.com", "-pinterest.com"],
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
// More content extraction
|
|
160
|
+
await web_search({
|
|
161
|
+
query: "detailed AI research",
|
|
162
|
+
max_tokens: 50000,
|
|
163
|
+
max_tokens_per_page: 4096,
|
|
164
|
+
});
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Domain filter rules
|
|
168
|
+
|
|
169
|
+
- Maximum 20 domains per filter
|
|
170
|
+
- Cannot mix allowlist and denylist in the same request
|
|
171
|
+
- Use `-` prefix for denylist entries (e.g., `["-reddit.com"]`)
|
|
172
|
+
|
|
173
|
+
## Notes
|
|
174
|
+
|
|
175
|
+
- Perplexity Search API returns structured web search results (`title`, `url`, `snippet`)
|
|
176
|
+
- OpenRouter or explicit `plugins.entries.perplexity.config.webSearch.baseUrl` / `model` switches Perplexity back to Sonar chat completions for compatibility
|
|
177
|
+
- Sonar/OpenRouter compatibility returns one synthesized answer with citations, not structured result rows
|
|
178
|
+
- Results are cached for 15 minutes by default (configurable via `cacheTtlMinutes`)
|
|
179
|
+
|
|
180
|
+
## Related
|
|
181
|
+
|
|
182
|
+
- [Web Search overview](/tools/web) -- all providers and auto-detection
|
|
183
|
+
- [Perplexity Search API docs](https://docs.perplexity.ai/docs/search/quickstart) -- official Perplexity documentation
|
|
184
|
+
- [Brave Search](/tools/brave-search) -- structured results with country/language filters
|
|
185
|
+
- [Exa Search](/tools/exa-search) -- neural search with content extraction
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Install, configure, and manage Durar plugins"
|
|
3
|
+
read_when:
|
|
4
|
+
- Installing or configuring plugins
|
|
5
|
+
- Understanding plugin discovery and load rules
|
|
6
|
+
- Working with Codex/Claude-compatible plugin bundles
|
|
7
|
+
title: "Plugins"
|
|
8
|
+
sidebarTitle: "Install and Configure"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Plugins
|
|
12
|
+
|
|
13
|
+
Plugins extend Durar with new capabilities: channels, model providers,
|
|
14
|
+
tools, skills, speech, realtime transcription, realtime voice,
|
|
15
|
+
media-understanding, image generation, video generation, web fetch, web
|
|
16
|
+
search, and more. Some plugins are **core** (shipped with Durar), others
|
|
17
|
+
are **external** (published on npm by the community).
|
|
18
|
+
|
|
19
|
+
## Quick start
|
|
20
|
+
|
|
21
|
+
<Steps>
|
|
22
|
+
<Step title="See what is loaded">
|
|
23
|
+
```bash
|
|
24
|
+
Durar plugins list
|
|
25
|
+
```
|
|
26
|
+
</Step>
|
|
27
|
+
|
|
28
|
+
<Step title="Install a plugin">
|
|
29
|
+
```bash
|
|
30
|
+
# From npm
|
|
31
|
+
Durar plugins install @Durar/voice-call
|
|
32
|
+
|
|
33
|
+
# From a local directory or archive
|
|
34
|
+
Durar plugins install ./my-plugin
|
|
35
|
+
Durar plugins install ./my-plugin.tgz
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
</Step>
|
|
39
|
+
|
|
40
|
+
<Step title="Restart the Gateway">
|
|
41
|
+
```bash
|
|
42
|
+
Durar gateway restart
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Then configure under `plugins.entries.\<id\>.config` in your config file.
|
|
46
|
+
|
|
47
|
+
</Step>
|
|
48
|
+
</Steps>
|
|
49
|
+
|
|
50
|
+
If you prefer chat-native control, enable `commands.plugins: true` and use:
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
/plugin install Durar Gateway:@Durar/voice-call
|
|
54
|
+
/plugin show voice-call
|
|
55
|
+
/plugin enable voice-call
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The install path uses the same resolver as the CLI: local path/archive, explicit
|
|
59
|
+
`Durar Gateway:<pkg>`, or bare package spec (Durar Gateway first, then npm fallback).
|
|
60
|
+
|
|
61
|
+
If config is invalid, install normally fails closed and points you at
|
|
62
|
+
`Durar doctor --fix`. The only recovery exception is a narrow bundled-plugin
|
|
63
|
+
reinstall path for plugins that opt into
|
|
64
|
+
`Durar.install.allowInvalidConfigRecovery`.
|
|
65
|
+
|
|
66
|
+
## Plugin types
|
|
67
|
+
|
|
68
|
+
Durar recognizes two plugin formats:
|
|
69
|
+
|
|
70
|
+
| Format | How it works | Examples |
|
|
71
|
+
| ---------- | ------------------------------------------------------------------ | ------------------------------------------------------ |
|
|
72
|
+
| **Native** | `Durar.plugin.json` + runtime module; executes in-process | Official plugins, community npm packages |
|
|
73
|
+
| **Bundle** | Codex/Claude/Cursor-compatible layout; mapped to Durar features | `.codex-plugin/`, `.claude-plugin/`, `.cursor-plugin/` |
|
|
74
|
+
|
|
75
|
+
Both show up under `Durar plugins list`. See [Plugin Bundles](/plugins/bundles) for bundle details.
|
|
76
|
+
|
|
77
|
+
If you are writing a native plugin, start with [Building Plugins](/plugins/building-plugins)
|
|
78
|
+
and the [Plugin SDK Overview](/plugins/sdk-overview).
|
|
79
|
+
|
|
80
|
+
## Official plugins
|
|
81
|
+
|
|
82
|
+
### Installable (npm)
|
|
83
|
+
|
|
84
|
+
| Plugin | Package | Docs |
|
|
85
|
+
| --------------- | ---------------------- | ------------------------------------ |
|
|
86
|
+
| Matrix | `@Durar/matrix` | [Matrix](/channels/matrix) |
|
|
87
|
+
| Microsoft Teams | `@Durar/msteams` | [Microsoft Teams](/channels/msteams) |
|
|
88
|
+
| Nostr | `@Durar/nostr` | [Nostr](/channels/nostr) |
|
|
89
|
+
| Voice Call | `@Durar/voice-call` | [Voice Call](/plugins/voice-call) |
|
|
90
|
+
| Zalo | `@Durar/zalo` | [Zalo](/channels/zalo) |
|
|
91
|
+
| Zalo Personal | `@Durar/zalouser` | [Zalo Personal](/plugins/zalouser) |
|
|
92
|
+
|
|
93
|
+
### Core (shipped with Durar)
|
|
94
|
+
|
|
95
|
+
<AccordionGroup>
|
|
96
|
+
<Accordion title="Model providers (enabled by default)">
|
|
97
|
+
`anthropic`, `byteplus`, `cloudflare-ai-gateway`, `github-copilot`, `google`,
|
|
98
|
+
`huggingface`, `kilocode`, `kimi-coding`, `minimax`, `mistral`, `qwen`,
|
|
99
|
+
`moonshot`, `nvidia`, `openai`, `opencode`, `opencode-go`, `openrouter`,
|
|
100
|
+
`qianfan`, `synthetic`, `together`, `venice`,
|
|
101
|
+
`vercel-ai-gateway`, `volcengine`, `xiaomi`, `zai`
|
|
102
|
+
</Accordion>
|
|
103
|
+
|
|
104
|
+
<Accordion title="Memory plugins">
|
|
105
|
+
- `memory-core` — bundled memory search (default via `plugins.slots.memory`)
|
|
106
|
+
- `memory-lancedb` — install-on-demand long-term memory with auto-recall/capture (set `plugins.slots.memory = "memory-lancedb"`)
|
|
107
|
+
</Accordion>
|
|
108
|
+
|
|
109
|
+
<Accordion title="Speech providers (enabled by default)">
|
|
110
|
+
`elevenlabs`, `microsoft`
|
|
111
|
+
</Accordion>
|
|
112
|
+
|
|
113
|
+
<Accordion title="Other">
|
|
114
|
+
- `browser` — bundled browser plugin for the browser tool, `Durar browser` CLI, `browser.request` gateway method, browser runtime, and default browser control service (enabled by default; disable before replacing it)
|
|
115
|
+
- `copilot-proxy` — VS Code Copilot Proxy bridge (disabled by default)
|
|
116
|
+
</Accordion>
|
|
117
|
+
</AccordionGroup>
|
|
118
|
+
|
|
119
|
+
Looking for third-party plugins? See [Community Plugins](/plugins/community).
|
|
120
|
+
|
|
121
|
+
## Configuration
|
|
122
|
+
|
|
123
|
+
```json5
|
|
124
|
+
{
|
|
125
|
+
plugins: {
|
|
126
|
+
enabled: true,
|
|
127
|
+
allow: ["voice-call"],
|
|
128
|
+
deny: ["untrusted-plugin"],
|
|
129
|
+
load: { paths: ["~/Projects/oss/voice-call-extension"] },
|
|
130
|
+
entries: {
|
|
131
|
+
"voice-call": { enabled: true, config: { provider: "twilio" } },
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
| Field | Description |
|
|
138
|
+
| ---------------- | --------------------------------------------------------- |
|
|
139
|
+
| `enabled` | Master toggle (default: `true`) |
|
|
140
|
+
| `allow` | Plugin allowlist (optional) |
|
|
141
|
+
| `deny` | Plugin denylist (optional; deny wins) |
|
|
142
|
+
| `load.paths` | Extra plugin files/directories |
|
|
143
|
+
| `slots` | Exclusive slot selectors (e.g. `memory`, `contextEngine`) |
|
|
144
|
+
| `entries.\<id\>` | Per-plugin toggles + config |
|
|
145
|
+
|
|
146
|
+
Config changes **require a gateway restart**. If the Gateway is running with config
|
|
147
|
+
watch + in-process restart enabled (the default `Durar gateway` path), that
|
|
148
|
+
restart is usually performed automatically a moment after the config write lands.
|
|
149
|
+
|
|
150
|
+
<Accordion title="Plugin states: disabled vs missing vs invalid">
|
|
151
|
+
- **Disabled**: plugin exists but enablement rules turned it off. Config is preserved.
|
|
152
|
+
- **Missing**: config references a plugin id that discovery did not find.
|
|
153
|
+
- **Invalid**: plugin exists but its config does not match the declared schema.
|
|
154
|
+
</Accordion>
|
|
155
|
+
|
|
156
|
+
## Discovery and precedence
|
|
157
|
+
|
|
158
|
+
Durar scans for plugins in this order (first match wins):
|
|
159
|
+
|
|
160
|
+
<Steps>
|
|
161
|
+
<Step title="Config paths">
|
|
162
|
+
`plugins.load.paths` — explicit file or directory paths.
|
|
163
|
+
</Step>
|
|
164
|
+
|
|
165
|
+
<Step title="Workspace extensions">
|
|
166
|
+
`\<workspace\>/.Durar/<plugin-root>/*.ts` and `\<workspace\>/.Durar/<plugin-root>/*/index.ts`.
|
|
167
|
+
</Step>
|
|
168
|
+
|
|
169
|
+
<Step title="Global extensions">
|
|
170
|
+
`~/.Durar/<plugin-root>/*.ts` and `~/.Durar/<plugin-root>/*/index.ts`.
|
|
171
|
+
</Step>
|
|
172
|
+
|
|
173
|
+
<Step title="Bundled plugins">
|
|
174
|
+
Shipped with Durar. Many are enabled by default (model providers, speech).
|
|
175
|
+
Others require explicit enablement.
|
|
176
|
+
</Step>
|
|
177
|
+
</Steps>
|
|
178
|
+
|
|
179
|
+
### Enablement rules
|
|
180
|
+
|
|
181
|
+
- `plugins.enabled: false` disables all plugins
|
|
182
|
+
- `plugins.deny` always wins over allow
|
|
183
|
+
- `plugins.entries.\<id\>.enabled: false` disables that plugin
|
|
184
|
+
- Workspace-origin plugins are **disabled by default** (must be explicitly enabled)
|
|
185
|
+
- Bundled plugins follow the built-in default-on set unless overridden
|
|
186
|
+
- Exclusive slots can force-enable the selected plugin for that slot
|
|
187
|
+
|
|
188
|
+
## Plugin slots (exclusive categories)
|
|
189
|
+
|
|
190
|
+
Some categories are exclusive (only one active at a time):
|
|
191
|
+
|
|
192
|
+
```json5
|
|
193
|
+
{
|
|
194
|
+
plugins: {
|
|
195
|
+
slots: {
|
|
196
|
+
memory: "memory-core", // or "none" to disable
|
|
197
|
+
contextEngine: "legacy", // or a plugin id
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
| Slot | What it controls | Default |
|
|
204
|
+
| --------------- | --------------------- | ------------------- |
|
|
205
|
+
| `memory` | Active memory plugin | `memory-core` |
|
|
206
|
+
| `contextEngine` | Active context engine | `legacy` (built-in) |
|
|
207
|
+
|
|
208
|
+
## CLI reference
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
Durar plugins list # compact inventory
|
|
212
|
+
Durar plugins list --enabled # only loaded plugins
|
|
213
|
+
Durar plugins list --verbose # per-plugin detail lines
|
|
214
|
+
Durar plugins list --json # machine-readable inventory
|
|
215
|
+
Durar plugins inspect <id> # deep detail
|
|
216
|
+
Durar plugins inspect <id> --json # machine-readable
|
|
217
|
+
Durar plugins inspect --all # fleet-wide table
|
|
218
|
+
Durar plugins info <id> # inspect alias
|
|
219
|
+
Durar plugins doctor # diagnostics
|
|
220
|
+
|
|
221
|
+
Durar plugins install <package> # install (Durar Gateway first, then npm)
|
|
222
|
+
Durar plugins install Durar Gateway:<pkg> # install from Durar Gateway only
|
|
223
|
+
Durar plugins install <spec> --force # overwrite existing install
|
|
224
|
+
Durar plugins install <path> # install from local path
|
|
225
|
+
Durar plugins install -l <path> # link (no copy) for dev
|
|
226
|
+
Durar plugins install <plugin> --marketplace <source>
|
|
227
|
+
Durar plugins install <plugin> --marketplace https://github.com/<owner>/<repo>
|
|
228
|
+
Durar plugins install <spec> --pin # record exact resolved npm spec
|
|
229
|
+
Durar plugins install <spec> --dangerously-force-unsafe-install
|
|
230
|
+
Durar plugins update <id> # update one plugin
|
|
231
|
+
Durar plugins update <id> --dangerously-force-unsafe-install
|
|
232
|
+
Durar plugins update --all # update all
|
|
233
|
+
Durar plugins uninstall <id> # remove config/install records
|
|
234
|
+
Durar plugins uninstall <id> --keep-files
|
|
235
|
+
Durar plugins marketplace list <source>
|
|
236
|
+
Durar plugins marketplace list <source> --json
|
|
237
|
+
|
|
238
|
+
Durar plugins enable <id>
|
|
239
|
+
Durar plugins disable <id>
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Bundled plugins ship with Durar. Many are enabled by default (for example
|
|
243
|
+
bundled model providers, bundled speech providers, and the bundled browser
|
|
244
|
+
plugin). Other bundled plugins still need `Durar plugins enable <id>`.
|
|
245
|
+
|
|
246
|
+
`--force` overwrites an existing installed plugin or hook pack in place.
|
|
247
|
+
It is not supported with `--link`, which reuses the source path instead of
|
|
248
|
+
copying over a managed install target.
|
|
249
|
+
|
|
250
|
+
`--pin` is npm-only. It is not supported with `--marketplace`, because
|
|
251
|
+
marketplace installs persist marketplace source metadata instead of an npm spec.
|
|
252
|
+
|
|
253
|
+
`--dangerously-force-unsafe-install` is a break-glass override for false
|
|
254
|
+
positives from the built-in dangerous-code scanner. It allows plugin installs
|
|
255
|
+
and plugin updates to continue past built-in `critical` findings, but it still
|
|
256
|
+
does not bypass plugin `before_install` policy blocks or scan-failure blocking.
|
|
257
|
+
|
|
258
|
+
This CLI flag applies to plugin install/update flows only. Gateway-backed skill
|
|
259
|
+
dependency installs use the matching `dangerouslyForceUnsafeInstall` request
|
|
260
|
+
override instead, while `Durar skills install` remains the separate Durar Gateway
|
|
261
|
+
skill download/install flow.
|
|
262
|
+
|
|
263
|
+
Compatible bundles participate in the same plugin list/inspect/enable/disable
|
|
264
|
+
flow. Current runtime support includes bundle skills, Claude command-skills,
|
|
265
|
+
Claude `settings.json` defaults, Claude `.lsp.json` and manifest-declared
|
|
266
|
+
`lspServers` defaults, Cursor command-skills, and compatible Codex hook
|
|
267
|
+
directories.
|
|
268
|
+
|
|
269
|
+
`Durar plugins inspect <id>` also reports detected bundle capabilities plus
|
|
270
|
+
supported or unsupported MCP and LSP server entries for bundle-backed plugins.
|
|
271
|
+
|
|
272
|
+
Marketplace sources can be a Claude known-marketplace name from
|
|
273
|
+
`~/.claude/plugins/known_marketplaces.json`, a local marketplace root or
|
|
274
|
+
`marketplace.json` path, a GitHub shorthand like `owner/repo`, a GitHub repo
|
|
275
|
+
URL, or a git URL. For remote marketplaces, plugin entries must stay inside the
|
|
276
|
+
cloned marketplace repo and use relative path sources only.
|
|
277
|
+
|
|
278
|
+
See [`Durar plugins` CLI reference](/cli/plugins) for full details.
|
|
279
|
+
|
|
280
|
+
## Plugin API overview
|
|
281
|
+
|
|
282
|
+
Native plugins export an entry object that exposes `register(api)`. Older
|
|
283
|
+
plugins may still use `activate(api)` as a legacy alias, but new plugins should
|
|
284
|
+
use `register`.
|
|
285
|
+
|
|
286
|
+
```typescript
|
|
287
|
+
export default definePluginEntry({
|
|
288
|
+
id: "my-plugin",
|
|
289
|
+
name: "My Plugin",
|
|
290
|
+
register(api) {
|
|
291
|
+
api.registerProvider({
|
|
292
|
+
/* ... */
|
|
293
|
+
});
|
|
294
|
+
api.registerTool({
|
|
295
|
+
/* ... */
|
|
296
|
+
});
|
|
297
|
+
api.registerChannel({
|
|
298
|
+
/* ... */
|
|
299
|
+
});
|
|
300
|
+
},
|
|
301
|
+
});
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
Durar loads the entry object and calls `register(api)` during plugin
|
|
305
|
+
activation. The loader still falls back to `activate(api)` for older plugins,
|
|
306
|
+
but bundled plugins and new external plugins should treat `register` as the
|
|
307
|
+
public contract.
|
|
308
|
+
|
|
309
|
+
Common registration methods:
|
|
310
|
+
|
|
311
|
+
| Method | What it registers |
|
|
312
|
+
| --------------------------------------- | --------------------------- |
|
|
313
|
+
| `registerProvider` | Model provider (LLM) |
|
|
314
|
+
| `registerChannel` | Chat channel |
|
|
315
|
+
| `registerTool` | Agent tool |
|
|
316
|
+
| `registerHook` / `on(...)` | Lifecycle hooks |
|
|
317
|
+
| `registerSpeechProvider` | Text-to-speech / STT |
|
|
318
|
+
| `registerRealtimeTranscriptionProvider` | Streaming STT |
|
|
319
|
+
| `registerRealtimeVoiceProvider` | Duplex realtime voice |
|
|
320
|
+
| `registerMediaUnderstandingProvider` | Image/audio analysis |
|
|
321
|
+
| `registerImageGenerationProvider` | Image generation |
|
|
322
|
+
| `registerVideoGenerationProvider` | Video generation |
|
|
323
|
+
| `registerWebFetchProvider` | Web fetch / scrape provider |
|
|
324
|
+
| `registerWebSearchProvider` | Web search |
|
|
325
|
+
| `registerHttpRoute` | HTTP endpoint |
|
|
326
|
+
| `registerCommand` / `registerCli` | CLI commands |
|
|
327
|
+
| `registerContextEngine` | Context engine |
|
|
328
|
+
| `registerService` | Background service |
|
|
329
|
+
|
|
330
|
+
Hook guard behavior for typed lifecycle hooks:
|
|
331
|
+
|
|
332
|
+
- `before_tool_call`: `{ block: true }` is terminal; lower-priority handlers are skipped.
|
|
333
|
+
- `before_tool_call`: `{ block: false }` is a no-op and does not clear an earlier block.
|
|
334
|
+
- `before_install`: `{ block: true }` is terminal; lower-priority handlers are skipped.
|
|
335
|
+
- `before_install`: `{ block: false }` is a no-op and does not clear an earlier block.
|
|
336
|
+
- `message_sending`: `{ cancel: true }` is terminal; lower-priority handlers are skipped.
|
|
337
|
+
- `message_sending`: `{ cancel: false }` is a no-op and does not clear an earlier cancel.
|
|
338
|
+
|
|
339
|
+
For full typed hook behavior, see [SDK Overview](/plugins/sdk-overview#hook-decision-semantics).
|
|
340
|
+
|
|
341
|
+
## Related
|
|
342
|
+
|
|
343
|
+
- [Building Plugins](/plugins/building-plugins) — create your own plugin
|
|
344
|
+
- [Plugin Bundles](/plugins/bundles) — Codex/Claude/Cursor bundle compatibility
|
|
345
|
+
- [Plugin Manifest](/plugins/manifest) — manifest schema
|
|
346
|
+
- [Registering Tools](/plugins/building-plugins#registering-agent-tools) — add agent tools in a plugin
|
|
347
|
+
- [Plugin Internals](/plugins/architecture) — capability model and load pipeline
|
|
348
|
+
- [Community Plugins](/plugins/community) — third-party listings
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Reaction tool semantics across all supported channels"
|
|
3
|
+
read_when:
|
|
4
|
+
- Working on reactions in any channel
|
|
5
|
+
- Understanding how emoji reactions differ across platforms
|
|
6
|
+
title: "Reactions"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Reactions
|
|
10
|
+
|
|
11
|
+
The agent can add and remove emoji reactions on messages using the `message`
|
|
12
|
+
tool with the `react` action. Reaction behavior varies by channel.
|
|
13
|
+
|
|
14
|
+
## How it works
|
|
15
|
+
|
|
16
|
+
```json
|
|
17
|
+
{
|
|
18
|
+
"action": "react",
|
|
19
|
+
"messageId": "msg-123",
|
|
20
|
+
"emoji": "thumbsup"
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
- `emoji` is required when adding a reaction.
|
|
25
|
+
- Set `emoji` to an empty string (`""`) to remove the bot's reaction(s).
|
|
26
|
+
- Set `remove: true` to remove a specific emoji (requires non-empty `emoji`).
|
|
27
|
+
|
|
28
|
+
## Channel behavior
|
|
29
|
+
|
|
30
|
+
<AccordionGroup>
|
|
31
|
+
<Accordion title="Discord and Slack">
|
|
32
|
+
- Empty `emoji` removes all of the bot's reactions on the message.
|
|
33
|
+
- `remove: true` removes just the specified emoji.
|
|
34
|
+
</Accordion>
|
|
35
|
+
|
|
36
|
+
<Accordion title="Google Chat">
|
|
37
|
+
- Empty `emoji` removes the app's reactions on the message.
|
|
38
|
+
- `remove: true` removes just the specified emoji.
|
|
39
|
+
</Accordion>
|
|
40
|
+
|
|
41
|
+
<Accordion title="Telegram">
|
|
42
|
+
- Empty `emoji` removes the bot's reactions.
|
|
43
|
+
- `remove: true` also removes reactions but still requires a non-empty `emoji` for tool validation.
|
|
44
|
+
</Accordion>
|
|
45
|
+
|
|
46
|
+
<Accordion title="WhatsApp">
|
|
47
|
+
- Empty `emoji` removes the bot reaction.
|
|
48
|
+
- `remove: true` maps to empty emoji internally (still requires `emoji` in the tool call).
|
|
49
|
+
</Accordion>
|
|
50
|
+
|
|
51
|
+
<Accordion title="Zalo Personal (zalouser)">
|
|
52
|
+
- Requires non-empty `emoji`.
|
|
53
|
+
- `remove: true` removes that specific emoji reaction.
|
|
54
|
+
</Accordion>
|
|
55
|
+
|
|
56
|
+
<Accordion title="Feishu/Lark">
|
|
57
|
+
- Use the `feishu_reaction` tool with actions `add`, `remove`, and `list`.
|
|
58
|
+
- Add/remove requires `emoji_type`; remove also requires `reaction_id`.
|
|
59
|
+
</Accordion>
|
|
60
|
+
|
|
61
|
+
<Accordion title="Signal">
|
|
62
|
+
- Inbound reaction notifications are controlled by `channels.signal.reactionNotifications`: `"off"` disables them, `"own"` (default) emits events when users react to bot messages, and `"all"` emits events for all reactions.
|
|
63
|
+
</Accordion>
|
|
64
|
+
</AccordionGroup>
|
|
65
|
+
|
|
66
|
+
## Reaction level
|
|
67
|
+
|
|
68
|
+
Per-channel `reactionLevel` config controls how broadly the agent uses reactions. Values are typically `off`, `ack`, `minimal`, or `extensive`.
|
|
69
|
+
|
|
70
|
+
- [Telegram reactionLevel](/channels/telegram#reaction-notifications) — `channels.telegram.reactionLevel`
|
|
71
|
+
- [WhatsApp reactionLevel](/channels/whatsapp#reactions) — `channels.whatsapp.reactionLevel`
|
|
72
|
+
|
|
73
|
+
Set `reactionLevel` on individual channels to tune how actively the agent reacts to messages on each platform.
|
|
74
|
+
|
|
75
|
+
## Related
|
|
76
|
+
|
|
77
|
+
- [Agent Send](/tools/agent-send) — the `message` tool that includes `react`
|
|
78
|
+
- [Channels](/channels) — channel-specific configuration
|