@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,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "How QuantumClaw presence entries are produced, merged, and displayed"
|
|
3
|
+
read_when:
|
|
4
|
+
- Debugging the Instances tab
|
|
5
|
+
- Investigating duplicate or stale instance rows
|
|
6
|
+
- Changing gateway WS connect or system-event beacons
|
|
7
|
+
title: "Presence"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Presence
|
|
11
|
+
|
|
12
|
+
QuantumClaw “presence” is a lightweight, best‑effort view of:
|
|
13
|
+
|
|
14
|
+
- the **Gateway** itself, and
|
|
15
|
+
- **clients connected to the Gateway** (mac app, WebChat, CLI, etc.)
|
|
16
|
+
|
|
17
|
+
Presence is used primarily to render the macOS app’s **Instances** tab and to
|
|
18
|
+
provide quick operator visibility.
|
|
19
|
+
|
|
20
|
+
## Presence fields (what shows up)
|
|
21
|
+
|
|
22
|
+
Presence entries are structured objects with fields like:
|
|
23
|
+
|
|
24
|
+
- `instanceId` (optional but strongly recommended): stable client identity (usually `connect.client.instanceId`)
|
|
25
|
+
- `host`: human‑friendly host name
|
|
26
|
+
- `ip`: best‑effort IP address
|
|
27
|
+
- `version`: client version string
|
|
28
|
+
- `deviceFamily` / `modelIdentifier`: hardware hints
|
|
29
|
+
- `mode`: `ui`, `webchat`, `cli`, `backend`, `probe`, `test`, `node`, ...
|
|
30
|
+
- `lastInputSeconds`: “seconds since last user input” (if known)
|
|
31
|
+
- `reason`: `self`, `connect`, `node-connected`, `periodic`, ...
|
|
32
|
+
- `ts`: last update timestamp (ms since epoch)
|
|
33
|
+
|
|
34
|
+
## Producers (where presence comes from)
|
|
35
|
+
|
|
36
|
+
Presence entries are produced by multiple sources and **merged**.
|
|
37
|
+
|
|
38
|
+
### 1) Gateway self entry
|
|
39
|
+
|
|
40
|
+
The Gateway always seeds a “self” entry at startup so UIs show the gateway host
|
|
41
|
+
even before any clients connect.
|
|
42
|
+
|
|
43
|
+
### 2) WebSocket connect
|
|
44
|
+
|
|
45
|
+
Every WS client begins with a `connect` request. On successful handshake the
|
|
46
|
+
Gateway upserts a presence entry for that connection.
|
|
47
|
+
|
|
48
|
+
#### Why one-off CLI commands do not show up
|
|
49
|
+
|
|
50
|
+
The CLI often connects for short, one‑off commands. To avoid spamming the
|
|
51
|
+
Instances list, `client.mode === "cli"` is **not** turned into a presence entry.
|
|
52
|
+
|
|
53
|
+
### 3) `system-event` beacons
|
|
54
|
+
|
|
55
|
+
Clients can send richer periodic beacons via the `system-event` method. The mac
|
|
56
|
+
app uses this to report host name, IP, and `lastInputSeconds`.
|
|
57
|
+
|
|
58
|
+
### 4) Node connects (role: node)
|
|
59
|
+
|
|
60
|
+
When a node connects over the Gateway WebSocket with `role: node`, the Gateway
|
|
61
|
+
upserts a presence entry for that node (same flow as other WS clients).
|
|
62
|
+
|
|
63
|
+
## Merge + dedupe rules (why `instanceId` matters)
|
|
64
|
+
|
|
65
|
+
Presence entries are stored in a single in‑memory map:
|
|
66
|
+
|
|
67
|
+
- Entries are keyed by a **presence key**.
|
|
68
|
+
- The best key is a stable `instanceId` (from `connect.client.instanceId`) that survives restarts.
|
|
69
|
+
- Keys are case‑insensitive.
|
|
70
|
+
|
|
71
|
+
If a client reconnects without a stable `instanceId`, it may show up as a
|
|
72
|
+
**duplicate** row.
|
|
73
|
+
|
|
74
|
+
## TTL and bounded size
|
|
75
|
+
|
|
76
|
+
Presence is intentionally ephemeral:
|
|
77
|
+
|
|
78
|
+
- **TTL:** entries older than 5 minutes are pruned
|
|
79
|
+
- **Max entries:** 200 (oldest dropped first)
|
|
80
|
+
|
|
81
|
+
This keeps the list fresh and avoids unbounded memory growth.
|
|
82
|
+
|
|
83
|
+
## Remote/tunnel caveat (loopback IPs)
|
|
84
|
+
|
|
85
|
+
When a client connects over an SSH tunnel / local port forward, the Gateway may
|
|
86
|
+
see the remote address as `127.0.0.1`. To avoid overwriting a good client‑reported
|
|
87
|
+
IP, loopback remote addresses are ignored.
|
|
88
|
+
|
|
89
|
+
## Consumers
|
|
90
|
+
|
|
91
|
+
### macOS Instances tab
|
|
92
|
+
|
|
93
|
+
The macOS app renders the output of `system-presence` and applies a small status
|
|
94
|
+
indicator (Active/Idle/Stale) based on the age of the last update.
|
|
95
|
+
|
|
96
|
+
## Debugging tips
|
|
97
|
+
|
|
98
|
+
- To see the raw list, call `system-presence` against the Gateway.
|
|
99
|
+
- If you see duplicates:
|
|
100
|
+
- confirm clients send a stable `client.instanceId` in the handshake
|
|
101
|
+
- confirm periodic beacons use the same `instanceId`
|
|
102
|
+
- check whether the connection‑derived entry is missing `instanceId` (duplicates are expected)
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Command queue design that serializes inbound auto-reply runs"
|
|
3
|
+
read_when:
|
|
4
|
+
- Changing auto-reply execution or concurrency
|
|
5
|
+
title: "Command Queue"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Command Queue (2026-01-16)
|
|
9
|
+
|
|
10
|
+
We serialize inbound auto-reply runs (all channels) through a tiny in-process queue to prevent multiple agent runs from colliding, while still allowing safe parallelism across sessions.
|
|
11
|
+
|
|
12
|
+
## Why
|
|
13
|
+
|
|
14
|
+
- Auto-reply runs can be expensive (LLM calls) and can collide when multiple inbound messages arrive close together.
|
|
15
|
+
- Serializing avoids competing for shared resources (session files, logs, CLI stdin) and reduces the chance of upstream rate limits.
|
|
16
|
+
|
|
17
|
+
## How it works
|
|
18
|
+
|
|
19
|
+
- A lane-aware FIFO queue drains each lane with a configurable concurrency cap (default 1 for unconfigured lanes; main defaults to 4, subagent to 8).
|
|
20
|
+
- `runEmbeddedPiAgent` enqueues by **session key** (lane `session:<key>`) to guarantee only one active run per session.
|
|
21
|
+
- Each session run is then queued into a **global lane** (`main` by default) so overall parallelism is capped by `agents.defaults.maxConcurrent`.
|
|
22
|
+
- When verbose logging is enabled, queued runs emit a short notice if they waited more than ~2s before starting.
|
|
23
|
+
- Typing indicators still fire immediately on enqueue (when supported by the channel) so user experience is unchanged while we wait our turn.
|
|
24
|
+
|
|
25
|
+
## Queue modes (per channel)
|
|
26
|
+
|
|
27
|
+
Inbound messages can steer the current run, wait for a followup turn, or do both:
|
|
28
|
+
|
|
29
|
+
- `steer`: inject immediately into the current run (cancels pending tool calls after the next tool boundary). If not streaming, falls back to followup.
|
|
30
|
+
- `followup`: enqueue for the next agent turn after the current run ends.
|
|
31
|
+
- `collect`: coalesce all queued messages into a **single** followup turn (default). If messages target different channels/threads, they drain individually to preserve routing.
|
|
32
|
+
- `steer-backlog` (aka `steer+backlog`): steer now **and** preserve the message for a followup turn.
|
|
33
|
+
- `interrupt` (legacy): abort the active run for that session, then run the newest message.
|
|
34
|
+
- `queue` (legacy alias): same as `steer`.
|
|
35
|
+
|
|
36
|
+
Steer-backlog means you can get a followup response after the steered run, so
|
|
37
|
+
streaming surfaces can look like duplicates. Prefer `collect`/`steer` if you want
|
|
38
|
+
one response per inbound message.
|
|
39
|
+
Send `/queue collect` as a standalone command (per-session) or set `messages.queue.byChannel.discord: "collect"`.
|
|
40
|
+
|
|
41
|
+
Defaults (when unset in config):
|
|
42
|
+
|
|
43
|
+
- All surfaces → `collect`
|
|
44
|
+
|
|
45
|
+
Configure globally or per channel via `messages.queue`:
|
|
46
|
+
|
|
47
|
+
```json5
|
|
48
|
+
{
|
|
49
|
+
messages: {
|
|
50
|
+
queue: {
|
|
51
|
+
mode: "collect",
|
|
52
|
+
debounceMs: 1000,
|
|
53
|
+
cap: 20,
|
|
54
|
+
drop: "summarize",
|
|
55
|
+
byChannel: { discord: "collect" },
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Queue options
|
|
62
|
+
|
|
63
|
+
Options apply to `followup`, `collect`, and `steer-backlog` (and to `steer` when it falls back to followup):
|
|
64
|
+
|
|
65
|
+
- `debounceMs`: wait for quiet before starting a followup turn (prevents “continue, continue”).
|
|
66
|
+
- `cap`: max queued messages per session.
|
|
67
|
+
- `drop`: overflow policy (`old`, `new`, `summarize`).
|
|
68
|
+
|
|
69
|
+
Summarize keeps a short bullet list of dropped messages and injects it as a synthetic followup prompt.
|
|
70
|
+
Defaults: `debounceMs: 1000`, `cap: 20`, `drop: summarize`.
|
|
71
|
+
|
|
72
|
+
## Per-session overrides
|
|
73
|
+
|
|
74
|
+
- Send `/queue <mode>` as a standalone command to store the mode for the current session.
|
|
75
|
+
- Options can be combined: `/queue collect debounce:2s cap:25 drop:summarize`
|
|
76
|
+
- `/queue default` or `/queue reset` clears the session override.
|
|
77
|
+
|
|
78
|
+
## Scope and guarantees
|
|
79
|
+
|
|
80
|
+
- Applies to auto-reply agent runs across all inbound channels that use the gateway reply pipeline (WhatsApp web, Telegram, Slack, Discord, Signal, iMessage, webchat, etc.).
|
|
81
|
+
- Default lane (`main`) is process-wide for inbound + main heartbeats; set `agents.defaults.maxConcurrent` to allow multiple sessions in parallel.
|
|
82
|
+
- Additional lanes may exist (e.g. `cron`, `subagent`) so background jobs can run in parallel without blocking inbound replies.
|
|
83
|
+
- Per-session lanes guarantee that only one agent run touches a given session at a time.
|
|
84
|
+
- No external dependencies or background worker threads; pure TypeScript + promises.
|
|
85
|
+
|
|
86
|
+
## Troubleshooting
|
|
87
|
+
|
|
88
|
+
- If commands seem stuck, enable verbose logs and look for “queued for …ms” lines to confirm the queue is draining.
|
|
89
|
+
- If you need queue depth, enable verbose logs and watch for queue timing lines.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Retry policy for outbound provider calls"
|
|
3
|
+
read_when:
|
|
4
|
+
- Updating provider retry behavior or defaults
|
|
5
|
+
- Debugging provider send errors or rate limits
|
|
6
|
+
title: "Retry Policy"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Retry policy
|
|
10
|
+
|
|
11
|
+
## Goals
|
|
12
|
+
|
|
13
|
+
- Retry per HTTP request, not per multi-step flow.
|
|
14
|
+
- Preserve ordering by retrying only the current step.
|
|
15
|
+
- Avoid duplicating non-idempotent operations.
|
|
16
|
+
|
|
17
|
+
## Defaults
|
|
18
|
+
|
|
19
|
+
- Attempts: 3
|
|
20
|
+
- Max delay cap: 30000 ms
|
|
21
|
+
- Jitter: 0.1 (10 percent)
|
|
22
|
+
- Provider defaults:
|
|
23
|
+
- Telegram min delay: 400 ms
|
|
24
|
+
- Discord min delay: 500 ms
|
|
25
|
+
|
|
26
|
+
## Behavior
|
|
27
|
+
|
|
28
|
+
### Discord
|
|
29
|
+
|
|
30
|
+
- Retries only on rate-limit errors (HTTP 429).
|
|
31
|
+
- Uses Discord `retry_after` when available, otherwise exponential backoff.
|
|
32
|
+
|
|
33
|
+
### Telegram
|
|
34
|
+
|
|
35
|
+
- Retries on transient errors (429, timeout, connect/reset/closed, temporarily unavailable).
|
|
36
|
+
- Uses `retry_after` when available, otherwise exponential backoff.
|
|
37
|
+
- Markdown parse errors are not retried; they fall back to plain text.
|
|
38
|
+
|
|
39
|
+
## Configuration
|
|
40
|
+
|
|
41
|
+
Set retry policy per provider in `~/.quantumclaw/quantumclaw.json`:
|
|
42
|
+
|
|
43
|
+
```json5
|
|
44
|
+
{
|
|
45
|
+
channels: {
|
|
46
|
+
telegram: {
|
|
47
|
+
retry: {
|
|
48
|
+
attempts: 3,
|
|
49
|
+
minDelayMs: 400,
|
|
50
|
+
maxDelayMs: 30000,
|
|
51
|
+
jitter: 0.1,
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
discord: {
|
|
55
|
+
retry: {
|
|
56
|
+
attempts: 3,
|
|
57
|
+
minDelayMs: 500,
|
|
58
|
+
maxDelayMs: 30000,
|
|
59
|
+
jitter: 0.1,
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Notes
|
|
67
|
+
|
|
68
|
+
- Retries apply per request (message send, media upload, reaction, poll, sticker).
|
|
69
|
+
- Composite flows do not retry completed steps.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Session Pruning"
|
|
3
|
+
summary: "Session pruning: tool-result trimming to reduce context bloat"
|
|
4
|
+
read_when:
|
|
5
|
+
- You want to reduce LLM context growth from tool outputs
|
|
6
|
+
- You are tuning agents.defaults.contextPruning
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Session Pruning
|
|
10
|
+
|
|
11
|
+
Session pruning trims **old tool results** from the in-memory context right before each LLM call. It does **not** rewrite the on-disk session history (`*.jsonl`).
|
|
12
|
+
|
|
13
|
+
## When it runs
|
|
14
|
+
|
|
15
|
+
- When `mode: "cache-ttl"` is enabled and the last Anthropic call for the session is older than `ttl`.
|
|
16
|
+
- Only affects the messages sent to the model for that request.
|
|
17
|
+
- Only active for Anthropic API calls (and OpenRouter Anthropic models).
|
|
18
|
+
- For best results, match `ttl` to your model `cacheRetention` policy (`short` = 5m, `long` = 1h).
|
|
19
|
+
- After a prune, the TTL window resets so subsequent requests keep cache until `ttl` expires again.
|
|
20
|
+
|
|
21
|
+
## Smart defaults (Anthropic)
|
|
22
|
+
|
|
23
|
+
- **OAuth or setup-token** profiles: enable `cache-ttl` pruning and set heartbeat to `1h`.
|
|
24
|
+
- **API key** profiles: enable `cache-ttl` pruning, set heartbeat to `30m`, and default `cacheRetention: "short"` on Anthropic models.
|
|
25
|
+
- If you set any of these values explicitly, QuantumClaw does **not** override them.
|
|
26
|
+
|
|
27
|
+
## What this improves (cost + cache behavior)
|
|
28
|
+
|
|
29
|
+
- **Why prune:** Anthropic prompt caching only applies within the TTL. If a session goes idle past the TTL, the next request re-caches the full prompt unless you trim it first.
|
|
30
|
+
- **What gets cheaper:** pruning reduces the **cacheWrite** size for that first request after the TTL expires.
|
|
31
|
+
- **Why the TTL reset matters:** once pruning runs, the cache window resets, so follow‑up requests can reuse the freshly cached prompt instead of re-caching the full history again.
|
|
32
|
+
- **What it does not do:** pruning doesn’t add tokens or “double” costs; it only changes what gets cached on that first post‑TTL request.
|
|
33
|
+
|
|
34
|
+
## What can be pruned
|
|
35
|
+
|
|
36
|
+
- Only `toolResult` messages.
|
|
37
|
+
- User + assistant messages are **never** modified.
|
|
38
|
+
- The last `keepLastAssistants` assistant messages are protected; tool results after that cutoff are not pruned.
|
|
39
|
+
- If there aren’t enough assistant messages to establish the cutoff, pruning is skipped.
|
|
40
|
+
- Tool results containing **image blocks** are skipped (never trimmed/cleared).
|
|
41
|
+
|
|
42
|
+
## Context window estimation
|
|
43
|
+
|
|
44
|
+
Pruning uses an estimated context window (chars ≈ tokens × 4). The base window is resolved in this order:
|
|
45
|
+
|
|
46
|
+
1. `models.providers.*.models[].contextWindow` override.
|
|
47
|
+
2. Model definition `contextWindow` (from the model registry).
|
|
48
|
+
3. Default `200000` tokens.
|
|
49
|
+
|
|
50
|
+
If `agents.defaults.contextTokens` is set, it is treated as a cap (min) on the resolved window.
|
|
51
|
+
|
|
52
|
+
## Mode
|
|
53
|
+
|
|
54
|
+
### cache-ttl
|
|
55
|
+
|
|
56
|
+
- Pruning only runs if the last Anthropic call is older than `ttl` (default `5m`).
|
|
57
|
+
- When it runs: same soft-trim + hard-clear behavior as before.
|
|
58
|
+
|
|
59
|
+
## Soft vs hard pruning
|
|
60
|
+
|
|
61
|
+
- **Soft-trim**: only for oversized tool results.
|
|
62
|
+
- Keeps head + tail, inserts `...`, and appends a note with the original size.
|
|
63
|
+
- Skips results with image blocks.
|
|
64
|
+
- **Hard-clear**: replaces the entire tool result with `hardClear.placeholder`.
|
|
65
|
+
|
|
66
|
+
## Tool selection
|
|
67
|
+
|
|
68
|
+
- `tools.allow` / `tools.deny` support `*` wildcards.
|
|
69
|
+
- Deny wins.
|
|
70
|
+
- Matching is case-insensitive.
|
|
71
|
+
- Empty allow list => all tools allowed.
|
|
72
|
+
|
|
73
|
+
## Interaction with other limits
|
|
74
|
+
|
|
75
|
+
- Built-in tools already truncate their own output; session pruning is an extra layer that prevents long-running chats from accumulating too much tool output in the model context.
|
|
76
|
+
- Compaction is separate: compaction summarizes and persists, pruning is transient per request. See [/concepts/compaction](/concepts/compaction).
|
|
77
|
+
|
|
78
|
+
## Defaults (when enabled)
|
|
79
|
+
|
|
80
|
+
- `ttl`: `"5m"`
|
|
81
|
+
- `keepLastAssistants`: `3`
|
|
82
|
+
- `softTrimRatio`: `0.3`
|
|
83
|
+
- `hardClearRatio`: `0.5`
|
|
84
|
+
- `minPrunableToolChars`: `50000`
|
|
85
|
+
- `softTrim`: `{ maxChars: 4000, headChars: 1500, tailChars: 1500 }`
|
|
86
|
+
- `hardClear`: `{ enabled: true, placeholder: "[Old tool result content cleared]" }`
|
|
87
|
+
|
|
88
|
+
## Examples
|
|
89
|
+
|
|
90
|
+
Default (off):
|
|
91
|
+
|
|
92
|
+
```json5
|
|
93
|
+
{
|
|
94
|
+
agents: { defaults: { contextPruning: { mode: "off" } } },
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Enable TTL-aware pruning:
|
|
99
|
+
|
|
100
|
+
```json5
|
|
101
|
+
{
|
|
102
|
+
agents: { defaults: { contextPruning: { mode: "cache-ttl", ttl: "5m" } } },
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Restrict pruning to specific tools:
|
|
107
|
+
|
|
108
|
+
```json5
|
|
109
|
+
{
|
|
110
|
+
agents: {
|
|
111
|
+
defaults: {
|
|
112
|
+
contextPruning: {
|
|
113
|
+
mode: "cache-ttl",
|
|
114
|
+
tools: { allow: ["exec", "read"], deny: ["*image*"] },
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
See config reference: [Gateway Configuration](/gateway/configuration)
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Agent session tools for listing sessions, fetching history, and sending cross-session messages"
|
|
3
|
+
read_when:
|
|
4
|
+
- Adding or modifying session tools
|
|
5
|
+
title: "Session Tools"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Session Tools
|
|
9
|
+
|
|
10
|
+
Goal: small, hard-to-misuse tool set so agents can list sessions, fetch history, and send to another session.
|
|
11
|
+
|
|
12
|
+
## Tool Names
|
|
13
|
+
|
|
14
|
+
- `sessions_list`
|
|
15
|
+
- `sessions_history`
|
|
16
|
+
- `sessions_send`
|
|
17
|
+
- `sessions_spawn`
|
|
18
|
+
|
|
19
|
+
## Key Model
|
|
20
|
+
|
|
21
|
+
- Main direct chat bucket is always the literal key `"main"` (resolved to the current agent’s main key).
|
|
22
|
+
- Group chats use `agent:<agentId>:<channel>:group:<id>` or `agent:<agentId>:<channel>:channel:<id>` (pass the full key).
|
|
23
|
+
- Cron jobs use `cron:<job.id>`.
|
|
24
|
+
- Hooks use `hook:<uuid>` unless explicitly set.
|
|
25
|
+
- Node sessions use `node-<nodeId>` unless explicitly set.
|
|
26
|
+
|
|
27
|
+
`global` and `unknown` are reserved values and are never listed. If `session.scope = "global"`, we alias it to `main` for all tools so callers never see `global`.
|
|
28
|
+
|
|
29
|
+
## sessions_list
|
|
30
|
+
|
|
31
|
+
List sessions as an array of rows.
|
|
32
|
+
|
|
33
|
+
Parameters:
|
|
34
|
+
|
|
35
|
+
- `kinds?: string[]` filter: any of `"main" | "group" | "cron" | "hook" | "node" | "other"`
|
|
36
|
+
- `limit?: number` max rows (default: server default, clamp e.g. 200)
|
|
37
|
+
- `activeMinutes?: number` only sessions updated within N minutes
|
|
38
|
+
- `messageLimit?: number` 0 = no messages (default 0); >0 = include last N messages
|
|
39
|
+
|
|
40
|
+
Behavior:
|
|
41
|
+
|
|
42
|
+
- `messageLimit > 0` fetches `chat.history` per session and includes the last N messages.
|
|
43
|
+
- Tool results are filtered out in list output; use `sessions_history` for tool messages.
|
|
44
|
+
- When running in a **sandboxed** agent session, session tools default to **spawned-only visibility** (see below).
|
|
45
|
+
|
|
46
|
+
Row shape (JSON):
|
|
47
|
+
|
|
48
|
+
- `key`: session key (string)
|
|
49
|
+
- `kind`: `main | group | cron | hook | node | other`
|
|
50
|
+
- `channel`: `whatsapp | telegram | discord | signal | imessage | webchat | internal | unknown`
|
|
51
|
+
- `displayName` (group display label if available)
|
|
52
|
+
- `updatedAt` (ms)
|
|
53
|
+
- `sessionId`
|
|
54
|
+
- `model`, `contextTokens`, `totalTokens`
|
|
55
|
+
- `thinkingLevel`, `verboseLevel`, `systemSent`, `abortedLastRun`
|
|
56
|
+
- `sendPolicy` (session override if set)
|
|
57
|
+
- `lastChannel`, `lastTo`
|
|
58
|
+
- `deliveryContext` (normalized `{ channel, to, accountId }` when available)
|
|
59
|
+
- `transcriptPath` (best-effort path derived from store dir + sessionId)
|
|
60
|
+
- `messages?` (only when `messageLimit > 0`)
|
|
61
|
+
|
|
62
|
+
## sessions_history
|
|
63
|
+
|
|
64
|
+
Fetch transcript for one session.
|
|
65
|
+
|
|
66
|
+
Parameters:
|
|
67
|
+
|
|
68
|
+
- `sessionKey` (required; accepts session key or `sessionId` from `sessions_list`)
|
|
69
|
+
- `limit?: number` max messages (server clamps)
|
|
70
|
+
- `includeTools?: boolean` (default false)
|
|
71
|
+
|
|
72
|
+
Behavior:
|
|
73
|
+
|
|
74
|
+
- `includeTools=false` filters `role: "toolResult"` messages.
|
|
75
|
+
- Returns messages array in the raw transcript format.
|
|
76
|
+
- When given a `sessionId`, QuantumClaw resolves it to the corresponding session key (missing ids error).
|
|
77
|
+
|
|
78
|
+
## Gateway session history and live transcript APIs
|
|
79
|
+
|
|
80
|
+
Control UI and gateway clients can use the lower level history and live transcript surfaces directly.
|
|
81
|
+
|
|
82
|
+
HTTP:
|
|
83
|
+
|
|
84
|
+
- `GET /sessions/{sessionKey}/history`
|
|
85
|
+
- Query params: `limit`, `cursor`, `includeTools=1`, `follow=1`
|
|
86
|
+
- Unknown sessions return HTTP `404` with `error.type = "not_found"`
|
|
87
|
+
- `follow=1` upgrades the response to an SSE stream of transcript updates for that session
|
|
88
|
+
|
|
89
|
+
WebSocket:
|
|
90
|
+
|
|
91
|
+
- `sessions.subscribe` subscribes to all session lifecycle and transcript events visible to the client
|
|
92
|
+
- `sessions.messages.subscribe { key }` subscribes only to `session.message` events for one session
|
|
93
|
+
- `sessions.messages.unsubscribe { key }` removes that targeted transcript subscription
|
|
94
|
+
- `session.message` carries appended transcript messages plus live usage metadata when available
|
|
95
|
+
- `sessions.changed` emits `phase: "message"` for transcript appends so session lists can refresh counters and previews
|
|
96
|
+
|
|
97
|
+
## sessions_send
|
|
98
|
+
|
|
99
|
+
Send a message into another session.
|
|
100
|
+
|
|
101
|
+
Parameters:
|
|
102
|
+
|
|
103
|
+
- `sessionKey` (required; accepts session key or `sessionId` from `sessions_list`)
|
|
104
|
+
- `message` (required)
|
|
105
|
+
- `timeoutSeconds?: number` (default >0; 0 = fire-and-forget)
|
|
106
|
+
|
|
107
|
+
Behavior:
|
|
108
|
+
|
|
109
|
+
- `timeoutSeconds = 0`: enqueue and return `{ runId, status: "accepted" }`.
|
|
110
|
+
- `timeoutSeconds > 0`: wait up to N seconds for completion, then return `{ runId, status: "ok", reply }`.
|
|
111
|
+
- If wait times out: `{ runId, status: "timeout", error }`. Run continues; call `sessions_history` later.
|
|
112
|
+
- If the run fails: `{ runId, status: "error", error }`.
|
|
113
|
+
- Announce delivery runs after the primary run completes and is best-effort; `status: "ok"` does not guarantee the announce was delivered.
|
|
114
|
+
- Waits via gateway `agent.wait` (server-side) so reconnects don't drop the wait.
|
|
115
|
+
- Agent-to-agent message context is injected for the primary run.
|
|
116
|
+
- Inter-session messages are persisted with `message.provenance.kind = "inter_session"` so transcript readers can distinguish routed agent instructions from external user input.
|
|
117
|
+
- After the primary run completes, QuantumClaw runs a **reply-back loop**:
|
|
118
|
+
- Round 2+ alternates between requester and target agents.
|
|
119
|
+
- Reply exactly `REPLY_SKIP` to stop the ping‑pong.
|
|
120
|
+
- Max turns is `session.agentToAgent.maxPingPongTurns` (0–5, default 5).
|
|
121
|
+
- Once the loop ends, QuantumClaw runs the **agent‑to‑agent announce step** (target agent only):
|
|
122
|
+
- Reply exactly `ANNOUNCE_SKIP` to stay silent.
|
|
123
|
+
- Any other reply is sent to the target channel.
|
|
124
|
+
- Announce step includes the original request + round‑1 reply + latest ping‑pong reply.
|
|
125
|
+
|
|
126
|
+
## Channel Field
|
|
127
|
+
|
|
128
|
+
- For groups, `channel` is the channel recorded on the session entry.
|
|
129
|
+
- For direct chats, `channel` maps from `lastChannel`.
|
|
130
|
+
- For cron/hook/node, `channel` is `internal`.
|
|
131
|
+
- If missing, `channel` is `unknown`.
|
|
132
|
+
|
|
133
|
+
## Security / Send Policy
|
|
134
|
+
|
|
135
|
+
Policy-based blocking by channel/chat type (not per session id).
|
|
136
|
+
|
|
137
|
+
```json
|
|
138
|
+
{
|
|
139
|
+
"session": {
|
|
140
|
+
"sendPolicy": {
|
|
141
|
+
"rules": [
|
|
142
|
+
{
|
|
143
|
+
"match": { "channel": "discord", "chatType": "group" },
|
|
144
|
+
"action": "deny"
|
|
145
|
+
}
|
|
146
|
+
],
|
|
147
|
+
"default": "allow"
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Runtime override (per session entry):
|
|
154
|
+
|
|
155
|
+
- `sendPolicy: "allow" | "deny"` (unset = inherit config)
|
|
156
|
+
- Settable via `sessions.patch` or owner-only `/send on|off|inherit` (standalone message).
|
|
157
|
+
|
|
158
|
+
Enforcement points:
|
|
159
|
+
|
|
160
|
+
- `chat.send` / `agent` (gateway)
|
|
161
|
+
- auto-reply delivery logic
|
|
162
|
+
|
|
163
|
+
## sessions_spawn
|
|
164
|
+
|
|
165
|
+
Spawn a sub-agent run in an isolated session and announce the result back to the requester chat channel.
|
|
166
|
+
|
|
167
|
+
Parameters:
|
|
168
|
+
|
|
169
|
+
- `task` (required)
|
|
170
|
+
- `label?` (optional; used for logs/UI)
|
|
171
|
+
- `agentId?` (optional; spawn under another agent id if allowed)
|
|
172
|
+
- `model?` (optional; overrides the sub-agent model; invalid values error)
|
|
173
|
+
- `thinking?` (optional; overrides thinking level for the sub-agent run)
|
|
174
|
+
- `runTimeoutSeconds?` (defaults to `agents.defaults.subagents.runTimeoutSeconds` when set, otherwise `0`; when set, aborts the sub-agent run after N seconds)
|
|
175
|
+
- `thread?` (default false; request thread-bound routing for this spawn when supported by the channel/plugin)
|
|
176
|
+
- `mode?` (`run|session`; defaults to `run`, but defaults to `session` when `thread=true`; `mode="session"` requires `thread=true`)
|
|
177
|
+
- `cleanup?` (`delete|keep`, default `keep`)
|
|
178
|
+
- `sandbox?` (`inherit|require`, default `inherit`; `require` rejects spawn unless the target child runtime is sandboxed)
|
|
179
|
+
- `attachments?` (optional array of inline files; subagent runtime only, ACP rejects). Each entry: `{ name, content, encoding?: "utf8" | "base64", mimeType? }`. Files are materialized into the child workspace at `.quantumclaw/attachments/<uuid>/`. Returns a receipt with sha256 per file.
|
|
180
|
+
- `attachAs?` (optional; `{ mountPath? }` hint reserved for future mount implementations)
|
|
181
|
+
|
|
182
|
+
Allowlist:
|
|
183
|
+
|
|
184
|
+
- `agents.list[].subagents.allowAgents`: list of agent ids allowed via `agentId` (`["*"]` to allow any). Default: only the requester agent.
|
|
185
|
+
- Sandbox inheritance guard: if the requester session is sandboxed, `sessions_spawn` rejects targets that would run unsandboxed.
|
|
186
|
+
|
|
187
|
+
Discovery:
|
|
188
|
+
|
|
189
|
+
- Use `agents_list` to discover which agent ids are allowed for `sessions_spawn`.
|
|
190
|
+
|
|
191
|
+
Behavior:
|
|
192
|
+
|
|
193
|
+
- Starts a new `agent:<agentId>:subagent:<uuid>` session with `deliver: false`.
|
|
194
|
+
- Sub-agents default to the full tool set **minus session tools** (configurable via `tools.subagents.tools`).
|
|
195
|
+
- Sub-agents are not allowed to call `sessions_spawn` (no sub-agent → sub-agent spawning).
|
|
196
|
+
- Always non-blocking: returns `{ status: "accepted", runId, childSessionKey }` immediately.
|
|
197
|
+
- With `thread=true`, channel plugins can bind delivery/routing to a thread target (Discord support is controlled by `session.threadBindings.*` and `channels.discord.threadBindings.*`).
|
|
198
|
+
- After completion, QuantumClaw runs a sub-agent **announce step** and posts the result to the requester chat channel.
|
|
199
|
+
- If the assistant final reply is empty, the latest `toolResult` from sub-agent history is included as `Result`.
|
|
200
|
+
- Reply exactly `ANNOUNCE_SKIP` during the announce step to stay silent.
|
|
201
|
+
- Announce replies are normalized to `Status`/`Result`/`Notes`; `Status` comes from runtime outcome (not model text).
|
|
202
|
+
- Sub-agent sessions are auto-archived after `agents.defaults.subagents.archiveAfterMinutes` (default: 60).
|
|
203
|
+
- Announce replies include a stats line (runtime, tokens, sessionKey/sessionId, transcript path, and optional cost).
|
|
204
|
+
|
|
205
|
+
## Sandbox Session Visibility
|
|
206
|
+
|
|
207
|
+
Session tools can be scoped to reduce cross-session access.
|
|
208
|
+
|
|
209
|
+
Default behavior:
|
|
210
|
+
|
|
211
|
+
- `tools.sessions.visibility` defaults to `tree` (current session + spawned subagent sessions).
|
|
212
|
+
- For sandboxed sessions, `agents.defaults.sandbox.sessionToolsVisibility` can hard-clamp visibility.
|
|
213
|
+
|
|
214
|
+
Config:
|
|
215
|
+
|
|
216
|
+
```json5
|
|
217
|
+
{
|
|
218
|
+
tools: {
|
|
219
|
+
sessions: {
|
|
220
|
+
// "self" | "tree" | "agent" | "all"
|
|
221
|
+
// default: "tree"
|
|
222
|
+
visibility: "tree",
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
agents: {
|
|
226
|
+
defaults: {
|
|
227
|
+
sandbox: {
|
|
228
|
+
// default: "spawned"
|
|
229
|
+
sessionToolsVisibility: "spawned", // or "all"
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Notes:
|
|
237
|
+
|
|
238
|
+
- `self`: only the current session key.
|
|
239
|
+
- `tree`: current session + sessions spawned by the current session.
|
|
240
|
+
- `agent`: any session belonging to the current agent id.
|
|
241
|
+
- `all`: any session (cross-agent access still requires `tools.agentToAgent`).
|
|
242
|
+
- When a session is sandboxed and `sessionToolsVisibility="spawned"`, QuantumClaw clamps visibility to `tree` even if you set `tools.sessions.visibility="all"`.
|