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,210 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Plugin Entry Points"
|
|
3
|
+
sidebarTitle: "Entry Points"
|
|
4
|
+
summary: "Reference for definePluginEntry, defineChannelPluginEntry, and defineSetupPluginEntry"
|
|
5
|
+
read_when:
|
|
6
|
+
- You need the exact type signature of definePluginEntry or defineChannelPluginEntry
|
|
7
|
+
- You want to understand registration mode (full vs setup vs CLI metadata)
|
|
8
|
+
- You are looking up entry point options
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Plugin Entry Points
|
|
12
|
+
|
|
13
|
+
Every plugin exports a default entry object. The SDK provides three helpers for
|
|
14
|
+
creating them.
|
|
15
|
+
|
|
16
|
+
<Tip>
|
|
17
|
+
**Looking for a walkthrough?** See [Channel Plugins](/plugins/sdk-channel-plugins)
|
|
18
|
+
or [Provider Plugins](/plugins/sdk-provider-plugins) for step-by-step guides.
|
|
19
|
+
</Tip>
|
|
20
|
+
|
|
21
|
+
## `definePluginEntry`
|
|
22
|
+
|
|
23
|
+
**Import:** `Durar/plugin-sdk/plugin-entry`
|
|
24
|
+
|
|
25
|
+
For provider plugins, tool plugins, hook plugins, and anything that is **not**
|
|
26
|
+
a messaging channel.
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import { definePluginEntry } from "Durar/plugin-sdk/plugin-entry";
|
|
30
|
+
|
|
31
|
+
export default definePluginEntry({
|
|
32
|
+
id: "my-plugin",
|
|
33
|
+
name: "My Plugin",
|
|
34
|
+
description: "Short summary",
|
|
35
|
+
register(api) {
|
|
36
|
+
api.registerProvider({
|
|
37
|
+
/* ... */
|
|
38
|
+
});
|
|
39
|
+
api.registerTool({
|
|
40
|
+
/* ... */
|
|
41
|
+
});
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
| Field | Type | Required | Default |
|
|
47
|
+
| -------------- | ---------------------------------------------------------------- | -------- | ------------------- |
|
|
48
|
+
| `id` | `string` | Yes | — |
|
|
49
|
+
| `name` | `string` | Yes | — |
|
|
50
|
+
| `description` | `string` | Yes | — |
|
|
51
|
+
| `kind` | `string` | No | — |
|
|
52
|
+
| `configSchema` | `DurarPluginConfigSchema \| () => DurarPluginConfigSchema` | No | Empty object schema |
|
|
53
|
+
| `register` | `(api: DurarPluginApi) => void` | Yes | — |
|
|
54
|
+
|
|
55
|
+
- `id` must match your `Durar.plugin.json` manifest.
|
|
56
|
+
- `kind` is for exclusive slots: `"memory"` or `"context-engine"`.
|
|
57
|
+
- `configSchema` can be a function for lazy evaluation.
|
|
58
|
+
- Durar resolves and memoizes that schema on first access, so expensive schema
|
|
59
|
+
builders only run once.
|
|
60
|
+
|
|
61
|
+
## `defineChannelPluginEntry`
|
|
62
|
+
|
|
63
|
+
**Import:** `Durar/plugin-sdk/channel-core`
|
|
64
|
+
|
|
65
|
+
Wraps `definePluginEntry` with channel-specific wiring. Automatically calls
|
|
66
|
+
`api.registerChannel({ plugin })`, exposes an optional root-help CLI metadata
|
|
67
|
+
seam, and gates `registerFull` on registration mode.
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
import { defineChannelPluginEntry } from "Durar/plugin-sdk/channel-core";
|
|
71
|
+
|
|
72
|
+
export default defineChannelPluginEntry({
|
|
73
|
+
id: "my-channel",
|
|
74
|
+
name: "My Channel",
|
|
75
|
+
description: "Short summary",
|
|
76
|
+
plugin: myChannelPlugin,
|
|
77
|
+
setRuntime: setMyRuntime,
|
|
78
|
+
registerCliMetadata(api) {
|
|
79
|
+
api.registerCli(/* ... */);
|
|
80
|
+
},
|
|
81
|
+
registerFull(api) {
|
|
82
|
+
api.registerGatewayMethod(/* ... */);
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
| Field | Type | Required | Default |
|
|
88
|
+
| --------------------- | ---------------------------------------------------------------- | -------- | ------------------- |
|
|
89
|
+
| `id` | `string` | Yes | — |
|
|
90
|
+
| `name` | `string` | Yes | — |
|
|
91
|
+
| `description` | `string` | Yes | — |
|
|
92
|
+
| `plugin` | `ChannelPlugin` | Yes | — |
|
|
93
|
+
| `configSchema` | `DurarPluginConfigSchema \| () => DurarPluginConfigSchema` | No | Empty object schema |
|
|
94
|
+
| `setRuntime` | `(runtime: PluginRuntime) => void` | No | — |
|
|
95
|
+
| `registerCliMetadata` | `(api: DurarPluginApi) => void` | No | — |
|
|
96
|
+
| `registerFull` | `(api: DurarPluginApi) => void` | No | — |
|
|
97
|
+
|
|
98
|
+
- `setRuntime` is called during registration so you can store the runtime reference
|
|
99
|
+
(typically via `createPluginRuntimeStore`). It is skipped during CLI metadata
|
|
100
|
+
capture.
|
|
101
|
+
- `registerCliMetadata` runs during both `api.registrationMode === "cli-metadata"`
|
|
102
|
+
and `api.registrationMode === "full"`.
|
|
103
|
+
Use it as the canonical place for channel-owned CLI descriptors so root help
|
|
104
|
+
stays non-activating while normal CLI command registration remains compatible
|
|
105
|
+
with full plugin loads.
|
|
106
|
+
- `registerFull` only runs when `api.registrationMode === "full"`. It is skipped
|
|
107
|
+
during setup-only loading.
|
|
108
|
+
- Like `definePluginEntry`, `configSchema` can be a lazy factory and Durar
|
|
109
|
+
memoizes the resolved schema on first access.
|
|
110
|
+
- For plugin-owned root CLI commands, prefer `api.registerCli(..., { descriptors: [...] })`
|
|
111
|
+
when you want the command to stay lazy-loaded without disappearing from the
|
|
112
|
+
root CLI parse tree. For channel plugins, prefer registering those descriptors
|
|
113
|
+
from `registerCliMetadata(...)` and keep `registerFull(...)` focused on runtime-only work.
|
|
114
|
+
- If `registerFull(...)` also registers gateway RPC methods, keep them on a
|
|
115
|
+
plugin-specific prefix. Reserved core admin namespaces (`config.*`,
|
|
116
|
+
`exec.approvals.*`, `wizard.*`, `update.*`) are always coerced to
|
|
117
|
+
`operator.admin`.
|
|
118
|
+
|
|
119
|
+
## `defineSetupPluginEntry`
|
|
120
|
+
|
|
121
|
+
**Import:** `Durar/plugin-sdk/channel-core`
|
|
122
|
+
|
|
123
|
+
For the lightweight `setup-entry.ts` file. Returns just `{ plugin }` with no
|
|
124
|
+
runtime or CLI wiring.
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
import { defineSetupPluginEntry } from "Durar/plugin-sdk/channel-core";
|
|
128
|
+
|
|
129
|
+
export default defineSetupPluginEntry(myChannelPlugin);
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Durar loads this instead of the full entry when a channel is disabled,
|
|
133
|
+
unconfigured, or when deferred loading is enabled. See
|
|
134
|
+
[Setup and Config](/plugins/sdk-setup#setup-entry) for when this matters.
|
|
135
|
+
|
|
136
|
+
In practice, pair `defineSetupPluginEntry(...)` with the narrow setup helper
|
|
137
|
+
families:
|
|
138
|
+
|
|
139
|
+
- `Durar/plugin-sdk/setup-runtime` for runtime-safe setup helpers such as
|
|
140
|
+
import-safe setup patch adapters, lookup-note output,
|
|
141
|
+
`promptResolvedAllowFrom`, `splitSetupEntries`, and delegated setup proxies
|
|
142
|
+
- `Durar/plugin-sdk/channel-setup` for optional-install setup surfaces
|
|
143
|
+
- `Durar/plugin-sdk/setup-tools` for setup/install CLI/archive/docs helpers
|
|
144
|
+
|
|
145
|
+
Keep heavy SDKs, CLI registration, and long-lived runtime services in the full
|
|
146
|
+
entry.
|
|
147
|
+
|
|
148
|
+
## Registration mode
|
|
149
|
+
|
|
150
|
+
`api.registrationMode` tells your plugin how it was loaded:
|
|
151
|
+
|
|
152
|
+
| Mode | When | What to register |
|
|
153
|
+
| ----------------- | --------------------------------- | ----------------------------------------------------------------------------------------- |
|
|
154
|
+
| `"full"` | Normal gateway startup | Everything |
|
|
155
|
+
| `"setup-only"` | Disabled/unconfigured channel | Channel registration only |
|
|
156
|
+
| `"setup-runtime"` | Setup flow with runtime available | Channel registration plus only the lightweight runtime needed before the full entry loads |
|
|
157
|
+
| `"cli-metadata"` | Root help / CLI metadata capture | CLI descriptors only |
|
|
158
|
+
|
|
159
|
+
`defineChannelPluginEntry` handles this split automatically. If you use
|
|
160
|
+
`definePluginEntry` directly for a channel, check mode yourself:
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
register(api) {
|
|
164
|
+
if (api.registrationMode === "cli-metadata" || api.registrationMode === "full") {
|
|
165
|
+
api.registerCli(/* ... */);
|
|
166
|
+
if (api.registrationMode === "cli-metadata") return;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
api.registerChannel({ plugin: myPlugin });
|
|
170
|
+
if (api.registrationMode !== "full") return;
|
|
171
|
+
|
|
172
|
+
// Heavy runtime-only registrations
|
|
173
|
+
api.registerService(/* ... */);
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Treat `"setup-runtime"` as the window where setup-only startup surfaces must
|
|
178
|
+
exist without re-entering the full bundled channel runtime. Good fits are
|
|
179
|
+
channel registration, setup-safe HTTP routes, setup-safe gateway methods, and
|
|
180
|
+
delegated setup helpers. Heavy background services, CLI registrars, and
|
|
181
|
+
provider/client SDK bootstraps still belong in `"full"`.
|
|
182
|
+
|
|
183
|
+
For CLI registrars specifically:
|
|
184
|
+
|
|
185
|
+
- use `descriptors` when the registrar owns one or more root commands and you
|
|
186
|
+
want Durar to lazy-load the real CLI module on first invocation
|
|
187
|
+
- make sure those descriptors cover every top-level command root exposed by the
|
|
188
|
+
registrar
|
|
189
|
+
- use `commands` alone only for eager compatibility paths
|
|
190
|
+
|
|
191
|
+
## Plugin shapes
|
|
192
|
+
|
|
193
|
+
Durar classifies loaded plugins by their registration behavior:
|
|
194
|
+
|
|
195
|
+
| Shape | Description |
|
|
196
|
+
| --------------------- | -------------------------------------------------- |
|
|
197
|
+
| **plain-capability** | One capability type (e.g. provider-only) |
|
|
198
|
+
| **hybrid-capability** | Multiple capability types (e.g. provider + speech) |
|
|
199
|
+
| **hook-only** | Only hooks, no capabilities |
|
|
200
|
+
| **non-capability** | Tools/commands/services but no capabilities |
|
|
201
|
+
|
|
202
|
+
Use `Durar plugins inspect <id>` to see a plugin's shape.
|
|
203
|
+
|
|
204
|
+
## Related
|
|
205
|
+
|
|
206
|
+
- [SDK Overview](/plugins/sdk-overview) — registration API and subpath reference
|
|
207
|
+
- [Runtime Helpers](/plugins/sdk-runtime) — `api.runtime` and `createPluginRuntimeStore`
|
|
208
|
+
- [Setup and Config](/plugins/sdk-setup) — manifest, setup entry, deferred loading
|
|
209
|
+
- [Channel Plugins](/plugins/sdk-channel-plugins) — building the `ChannelPlugin` object
|
|
210
|
+
- [Provider Plugins](/plugins/sdk-provider-plugins) — provider registration and hooks
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Plugin SDK Migration"
|
|
3
|
+
sidebarTitle: "Migrate to SDK"
|
|
4
|
+
summary: "Migrate from the legacy backwards-compatibility layer to the modern plugin SDK"
|
|
5
|
+
read_when:
|
|
6
|
+
- You see the Durar_PLUGIN_SDK_COMPAT_DEPRECATED warning
|
|
7
|
+
- You see the Durar_EXTENSION_API_DEPRECATED warning
|
|
8
|
+
- You are updating a plugin to the modern plugin architecture
|
|
9
|
+
- You maintain an external Durar plugin
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Plugin SDK Migration
|
|
13
|
+
|
|
14
|
+
Durar has moved from a broad backwards-compatibility layer to a modern plugin
|
|
15
|
+
architecture with focused, documented imports. If your plugin was built before
|
|
16
|
+
the new architecture, this guide helps you migrate.
|
|
17
|
+
|
|
18
|
+
## What is changing
|
|
19
|
+
|
|
20
|
+
The old plugin system provided two wide-open surfaces that let plugins import
|
|
21
|
+
anything they needed from a single entry point:
|
|
22
|
+
|
|
23
|
+
- **`Durar/plugin-sdk/compat`** — a single import that re-exported dozens of
|
|
24
|
+
helpers. It was introduced to keep older hook-based plugins working while the
|
|
25
|
+
new plugin architecture was being built.
|
|
26
|
+
- **`Durar/extension-api`** — a bridge that gave plugins direct access to
|
|
27
|
+
host-side helpers like the embedded agent runner.
|
|
28
|
+
|
|
29
|
+
Both surfaces are now **deprecated**. They still work at runtime, but new
|
|
30
|
+
plugins must not use them, and existing plugins should migrate before the next
|
|
31
|
+
major release removes them.
|
|
32
|
+
|
|
33
|
+
<Warning>
|
|
34
|
+
The backwards-compatibility layer will be removed in a future major release.
|
|
35
|
+
Plugins that still import from these surfaces will break when that happens.
|
|
36
|
+
</Warning>
|
|
37
|
+
|
|
38
|
+
## Why this changed
|
|
39
|
+
|
|
40
|
+
The old approach caused problems:
|
|
41
|
+
|
|
42
|
+
- **Slow startup** — importing one helper loaded dozens of unrelated modules
|
|
43
|
+
- **Circular dependencies** — broad re-exports made it easy to create import cycles
|
|
44
|
+
- **Unclear API surface** — no way to tell which exports were stable vs internal
|
|
45
|
+
|
|
46
|
+
The modern plugin SDK fixes this: each import path (`Durar/plugin-sdk/\<subpath\>`)
|
|
47
|
+
is a small, self-contained module with a clear purpose and documented contract.
|
|
48
|
+
|
|
49
|
+
Legacy provider convenience seams for bundled channels are also gone. Imports
|
|
50
|
+
such as `Durar/plugin-sdk/slack`, `Durar/plugin-sdk/discord`,
|
|
51
|
+
`Durar/plugin-sdk/signal`, `Durar/plugin-sdk/whatsapp`,
|
|
52
|
+
channel-branded helper seams, and
|
|
53
|
+
`Durar/plugin-sdk/telegram-core` were private mono-repo shortcuts, not
|
|
54
|
+
stable plugin contracts. Use narrow generic SDK subpaths instead. Inside the
|
|
55
|
+
bundled plugin workspace, keep provider-owned helpers in that plugin's own
|
|
56
|
+
`api.ts` or `runtime-api.ts`.
|
|
57
|
+
|
|
58
|
+
Current bundled provider examples:
|
|
59
|
+
|
|
60
|
+
- Anthropic keeps Claude-specific stream helpers in its own `api.ts` /
|
|
61
|
+
`contract-api.ts` seam
|
|
62
|
+
- OpenAI keeps provider builders, default-model helpers, and realtime provider
|
|
63
|
+
builders in its own `api.ts`
|
|
64
|
+
- OpenRouter keeps provider builder and onboarding/config helpers in its own
|
|
65
|
+
`api.ts`
|
|
66
|
+
|
|
67
|
+
## How to migrate
|
|
68
|
+
|
|
69
|
+
<Steps>
|
|
70
|
+
<Step title="Audit Windows wrapper fallback behavior">
|
|
71
|
+
If your plugin uses `Durar/plugin-sdk/windows-spawn`, unresolved Windows
|
|
72
|
+
`.cmd`/`.bat` wrappers now fail closed unless you explicitly pass
|
|
73
|
+
`allowShellFallback: true`.
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
// Before
|
|
77
|
+
const program = applyWindowsSpawnProgramPolicy({ candidate });
|
|
78
|
+
|
|
79
|
+
// After
|
|
80
|
+
const program = applyWindowsSpawnProgramPolicy({
|
|
81
|
+
candidate,
|
|
82
|
+
// Only set this for trusted compatibility callers that intentionally
|
|
83
|
+
// accept shell-mediated fallback.
|
|
84
|
+
allowShellFallback: true,
|
|
85
|
+
});
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
If your caller does not intentionally rely on shell fallback, do not set
|
|
89
|
+
`allowShellFallback` and handle the thrown error instead.
|
|
90
|
+
|
|
91
|
+
</Step>
|
|
92
|
+
|
|
93
|
+
<Step title="Find deprecated imports">
|
|
94
|
+
Search your plugin for imports from either deprecated surface:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
grep -r "plugin-sdk/compat" my-plugin/
|
|
98
|
+
grep -r "Durar/extension-api" my-plugin/
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
</Step>
|
|
102
|
+
|
|
103
|
+
<Step title="Replace with focused imports">
|
|
104
|
+
Each export from the old surface maps to a specific modern import path:
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
// Before (deprecated backwards-compatibility layer)
|
|
108
|
+
import {
|
|
109
|
+
createChannelReplyPipeline,
|
|
110
|
+
createPluginRuntimeStore,
|
|
111
|
+
resolveControlCommandGate,
|
|
112
|
+
} from "Durar/plugin-sdk/compat";
|
|
113
|
+
|
|
114
|
+
// After (modern focused imports)
|
|
115
|
+
import { createChannelReplyPipeline } from "Durar/plugin-sdk/channel-reply-pipeline";
|
|
116
|
+
import { createPluginRuntimeStore } from "Durar/plugin-sdk/runtime-store";
|
|
117
|
+
import { resolveControlCommandGate } from "Durar/plugin-sdk/command-auth";
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
For host-side helpers, use the injected plugin runtime instead of importing
|
|
121
|
+
directly:
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
// Before (deprecated extension-api bridge)
|
|
125
|
+
import { runEmbeddedPiAgent } from "Durar/extension-api";
|
|
126
|
+
const result = await runEmbeddedPiAgent({ sessionId, prompt });
|
|
127
|
+
|
|
128
|
+
// After (injected runtime)
|
|
129
|
+
const result = await api.runtime.agent.runEmbeddedPiAgent({ sessionId, prompt });
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
The same pattern applies to other legacy bridge helpers:
|
|
133
|
+
|
|
134
|
+
| Old import | Modern equivalent |
|
|
135
|
+
| --- | --- |
|
|
136
|
+
| `resolveAgentDir` | `api.runtime.agent.resolveAgentDir` |
|
|
137
|
+
| `resolveAgentWorkspaceDir` | `api.runtime.agent.resolveAgentWorkspaceDir` |
|
|
138
|
+
| `resolveAgentIdentity` | `api.runtime.agent.resolveAgentIdentity` |
|
|
139
|
+
| `resolveThinkingDefault` | `api.runtime.agent.resolveThinkingDefault` |
|
|
140
|
+
| `resolveAgentTimeoutMs` | `api.runtime.agent.resolveAgentTimeoutMs` |
|
|
141
|
+
| `ensureAgentWorkspace` | `api.runtime.agent.ensureAgentWorkspace` |
|
|
142
|
+
| session store helpers | `api.runtime.agent.session.*` |
|
|
143
|
+
|
|
144
|
+
</Step>
|
|
145
|
+
|
|
146
|
+
<Step title="Build and test">
|
|
147
|
+
```bash
|
|
148
|
+
pnpm build
|
|
149
|
+
pnpm test -- my-plugin/
|
|
150
|
+
```
|
|
151
|
+
</Step>
|
|
152
|
+
</Steps>
|
|
153
|
+
|
|
154
|
+
## Import path reference
|
|
155
|
+
|
|
156
|
+
<Accordion title="Common import path table">
|
|
157
|
+
| Import path | Purpose | Key exports |
|
|
158
|
+
| --- | --- | --- |
|
|
159
|
+
| `plugin-sdk/plugin-entry` | Canonical plugin entry helper | `definePluginEntry` |
|
|
160
|
+
| `plugin-sdk/core` | Legacy umbrella re-export for channel entry definitions/builders | `defineChannelPluginEntry`, `createChatChannelPlugin` |
|
|
161
|
+
| `plugin-sdk/config-schema` | Root config schema export | `DurarSchema` |
|
|
162
|
+
| `plugin-sdk/provider-entry` | Single-provider entry helper | `defineSingleProviderPluginEntry` |
|
|
163
|
+
| `plugin-sdk/channel-core` | Focused channel entry definitions and builders | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
|
|
164
|
+
| `plugin-sdk/setup` | Shared setup wizard helpers | Allowlist prompts, setup status builders |
|
|
165
|
+
| `plugin-sdk/setup-runtime` | Setup-time runtime helpers | Import-safe setup patch adapters, lookup-note helpers, `promptResolvedAllowFrom`, `splitSetupEntries`, delegated setup proxies |
|
|
166
|
+
| `plugin-sdk/setup-adapter-runtime` | Setup adapter helpers | `createEnvPatchedAccountSetupAdapter` |
|
|
167
|
+
| `plugin-sdk/setup-tools` | Setup tooling helpers | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
|
|
168
|
+
| `plugin-sdk/account-core` | Multi-account helpers | Account list/config/action-gate helpers |
|
|
169
|
+
| `plugin-sdk/account-id` | Account-id helpers | `DEFAULT_ACCOUNT_ID`, account-id normalization |
|
|
170
|
+
| `plugin-sdk/account-resolution` | Account lookup helpers | Account lookup + default-fallback helpers |
|
|
171
|
+
| `plugin-sdk/account-helpers` | Narrow account helpers | Account list/account-action helpers |
|
|
172
|
+
| `plugin-sdk/channel-setup` | Setup wizard adapters | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, plus `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` |
|
|
173
|
+
| `plugin-sdk/channel-pairing` | DM pairing primitives | `createChannelPairingController` |
|
|
174
|
+
| `plugin-sdk/channel-reply-pipeline` | Reply prefix + typing wiring | `createChannelReplyPipeline` |
|
|
175
|
+
| `plugin-sdk/channel-config-helpers` | Config adapter factories | `createHybridChannelConfigAdapter` |
|
|
176
|
+
| `plugin-sdk/channel-config-schema` | Config schema builders | Channel config schema types |
|
|
177
|
+
| `plugin-sdk/telegram-command-config` | Telegram command config helpers | Command-name normalization, description trimming, duplicate/conflict validation |
|
|
178
|
+
| `plugin-sdk/channel-policy` | Group/DM policy resolution | `resolveChannelGroupRequireMention` |
|
|
179
|
+
| `plugin-sdk/channel-lifecycle` | Account status tracking | `createAccountStatusSink` |
|
|
180
|
+
| `plugin-sdk/inbound-envelope` | Inbound envelope helpers | Shared route + envelope builder helpers |
|
|
181
|
+
| `plugin-sdk/inbound-reply-dispatch` | Inbound reply helpers | Shared record-and-dispatch helpers |
|
|
182
|
+
| `plugin-sdk/messaging-targets` | Messaging target parsing | Target parsing/matching helpers |
|
|
183
|
+
| `plugin-sdk/outbound-media` | Outbound media helpers | Shared outbound media loading |
|
|
184
|
+
| `plugin-sdk/outbound-runtime` | Outbound runtime helpers | Outbound identity/send delegate helpers |
|
|
185
|
+
| `plugin-sdk/thread-bindings-runtime` | Thread-binding helpers | Thread-binding lifecycle and adapter helpers |
|
|
186
|
+
| `plugin-sdk/agent-media-payload` | Legacy media payload helpers | Agent media payload builder for legacy field layouts |
|
|
187
|
+
| `plugin-sdk/channel-runtime` | Deprecated compatibility shim | Legacy channel runtime utilities only |
|
|
188
|
+
| `plugin-sdk/channel-send-result` | Send result types | Reply result types |
|
|
189
|
+
| `plugin-sdk/runtime-store` | Persistent plugin storage | `createPluginRuntimeStore` |
|
|
190
|
+
| `plugin-sdk/runtime` | Broad runtime helpers | Runtime/logging/backup/plugin-install helpers |
|
|
191
|
+
| `plugin-sdk/runtime-env` | Narrow runtime env helpers | Logger/runtime env, timeout, retry, and backoff helpers |
|
|
192
|
+
| `plugin-sdk/plugin-runtime` | Shared plugin runtime helpers | Plugin commands/hooks/http/interactive helpers |
|
|
193
|
+
| `plugin-sdk/hook-runtime` | Hook pipeline helpers | Shared webhook/internal hook pipeline helpers |
|
|
194
|
+
| `plugin-sdk/lazy-runtime` | Lazy runtime helpers | `createLazyRuntimeModule`, `createLazyRuntimeMethod`, `createLazyRuntimeMethodBinder`, `createLazyRuntimeNamedExport`, `createLazyRuntimeSurface` |
|
|
195
|
+
| `plugin-sdk/process-runtime` | Process helpers | Shared exec helpers |
|
|
196
|
+
| `plugin-sdk/cli-runtime` | CLI runtime helpers | Command formatting, waits, version helpers |
|
|
197
|
+
| `plugin-sdk/gateway-runtime` | Gateway helpers | Gateway client and channel-status patch helpers |
|
|
198
|
+
| `plugin-sdk/config-runtime` | Config helpers | Config load/write helpers |
|
|
199
|
+
| `plugin-sdk/telegram-command-config` | Telegram command helpers | Fallback-stable Telegram command validation helpers when the bundled Telegram contract surface is unavailable |
|
|
200
|
+
| `plugin-sdk/approval-runtime` | Approval prompt helpers | Exec/plugin approval payload, approval capability/profile helpers, native approval routing/runtime helpers |
|
|
201
|
+
| `plugin-sdk/approval-auth-runtime` | Approval auth helpers | Approver resolution, same-chat action auth |
|
|
202
|
+
| `plugin-sdk/approval-client-runtime` | Approval client helpers | Native exec approval profile/filter helpers |
|
|
203
|
+
| `plugin-sdk/approval-delivery-runtime` | Approval delivery helpers | Native approval capability/delivery adapters |
|
|
204
|
+
| `plugin-sdk/approval-native-runtime` | Approval target helpers | Native approval target/account binding helpers |
|
|
205
|
+
| `plugin-sdk/approval-reply-runtime` | Approval reply helpers | Exec/plugin approval reply payload helpers |
|
|
206
|
+
| `plugin-sdk/security-runtime` | Security helpers | Shared trust, DM gating, external-content, and secret-collection helpers |
|
|
207
|
+
| `plugin-sdk/ssrf-policy` | SSRF policy helpers | Host allowlist and private-network policy helpers |
|
|
208
|
+
| `plugin-sdk/ssrf-runtime` | SSRF runtime helpers | Pinned-dispatcher, guarded fetch, SSRF policy helpers |
|
|
209
|
+
| `plugin-sdk/collection-runtime` | Bounded cache helpers | `pruneMapToMaxSize` |
|
|
210
|
+
| `plugin-sdk/diagnostic-runtime` | Diagnostic gating helpers | `isDiagnosticFlagEnabled`, `isDiagnosticsEnabled` |
|
|
211
|
+
| `plugin-sdk/error-runtime` | Error formatting helpers | `formatUncaughtError`, `isApprovalNotFoundError`, error graph helpers |
|
|
212
|
+
| `plugin-sdk/fetch-runtime` | Wrapped fetch/proxy helpers | `resolveFetch`, proxy helpers |
|
|
213
|
+
| `plugin-sdk/host-runtime` | Host normalization helpers | `normalizeHostname`, `normalizeScpRemoteHost` |
|
|
214
|
+
| `plugin-sdk/retry-runtime` | Retry helpers | `RetryConfig`, `retryAsync`, policy runners |
|
|
215
|
+
| `plugin-sdk/allow-from` | Allowlist formatting | `formatAllowFromLowercase` |
|
|
216
|
+
| `plugin-sdk/allowlist-resolution` | Allowlist input mapping | `mapAllowlistResolutionInputs` |
|
|
217
|
+
| `plugin-sdk/command-auth` | Command gating and command-surface helpers | `resolveControlCommandGate`, sender-authorization helpers, command registry helpers |
|
|
218
|
+
| `plugin-sdk/secret-input` | Secret input parsing | Secret input helpers |
|
|
219
|
+
| `plugin-sdk/webhook-ingress` | Webhook request helpers | Webhook target utilities |
|
|
220
|
+
| `plugin-sdk/webhook-request-guards` | Webhook body guard helpers | Request body read/limit helpers |
|
|
221
|
+
| `plugin-sdk/reply-runtime` | Shared reply runtime | Inbound dispatch, heartbeat, reply planner, chunking |
|
|
222
|
+
| `plugin-sdk/reply-dispatch-runtime` | Narrow reply dispatch helpers | Finalize + provider dispatch helpers |
|
|
223
|
+
| `plugin-sdk/reply-history` | Reply-history helpers | `buildHistoryContext`, `buildPendingHistoryContextFromMap`, `recordPendingHistoryEntry`, `clearHistoryEntriesIfEnabled` |
|
|
224
|
+
| `plugin-sdk/reply-reference` | Reply reference planning | `createReplyReferencePlanner` |
|
|
225
|
+
| `plugin-sdk/reply-chunking` | Reply chunk helpers | Text/markdown chunking helpers |
|
|
226
|
+
| `plugin-sdk/session-store-runtime` | Session store helpers | Store path + updated-at helpers |
|
|
227
|
+
| `plugin-sdk/state-paths` | State path helpers | State and OAuth dir helpers |
|
|
228
|
+
| `plugin-sdk/routing` | Routing/session-key helpers | `resolveAgentRoute`, `buildAgentSessionKey`, `resolveDefaultAgentBoundAccountId`, session-key normalization helpers |
|
|
229
|
+
| `plugin-sdk/status-helpers` | Channel status helpers | Channel/account status summary builders, runtime-state defaults, issue metadata helpers |
|
|
230
|
+
| `plugin-sdk/target-resolver-runtime` | Target resolver helpers | Shared target resolver helpers |
|
|
231
|
+
| `plugin-sdk/string-normalization-runtime` | String normalization helpers | Slug/string normalization helpers |
|
|
232
|
+
| `plugin-sdk/request-url` | Request URL helpers | Extract string URLs from request-like inputs |
|
|
233
|
+
| `plugin-sdk/run-command` | Timed command helpers | Timed command runner with normalized stdout/stderr |
|
|
234
|
+
| `plugin-sdk/param-readers` | Param readers | Common tool/CLI param readers |
|
|
235
|
+
| `plugin-sdk/tool-send` | Tool send extraction | Extract canonical send target fields from tool args |
|
|
236
|
+
| `plugin-sdk/temp-path` | Temp path helpers | Shared temp-download path helpers |
|
|
237
|
+
| `plugin-sdk/logging-core` | Logging helpers | Subsystem logger and redaction helpers |
|
|
238
|
+
| `plugin-sdk/markdown-table-runtime` | Markdown-table helpers | Markdown table mode helpers |
|
|
239
|
+
| `plugin-sdk/reply-payload` | Message reply types | Reply payload types |
|
|
240
|
+
| `plugin-sdk/provider-setup` | Curated local/self-hosted provider setup helpers | Self-hosted provider discovery/config helpers |
|
|
241
|
+
| `plugin-sdk/self-hosted-provider-setup` | Focused OpenAI-compatible self-hosted provider setup helpers | Same self-hosted provider discovery/config helpers |
|
|
242
|
+
| `plugin-sdk/provider-auth-runtime` | Provider runtime auth helpers | Runtime API-key resolution helpers |
|
|
243
|
+
| `plugin-sdk/provider-auth-api-key` | Provider API-key setup helpers | API-key onboarding/profile-write helpers |
|
|
244
|
+
| `plugin-sdk/provider-auth-result` | Provider auth-result helpers | Standard OAuth auth-result builder |
|
|
245
|
+
| `plugin-sdk/provider-auth-login` | Provider interactive login helpers | Shared interactive login helpers |
|
|
246
|
+
| `plugin-sdk/provider-env-vars` | Provider env-var helpers | Provider auth env-var lookup helpers |
|
|
247
|
+
| `plugin-sdk/provider-model-shared` | Shared provider model/replay helpers | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, shared replay-policy builders, provider-endpoint helpers, and model-id normalization helpers |
|
|
248
|
+
| `plugin-sdk/provider-catalog-shared` | Shared provider catalog helpers | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
|
|
249
|
+
| `plugin-sdk/provider-onboard` | Provider onboarding patches | Onboarding config helpers |
|
|
250
|
+
| `plugin-sdk/provider-http` | Provider HTTP helpers | Generic provider HTTP/endpoint capability helpers |
|
|
251
|
+
| `plugin-sdk/provider-web-fetch` | Provider web-fetch helpers | Web-fetch provider registration/cache helpers |
|
|
252
|
+
| `plugin-sdk/provider-web-search` | Provider web-search helpers | Web-search provider registration/cache/config helpers |
|
|
253
|
+
| `plugin-sdk/provider-tools` | Provider tool/schema compat helpers | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, Gemini schema cleanup + diagnostics, and xAI compat helpers such as `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
|
|
254
|
+
| `plugin-sdk/provider-usage` | Provider usage helpers | `fetchClaudeUsage`, `fetchGeminiUsage`, `fetchGithubCopilotUsage`, and other provider usage helpers |
|
|
255
|
+
| `plugin-sdk/provider-stream` | Provider stream wrapper helpers | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, stream wrapper types, and shared Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot wrapper helpers |
|
|
256
|
+
| `plugin-sdk/keyed-async-queue` | Ordered async queue | `KeyedAsyncQueue` |
|
|
257
|
+
| `plugin-sdk/media-runtime` | Shared media helpers | Media fetch/transform/store helpers plus media payload builders |
|
|
258
|
+
| `plugin-sdk/media-understanding` | Media-understanding helpers | Media understanding provider types plus provider-facing image/audio helper exports |
|
|
259
|
+
| `plugin-sdk/text-runtime` | Shared text helpers | Assistant-visible-text stripping, markdown render/chunking/table helpers, redaction helpers, directive-tag helpers, safe-text utilities, and related text/logging helpers |
|
|
260
|
+
| `plugin-sdk/text-chunking` | Text chunking helpers | Outbound text chunking helper |
|
|
261
|
+
| `plugin-sdk/speech` | Speech helpers | Speech provider types plus provider-facing directive, registry, and validation helpers |
|
|
262
|
+
| `plugin-sdk/speech-core` | Shared speech core | Speech provider types, registry, directives, normalization |
|
|
263
|
+
| `plugin-sdk/realtime-transcription` | Realtime transcription helpers | Provider types and registry helpers |
|
|
264
|
+
| `plugin-sdk/realtime-voice` | Realtime voice helpers | Provider types and registry helpers |
|
|
265
|
+
| `plugin-sdk/image-generation-core` | Shared image-generation core | Image-generation types, failover, auth, and registry helpers |
|
|
266
|
+
| `plugin-sdk/video-generation` | Video-generation helpers | Video-generation provider/request/result types |
|
|
267
|
+
| `plugin-sdk/video-generation-core` | Shared video-generation core | Video-generation types, failover helpers, provider lookup, and model-ref parsing |
|
|
268
|
+
| `plugin-sdk/interactive-runtime` | Interactive reply helpers | Interactive reply payload normalization/reduction |
|
|
269
|
+
| `plugin-sdk/channel-config-primitives` | Channel config primitives | Narrow channel config-schema primitives |
|
|
270
|
+
| `plugin-sdk/channel-config-writes` | Channel config-write helpers | Channel config-write authorization helpers |
|
|
271
|
+
| `plugin-sdk/channel-plugin-common` | Shared channel prelude | Shared channel plugin prelude exports |
|
|
272
|
+
| `plugin-sdk/channel-status` | Channel status helpers | Shared channel status snapshot/summary helpers |
|
|
273
|
+
| `plugin-sdk/allowlist-config-edit` | Allowlist config helpers | Allowlist config edit/read helpers |
|
|
274
|
+
| `plugin-sdk/group-access` | Group access helpers | Shared group-access decision helpers |
|
|
275
|
+
| `plugin-sdk/direct-dm` | Direct-DM helpers | Shared direct-DM auth/guard helpers |
|
|
276
|
+
| `plugin-sdk/extension-shared` | Shared extension helpers | Passive-channel/status helper primitives |
|
|
277
|
+
| `plugin-sdk/webhook-targets` | Webhook target helpers | Webhook target registry and route-install helpers |
|
|
278
|
+
| `plugin-sdk/webhook-path` | Webhook path helpers | Webhook path normalization helpers |
|
|
279
|
+
| `plugin-sdk/web-media` | Shared web media helpers | Remote/local media loading helpers |
|
|
280
|
+
| `plugin-sdk/zod` | Zod re-export | Re-exported `zod` for plugin SDK consumers |
|
|
281
|
+
| `plugin-sdk/memory-core` | Bundled memory-core helpers | Memory manager/config/file/CLI helper surface |
|
|
282
|
+
| `plugin-sdk/memory-core-engine-runtime` | Memory engine runtime facade | Memory index/search runtime facade |
|
|
283
|
+
| `plugin-sdk/memory-core-host-engine-foundation` | Memory host foundation engine | Memory host foundation engine exports |
|
|
284
|
+
| `plugin-sdk/memory-core-host-engine-embeddings` | Memory host embedding engine | Memory host embedding engine exports |
|
|
285
|
+
| `plugin-sdk/memory-core-host-engine-qmd` | Memory host QMD engine | Memory host QMD engine exports |
|
|
286
|
+
| `plugin-sdk/memory-core-host-engine-storage` | Memory host storage engine | Memory host storage engine exports |
|
|
287
|
+
| `plugin-sdk/memory-core-host-multimodal` | Memory host multimodal helpers | Memory host multimodal helpers |
|
|
288
|
+
| `plugin-sdk/memory-core-host-query` | Memory host query helpers | Memory host query helpers |
|
|
289
|
+
| `plugin-sdk/memory-core-host-secret` | Memory host secret helpers | Memory host secret helpers |
|
|
290
|
+
| `plugin-sdk/memory-core-host-status` | Memory host status helpers | Memory host status helpers |
|
|
291
|
+
| `plugin-sdk/memory-core-host-runtime-cli` | Memory host CLI runtime | Memory host CLI runtime helpers |
|
|
292
|
+
| `plugin-sdk/memory-core-host-runtime-core` | Memory host core runtime | Memory host core runtime helpers |
|
|
293
|
+
| `plugin-sdk/memory-core-host-runtime-files` | Memory host file/runtime helpers | Memory host file/runtime helpers |
|
|
294
|
+
| `plugin-sdk/memory-lancedb` | Bundled memory-lancedb helpers | Memory-lancedb helper surface |
|
|
295
|
+
| `plugin-sdk/testing` | Test utilities | Test helpers and mocks |
|
|
296
|
+
</Accordion>
|
|
297
|
+
|
|
298
|
+
This table is intentionally the common migration subset, not the full SDK
|
|
299
|
+
surface. The full list of 200+ entrypoints lives in
|
|
300
|
+
`scripts/lib/plugin-sdk-entrypoints.json`.
|
|
301
|
+
|
|
302
|
+
That list still includes some bundled-plugin helper seams such as
|
|
303
|
+
`plugin-sdk/feishu`, `plugin-sdk/feishu-setup`, `plugin-sdk/zalo`,
|
|
304
|
+
`plugin-sdk/zalo-setup`, and `plugin-sdk/matrix*`. Those remain exported for
|
|
305
|
+
bundled-plugin maintenance and compatibility, but they are intentionally
|
|
306
|
+
omitted from the common migration table and are not the recommended target for
|
|
307
|
+
new plugin code.
|
|
308
|
+
|
|
309
|
+
The same rule applies to other bundled-helper families such as:
|
|
310
|
+
|
|
311
|
+
- browser support helpers: `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-support`
|
|
312
|
+
- Matrix: `plugin-sdk/matrix*`
|
|
313
|
+
- LINE: `plugin-sdk/line*`
|
|
314
|
+
- IRC: `plugin-sdk/irc*`
|
|
315
|
+
- bundled helper/plugin surfaces like `plugin-sdk/googlechat`,
|
|
316
|
+
`plugin-sdk/zalouser`, `plugin-sdk/bluebubbles*`,
|
|
317
|
+
`plugin-sdk/mattermost*`, `plugin-sdk/msteams`,
|
|
318
|
+
`plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`,
|
|
319
|
+
`plugin-sdk/twitch`,
|
|
320
|
+
`plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`,
|
|
321
|
+
`plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`,
|
|
322
|
+
`plugin-sdk/thread-ownership`, and `plugin-sdk/voice-call`
|
|
323
|
+
|
|
324
|
+
`plugin-sdk/github-copilot-token` currently exposes the narrow token-helper
|
|
325
|
+
surface `DEFAULT_COPILOT_API_BASE_URL`,
|
|
326
|
+
`deriveCopilotApiBaseUrlFromToken`, and `resolveCopilotApiToken`.
|
|
327
|
+
|
|
328
|
+
Use the narrowest import that matches the job. If you cannot find an export,
|
|
329
|
+
check the source at `src/plugin-sdk/` or ask in Discord.
|
|
330
|
+
|
|
331
|
+
## Removal timeline
|
|
332
|
+
|
|
333
|
+
| When | What happens |
|
|
334
|
+
| ---------------------- | ----------------------------------------------------------------------- |
|
|
335
|
+
| **Now** | Deprecated surfaces emit runtime warnings |
|
|
336
|
+
| **Next major release** | Deprecated surfaces will be removed; plugins still using them will fail |
|
|
337
|
+
|
|
338
|
+
All core plugins have already been migrated. External plugins should migrate
|
|
339
|
+
before the next major release.
|
|
340
|
+
|
|
341
|
+
## Suppressing the warnings temporarily
|
|
342
|
+
|
|
343
|
+
Set these environment variables while you work on migrating:
|
|
344
|
+
|
|
345
|
+
```bash
|
|
346
|
+
Durar_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 Durar gateway run
|
|
347
|
+
Durar_SUPPRESS_EXTENSION_API_WARNING=1 Durar gateway run
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
This is a temporary escape hatch, not a permanent solution.
|
|
351
|
+
|
|
352
|
+
## Related
|
|
353
|
+
|
|
354
|
+
- [Getting Started](/plugins/building-plugins) — build your first plugin
|
|
355
|
+
- [SDK Overview](/plugins/sdk-overview) — full subpath import reference
|
|
356
|
+
- [Channel Plugins](/plugins/sdk-channel-plugins) — building channel plugins
|
|
357
|
+
- [Provider Plugins](/plugins/sdk-provider-plugins) — building provider plugins
|
|
358
|
+
- [Plugin Internals](/plugins/architecture) — architecture deep dive
|
|
359
|
+
- [Plugin Manifest](/plugins/manifest) — manifest schema reference
|