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,251 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Streaming + chunking behavior (block replies, channel preview streaming, mode mapping)"
|
|
3
|
+
read_when:
|
|
4
|
+
- Explaining how streaming or chunking works on channels
|
|
5
|
+
- Changing block streaming or channel chunking behavior
|
|
6
|
+
- Debugging duplicate/early block replies or channel preview streaming
|
|
7
|
+
title: "Streaming and chunking"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Nodmix has two separate streaming layers:
|
|
11
|
+
|
|
12
|
+
- **Block streaming (channels):** emit completed **blocks** as the assistant writes. These are normal channel messages (not token deltas).
|
|
13
|
+
- **Preview streaming (Telegram/Discord/Slack):** update a temporary **preview message** while generating.
|
|
14
|
+
|
|
15
|
+
There is **no true token-delta streaming** to channel messages today. Preview streaming is message-based (send + edits/appends).
|
|
16
|
+
|
|
17
|
+
## Block streaming (channel messages)
|
|
18
|
+
|
|
19
|
+
Block streaming sends assistant output in coarse chunks as it becomes available.
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Model output
|
|
23
|
+
└─ text_delta/events
|
|
24
|
+
├─ (blockStreamingBreak=text_end)
|
|
25
|
+
│ └─ chunker emits blocks as buffer grows
|
|
26
|
+
└─ (blockStreamingBreak=message_end)
|
|
27
|
+
└─ chunker flushes at message_end
|
|
28
|
+
└─ channel send (block replies)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Legend:
|
|
32
|
+
|
|
33
|
+
- `text_delta/events`: model stream events (may be sparse for non-streaming models).
|
|
34
|
+
- `chunker`: `EmbeddedBlockChunker` applying min/max bounds + break preference.
|
|
35
|
+
- `channel send`: actual outbound messages (block replies).
|
|
36
|
+
|
|
37
|
+
**Controls:**
|
|
38
|
+
|
|
39
|
+
- `agents.defaults.blockStreamingDefault`: `"on"`/`"off"` (default off).
|
|
40
|
+
- Channel overrides: `*.blockStreaming` (and per-account variants) to force `"on"`/`"off"` per channel.
|
|
41
|
+
- `agents.defaults.blockStreamingBreak`: `"text_end"` or `"message_end"`.
|
|
42
|
+
- `agents.defaults.blockStreamingChunk`: `{ minChars, maxChars, breakPreference? }`.
|
|
43
|
+
- `agents.defaults.blockStreamingCoalesce`: `{ minChars?, maxChars?, idleMs? }` (merge streamed blocks before send).
|
|
44
|
+
- Channel hard cap: `*.textChunkLimit` (e.g., `channels.whatsapp.textChunkLimit`).
|
|
45
|
+
- Channel chunk mode: `*.chunkMode` (`length` default, `newline` splits on blank lines (paragraph boundaries) before length chunking).
|
|
46
|
+
- Discord soft cap: `channels.discord.maxLinesPerMessage` (default 17) splits tall replies to avoid UI clipping.
|
|
47
|
+
|
|
48
|
+
**Boundary semantics:**
|
|
49
|
+
|
|
50
|
+
- `text_end`: stream blocks as soon as chunker emits; flush on each `text_end`.
|
|
51
|
+
- `message_end`: wait until assistant message finishes, then flush buffered output.
|
|
52
|
+
|
|
53
|
+
`message_end` still uses the chunker if the buffered text exceeds `maxChars`, so it can emit multiple chunks at the end.
|
|
54
|
+
|
|
55
|
+
### Media delivery with block streaming
|
|
56
|
+
|
|
57
|
+
`MEDIA:` directives are normal delivery metadata. When block streaming sends a
|
|
58
|
+
media block early, Nodmix remembers that delivery for the turn. If the final
|
|
59
|
+
assistant payload repeats the same media URL, the final delivery strips the
|
|
60
|
+
duplicate media instead of sending the attachment again.
|
|
61
|
+
|
|
62
|
+
Exact duplicate final payloads are suppressed. If the final payload adds
|
|
63
|
+
distinct text around media that was already streamed, Nodmix still sends the
|
|
64
|
+
new text while keeping the media single-delivery. This prevents duplicate voice
|
|
65
|
+
notes or files on channels such as Telegram when an agent emits `MEDIA:` during
|
|
66
|
+
streaming and the provider also includes it in the completed reply.
|
|
67
|
+
|
|
68
|
+
## Chunking algorithm (low/high bounds)
|
|
69
|
+
|
|
70
|
+
Block chunking is implemented by `EmbeddedBlockChunker`:
|
|
71
|
+
|
|
72
|
+
- **Low bound:** don't emit until buffer >= `minChars` (unless forced).
|
|
73
|
+
- **High bound:** prefer splits before `maxChars`; if forced, split at `maxChars`.
|
|
74
|
+
- **Break preference:** `paragraph` → `newline` → `sentence` → `whitespace` → hard break.
|
|
75
|
+
- **Code fences:** never split inside fences; when forced at `maxChars`, close + reopen the fence to keep Markdown valid.
|
|
76
|
+
|
|
77
|
+
`maxChars` is clamped to the channel `textChunkLimit`, so you can't exceed per-channel caps.
|
|
78
|
+
|
|
79
|
+
## Coalescing (merge streamed blocks)
|
|
80
|
+
|
|
81
|
+
When block streaming is enabled, Nodmix can **merge consecutive block chunks**
|
|
82
|
+
before sending them out. This reduces "single-line spam" while still providing
|
|
83
|
+
progressive output.
|
|
84
|
+
|
|
85
|
+
- Coalescing waits for **idle gaps** (`idleMs`) before flushing.
|
|
86
|
+
- Buffers are capped by `maxChars` and will flush if they exceed it.
|
|
87
|
+
- `minChars` prevents tiny fragments from sending until enough text accumulates
|
|
88
|
+
(final flush always sends remaining text).
|
|
89
|
+
- Joiner is derived from `blockStreamingChunk.breakPreference`
|
|
90
|
+
(`paragraph` → `\n\n`, `newline` → `\n`, `sentence` → space).
|
|
91
|
+
- Channel overrides are available via `*.blockStreamingCoalesce` (including per-account configs).
|
|
92
|
+
- Default coalesce `minChars` is bumped to 1500 for Signal/Slack/Discord unless overridden.
|
|
93
|
+
|
|
94
|
+
## Human-like pacing between blocks
|
|
95
|
+
|
|
96
|
+
When block streaming is enabled, you can add a **randomized pause** between
|
|
97
|
+
block replies (after the first block). This makes multi-bubble responses feel
|
|
98
|
+
more natural.
|
|
99
|
+
|
|
100
|
+
- Config: `agents.defaults.humanDelay` (override per agent via `agents.list[].humanDelay`).
|
|
101
|
+
- Modes: `off` (default), `natural` (800-2500ms), `custom` (`minMs`/`maxMs`).
|
|
102
|
+
- Applies only to **block replies**, not final replies or tool summaries.
|
|
103
|
+
|
|
104
|
+
## "Stream chunks or everything"
|
|
105
|
+
|
|
106
|
+
This maps to:
|
|
107
|
+
|
|
108
|
+
- **Stream chunks:** `blockStreamingDefault: "on"` + `blockStreamingBreak: "text_end"` (emit as you go). Non-Telegram channels also need `*.blockStreaming: true`.
|
|
109
|
+
- **Stream everything at end:** `blockStreamingBreak: "message_end"` (flush once, possibly multiple chunks if very long).
|
|
110
|
+
- **No block streaming:** `blockStreamingDefault: "off"` (only final reply).
|
|
111
|
+
|
|
112
|
+
**Channel note:** Block streaming is **off unless**
|
|
113
|
+
`*.blockStreaming` is explicitly set to `true`. Channels can stream a live preview
|
|
114
|
+
(`channels.<channel>.streaming`) without block replies.
|
|
115
|
+
|
|
116
|
+
Config location reminder: the `blockStreaming*` defaults live under
|
|
117
|
+
`agents.defaults`, not the root config.
|
|
118
|
+
|
|
119
|
+
## Preview streaming modes
|
|
120
|
+
|
|
121
|
+
Canonical key: `channels.<channel>.streaming`
|
|
122
|
+
|
|
123
|
+
Modes:
|
|
124
|
+
|
|
125
|
+
- `off`: disable preview streaming.
|
|
126
|
+
- `partial`: single preview that is replaced with latest text.
|
|
127
|
+
- `block`: preview updates in chunked/appended steps.
|
|
128
|
+
- `progress`: progress/status preview during generation, final answer at completion.
|
|
129
|
+
|
|
130
|
+
`streaming.mode: "block"` is a preview-streaming mode for edit-capable channels
|
|
131
|
+
such as Discord and Telegram. It does not enable channel block delivery there.
|
|
132
|
+
Use `streaming.block.enabled` or the legacy `blockStreaming` channel key when
|
|
133
|
+
you want normal block replies. Microsoft Teams is the exception: it has no
|
|
134
|
+
draft-preview block transport, so `streaming.mode: "block"` maps to Teams block
|
|
135
|
+
delivery instead of native partial/progress streaming.
|
|
136
|
+
|
|
137
|
+
### Channel mapping
|
|
138
|
+
|
|
139
|
+
| Channel | `off` | `partial` | `block` | `progress` |
|
|
140
|
+
| ---------- | ----- | --------- | ------- | ----------------------- |
|
|
141
|
+
| Telegram | ✅ | ✅ | ✅ | editable progress draft |
|
|
142
|
+
| Discord | ✅ | ✅ | ✅ | editable progress draft |
|
|
143
|
+
| Slack | ✅ | ✅ | ✅ | ✅ |
|
|
144
|
+
| Mattermost | ✅ | ✅ | ✅ | ✅ |
|
|
145
|
+
| MS Teams | ✅ | ✅ | ✅ | native progress stream |
|
|
146
|
+
|
|
147
|
+
Slack-only:
|
|
148
|
+
|
|
149
|
+
- `channels.slack.streaming.nativeTransport` toggles Slack native streaming API calls when `channels.slack.streaming.mode="partial"` (default: `true`).
|
|
150
|
+
- Slack native streaming and Slack assistant thread status require a reply thread target. Top-level DMs do not show that thread-style preview, but they can still use Slack draft preview posts and edits.
|
|
151
|
+
|
|
152
|
+
Legacy key migration:
|
|
153
|
+
|
|
154
|
+
- Telegram: legacy `streamMode` and scalar/boolean `streaming` values are detected and migrated by doctor/config compatibility paths to `streaming.mode`.
|
|
155
|
+
- Discord: `streamMode` + boolean `streaming` remain runtime aliases for the `streaming` enum; run `nodmix doctor --fix` to rewrite persisted config.
|
|
156
|
+
- Slack: `streamMode` remains a runtime alias for `streaming.mode`; boolean `streaming` remains a runtime alias for `streaming.mode` plus `streaming.nativeTransport`; legacy `nativeStreaming` remains a runtime alias for `streaming.nativeTransport`. Run `nodmix doctor --fix` to rewrite persisted config.
|
|
157
|
+
|
|
158
|
+
### Runtime behavior
|
|
159
|
+
|
|
160
|
+
Telegram:
|
|
161
|
+
|
|
162
|
+
- Uses `sendMessage` + `editMessageText` preview updates across DMs and group/topics.
|
|
163
|
+
- Final text edits the active preview in place; long finals reuse that message for the first chunk and send only the remaining chunks.
|
|
164
|
+
- `progress` mode keeps tool progress in an editable status draft, clears that draft at completion, and sends the final answer through normal delivery.
|
|
165
|
+
- If the final edit fails before the completed text is confirmed, Nodmix uses normal final delivery and cleans up the stale preview.
|
|
166
|
+
- Preview streaming is skipped when Telegram block streaming is explicitly enabled (to avoid double-streaming).
|
|
167
|
+
- `/reasoning stream` can write reasoning to a transient preview that is deleted after final delivery.
|
|
168
|
+
|
|
169
|
+
Discord:
|
|
170
|
+
|
|
171
|
+
- Uses send + edit preview messages.
|
|
172
|
+
- `block` mode uses draft chunking (`draftChunk`).
|
|
173
|
+
- Preview streaming is skipped when Discord block streaming is explicitly enabled.
|
|
174
|
+
- Final media, error, and explicit-reply payloads cancel pending previews without flushing a new draft, then use normal delivery.
|
|
175
|
+
|
|
176
|
+
Slack:
|
|
177
|
+
|
|
178
|
+
- `partial` can use Slack native streaming (`chat.startStream`/`append`/`stop`) when available.
|
|
179
|
+
- `block` uses append-style draft previews.
|
|
180
|
+
- `progress` uses status preview text, then final answer.
|
|
181
|
+
- Top-level DMs without a reply thread use draft preview posts and edits instead of Slack native streaming.
|
|
182
|
+
- Native and draft preview streaming suppress block replies for that turn, so a Slack reply is streamed by one delivery path only.
|
|
183
|
+
- Final media/error payloads and progress finals do not create throwaway draft messages; only text/block finals that can edit the preview flush pending draft text.
|
|
184
|
+
|
|
185
|
+
Mattermost:
|
|
186
|
+
|
|
187
|
+
- Streams thinking, tool activity, and partial reply text into a single draft preview post that finalizes in place when the final answer is safe to send.
|
|
188
|
+
- Falls back to sending a fresh final post if the preview post was deleted or is otherwise unavailable at finalize time.
|
|
189
|
+
- Final media/error payloads cancel pending preview updates before normal delivery instead of flushing a temporary preview post.
|
|
190
|
+
|
|
191
|
+
Matrix:
|
|
192
|
+
|
|
193
|
+
- Draft previews finalize in place when the final text can reuse the preview event.
|
|
194
|
+
- Media-only, error, and reply-target-mismatch finals cancel pending preview updates before normal delivery; an already-visible stale preview is redacted.
|
|
195
|
+
|
|
196
|
+
### Tool-progress preview updates
|
|
197
|
+
|
|
198
|
+
Preview streaming can also include **tool-progress** updates - short status lines like "searching the web", "reading file", or "calling tool" - that appear in the same preview message while tools are running, ahead of the final reply. In Codex app-server mode, Codex preamble/commentary messages use this same preview path, so short "I am checking..." progress notes can stream into the editable draft without becoming part of the final answer. This keeps multi-step tool turns visually alive rather than silent between the first thinking preview and the final answer.
|
|
199
|
+
|
|
200
|
+
Supported surfaces:
|
|
201
|
+
|
|
202
|
+
- **Discord**, **Slack**, **Telegram**, and **Matrix** stream tool-progress and Codex preamble updates into the live preview edit by default when preview streaming is active. Microsoft Teams uses its native progress stream in personal chats.
|
|
203
|
+
- Telegram has shipped with tool-progress preview updates enabled since `v2026.4.22`; keeping them enabled preserves that released behavior.
|
|
204
|
+
- **Mattermost** already folds tool activity into its single draft preview post (see above).
|
|
205
|
+
- Tool-progress edits follow the active preview streaming mode; they are skipped when preview streaming is `off` or when block streaming has taken over the message. On Telegram, `streaming.mode: "off"` is final-only: generic progress chatter is also suppressed instead of being delivered as standalone status messages, while approval prompts, media payloads, and errors still route normally.
|
|
206
|
+
- To keep preview streaming but hide tool-progress lines, set `streaming.preview.toolProgress` to `false` for that channel. To keep tool-progress lines visible while hiding command/exec text, set `streaming.preview.commandText` to `"status"` or `streaming.progress.commandText` to `"status"`; the default is `"raw"` to preserve released behavior. This policy is shared by draft/progress channels that use Nodmix's compact progress renderer, including Discord, Matrix, Microsoft Teams, Mattermost, Slack draft previews, and Telegram. To disable preview edits entirely, set `streaming.mode` to `off`.
|
|
207
|
+
- Telegram selected quote replies are an exception: when `replyToMode` is not `"off"` and selected quote text is present, Nodmix skips the answer preview stream for that turn so tool-progress preview lines cannot render. Current-message replies without selected quote text still keep preview streaming. See [Telegram channel docs](/channels/telegram) for details.
|
|
208
|
+
|
|
209
|
+
Keep progress lines visible but hide raw command/exec text:
|
|
210
|
+
|
|
211
|
+
```json
|
|
212
|
+
{
|
|
213
|
+
"channels": {
|
|
214
|
+
"telegram": {
|
|
215
|
+
"streaming": {
|
|
216
|
+
"mode": "partial",
|
|
217
|
+
"preview": {
|
|
218
|
+
"toolProgress": true,
|
|
219
|
+
"commandText": "status"
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Use the same shape under another compact progress channel key, for example `channels.discord`, `channels.matrix`, `channels.msteams`, `channels.mattermost`, or Slack draft previews. For progress-draft mode, put the same policy under `streaming.progress`:
|
|
228
|
+
|
|
229
|
+
```json
|
|
230
|
+
{
|
|
231
|
+
"channels": {
|
|
232
|
+
"telegram": {
|
|
233
|
+
"streaming": {
|
|
234
|
+
"mode": "progress",
|
|
235
|
+
"progress": {
|
|
236
|
+
"toolProgress": true,
|
|
237
|
+
"commandText": "status"
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Related
|
|
246
|
+
|
|
247
|
+
- [Message lifecycle refactor](/concepts/message-lifecycle-refactor) - target shared preview, edit, stream, and finalization design
|
|
248
|
+
- [Progress drafts](/concepts/progress-drafts) - visible work-in-progress messages that update during long turns
|
|
249
|
+
- [Messages](/concepts/messages) - message lifecycle and delivery
|
|
250
|
+
- [Retry](/concepts/retry) - retry behavior on delivery failure
|
|
251
|
+
- [Channels](/channels) - per-channel streaming support
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "What the Nodmix system prompt contains and how it is assembled"
|
|
3
|
+
read_when:
|
|
4
|
+
- Editing system prompt text, tools list, or time/heartbeat sections
|
|
5
|
+
- Changing workspace bootstrap or skills injection behavior
|
|
6
|
+
title: "System prompt"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Nodmix builds a custom system prompt for every agent run. The prompt is **Nodmix-owned** and does not use the pi-coding-agent default prompt.
|
|
10
|
+
|
|
11
|
+
The prompt is assembled by Nodmix and injected into each agent run.
|
|
12
|
+
|
|
13
|
+
Prompt assembly has three layers:
|
|
14
|
+
|
|
15
|
+
- `buildAgentSystemPrompt` renders the prompt from explicit inputs. It should
|
|
16
|
+
stay a pure renderer and should not read global config directly.
|
|
17
|
+
- `resolveAgentSystemPromptConfig` resolves config-backed prompt knobs such as
|
|
18
|
+
owner display, TTS hints, model aliases, memory citation mode, and sub-agent
|
|
19
|
+
delegation mode for a specific agent.
|
|
20
|
+
- Runtime adapters (embedded, CLI, command/export previews, compaction) gather
|
|
21
|
+
live facts such as tools, sandbox state, channel capabilities, context files,
|
|
22
|
+
and provider prompt contributions, then call the configured prompt facade.
|
|
23
|
+
|
|
24
|
+
This keeps exported/debug prompt surfaces aligned with live runs without
|
|
25
|
+
turning every runtime-specific detail into one monolithic builder.
|
|
26
|
+
|
|
27
|
+
Provider plugins can contribute cache-aware prompt guidance without replacing
|
|
28
|
+
the full Nodmix-owned prompt. The provider runtime can:
|
|
29
|
+
|
|
30
|
+
- replace a small set of named core sections (`interaction_style`,
|
|
31
|
+
`tool_call_style`, `execution_bias`)
|
|
32
|
+
- inject a **stable prefix** above the prompt cache boundary
|
|
33
|
+
- inject a **dynamic suffix** below the prompt cache boundary
|
|
34
|
+
|
|
35
|
+
Use provider-owned contributions for model-family-specific tuning. Keep legacy
|
|
36
|
+
`before_prompt_build` prompt mutation for compatibility or truly global prompt
|
|
37
|
+
changes, not normal provider behavior.
|
|
38
|
+
|
|
39
|
+
The OpenAI GPT-5 family overlay keeps the core execution rule small and adds
|
|
40
|
+
model-specific guidance for persona latching, concise output, tool discipline,
|
|
41
|
+
parallel lookup, deliverable coverage, verification, missing context, and
|
|
42
|
+
terminal-tool hygiene.
|
|
43
|
+
|
|
44
|
+
## Structure
|
|
45
|
+
|
|
46
|
+
The prompt is intentionally compact and uses fixed sections:
|
|
47
|
+
|
|
48
|
+
- **Tooling**: structured-tool source-of-truth reminder plus runtime tool-use guidance.
|
|
49
|
+
- **Execution Bias**: compact follow-through guidance: act in-turn on
|
|
50
|
+
actionable requests, continue until done or blocked, recover from weak tool
|
|
51
|
+
results, check mutable state live, and verify before finalizing.
|
|
52
|
+
- **Safety**: short guardrail reminder to avoid power-seeking behavior or bypassing oversight.
|
|
53
|
+
- **Skills** (when available): tells the model how to load skill instructions on demand.
|
|
54
|
+
- **Nodmix Control**: tells the model to prefer the `gateway` tool for
|
|
55
|
+
config/restart work and to avoid inventing CLI commands.
|
|
56
|
+
- **Nodmix Self-Update**: how to inspect config safely with
|
|
57
|
+
`config.schema.lookup`, patch config with `config.patch`, replace the full
|
|
58
|
+
config with `config.apply`, and run `update.run` only on explicit user
|
|
59
|
+
request. The agent-facing `gateway` tool also refuses to rewrite
|
|
60
|
+
`tools.exec.ask` / `tools.exec.security`, including legacy `tools.bash.*`
|
|
61
|
+
aliases that normalize to those protected exec paths.
|
|
62
|
+
- **Workspace**: working directory (`agents.defaults.workspace`).
|
|
63
|
+
- **Documentation**: local path to Nodmix docs/source and when to read them.
|
|
64
|
+
- **Workspace Files (injected)**: indicates bootstrap files are included below.
|
|
65
|
+
- **Sandbox** (when enabled): indicates sandboxed runtime, sandbox paths, and whether elevated exec is available.
|
|
66
|
+
- **Current Date & Time**: time zone only (cache-stable; the live clock comes from `session_status`).
|
|
67
|
+
- **Assistant Output Directives**: compact attachment, voice-note, and reply tag syntax.
|
|
68
|
+
- **Heartbeats**: heartbeat prompt and ack behavior, when heartbeats are enabled for the default agent.
|
|
69
|
+
- **Runtime**: host, OS, node, model, repo root (when detected), thinking level (one line).
|
|
70
|
+
- **Reasoning**: current visibility level + /reasoning toggle hint.
|
|
71
|
+
|
|
72
|
+
Nodmix keeps large stable content, including **Project Context**, above the
|
|
73
|
+
internal prompt cache boundary. Volatile channel/session sections such as
|
|
74
|
+
Control UI embed guidance, **Messaging**, **Voice**, **Group Chat Context**,
|
|
75
|
+
**Reactions**, **Heartbeats**, and **Runtime** are appended below that boundary
|
|
76
|
+
so local backends with prefix caches can reuse the stable workspace prefix
|
|
77
|
+
across channel turns. Tool descriptions should likewise avoid embedding current
|
|
78
|
+
channel names when the accepted schema already carries that runtime detail.
|
|
79
|
+
|
|
80
|
+
The Tooling section also includes runtime guidance for long-running work:
|
|
81
|
+
|
|
82
|
+
- use cron for future follow-up (`check back later`, reminders, recurring work)
|
|
83
|
+
instead of `exec` sleep loops, `yieldMs` delay tricks, or repeated `process`
|
|
84
|
+
polling
|
|
85
|
+
- use `exec` / `process` only for commands that start now and continue running
|
|
86
|
+
in the background
|
|
87
|
+
- when automatic completion wake is enabled, start the command once and rely on
|
|
88
|
+
the push-based wake path when it emits output or fails
|
|
89
|
+
- use `process` for logs, status, input, or intervention when you need to
|
|
90
|
+
inspect a running command
|
|
91
|
+
- if the task is larger, prefer `sessions_spawn`; sub-agent completion is
|
|
92
|
+
push-based and auto-announces back to the requester
|
|
93
|
+
- do not poll `subagents list` / `sessions_list` in a loop just to wait for
|
|
94
|
+
completion
|
|
95
|
+
|
|
96
|
+
`agents.defaults.subagents.delegationMode` can strengthen this guidance. The
|
|
97
|
+
default `suggest` mode keeps the baseline nudge. `prefer` adds a dedicated
|
|
98
|
+
**Sub-Agent Delegation** section telling the main agent to act as a responsive
|
|
99
|
+
coordinator and push anything more involved than a direct reply through
|
|
100
|
+
`sessions_spawn`. This is prompt-only; tool policy still controls whether
|
|
101
|
+
`sessions_spawn` is available.
|
|
102
|
+
|
|
103
|
+
When the experimental `update_plan` tool is enabled, Tooling also tells the
|
|
104
|
+
model to use it only for non-trivial multi-step work, keep exactly one
|
|
105
|
+
`in_progress` step, and avoid repeating the whole plan after each update.
|
|
106
|
+
|
|
107
|
+
Safety guardrails in the system prompt are advisory. They guide model behavior but do not enforce policy. Use tool policy, exec approvals, sandboxing, and channel allowlists for hard enforcement; operators can disable these by design.
|
|
108
|
+
|
|
109
|
+
On channels with native approval cards/buttons, the runtime prompt now tells the
|
|
110
|
+
agent to rely on that native approval UI first. It should only include a manual
|
|
111
|
+
`/approve` command when the tool result says chat approvals are unavailable or
|
|
112
|
+
manual approval is the only path.
|
|
113
|
+
|
|
114
|
+
## Prompt modes
|
|
115
|
+
|
|
116
|
+
Nodmix can render smaller system prompts for sub-agents. The runtime sets a
|
|
117
|
+
`promptMode` for each run (not a user-facing config):
|
|
118
|
+
|
|
119
|
+
- `full` (default): includes all sections above.
|
|
120
|
+
- `minimal`: used for sub-agents; omits **Memory Recall**, **Nodmix
|
|
121
|
+
Self-Update**, **Model Aliases**, **User Identity**, **Assistant Output Directives**,
|
|
122
|
+
**Messaging**, **Silent Replies**, and **Heartbeats**. Tooling, **Safety**,
|
|
123
|
+
**Skills** when supplied, Workspace, Sandbox, Current Date & Time (when
|
|
124
|
+
known), Runtime, and injected context stay available.
|
|
125
|
+
- `none`: returns only the base identity line.
|
|
126
|
+
|
|
127
|
+
When `promptMode=minimal`, extra injected prompts are labeled **Subagent
|
|
128
|
+
Context** instead of **Group Chat Context**.
|
|
129
|
+
|
|
130
|
+
For channel auto-reply runs, Nodmix omits the generic **Silent Replies**
|
|
131
|
+
section when direct, group, or message-tool-only context owns the visible-reply
|
|
132
|
+
contract. Only old automatic group/channel mode should show `NO_REPLY`; direct
|
|
133
|
+
chats and message-tool-only replies do not receive silent-token guidance.
|
|
134
|
+
|
|
135
|
+
## Prompt snapshots
|
|
136
|
+
|
|
137
|
+
Nodmix keeps committed prompt snapshots for the Codex runtime happy path under
|
|
138
|
+
`test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/`. They render
|
|
139
|
+
selected app-server thread/turn params plus a reconstructed model-bound prompt
|
|
140
|
+
layer stack for Telegram direct, Discord group, and heartbeat turns. That stack
|
|
141
|
+
includes a pinned Codex `gpt-5.5` model prompt fixture generated from Codex's
|
|
142
|
+
model catalog/cache shape, the Codex happy-path permission developer text,
|
|
143
|
+
Nodmix developer instructions, turn-scoped collaboration-mode instructions
|
|
144
|
+
when Nodmix provides them, user turn input, and references to the dynamic tool
|
|
145
|
+
specs.
|
|
146
|
+
|
|
147
|
+
Refresh the pinned Codex model prompt fixture with
|
|
148
|
+
`pnpm prompt:snapshots:sync-codex-model`. By default, the script looks for
|
|
149
|
+
Codex's runtime cache at `$CODEX_HOME/models_cache.json`, then
|
|
150
|
+
`~/.codex/models_cache.json`, and only then falls back to the maintainer Codex
|
|
151
|
+
checkout convention at `~/code/codex/codex-rs/models-manager/models.json`. If
|
|
152
|
+
none of those sources exist, the command exits without changing the committed
|
|
153
|
+
fixture. Pass `--catalog <path>` to refresh from a specific `models_cache.json`
|
|
154
|
+
or `models.json` file.
|
|
155
|
+
|
|
156
|
+
These snapshots are still not a byte-for-byte raw OpenAI request capture. Codex
|
|
157
|
+
can add runtime-owned workspace context such as `AGENTS.md`, environment
|
|
158
|
+
context, memories, app/plugin instructions, and built-in Default
|
|
159
|
+
collaboration-mode instructions inside the Codex runtime after Nodmix sends
|
|
160
|
+
thread and turn params.
|
|
161
|
+
|
|
162
|
+
Regenerate them with `pnpm prompt:snapshots:gen` and verify drift with
|
|
163
|
+
`pnpm prompt:snapshots:check`. CI runs the drift check in the additional
|
|
164
|
+
boundary shard so prompt changes and snapshot updates stay attached to the same
|
|
165
|
+
PR.
|
|
166
|
+
|
|
167
|
+
## Workspace bootstrap injection
|
|
168
|
+
|
|
169
|
+
Bootstrap files are resolved from the active workspace, then routed to the
|
|
170
|
+
prompt surface that matches their lifetime:
|
|
171
|
+
|
|
172
|
+
- `AGENTS.md`
|
|
173
|
+
- `SOUL.md`
|
|
174
|
+
- `TOOLS.md`
|
|
175
|
+
- `IDENTITY.md`
|
|
176
|
+
- `USER.md`
|
|
177
|
+
- `HEARTBEAT.md`
|
|
178
|
+
- `BOOTSTRAP.md` (only on brand-new workspaces)
|
|
179
|
+
- `MEMORY.md` when present
|
|
180
|
+
|
|
181
|
+
On the native Codex harness, Nodmix avoids repeating stable workspace files
|
|
182
|
+
in every user turn. Codex loads `AGENTS.md` through its own project-doc
|
|
183
|
+
discovery. `SOUL.md`, `IDENTITY.md`, `TOOLS.md`, and `USER.md` are forwarded as
|
|
184
|
+
Codex developer instructions. `HEARTBEAT.md` content is not injected; heartbeat
|
|
185
|
+
turns get a collaboration-mode note pointing to the file when it exists and is
|
|
186
|
+
non-empty. `MEMORY.md` and active `BOOTSTRAP.md` content keep the normal
|
|
187
|
+
turn-context role for now.
|
|
188
|
+
|
|
189
|
+
On non-Codex harnesses, bootstrap files continue to be composed into the
|
|
190
|
+
Nodmix prompt according to their existing gates. `HEARTBEAT.md` is omitted on
|
|
191
|
+
normal runs when heartbeats are disabled for the default agent or
|
|
192
|
+
`agents.defaults.heartbeat.includeSystemPromptSection` is false. Keep injected
|
|
193
|
+
files concise, especially `MEMORY.md`. `MEMORY.md` is intended to stay a curated
|
|
194
|
+
long-term summary; detailed daily notes belong in `memory/*.md` where
|
|
195
|
+
`memory_search` and `memory_get` can retrieve them on demand. Oversized
|
|
196
|
+
`MEMORY.md` files increase prompt usage and can be partially injected because of
|
|
197
|
+
the bootstrap file limits below.
|
|
198
|
+
|
|
199
|
+
<Note>
|
|
200
|
+
`memory/*.md` daily files are **not** part of the normal bootstrap Project Context. On ordinary turns they are accessed on demand via the `memory_search` and `memory_get` tools, so they do not count against the context window unless the model explicitly reads them. Bare `/new` and `/reset` turns are the exception: the runtime can prepend recent daily memory as a one-shot startup-context block for that first turn.
|
|
201
|
+
</Note>
|
|
202
|
+
|
|
203
|
+
Large files are truncated with a marker. The max per-file size is controlled by
|
|
204
|
+
`agents.defaults.bootstrapMaxChars` (default: 12000). Total injected bootstrap
|
|
205
|
+
content across files is capped by `agents.defaults.bootstrapTotalMaxChars`
|
|
206
|
+
(default: 60000). Missing files inject a short missing-file marker. When truncation
|
|
207
|
+
occurs, Nodmix can inject a concise system-prompt warning notice; control this with
|
|
208
|
+
`agents.defaults.bootstrapPromptTruncationWarning` (`off`, `once`, `always`;
|
|
209
|
+
default: `always`). Detailed raw/injected counts stay in diagnostics such as
|
|
210
|
+
`/context`, `/status`, doctor, and logs.
|
|
211
|
+
|
|
212
|
+
For memory files, truncation is not data loss: the file remains intact on disk,
|
|
213
|
+
but the model only sees the shortened injected copy until it reads or searches
|
|
214
|
+
memory directly. If `MEMORY.md` is repeatedly truncated, distill it into a
|
|
215
|
+
shorter durable summary and move detailed history into `memory/*.md`, or
|
|
216
|
+
intentionally raise the bootstrap limits.
|
|
217
|
+
|
|
218
|
+
Sub-agent sessions only inject `AGENTS.md` and `TOOLS.md` (other bootstrap files
|
|
219
|
+
are filtered out to keep the sub-agent context small).
|
|
220
|
+
|
|
221
|
+
Internal hooks can intercept this step via `agent:bootstrap` to mutate or replace
|
|
222
|
+
the injected bootstrap files (for example swapping `SOUL.md` for an alternate persona).
|
|
223
|
+
|
|
224
|
+
If you want to make the agent sound less generic, start with
|
|
225
|
+
[SOUL.md Personality Guide](/concepts/soul).
|
|
226
|
+
|
|
227
|
+
To inspect how much each injected file contributes (raw vs injected, truncation, plus tool schema overhead), use `/context list` or `/context detail`. See [Context](/concepts/context).
|
|
228
|
+
|
|
229
|
+
## Time handling
|
|
230
|
+
|
|
231
|
+
The system prompt includes a dedicated **Current Date & Time** section when the
|
|
232
|
+
user timezone is known. To keep the prompt cache-stable, it now only includes
|
|
233
|
+
the **time zone** (no dynamic clock or time format).
|
|
234
|
+
|
|
235
|
+
Use `session_status` when the agent needs the current time; the status card
|
|
236
|
+
includes a timestamp line. The same tool can optionally set a per-session model
|
|
237
|
+
override (`model=default` clears it).
|
|
238
|
+
|
|
239
|
+
Configure with:
|
|
240
|
+
|
|
241
|
+
- `agents.defaults.userTimezone`
|
|
242
|
+
- `agents.defaults.timeFormat` (`auto` | `12` | `24`)
|
|
243
|
+
|
|
244
|
+
See [Date & Time](/date-time) for full behavior details.
|
|
245
|
+
|
|
246
|
+
## Skills
|
|
247
|
+
|
|
248
|
+
When eligible skills exist, Nodmix injects a compact **available skills list**
|
|
249
|
+
(`formatSkillsForPrompt`) that includes the **file path** for each skill. The
|
|
250
|
+
prompt instructs the model to use `read` to load the SKILL.md at the listed
|
|
251
|
+
location (workspace, managed, or bundled). If no skills are eligible, the
|
|
252
|
+
Skills section is omitted.
|
|
253
|
+
|
|
254
|
+
Eligibility includes skill metadata gates, runtime environment/config checks,
|
|
255
|
+
and the effective agent skill allowlist when `agents.defaults.skills` or
|
|
256
|
+
`agents.list[].skills` is configured.
|
|
257
|
+
|
|
258
|
+
Plugin-bundled skills are eligible only when their owning plugin is enabled.
|
|
259
|
+
This lets tool plugins expose deeper operating guides without embedding all of
|
|
260
|
+
that guidance directly in every tool description.
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
<available_skills>
|
|
264
|
+
<skill>
|
|
265
|
+
<name>...</name>
|
|
266
|
+
<description>...</description>
|
|
267
|
+
<location>...</location>
|
|
268
|
+
</skill>
|
|
269
|
+
</available_skills>
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
This keeps the base prompt small while still enabling targeted skill usage.
|
|
273
|
+
|
|
274
|
+
The skills list budget is owned by the skills subsystem:
|
|
275
|
+
|
|
276
|
+
- Global default: `skills.limits.maxSkillsPromptChars`
|
|
277
|
+
- Per-agent override: `agents.list[].skillsLimits.maxSkillsPromptChars`
|
|
278
|
+
|
|
279
|
+
Generic bounded runtime excerpts use a different surface:
|
|
280
|
+
|
|
281
|
+
- `agents.defaults.contextLimits.*`
|
|
282
|
+
- `agents.list[].contextLimits.*`
|
|
283
|
+
|
|
284
|
+
That split keeps skills sizing separate from runtime read/injection sizing such
|
|
285
|
+
as `memory_get`, live tool results, and post-compaction AGENTS.md refreshes.
|
|
286
|
+
|
|
287
|
+
## Documentation
|
|
288
|
+
|
|
289
|
+
The system prompt includes a **Documentation** section. When local docs are available, it
|
|
290
|
+
points to the local Nodmix docs directory (`docs/` in a Git checkout or the bundled npm
|
|
291
|
+
package docs). If local docs are unavailable, it falls back to
|
|
292
|
+
[https://docs.nodmix.ai](https://docs.nodmix.ai).
|
|
293
|
+
|
|
294
|
+
The same section also includes the Nodmix source location. Git checkouts expose the local
|
|
295
|
+
source root so the agent can inspect code directly. Package installs include the GitHub
|
|
296
|
+
source URL and tell the agent to review source there whenever the docs are incomplete or
|
|
297
|
+
stale. The prompt also notes the public docs mirror, community Discord, and ClawHub
|
|
298
|
+
([https://clawhub.ai](https://clawhub.ai)) for skills discovery. It tells the model to
|
|
299
|
+
consult docs first for Nodmix behavior, commands, configuration, or architecture, and to
|
|
300
|
+
run `nodmix status` itself when possible (asking the user only when it lacks access).
|
|
301
|
+
For configuration specifically, it points agents to the `gateway` tool action
|
|
302
|
+
`config.schema.lookup` for exact field-level docs and constraints, then to
|
|
303
|
+
`docs/gateway/configuration.md` and `docs/gateway/configuration-reference.md`
|
|
304
|
+
for broader guidance.
|
|
305
|
+
|
|
306
|
+
## Related
|
|
307
|
+
|
|
308
|
+
- [Agent runtime](/concepts/agent)
|
|
309
|
+
- [Agent workspace](/concepts/agent-workspace)
|
|
310
|
+
- [Context engine](/concepts/context-engine)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Where timezones show up in Nodmix — envelopes, tool payloads, system prompt"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want a quick mental model for timezone handling
|
|
5
|
+
- You are deciding where to set or override a timezone
|
|
6
|
+
title: "Timezones"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Nodmix standardizes timestamps so the model sees a **single reference time** instead of a mix of provider-local clocks. There are three surfaces where timezones show up, each with its own purpose:
|
|
10
|
+
|
|
11
|
+
## Three timezone surfaces
|
|
12
|
+
|
|
13
|
+
| Surface | What it shows | Default | Configured via |
|
|
14
|
+
| ----------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------- | ------------------------------------------------------- |
|
|
15
|
+
| Message envelopes | Wraps inbound channel messages: `[Signal +1555 2026-01-18 00:19 PST] hello` | Host-local | `agents.defaults.envelopeTimezone` |
|
|
16
|
+
| Tool payloads | Channel `readMessages`-style tools return raw provider time + normalized `timestampMs` / `timestampUtc` | UTC fields always present | Not configurable — preserves provider-native timestamps |
|
|
17
|
+
| System prompt | A small `Current Date & Time` block with the **time zone only** (no clock value, for cache stability) | Host timezone if `userTimezone` unset | `agents.defaults.userTimezone` |
|
|
18
|
+
|
|
19
|
+
The system prompt deliberately omits the live clock to keep prompt caching stable across turns. When the agent needs the current time, it calls `session_status`.
|
|
20
|
+
|
|
21
|
+
## Setting the user timezone
|
|
22
|
+
|
|
23
|
+
```json5
|
|
24
|
+
{
|
|
25
|
+
agents: {
|
|
26
|
+
defaults: {
|
|
27
|
+
userTimezone: "America/Chicago",
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
If `userTimezone` is unset, Nodmix resolves the host timezone at runtime (no config write). `agents.defaults.timeFormat` (`auto` | `12` | `24`) controls 12h/24h rendering in envelopes and downstream surfaces, not in the system prompt section.
|
|
34
|
+
|
|
35
|
+
## When to override
|
|
36
|
+
|
|
37
|
+
- **Use UTC envelopes** (`envelopeTimezone: "utc"`) when you want stable timestamps across hosts in different regions, or when you want UTC-aligned logs to match diagnostics output.
|
|
38
|
+
- **Use a fixed IANA zone** (e.g. `"Europe/Vienna"`) when the gateway host is in one zone but the user is in another and you want envelopes to read in the user's zone regardless of host migration.
|
|
39
|
+
- **Set `envelopeTimestamp: "off"`** for low-token envelopes when timestamp context is not useful for the conversation.
|
|
40
|
+
|
|
41
|
+
For the full behavior reference, examples per provider, and elapsed-time formatting, see [Date & Time](/date-time).
|
|
42
|
+
|
|
43
|
+
## Related
|
|
44
|
+
|
|
45
|
+
- [Date & Time](/date-time) — full envelope/tool/prompt behavior and examples.
|
|
46
|
+
- [Heartbeat](/gateway/heartbeat) — active hours use timezone for scheduling.
|
|
47
|
+
- [Cron Jobs](/automation/cron-jobs) — cron expressions use timezone for scheduling.
|