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,252 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: IRC
|
|
3
|
+
summary: "IRC plugin setup, access controls, and troubleshooting"
|
|
4
|
+
read_when:
|
|
5
|
+
- You want to connect Durar to IRC channels or DMs
|
|
6
|
+
- You are configuring IRC allowlists, group policy, or mention gating
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# IRC
|
|
10
|
+
|
|
11
|
+
Use IRC when you want Durar in classic channels (`#room`) and direct messages.
|
|
12
|
+
IRC ships as an extension plugin, but it is configured in the main config under `channels.irc`.
|
|
13
|
+
|
|
14
|
+
## Quick start
|
|
15
|
+
|
|
16
|
+
1. Enable IRC config in `~/.Durar/Durar.json`.
|
|
17
|
+
2. Set at least:
|
|
18
|
+
|
|
19
|
+
```json5
|
|
20
|
+
{
|
|
21
|
+
channels: {
|
|
22
|
+
irc: {
|
|
23
|
+
enabled: true,
|
|
24
|
+
host: "irc.example.com",
|
|
25
|
+
port: 6697,
|
|
26
|
+
tls: true,
|
|
27
|
+
nick: "Durar-bot",
|
|
28
|
+
channels: ["#Durar"],
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Prefer a private IRC server for bot coordination. If you intentionally use a public IRC network, common choices include Libera.Chat, OFTC, and Snoonet. Avoid predictable public channels for bot or swarm backchannel traffic.
|
|
35
|
+
|
|
36
|
+
3. Start/restart gateway:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
Durar gateway run
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Security defaults
|
|
43
|
+
|
|
44
|
+
- `channels.irc.dmPolicy` defaults to `"pairing"`.
|
|
45
|
+
- `channels.irc.groupPolicy` defaults to `"allowlist"`.
|
|
46
|
+
- With `groupPolicy="allowlist"`, set `channels.irc.groups` to define allowed channels.
|
|
47
|
+
- Use TLS (`channels.irc.tls=true`) unless you intentionally accept plaintext transport.
|
|
48
|
+
|
|
49
|
+
## Access control
|
|
50
|
+
|
|
51
|
+
There are two separate “gates” for IRC channels:
|
|
52
|
+
|
|
53
|
+
1. **Channel access** (`groupPolicy` + `groups`): whether the bot accepts messages from a channel at all.
|
|
54
|
+
2. **Sender access** (`groupAllowFrom` / per-channel `groups["#channel"].allowFrom`): who is allowed to trigger the bot inside that channel.
|
|
55
|
+
|
|
56
|
+
Config keys:
|
|
57
|
+
|
|
58
|
+
- DM allowlist (DM sender access): `channels.irc.allowFrom`
|
|
59
|
+
- Group sender allowlist (channel sender access): `channels.irc.groupAllowFrom`
|
|
60
|
+
- Per-channel controls (channel + sender + mention rules): `channels.irc.groups["#channel"]`
|
|
61
|
+
- `channels.irc.groupPolicy="open"` allows unconfigured channels (**still mention-gated by default**)
|
|
62
|
+
|
|
63
|
+
Allowlist entries should use stable sender identities (`nick!user@host`).
|
|
64
|
+
Bare nick matching is mutable and only enabled when `channels.irc.dangerouslyAllowNameMatching: true`.
|
|
65
|
+
|
|
66
|
+
### Common gotcha: `allowFrom` is for DMs, not channels
|
|
67
|
+
|
|
68
|
+
If you see logs like:
|
|
69
|
+
|
|
70
|
+
- `irc: drop group sender alice!ident@host (policy=allowlist)`
|
|
71
|
+
|
|
72
|
+
…it means the sender wasn’t allowed for **group/channel** messages. Fix it by either:
|
|
73
|
+
|
|
74
|
+
- setting `channels.irc.groupAllowFrom` (global for all channels), or
|
|
75
|
+
- setting per-channel sender allowlists: `channels.irc.groups["#channel"].allowFrom`
|
|
76
|
+
|
|
77
|
+
Example (allow anyone in `#tuirc-dev` to talk to the bot):
|
|
78
|
+
|
|
79
|
+
```json5
|
|
80
|
+
{
|
|
81
|
+
channels: {
|
|
82
|
+
irc: {
|
|
83
|
+
groupPolicy: "allowlist",
|
|
84
|
+
groups: {
|
|
85
|
+
"#tuirc-dev": { allowFrom: ["*"] },
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Reply triggering (mentions)
|
|
93
|
+
|
|
94
|
+
Even if a channel is allowed (via `groupPolicy` + `groups`) and the sender is allowed, Durar defaults to **mention-gating** in group contexts.
|
|
95
|
+
|
|
96
|
+
That means you may see logs like `drop channel … (missing-mention)` unless the message includes a mention pattern that matches the bot.
|
|
97
|
+
|
|
98
|
+
To make the bot reply in an IRC channel **without needing a mention**, disable mention gating for that channel:
|
|
99
|
+
|
|
100
|
+
```json5
|
|
101
|
+
{
|
|
102
|
+
channels: {
|
|
103
|
+
irc: {
|
|
104
|
+
groupPolicy: "allowlist",
|
|
105
|
+
groups: {
|
|
106
|
+
"#tuirc-dev": {
|
|
107
|
+
requireMention: false,
|
|
108
|
+
allowFrom: ["*"],
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Or to allow **all** IRC channels (no per-channel allowlist) and still reply without mentions:
|
|
117
|
+
|
|
118
|
+
```json5
|
|
119
|
+
{
|
|
120
|
+
channels: {
|
|
121
|
+
irc: {
|
|
122
|
+
groupPolicy: "open",
|
|
123
|
+
groups: {
|
|
124
|
+
"*": { requireMention: false, allowFrom: ["*"] },
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Security note (recommended for public channels)
|
|
132
|
+
|
|
133
|
+
If you allow `allowFrom: ["*"]` in a public channel, anyone can prompt the bot.
|
|
134
|
+
To reduce risk, restrict tools for that channel.
|
|
135
|
+
|
|
136
|
+
### Same tools for everyone in the channel
|
|
137
|
+
|
|
138
|
+
```json5
|
|
139
|
+
{
|
|
140
|
+
channels: {
|
|
141
|
+
irc: {
|
|
142
|
+
groups: {
|
|
143
|
+
"#tuirc-dev": {
|
|
144
|
+
allowFrom: ["*"],
|
|
145
|
+
tools: {
|
|
146
|
+
deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Different tools per sender (owner gets more power)
|
|
156
|
+
|
|
157
|
+
Use `toolsBySender` to apply a stricter policy to `"*"` and a looser one to your nick:
|
|
158
|
+
|
|
159
|
+
```json5
|
|
160
|
+
{
|
|
161
|
+
channels: {
|
|
162
|
+
irc: {
|
|
163
|
+
groups: {
|
|
164
|
+
"#tuirc-dev": {
|
|
165
|
+
allowFrom: ["*"],
|
|
166
|
+
toolsBySender: {
|
|
167
|
+
"*": {
|
|
168
|
+
deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"],
|
|
169
|
+
},
|
|
170
|
+
"id:eigen": {
|
|
171
|
+
deny: ["gateway", "nodes", "cron"],
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Notes:
|
|
182
|
+
|
|
183
|
+
- `toolsBySender` keys should use `id:` for IRC sender identity values:
|
|
184
|
+
`id:eigen` or `id:eigen!~eigen@174.127.248.171` for stronger matching.
|
|
185
|
+
- Legacy unprefixed keys are still accepted and matched as `id:` only.
|
|
186
|
+
- The first matching sender policy wins; `"*"` is the wildcard fallback.
|
|
187
|
+
|
|
188
|
+
For more on group access vs mention-gating (and how they interact), see: [/channels/groups](/channels/groups).
|
|
189
|
+
|
|
190
|
+
## NickServ
|
|
191
|
+
|
|
192
|
+
To identify with NickServ after connect:
|
|
193
|
+
|
|
194
|
+
```json5
|
|
195
|
+
{
|
|
196
|
+
channels: {
|
|
197
|
+
irc: {
|
|
198
|
+
nickserv: {
|
|
199
|
+
enabled: true,
|
|
200
|
+
service: "NickServ",
|
|
201
|
+
password: "your-nickserv-password",
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Optional one-time registration on connect:
|
|
209
|
+
|
|
210
|
+
```json5
|
|
211
|
+
{
|
|
212
|
+
channels: {
|
|
213
|
+
irc: {
|
|
214
|
+
nickserv: {
|
|
215
|
+
register: true,
|
|
216
|
+
registerEmail: "bot@example.com",
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
},
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Disable `register` after the nick is registered to avoid repeated REGISTER attempts.
|
|
224
|
+
|
|
225
|
+
## Environment variables
|
|
226
|
+
|
|
227
|
+
Default account supports:
|
|
228
|
+
|
|
229
|
+
- `IRC_HOST`
|
|
230
|
+
- `IRC_PORT`
|
|
231
|
+
- `IRC_TLS`
|
|
232
|
+
- `IRC_NICK`
|
|
233
|
+
- `IRC_USERNAME`
|
|
234
|
+
- `IRC_REALNAME`
|
|
235
|
+
- `IRC_PASSWORD`
|
|
236
|
+
- `IRC_CHANNELS` (comma-separated)
|
|
237
|
+
- `IRC_NICKSERV_PASSWORD`
|
|
238
|
+
- `IRC_NICKSERV_REGISTER_EMAIL`
|
|
239
|
+
|
|
240
|
+
## Troubleshooting
|
|
241
|
+
|
|
242
|
+
- If the bot connects but never replies in channels, verify `channels.irc.groups` **and** whether mention-gating is dropping messages (`missing-mention`). If you want it to reply without pings, set `requireMention:false` for the channel.
|
|
243
|
+
- If login fails, verify nick availability and server password.
|
|
244
|
+
- If TLS fails on a custom network, verify host/port and certificate setup.
|
|
245
|
+
|
|
246
|
+
## Related
|
|
247
|
+
|
|
248
|
+
- [Channels Overview](/channels) — all supported channels
|
|
249
|
+
- [Pairing](/channels/pairing) — DM authentication and pairing flow
|
|
250
|
+
- [Groups](/channels/groups) — group chat behavior and mention gating
|
|
251
|
+
- [Channel Routing](/channels/channel-routing) — session routing for messages
|
|
252
|
+
- [Security](/gateway/security) — access model and hardening
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "LINE Messaging API plugin setup, config, and usage"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to connect Durar to LINE
|
|
5
|
+
- You need LINE webhook + credential setup
|
|
6
|
+
- You want LINE-specific message options
|
|
7
|
+
title: LINE
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# LINE
|
|
11
|
+
|
|
12
|
+
LINE connects to Durar via the LINE Messaging API. The plugin runs as a webhook
|
|
13
|
+
receiver on the gateway and uses your channel access token + channel secret for
|
|
14
|
+
authentication.
|
|
15
|
+
|
|
16
|
+
Status: bundled plugin. Direct messages, group chats, media, locations, Flex
|
|
17
|
+
messages, template messages, and quick replies are supported. Reactions and threads
|
|
18
|
+
are not supported.
|
|
19
|
+
|
|
20
|
+
## Bundled plugin
|
|
21
|
+
|
|
22
|
+
LINE ships as a bundled plugin in current Durar releases, so normal
|
|
23
|
+
packaged builds do not need a separate install.
|
|
24
|
+
|
|
25
|
+
If you are on an older build or a custom install that excludes LINE, install it
|
|
26
|
+
manually:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
Durar plugins install @Durar/line
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Local checkout (when running from a git repo):
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
Durar plugins install ./path/to/local/line-plugin
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Setup
|
|
39
|
+
|
|
40
|
+
1. Create a LINE Developers account and open the Console:
|
|
41
|
+
[https://developers.line.biz/console/](https://developers.line.biz/console/)
|
|
42
|
+
2. Create (or pick) a Provider and add a **Messaging API** channel.
|
|
43
|
+
3. Copy the **Channel access token** and **Channel secret** from the channel settings.
|
|
44
|
+
4. Enable **Use webhook** in the Messaging API settings.
|
|
45
|
+
5. Set the webhook URL to your gateway endpoint (HTTPS required):
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
https://gateway-host/line/webhook
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The gateway responds to LINE’s webhook verification (GET) and inbound events (POST).
|
|
52
|
+
If you need a custom path, set `channels.line.webhookPath` or
|
|
53
|
+
`channels.line.accounts.<id>.webhookPath` and update the URL accordingly.
|
|
54
|
+
|
|
55
|
+
Security note:
|
|
56
|
+
|
|
57
|
+
- LINE signature verification is body-dependent (HMAC over the raw body), so Durar applies strict pre-auth body limits and timeout before verification.
|
|
58
|
+
- Durar processes webhook events from the verified raw request bytes. Upstream middleware-transformed `req.body` values are ignored for signature-integrity safety.
|
|
59
|
+
|
|
60
|
+
## Configure
|
|
61
|
+
|
|
62
|
+
Minimal config:
|
|
63
|
+
|
|
64
|
+
```json5
|
|
65
|
+
{
|
|
66
|
+
channels: {
|
|
67
|
+
line: {
|
|
68
|
+
enabled: true,
|
|
69
|
+
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
|
|
70
|
+
channelSecret: "LINE_CHANNEL_SECRET",
|
|
71
|
+
dmPolicy: "pairing",
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Env vars (default account only):
|
|
78
|
+
|
|
79
|
+
- `LINE_CHANNEL_ACCESS_TOKEN`
|
|
80
|
+
- `LINE_CHANNEL_SECRET`
|
|
81
|
+
|
|
82
|
+
Token/secret files:
|
|
83
|
+
|
|
84
|
+
```json5
|
|
85
|
+
{
|
|
86
|
+
channels: {
|
|
87
|
+
line: {
|
|
88
|
+
tokenFile: "/path/to/line-token.txt",
|
|
89
|
+
secretFile: "/path/to/line-secret.txt",
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
`tokenFile` and `secretFile` must point to regular files. Symlinks are rejected.
|
|
96
|
+
|
|
97
|
+
Multiple accounts:
|
|
98
|
+
|
|
99
|
+
```json5
|
|
100
|
+
{
|
|
101
|
+
channels: {
|
|
102
|
+
line: {
|
|
103
|
+
accounts: {
|
|
104
|
+
marketing: {
|
|
105
|
+
channelAccessToken: "...",
|
|
106
|
+
channelSecret: "...",
|
|
107
|
+
webhookPath: "/line/marketing",
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Access control
|
|
116
|
+
|
|
117
|
+
Direct messages default to pairing. Unknown senders get a pairing code and their
|
|
118
|
+
messages are ignored until approved.
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
Durar pairing list line
|
|
122
|
+
Durar pairing approve line <CODE>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Allowlists and policies:
|
|
126
|
+
|
|
127
|
+
- `channels.line.dmPolicy`: `pairing | allowlist | open | disabled`
|
|
128
|
+
- `channels.line.allowFrom`: allowlisted LINE user IDs for DMs
|
|
129
|
+
- `channels.line.groupPolicy`: `allowlist | open | disabled`
|
|
130
|
+
- `channels.line.groupAllowFrom`: allowlisted LINE user IDs for groups
|
|
131
|
+
- Per-group overrides: `channels.line.groups.<groupId>.allowFrom`
|
|
132
|
+
- Runtime note: if `channels.line` is completely missing, runtime falls back to `groupPolicy="allowlist"` for group checks (even if `channels.defaults.groupPolicy` is set).
|
|
133
|
+
|
|
134
|
+
LINE IDs are case-sensitive. Valid IDs look like:
|
|
135
|
+
|
|
136
|
+
- User: `U` + 32 hex chars
|
|
137
|
+
- Group: `C` + 32 hex chars
|
|
138
|
+
- Room: `R` + 32 hex chars
|
|
139
|
+
|
|
140
|
+
## Message behavior
|
|
141
|
+
|
|
142
|
+
- Text is chunked at 5000 characters.
|
|
143
|
+
- Markdown formatting is stripped; code blocks and tables are converted into Flex
|
|
144
|
+
cards when possible.
|
|
145
|
+
- Streaming responses are buffered; LINE receives full chunks with a loading
|
|
146
|
+
animation while the agent works.
|
|
147
|
+
- Media downloads are capped by `channels.line.mediaMaxMb` (default 10).
|
|
148
|
+
|
|
149
|
+
## Channel data (rich messages)
|
|
150
|
+
|
|
151
|
+
Use `channelData.line` to send quick replies, locations, Flex cards, or template
|
|
152
|
+
messages.
|
|
153
|
+
|
|
154
|
+
```json5
|
|
155
|
+
{
|
|
156
|
+
text: "Here you go",
|
|
157
|
+
channelData: {
|
|
158
|
+
line: {
|
|
159
|
+
quickReplies: ["Status", "Help"],
|
|
160
|
+
location: {
|
|
161
|
+
title: "Office",
|
|
162
|
+
address: "123 Main St",
|
|
163
|
+
latitude: 35.681236,
|
|
164
|
+
longitude: 139.767125,
|
|
165
|
+
},
|
|
166
|
+
flexMessage: {
|
|
167
|
+
altText: "Status card",
|
|
168
|
+
contents: {
|
|
169
|
+
/* Flex payload */
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
templateMessage: {
|
|
173
|
+
type: "confirm",
|
|
174
|
+
text: "Proceed?",
|
|
175
|
+
confirmLabel: "Yes",
|
|
176
|
+
confirmData: "yes",
|
|
177
|
+
cancelLabel: "No",
|
|
178
|
+
cancelData: "no",
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
The LINE plugin also ships a `/card` command for Flex message presets:
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
/card info "Welcome" "Thanks for joining!"
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## ACP support
|
|
192
|
+
|
|
193
|
+
LINE supports ACP (Agent Communication Protocol) conversation bindings:
|
|
194
|
+
|
|
195
|
+
- `/acp spawn <agent> --bind here` binds the current LINE chat to an ACP session without creating a child thread.
|
|
196
|
+
- Configured ACP bindings and active conversation-bound ACP sessions work on LINE like other conversation channels.
|
|
197
|
+
|
|
198
|
+
See [ACP agents](/tools/acp-agents) for details.
|
|
199
|
+
|
|
200
|
+
## Outbound media
|
|
201
|
+
|
|
202
|
+
The LINE plugin supports sending images, videos, and audio files through the agent message tool. Media is sent via the LINE-specific delivery path with appropriate preview and tracking handling:
|
|
203
|
+
|
|
204
|
+
- **Images**: sent as LINE image messages with automatic preview generation.
|
|
205
|
+
- **Videos**: sent with explicit preview and content-type handling.
|
|
206
|
+
- **Audio**: sent as LINE audio messages.
|
|
207
|
+
|
|
208
|
+
Generic media sends fall back to the existing image-only route when a LINE-specific path is not available.
|
|
209
|
+
|
|
210
|
+
## Troubleshooting
|
|
211
|
+
|
|
212
|
+
- **Webhook verification fails:** ensure the webhook URL is HTTPS and the
|
|
213
|
+
`channelSecret` matches the LINE console.
|
|
214
|
+
- **No inbound events:** confirm the webhook path matches `channels.line.webhookPath`
|
|
215
|
+
and that the gateway is reachable from LINE.
|
|
216
|
+
- **Media download errors:** raise `channels.line.mediaMaxMb` if media exceeds the
|
|
217
|
+
default limit.
|
|
218
|
+
|
|
219
|
+
## Related
|
|
220
|
+
|
|
221
|
+
- [Channels Overview](/channels) — all supported channels
|
|
222
|
+
- [Pairing](/channels/pairing) — DM authentication and pairing flow
|
|
223
|
+
- [Groups](/channels/groups) — group chat behavior and mention gating
|
|
224
|
+
- [Channel Routing](/channels/channel-routing) — session routing for messages
|
|
225
|
+
- [Security](/gateway/security) — access model and hardening
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Inbound channel location parsing (Telegram/WhatsApp/Matrix) and context fields"
|
|
3
|
+
read_when:
|
|
4
|
+
- Adding or modifying channel location parsing
|
|
5
|
+
- Using location context fields in agent prompts or tools
|
|
6
|
+
title: "Channel Location Parsing"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Channel location parsing
|
|
10
|
+
|
|
11
|
+
Durar normalizes shared locations from chat channels into:
|
|
12
|
+
|
|
13
|
+
- human-readable text appended to the inbound body, and
|
|
14
|
+
- structured fields in the auto-reply context payload.
|
|
15
|
+
|
|
16
|
+
Currently supported:
|
|
17
|
+
|
|
18
|
+
- **Telegram** (location pins + venues + live locations)
|
|
19
|
+
- **WhatsApp** (locationMessage + liveLocationMessage)
|
|
20
|
+
- **Matrix** (`m.location` with `geo_uri`)
|
|
21
|
+
|
|
22
|
+
## Text formatting
|
|
23
|
+
|
|
24
|
+
Locations are rendered as friendly lines without brackets:
|
|
25
|
+
|
|
26
|
+
- Pin:
|
|
27
|
+
- `📍 48.858844, 2.294351 ±12m`
|
|
28
|
+
- Named place:
|
|
29
|
+
- `📍 Eiffel Tower — Champ de Mars, Paris (48.858844, 2.294351 ±12m)`
|
|
30
|
+
- Live share:
|
|
31
|
+
- `🛰 Live location: 48.858844, 2.294351 ±12m`
|
|
32
|
+
|
|
33
|
+
If the channel includes a caption/comment, it is appended on the next line:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
📍 48.858844, 2.294351 ±12m
|
|
37
|
+
Meet here
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Context fields
|
|
41
|
+
|
|
42
|
+
When a location is present, these fields are added to `ctx`:
|
|
43
|
+
|
|
44
|
+
- `LocationLat` (number)
|
|
45
|
+
- `LocationLon` (number)
|
|
46
|
+
- `LocationAccuracy` (number, meters; optional)
|
|
47
|
+
- `LocationName` (string; optional)
|
|
48
|
+
- `LocationAddress` (string; optional)
|
|
49
|
+
- `LocationSource` (`pin | place | live`)
|
|
50
|
+
- `LocationIsLive` (boolean)
|
|
51
|
+
|
|
52
|
+
## Channel notes
|
|
53
|
+
|
|
54
|
+
- **Telegram**: venues map to `LocationName/LocationAddress`; live locations use `live_period`.
|
|
55
|
+
- **WhatsApp**: `locationMessage.comment` and `liveLocationMessage.caption` are appended as the caption line.
|
|
56
|
+
- **Matrix**: `geo_uri` is parsed as a pin location; altitude is ignored and `LocationIsLive` is always false.
|