nodmix 2026.5.25
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 +11573 -0
- package/LICENSE +21 -0
- package/README.md +486 -0
- package/docs/.i18n/README.md +81 -0
- package/docs/.i18n/ar-navigation.json +18 -0
- package/docs/.i18n/de-navigation.json +18 -0
- package/docs/.i18n/es-navigation.json +18 -0
- package/docs/.i18n/fr-navigation.json +18 -0
- package/docs/.i18n/glossary.ar.json +78 -0
- package/docs/.i18n/glossary.de.json +78 -0
- package/docs/.i18n/glossary.es.json +78 -0
- package/docs/.i18n/glossary.fa.json +78 -0
- package/docs/.i18n/glossary.fr.json +78 -0
- package/docs/.i18n/glossary.id.json +78 -0
- package/docs/.i18n/glossary.it.json +78 -0
- package/docs/.i18n/glossary.ja-JP.json +98 -0
- package/docs/.i18n/glossary.ko.json +78 -0
- package/docs/.i18n/glossary.nl.json +78 -0
- package/docs/.i18n/glossary.pl.json +78 -0
- package/docs/.i18n/glossary.pt-BR.json +78 -0
- package/docs/.i18n/glossary.th.json +78 -0
- package/docs/.i18n/glossary.tr.json +78 -0
- package/docs/.i18n/glossary.uk.json +78 -0
- package/docs/.i18n/glossary.vi.json +78 -0
- package/docs/.i18n/glossary.zh-CN.json +1002 -0
- package/docs/.i18n/glossary.zh-TW.json +78 -0
- package/docs/.i18n/id-navigation.json +18 -0
- package/docs/.i18n/it-navigation.json +18 -0
- package/docs/.i18n/ja-navigation.json +18 -0
- package/docs/.i18n/ko-navigation.json +18 -0
- package/docs/.i18n/pl-navigation.json +18 -0
- package/docs/.i18n/pt-BR-navigation.json +18 -0
- package/docs/.i18n/tr-navigation.json +18 -0
- package/docs/.i18n/translation-workflow.md +111 -0
- package/docs/.i18n/zh-Hans-navigation.json +542 -0
- package/docs/AGENTS.md +36 -0
- package/docs/announcements/bluebubbles-imessage.md +79 -0
- package/docs/assets/install-script.svg +1 -0
- package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
- package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
- package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
- package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
- package/docs/assets/macos-onboarding/05-permissions.png +0 -0
- package/docs/assets/openclaw-logo-text-dark.png +0 -0
- package/docs/assets/openclaw-logo-text-dark.svg +418 -0
- package/docs/assets/openclaw-logo-text.png +0 -0
- package/docs/assets/openclaw-logo-text.svg +418 -0
- package/docs/assets/pixel-lobster.svg +60 -0
- package/docs/assets/pr/quick-settings-browser-tools.png +0 -0
- package/docs/assets/showcase/agents-ui.jpg +0 -0
- package/docs/assets/showcase/bambu-cli.png +0 -0
- package/docs/assets/showcase/codexmonitor.png +0 -0
- package/docs/assets/showcase/gohome-grafana.png +0 -0
- package/docs/assets/showcase/ios-testflight.jpg +0 -0
- package/docs/assets/showcase/oura-health.png +0 -0
- package/docs/assets/showcase/padel-cli.svg +11 -0
- package/docs/assets/showcase/padel-screenshot.jpg +0 -0
- package/docs/assets/showcase/papla-tts.jpg +0 -0
- package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
- package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
- package/docs/assets/showcase/roborock-status.svg +13 -0
- package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
- package/docs/assets/showcase/snag.png +0 -0
- package/docs/assets/showcase/tesco-shop.jpg +0 -0
- package/docs/assets/showcase/wienerlinien.png +0 -0
- package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
- package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
- package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
- package/docs/assets/sponsors/blacksmith-light.svg +14 -0
- package/docs/assets/sponsors/blacksmith.svg +14 -0
- package/docs/assets/sponsors/convex-light.svg +16 -0
- package/docs/assets/sponsors/convex.svg +16 -0
- package/docs/assets/sponsors/github-light.svg +3 -0
- package/docs/assets/sponsors/github.svg +3 -0
- package/docs/assets/sponsors/nvidia-dark.svg +9 -0
- package/docs/assets/sponsors/nvidia.svg +9 -0
- package/docs/assets/sponsors/openai-light.svg +3 -0
- package/docs/assets/sponsors/openai.svg +3 -0
- package/docs/assets/sponsors/vercel-light.svg +5 -0
- package/docs/assets/sponsors/vercel.svg +5 -0
- package/docs/auth-credential-semantics.md +124 -0
- package/docs/automation/auth-monitoring.md +11 -0
- package/docs/automation/clawflow.md +12 -0
- package/docs/automation/cron-jobs.md +500 -0
- package/docs/automation/cron-vs-heartbeat.md +11 -0
- package/docs/automation/gmail-pubsub.md +11 -0
- package/docs/automation/hooks.md +365 -0
- package/docs/automation/index.md +135 -0
- package/docs/automation/poll.md +12 -0
- package/docs/automation/standing-orders.md +250 -0
- package/docs/automation/taskflow.md +155 -0
- package/docs/automation/tasks.md +374 -0
- package/docs/automation/troubleshooting.md +12 -0
- package/docs/automation/webhook.md +12 -0
- package/docs/brave-search.md +11 -0
- package/docs/channels/access-groups.md +201 -0
- package/docs/channels/ambient-room-events.md +214 -0
- package/docs/channels/bot-loop-protection.md +131 -0
- package/docs/channels/broadcast-groups.md +472 -0
- package/docs/channels/channel-routing.md +162 -0
- package/docs/channels/clickclack.md +138 -0
- package/docs/channels/discord.md +1762 -0
- package/docs/channels/feishu.md +502 -0
- package/docs/channels/googlechat.md +284 -0
- package/docs/channels/group-messages.md +95 -0
- package/docs/channels/groups.md +519 -0
- package/docs/channels/imessage-from-bluebubbles.md +259 -0
- package/docs/channels/imessage.md +813 -0
- package/docs/channels/index.md +64 -0
- package/docs/channels/irc.md +253 -0
- package/docs/channels/line.md +243 -0
- package/docs/channels/location.md +71 -0
- package/docs/channels/matrix-migration.md +370 -0
- package/docs/channels/matrix-presentation.md +77 -0
- package/docs/channels/matrix-push-rules.md +150 -0
- package/docs/channels/matrix.md +921 -0
- package/docs/channels/mattermost.md +542 -0
- package/docs/channels/msteams.md +1042 -0
- package/docs/channels/nextcloud-talk.md +176 -0
- package/docs/channels/nostr.md +253 -0
- package/docs/channels/pairing.md +214 -0
- package/docs/channels/qqbot.md +309 -0
- package/docs/channels/signal.md +400 -0
- package/docs/channels/slack.md +1564 -0
- package/docs/channels/synology-chat.md +187 -0
- package/docs/channels/telegram.md +1107 -0
- package/docs/channels/tlon.md +296 -0
- package/docs/channels/troubleshooting.md +161 -0
- package/docs/channels/twitch.md +431 -0
- package/docs/channels/wechat.md +171 -0
- package/docs/channels/whatsapp.md +739 -0
- package/docs/channels/yuanbao.md +416 -0
- package/docs/channels/zalo.md +253 -0
- package/docs/channels/zalouser.md +199 -0
- package/docs/ci.md +612 -0
- package/docs/clawhub/publishing.md +96 -0
- package/docs/cli/acp.md +370 -0
- package/docs/cli/agent.md +103 -0
- package/docs/cli/agents.md +232 -0
- package/docs/cli/approvals.md +190 -0
- package/docs/cli/backup.md +97 -0
- package/docs/cli/browser.md +307 -0
- package/docs/cli/channels.md +154 -0
- package/docs/cli/clawbot.md +25 -0
- package/docs/cli/commitments.md +90 -0
- package/docs/cli/completion.md +39 -0
- package/docs/cli/config.md +504 -0
- package/docs/cli/configure.md +77 -0
- package/docs/cli/crestodian.md +332 -0
- package/docs/cli/cron.md +281 -0
- package/docs/cli/daemon.md +67 -0
- package/docs/cli/dashboard.md +33 -0
- package/docs/cli/devices.md +204 -0
- package/docs/cli/directory.md +68 -0
- package/docs/cli/dns.md +53 -0
- package/docs/cli/docs.md +73 -0
- package/docs/cli/doctor.md +237 -0
- package/docs/cli/flows.md +52 -0
- package/docs/cli/gateway.md +567 -0
- package/docs/cli/health.md +43 -0
- package/docs/cli/hooks.md +345 -0
- package/docs/cli/index.md +396 -0
- package/docs/cli/infer.md +364 -0
- package/docs/cli/logs.md +65 -0
- package/docs/cli/mcp.md +529 -0
- package/docs/cli/memory.md +183 -0
- package/docs/cli/message.md +317 -0
- package/docs/cli/migrate.md +290 -0
- package/docs/cli/models.md +224 -0
- package/docs/cli/node.md +177 -0
- package/docs/cli/nodes.md +76 -0
- package/docs/cli/onboard.md +245 -0
- package/docs/cli/pairing.md +77 -0
- package/docs/cli/path.md +502 -0
- package/docs/cli/plugins.md +454 -0
- package/docs/cli/policy.md +418 -0
- package/docs/cli/proxy.md +89 -0
- package/docs/cli/qr.md +56 -0
- package/docs/cli/reset.md +39 -0
- package/docs/cli/sandbox.md +208 -0
- package/docs/cli/secrets.md +202 -0
- package/docs/cli/security.md +124 -0
- package/docs/cli/sessions.md +164 -0
- package/docs/cli/setup.md +59 -0
- package/docs/cli/skills.md +102 -0
- package/docs/cli/status.md +45 -0
- package/docs/cli/system.md +89 -0
- package/docs/cli/tasks.md +111 -0
- package/docs/cli/tui.md +89 -0
- package/docs/cli/uninstall.md +44 -0
- package/docs/cli/update.md +242 -0
- package/docs/cli/voicecall.md +204 -0
- package/docs/cli/webhooks.md +117 -0
- package/docs/cli/wiki.md +256 -0
- package/docs/concepts/active-memory.md +856 -0
- package/docs/concepts/agent-loop.md +185 -0
- package/docs/concepts/agent-runtimes.md +243 -0
- package/docs/concepts/agent-workspace.md +230 -0
- package/docs/concepts/agent.md +136 -0
- package/docs/concepts/architecture.md +154 -0
- package/docs/concepts/channel-docking.md +145 -0
- package/docs/concepts/commitments.md +150 -0
- package/docs/concepts/compaction.md +203 -0
- package/docs/concepts/context-engine.md +306 -0
- package/docs/concepts/context.md +199 -0
- package/docs/concepts/delegate-architecture.md +319 -0
- package/docs/concepts/dreaming.md +261 -0
- package/docs/concepts/experimental-features.md +108 -0
- package/docs/concepts/features.md +91 -0
- package/docs/concepts/mantis-slack-desktop-runbook.md +202 -0
- package/docs/concepts/mantis.md +740 -0
- package/docs/concepts/markdown-formatting.md +139 -0
- package/docs/concepts/memory-builtin.md +146 -0
- package/docs/concepts/memory-honcho.md +144 -0
- package/docs/concepts/memory-qmd.md +271 -0
- package/docs/concepts/memory-search.md +166 -0
- package/docs/concepts/memory.md +258 -0
- package/docs/concepts/message-lifecycle-refactor.md +1128 -0
- package/docs/concepts/messages.md +214 -0
- package/docs/concepts/model-failover.md +385 -0
- package/docs/concepts/model-providers.md +715 -0
- package/docs/concepts/models.md +370 -0
- package/docs/concepts/multi-agent.md +619 -0
- package/docs/concepts/oauth.md +198 -0
- package/docs/concepts/openclaw-sdk.md +323 -0
- package/docs/concepts/parallel-specialist-lanes.md +127 -0
- package/docs/concepts/personal-agent-benchmark-pack.md +74 -0
- package/docs/concepts/presence.md +117 -0
- package/docs/concepts/progress-drafts.md +362 -0
- package/docs/concepts/qa-e2e-automation.md +820 -0
- package/docs/concepts/qa-matrix.md +139 -0
- package/docs/concepts/queue-steering.md +90 -0
- package/docs/concepts/queue.md +122 -0
- package/docs/concepts/retry.md +86 -0
- package/docs/concepts/session-pruning.md +104 -0
- package/docs/concepts/session-tool.md +190 -0
- package/docs/concepts/session.md +164 -0
- package/docs/concepts/soul.md +116 -0
- package/docs/concepts/streaming.md +251 -0
- package/docs/concepts/system-prompt.md +310 -0
- package/docs/concepts/timezone.md +47 -0
- package/docs/concepts/typebox.md +309 -0
- package/docs/concepts/typing-indicators.md +88 -0
- package/docs/concepts/usage-tracking.md +66 -0
- package/docs/date-time.md +126 -0
- package/docs/debug/node-issue.md +90 -0
- package/docs/diagnostics/flags.md +138 -0
- package/docs/docs.json +1832 -0
- package/docs/gateway/authentication.md +239 -0
- package/docs/gateway/background-process.md +147 -0
- package/docs/gateway/bonjour.md +303 -0
- package/docs/gateway/bridge-protocol.md +94 -0
- package/docs/gateway/cli-backends.md +420 -0
- package/docs/gateway/config-agents.md +1514 -0
- package/docs/gateway/config-channels.md +945 -0
- package/docs/gateway/config-tools.md +769 -0
- package/docs/gateway/configuration-examples.md +705 -0
- package/docs/gateway/configuration-reference.md +1393 -0
- package/docs/gateway/configuration.md +737 -0
- package/docs/gateway/diagnostics.md +213 -0
- package/docs/gateway/discovery.md +154 -0
- package/docs/gateway/doctor.md +574 -0
- package/docs/gateway/gateway-lock.md +37 -0
- package/docs/gateway/health.md +73 -0
- package/docs/gateway/heartbeat.md +493 -0
- package/docs/gateway/index.md +383 -0
- package/docs/gateway/local-model-services.md +205 -0
- package/docs/gateway/local-models.md +355 -0
- package/docs/gateway/logging.md +149 -0
- package/docs/gateway/multiple-gateways.md +178 -0
- package/docs/gateway/network-model.md +15 -0
- package/docs/gateway/openai-http-api.md +350 -0
- package/docs/gateway/openresponses-http-api.md +347 -0
- package/docs/gateway/openshell.md +316 -0
- package/docs/gateway/opentelemetry.md +404 -0
- package/docs/gateway/operator-scopes.md +111 -0
- package/docs/gateway/pairing.md +207 -0
- package/docs/gateway/prometheus.md +230 -0
- package/docs/gateway/protocol.md +803 -0
- package/docs/gateway/remote-gateway-readme.md +169 -0
- package/docs/gateway/remote.md +280 -0
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +146 -0
- package/docs/gateway/sandboxing.md +545 -0
- package/docs/gateway/secrets-plan-contract.md +114 -0
- package/docs/gateway/secrets.md +609 -0
- package/docs/gateway/security/audit-checks.md +127 -0
- package/docs/gateway/security/index.md +1326 -0
- package/docs/gateway/security/secure-file-operations.md +76 -0
- package/docs/gateway/tailscale.md +156 -0
- package/docs/gateway/tools-invoke-http-api.md +169 -0
- package/docs/gateway/troubleshooting.md +772 -0
- package/docs/gateway/trusted-proxy-auth.md +451 -0
- package/docs/help/debugging.md +344 -0
- package/docs/help/environment.md +214 -0
- package/docs/help/faq-first-run.md +867 -0
- package/docs/help/faq-models.md +553 -0
- package/docs/help/faq.md +1975 -0
- package/docs/help/gpt55-codex-agentic-parity-maintainers.md +196 -0
- package/docs/help/gpt55-codex-agentic-parity.md +230 -0
- package/docs/help/index.md +39 -0
- package/docs/help/scripts.md +56 -0
- package/docs/help/testing-live.md +580 -0
- package/docs/help/testing-updates-plugins.md +291 -0
- package/docs/help/testing.md +928 -0
- package/docs/help/troubleshooting.md +424 -0
- package/docs/images/configure-model-picker-unsearchable.png +0 -0
- package/docs/images/feishu-get-group-id.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 +233 -0
- package/docs/install/azure.md +315 -0
- package/docs/install/bun.md +59 -0
- package/docs/install/clawdock.md +112 -0
- package/docs/install/development-channels.md +135 -0
- package/docs/install/digitalocean.md +174 -0
- package/docs/install/docker-vm-runtime.md +154 -0
- package/docs/install/docker.md +562 -0
- package/docs/install/exe-dev.md +201 -0
- package/docs/install/fly.md +524 -0
- package/docs/install/gcp.md +418 -0
- package/docs/install/hetzner.md +285 -0
- package/docs/install/hostinger.md +98 -0
- package/docs/install/index.md +221 -0
- package/docs/install/installer.md +455 -0
- package/docs/install/kubernetes.md +196 -0
- package/docs/install/macos-vm.md +281 -0
- package/docs/install/migrating-claude.md +165 -0
- package/docs/install/migrating-hermes.md +177 -0
- package/docs/install/migrating.md +137 -0
- package/docs/install/nix.md +112 -0
- package/docs/install/node.md +142 -0
- package/docs/install/northflank.mdx +44 -0
- package/docs/install/oracle.md +218 -0
- package/docs/install/podman.md +210 -0
- package/docs/install/railway.mdx +92 -0
- package/docs/install/raspberry-pi.md +234 -0
- package/docs/install/render.mdx +167 -0
- package/docs/install/uninstall.md +131 -0
- package/docs/install/updating.md +280 -0
- package/docs/logging.md +318 -0
- package/docs/nav-tabs-underline.js +100 -0
- package/docs/network.md +72 -0
- package/docs/nodes/audio.md +215 -0
- package/docs/nodes/camera.md +166 -0
- package/docs/nodes/images.md +77 -0
- package/docs/nodes/index.md +439 -0
- package/docs/nodes/location-command.md +102 -0
- package/docs/nodes/media-understanding.md +469 -0
- package/docs/nodes/talk.md +154 -0
- package/docs/nodes/troubleshooting.md +123 -0
- package/docs/nodes/voicewake.md +93 -0
- package/docs/perplexity.md +11 -0
- package/docs/pi-dev.md +82 -0
- package/docs/pi.md +573 -0
- package/docs/plan/codex-context-engine-harness.md +624 -0
- package/docs/plan/ui-channels.md +284 -0
- package/docs/platforms/android.md +285 -0
- package/docs/platforms/digitalocean.md +12 -0
- package/docs/platforms/index.md +60 -0
- package/docs/platforms/ios.md +283 -0
- package/docs/platforms/linux.md +141 -0
- package/docs/platforms/mac/bundled-gateway.md +79 -0
- package/docs/platforms/mac/canvas.md +128 -0
- package/docs/platforms/mac/child-process.md +72 -0
- package/docs/platforms/mac/dev-setup.md +112 -0
- package/docs/platforms/mac/health.md +39 -0
- package/docs/platforms/mac/icon.md +36 -0
- package/docs/platforms/mac/logging.md +62 -0
- package/docs/platforms/mac/menu-bar.md +93 -0
- package/docs/platforms/mac/peekaboo.md +92 -0
- package/docs/platforms/mac/permissions.md +53 -0
- package/docs/platforms/mac/remote.md +123 -0
- package/docs/platforms/mac/signing.md +52 -0
- package/docs/platforms/mac/skills.md +43 -0
- package/docs/platforms/mac/voice-overlay.md +66 -0
- package/docs/platforms/mac/voicewake.md +73 -0
- package/docs/platforms/mac/webchat.md +54 -0
- package/docs/platforms/mac/xpc.md +66 -0
- package/docs/platforms/macos.md +226 -0
- package/docs/platforms/oracle.md +12 -0
- package/docs/platforms/raspberry-pi.md +13 -0
- package/docs/platforms/windows.md +286 -0
- package/docs/plugins/adding-capabilities.md +133 -0
- package/docs/plugins/admin-http-rpc.md +216 -0
- package/docs/plugins/agent-tools.md +13 -0
- package/docs/plugins/architecture-internals.md +1195 -0
- package/docs/plugins/architecture.md +481 -0
- package/docs/plugins/building-extensions.md +13 -0
- package/docs/plugins/building-plugins.md +330 -0
- package/docs/plugins/bundles.md +310 -0
- package/docs/plugins/cli-backend-plugins.md +310 -0
- package/docs/plugins/codex-computer-use.md +293 -0
- package/docs/plugins/codex-harness-reference.md +409 -0
- package/docs/plugins/codex-harness-runtime.md +247 -0
- package/docs/plugins/codex-harness.md +746 -0
- package/docs/plugins/codex-native-plugins.md +276 -0
- package/docs/plugins/community.md +77 -0
- package/docs/plugins/compatibility.md +164 -0
- package/docs/plugins/dependency-resolution.md +143 -0
- package/docs/plugins/google-meet.md +1737 -0
- package/docs/plugins/hooks.md +459 -0
- package/docs/plugins/install-overrides.md +80 -0
- package/docs/plugins/manage-plugins.md +210 -0
- package/docs/plugins/manifest.md +1359 -0
- package/docs/plugins/memory-lancedb.md +385 -0
- package/docs/plugins/memory-wiki.md +529 -0
- package/docs/plugins/message-presentation.md +473 -0
- package/docs/plugins/oc-path.md +166 -0
- package/docs/plugins/plugin-inventory.md +182 -0
- package/docs/plugins/reference/acpx.md +23 -0
- package/docs/plugins/reference/admin-http-rpc.md +23 -0
- package/docs/plugins/reference/alibaba.md +23 -0
- package/docs/plugins/reference/amazon-bedrock-mantle.md +23 -0
- package/docs/plugins/reference/amazon-bedrock.md +23 -0
- package/docs/plugins/reference/anthropic-vertex.md +19 -0
- package/docs/plugins/reference/anthropic.md +23 -0
- package/docs/plugins/reference/arcee.md +23 -0
- package/docs/plugins/reference/azure-speech.md +23 -0
- package/docs/plugins/reference/bonjour.md +19 -0
- package/docs/plugins/reference/brave.md +23 -0
- package/docs/plugins/reference/browser.md +23 -0
- package/docs/plugins/reference/byteplus.md +19 -0
- package/docs/plugins/reference/canvas.md +19 -0
- package/docs/plugins/reference/cerebras.md +23 -0
- package/docs/plugins/reference/chutes.md +23 -0
- package/docs/plugins/reference/clickclack.md +23 -0
- package/docs/plugins/reference/cloudflare-ai-gateway.md +23 -0
- package/docs/plugins/reference/codex.md +23 -0
- package/docs/plugins/reference/comfy.md +23 -0
- package/docs/plugins/reference/copilot-proxy.md +19 -0
- package/docs/plugins/reference/deepgram.md +23 -0
- package/docs/plugins/reference/deepinfra.md +23 -0
- package/docs/plugins/reference/deepseek.md +23 -0
- package/docs/plugins/reference/diagnostics-otel.md +19 -0
- package/docs/plugins/reference/diagnostics-prometheus.md +19 -0
- package/docs/plugins/reference/diffs.md +19 -0
- package/docs/plugins/reference/discord.md +23 -0
- package/docs/plugins/reference/document-extract.md +23 -0
- package/docs/plugins/reference/duckduckgo.md +23 -0
- package/docs/plugins/reference/elevenlabs.md +23 -0
- package/docs/plugins/reference/exa.md +23 -0
- package/docs/plugins/reference/fal.md +23 -0
- package/docs/plugins/reference/feishu.md +23 -0
- package/docs/plugins/reference/file-transfer.md +19 -0
- package/docs/plugins/reference/firecrawl.md +23 -0
- package/docs/plugins/reference/fireworks.md +23 -0
- package/docs/plugins/reference/github-copilot.md +23 -0
- package/docs/plugins/reference/google-meet.md +23 -0
- package/docs/plugins/reference/google.md +23 -0
- package/docs/plugins/reference/googlechat.md +23 -0
- package/docs/plugins/reference/gradium.md +23 -0
- package/docs/plugins/reference/groq.md +23 -0
- package/docs/plugins/reference/huggingface.md +23 -0
- package/docs/plugins/reference/imessage.md +23 -0
- package/docs/plugins/reference/inworld.md +23 -0
- package/docs/plugins/reference/irc.md +23 -0
- package/docs/plugins/reference/kilocode.md +23 -0
- package/docs/plugins/reference/kimi.md +23 -0
- package/docs/plugins/reference/line.md +23 -0
- package/docs/plugins/reference/litellm.md +23 -0
- package/docs/plugins/reference/llm-task.md +19 -0
- package/docs/plugins/reference/lmstudio.md +23 -0
- package/docs/plugins/reference/lobster.md +19 -0
- package/docs/plugins/reference/matrix.md +23 -0
- package/docs/plugins/reference/mattermost.md +23 -0
- package/docs/plugins/reference/memory-core.md +19 -0
- package/docs/plugins/reference/memory-lancedb.md +23 -0
- package/docs/plugins/reference/memory-wiki.md +23 -0
- package/docs/plugins/reference/microsoft-foundry.md +19 -0
- package/docs/plugins/reference/microsoft.md +19 -0
- package/docs/plugins/reference/migrate-claude.md +19 -0
- package/docs/plugins/reference/migrate-hermes.md +19 -0
- package/docs/plugins/reference/minimax.md +23 -0
- package/docs/plugins/reference/mistral.md +23 -0
- package/docs/plugins/reference/moonshot.md +23 -0
- package/docs/plugins/reference/msteams.md +23 -0
- package/docs/plugins/reference/nextcloud-talk.md +23 -0
- package/docs/plugins/reference/nostr.md +23 -0
- package/docs/plugins/reference/nvidia.md +23 -0
- package/docs/plugins/reference/oc-path.md +23 -0
- package/docs/plugins/reference/ollama.md +23 -0
- package/docs/plugins/reference/open-prose.md +19 -0
- package/docs/plugins/reference/openai.md +23 -0
- package/docs/plugins/reference/opencode-go.md +23 -0
- package/docs/plugins/reference/opencode.md +23 -0
- package/docs/plugins/reference/openrouter.md +23 -0
- package/docs/plugins/reference/openshell.md +19 -0
- package/docs/plugins/reference/perplexity.md +23 -0
- package/docs/plugins/reference/policy.md +23 -0
- package/docs/plugins/reference/qa-channel.md +23 -0
- package/docs/plugins/reference/qa-lab.md +19 -0
- package/docs/plugins/reference/qa-matrix.md +19 -0
- package/docs/plugins/reference/qianfan.md +23 -0
- package/docs/plugins/reference/qqbot.md +23 -0
- package/docs/plugins/reference/qwen.md +23 -0
- package/docs/plugins/reference/runway.md +23 -0
- package/docs/plugins/reference/searxng.md +19 -0
- package/docs/plugins/reference/senseaudio.md +23 -0
- package/docs/plugins/reference/sglang.md +23 -0
- package/docs/plugins/reference/signal.md +23 -0
- package/docs/plugins/reference/skill-workshop.md +23 -0
- package/docs/plugins/reference/slack.md +23 -0
- package/docs/plugins/reference/stepfun.md +23 -0
- package/docs/plugins/reference/synology-chat.md +23 -0
- package/docs/plugins/reference/synthetic.md +23 -0
- package/docs/plugins/reference/tavily.md +23 -0
- package/docs/plugins/reference/telegram.md +23 -0
- package/docs/plugins/reference/tencent.md +23 -0
- package/docs/plugins/reference/tlon.md +23 -0
- package/docs/plugins/reference/together.md +23 -0
- package/docs/plugins/reference/tokenjuice.md +23 -0
- package/docs/plugins/reference/tts-local-cli.md +19 -0
- package/docs/plugins/reference/twitch.md +23 -0
- package/docs/plugins/reference/venice.md +23 -0
- package/docs/plugins/reference/vercel-ai-gateway.md +23 -0
- package/docs/plugins/reference/vllm.md +23 -0
- package/docs/plugins/reference/voice-call.md +23 -0
- package/docs/plugins/reference/volcengine.md +23 -0
- package/docs/plugins/reference/voyage.md +19 -0
- package/docs/plugins/reference/vydra.md +23 -0
- package/docs/plugins/reference/web-readability.md +19 -0
- package/docs/plugins/reference/webhooks.md +23 -0
- package/docs/plugins/reference/whatsapp.md +23 -0
- package/docs/plugins/reference/xai.md +23 -0
- package/docs/plugins/reference/xiaomi.md +23 -0
- package/docs/plugins/reference/zai.md +23 -0
- package/docs/plugins/reference/zalo.md +23 -0
- package/docs/plugins/reference/zalouser.md +24 -0
- package/docs/plugins/reference.md +138 -0
- package/docs/plugins/sdk-agent-harness.md +339 -0
- package/docs/plugins/sdk-channel-ingress.md +137 -0
- package/docs/plugins/sdk-channel-message.md +458 -0
- package/docs/plugins/sdk-channel-plugins.md +762 -0
- package/docs/plugins/sdk-channel-turn.md +580 -0
- package/docs/plugins/sdk-entrypoints.md +333 -0
- package/docs/plugins/sdk-migration.md +949 -0
- package/docs/plugins/sdk-overview.md +501 -0
- package/docs/plugins/sdk-provider-plugins.md +807 -0
- package/docs/plugins/sdk-runtime.md +676 -0
- package/docs/plugins/sdk-setup.md +550 -0
- package/docs/plugins/sdk-subpaths.md +396 -0
- package/docs/plugins/sdk-testing.md +401 -0
- package/docs/plugins/skill-workshop.md +713 -0
- package/docs/plugins/tool-plugins.md +411 -0
- package/docs/plugins/voice-call.md +943 -0
- package/docs/plugins/webhooks.md +192 -0
- package/docs/plugins/zalouser.md +86 -0
- package/docs/prose.md +137 -0
- package/docs/providers/alibaba.md +158 -0
- package/docs/providers/anthropic.md +344 -0
- package/docs/providers/arcee.md +144 -0
- package/docs/providers/azure-speech.md +119 -0
- package/docs/providers/bedrock-mantle.md +211 -0
- package/docs/providers/bedrock.md +414 -0
- package/docs/providers/cerebras.md +130 -0
- package/docs/providers/chutes.md +153 -0
- package/docs/providers/claude-max-api-proxy.md +188 -0
- package/docs/providers/cloudflare-ai-gateway.md +119 -0
- package/docs/providers/comfy.md +362 -0
- package/docs/providers/deepgram.md +184 -0
- package/docs/providers/deepinfra.md +87 -0
- package/docs/providers/deepseek.md +146 -0
- package/docs/providers/ds4.md +309 -0
- package/docs/providers/elevenlabs.md +130 -0
- package/docs/providers/fal.md +204 -0
- package/docs/providers/fireworks.md +144 -0
- package/docs/providers/github-copilot.md +225 -0
- package/docs/providers/glm.md +137 -0
- package/docs/providers/google.md +472 -0
- package/docs/providers/gradium.md +123 -0
- package/docs/providers/groq.md +180 -0
- package/docs/providers/huggingface.md +235 -0
- package/docs/providers/index.md +102 -0
- package/docs/providers/inferrs.md +272 -0
- package/docs/providers/inworld.md +120 -0
- package/docs/providers/kilocode.md +135 -0
- package/docs/providers/litellm.md +234 -0
- package/docs/providers/lmstudio.md +224 -0
- package/docs/providers/minimax.md +505 -0
- package/docs/providers/mistral.md +235 -0
- package/docs/providers/models.md +65 -0
- package/docs/providers/moonshot.md +413 -0
- package/docs/providers/nvidia.md +140 -0
- package/docs/providers/ollama.md +1180 -0
- package/docs/providers/openai.md +1057 -0
- package/docs/providers/opencode-go.md +123 -0
- package/docs/providers/opencode.md +149 -0
- package/docs/providers/openrouter.md +349 -0
- package/docs/providers/perplexity-provider.md +123 -0
- package/docs/providers/qianfan.md +132 -0
- package/docs/providers/qwen.md +332 -0
- package/docs/providers/runway.md +103 -0
- package/docs/providers/senseaudio.md +68 -0
- package/docs/providers/sglang.md +161 -0
- package/docs/providers/stepfun.md +229 -0
- package/docs/providers/synthetic.md +154 -0
- package/docs/providers/tencent.md +130 -0
- package/docs/providers/together.md +141 -0
- package/docs/providers/venice.md +315 -0
- package/docs/providers/vercel-ai-gateway.md +128 -0
- package/docs/providers/vllm.md +383 -0
- package/docs/providers/volcengine.md +199 -0
- package/docs/providers/vydra.md +180 -0
- package/docs/providers/xai.md +560 -0
- package/docs/providers/xiaomi.md +188 -0
- package/docs/providers/zai.md +203 -0
- package/docs/refactor/access.md +9 -0
- package/docs/refactor/acp.md +298 -0
- package/docs/refactor/canvas.md +131 -0
- package/docs/refactor/ingress-core.md +341 -0
- package/docs/reference/AGENTS.default.md +129 -0
- package/docs/reference/RELEASING.md +767 -0
- package/docs/reference/api-usage-costs.md +202 -0
- package/docs/reference/application-modernization-plan.md +208 -0
- package/docs/reference/code-mode.md +757 -0
- package/docs/reference/credits.md +33 -0
- package/docs/reference/device-models.md +50 -0
- package/docs/reference/full-release-validation.md +202 -0
- package/docs/reference/memory-config.md +630 -0
- package/docs/reference/openclaw-sdk-api-design.md +390 -0
- package/docs/reference/prompt-caching.md +358 -0
- package/docs/reference/rich-output-protocol.md +79 -0
- package/docs/reference/rpc.md +43 -0
- package/docs/reference/secretref-credential-surface.md +159 -0
- package/docs/reference/secretref-user-supplied-credentials-matrix.json +663 -0
- package/docs/reference/session-management-compaction.md +461 -0
- package/docs/reference/templates/AGENTS.dev.md +89 -0
- package/docs/reference/templates/AGENTS.md +225 -0
- package/docs/reference/templates/BOOT.md +16 -0
- package/docs/reference/templates/BOOTSTRAP.md +66 -0
- package/docs/reference/templates/HEARTBEAT.md +16 -0
- package/docs/reference/templates/IDENTITY.dev.md +52 -0
- package/docs/reference/templates/IDENTITY.md +34 -0
- package/docs/reference/templates/SOUL.dev.md +82 -0
- package/docs/reference/templates/SOUL.md +49 -0
- package/docs/reference/templates/TOOLS.dev.md +29 -0
- package/docs/reference/templates/TOOLS.md +51 -0
- package/docs/reference/templates/USER.dev.md +23 -0
- package/docs/reference/templates/USER.md +28 -0
- package/docs/reference/test.md +239 -0
- package/docs/reference/token-use.md +233 -0
- package/docs/reference/transcript-hygiene.md +214 -0
- package/docs/reference/wizard.md +252 -0
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +101 -0
- package/docs/security/THREAT-MODEL-ATLAS.md +611 -0
- package/docs/security/formal-verification.md +170 -0
- package/docs/security/incident-response.md +59 -0
- package/docs/security/network-proxy.md +268 -0
- package/docs/snippets/plugin-publish/minimal-openclaw.plugin.json +12 -0
- package/docs/snippets/plugin-publish/minimal-package.json +16 -0
- package/docs/start/bootstrapping.md +49 -0
- package/docs/start/docs-directory.md +69 -0
- package/docs/start/getting-started.md +152 -0
- package/docs/start/hubs.md +201 -0
- package/docs/start/lore.md +223 -0
- package/docs/start/onboarding-overview.md +72 -0
- package/docs/start/onboarding.md +95 -0
- package/docs/start/openclaw.md +244 -0
- package/docs/start/quickstart.md +25 -0
- package/docs/start/setup.md +178 -0
- package/docs/start/showcase.md +383 -0
- package/docs/start/wizard-cli-automation.md +232 -0
- package/docs/start/wizard-cli-reference.md +331 -0
- package/docs/start/wizard.md +141 -0
- package/docs/style.css +184 -0
- package/docs/superpowers/specs/2026-04-22-tweakcn-custom-theme-import-design.md +316 -0
- package/docs/tools/acp-agents-setup.md +352 -0
- package/docs/tools/acp-agents.md +847 -0
- package/docs/tools/agent-send.md +112 -0
- package/docs/tools/apply-patch.md +64 -0
- package/docs/tools/brave-search.md +139 -0
- package/docs/tools/browser-control.md +391 -0
- package/docs/tools/browser-linux-troubleshooting.md +173 -0
- package/docs/tools/browser-login.md +77 -0
- package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +219 -0
- package/docs/tools/browser.md +769 -0
- package/docs/tools/btw.md +159 -0
- package/docs/tools/capability-cookbook.md +12 -0
- package/docs/tools/clawhub.md +5 -0
- package/docs/tools/code-execution.md +173 -0
- package/docs/tools/creating-skills.md +120 -0
- package/docs/tools/diffs.md +506 -0
- package/docs/tools/duckduckgo-search.md +109 -0
- package/docs/tools/elevated.md +128 -0
- package/docs/tools/exa-search.md +152 -0
- package/docs/tools/exec-approvals-advanced.md +360 -0
- package/docs/tools/exec-approvals.md +474 -0
- package/docs/tools/exec.md +282 -0
- package/docs/tools/firecrawl.md +155 -0
- package/docs/tools/gemini-search.md +114 -0
- package/docs/tools/grok-search.md +113 -0
- package/docs/tools/image-generation.md +433 -0
- package/docs/tools/index.md +178 -0
- package/docs/tools/kimi-search.md +105 -0
- package/docs/tools/llm-task.md +137 -0
- package/docs/tools/lobster.md +365 -0
- package/docs/tools/loop-detection.md +154 -0
- package/docs/tools/media-overview.md +157 -0
- package/docs/tools/minimax-search.md +102 -0
- package/docs/tools/multi-agent-sandbox-tools.md +409 -0
- package/docs/tools/music-generation.md +371 -0
- package/docs/tools/ollama-search.md +153 -0
- package/docs/tools/pdf.md +195 -0
- package/docs/tools/perplexity-search.md +220 -0
- package/docs/tools/plugin.md +327 -0
- package/docs/tools/reactions.md +100 -0
- package/docs/tools/searxng-search.md +141 -0
- package/docs/tools/skills-config.md +195 -0
- package/docs/tools/skills.md +535 -0
- package/docs/tools/slash-commands.md +488 -0
- package/docs/tools/steer.md +84 -0
- package/docs/tools/subagents.md +650 -0
- package/docs/tools/tavily.md +162 -0
- package/docs/tools/thinking.md +140 -0
- package/docs/tools/tokenjuice.md +81 -0
- package/docs/tools/tool-search.md +269 -0
- package/docs/tools/trajectory.md +229 -0
- package/docs/tools/tts.md +1004 -0
- package/docs/tools/video-generation.md +552 -0
- package/docs/tools/web-fetch.md +195 -0
- package/docs/tools/web.md +459 -0
- package/docs/tts.md +11 -0
- package/docs/vps.md +139 -0
- package/docs/web/control-ui.md +503 -0
- package/docs/web/dashboard.md +107 -0
- package/docs/web/index.md +133 -0
- package/docs/web/tui.md +246 -0
- package/docs/web/webchat.md +99 -0
- package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
- package/docs/whatsapp-openclaw.jpg +0 -0
- package/nodmix.mjs +487 -0
- package/package.json +1852 -0
- package/patches/.gitkeep +0 -0
- package/patches/@agentclientprotocol__claude-agent-acp@0.36.1.patch +41 -0
- package/pnpm-workspace.yaml +63 -0
- package/scripts/crabbox-wrapper.mjs +353 -0
- package/scripts/lib/official-external-channel-catalog.json +559 -0
- package/scripts/lib/official-external-plugin-catalog.json +192 -0
- package/scripts/lib/official-external-provider-catalog.json +117 -0
- package/scripts/lib/package-dist-imports.mjs +171 -0
- package/scripts/npm-runner.mjs +91 -0
- package/scripts/postinstall-bundled-plugins.mjs +978 -0
- package/scripts/preinstall-package-manager-warning.mjs +64 -0
- package/scripts/windows-cmd-helpers.mjs +20 -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/camsnap/SKILL.md +45 -0
- package/skills/canvas/SKILL.md +78 -0
- package/skills/clawhub/SKILL.md +77 -0
- package/skills/coding-agent/SKILL.md +149 -0
- package/skills/diagram-maker/SKILL.md +53 -0
- package/skills/diagram-maker/references/excalidraw-patterns.md +85 -0
- package/skills/diagram-maker/references/svg-template.md +112 -0
- package/skills/discord/SKILL.md +136 -0
- package/skills/eightctl/SKILL.md +50 -0
- package/skills/gemini/SKILL.md +47 -0
- package/skills/gh-issues/SKILL.md +213 -0
- package/skills/gifgrep/SKILL.md +85 -0
- package/skills/github/SKILL.md +84 -0
- package/skills/gog/SKILL.md +116 -0
- package/skills/goplaces/SKILL.md +52 -0
- package/skills/healthcheck/SKILL.md +105 -0
- package/skills/himalaya/SKILL.md +80 -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/meme-maker/SKILL.md +42 -0
- package/skills/meme-maker/references/templates.json +358 -0
- package/skills/meme-maker/scripts/meme.mjs +398 -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 +319 -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/node-inspect-debugger/SKILL.md +85 -0
- package/skills/notion/SKILL.md +150 -0
- package/skills/obsidian/SKILL.md +119 -0
- package/skills/openai-whisper/SKILL.md +38 -0
- package/skills/openai-whisper-api/SKILL.md +71 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +154 -0
- package/skills/openhue/SKILL.md +112 -0
- package/skills/oracle/SKILL.md +126 -0
- package/skills/ordercli/SKILL.md +78 -0
- package/skills/peekaboo/SKILL.md +190 -0
- package/skills/pyproject.toml +10 -0
- package/skills/python-debugpy/SKILL.md +73 -0
- package/skills/sag/SKILL.md +87 -0
- package/skills/session-logs/SKILL.md +151 -0
- package/skills/sherpa-onnx-tts/SKILL.md +109 -0
- package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
- package/skills/skill-creator/SKILL.md +78 -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 +169 -0
- package/skills/skill-creator/scripts/test_package_skill.py +161 -0
- package/skills/skill-creator/scripts/test_quick_validate.py +116 -0
- package/skills/slack/SKILL.md +78 -0
- package/skills/songsee/SKILL.md +49 -0
- package/skills/sonoscli/SKILL.md +65 -0
- package/skills/spike/SKILL.md +51 -0
- package/skills/spotify-player/SKILL.md +64 -0
- package/skills/summarize/SKILL.md +87 -0
- package/skills/taskflow/SKILL.md +149 -0
- package/skills/taskflow/examples/inbox-triage.lobster +33 -0
- package/skills/taskflow/examples/pr-intake.lobster +32 -0
- package/skills/taskflow-inbox-triage/SKILL.md +119 -0
- package/skills/things-mac/SKILL.md +86 -0
- package/skills/tmux/SKILL.md +91 -0
- package/skills/tmux/scripts/find-sessions.sh +112 -0
- package/skills/tmux/scripts/wait-for-text.sh +83 -0
- package/skills/trello/SKILL.md +108 -0
- package/skills/video-frames/SKILL.md +46 -0
- package/skills/video-frames/scripts/frame.sh +81 -0
- package/skills/voice-call/SKILL.md +45 -0
- package/skills/wacli/SKILL.md +72 -0
- package/skills/weather/SKILL.md +64 -0
- package/skills/xurl/SKILL.md +120 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Local qa-channel scenarios for privacy-preserving personal assistant workflow checks."
|
|
3
|
+
read_when:
|
|
4
|
+
- Running local personal agent reliability checks
|
|
5
|
+
- Extending the repo-backed QA scenario catalog
|
|
6
|
+
- Verifying reminder, reply, memory, redaction, safe tool followthrough, task status, share-safe diagnostics, proof-backed completion claims, and failure recovery
|
|
7
|
+
title: "Personal agent benchmark pack"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
The Personal Agent Benchmark Pack is a small repo-backed QA scenario pack for
|
|
11
|
+
local personal assistant workflows. It is not a generic model benchmark and it
|
|
12
|
+
does not require a new runner. The pack reuses the private QA stack described in
|
|
13
|
+
[QA overview](/concepts/qa-e2e-automation), the synthetic
|
|
14
|
+
[QA channel](/channels/qa-channel), and the existing `qa/scenarios` markdown
|
|
15
|
+
catalog.
|
|
16
|
+
|
|
17
|
+
The first pack is intentionally narrow:
|
|
18
|
+
|
|
19
|
+
- fake personal reminders through local cron delivery
|
|
20
|
+
- fake DM and thread reply routing through `qa-channel`
|
|
21
|
+
- fake preference recall from the temporary QA workspace memory files
|
|
22
|
+
- fake secret no-echo checks
|
|
23
|
+
- safe read-backed tool followthrough after a short approval-style turn
|
|
24
|
+
- approval denial stop behavior for a sensitive local read request
|
|
25
|
+
- proof-backed task status reporting that keeps pending, blocked, and done separate
|
|
26
|
+
- share-safe diagnostics artifacts that keep useful status while omitting raw personal content
|
|
27
|
+
- proof-backed completion claims that avoid fake progress before local evidence exists
|
|
28
|
+
- failure recovery that reports partial status and keeps retry boundaries clear
|
|
29
|
+
|
|
30
|
+
## Scenarios
|
|
31
|
+
|
|
32
|
+
The machine-readable pack metadata lives in
|
|
33
|
+
`extensions/qa-lab/src/scenario-packs.ts`. Run the pack with
|
|
34
|
+
`--pack personal-agent`:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
NODMIX_ENABLE_PRIVATE_QA_CLI=1 pnpm nodmix qa suite \
|
|
38
|
+
--provider-mode mock-openai \
|
|
39
|
+
--pack personal-agent \
|
|
40
|
+
--concurrency 1
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
`--pack` is additive with repeated `--scenario` flags. Explicit scenarios run
|
|
44
|
+
first, then the pack scenarios run in `QA_PERSONAL_AGENT_SCENARIO_IDS` order with
|
|
45
|
+
duplicates removed.
|
|
46
|
+
|
|
47
|
+
The pack is designed for `qa-channel` with `mock-openai` or another local QA
|
|
48
|
+
provider lane. It should not be pointed at live chat services or real personal
|
|
49
|
+
accounts.
|
|
50
|
+
|
|
51
|
+
## Privacy Model
|
|
52
|
+
|
|
53
|
+
The scenarios use only fake users, fake preferences, fake secrets, and the
|
|
54
|
+
temporary QA gateway workspace created by the suite. They must not read or write
|
|
55
|
+
real Nodmix user memory, sessions, credentials, launch agents, global configs,
|
|
56
|
+
or live gateway state.
|
|
57
|
+
|
|
58
|
+
Artifacts stay under the existing QA suite artifact directory and should be
|
|
59
|
+
treated like test output. Redaction checks use fake markers so failures are safe
|
|
60
|
+
to inspect and file in issues.
|
|
61
|
+
|
|
62
|
+
## Extending The Pack
|
|
63
|
+
|
|
64
|
+
Add new cases under `qa/scenarios/personal/`, then add the scenario id to
|
|
65
|
+
`QA_PERSONAL_AGENT_SCENARIO_IDS`. Keep each case small, local, deterministic in
|
|
66
|
+
`mock-openai`, and focused on one personal assistant behavior.
|
|
67
|
+
|
|
68
|
+
Good follow-up candidates:
|
|
69
|
+
|
|
70
|
+
- redacted trajectory export checks
|
|
71
|
+
- local-only plugin workflow checks
|
|
72
|
+
|
|
73
|
+
Avoid adding a new runner, plugin, dependency, live transport, or model judge
|
|
74
|
+
until the scenario catalog has enough stable cases to justify that surface.
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "How Nodmix 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
|
+
Nodmix "presence" is a lightweight, best-effort view of:
|
|
11
|
+
|
|
12
|
+
- the **Gateway** itself, and
|
|
13
|
+
- **clients connected to the Gateway** (mac app, WebChat, CLI, etc.)
|
|
14
|
+
|
|
15
|
+
Presence is used primarily to render the macOS app's **Instances** tab and to
|
|
16
|
+
provide quick operator visibility.
|
|
17
|
+
|
|
18
|
+
## Presence fields (what shows up)
|
|
19
|
+
|
|
20
|
+
Presence entries are structured objects with fields like:
|
|
21
|
+
|
|
22
|
+
- `instanceId` (optional but strongly recommended): stable client identity (usually `connect.client.instanceId`)
|
|
23
|
+
- `host`: human-friendly host name
|
|
24
|
+
- `ip`: best-effort IP address
|
|
25
|
+
- `version`: client version string
|
|
26
|
+
- `deviceFamily` / `modelIdentifier`: hardware hints
|
|
27
|
+
- `mode`: `ui`, `webchat`, `cli`, `backend`, `probe`, `test`, `node`, ...
|
|
28
|
+
- `lastInputSeconds`: "seconds since last user input" (if known)
|
|
29
|
+
- `reason`: `self`, `connect`, `node-connected`, `periodic`, ...
|
|
30
|
+
- `ts`: last update timestamp (ms since epoch)
|
|
31
|
+
|
|
32
|
+
## Producers (where presence comes from)
|
|
33
|
+
|
|
34
|
+
Presence entries are produced by multiple sources and **merged**.
|
|
35
|
+
|
|
36
|
+
### 1) Gateway self entry
|
|
37
|
+
|
|
38
|
+
The Gateway always seeds a "self" entry at startup so UIs show the gateway host
|
|
39
|
+
even before any clients connect.
|
|
40
|
+
|
|
41
|
+
### 2) WebSocket connect
|
|
42
|
+
|
|
43
|
+
Every WS client begins with a `connect` request. On successful handshake the
|
|
44
|
+
Gateway upserts a presence entry for that connection.
|
|
45
|
+
|
|
46
|
+
#### Why one-off CLI commands do not show up
|
|
47
|
+
|
|
48
|
+
The CLI often connects for short, one-off commands. To avoid spamming the
|
|
49
|
+
Instances list, `client.mode === "cli"` is **not** turned into a presence entry.
|
|
50
|
+
|
|
51
|
+
### 3) `system-event` beacons
|
|
52
|
+
|
|
53
|
+
Clients can send richer periodic beacons via the `system-event` method. The mac
|
|
54
|
+
app uses this to report host name, IP, and `lastInputSeconds`.
|
|
55
|
+
|
|
56
|
+
### 4) Node connects (role: node)
|
|
57
|
+
|
|
58
|
+
When a node connects over the Gateway WebSocket with `role: node`, the Gateway
|
|
59
|
+
upserts a presence entry for that node (same flow as other WS clients).
|
|
60
|
+
|
|
61
|
+
## Merge + dedupe rules (why `instanceId` matters)
|
|
62
|
+
|
|
63
|
+
Presence entries are stored in a single in-memory map:
|
|
64
|
+
|
|
65
|
+
- Entries are keyed by a **presence key**.
|
|
66
|
+
- The best key is a stable `instanceId` (from `connect.client.instanceId`) that survives restarts.
|
|
67
|
+
- Keys are case-insensitive.
|
|
68
|
+
|
|
69
|
+
If a client reconnects without a stable `instanceId`, it may show up as a
|
|
70
|
+
**duplicate** row.
|
|
71
|
+
|
|
72
|
+
## TTL and bounded size
|
|
73
|
+
|
|
74
|
+
Presence is intentionally ephemeral:
|
|
75
|
+
|
|
76
|
+
- **TTL:** entries older than 5 minutes are pruned
|
|
77
|
+
- **Max entries:** 200 (oldest dropped first)
|
|
78
|
+
|
|
79
|
+
This keeps the list fresh and avoids unbounded memory growth.
|
|
80
|
+
|
|
81
|
+
## Remote/tunnel caveat (loopback IPs)
|
|
82
|
+
|
|
83
|
+
When a client connects over an SSH tunnel / local port forward, the Gateway may
|
|
84
|
+
see the remote address as `127.0.0.1`. To avoid overwriting a good client-reported
|
|
85
|
+
IP, loopback remote addresses are ignored.
|
|
86
|
+
|
|
87
|
+
## Consumers
|
|
88
|
+
|
|
89
|
+
### macOS Instances tab
|
|
90
|
+
|
|
91
|
+
The macOS app renders the output of `system-presence` and applies a small status
|
|
92
|
+
indicator (Active/Idle/Stale) based on the age of the last update.
|
|
93
|
+
|
|
94
|
+
## Debugging tips
|
|
95
|
+
|
|
96
|
+
- To see the raw list, call `system-presence` against the Gateway.
|
|
97
|
+
- If you see duplicates:
|
|
98
|
+
- confirm clients send a stable `client.instanceId` in the handshake
|
|
99
|
+
- confirm periodic beacons use the same `instanceId`
|
|
100
|
+
- check whether the connection-derived entry is missing `instanceId` (duplicates are expected)
|
|
101
|
+
|
|
102
|
+
## Related
|
|
103
|
+
|
|
104
|
+
<CardGroup cols={2}>
|
|
105
|
+
<Card title="Typing indicators" href="/concepts/typing-indicators" icon="ellipsis">
|
|
106
|
+
When typing indicators are sent and how to tune them.
|
|
107
|
+
</Card>
|
|
108
|
+
<Card title="Streaming and chunking" href="/concepts/streaming" icon="bars-staggered">
|
|
109
|
+
Outbound streaming, chunking, and per-channel formatting.
|
|
110
|
+
</Card>
|
|
111
|
+
<Card title="Gateway architecture" href="/concepts/architecture" icon="diagram-project">
|
|
112
|
+
Gateway components and the WebSocket protocol that drives presence updates.
|
|
113
|
+
</Card>
|
|
114
|
+
<Card title="Gateway protocol" href="/gateway/protocol" icon="plug">
|
|
115
|
+
The wire protocol for `connect`, `system-event`, and `system-presence`.
|
|
116
|
+
</Card>
|
|
117
|
+
</CardGroup>
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Progress drafts: one visible work-in-progress message that updates while an agent runs"
|
|
3
|
+
read_when:
|
|
4
|
+
- Configuring visible progress updates for long-running chat turns
|
|
5
|
+
- Choosing between partial, block, and progress streaming modes
|
|
6
|
+
- Explaining how Nodmix updates one channel message while work is in progress
|
|
7
|
+
- Troubleshooting progress drafts, standalone progress messages, or finalization fallback
|
|
8
|
+
title: "Progress drafts"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Progress drafts make long-running agent turns feel alive in chat without turning
|
|
12
|
+
the conversation into a stack of temporary status replies.
|
|
13
|
+
|
|
14
|
+
When progress drafts are enabled, Nodmix creates one visible work-in-progress
|
|
15
|
+
message only after the turn proves it is doing real work, updates it while the
|
|
16
|
+
agent reads, plans, calls tools, or waits for approval, and then turns that draft
|
|
17
|
+
into the final answer when the channel can do that safely.
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
Shelling...
|
|
21
|
+
📖 from docs/concepts/progress-drafts.md
|
|
22
|
+
🔎 Web Search: for "discord edit message"
|
|
23
|
+
🛠️ Bash: run tests
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Use progress drafts when you want one tidy status message during tool-heavy work
|
|
27
|
+
and the final answer when the turn is done.
|
|
28
|
+
|
|
29
|
+
## Quick start
|
|
30
|
+
|
|
31
|
+
Enable progress drafts per channel with `streaming.mode: "progress"`:
|
|
32
|
+
|
|
33
|
+
```json5
|
|
34
|
+
{
|
|
35
|
+
channels: {
|
|
36
|
+
discord: {
|
|
37
|
+
streaming: {
|
|
38
|
+
mode: "progress",
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
That is usually enough. Nodmix will pick an automatic one-word label, wait
|
|
46
|
+
until work lasts at least five seconds or emits a second work event, add compact
|
|
47
|
+
progress lines while useful work happens, and suppress duplicate standalone
|
|
48
|
+
progress chatter for that turn.
|
|
49
|
+
|
|
50
|
+
## What users see
|
|
51
|
+
|
|
52
|
+
A progress draft has two parts:
|
|
53
|
+
|
|
54
|
+
| Part | Purpose |
|
|
55
|
+
| -------------- | ------------------------------------------------------------------------------------- |
|
|
56
|
+
| Label | A short starter/status line such as `Working` or `Shelling`. |
|
|
57
|
+
| Progress lines | Compact run updates using the same tool icons and detail formatter as verbose output. |
|
|
58
|
+
|
|
59
|
+
The label appears after the agent starts meaningful work and either remains busy
|
|
60
|
+
for five seconds or emits a second work event. It is part of the rolling progress
|
|
61
|
+
line list, so the starter status scrolls away once enough concrete work appears.
|
|
62
|
+
Plain text-only replies do not show a progress draft. Progress lines are added
|
|
63
|
+
only when the agent emits useful work updates, for example `🛠️ Bash: run tests`,
|
|
64
|
+
`🔎 Web Search: for "discord edit message"`, or `✍️ Write: to /tmp/file`.
|
|
65
|
+
By default they use the same compact explain mode as `/verbose`; set
|
|
66
|
+
`agents.defaults.toolProgressDetail: "raw"` when debugging and you also want raw
|
|
67
|
+
commands/details appended.
|
|
68
|
+
The final answer replaces the draft when possible; otherwise
|
|
69
|
+
Nodmix sends the final answer normally and cleans up or stops updating the
|
|
70
|
+
draft according to the channel's transport.
|
|
71
|
+
|
|
72
|
+
## Choose a mode
|
|
73
|
+
|
|
74
|
+
`channels.<channel>.streaming.mode` controls the visible in-progress behavior:
|
|
75
|
+
|
|
76
|
+
| Mode | Best for | What appears in chat |
|
|
77
|
+
| ---------- | -------------------------------- | ------------------------------------------------- |
|
|
78
|
+
| `off` | Quiet channels | Only the final answer. |
|
|
79
|
+
| `partial` | Watching answer text appear | One draft edited with the latest answer text. |
|
|
80
|
+
| `block` | Larger answer-preview chunks | One preview updated or appended in bigger chunks. |
|
|
81
|
+
| `progress` | Tool-heavy or long-running turns | One status draft, then the final answer. |
|
|
82
|
+
|
|
83
|
+
Choose `progress` when users care more about "what is happening" than watching
|
|
84
|
+
the answer text stream token by token.
|
|
85
|
+
|
|
86
|
+
Choose `partial` when the answer itself is the progress signal.
|
|
87
|
+
|
|
88
|
+
Choose `block` when you want draft preview updates in larger text chunks. On
|
|
89
|
+
Discord and Telegram, `streaming.mode: "block"` is still preview streaming, not
|
|
90
|
+
normal block delivery. Use `streaming.block.enabled` or legacy
|
|
91
|
+
`blockStreaming` when you want normal block replies.
|
|
92
|
+
|
|
93
|
+
## Configure labels
|
|
94
|
+
|
|
95
|
+
Progress labels live under `channels.<channel>.streaming.progress`.
|
|
96
|
+
|
|
97
|
+
The default label is `auto`, which chooses from Nodmix's built-in
|
|
98
|
+
single-word label pool:
|
|
99
|
+
|
|
100
|
+
```text
|
|
101
|
+
Working
|
|
102
|
+
Shelling
|
|
103
|
+
Scuttling
|
|
104
|
+
Clawing
|
|
105
|
+
Pinching
|
|
106
|
+
Molting
|
|
107
|
+
Bubbling
|
|
108
|
+
Tiding
|
|
109
|
+
Reefing
|
|
110
|
+
Cracking
|
|
111
|
+
Sifting
|
|
112
|
+
Brining
|
|
113
|
+
Nautiling
|
|
114
|
+
Krilling
|
|
115
|
+
Barnacling
|
|
116
|
+
Lobstering
|
|
117
|
+
Tidepooling
|
|
118
|
+
Pearling
|
|
119
|
+
Snapping
|
|
120
|
+
Surfacing
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Use a fixed label:
|
|
124
|
+
|
|
125
|
+
```json5
|
|
126
|
+
{
|
|
127
|
+
channels: {
|
|
128
|
+
discord: {
|
|
129
|
+
streaming: {
|
|
130
|
+
mode: "progress",
|
|
131
|
+
progress: {
|
|
132
|
+
label: "Investigating",
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Use your own automatic label pool:
|
|
141
|
+
|
|
142
|
+
```json5
|
|
143
|
+
{
|
|
144
|
+
channels: {
|
|
145
|
+
discord: {
|
|
146
|
+
streaming: {
|
|
147
|
+
mode: "progress",
|
|
148
|
+
progress: {
|
|
149
|
+
label: "auto",
|
|
150
|
+
labels: ["Checking", "Reading", "Testing", "Finishing"],
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Hide the label and show only progress lines:
|
|
159
|
+
|
|
160
|
+
```json5
|
|
161
|
+
{
|
|
162
|
+
channels: {
|
|
163
|
+
discord: {
|
|
164
|
+
streaming: {
|
|
165
|
+
mode: "progress",
|
|
166
|
+
progress: {
|
|
167
|
+
label: false,
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Control progress lines
|
|
176
|
+
|
|
177
|
+
Progress lines are enabled by default in progress mode. They come from real run
|
|
178
|
+
events: tool starts, item updates, task plans, approvals, command output, patch
|
|
179
|
+
summaries, and similar agent activity.
|
|
180
|
+
|
|
181
|
+
Nodmix uses the same formatter for progress drafts and `/verbose`:
|
|
182
|
+
|
|
183
|
+
```json5
|
|
184
|
+
{
|
|
185
|
+
agents: {
|
|
186
|
+
defaults: {
|
|
187
|
+
toolProgressDetail: "explain", // explain | raw
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
`"explain"` is the default and keeps drafts stable with concise labels like
|
|
194
|
+
`🛠️ check JS syntax for /tmp/app.js`. `"raw"` appends the underlying
|
|
195
|
+
command/detail when available, which is useful while debugging but noisier in
|
|
196
|
+
chat.
|
|
197
|
+
|
|
198
|
+
For example, the same command appears differently depending on the detail mode:
|
|
199
|
+
|
|
200
|
+
| Mode | Progress line |
|
|
201
|
+
| --------- | -------------------------------------------------------------- |
|
|
202
|
+
| `explain` | `🛠️ check JS syntax for /tmp/app.js` |
|
|
203
|
+
| `raw` | `🛠️ check JS syntax for /tmp/app.js, node --check /tmp/app.js` |
|
|
204
|
+
|
|
205
|
+
Limit how many lines stay visible:
|
|
206
|
+
|
|
207
|
+
```json5
|
|
208
|
+
{
|
|
209
|
+
channels: {
|
|
210
|
+
discord: {
|
|
211
|
+
streaming: {
|
|
212
|
+
mode: "progress",
|
|
213
|
+
progress: {
|
|
214
|
+
maxLines: 4,
|
|
215
|
+
},
|
|
216
|
+
},
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
Progress lines are compacted automatically to reduce chat-bubble reflow while the draft is edited.
|
|
223
|
+
|
|
224
|
+
Nodmix truncates long progress lines by default so repeated draft edits do not
|
|
225
|
+
wrap differently on every update. The default per-line budget is 120 characters.
|
|
226
|
+
Prose cuts at a word boundary, while long details such as paths or raw commands
|
|
227
|
+
are shortened with a middle ellipsis so the suffix remains visible.
|
|
228
|
+
|
|
229
|
+
Tune the per-line budget:
|
|
230
|
+
|
|
231
|
+
```json5
|
|
232
|
+
{
|
|
233
|
+
channels: {
|
|
234
|
+
discord: {
|
|
235
|
+
streaming: {
|
|
236
|
+
mode: "progress",
|
|
237
|
+
progress: {
|
|
238
|
+
maxLineChars: 160,
|
|
239
|
+
},
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Slack can render progress lines as structured Block Kit fields instead of a
|
|
247
|
+
single text body:
|
|
248
|
+
|
|
249
|
+
```json5
|
|
250
|
+
{
|
|
251
|
+
channels: {
|
|
252
|
+
slack: {
|
|
253
|
+
streaming: {
|
|
254
|
+
mode: "progress",
|
|
255
|
+
progress: {
|
|
256
|
+
render: "rich",
|
|
257
|
+
},
|
|
258
|
+
},
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
}
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Rich rendering keeps the same plain-text fallback so channels and clients that
|
|
265
|
+
do not support the richer shape can still show the compact progress text.
|
|
266
|
+
|
|
267
|
+
Keep the single progress draft but hide tool and task lines:
|
|
268
|
+
|
|
269
|
+
```json5
|
|
270
|
+
{
|
|
271
|
+
channels: {
|
|
272
|
+
discord: {
|
|
273
|
+
streaming: {
|
|
274
|
+
mode: "progress",
|
|
275
|
+
progress: {
|
|
276
|
+
toolProgress: false,
|
|
277
|
+
},
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
},
|
|
281
|
+
}
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
With `toolProgress: false`, Nodmix still suppresses the older standalone
|
|
285
|
+
tool-progress messages for that turn. The channel stays visually quiet until the
|
|
286
|
+
final answer, except for the label if one is configured.
|
|
287
|
+
|
|
288
|
+
## Channel behavior
|
|
289
|
+
|
|
290
|
+
Each channel uses the cleanest transport it supports:
|
|
291
|
+
|
|
292
|
+
| Channel | Progress transport | Notes |
|
|
293
|
+
| --------------- | -------------------------------------- | --------------------------------------------------------------------- |
|
|
294
|
+
| Discord | Send one message, then edit it. | Final text edits in place when it fits one safe preview message. |
|
|
295
|
+
| Matrix | Send one event, then edit it. | Account-level streaming config controls account-level drafts. |
|
|
296
|
+
| Microsoft Teams | Native Teams stream in personal chats. | `streaming.mode: "block"` maps to Teams block delivery. |
|
|
297
|
+
| Slack | Native stream or editable draft post. | Thread availability affects whether native streaming can be used. |
|
|
298
|
+
| Telegram | Send one message, then edit it. | Older visible drafts may be replaced so final timestamps stay useful. |
|
|
299
|
+
| Mattermost | Editable draft post. | Tool activity is folded into the same draft-style post. |
|
|
300
|
+
|
|
301
|
+
Channels without safe edit support usually fall back to typing indicators or
|
|
302
|
+
final-only delivery.
|
|
303
|
+
|
|
304
|
+
## Finalization
|
|
305
|
+
|
|
306
|
+
When the final answer is ready, Nodmix tries to keep the chat clean:
|
|
307
|
+
|
|
308
|
+
- If the draft can safely become the final answer, Nodmix edits it in place.
|
|
309
|
+
- If the channel uses native progress streaming, Nodmix finalizes that stream
|
|
310
|
+
when the native transport accepts the final text.
|
|
311
|
+
- If the final answer has media, an approval prompt, an explicit reply target,
|
|
312
|
+
too many chunks, or a failed edit/send, Nodmix sends the final answer through
|
|
313
|
+
the normal channel delivery path.
|
|
314
|
+
|
|
315
|
+
The fallback path is intentional. It is better to send a fresh final answer than
|
|
316
|
+
to lose text, mis-thread a reply, or overwrite a draft with a payload the channel
|
|
317
|
+
cannot represent safely.
|
|
318
|
+
|
|
319
|
+
## Troubleshooting
|
|
320
|
+
|
|
321
|
+
**I only see the final answer.**
|
|
322
|
+
|
|
323
|
+
Check that `channels.<channel>.streaming.mode` is set to `progress` for the
|
|
324
|
+
account or channel that handled the message. Some group or quote-reply paths may
|
|
325
|
+
disable draft previews for a turn when the channel cannot safely edit the right
|
|
326
|
+
message.
|
|
327
|
+
|
|
328
|
+
**I see the label but no tool lines.**
|
|
329
|
+
|
|
330
|
+
Check `streaming.progress.toolProgress`. If it is `false`, Nodmix keeps the
|
|
331
|
+
single draft behavior but hides tool and task progress lines.
|
|
332
|
+
|
|
333
|
+
**I see a fresh final message instead of an edited draft.**
|
|
334
|
+
|
|
335
|
+
That is a safety fallback. It can happen for media replies, long answers,
|
|
336
|
+
explicit reply targets, old Telegram drafts, missing Slack thread targets,
|
|
337
|
+
deleted preview messages, or failed native stream finalization.
|
|
338
|
+
|
|
339
|
+
**I still see standalone progress messages.**
|
|
340
|
+
|
|
341
|
+
Progress mode suppresses default standalone tool-progress messages when a draft
|
|
342
|
+
is active. If standalone messages still appear, verify that the turn is actually
|
|
343
|
+
using progress mode and not `streaming.mode: "off"` or a channel path that
|
|
344
|
+
cannot create a draft for that message.
|
|
345
|
+
|
|
346
|
+
**Teams behaves differently from Discord or Telegram.**
|
|
347
|
+
|
|
348
|
+
Microsoft Teams uses a native stream in personal chats instead of the generic
|
|
349
|
+
send-and-edit preview transport. Teams also treats `streaming.mode: "block"` as
|
|
350
|
+
Teams block delivery because it does not have the same draft-preview block mode
|
|
351
|
+
used by Discord and Telegram.
|
|
352
|
+
|
|
353
|
+
## Related
|
|
354
|
+
|
|
355
|
+
- [Streaming and chunking](/concepts/streaming)
|
|
356
|
+
- [Messages](/concepts/messages)
|
|
357
|
+
- [Channel configuration](/gateway/config-channels)
|
|
358
|
+
- [Discord](/channels/discord)
|
|
359
|
+
- [Matrix](/channels/matrix)
|
|
360
|
+
- [Microsoft Teams](/channels/msteams)
|
|
361
|
+
- [Slack](/channels/slack)
|
|
362
|
+
- [Telegram](/channels/telegram)
|