@quantumclaw/quantumclaw 2026.3.22
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 +4601 -0
- package/LICENSE +21 -0
- package/README.md +559 -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 +31 -0
- package/docs/.i18n/glossary.ja-JP.json +14 -0
- package/docs/.i18n/glossary.zh-CN.json +302 -0
- package/docs/.i18n/ja-JP.tm.jsonl +0 -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/pixel-lobster.svg +60 -0
- package/docs/assets/quantumclaw-logo-text-dark.png +0 -0
- package/docs/assets/quantumclaw-logo-text-dark.svg +418 -0
- package/docs/assets/quantumclaw-logo-text.png +0 -0
- package/docs/assets/quantumclaw-logo-text.svg +418 -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.svg +14 -0
- package/docs/assets/sponsors/convex.svg +16 -0
- package/docs/assets/sponsors/openai.svg +3 -0
- package/docs/assets/sponsors/vercel.svg +5 -0
- package/docs/auth-credential-semantics.md +53 -0
- package/docs/automation/auth-monitoring.md +44 -0
- package/docs/automation/cron-jobs.md +727 -0
- package/docs/automation/cron-vs-heartbeat.md +286 -0
- package/docs/automation/gmail-pubsub.md +256 -0
- package/docs/automation/hooks.md +1056 -0
- package/docs/automation/poll.md +86 -0
- package/docs/automation/standing-orders.md +251 -0
- package/docs/automation/troubleshooting.md +122 -0
- package/docs/automation/webhook.md +217 -0
- package/docs/brave-search.md +93 -0
- package/docs/channels/bluebubbles.md +347 -0
- package/docs/channels/broadcast-groups.md +442 -0
- package/docs/channels/channel-routing.md +139 -0
- package/docs/channels/discord.md +1229 -0
- package/docs/channels/feishu.md +747 -0
- package/docs/channels/googlechat.md +261 -0
- package/docs/channels/group-messages.md +84 -0
- package/docs/channels/groups.md +379 -0
- package/docs/channels/imessage.md +367 -0
- package/docs/channels/index.md +47 -0
- package/docs/channels/irc.md +242 -0
- package/docs/channels/line.md +194 -0
- package/docs/channels/location.md +56 -0
- package/docs/channels/matrix.md +677 -0
- package/docs/channels/mattermost.md +427 -0
- package/docs/channels/msteams.md +780 -0
- package/docs/channels/nextcloud-talk.md +138 -0
- package/docs/channels/nostr.md +249 -0
- package/docs/channels/pairing.md +114 -0
- package/docs/channels/signal.md +329 -0
- package/docs/channels/slack.md +603 -0
- package/docs/channels/synology-chat.md +134 -0
- package/docs/channels/telegram.md +987 -0
- package/docs/channels/tlon.md +276 -0
- package/docs/channels/troubleshooting.md +118 -0
- package/docs/channels/twitch.md +379 -0
- package/docs/channels/whatsapp.md +460 -0
- package/docs/channels/zalo.md +243 -0
- package/docs/channels/zalouser.md +181 -0
- package/docs/ci.md +55 -0
- package/docs/cli/acp.md +288 -0
- package/docs/cli/agent.md +29 -0
- package/docs/cli/agents.md +123 -0
- package/docs/cli/approvals.md +50 -0
- package/docs/cli/backup.md +76 -0
- package/docs/cli/browser.md +106 -0
- package/docs/cli/channels.md +102 -0
- package/docs/cli/clawbot.md +21 -0
- package/docs/cli/completion.md +35 -0
- package/docs/cli/config.md +295 -0
- package/docs/cli/configure.md +36 -0
- package/docs/cli/cron.md +77 -0
- package/docs/cli/daemon.md +53 -0
- package/docs/cli/dashboard.md +22 -0
- package/docs/cli/devices.md +139 -0
- package/docs/cli/directory.md +63 -0
- package/docs/cli/dns.md +23 -0
- package/docs/cli/docs.md +15 -0
- package/docs/cli/doctor.md +48 -0
- package/docs/cli/gateway.md +235 -0
- package/docs/cli/health.md +21 -0
- package/docs/cli/hooks.md +329 -0
- package/docs/cli/index.md +1150 -0
- package/docs/cli/logs.md +28 -0
- package/docs/cli/memory.md +66 -0
- package/docs/cli/message.md +278 -0
- package/docs/cli/models.md +81 -0
- package/docs/cli/node.md +127 -0
- package/docs/cli/nodes.md +75 -0
- package/docs/cli/onboard.md +157 -0
- package/docs/cli/pairing.md +32 -0
- package/docs/cli/plugins.md +210 -0
- package/docs/cli/qr.md +46 -0
- package/docs/cli/reset.md +20 -0
- package/docs/cli/sandbox.md +197 -0
- package/docs/cli/secrets.md +188 -0
- package/docs/cli/security.md +79 -0
- package/docs/cli/sessions.md +110 -0
- package/docs/cli/setup.md +29 -0
- package/docs/cli/skills.md +36 -0
- package/docs/cli/status.md +30 -0
- package/docs/cli/system.md +60 -0
- package/docs/cli/tui.md +30 -0
- package/docs/cli/uninstall.md +20 -0
- package/docs/cli/update.md +103 -0
- package/docs/cli/voicecall.md +34 -0
- package/docs/cli/webhooks.md +25 -0
- package/docs/concepts/agent-loop.md +148 -0
- package/docs/concepts/agent-workspace.md +236 -0
- package/docs/concepts/agent.md +122 -0
- package/docs/concepts/architecture.md +137 -0
- package/docs/concepts/compaction.md +123 -0
- package/docs/concepts/context-engine.md +268 -0
- package/docs/concepts/context.md +172 -0
- package/docs/concepts/delegate-architecture.md +296 -0
- package/docs/concepts/features.md +73 -0
- package/docs/concepts/markdown-formatting.md +130 -0
- package/docs/concepts/memory.md +108 -0
- package/docs/concepts/messages.md +154 -0
- package/docs/concepts/model-failover.md +152 -0
- package/docs/concepts/model-providers.md +607 -0
- package/docs/concepts/models.md +225 -0
- package/docs/concepts/multi-agent.md +552 -0
- package/docs/concepts/oauth.md +158 -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 +121 -0
- package/docs/concepts/session-tool.md +242 -0
- package/docs/concepts/session.md +310 -0
- package/docs/concepts/streaming.md +155 -0
- package/docs/concepts/system-prompt.md +132 -0
- package/docs/concepts/timezone.md +91 -0
- package/docs/concepts/typebox.md +291 -0
- package/docs/concepts/typing-indicators.md +68 -0
- package/docs/concepts/usage-tracking.md +35 -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 +2078 -0
- package/docs/gateway/authentication.md +179 -0
- package/docs/gateway/background-process.md +97 -0
- package/docs/gateway/bonjour.md +177 -0
- package/docs/gateway/bridge-protocol.md +91 -0
- package/docs/gateway/cli-backends.md +225 -0
- package/docs/gateway/configuration-examples.md +651 -0
- package/docs/gateway/configuration-reference.md +3123 -0
- package/docs/gateway/configuration.md +633 -0
- package/docs/gateway/discovery.md +123 -0
- package/docs/gateway/doctor.md +362 -0
- package/docs/gateway/gateway-lock.md +34 -0
- package/docs/gateway/health.md +44 -0
- package/docs/gateway/heartbeat.md +393 -0
- package/docs/gateway/index.md +261 -0
- package/docs/gateway/local-models.md +152 -0
- package/docs/gateway/logging.md +113 -0
- package/docs/gateway/multiple-gateways.md +112 -0
- package/docs/gateway/network-model.md +22 -0
- package/docs/gateway/openai-http-api.md +132 -0
- package/docs/gateway/openresponses-http-api.md +295 -0
- package/docs/gateway/openshell.md +307 -0
- package/docs/gateway/pairing.md +99 -0
- package/docs/gateway/protocol.md +267 -0
- package/docs/gateway/remote-gateway-readme.md +158 -0
- package/docs/gateway/remote.md +153 -0
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +134 -0
- package/docs/gateway/sandboxing.md +469 -0
- package/docs/gateway/secrets-plan-contract.md +116 -0
- package/docs/gateway/secrets.md +503 -0
- package/docs/gateway/security/index.md +1220 -0
- package/docs/gateway/tailscale.md +132 -0
- package/docs/gateway/tools-invoke-http-api.md +118 -0
- package/docs/gateway/troubleshooting.md +378 -0
- package/docs/gateway/trusted-proxy-auth.md +330 -0
- package/docs/help/debugging.md +168 -0
- package/docs/help/environment.md +163 -0
- package/docs/help/faq.md +2997 -0
- package/docs/help/index.md +28 -0
- package/docs/help/scripts.md +28 -0
- package/docs/help/testing.md +526 -0
- package/docs/help/troubleshooting.md +297 -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/development-channels.md +120 -0
- package/docs/install/digitalocean.md +129 -0
- package/docs/install/docker-vm-runtime.md +142 -0
- package/docs/install/docker.md +375 -0
- package/docs/install/exe-dev.md +126 -0
- package/docs/install/fly.md +501 -0
- package/docs/install/gcp.md +402 -0
- package/docs/install/hetzner.md +251 -0
- package/docs/install/index.md +183 -0
- package/docs/install/installer.md +415 -0
- package/docs/install/kubernetes.md +191 -0
- package/docs/install/macos-vm.md +281 -0
- package/docs/install/migrating-matrix.md +346 -0
- package/docs/install/migrating.md +110 -0
- package/docs/install/nix.md +89 -0
- package/docs/install/node.md +138 -0
- package/docs/install/northflank.mdx +54 -0
- package/docs/install/oracle.md +156 -0
- package/docs/install/podman.md +133 -0
- package/docs/install/railway.mdx +100 -0
- package/docs/install/raspberry-pi.md +159 -0
- package/docs/install/render.mdx +169 -0
- package/docs/install/uninstall.md +128 -0
- package/docs/install/updating.md +128 -0
- package/docs/ja-JP/index.md +186 -0
- package/docs/ja-JP/start/getting-started.md +125 -0
- package/docs/ja-JP/start/wizard.md +77 -0
- package/docs/logging.md +352 -0
- package/docs/nav-tabs-underline.js +100 -0
- package/docs/network.md +54 -0
- package/docs/nodes/audio.md +187 -0
- package/docs/nodes/camera.md +162 -0
- package/docs/nodes/images.md +72 -0
- package/docs/nodes/index.md +393 -0
- package/docs/nodes/location-command.md +98 -0
- package/docs/nodes/media-understanding.md +394 -0
- package/docs/nodes/talk.md +92 -0
- package/docs/nodes/troubleshooting.md +114 -0
- package/docs/nodes/voicewake.md +66 -0
- package/docs/perplexity.md +174 -0
- package/docs/pi-dev.md +80 -0
- package/docs/pi.md +567 -0
- package/docs/platforms/android.md +168 -0
- package/docs/platforms/digitalocean.md +266 -0
- package/docs/platforms/index.md +54 -0
- package/docs/platforms/ios.md +220 -0
- package/docs/platforms/linux.md +94 -0
- package/docs/platforms/mac/bundled-gateway.md +73 -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 +104 -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 +33 -0
- package/docs/platforms/mac/voice-overlay.md +60 -0
- package/docs/platforms/mac/voicewake.md +67 -0
- package/docs/platforms/mac/webchat.md +43 -0
- package/docs/platforms/mac/xpc.md +61 -0
- package/docs/platforms/macos.md +226 -0
- package/docs/platforms/oracle.md +303 -0
- package/docs/platforms/raspberry-pi.md +412 -0
- package/docs/platforms/windows.md +241 -0
- package/docs/plugins/agent-tools.md +10 -0
- package/docs/plugins/architecture.md +1366 -0
- package/docs/plugins/building-extensions.md +10 -0
- package/docs/plugins/building-plugins.md +239 -0
- package/docs/plugins/bundles.md +181 -0
- package/docs/plugins/community.md +145 -0
- package/docs/plugins/manifest.md +241 -0
- package/docs/plugins/sdk-channel-plugins.md +370 -0
- package/docs/plugins/sdk-entrypoints.md +161 -0
- package/docs/plugins/sdk-migration.md +172 -0
- package/docs/plugins/sdk-overview.md +196 -0
- package/docs/plugins/sdk-provider-plugins.md +370 -0
- package/docs/plugins/sdk-runtime.md +345 -0
- package/docs/plugins/sdk-setup.md +331 -0
- package/docs/plugins/sdk-testing.md +263 -0
- package/docs/plugins/voice-call.md +380 -0
- package/docs/plugins/zalouser.md +77 -0
- package/docs/prose.md +134 -0
- package/docs/providers/anthropic.md +259 -0
- package/docs/providers/bedrock.md +176 -0
- package/docs/providers/claude-max-api-proxy.md +154 -0
- package/docs/providers/cloudflare-ai-gateway.md +71 -0
- package/docs/providers/deepgram.md +93 -0
- package/docs/providers/github-copilot.md +72 -0
- package/docs/providers/glm.md +43 -0
- package/docs/providers/google.md +78 -0
- package/docs/providers/groq.md +96 -0
- package/docs/providers/huggingface.md +209 -0
- package/docs/providers/index.md +69 -0
- package/docs/providers/kilocode.md +74 -0
- package/docs/providers/litellm.md +154 -0
- package/docs/providers/minimax.md +224 -0
- package/docs/providers/mistral.md +54 -0
- package/docs/providers/models.md +45 -0
- package/docs/providers/modelstudio.md +66 -0
- package/docs/providers/moonshot.md +175 -0
- package/docs/providers/nvidia.md +55 -0
- package/docs/providers/ollama.md +352 -0
- package/docs/providers/openai.md +303 -0
- package/docs/providers/opencode-go.md +45 -0
- package/docs/providers/opencode.md +64 -0
- package/docs/providers/openrouter.md +37 -0
- package/docs/providers/perplexity-provider.md +62 -0
- package/docs/providers/qianfan.md +38 -0
- package/docs/providers/qwen.md +53 -0
- package/docs/providers/sglang.md +104 -0
- package/docs/providers/synthetic.md +99 -0
- package/docs/providers/together.md +66 -0
- package/docs/providers/venice.md +282 -0
- package/docs/providers/vercel-ai-gateway.md +60 -0
- package/docs/providers/vllm.md +92 -0
- package/docs/providers/volcengine.md +74 -0
- package/docs/providers/xai.md +60 -0
- package/docs/providers/xiaomi.md +86 -0
- package/docs/providers/zai.md +46 -0
- package/docs/reference/AGENTS.default.md +126 -0
- package/docs/reference/RELEASING.md +42 -0
- package/docs/reference/api-usage-costs.md +144 -0
- package/docs/reference/credits.md +30 -0
- package/docs/reference/device-models.md +47 -0
- package/docs/reference/memory-config.md +711 -0
- package/docs/reference/prompt-caching.md +185 -0
- package/docs/reference/rpc.md +43 -0
- package/docs/reference/secretref-credential-surface.md +140 -0
- package/docs/reference/secretref-user-supplied-credentials-matrix.json +563 -0
- package/docs/reference/session-management-compaction.md +324 -0
- package/docs/reference/templates/AGENTS.dev.md +83 -0
- package/docs/reference/templates/AGENTS.md +219 -0
- package/docs/reference/templates/BOOT.md +11 -0
- package/docs/reference/templates/BOOTSTRAP.md +62 -0
- package/docs/reference/templates/HEARTBEAT.md +14 -0
- package/docs/reference/templates/IDENTITY.dev.md +47 -0
- package/docs/reference/templates/IDENTITY.md +29 -0
- package/docs/reference/templates/SOUL.dev.md +76 -0
- package/docs/reference/templates/SOUL.md +43 -0
- package/docs/reference/templates/TOOLS.dev.md +24 -0
- package/docs/reference/templates/TOOLS.md +47 -0
- package/docs/reference/templates/USER.dev.md +18 -0
- package/docs/reference/templates/USER.md +23 -0
- package/docs/reference/test.md +90 -0
- package/docs/reference/token-use.md +175 -0
- package/docs/reference/transcript-hygiene.md +151 -0
- package/docs/reference/wizard.md +235 -0
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +98 -0
- package/docs/security/THREAT-MODEL-ATLAS.md +611 -0
- package/docs/security/formal-verification.md +167 -0
- package/docs/start/bootstrapping.md +41 -0
- package/docs/start/docs-directory.md +66 -0
- package/docs/start/getting-started.md +116 -0
- package/docs/start/hubs.md +198 -0
- package/docs/start/lore.md +219 -0
- package/docs/start/onboarding-overview.md +67 -0
- package/docs/start/onboarding.md +91 -0
- package/docs/start/openclaw.md +221 -0
- package/docs/start/quickstart.md +22 -0
- package/docs/start/setup.md +164 -0
- package/docs/start/showcase.md +418 -0
- package/docs/start/wizard-cli-automation.md +215 -0
- package/docs/start/wizard-cli-reference.md +299 -0
- package/docs/start/wizard.md +125 -0
- package/docs/style.css +37 -0
- package/docs/tools/acp-agents.md +623 -0
- package/docs/tools/agent-send.md +100 -0
- package/docs/tools/apply-patch.md +51 -0
- package/docs/tools/brave-search.md +93 -0
- package/docs/tools/browser-linux-troubleshooting.md +138 -0
- package/docs/tools/browser-login.md +73 -0
- package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +211 -0
- package/docs/tools/browser.md +731 -0
- package/docs/tools/btw.md +142 -0
- package/docs/tools/capability-cookbook.md +119 -0
- package/docs/tools/clawhub.md +298 -0
- package/docs/tools/creating-skills.md +117 -0
- package/docs/tools/diffs.md +386 -0
- package/docs/tools/elevated.md +114 -0
- package/docs/tools/exec-approvals.md +430 -0
- package/docs/tools/exec.md +207 -0
- package/docs/tools/firecrawl.md +140 -0
- package/docs/tools/index.md +137 -0
- package/docs/tools/llm-task.md +119 -0
- package/docs/tools/lobster.md +340 -0
- package/docs/tools/loop-detection.md +100 -0
- package/docs/tools/multi-agent-sandbox-tools.md +364 -0
- package/docs/tools/pdf.md +156 -0
- package/docs/tools/perplexity-search.md +174 -0
- package/docs/tools/plugin.md +255 -0
- package/docs/tools/reactions.md +64 -0
- package/docs/tools/skills-config.md +86 -0
- package/docs/tools/skills.md +309 -0
- package/docs/tools/slash-commands.md +294 -0
- package/docs/tools/subagents.md +295 -0
- package/docs/tools/tavily.md +125 -0
- package/docs/tools/thinking.md +96 -0
- package/docs/tools/tts.md +406 -0
- package/docs/tools/web.md +516 -0
- package/docs/tts.md +406 -0
- package/docs/vps.md +112 -0
- package/docs/web/control-ui.md +275 -0
- package/docs/web/dashboard.md +54 -0
- package/docs/web/index.md +120 -0
- package/docs/web/tui.md +170 -0
- package/docs/web/webchat.md +61 -0
- package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
- package/docs/whatsapp-openclaw.jpg +0 -0
- package/docs/zh-CN/AGENTS.md +61 -0
- package/docs/zh-CN/automation/auth-monitoring.md +47 -0
- package/docs/zh-CN/automation/cron-jobs.md +435 -0
- package/docs/zh-CN/automation/cron-vs-heartbeat.md +286 -0
- package/docs/zh-CN/automation/gmail-pubsub.md +249 -0
- package/docs/zh-CN/automation/hooks.md +1051 -0
- package/docs/zh-CN/automation/poll.md +76 -0
- package/docs/zh-CN/automation/troubleshooting.md +8 -0
- package/docs/zh-CN/automation/webhook.md +163 -0
- package/docs/zh-CN/brave-search.md +60 -0
- package/docs/zh-CN/channels/bluebubbles.md +354 -0
- package/docs/zh-CN/channels/broadcast-groups.md +449 -0
- package/docs/zh-CN/channels/channel-routing.md +117 -0
- package/docs/zh-CN/channels/discord.md +468 -0
- package/docs/zh-CN/channels/feishu.md +728 -0
- package/docs/zh-CN/channels/googlechat.md +257 -0
- package/docs/zh-CN/channels/grammy.md +38 -0
- package/docs/zh-CN/channels/group-messages.md +91 -0
- package/docs/zh-CN/channels/groups.md +379 -0
- package/docs/zh-CN/channels/imessage.md +302 -0
- package/docs/zh-CN/channels/index.md +53 -0
- package/docs/zh-CN/channels/line.md +180 -0
- package/docs/zh-CN/channels/location.md +63 -0
- package/docs/zh-CN/channels/matrix.md +221 -0
- package/docs/zh-CN/channels/mattermost.md +144 -0
- package/docs/zh-CN/channels/msteams.md +775 -0
- package/docs/zh-CN/channels/nextcloud-talk.md +142 -0
- package/docs/zh-CN/channels/nostr.md +249 -0
- package/docs/zh-CN/channels/pairing.md +89 -0
- package/docs/zh-CN/channels/signal.md +209 -0
- package/docs/zh-CN/channels/slack.md +531 -0
- package/docs/zh-CN/channels/synology-chat.md +138 -0
- package/docs/zh-CN/channels/telegram.md +751 -0
- package/docs/zh-CN/channels/tlon.md +136 -0
- package/docs/zh-CN/channels/troubleshooting.md +36 -0
- package/docs/zh-CN/channels/twitch.md +385 -0
- package/docs/zh-CN/channels/whatsapp.md +411 -0
- package/docs/zh-CN/channels/zalo.md +196 -0
- package/docs/zh-CN/channels/zalouser.md +147 -0
- package/docs/zh-CN/cli/acp.md +173 -0
- package/docs/zh-CN/cli/agent.md +30 -0
- package/docs/zh-CN/cli/agents.md +82 -0
- package/docs/zh-CN/cli/approvals.md +57 -0
- package/docs/zh-CN/cli/browser.md +114 -0
- package/docs/zh-CN/cli/channels.md +86 -0
- package/docs/zh-CN/cli/config.md +57 -0
- package/docs/zh-CN/cli/configure.md +38 -0
- package/docs/zh-CN/cli/cron.md +43 -0
- package/docs/zh-CN/cli/dashboard.md +23 -0
- package/docs/zh-CN/cli/devices.md +74 -0
- package/docs/zh-CN/cli/directory.md +70 -0
- package/docs/zh-CN/cli/dns.md +30 -0
- package/docs/zh-CN/cli/docs.md +22 -0
- package/docs/zh-CN/cli/doctor.md +48 -0
- package/docs/zh-CN/cli/gateway.md +206 -0
- package/docs/zh-CN/cli/health.md +28 -0
- package/docs/zh-CN/cli/hooks.md +298 -0
- package/docs/zh-CN/cli/index.md +1143 -0
- package/docs/zh-CN/cli/logs.md +31 -0
- package/docs/zh-CN/cli/memory.md +52 -0
- package/docs/zh-CN/cli/message.md +246 -0
- package/docs/zh-CN/cli/models.md +85 -0
- package/docs/zh-CN/cli/node.md +115 -0
- package/docs/zh-CN/cli/nodes.md +80 -0
- package/docs/zh-CN/cli/onboard.md +164 -0
- package/docs/zh-CN/cli/pairing.md +28 -0
- package/docs/zh-CN/cli/plugins.md +66 -0
- package/docs/zh-CN/cli/reset.md +24 -0
- package/docs/zh-CN/cli/sandbox.md +158 -0
- package/docs/zh-CN/cli/security.md +33 -0
- package/docs/zh-CN/cli/sessions.md +23 -0
- package/docs/zh-CN/cli/setup.md +36 -0
- package/docs/zh-CN/cli/skills.md +33 -0
- package/docs/zh-CN/cli/status.md +33 -0
- package/docs/zh-CN/cli/system.md +63 -0
- package/docs/zh-CN/cli/tui.md +30 -0
- package/docs/zh-CN/cli/uninstall.md +24 -0
- package/docs/zh-CN/cli/update.md +101 -0
- package/docs/zh-CN/cli/voicecall.md +41 -0
- package/docs/zh-CN/cli/webhooks.md +32 -0
- package/docs/zh-CN/concepts/agent-loop.md +146 -0
- package/docs/zh-CN/concepts/agent-workspace.md +219 -0
- package/docs/zh-CN/concepts/agent.md +115 -0
- package/docs/zh-CN/concepts/architecture.md +123 -0
- package/docs/zh-CN/concepts/compaction.md +67 -0
- package/docs/zh-CN/concepts/context.md +168 -0
- package/docs/zh-CN/concepts/features.md +59 -0
- package/docs/zh-CN/concepts/markdown-formatting.md +117 -0
- package/docs/zh-CN/concepts/memory.md +412 -0
- package/docs/zh-CN/concepts/messages.md +141 -0
- package/docs/zh-CN/concepts/model-failover.md +145 -0
- package/docs/zh-CN/concepts/model-providers.md +606 -0
- package/docs/zh-CN/concepts/models.md +225 -0
- package/docs/zh-CN/concepts/multi-agent.md +372 -0
- package/docs/zh-CN/concepts/oauth.md +164 -0
- package/docs/zh-CN/concepts/presence.md +99 -0
- package/docs/zh-CN/concepts/queue.md +94 -0
- package/docs/zh-CN/concepts/retry.md +76 -0
- package/docs/zh-CN/concepts/session-pruning.md +129 -0
- package/docs/zh-CN/concepts/session-tool.md +200 -0
- package/docs/zh-CN/concepts/session.md +166 -0
- package/docs/zh-CN/concepts/streaming.md +133 -0
- package/docs/zh-CN/concepts/system-prompt.md +101 -0
- package/docs/zh-CN/concepts/timezone.md +96 -0
- package/docs/zh-CN/concepts/typebox.md +284 -0
- package/docs/zh-CN/concepts/typing-indicators.md +74 -0
- package/docs/zh-CN/concepts/usage-tracking.md +42 -0
- package/docs/zh-CN/date-time.md +129 -0
- package/docs/zh-CN/debug/node-issue.md +90 -0
- package/docs/zh-CN/diagnostics/flags.md +98 -0
- package/docs/zh-CN/gateway/authentication.md +184 -0
- package/docs/zh-CN/gateway/background-process.md +100 -0
- package/docs/zh-CN/gateway/bonjour.md +174 -0
- package/docs/zh-CN/gateway/bridge-protocol.md +86 -0
- package/docs/zh-CN/gateway/cli-backends.md +213 -0
- package/docs/zh-CN/gateway/configuration-examples.md +587 -0
- package/docs/zh-CN/gateway/configuration-reference.md +3103 -0
- package/docs/zh-CN/gateway/configuration.md +640 -0
- package/docs/zh-CN/gateway/discovery.md +123 -0
- package/docs/zh-CN/gateway/doctor.md +238 -0
- package/docs/zh-CN/gateway/gateway-lock.md +41 -0
- package/docs/zh-CN/gateway/health.md +42 -0
- package/docs/zh-CN/gateway/heartbeat.md +274 -0
- package/docs/zh-CN/gateway/index.md +335 -0
- package/docs/zh-CN/gateway/local-models.md +159 -0
- package/docs/zh-CN/gateway/logging.md +114 -0
- package/docs/zh-CN/gateway/multiple-gateways.md +119 -0
- package/docs/zh-CN/gateway/network-model.md +23 -0
- package/docs/zh-CN/gateway/openai-http-api.md +125 -0
- package/docs/zh-CN/gateway/openresponses-http-api.md +317 -0
- package/docs/zh-CN/gateway/pairing.md +99 -0
- package/docs/zh-CN/gateway/protocol.md +220 -0
- package/docs/zh-CN/gateway/remote-gateway-readme.md +164 -0
- package/docs/zh-CN/gateway/remote.md +133 -0
- package/docs/zh-CN/gateway/sandbox-vs-tool-policy-vs-elevated.md +135 -0
- package/docs/zh-CN/gateway/sandboxing.md +188 -0
- package/docs/zh-CN/gateway/security/index.md +777 -0
- package/docs/zh-CN/gateway/tailscale.md +124 -0
- package/docs/zh-CN/gateway/tools-invoke-http-api.md +92 -0
- package/docs/zh-CN/gateway/troubleshooting.md +771 -0
- package/docs/zh-CN/help/debugging.md +160 -0
- package/docs/zh-CN/help/environment.md +88 -0
- package/docs/zh-CN/help/faq.md +2640 -0
- package/docs/zh-CN/help/index.md +28 -0
- package/docs/zh-CN/help/scripts.md +35 -0
- package/docs/zh-CN/help/testing.md +375 -0
- package/docs/zh-CN/help/troubleshooting.md +104 -0
- package/docs/zh-CN/index.md +186 -0
- package/docs/zh-CN/install/ansible.md +215 -0
- package/docs/zh-CN/install/bun.md +65 -0
- package/docs/zh-CN/install/development-channels.md +81 -0
- package/docs/zh-CN/install/docker.md +532 -0
- package/docs/zh-CN/install/exe-dev.md +133 -0
- package/docs/zh-CN/install/fly.md +490 -0
- package/docs/zh-CN/install/gcp.md +510 -0
- package/docs/zh-CN/install/hetzner.md +337 -0
- package/docs/zh-CN/install/index.md +235 -0
- package/docs/zh-CN/install/installer.md +422 -0
- package/docs/zh-CN/install/macos-vm.md +288 -0
- package/docs/zh-CN/install/migrating.md +199 -0
- package/docs/zh-CN/install/nix.md +99 -0
- package/docs/zh-CN/install/node.md +8 -0
- package/docs/zh-CN/install/northflank.mdx +60 -0
- package/docs/zh-CN/install/railway.mdx +106 -0
- package/docs/zh-CN/install/render.mdx +169 -0
- package/docs/zh-CN/install/uninstall.md +135 -0
- package/docs/zh-CN/install/updating.md +233 -0
- package/docs/zh-CN/logging.md +329 -0
- package/docs/zh-CN/network.md +59 -0
- package/docs/zh-CN/nodes/audio.md +120 -0
- package/docs/zh-CN/nodes/camera.md +162 -0
- package/docs/zh-CN/nodes/images.md +79 -0
- package/docs/zh-CN/nodes/index.md +348 -0
- package/docs/zh-CN/nodes/location-command.md +120 -0
- package/docs/zh-CN/nodes/media-understanding.md +380 -0
- package/docs/zh-CN/nodes/talk.md +97 -0
- package/docs/zh-CN/nodes/troubleshooting.md +8 -0
- package/docs/zh-CN/nodes/voicewake.md +72 -0
- package/docs/zh-CN/perplexity.md +102 -0
- package/docs/zh-CN/pi-dev.md +77 -0
- package/docs/zh-CN/pi.md +619 -0
- package/docs/zh-CN/platforms/android.md +155 -0
- package/docs/zh-CN/platforms/digitalocean.md +273 -0
- package/docs/zh-CN/platforms/index.md +60 -0
- package/docs/zh-CN/platforms/ios.md +114 -0
- package/docs/zh-CN/platforms/linux.md +100 -0
- package/docs/zh-CN/platforms/mac/bundled-gateway.md +75 -0
- package/docs/zh-CN/platforms/mac/canvas.md +128 -0
- package/docs/zh-CN/platforms/mac/child-process.md +73 -0
- package/docs/zh-CN/platforms/mac/dev-setup.md +109 -0
- package/docs/zh-CN/platforms/mac/health.md +41 -0
- package/docs/zh-CN/platforms/mac/icon.md +38 -0
- package/docs/zh-CN/platforms/mac/logging.md +64 -0
- package/docs/zh-CN/platforms/mac/menu-bar.md +88 -0
- package/docs/zh-CN/platforms/mac/peekaboo.md +62 -0
- package/docs/zh-CN/platforms/mac/permissions.md +46 -0
- package/docs/zh-CN/platforms/mac/remote.md +90 -0
- package/docs/zh-CN/platforms/mac/signing.md +54 -0
- package/docs/zh-CN/platforms/mac/skills.md +40 -0
- package/docs/zh-CN/platforms/mac/voice-overlay.md +67 -0
- package/docs/zh-CN/platforms/mac/voicewake.md +74 -0
- package/docs/zh-CN/platforms/mac/webchat.md +43 -0
- package/docs/zh-CN/platforms/mac/xpc.md +68 -0
- package/docs/zh-CN/platforms/macos.md +193 -0
- package/docs/zh-CN/platforms/oracle.md +310 -0
- package/docs/zh-CN/platforms/raspberry-pi.md +416 -0
- package/docs/zh-CN/platforms/windows.md +247 -0
- package/docs/zh-CN/plugins/agent-tools.md +99 -0
- package/docs/zh-CN/plugins/manifest.md +68 -0
- package/docs/zh-CN/plugins/voice-call.md +250 -0
- package/docs/zh-CN/plugins/zalouser.md +88 -0
- package/docs/zh-CN/prose.md +141 -0
- package/docs/zh-CN/providers/anthropic.md +265 -0
- package/docs/zh-CN/providers/bedrock.md +170 -0
- package/docs/zh-CN/providers/claude-max-api-proxy.md +155 -0
- package/docs/zh-CN/providers/cloudflare-ai-gateway.md +78 -0
- package/docs/zh-CN/providers/deepgram.md +97 -0
- package/docs/zh-CN/providers/github-copilot.md +67 -0
- package/docs/zh-CN/providers/glm.md +50 -0
- package/docs/zh-CN/providers/huggingface.md +216 -0
- package/docs/zh-CN/providers/index.md +69 -0
- package/docs/zh-CN/providers/kilocode.md +80 -0
- package/docs/zh-CN/providers/litellm.md +160 -0
- package/docs/zh-CN/providers/minimax.md +222 -0
- package/docs/zh-CN/providers/mistral.md +61 -0
- package/docs/zh-CN/providers/models.md +51 -0
- package/docs/zh-CN/providers/moonshot.md +182 -0
- package/docs/zh-CN/providers/nvidia.md +62 -0
- package/docs/zh-CN/providers/ollama.md +359 -0
- package/docs/zh-CN/providers/openai.md +308 -0
- package/docs/zh-CN/providers/opencode-go.md +52 -0
- package/docs/zh-CN/providers/opencode.md +71 -0
- package/docs/zh-CN/providers/openrouter.md +44 -0
- package/docs/zh-CN/providers/qianfan.md +45 -0
- package/docs/zh-CN/providers/qwen.md +55 -0
- package/docs/zh-CN/providers/sglang.md +111 -0
- package/docs/zh-CN/providers/synthetic.md +106 -0
- package/docs/zh-CN/providers/together.md +72 -0
- package/docs/zh-CN/providers/venice.md +289 -0
- package/docs/zh-CN/providers/vercel-ai-gateway.md +66 -0
- package/docs/zh-CN/providers/xiaomi.md +93 -0
- package/docs/zh-CN/providers/zai.md +53 -0
- package/docs/zh-CN/reference/AGENTS.default.md +131 -0
- package/docs/zh-CN/reference/RELEASING.md +48 -0
- package/docs/zh-CN/reference/api-usage-costs.md +141 -0
- package/docs/zh-CN/reference/credits.md +34 -0
- package/docs/zh-CN/reference/device-models.md +54 -0
- package/docs/zh-CN/reference/rpc.md +48 -0
- package/docs/zh-CN/reference/session-management-compaction.md +287 -0
- package/docs/zh-CN/reference/templates/AGENTS.dev.md +89 -0
- package/docs/zh-CN/reference/templates/AGENTS.md +225 -0
- package/docs/zh-CN/reference/templates/BOOT.md +17 -0
- package/docs/zh-CN/reference/templates/BOOTSTRAP.md +68 -0
- package/docs/zh-CN/reference/templates/HEARTBEAT.md +18 -0
- package/docs/zh-CN/reference/templates/IDENTITY.dev.md +54 -0
- package/docs/zh-CN/reference/templates/IDENTITY.md +36 -0
- package/docs/zh-CN/reference/templates/SOUL.dev.md +83 -0
- package/docs/zh-CN/reference/templates/SOUL.md +49 -0
- package/docs/zh-CN/reference/templates/TOOLS.dev.md +31 -0
- package/docs/zh-CN/reference/templates/TOOLS.md +53 -0
- package/docs/zh-CN/reference/templates/USER.dev.md +25 -0
- package/docs/zh-CN/reference/templates/USER.md +30 -0
- package/docs/zh-CN/reference/test.md +57 -0
- package/docs/zh-CN/reference/token-use.md +119 -0
- package/docs/zh-CN/reference/transcript-hygiene.md +109 -0
- package/docs/zh-CN/reference/wizard.md +242 -0
- package/docs/zh-CN/security/formal-verification.md +171 -0
- package/docs/zh-CN/start/bootstrapping.md +9 -0
- package/docs/zh-CN/start/docs-directory.md +70 -0
- package/docs/zh-CN/start/getting-started.md +143 -0
- package/docs/zh-CN/start/hubs.md +194 -0
- package/docs/zh-CN/start/lore.md +226 -0
- package/docs/zh-CN/start/onboarding-overview.md +58 -0
- package/docs/zh-CN/start/onboarding.md +105 -0
- package/docs/zh-CN/start/openclaw.md +248 -0
- package/docs/zh-CN/start/quickstart.md +88 -0
- package/docs/zh-CN/start/setup.md +153 -0
- package/docs/zh-CN/start/showcase.md +423 -0
- package/docs/zh-CN/start/wizard-cli-automation.md +222 -0
- package/docs/zh-CN/start/wizard-cli-reference.md +306 -0
- package/docs/zh-CN/start/wizard.md +132 -0
- package/docs/zh-CN/tools/agent-send.md +59 -0
- package/docs/zh-CN/tools/apply-patch.md +57 -0
- package/docs/zh-CN/tools/browser-linux-troubleshooting.md +144 -0
- package/docs/zh-CN/tools/browser-login.md +75 -0
- package/docs/zh-CN/tools/browser.md +553 -0
- package/docs/zh-CN/tools/chrome-extension.md +183 -0
- package/docs/zh-CN/tools/clawhub.md +209 -0
- package/docs/zh-CN/tools/creating-skills.md +61 -0
- package/docs/zh-CN/tools/elevated.md +64 -0
- package/docs/zh-CN/tools/exec-approvals.md +234 -0
- package/docs/zh-CN/tools/exec.md +169 -0
- package/docs/zh-CN/tools/firecrawl.md +68 -0
- package/docs/zh-CN/tools/index.md +515 -0
- package/docs/zh-CN/tools/llm-task.md +117 -0
- package/docs/zh-CN/tools/lobster.md +349 -0
- package/docs/zh-CN/tools/multi-agent-sandbox-tools.md +401 -0
- package/docs/zh-CN/tools/plugin.md +1612 -0
- package/docs/zh-CN/tools/reactions.md +29 -0
- package/docs/zh-CN/tools/skills-config.md +78 -0
- package/docs/zh-CN/tools/skills.md +279 -0
- package/docs/zh-CN/tools/slash-commands.md +205 -0
- package/docs/zh-CN/tools/subagents.md +167 -0
- package/docs/zh-CN/tools/thinking.md +80 -0
- package/docs/zh-CN/tools/web.md +289 -0
- package/docs/zh-CN/tts.md +375 -0
- package/docs/zh-CN/vps.md +47 -0
- package/docs/zh-CN/web/control-ui.md +191 -0
- package/docs/zh-CN/web/dashboard.md +53 -0
- package/docs/zh-CN/web/index.md +118 -0
- package/docs/zh-CN/web/tui.md +166 -0
- package/docs/zh-CN/web/webchat.md +56 -0
- package/package.json +841 -0
- package/quantumclaw.mjs +135 -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 +198 -0
- package/skills/clawhub/SKILL.md +77 -0
- package/skills/coding-agent/SKILL.md +295 -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 +865 -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-image-gen/SKILL.md +92 -0
- package/skills/openai-image-gen/scripts/gen.py +328 -0
- package/skills/openai-image-gen/scripts/test_gen.py +140 -0
- package/skills/openai-whisper/SKILL.md +38 -0
- package/skills/openai-whisper-api/SKILL.md +52 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +85 -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 +115 -0
- package/skills/sherpa-onnx-tts/SKILL.md +103 -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/things-mac/SKILL.md +86 -0
- package/skills/tmux/SKILL.md +153 -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 +95 -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 +112 -0
- package/skills/xurl/SKILL.md +461 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Poll sending via gateway + CLI"
|
|
3
|
+
read_when:
|
|
4
|
+
- Adding or modifying poll support
|
|
5
|
+
- Debugging poll sends from the CLI or gateway
|
|
6
|
+
title: "Polls"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Polls
|
|
10
|
+
|
|
11
|
+
## Supported channels
|
|
12
|
+
|
|
13
|
+
- Telegram
|
|
14
|
+
- WhatsApp (web channel)
|
|
15
|
+
- Discord
|
|
16
|
+
- Microsoft Teams (Adaptive Cards)
|
|
17
|
+
|
|
18
|
+
## CLI
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Telegram
|
|
22
|
+
quantumclaw message poll --channel telegram --target 123456789 \
|
|
23
|
+
--poll-question "Ship it?" --poll-option "Yes" --poll-option "No"
|
|
24
|
+
quantumclaw message poll --channel telegram --target -1001234567890:topic:42 \
|
|
25
|
+
--poll-question "Pick a time" --poll-option "10am" --poll-option "2pm" \
|
|
26
|
+
--poll-duration-seconds 300
|
|
27
|
+
|
|
28
|
+
# WhatsApp
|
|
29
|
+
quantumclaw message poll --target +15555550123 \
|
|
30
|
+
--poll-question "Lunch today?" --poll-option "Yes" --poll-option "No" --poll-option "Maybe"
|
|
31
|
+
quantumclaw message poll --target 123456789@g.us \
|
|
32
|
+
--poll-question "Meeting time?" --poll-option "10am" --poll-option "2pm" --poll-option "4pm" --poll-multi
|
|
33
|
+
|
|
34
|
+
# Discord
|
|
35
|
+
quantumclaw message poll --channel discord --target channel:123456789 \
|
|
36
|
+
--poll-question "Snack?" --poll-option "Pizza" --poll-option "Sushi"
|
|
37
|
+
quantumclaw message poll --channel discord --target channel:123456789 \
|
|
38
|
+
--poll-question "Plan?" --poll-option "A" --poll-option "B" --poll-duration-hours 48
|
|
39
|
+
|
|
40
|
+
# Microsoft Teams
|
|
41
|
+
quantumclaw message poll --channel msteams --target conversation:19:abc@thread.tacv2 \
|
|
42
|
+
--poll-question "Lunch?" --poll-option "Pizza" --poll-option "Sushi"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Options:
|
|
46
|
+
|
|
47
|
+
- `--channel`: `whatsapp` (default), `telegram`, `discord`, or `msteams`
|
|
48
|
+
- `--poll-multi`: allow selecting multiple options
|
|
49
|
+
- `--poll-duration-hours`: Discord-only (defaults to 24 when omitted)
|
|
50
|
+
- `--poll-duration-seconds`: Telegram-only (5-600 seconds)
|
|
51
|
+
- `--poll-anonymous` / `--poll-public`: Telegram-only poll visibility
|
|
52
|
+
|
|
53
|
+
## Gateway RPC
|
|
54
|
+
|
|
55
|
+
Method: `poll`
|
|
56
|
+
|
|
57
|
+
Params:
|
|
58
|
+
|
|
59
|
+
- `to` (string, required)
|
|
60
|
+
- `question` (string, required)
|
|
61
|
+
- `options` (string[], required)
|
|
62
|
+
- `maxSelections` (number, optional)
|
|
63
|
+
- `durationHours` (number, optional)
|
|
64
|
+
- `durationSeconds` (number, optional, Telegram-only)
|
|
65
|
+
- `isAnonymous` (boolean, optional, Telegram-only)
|
|
66
|
+
- `channel` (string, optional, default: `whatsapp`)
|
|
67
|
+
- `idempotencyKey` (string, required)
|
|
68
|
+
|
|
69
|
+
## Channel differences
|
|
70
|
+
|
|
71
|
+
- Telegram: 2-10 options. Supports forum topics via `threadId` or `:topic:` targets. Uses `durationSeconds` instead of `durationHours`, limited to 5-600 seconds. Supports anonymous and public polls.
|
|
72
|
+
- WhatsApp: 2-12 options, `maxSelections` must be within option count, ignores `durationHours`.
|
|
73
|
+
- Discord: 2-10 options, `durationHours` clamped to 1-768 hours (default 24). `maxSelections > 1` enables multi-select; Discord does not support a strict selection count.
|
|
74
|
+
- Microsoft Teams: Adaptive Card polls (QuantumClaw-managed). No native poll API; `durationHours` is ignored.
|
|
75
|
+
|
|
76
|
+
## Agent tool (Message)
|
|
77
|
+
|
|
78
|
+
Use the `message` tool with `poll` action (`to`, `pollQuestion`, `pollOption`, optional `pollMulti`, `pollDurationHours`, `channel`).
|
|
79
|
+
|
|
80
|
+
For Telegram, the tool also accepts `pollDurationSeconds`, `pollAnonymous`, and `pollPublic`.
|
|
81
|
+
|
|
82
|
+
Use `action: "poll"` for poll creation. Poll fields passed with `action: "send"` are rejected.
|
|
83
|
+
|
|
84
|
+
Note: Discord has no “pick exactly N” mode; `pollMulti` maps to multi-select.
|
|
85
|
+
Teams polls are rendered as Adaptive Cards and require the gateway to stay online
|
|
86
|
+
to record votes in `~/.quantumclaw/msteams-polls.json`.
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Define permanent operating authority for autonomous agent programs"
|
|
3
|
+
read_when:
|
|
4
|
+
- Setting up autonomous agent workflows that run without per-task prompting
|
|
5
|
+
- Defining what the agent can do independently vs. what needs human approval
|
|
6
|
+
- Structuring multi-program agents with clear boundaries and escalation rules
|
|
7
|
+
title: "Standing Orders"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Standing Orders
|
|
11
|
+
|
|
12
|
+
Standing orders grant your agent **permanent operating authority** for defined programs. Instead of giving individual task instructions each time, you define programs with clear scope, triggers, and escalation rules — and the agent executes autonomously within those boundaries.
|
|
13
|
+
|
|
14
|
+
This is the difference between telling your assistant "send the weekly report" every Friday vs. granting standing authority: "You own the weekly report. Compile it every Friday, send it, and only escalate if something looks wrong."
|
|
15
|
+
|
|
16
|
+
## Why Standing Orders?
|
|
17
|
+
|
|
18
|
+
**Without standing orders:**
|
|
19
|
+
|
|
20
|
+
- You must prompt the agent for every task
|
|
21
|
+
- The agent sits idle between requests
|
|
22
|
+
- Routine work gets forgotten or delayed
|
|
23
|
+
- You become the bottleneck
|
|
24
|
+
|
|
25
|
+
**With standing orders:**
|
|
26
|
+
|
|
27
|
+
- The agent executes autonomously within defined boundaries
|
|
28
|
+
- Routine work happens on schedule without prompting
|
|
29
|
+
- You only get involved for exceptions and approvals
|
|
30
|
+
- The agent fills idle time productively
|
|
31
|
+
|
|
32
|
+
## How They Work
|
|
33
|
+
|
|
34
|
+
Standing orders are defined in your [agent workspace](/concepts/agent-workspace) files. The recommended approach is to include them directly in `AGENTS.md` (which is auto-injected every session) so the agent always has them in context. For larger configurations, you can also place them in a dedicated file like `standing-orders.md` and reference it from `AGENTS.md`.
|
|
35
|
+
|
|
36
|
+
Each program specifies:
|
|
37
|
+
|
|
38
|
+
1. **Scope** — what the agent is authorized to do
|
|
39
|
+
2. **Triggers** — when to execute (schedule, event, or condition)
|
|
40
|
+
3. **Approval gates** — what requires human sign-off before acting
|
|
41
|
+
4. **Escalation rules** — when to stop and ask for help
|
|
42
|
+
|
|
43
|
+
The agent loads these instructions every session via the workspace bootstrap files (see [Agent Workspace](/concepts/agent-workspace) for the full list of auto-injected files) and executes against them, combined with [cron jobs](/automation/cron-jobs) for time-based enforcement.
|
|
44
|
+
|
|
45
|
+
<Tip>
|
|
46
|
+
Put standing orders in `AGENTS.md` to guarantee they're loaded every session. The workspace bootstrap automatically injects `AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, and `MEMORY.md` — but not arbitrary files in subdirectories.
|
|
47
|
+
</Tip>
|
|
48
|
+
|
|
49
|
+
## Anatomy of a Standing Order
|
|
50
|
+
|
|
51
|
+
```markdown
|
|
52
|
+
## Program: Weekly Status Report
|
|
53
|
+
|
|
54
|
+
**Authority:** Compile data, generate report, deliver to stakeholders
|
|
55
|
+
**Trigger:** Every Friday at 4 PM (enforced via cron job)
|
|
56
|
+
**Approval gate:** None for standard reports. Flag anomalies for human review.
|
|
57
|
+
**Escalation:** If data source is unavailable or metrics look unusual (>2σ from norm)
|
|
58
|
+
|
|
59
|
+
### Execution Steps
|
|
60
|
+
|
|
61
|
+
1. Pull metrics from configured sources
|
|
62
|
+
2. Compare to prior week and targets
|
|
63
|
+
3. Generate report in Reports/weekly/YYYY-MM-DD.md
|
|
64
|
+
4. Deliver summary via configured channel
|
|
65
|
+
5. Log completion to Agent/Logs/
|
|
66
|
+
|
|
67
|
+
### What NOT to Do
|
|
68
|
+
|
|
69
|
+
- Do not send reports to external parties
|
|
70
|
+
- Do not modify source data
|
|
71
|
+
- Do not skip delivery if metrics look bad — report accurately
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Standing Orders + Cron Jobs
|
|
75
|
+
|
|
76
|
+
Standing orders define **what** the agent is authorized to do. [Cron jobs](/automation/cron-jobs) define **when** it happens. They work together:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Standing Order: "You own the daily inbox triage"
|
|
80
|
+
↓
|
|
81
|
+
Cron Job (8 AM daily): "Execute inbox triage per standing orders"
|
|
82
|
+
↓
|
|
83
|
+
Agent: Reads standing orders → executes steps → reports results
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The cron job prompt should reference the standing order rather than duplicating it:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
quantumclaw cron create \
|
|
90
|
+
--name daily-inbox-triage \
|
|
91
|
+
--cron "0 8 * * 1-5" \
|
|
92
|
+
--tz America/New_York \
|
|
93
|
+
--timeout-seconds 300 \
|
|
94
|
+
--announce \
|
|
95
|
+
--channel bluebubbles \
|
|
96
|
+
--to "+1XXXXXXXXXX" \
|
|
97
|
+
--message "Execute daily inbox triage per standing orders. Check mail for new alerts. Parse, categorize, and persist each item. Report summary to owner. Escalate unknowns."
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Examples
|
|
101
|
+
|
|
102
|
+
### Example 1: Content & Social Media (Weekly Cycle)
|
|
103
|
+
|
|
104
|
+
```markdown
|
|
105
|
+
## Program: Content & Social Media
|
|
106
|
+
|
|
107
|
+
**Authority:** Draft content, schedule posts, compile engagement reports
|
|
108
|
+
**Approval gate:** All posts require owner review for first 30 days, then standing approval
|
|
109
|
+
**Trigger:** Weekly cycle (Monday review → mid-week drafts → Friday brief)
|
|
110
|
+
|
|
111
|
+
### Weekly Cycle
|
|
112
|
+
|
|
113
|
+
- **Monday:** Review platform metrics and audience engagement
|
|
114
|
+
- **Tuesday–Thursday:** Draft social posts, create blog content
|
|
115
|
+
- **Friday:** Compile weekly marketing brief → deliver to owner
|
|
116
|
+
|
|
117
|
+
### Content Rules
|
|
118
|
+
|
|
119
|
+
- Voice must match the brand (see SOUL.md or brand voice guide)
|
|
120
|
+
- Never identify as AI in public-facing content
|
|
121
|
+
- Include metrics when available
|
|
122
|
+
- Focus on value to audience, not self-promotion
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Example 2: Finance Operations (Event-Triggered)
|
|
126
|
+
|
|
127
|
+
```markdown
|
|
128
|
+
## Program: Financial Processing
|
|
129
|
+
|
|
130
|
+
**Authority:** Process transaction data, generate reports, send summaries
|
|
131
|
+
**Approval gate:** None for analysis. Recommendations require owner approval.
|
|
132
|
+
**Trigger:** New data file detected OR scheduled monthly cycle
|
|
133
|
+
|
|
134
|
+
### When New Data Arrives
|
|
135
|
+
|
|
136
|
+
1. Detect new file in designated input directory
|
|
137
|
+
2. Parse and categorize all transactions
|
|
138
|
+
3. Compare against budget targets
|
|
139
|
+
4. Flag: unusual items, threshold breaches, new recurring charges
|
|
140
|
+
5. Generate report in designated output directory
|
|
141
|
+
6. Deliver summary to owner via configured channel
|
|
142
|
+
|
|
143
|
+
### Escalation Rules
|
|
144
|
+
|
|
145
|
+
- Single item > $500: immediate alert
|
|
146
|
+
- Category > budget by 20%: flag in report
|
|
147
|
+
- Unrecognizable transaction: ask owner for categorization
|
|
148
|
+
- Failed processing after 2 retries: report failure, do not guess
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Example 3: Monitoring & Alerts (Continuous)
|
|
152
|
+
|
|
153
|
+
```markdown
|
|
154
|
+
## Program: System Monitoring
|
|
155
|
+
|
|
156
|
+
**Authority:** Check system health, restart services, send alerts
|
|
157
|
+
**Approval gate:** Restart services automatically. Escalate if restart fails twice.
|
|
158
|
+
**Trigger:** Every heartbeat cycle
|
|
159
|
+
|
|
160
|
+
### Checks
|
|
161
|
+
|
|
162
|
+
- Service health endpoints responding
|
|
163
|
+
- Disk space above threshold
|
|
164
|
+
- Pending tasks not stale (>24 hours)
|
|
165
|
+
- Delivery channels operational
|
|
166
|
+
|
|
167
|
+
### Response Matrix
|
|
168
|
+
|
|
169
|
+
| Condition | Action | Escalate? |
|
|
170
|
+
| ---------------- | ------------------------ | ------------------------ |
|
|
171
|
+
| Service down | Restart automatically | Only if restart fails 2x |
|
|
172
|
+
| Disk space < 10% | Alert owner | Yes |
|
|
173
|
+
| Stale task > 24h | Remind owner | No |
|
|
174
|
+
| Channel offline | Log and retry next cycle | If offline > 2 hours |
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## The Execute-Verify-Report Pattern
|
|
178
|
+
|
|
179
|
+
Standing orders work best when combined with strict execution discipline. Every task in a standing order should follow this loop:
|
|
180
|
+
|
|
181
|
+
1. **Execute** — Do the actual work (don't just acknowledge the instruction)
|
|
182
|
+
2. **Verify** — Confirm the result is correct (file exists, message delivered, data parsed)
|
|
183
|
+
3. **Report** — Tell the owner what was done and what was verified
|
|
184
|
+
|
|
185
|
+
```markdown
|
|
186
|
+
### Execution Rules
|
|
187
|
+
|
|
188
|
+
- Every task follows Execute-Verify-Report. No exceptions.
|
|
189
|
+
- "I'll do that" is not execution. Do it, then report.
|
|
190
|
+
- "Done" without verification is not acceptable. Prove it.
|
|
191
|
+
- If execution fails: retry once with adjusted approach.
|
|
192
|
+
- If still fails: report failure with diagnosis. Never silently fail.
|
|
193
|
+
- Never retry indefinitely — 3 attempts max, then escalate.
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
This pattern prevents the most common agent failure mode: acknowledging a task without completing it.
|
|
197
|
+
|
|
198
|
+
## Multi-Program Architecture
|
|
199
|
+
|
|
200
|
+
For agents managing multiple concerns, organize standing orders as separate programs with clear boundaries:
|
|
201
|
+
|
|
202
|
+
```markdown
|
|
203
|
+
# Standing Orders
|
|
204
|
+
|
|
205
|
+
## Program 1: [Domain A] (Weekly)
|
|
206
|
+
|
|
207
|
+
...
|
|
208
|
+
|
|
209
|
+
## Program 2: [Domain B] (Monthly + On-Demand)
|
|
210
|
+
|
|
211
|
+
...
|
|
212
|
+
|
|
213
|
+
## Program 3: [Domain C] (As-Needed)
|
|
214
|
+
|
|
215
|
+
...
|
|
216
|
+
|
|
217
|
+
## Escalation Rules (All Programs)
|
|
218
|
+
|
|
219
|
+
- [Common escalation criteria]
|
|
220
|
+
- [Approval gates that apply across programs]
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Each program should have:
|
|
224
|
+
|
|
225
|
+
- Its own **trigger cadence** (weekly, monthly, event-driven, continuous)
|
|
226
|
+
- Its own **approval gates** (some programs need more oversight than others)
|
|
227
|
+
- Clear **boundaries** (the agent should know where one program ends and another begins)
|
|
228
|
+
|
|
229
|
+
## Best Practices
|
|
230
|
+
|
|
231
|
+
### Do
|
|
232
|
+
|
|
233
|
+
- Start with narrow authority and expand as trust builds
|
|
234
|
+
- Define explicit approval gates for high-risk actions
|
|
235
|
+
- Include "What NOT to do" sections — boundaries matter as much as permissions
|
|
236
|
+
- Combine with cron jobs for reliable time-based execution
|
|
237
|
+
- Review agent logs weekly to verify standing orders are being followed
|
|
238
|
+
- Update standing orders as your needs evolve — they're living documents
|
|
239
|
+
|
|
240
|
+
### Don't
|
|
241
|
+
|
|
242
|
+
- Grant broad authority on day one ("do whatever you think is best")
|
|
243
|
+
- Skip escalation rules — every program needs a "when to stop and ask" clause
|
|
244
|
+
- Assume the agent will remember verbal instructions — put everything in the file
|
|
245
|
+
- Mix concerns in a single program — separate programs for separate domains
|
|
246
|
+
- Forget to enforce with cron jobs — standing orders without triggers become suggestions
|
|
247
|
+
|
|
248
|
+
## Related
|
|
249
|
+
|
|
250
|
+
- [Cron Jobs](/automation/cron-jobs) — Schedule enforcement for standing orders
|
|
251
|
+
- [Agent Workspace](/concepts/agent-workspace) — Where standing orders live, including the full list of auto-injected bootstrap files (AGENTS.md, SOUL.md, etc.)
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Troubleshoot cron and heartbeat scheduling and delivery"
|
|
3
|
+
read_when:
|
|
4
|
+
- Cron did not run
|
|
5
|
+
- Cron ran but no message was delivered
|
|
6
|
+
- Heartbeat seems silent or skipped
|
|
7
|
+
title: "Automation Troubleshooting"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Automation troubleshooting
|
|
11
|
+
|
|
12
|
+
Use this page for scheduler and delivery issues (`cron` + `heartbeat`).
|
|
13
|
+
|
|
14
|
+
## Command ladder
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
quantumclaw status
|
|
18
|
+
quantumclaw gateway status
|
|
19
|
+
quantumclaw logs --follow
|
|
20
|
+
quantumclaw doctor
|
|
21
|
+
quantumclaw channels status --probe
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Then run automation checks:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
quantumclaw cron status
|
|
28
|
+
quantumclaw cron list
|
|
29
|
+
quantumclaw system heartbeat last
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Cron not firing
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
quantumclaw cron status
|
|
36
|
+
quantumclaw cron list
|
|
37
|
+
quantumclaw cron runs --id <jobId> --limit 20
|
|
38
|
+
quantumclaw logs --follow
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Good output looks like:
|
|
42
|
+
|
|
43
|
+
- `cron status` reports enabled and a future `nextWakeAtMs`.
|
|
44
|
+
- Job is enabled and has a valid schedule/timezone.
|
|
45
|
+
- `cron runs` shows `ok` or explicit skip reason.
|
|
46
|
+
|
|
47
|
+
Common signatures:
|
|
48
|
+
|
|
49
|
+
- `cron: scheduler disabled; jobs will not run automatically` → cron disabled in config/env.
|
|
50
|
+
- `cron: timer tick failed` → scheduler tick crashed; inspect surrounding stack/log context.
|
|
51
|
+
- `reason: not-due` in run output → manual run called without `--force` and job not due yet.
|
|
52
|
+
|
|
53
|
+
## Cron fired but no delivery
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
quantumclaw cron runs --id <jobId> --limit 20
|
|
57
|
+
quantumclaw cron list
|
|
58
|
+
quantumclaw channels status --probe
|
|
59
|
+
quantumclaw logs --follow
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Good output looks like:
|
|
63
|
+
|
|
64
|
+
- Run status is `ok`.
|
|
65
|
+
- Delivery mode/target are set for isolated jobs.
|
|
66
|
+
- Channel probe reports target channel connected.
|
|
67
|
+
|
|
68
|
+
Common signatures:
|
|
69
|
+
|
|
70
|
+
- Run succeeded but delivery mode is `none` → no external message is expected.
|
|
71
|
+
- Delivery target missing/invalid (`channel`/`to`) → run may succeed internally but skip outbound.
|
|
72
|
+
- Channel auth errors (`unauthorized`, `missing_scope`, `Forbidden`) → delivery blocked by channel credentials/permissions.
|
|
73
|
+
|
|
74
|
+
## Heartbeat suppressed or skipped
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
quantumclaw system heartbeat last
|
|
78
|
+
quantumclaw logs --follow
|
|
79
|
+
quantumclaw config get agents.defaults.heartbeat
|
|
80
|
+
quantumclaw channels status --probe
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Good output looks like:
|
|
84
|
+
|
|
85
|
+
- Heartbeat enabled with non-zero interval.
|
|
86
|
+
- Last heartbeat result is `ran` (or skip reason is understood).
|
|
87
|
+
|
|
88
|
+
Common signatures:
|
|
89
|
+
|
|
90
|
+
- `heartbeat skipped` with `reason=quiet-hours` → outside `activeHours`.
|
|
91
|
+
- `requests-in-flight` → main lane busy; heartbeat deferred.
|
|
92
|
+
- `empty-heartbeat-file` → interval heartbeat skipped because `HEARTBEAT.md` has no actionable content and no tagged cron event is queued.
|
|
93
|
+
- `alerts-disabled` → visibility settings suppress outbound heartbeat messages.
|
|
94
|
+
|
|
95
|
+
## Timezone and activeHours gotchas
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
quantumclaw config get agents.defaults.heartbeat.activeHours
|
|
99
|
+
quantumclaw config get agents.defaults.heartbeat.activeHours.timezone
|
|
100
|
+
quantumclaw config get agents.defaults.userTimezone || echo "agents.defaults.userTimezone not set"
|
|
101
|
+
quantumclaw cron list
|
|
102
|
+
quantumclaw logs --follow
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Quick rules:
|
|
106
|
+
|
|
107
|
+
- `Config path not found: agents.defaults.userTimezone` means the key is unset; heartbeat falls back to host timezone (or `activeHours.timezone` if set).
|
|
108
|
+
- Cron without `--tz` uses gateway host timezone.
|
|
109
|
+
- Heartbeat `activeHours` uses configured timezone resolution (`user`, `local`, or explicit IANA tz).
|
|
110
|
+
- ISO timestamps without timezone are treated as UTC for cron `at` schedules.
|
|
111
|
+
|
|
112
|
+
Common signatures:
|
|
113
|
+
|
|
114
|
+
- Jobs run at the wrong wall-clock time after host timezone changes.
|
|
115
|
+
- Heartbeat always skipped during your daytime because `activeHours.timezone` is wrong.
|
|
116
|
+
|
|
117
|
+
Related:
|
|
118
|
+
|
|
119
|
+
- [/automation/cron-jobs](/automation/cron-jobs)
|
|
120
|
+
- [/gateway/heartbeat](/gateway/heartbeat)
|
|
121
|
+
- [/automation/cron-vs-heartbeat](/automation/cron-vs-heartbeat)
|
|
122
|
+
- [/concepts/timezone](/concepts/timezone)
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Webhook ingress for wake and isolated agent runs"
|
|
3
|
+
read_when:
|
|
4
|
+
- Adding or changing webhook endpoints
|
|
5
|
+
- Wiring external systems into QuantumClaw
|
|
6
|
+
title: "Webhooks"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Webhooks
|
|
10
|
+
|
|
11
|
+
Gateway can expose a small HTTP webhook endpoint for external triggers.
|
|
12
|
+
|
|
13
|
+
## Enable
|
|
14
|
+
|
|
15
|
+
```json5
|
|
16
|
+
{
|
|
17
|
+
hooks: {
|
|
18
|
+
enabled: true,
|
|
19
|
+
token: "shared-secret",
|
|
20
|
+
path: "/hooks",
|
|
21
|
+
// Optional: restrict explicit `agentId` routing to this allowlist.
|
|
22
|
+
// Omit or include "*" to allow any agent.
|
|
23
|
+
// Set [] to deny all explicit `agentId` routing.
|
|
24
|
+
allowedAgentIds: ["hooks", "main"],
|
|
25
|
+
},
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Notes:
|
|
30
|
+
|
|
31
|
+
- `hooks.token` is required when `hooks.enabled=true`.
|
|
32
|
+
- `hooks.path` defaults to `/hooks`.
|
|
33
|
+
|
|
34
|
+
## Auth
|
|
35
|
+
|
|
36
|
+
Every request must include the hook token. Prefer headers:
|
|
37
|
+
|
|
38
|
+
- `Authorization: Bearer <token>` (recommended)
|
|
39
|
+
- `x-quantumclaw-token: <token>`
|
|
40
|
+
- Query-string tokens are rejected (`?token=...` returns `400`).
|
|
41
|
+
- Treat `hooks.token` holders as full-trust callers for the hook ingress surface on that gateway. Hook payload content is still untrusted, but this is not a separate non-owner auth boundary.
|
|
42
|
+
|
|
43
|
+
## Endpoints
|
|
44
|
+
|
|
45
|
+
### `POST /hooks/wake`
|
|
46
|
+
|
|
47
|
+
Payload:
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{ "text": "System line", "mode": "now" }
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
- `text` **required** (string): The description of the event (e.g., "New email received").
|
|
54
|
+
- `mode` optional (`now` | `next-heartbeat`): Whether to trigger an immediate heartbeat (default `now`) or wait for the next periodic check.
|
|
55
|
+
|
|
56
|
+
Effect:
|
|
57
|
+
|
|
58
|
+
- Enqueues a system event for the **main** session
|
|
59
|
+
- If `mode=now`, triggers an immediate heartbeat
|
|
60
|
+
|
|
61
|
+
### `POST /hooks/agent`
|
|
62
|
+
|
|
63
|
+
Payload:
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"message": "Run this",
|
|
68
|
+
"name": "Email",
|
|
69
|
+
"agentId": "hooks",
|
|
70
|
+
"sessionKey": "hook:email:msg-123",
|
|
71
|
+
"wakeMode": "now",
|
|
72
|
+
"deliver": true,
|
|
73
|
+
"channel": "last",
|
|
74
|
+
"to": "+15551234567",
|
|
75
|
+
"model": "openai/gpt-5.2-mini",
|
|
76
|
+
"thinking": "low",
|
|
77
|
+
"timeoutSeconds": 120
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
- `message` **required** (string): The prompt or message for the agent to process.
|
|
82
|
+
- `name` optional (string): Human-readable name for the hook (e.g., "GitHub"), used as a prefix in session summaries.
|
|
83
|
+
- `agentId` optional (string): Route this hook to a specific agent. Unknown IDs fall back to the default agent. When set, the hook runs using the resolved agent's workspace and configuration.
|
|
84
|
+
- `sessionKey` optional (string): The key used to identify the agent's session. By default this field is rejected unless `hooks.allowRequestSessionKey=true`.
|
|
85
|
+
- `wakeMode` optional (`now` | `next-heartbeat`): Whether to trigger an immediate heartbeat (default `now`) or wait for the next periodic check.
|
|
86
|
+
- `deliver` optional (boolean): If `true`, the agent's response will be sent to the messaging channel. Defaults to `true`. Responses that are only heartbeat acknowledgments are automatically skipped.
|
|
87
|
+
- `channel` optional (string): The messaging channel for delivery. One of: `last`, `whatsapp`, `telegram`, `discord`, `slack`, `mattermost` (plugin), `signal`, `imessage`, `msteams`. Defaults to `last`.
|
|
88
|
+
- `to` optional (string): The recipient identifier for the channel (e.g., phone number for WhatsApp/Signal, chat ID for Telegram, channel ID for Discord/Slack/Mattermost (plugin), conversation ID for Microsoft Teams). Defaults to the last recipient in the main session.
|
|
89
|
+
- `model` optional (string): Model override (e.g., `anthropic/claude-3-5-sonnet` or an alias). Must be in the allowed model list if restricted.
|
|
90
|
+
- `thinking` optional (string): Thinking level override (e.g., `low`, `medium`, `high`).
|
|
91
|
+
- `timeoutSeconds` optional (number): Maximum duration for the agent run in seconds.
|
|
92
|
+
|
|
93
|
+
Effect:
|
|
94
|
+
|
|
95
|
+
- Runs an **isolated** agent turn (own session key)
|
|
96
|
+
- Always posts a summary into the **main** session
|
|
97
|
+
- If `wakeMode=now`, triggers an immediate heartbeat
|
|
98
|
+
|
|
99
|
+
## Session key policy (breaking change)
|
|
100
|
+
|
|
101
|
+
`/hooks/agent` payload `sessionKey` overrides are disabled by default.
|
|
102
|
+
|
|
103
|
+
- Recommended: set a fixed `hooks.defaultSessionKey` and keep request overrides off.
|
|
104
|
+
- Optional: allow request overrides only when needed, and restrict prefixes.
|
|
105
|
+
|
|
106
|
+
Recommended config:
|
|
107
|
+
|
|
108
|
+
```json5
|
|
109
|
+
{
|
|
110
|
+
hooks: {
|
|
111
|
+
enabled: true,
|
|
112
|
+
token: "${QUANTUMCLAW_HOOKS_TOKEN}",
|
|
113
|
+
defaultSessionKey: "hook:ingress",
|
|
114
|
+
allowRequestSessionKey: false,
|
|
115
|
+
allowedSessionKeyPrefixes: ["hook:"],
|
|
116
|
+
},
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Compatibility config (legacy behavior):
|
|
121
|
+
|
|
122
|
+
```json5
|
|
123
|
+
{
|
|
124
|
+
hooks: {
|
|
125
|
+
enabled: true,
|
|
126
|
+
token: "${QUANTUMCLAW_HOOKS_TOKEN}",
|
|
127
|
+
allowRequestSessionKey: true,
|
|
128
|
+
allowedSessionKeyPrefixes: ["hook:"], // strongly recommended
|
|
129
|
+
},
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### `POST /hooks/<name>` (mapped)
|
|
134
|
+
|
|
135
|
+
Custom hook names are resolved via `hooks.mappings` (see configuration). A mapping can
|
|
136
|
+
turn arbitrary payloads into `wake` or `agent` actions, with optional templates or
|
|
137
|
+
code transforms.
|
|
138
|
+
|
|
139
|
+
Mapping options (summary):
|
|
140
|
+
|
|
141
|
+
- `hooks.presets: ["gmail"]` enables the built-in Gmail mapping.
|
|
142
|
+
- `hooks.mappings` lets you define `match`, `action`, and templates in config.
|
|
143
|
+
- `hooks.transformsDir` + `transform.module` loads a JS/TS module for custom logic.
|
|
144
|
+
- `hooks.transformsDir` (if set) must stay within the transforms root under your QuantumClaw config directory (typically `~/.quantumclaw/hooks/transforms`).
|
|
145
|
+
- `transform.module` must resolve within the effective transforms directory (traversal/escape paths are rejected).
|
|
146
|
+
- Use `match.source` to keep a generic ingest endpoint (payload-driven routing).
|
|
147
|
+
- TS transforms require a TS loader (e.g. `bun` or `tsx`) or precompiled `.js` at runtime.
|
|
148
|
+
- Set `deliver: true` + `channel`/`to` on mappings to route replies to a chat surface
|
|
149
|
+
(`channel` defaults to `last` and falls back to WhatsApp).
|
|
150
|
+
- `agentId` routes the hook to a specific agent; unknown IDs fall back to the default agent.
|
|
151
|
+
- `hooks.allowedAgentIds` restricts explicit `agentId` routing. Omit it (or include `*`) to allow any agent. Set `[]` to deny explicit `agentId` routing.
|
|
152
|
+
- `hooks.defaultSessionKey` sets the default session for hook agent runs when no explicit key is provided.
|
|
153
|
+
- `hooks.allowRequestSessionKey` controls whether `/hooks/agent` payloads may set `sessionKey` (default: `false`).
|
|
154
|
+
- `hooks.allowedSessionKeyPrefixes` optionally restricts explicit `sessionKey` values from request payloads and mappings.
|
|
155
|
+
- `allowUnsafeExternalContent: true` disables the external content safety wrapper for that hook
|
|
156
|
+
(dangerous; only for trusted internal sources).
|
|
157
|
+
- `quantumclaw webhooks gmail setup` writes `hooks.gmail` config for `quantumclaw webhooks gmail run`.
|
|
158
|
+
See [Gmail Pub/Sub](/automation/gmail-pubsub) for the full Gmail watch flow.
|
|
159
|
+
|
|
160
|
+
## Responses
|
|
161
|
+
|
|
162
|
+
- `200` for `/hooks/wake`
|
|
163
|
+
- `200` for `/hooks/agent` (async run accepted)
|
|
164
|
+
- `401` on auth failure
|
|
165
|
+
- `429` after repeated auth failures from the same client (check `Retry-After`)
|
|
166
|
+
- `400` on invalid payload
|
|
167
|
+
- `413` on oversized payloads
|
|
168
|
+
|
|
169
|
+
## Examples
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
curl -X POST http://127.0.0.1:18789/hooks/wake \
|
|
173
|
+
-H 'Authorization: Bearer SECRET' \
|
|
174
|
+
-H 'Content-Type: application/json' \
|
|
175
|
+
-d '{"text":"New email received","mode":"now"}'
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
curl -X POST http://127.0.0.1:18789/hooks/agent \
|
|
180
|
+
-H 'x-quantumclaw-token: SECRET' \
|
|
181
|
+
-H 'Content-Type: application/json' \
|
|
182
|
+
-d '{"message":"Summarize inbox","name":"Email","wakeMode":"next-heartbeat"}'
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Use a different model
|
|
186
|
+
|
|
187
|
+
Add `model` to the agent payload (or mapping) to override the model for that run:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
curl -X POST http://127.0.0.1:18789/hooks/agent \
|
|
191
|
+
-H 'x-quantumclaw-token: SECRET' \
|
|
192
|
+
-H 'Content-Type: application/json' \
|
|
193
|
+
-d '{"message":"Summarize inbox","name":"Email","model":"openai/gpt-5.2-mini"}'
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
If you enforce `agents.defaults.models`, make sure the override model is included there.
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
curl -X POST http://127.0.0.1:18789/hooks/gmail \
|
|
200
|
+
-H 'Authorization: Bearer SECRET' \
|
|
201
|
+
-H 'Content-Type: application/json' \
|
|
202
|
+
-d '{"source":"gmail","messages":[{"from":"Ada","subject":"Hello","snippet":"Hi"}]}'
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Security
|
|
206
|
+
|
|
207
|
+
- Keep hook endpoints behind loopback, tailnet, or trusted reverse proxy.
|
|
208
|
+
- Use a dedicated hook token; do not reuse gateway auth tokens.
|
|
209
|
+
- Prefer a dedicated hook agent with strict `tools.profile` and sandboxing so hook ingress has a narrower blast radius.
|
|
210
|
+
- Repeated auth failures are rate-limited per client address to slow brute-force attempts.
|
|
211
|
+
- If you use multi-agent routing, set `hooks.allowedAgentIds` to limit explicit `agentId` selection.
|
|
212
|
+
- Keep `hooks.allowRequestSessionKey=false` unless you require caller-selected sessions.
|
|
213
|
+
- If you enable request `sessionKey`, restrict `hooks.allowedSessionKeyPrefixes` (for example, `["hook:"]`).
|
|
214
|
+
- Avoid including sensitive raw payloads in webhook logs.
|
|
215
|
+
- Hook payloads are treated as untrusted and wrapped with safety boundaries by default.
|
|
216
|
+
If you must disable this for a specific hook, set `allowUnsafeExternalContent: true`
|
|
217
|
+
in that hook's mapping (dangerous).
|