@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,291 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "TypeBox schemas as the single source of truth for the gateway protocol"
|
|
3
|
+
read_when:
|
|
4
|
+
- Updating protocol schemas or codegen
|
|
5
|
+
title: "TypeBox"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# TypeBox as protocol source of truth
|
|
9
|
+
|
|
10
|
+
Last updated: 2026-01-10
|
|
11
|
+
|
|
12
|
+
TypeBox is a TypeScript-first schema library. We use it to define the **Gateway
|
|
13
|
+
WebSocket protocol** (handshake, request/response, server events). Those schemas
|
|
14
|
+
drive **runtime validation**, **JSON Schema export**, and **Swift codegen** for
|
|
15
|
+
the macOS app. One source of truth; everything else is generated.
|
|
16
|
+
|
|
17
|
+
If you want the higher-level protocol context, start with
|
|
18
|
+
[Gateway architecture](/concepts/architecture).
|
|
19
|
+
|
|
20
|
+
## Mental model (30 seconds)
|
|
21
|
+
|
|
22
|
+
Every Gateway WS message is one of three frames:
|
|
23
|
+
|
|
24
|
+
- **Request**: `{ type: "req", id, method, params }`
|
|
25
|
+
- **Response**: `{ type: "res", id, ok, payload | error }`
|
|
26
|
+
- **Event**: `{ type: "event", event, payload, seq?, stateVersion? }`
|
|
27
|
+
|
|
28
|
+
The first frame **must** be a `connect` request. After that, clients can call
|
|
29
|
+
methods (e.g. `health`, `send`, `chat.send`) and subscribe to events (e.g.
|
|
30
|
+
`presence`, `tick`, `agent`).
|
|
31
|
+
|
|
32
|
+
Connection flow (minimal):
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
Client Gateway
|
|
36
|
+
|---- req:connect -------->|
|
|
37
|
+
|<---- res:hello-ok --------|
|
|
38
|
+
|<---- event:tick ----------|
|
|
39
|
+
|---- req:health ---------->|
|
|
40
|
+
|<---- res:health ----------|
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Common methods + events:
|
|
44
|
+
|
|
45
|
+
| Category | Examples | Notes |
|
|
46
|
+
| --------- | --------------------------------------------------------- | ---------------------------------- |
|
|
47
|
+
| Core | `connect`, `health`, `status` | `connect` must be first |
|
|
48
|
+
| Messaging | `send`, `poll`, `agent`, `agent.wait` | side-effects need `idempotencyKey` |
|
|
49
|
+
| Chat | `chat.history`, `chat.send`, `chat.abort`, `chat.inject` | WebChat uses these |
|
|
50
|
+
| Sessions | `sessions.list`, `sessions.patch`, `sessions.delete` | session admin |
|
|
51
|
+
| Nodes | `node.list`, `node.invoke`, `node.pair.*` | Gateway WS + node actions |
|
|
52
|
+
| Events | `tick`, `presence`, `agent`, `chat`, `health`, `shutdown` | server push |
|
|
53
|
+
|
|
54
|
+
Authoritative list lives in `src/gateway/server.ts` (`METHODS`, `EVENTS`).
|
|
55
|
+
|
|
56
|
+
## Where the schemas live
|
|
57
|
+
|
|
58
|
+
- Source: `src/gateway/protocol/schema.ts`
|
|
59
|
+
- Runtime validators (AJV): `src/gateway/protocol/index.ts`
|
|
60
|
+
- Server handshake + method dispatch: `src/gateway/server.ts`
|
|
61
|
+
- Node client: `src/gateway/client.ts`
|
|
62
|
+
- Generated JSON Schema: `dist/protocol.schema.json`
|
|
63
|
+
- Generated Swift models: `apps/macos/Sources/QuantumClawProtocol/GatewayModels.swift`
|
|
64
|
+
|
|
65
|
+
## Current pipeline
|
|
66
|
+
|
|
67
|
+
- `pnpm protocol:gen`
|
|
68
|
+
- writes JSON Schema (draft‑07) to `dist/protocol.schema.json`
|
|
69
|
+
- `pnpm protocol:gen:swift`
|
|
70
|
+
- generates Swift gateway models
|
|
71
|
+
- `pnpm protocol:check`
|
|
72
|
+
- runs both generators and verifies the output is committed
|
|
73
|
+
|
|
74
|
+
## How the schemas are used at runtime
|
|
75
|
+
|
|
76
|
+
- **Server side**: every inbound frame is validated with AJV. The handshake only
|
|
77
|
+
accepts a `connect` request whose params match `ConnectParams`.
|
|
78
|
+
- **Client side**: the JS client validates event and response frames before
|
|
79
|
+
using them.
|
|
80
|
+
- **Method surface**: the Gateway advertises the supported `methods` and
|
|
81
|
+
`events` in `hello-ok`.
|
|
82
|
+
|
|
83
|
+
## Example frames
|
|
84
|
+
|
|
85
|
+
Connect (first message):
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"type": "req",
|
|
90
|
+
"id": "c1",
|
|
91
|
+
"method": "connect",
|
|
92
|
+
"params": {
|
|
93
|
+
"minProtocol": 2,
|
|
94
|
+
"maxProtocol": 2,
|
|
95
|
+
"client": {
|
|
96
|
+
"id": "quantumclaw-macos",
|
|
97
|
+
"displayName": "macos",
|
|
98
|
+
"version": "1.0.0",
|
|
99
|
+
"platform": "macos 15.1",
|
|
100
|
+
"mode": "ui",
|
|
101
|
+
"instanceId": "A1B2"
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Hello-ok response:
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"type": "res",
|
|
112
|
+
"id": "c1",
|
|
113
|
+
"ok": true,
|
|
114
|
+
"payload": {
|
|
115
|
+
"type": "hello-ok",
|
|
116
|
+
"protocol": 2,
|
|
117
|
+
"server": { "version": "dev", "connId": "ws-1" },
|
|
118
|
+
"features": { "methods": ["health"], "events": ["tick"] },
|
|
119
|
+
"snapshot": {
|
|
120
|
+
"presence": [],
|
|
121
|
+
"health": {},
|
|
122
|
+
"stateVersion": { "presence": 0, "health": 0 },
|
|
123
|
+
"uptimeMs": 0
|
|
124
|
+
},
|
|
125
|
+
"policy": { "maxPayload": 1048576, "maxBufferedBytes": 1048576, "tickIntervalMs": 30000 }
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Request + response:
|
|
131
|
+
|
|
132
|
+
```json
|
|
133
|
+
{ "type": "req", "id": "r1", "method": "health" }
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
```json
|
|
137
|
+
{ "type": "res", "id": "r1", "ok": true, "payload": { "ok": true } }
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Event:
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{ "type": "event", "event": "tick", "payload": { "ts": 1730000000 }, "seq": 12 }
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Minimal client (Node.js)
|
|
147
|
+
|
|
148
|
+
Smallest useful flow: connect + health.
|
|
149
|
+
|
|
150
|
+
```ts
|
|
151
|
+
import { WebSocket } from "ws";
|
|
152
|
+
|
|
153
|
+
const ws = new WebSocket("ws://127.0.0.1:18789");
|
|
154
|
+
|
|
155
|
+
ws.on("open", () => {
|
|
156
|
+
ws.send(
|
|
157
|
+
JSON.stringify({
|
|
158
|
+
type: "req",
|
|
159
|
+
id: "c1",
|
|
160
|
+
method: "connect",
|
|
161
|
+
params: {
|
|
162
|
+
minProtocol: 3,
|
|
163
|
+
maxProtocol: 3,
|
|
164
|
+
client: {
|
|
165
|
+
id: "cli",
|
|
166
|
+
displayName: "example",
|
|
167
|
+
version: "dev",
|
|
168
|
+
platform: "node",
|
|
169
|
+
mode: "cli",
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
}),
|
|
173
|
+
);
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
ws.on("message", (data) => {
|
|
177
|
+
const msg = JSON.parse(String(data));
|
|
178
|
+
if (msg.type === "res" && msg.id === "c1" && msg.ok) {
|
|
179
|
+
ws.send(JSON.stringify({ type: "req", id: "h1", method: "health" }));
|
|
180
|
+
}
|
|
181
|
+
if (msg.type === "res" && msg.id === "h1") {
|
|
182
|
+
console.log("health:", msg.payload);
|
|
183
|
+
ws.close();
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Worked example: add a method end-to-end
|
|
189
|
+
|
|
190
|
+
Example: add a new `system.echo` request that returns `{ ok: true, text }`.
|
|
191
|
+
|
|
192
|
+
1. **Schema (source of truth)**
|
|
193
|
+
|
|
194
|
+
Add to `src/gateway/protocol/schema.ts`:
|
|
195
|
+
|
|
196
|
+
```ts
|
|
197
|
+
export const SystemEchoParamsSchema = Type.Object(
|
|
198
|
+
{ text: NonEmptyString },
|
|
199
|
+
{ additionalProperties: false },
|
|
200
|
+
);
|
|
201
|
+
|
|
202
|
+
export const SystemEchoResultSchema = Type.Object(
|
|
203
|
+
{ ok: Type.Boolean(), text: NonEmptyString },
|
|
204
|
+
{ additionalProperties: false },
|
|
205
|
+
);
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Add both to `ProtocolSchemas` and export types:
|
|
209
|
+
|
|
210
|
+
```ts
|
|
211
|
+
SystemEchoParams: SystemEchoParamsSchema,
|
|
212
|
+
SystemEchoResult: SystemEchoResultSchema,
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
```ts
|
|
216
|
+
export type SystemEchoParams = Static<typeof SystemEchoParamsSchema>;
|
|
217
|
+
export type SystemEchoResult = Static<typeof SystemEchoResultSchema>;
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
2. **Validation**
|
|
221
|
+
|
|
222
|
+
In `src/gateway/protocol/index.ts`, export an AJV validator:
|
|
223
|
+
|
|
224
|
+
```ts
|
|
225
|
+
export const validateSystemEchoParams = ajv.compile<SystemEchoParams>(SystemEchoParamsSchema);
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
3. **Server behavior**
|
|
229
|
+
|
|
230
|
+
Add a handler in `src/gateway/server-methods/system.ts`:
|
|
231
|
+
|
|
232
|
+
```ts
|
|
233
|
+
export const systemHandlers: GatewayRequestHandlers = {
|
|
234
|
+
"system.echo": ({ params, respond }) => {
|
|
235
|
+
const text = String(params.text ?? "");
|
|
236
|
+
respond(true, { ok: true, text });
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Register it in `src/gateway/server-methods.ts` (already merges `systemHandlers`),
|
|
242
|
+
then add `"system.echo"` to `METHODS` in `src/gateway/server.ts`.
|
|
243
|
+
|
|
244
|
+
4. **Regenerate**
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
pnpm protocol:check
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
5. **Tests + docs**
|
|
251
|
+
|
|
252
|
+
Add a server test in `src/gateway/server.*.test.ts` and note the method in docs.
|
|
253
|
+
|
|
254
|
+
## Swift codegen behavior
|
|
255
|
+
|
|
256
|
+
The Swift generator emits:
|
|
257
|
+
|
|
258
|
+
- `GatewayFrame` enum with `req`, `res`, `event`, and `unknown` cases
|
|
259
|
+
- Strongly typed payload structs/enums
|
|
260
|
+
- `ErrorCode` values and `GATEWAY_PROTOCOL_VERSION`
|
|
261
|
+
|
|
262
|
+
Unknown frame types are preserved as raw payloads for forward compatibility.
|
|
263
|
+
|
|
264
|
+
## Versioning + compatibility
|
|
265
|
+
|
|
266
|
+
- `PROTOCOL_VERSION` lives in `src/gateway/protocol/schema.ts`.
|
|
267
|
+
- Clients send `minProtocol` + `maxProtocol`; the server rejects mismatches.
|
|
268
|
+
- The Swift models keep unknown frame types to avoid breaking older clients.
|
|
269
|
+
|
|
270
|
+
## Schema patterns and conventions
|
|
271
|
+
|
|
272
|
+
- Most objects use `additionalProperties: false` for strict payloads.
|
|
273
|
+
- `NonEmptyString` is the default for IDs and method/event names.
|
|
274
|
+
- The top-level `GatewayFrame` uses a **discriminator** on `type`.
|
|
275
|
+
- Methods with side effects usually require an `idempotencyKey` in params
|
|
276
|
+
(example: `send`, `poll`, `agent`, `chat.send`).
|
|
277
|
+
- `agent` accepts optional `internalEvents` for runtime-generated orchestration context
|
|
278
|
+
(for example subagent/cron task completion handoff); treat this as internal API surface.
|
|
279
|
+
|
|
280
|
+
## Live schema JSON
|
|
281
|
+
|
|
282
|
+
Generated JSON Schema is in the repo at `dist/protocol.schema.json`. The
|
|
283
|
+
published raw file is typically available at:
|
|
284
|
+
|
|
285
|
+
- [https://raw.githubusercontent.com/quantumclaw/quantumclaw/main/dist/protocol.schema.json](https://raw.githubusercontent.com/quantumclaw/quantumclaw/main/dist/protocol.schema.json)
|
|
286
|
+
|
|
287
|
+
## When you change schemas
|
|
288
|
+
|
|
289
|
+
1. Update the TypeBox schemas.
|
|
290
|
+
2. Run `pnpm protocol:check`.
|
|
291
|
+
3. Commit the regenerated schema + Swift models.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "When QuantumClaw shows typing indicators and how to tune them"
|
|
3
|
+
read_when:
|
|
4
|
+
- Changing typing indicator behavior or defaults
|
|
5
|
+
title: "Typing Indicators"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Typing indicators
|
|
9
|
+
|
|
10
|
+
Typing indicators are sent to the chat channel while a run is active. Use
|
|
11
|
+
`agents.defaults.typingMode` to control **when** typing starts and `typingIntervalSeconds`
|
|
12
|
+
to control **how often** it refreshes.
|
|
13
|
+
|
|
14
|
+
## Defaults
|
|
15
|
+
|
|
16
|
+
When `agents.defaults.typingMode` is **unset**, QuantumClaw keeps the legacy behavior:
|
|
17
|
+
|
|
18
|
+
- **Direct chats**: typing starts immediately once the model loop begins.
|
|
19
|
+
- **Group chats with a mention**: typing starts immediately.
|
|
20
|
+
- **Group chats without a mention**: typing starts only when message text begins streaming.
|
|
21
|
+
- **Heartbeat runs**: typing is disabled.
|
|
22
|
+
|
|
23
|
+
## Modes
|
|
24
|
+
|
|
25
|
+
Set `agents.defaults.typingMode` to one of:
|
|
26
|
+
|
|
27
|
+
- `never` — no typing indicator, ever.
|
|
28
|
+
- `instant` — start typing **as soon as the model loop begins**, even if the run
|
|
29
|
+
later returns only the silent reply token.
|
|
30
|
+
- `thinking` — start typing on the **first reasoning delta** (requires
|
|
31
|
+
`reasoningLevel: "stream"` for the run).
|
|
32
|
+
- `message` — start typing on the **first non-silent text delta** (ignores
|
|
33
|
+
the `NO_REPLY` silent token).
|
|
34
|
+
|
|
35
|
+
Order of “how early it fires”:
|
|
36
|
+
`never` → `message` → `thinking` → `instant`
|
|
37
|
+
|
|
38
|
+
## Configuration
|
|
39
|
+
|
|
40
|
+
```json5
|
|
41
|
+
{
|
|
42
|
+
agent: {
|
|
43
|
+
typingMode: "thinking",
|
|
44
|
+
typingIntervalSeconds: 6,
|
|
45
|
+
},
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
You can override mode or cadence per session:
|
|
50
|
+
|
|
51
|
+
```json5
|
|
52
|
+
{
|
|
53
|
+
session: {
|
|
54
|
+
typingMode: "message",
|
|
55
|
+
typingIntervalSeconds: 4,
|
|
56
|
+
},
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Notes
|
|
61
|
+
|
|
62
|
+
- `message` mode won’t show typing for silent-only replies (e.g. the `NO_REPLY`
|
|
63
|
+
token used to suppress output).
|
|
64
|
+
- `thinking` only fires if the run streams reasoning (`reasoningLevel: "stream"`).
|
|
65
|
+
If the model doesn’t emit reasoning deltas, typing won’t start.
|
|
66
|
+
- Heartbeats never show typing, regardless of mode.
|
|
67
|
+
- `typingIntervalSeconds` controls the **refresh cadence**, not the start time.
|
|
68
|
+
The default is 6 seconds.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Usage tracking surfaces and credential requirements"
|
|
3
|
+
read_when:
|
|
4
|
+
- You are wiring provider usage/quota surfaces
|
|
5
|
+
- You need to explain usage tracking behavior or auth requirements
|
|
6
|
+
title: "Usage Tracking"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Usage tracking
|
|
10
|
+
|
|
11
|
+
## What it is
|
|
12
|
+
|
|
13
|
+
- Pulls provider usage/quota directly from their usage endpoints.
|
|
14
|
+
- No estimated costs; only the provider-reported windows.
|
|
15
|
+
|
|
16
|
+
## Where it shows up
|
|
17
|
+
|
|
18
|
+
- `/status` in chats: emoji‑rich status card with session tokens + estimated cost (API key only). Provider usage shows for the **current model provider** when available.
|
|
19
|
+
- `/usage off|tokens|full` in chats: per-response usage footer (OAuth shows tokens only).
|
|
20
|
+
- `/usage cost` in chats: local cost summary aggregated from QuantumClaw session logs.
|
|
21
|
+
- CLI: `quantumclaw status --usage` prints a full per-provider breakdown.
|
|
22
|
+
- CLI: `quantumclaw channels list` prints the same usage snapshot alongside provider config (use `--no-usage` to skip).
|
|
23
|
+
- macOS menu bar: “Usage” section under Context (only if available).
|
|
24
|
+
|
|
25
|
+
## Providers + credentials
|
|
26
|
+
|
|
27
|
+
- **Anthropic (Claude)**: OAuth tokens in auth profiles.
|
|
28
|
+
- **GitHub Copilot**: OAuth tokens in auth profiles.
|
|
29
|
+
- **Gemini CLI**: OAuth tokens in auth profiles.
|
|
30
|
+
- **Antigravity**: OAuth tokens in auth profiles.
|
|
31
|
+
- **OpenAI Codex**: OAuth tokens in auth profiles (accountId used when present).
|
|
32
|
+
- **MiniMax**: API key (coding plan key; `MINIMAX_CODE_PLAN_KEY` or `MINIMAX_API_KEY`); uses the 5‑hour coding plan window.
|
|
33
|
+
- **z.ai**: API key via env/config/auth store.
|
|
34
|
+
|
|
35
|
+
Usage is hidden if no matching OAuth/API credentials exist.
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Date and time handling across envelopes, prompts, tools, and connectors"
|
|
3
|
+
read_when:
|
|
4
|
+
- You are changing how timestamps are shown to the model or users
|
|
5
|
+
- You are debugging time formatting in messages or system prompt output
|
|
6
|
+
title: "Date and Time"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Date & Time
|
|
10
|
+
|
|
11
|
+
QuantumClaw defaults to **host-local time for transport timestamps** and **user timezone only in the system prompt**.
|
|
12
|
+
Provider timestamps are preserved so tools keep their native semantics (current time is available via `session_status`).
|
|
13
|
+
|
|
14
|
+
## Message envelopes (local by default)
|
|
15
|
+
|
|
16
|
+
Inbound messages are wrapped with a timestamp (minute precision):
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
[Provider ... 2026-01-05 16:26 PST] message text
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
This envelope timestamp is **host-local by default**, regardless of the provider timezone.
|
|
23
|
+
|
|
24
|
+
You can override this behavior:
|
|
25
|
+
|
|
26
|
+
```json5
|
|
27
|
+
{
|
|
28
|
+
agents: {
|
|
29
|
+
defaults: {
|
|
30
|
+
envelopeTimezone: "local", // "utc" | "local" | "user" | IANA timezone
|
|
31
|
+
envelopeTimestamp: "on", // "on" | "off"
|
|
32
|
+
envelopeElapsed: "on", // "on" | "off"
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
- `envelopeTimezone: "utc"` uses UTC.
|
|
39
|
+
- `envelopeTimezone: "local"` uses the host timezone.
|
|
40
|
+
- `envelopeTimezone: "user"` uses `agents.defaults.userTimezone` (falls back to host timezone).
|
|
41
|
+
- Use an explicit IANA timezone (e.g., `"America/Chicago"`) for a fixed zone.
|
|
42
|
+
- `envelopeTimestamp: "off"` removes absolute timestamps from envelope headers.
|
|
43
|
+
- `envelopeElapsed: "off"` removes elapsed time suffixes (the `+2m` style).
|
|
44
|
+
|
|
45
|
+
### Examples
|
|
46
|
+
|
|
47
|
+
**Local (default):**
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
[WhatsApp +1555 2026-01-18 00:19 PST] hello
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**User timezone:**
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
[WhatsApp +1555 2026-01-18 00:19 CST] hello
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Elapsed time enabled:**
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
[WhatsApp +1555 +30s 2026-01-18T05:19Z] follow-up
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## System prompt: Current Date & Time
|
|
66
|
+
|
|
67
|
+
If the user timezone is known, the system prompt includes a dedicated
|
|
68
|
+
**Current Date & Time** section with the **time zone only** (no clock/time format)
|
|
69
|
+
to keep prompt caching stable:
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
Time zone: America/Chicago
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
When the agent needs the current time, use the `session_status` tool; the status
|
|
76
|
+
card includes a timestamp line.
|
|
77
|
+
|
|
78
|
+
## System event lines (local by default)
|
|
79
|
+
|
|
80
|
+
Queued system events inserted into agent context are prefixed with a timestamp using the
|
|
81
|
+
same timezone selection as message envelopes (default: host-local).
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
System: [2026-01-12 12:19:17 PST] Model switched.
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Configure user timezone + format
|
|
88
|
+
|
|
89
|
+
```json5
|
|
90
|
+
{
|
|
91
|
+
agents: {
|
|
92
|
+
defaults: {
|
|
93
|
+
userTimezone: "America/Chicago",
|
|
94
|
+
timeFormat: "auto", // auto | 12 | 24
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
- `userTimezone` sets the **user-local timezone** for prompt context.
|
|
101
|
+
- `timeFormat` controls **12h/24h display** in the prompt. `auto` follows OS prefs.
|
|
102
|
+
|
|
103
|
+
## Time format detection (auto)
|
|
104
|
+
|
|
105
|
+
When `timeFormat: "auto"`, QuantumClaw inspects the OS preference (macOS/Windows)
|
|
106
|
+
and falls back to locale formatting. The detected value is **cached per process**
|
|
107
|
+
to avoid repeated system calls.
|
|
108
|
+
|
|
109
|
+
## Tool payloads + connectors (raw provider time + normalized fields)
|
|
110
|
+
|
|
111
|
+
Channel tools return **provider-native timestamps** and add normalized fields for consistency:
|
|
112
|
+
|
|
113
|
+
- `timestampMs`: epoch milliseconds (UTC)
|
|
114
|
+
- `timestampUtc`: ISO 8601 UTC string
|
|
115
|
+
|
|
116
|
+
Raw provider fields are preserved so nothing is lost.
|
|
117
|
+
|
|
118
|
+
- Slack: epoch-like strings from the API
|
|
119
|
+
- Discord: UTC ISO timestamps
|
|
120
|
+
- Telegram/WhatsApp: provider-specific numeric/ISO timestamps
|
|
121
|
+
|
|
122
|
+
If you need local time, convert it downstream using the known timezone.
|
|
123
|
+
|
|
124
|
+
## Related docs
|
|
125
|
+
|
|
126
|
+
- [System Prompt](/concepts/system-prompt)
|
|
127
|
+
- [Timezones](/concepts/timezone)
|
|
128
|
+
- [Messages](/concepts/messages)
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: Node + tsx "__name is not a function" crash notes and workarounds
|
|
3
|
+
read_when:
|
|
4
|
+
- Debugging Node-only dev scripts or watch mode failures
|
|
5
|
+
- Investigating tsx/esbuild loader crashes in QuantumClaw
|
|
6
|
+
title: "Node + tsx Crash"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Node + tsx "\_\_name is not a function" crash
|
|
10
|
+
|
|
11
|
+
## Summary
|
|
12
|
+
|
|
13
|
+
Running QuantumClaw via Node with `tsx` fails at startup with:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
[quantumclaw] Failed to start CLI: TypeError: __name is not a function
|
|
17
|
+
at createSubsystemLogger (.../src/logging/subsystem.ts:203:25)
|
|
18
|
+
at .../src/agents/auth-profiles/constants.ts:25:20
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
This began after switching dev scripts from Bun to `tsx` (commit `2871657e`, 2026-01-06). The same runtime path worked with Bun.
|
|
22
|
+
|
|
23
|
+
## Environment
|
|
24
|
+
|
|
25
|
+
- Node: v25.x (observed on v25.3.0)
|
|
26
|
+
- tsx: 4.21.0
|
|
27
|
+
- OS: macOS (repro also likely on other platforms that run Node 25)
|
|
28
|
+
|
|
29
|
+
## Repro (Node-only)
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# in repo root
|
|
33
|
+
node --version
|
|
34
|
+
pnpm install
|
|
35
|
+
node --import tsx src/entry.ts status
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Minimal repro in repo
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
node --import tsx scripts/repro/tsx-name-repro.ts
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Node version check
|
|
45
|
+
|
|
46
|
+
- Node 25.3.0: fails
|
|
47
|
+
- Node 22.22.0 (Homebrew `node@22`): fails
|
|
48
|
+
- Node 24: not installed here yet; needs verification
|
|
49
|
+
|
|
50
|
+
## Notes / hypothesis
|
|
51
|
+
|
|
52
|
+
- `tsx` uses esbuild to transform TS/ESM. esbuild’s `keepNames` emits a `__name` helper and wraps function definitions with `__name(...)`.
|
|
53
|
+
- The crash indicates `__name` exists but is not a function at runtime, which implies the helper is missing or overwritten for this module in the Node 25 loader path.
|
|
54
|
+
- Similar `__name` helper issues have been reported in other esbuild consumers when the helper is missing or rewritten.
|
|
55
|
+
|
|
56
|
+
## Regression history
|
|
57
|
+
|
|
58
|
+
- `2871657e` (2026-01-06): scripts changed from Bun to tsx to make Bun optional.
|
|
59
|
+
- Before that (Bun path), `quantumclaw status` and `gateway:watch` worked.
|
|
60
|
+
|
|
61
|
+
## Workarounds
|
|
62
|
+
|
|
63
|
+
- Use Bun for dev scripts (current temporary revert).
|
|
64
|
+
- Use Node + tsc watch, then run compiled output:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pnpm exec tsc --watch --preserveWatchOutput
|
|
68
|
+
node --watch quantumclaw.mjs status
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
- Confirmed locally: `pnpm exec tsc -p tsconfig.json` + `node quantumclaw.mjs status` works on Node 25.
|
|
72
|
+
- Disable esbuild keepNames in the TS loader if possible (prevents `__name` helper insertion); tsx does not currently expose this.
|
|
73
|
+
- Test Node LTS (22/24) with `tsx` to see if the issue is Node 25–specific.
|
|
74
|
+
|
|
75
|
+
## References
|
|
76
|
+
|
|
77
|
+
- [https://opennext.js.org/cloudflare/howtos/keep_names](https://opennext.js.org/cloudflare/howtos/keep_names)
|
|
78
|
+
- [https://esbuild.github.io/api/#keep-names](https://esbuild.github.io/api/#keep-names)
|
|
79
|
+
- [https://github.com/evanw/esbuild/issues/1031](https://github.com/evanw/esbuild/issues/1031)
|
|
80
|
+
|
|
81
|
+
## Next steps
|
|
82
|
+
|
|
83
|
+
- Repro on Node 22/24 to confirm Node 25 regression.
|
|
84
|
+
- Test `tsx` nightly or pin to earlier version if a known regression exists.
|
|
85
|
+
- If reproduces on Node LTS, file a minimal repro upstream with the `__name` stack trace.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Diagnostics flags for targeted debug logs"
|
|
3
|
+
read_when:
|
|
4
|
+
- You need targeted debug logs without raising global logging levels
|
|
5
|
+
- You need to capture subsystem-specific logs for support
|
|
6
|
+
title: "Diagnostics Flags"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Diagnostics Flags
|
|
10
|
+
|
|
11
|
+
Diagnostics flags let you enable targeted debug logs without turning on verbose logging everywhere. Flags are opt-in and have no effect unless a subsystem checks them.
|
|
12
|
+
|
|
13
|
+
## How it works
|
|
14
|
+
|
|
15
|
+
- Flags are strings (case-insensitive).
|
|
16
|
+
- You can enable flags in config or via an env override.
|
|
17
|
+
- Wildcards are supported:
|
|
18
|
+
- `telegram.*` matches `telegram.http`
|
|
19
|
+
- `*` enables all flags
|
|
20
|
+
|
|
21
|
+
## Enable via config
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"diagnostics": {
|
|
26
|
+
"flags": ["telegram.http"]
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Multiple flags:
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"diagnostics": {
|
|
36
|
+
"flags": ["telegram.http", "gateway.*"]
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Restart the gateway after changing flags.
|
|
42
|
+
|
|
43
|
+
## Env override (one-off)
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
QUANTUMCLAW_DIAGNOSTICS=telegram.http,telegram.payload
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Disable all flags:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
QUANTUMCLAW_DIAGNOSTICS=0
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Where logs go
|
|
56
|
+
|
|
57
|
+
Flags emit logs into the standard diagnostics log file. By default:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
/tmp/quantumclaw/quantumclaw-YYYY-MM-DD.log
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
If you set `logging.file`, use that path instead. Logs are JSONL (one JSON object per line). Redaction still applies based on `logging.redactSensitive`.
|
|
64
|
+
|
|
65
|
+
## Extract logs
|
|
66
|
+
|
|
67
|
+
Pick the latest log file:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
ls -t /tmp/quantumclaw/quantumclaw-*.log | head -n 1
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Filter for Telegram HTTP diagnostics:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
rg "telegram http error" /tmp/quantumclaw/quantumclaw-*.log
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Or tail while reproducing:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
tail -f /tmp/quantumclaw/quantumclaw-$(date +%F).log | rg "telegram http error"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
For remote gateways, you can also use `quantumclaw logs --follow` (see [/cli/logs](/cli/logs)).
|
|
86
|
+
|
|
87
|
+
## Notes
|
|
88
|
+
|
|
89
|
+
- If `logging.level` is set higher than `warn`, these logs may be suppressed. Default `info` is fine.
|
|
90
|
+
- Flags are safe to leave enabled; they only affect log volume for the specific subsystem.
|
|
91
|
+
- Use [/logging](/logging) to change log destinations, levels, and redaction.
|