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,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Plan and audit checklist for moving Canvas out of core and into a bundled experimental plugin."
|
|
3
|
+
read_when:
|
|
4
|
+
- Moving Canvas host, tools, commands, docs, or protocol ownership
|
|
5
|
+
- Auditing whether Canvas is still core-owned
|
|
6
|
+
- Preparing or reviewing the experimental Canvas plugin PR
|
|
7
|
+
title: "Canvas plugin refactor"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Canvas plugin refactor
|
|
11
|
+
|
|
12
|
+
Canvas is low-use and experimental. Treat it as a bundled plugin, not a core feature. Core may keep generic gateway, node, HTTP, auth, config, and native-client plumbing, but Canvas-specific behavior should live under `extensions/canvas`.
|
|
13
|
+
|
|
14
|
+
## Goal
|
|
15
|
+
|
|
16
|
+
Move Canvas ownership to `extensions/canvas` while preserving the current paired-node behavior:
|
|
17
|
+
|
|
18
|
+
- the agent-facing `canvas` tool is registered by the Canvas plugin
|
|
19
|
+
- Canvas node commands are allowed only when the Canvas plugin registers them
|
|
20
|
+
- A2UI host/source files live under the Canvas plugin
|
|
21
|
+
- Canvas document materialization lives under the Canvas plugin
|
|
22
|
+
- CLI command implementation lives under the Canvas plugin, or delegates through a plugin-owned runtime barrel
|
|
23
|
+
- docs and plugin inventory describe Canvas as experimental and plugin-backed
|
|
24
|
+
|
|
25
|
+
## Non-goals
|
|
26
|
+
|
|
27
|
+
- Do not redesign the native app Canvas UI in this refactor.
|
|
28
|
+
- Do not remove Canvas protocol/client support from iOS, Android, or macOS unless a separate product decision says Canvas should be deleted.
|
|
29
|
+
- Do not build a broad plugin service framework only for Canvas unless at least one other bundled plugin needs the same seam.
|
|
30
|
+
|
|
31
|
+
## Current branch state
|
|
32
|
+
|
|
33
|
+
Done:
|
|
34
|
+
|
|
35
|
+
- Added bundled plugin package in `extensions/canvas`.
|
|
36
|
+
- Added `extensions/canvas/nodmix.plugin.json`.
|
|
37
|
+
- Moved the agent `canvas` tool from `src/agents/tools/canvas-tool.ts` to `extensions/canvas/src/tool.ts`.
|
|
38
|
+
- Removed core registration of `createCanvasTool` from `src/agents/nodmix-tools.ts`.
|
|
39
|
+
- Moved Canvas host implementation from `src/canvas-host` to `extensions/canvas/src/host`.
|
|
40
|
+
- Kept `extensions/canvas/runtime-api.ts` as the plugin-owned compatibility barrel for tests, packaging, and external public Canvas helpers.
|
|
41
|
+
- Moved Canvas document materialization from `src/gateway/canvas-documents.ts` to `extensions/canvas/src/documents.ts`.
|
|
42
|
+
- Moved Canvas CLI implementation and A2UI JSONL helpers into `extensions/canvas/src/cli.ts`.
|
|
43
|
+
- Moved Canvas host URL and scoped capability helpers into `extensions/canvas/src`.
|
|
44
|
+
- Moved Canvas node command defaults out of hardcoded core lists and into plugin `nodeInvokePolicies`.
|
|
45
|
+
- Added plugin-owned Canvas host config at `plugins.entries.canvas.config.host`.
|
|
46
|
+
- Moved Canvas and A2UI HTTP serving behind Canvas plugin HTTP route registration.
|
|
47
|
+
- Added generic plugin WebSocket upgrade dispatch for plugin-owned HTTP routes.
|
|
48
|
+
- Replaced Canvas-specific gateway host URL and node capability auth with generic hosted plugin surface and node capability helpers.
|
|
49
|
+
- Added plugin-owned hosted media resolvers so Canvas document URLs resolve through the Canvas plugin instead of core importing Canvas document internals.
|
|
50
|
+
- Added `api.registerNodeCliFeature(...)` so Canvas can declare `nodmix nodes canvas` as a plugin-owned node feature without manually spelling the parent command path.
|
|
51
|
+
- Removed production `src/**` imports of `extensions/canvas/runtime-api.js`.
|
|
52
|
+
- Moved the A2UI bundle source from `apps/shared/NodmixKit/Tools/CanvasA2UI` to `extensions/canvas/src/host/a2ui-app`.
|
|
53
|
+
- Moved A2UI build/copy implementation under `extensions/canvas/scripts` and replaced root build wiring with generic bundled-plugin asset hooks.
|
|
54
|
+
- Removed the runtime legacy top-level `canvasHost` config alias.
|
|
55
|
+
- Kept the Canvas doctor migration so `nodmix doctor --fix` rewrites old `canvasHost` configs into `plugins.entries.canvas.config.host`.
|
|
56
|
+
- Removed old-agent Canvas protocol compatibility behind gateway protocol v4. Native clients and gateways now use only `pluginSurfaceUrls.canvas` plus `node.pluginSurface.refresh`; the deprecated `canvasHostUrl`, `canvasCapability`, and `node.canvas.capability.refresh` path is intentionally unsupported in this experimental refactor.
|
|
57
|
+
- Updated generated plugin inventory to include Canvas.
|
|
58
|
+
- Added plugin reference docs at `docs/plugins/reference/canvas.md`.
|
|
59
|
+
|
|
60
|
+
Known remaining core-owned Canvas surfaces:
|
|
61
|
+
|
|
62
|
+
- Native app Canvas handlers under `apps/` still intentionally consume the Canvas plugin surface
|
|
63
|
+
- native app Canvas protocol/client handlers under `apps/`
|
|
64
|
+
- published artifact output still uses `dist/canvas-host/a2ui` for backwards-compatible runtime lookup, but the copy step is now plugin-owned
|
|
65
|
+
|
|
66
|
+
## Target shape
|
|
67
|
+
|
|
68
|
+
`extensions/canvas` should own:
|
|
69
|
+
|
|
70
|
+
- plugin manifest and package metadata
|
|
71
|
+
- agent tool registration
|
|
72
|
+
- node invoke command policy
|
|
73
|
+
- Canvas host and A2UI runtime
|
|
74
|
+
- Canvas A2UI bundle source and asset build/copy scripts
|
|
75
|
+
- Canvas document creation and asset resolution
|
|
76
|
+
- Canvas CLI implementation
|
|
77
|
+
- Canvas docs page and plugin inventory entry
|
|
78
|
+
|
|
79
|
+
Core should own only generic seams:
|
|
80
|
+
|
|
81
|
+
- plugin discovery and registration
|
|
82
|
+
- generic agent tool registry
|
|
83
|
+
- generic node invoke policy registry
|
|
84
|
+
- generic gateway HTTP/auth and WebSocket upgrade dispatch
|
|
85
|
+
- generic hosted plugin surface URL resolution
|
|
86
|
+
- generic hosted media resolver registration
|
|
87
|
+
- generic node capability transport
|
|
88
|
+
- generic config plumbing
|
|
89
|
+
- generic bundled-plugin asset hook discovery
|
|
90
|
+
|
|
91
|
+
Native apps may keep Canvas command handlers as clients of the protocol. They are not the plugin runtime owner.
|
|
92
|
+
|
|
93
|
+
## Migration steps
|
|
94
|
+
|
|
95
|
+
1. Treat `plugins.entries.canvas.config.host` as the plugin-owned config surface.
|
|
96
|
+
2. Update docs so Canvas is described as an experimental bundled plugin.
|
|
97
|
+
3. Run focused Canvas tests, plugin inventory checks, plugin SDK API checks, and build/type gates affected by runtime boundaries.
|
|
98
|
+
|
|
99
|
+
## Audit checklist
|
|
100
|
+
|
|
101
|
+
Before calling the refactor complete:
|
|
102
|
+
|
|
103
|
+
- `rg "src/canvas-host|../canvas-host"` returns no live source imports.
|
|
104
|
+
- `rg "canvas-tool|createCanvasTool" src` finds no core-owned Canvas tool implementation.
|
|
105
|
+
- `rg "canvas.present|canvas.snapshot|canvas.a2ui" src/gateway` finds no hardcoded allowlist defaults outside generic plugin policy tests.
|
|
106
|
+
- `rg "extensions/canvas/runtime-api" src --glob '!**/*.test.ts'` is empty.
|
|
107
|
+
- `rg "canvas-documents" src` is empty.
|
|
108
|
+
- `rg "registerNodesCanvasCommands|nodes-canvas" src` is empty; the Canvas plugin registers `nodmix nodes canvas` through nested plugin CLI metadata.
|
|
109
|
+
- `rg "createCanvasHostHandler|handleA2uiHttpRequest" src/gateway` returns no gateway runtime ownership.
|
|
110
|
+
- `rg "apps/shared/NodmixKit/Tools/CanvasA2UI|canvas-a2ui-copy|extensions/canvas/src/host/a2ui" scripts .github package.json` finds only compatibility wrappers or plugin-owned paths.
|
|
111
|
+
- `pnpm plugins:inventory:check` passes.
|
|
112
|
+
- `pnpm plugin-sdk:api:check` passes, or generated API baselines are intentionally updated and reviewed.
|
|
113
|
+
- Targeted Canvas tests pass.
|
|
114
|
+
- Changed-lanes tests pass for Canvas host/A2UI paths.
|
|
115
|
+
- PR body explicitly says Canvas is experimental and plugin-backed.
|
|
116
|
+
|
|
117
|
+
## Verification commands
|
|
118
|
+
|
|
119
|
+
Use targeted local checks while iterating:
|
|
120
|
+
|
|
121
|
+
```sh
|
|
122
|
+
pnpm test extensions/canvas/src/host/server.test.ts extensions/canvas/src/host/server.state-dir.test.ts extensions/canvas/src/host/file-resolver.test.ts
|
|
123
|
+
pnpm test src/gateway/server.plugin-node-capability-auth.test.ts src/gateway/server-import-boundary.test.ts
|
|
124
|
+
pnpm test extensions/canvas/src/config-migration.test.ts src/commands/doctor-legacy-config.migrations.test.ts
|
|
125
|
+
pnpm test test/scripts/changed-lanes.test.ts test/scripts/build-all.test.ts extensions/canvas/scripts/bundle-a2ui.test.ts test/scripts/bundled-plugin-assets.test.ts extensions/canvas/scripts/copy-a2ui.test.ts src/infra/run-node.test.ts
|
|
126
|
+
pnpm tsgo:extensions
|
|
127
|
+
pnpm plugins:inventory:check
|
|
128
|
+
pnpm plugin-sdk:api:check
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Run `pnpm build` before push if runtime barrel, lazy import, packaging, or published plugin surfaces change.
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Deletion-first plan for moving repeated channel ingress glue into core."
|
|
3
|
+
read_when:
|
|
4
|
+
- Auditing why the channel ingress refactor added too much code
|
|
5
|
+
- Moving route, command, event, activation, or access-group policy from bundled plugins into core
|
|
6
|
+
- Reviewing whether a channel ingress helper actually deletes bundled plugin code
|
|
7
|
+
title: "Ingress core deletion plan"
|
|
8
|
+
sidebarTitle: "Ingress core deletion"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Ingress core deletion plan
|
|
12
|
+
|
|
13
|
+
The ingress refactor is not healthy while it adds thousands of net lines. Core
|
|
14
|
+
centralization only counts when bundled plugin production code gets smaller and
|
|
15
|
+
old third-party SDK compatibility is quarantined to SDK/core shims.
|
|
16
|
+
|
|
17
|
+
Desired runtime shape:
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
bundled plugin event
|
|
21
|
+
-> extract platform facts locally
|
|
22
|
+
-> resolve shared ingress once when facts are available
|
|
23
|
+
-> branch on generic ingress projections/outcomes
|
|
24
|
+
-> perform platform side effects locally
|
|
25
|
+
|
|
26
|
+
old third-party helper
|
|
27
|
+
-> SDK compatibility shim
|
|
28
|
+
-> shared ingress-compatible projection where possible
|
|
29
|
+
-> old return shape preserved
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Bundled plugins should not translate ingress back into local `AccessResult`,
|
|
33
|
+
`GroupAccessDecision`, `CommandAuthDecision`, `DmCommandAccess`, or
|
|
34
|
+
`{ allowed, reasonCode }` shapes unless that type is public plugin API.
|
|
35
|
+
|
|
36
|
+
## Budget
|
|
37
|
+
|
|
38
|
+
Measured against the PR merge-base with `origin/main`, including untracked
|
|
39
|
+
files.
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
merge-base 1671e7532adb
|
|
43
|
+
|
|
44
|
+
current:
|
|
45
|
+
core production +3,922 / -546 = +3,376
|
|
46
|
+
docs +601 / -17 = +584
|
|
47
|
+
other +145 / -2 = +143
|
|
48
|
+
plugin production +4,148 / -5,388 = -1,240
|
|
49
|
+
tests +2,326 / -2,414 = -88
|
|
50
|
+
total +11,142 / -8,367 = +2,775
|
|
51
|
+
|
|
52
|
+
required:
|
|
53
|
+
plugin production <= -1,500
|
|
54
|
+
core production <= +1,500, or paid for by larger plugin deletion
|
|
55
|
+
tests <= +1,000
|
|
56
|
+
total <= +2,000
|
|
57
|
+
|
|
58
|
+
stretch:
|
|
59
|
+
plugin production <= -2,500
|
|
60
|
+
core production <= +1,200
|
|
61
|
+
total <= 0
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Minimum remaining cleanup:
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
plugin production needs 260 more net deleted lines
|
|
68
|
+
total needs 775 more net deleted lines
|
|
69
|
+
core production still +1,876 over standalone budget, unless paid down by plugin deletion
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Comment-only deletion does not count as cleanup. The previous budget pass was
|
|
73
|
+
too generous because it included restored QQBot explanatory comments; this
|
|
74
|
+
document tracks executable/docs/test code movement only.
|
|
75
|
+
|
|
76
|
+
Re-measure after each cleanup wave:
|
|
77
|
+
|
|
78
|
+
```sh
|
|
79
|
+
base=$(git merge-base HEAD origin/main)
|
|
80
|
+
git diff --shortstat "$base"
|
|
81
|
+
git diff --numstat "$base" -- src/channels/message-access src/plugin-sdk extensions | sort -nr -k1 | head -n 80
|
|
82
|
+
pnpm lint:extensions:no-deprecated-channel-access
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Diagnosis
|
|
86
|
+
|
|
87
|
+
The first pass added the shared ingress kernel, then left too much plugin-local
|
|
88
|
+
authorization beside it:
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
platform facts
|
|
92
|
+
-> shared ingress state and decision
|
|
93
|
+
-> plugin-local DTO or legacy projection
|
|
94
|
+
-> plugin-local if/else ladder
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
That duplicates the model. Core production grew by about 3,376 lines, while
|
|
98
|
+
bundled plugin production is 1,240 lines smaller. That is better than the first
|
|
99
|
+
pass, but it is not inside the minimum budget. The fix remains deletion-first:
|
|
100
|
+
|
|
101
|
+
- delete plugin DTOs that only rename ingress fields
|
|
102
|
+
- delete tests that only assert wrapper shape
|
|
103
|
+
- add core helpers only when the same patch deletes bundled plugin code
|
|
104
|
+
- keep old SDK compatibility in SDK/core shims only
|
|
105
|
+
- repack core after wrapper deletion exposes the stable shape
|
|
106
|
+
|
|
107
|
+
## Hotspots
|
|
108
|
+
|
|
109
|
+
Positive bundled production files that still need to shrink:
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
extensions/telegram/src/ingress.ts +126
|
|
113
|
+
extensions/discord/src/monitor/dm-command-auth.ts +101
|
|
114
|
+
extensions/signal/src/monitor/access-policy.ts +92
|
|
115
|
+
extensions/feishu/src/policy.ts +85
|
|
116
|
+
extensions/slack/src/monitor/auth.ts +64
|
|
117
|
+
extensions/googlechat/src/monitor-access.ts +59
|
|
118
|
+
extensions/nextcloud-talk/src/inbound.ts +51
|
|
119
|
+
extensions/matrix/src/matrix/monitor/access-state.ts +49
|
|
120
|
+
extensions/irc/src/inbound.ts +44
|
|
121
|
+
extensions/imessage/src/monitor/inbound-processing.ts +36
|
|
122
|
+
extensions/qa-channel/src/inbound.ts +34
|
|
123
|
+
extensions/qqbot/src/bridge/sdk-adapter.ts +33
|
|
124
|
+
extensions/tlon/src/monitor/utils.ts +30
|
|
125
|
+
extensions/twitch/src/access-control.ts +22
|
|
126
|
+
extensions/qqbot/src/engine/commands/slash-command-handler.ts +20
|
|
127
|
+
extensions/telegram/src/bot-handlers.runtime.ts +19
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
The branch is not inside the minimum budget yet. The remaining review-relevant
|
|
131
|
+
work should delete repeated authorization flow, turn scaffolding, or wrapper
|
|
132
|
+
tests before adding another core abstraction.
|
|
133
|
+
|
|
134
|
+
## Current Code Read
|
|
135
|
+
|
|
136
|
+
The healthy core seam already exists in `src/channels/message-access/runtime.ts`:
|
|
137
|
+
it owns identity adapters, effective allowlists, pairing-store reads, route
|
|
138
|
+
descriptors, command/event presets, access groups, and the final resolved
|
|
139
|
+
`ResolvedChannelMessageIngress` projection.
|
|
140
|
+
|
|
141
|
+
The remaining growth is mostly plugin glue layered on top of that seam:
|
|
142
|
+
|
|
143
|
+
- `extensions/telegram/src/ingress.ts` wraps core decisions in Telegram-specific
|
|
144
|
+
command/event helpers, then call sites still pass precomputed normalized
|
|
145
|
+
allowlists and owner lists.
|
|
146
|
+
- `extensions/discord/src/monitor/dm-command-auth.ts`,
|
|
147
|
+
`extensions/feishu/src/policy.ts`, `extensions/googlechat/src/monitor-access.ts`,
|
|
148
|
+
and `extensions/matrix/src/matrix/monitor/access-state.ts` still keep
|
|
149
|
+
local policy DTOs or legacy decision names beside ingress.
|
|
150
|
+
- `extensions/signal/src/monitor/access-policy.ts` correctly keeps Signal
|
|
151
|
+
identity normalization and pairing replies local, but still has a wrapper
|
|
152
|
+
seam that should collapse into direct ingress consumption.
|
|
153
|
+
- `extensions/nextcloud-talk/src/inbound.ts`, `extensions/irc/src/inbound.ts`,
|
|
154
|
+
`extensions/qa-channel/src/inbound.ts`, `extensions/zalo/src/monitor.ts`, and
|
|
155
|
+
`extensions/zalouser/src/monitor.ts` still repeat route/envelope/turn
|
|
156
|
+
assembly that can move to shared turn helpers outside the ingress kernel.
|
|
157
|
+
|
|
158
|
+
Conclusion: moving more code into core is only useful if it deletes these
|
|
159
|
+
plugin wrapper layers in the same patch. Adding another abstraction while
|
|
160
|
+
leaving wrapper returns in place repeats the mistake.
|
|
161
|
+
|
|
162
|
+
## Boundary
|
|
163
|
+
|
|
164
|
+
Core owns generic policy:
|
|
165
|
+
|
|
166
|
+
- allowlist normalization and matching
|
|
167
|
+
- access-group expansion and diagnostics
|
|
168
|
+
- pairing-store DM allowlist reads
|
|
169
|
+
- route, sender, command, event, and activation gates
|
|
170
|
+
- admission mapping: dispatch, drop, skip, observe, pairing
|
|
171
|
+
- redacted state, decisions, diagnostics, and SDK compatibility projections
|
|
172
|
+
- reusable generic descriptors for identity, route, command, event, activation,
|
|
173
|
+
and outcomes
|
|
174
|
+
|
|
175
|
+
Plugins own transport facts and side effects:
|
|
176
|
+
|
|
177
|
+
- webhook/socket/request authenticity
|
|
178
|
+
- platform identity extraction and API lookups
|
|
179
|
+
- channel-specific policy defaults
|
|
180
|
+
- pairing challenge delivery, replies, acks, reactions, typing, media, history,
|
|
181
|
+
setup, doctor, status, logs, and user-facing copy
|
|
182
|
+
|
|
183
|
+
Core must stay channel-agnostic: no Discord, Slack, Telegram, Matrix, room,
|
|
184
|
+
guild, space, API client, or plugin-specific default in
|
|
185
|
+
`src/channels/message-access`.
|
|
186
|
+
|
|
187
|
+
## Acceptance Rule
|
|
188
|
+
|
|
189
|
+
Every new core helper must delete bundled plugin production code immediately.
|
|
190
|
+
|
|
191
|
+
```text
|
|
192
|
+
one bundled caller reject; keep plugin-local
|
|
193
|
+
two bundled callers accept only if plugin production LOC drops
|
|
194
|
+
three or more callers plugin deletion must be at least 2x new core LOC
|
|
195
|
+
compatibility-only helper SDK/core shim only; never bundled hot paths
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Stop and redesign if:
|
|
199
|
+
|
|
200
|
+
- plugin production LOC increases
|
|
201
|
+
- tests grow faster than production shrinks
|
|
202
|
+
- a bundled hot path returns a DTO that only renames `ResolvedChannelMessageIngress`
|
|
203
|
+
- a core helper needs a channel id, platform object, API client, or
|
|
204
|
+
channel-specific default
|
|
205
|
+
|
|
206
|
+
## Work Packages
|
|
207
|
+
|
|
208
|
+
1. Freeze the budget.
|
|
209
|
+
Put LOC in the PR, keep deprecated-ingress lint green, and include before/after
|
|
210
|
+
LOC in cleanup commits.
|
|
211
|
+
|
|
212
|
+
2. Delete thin DTO seams.
|
|
213
|
+
Replace plugin-local wrapper returns with `ResolvedChannelMessageIngress`,
|
|
214
|
+
`senderAccess`, `commandAccess`, `routeAccess`, or `ingress` directly. Start
|
|
215
|
+
with QQBot, Telegram, Slack, Discord, Signal, Feishu, Matrix, iMessage, and
|
|
216
|
+
Tlon. Delete wrapper-shape tests; keep behavior tests.
|
|
217
|
+
|
|
218
|
+
3. Add outcome classification only with deletions.
|
|
219
|
+
A generic classifier may expose `dispatch`, `pairing-required`,
|
|
220
|
+
`skip-activation`, `drop-command`, `drop-route`, `drop-sender`, and
|
|
221
|
+
`drop-ingress`. It must derive from the decision graph, not reason strings,
|
|
222
|
+
and migrate at least three plugins in the same patch.
|
|
223
|
+
|
|
224
|
+
4. Add route descriptor builders only with deletions.
|
|
225
|
+
Generic route target and route sender helpers are acceptable only if they
|
|
226
|
+
immediately shrink route-heavy plugins: Google Chat, IRC, Microsoft Teams,
|
|
227
|
+
Nextcloud Talk, Mattermost, Slack, Zalo, and Zalo Personal.
|
|
228
|
+
|
|
229
|
+
5. Add command/event presets only with deletions.
|
|
230
|
+
Centralize text-command, native-command, callback, and origin-subject shapes.
|
|
231
|
+
Command consumers must default to unauthorized when no command gate ran;
|
|
232
|
+
events must not start pairing.
|
|
233
|
+
|
|
234
|
+
6. Add identity presets only where they remove boilerplate.
|
|
235
|
+
Stable-id, stable-id-plus-aliases, phone/e164, and multi-identifier helpers
|
|
236
|
+
are allowed when raw values enter only adapter input and redacted state keeps
|
|
237
|
+
opaque ids/counts.
|
|
238
|
+
|
|
239
|
+
7. Share authorized turn assembly.
|
|
240
|
+
Outside the ingress kernel, remove repeated route/envelope/context/reply
|
|
241
|
+
scaffolding from QA Channel, IRC, Nextcloud Talk, Zalo, and Zalo Personal.
|
|
242
|
+
Core may own route/session/envelope/dispatch sequencing; plugins keep
|
|
243
|
+
delivery and channel-specific context.
|
|
244
|
+
|
|
245
|
+
8. Quarantine compatibility.
|
|
246
|
+
Deprecated SDK helpers stay source-compatible, but bundled hot paths must not
|
|
247
|
+
import deprecated ingress or command-auth facades. Compatibility tests should
|
|
248
|
+
use fake third-party plugins, not bundled-plugin internals.
|
|
249
|
+
|
|
250
|
+
9. Repack core.
|
|
251
|
+
After wrapper deletion, collapse one-use modules, remove unused exports, move
|
|
252
|
+
compatibility projection out of hot paths, and keep focused tests for identity,
|
|
253
|
+
route, command/event, activation, access groups, and compatibility shims.
|
|
254
|
+
|
|
255
|
+
## Deletion Waves
|
|
256
|
+
|
|
257
|
+
Run these in order. Each wave must lower bundled production LOC.
|
|
258
|
+
|
|
259
|
+
1. Wrapper collapse, expected plugin delta: -400 to -600.
|
|
260
|
+
Replace plugin-local `resolveXAccess`, `resolveXCommandAccess`, and
|
|
261
|
+
`accessFromIngress` result types with direct reads from
|
|
262
|
+
`ResolvedChannelMessageIngress`. First targets: Discord DM command auth,
|
|
263
|
+
Feishu policy, Matrix access state, Telegram ingress, Signal access policy,
|
|
264
|
+
QQBot SDK adapter.
|
|
265
|
+
|
|
266
|
+
2. Shared outcome helpers, expected plugin delta: -200 to -350.
|
|
267
|
+
Add one generic classifier only if it deletes repeated
|
|
268
|
+
`shouldBlockControlCommand`, pairing, activation skip, route block, and sender
|
|
269
|
+
block ladders across at least three plugins.
|
|
270
|
+
|
|
271
|
+
3. Route descriptor builders, expected plugin delta: -200 to -350.
|
|
272
|
+
Move repeated route target and route sender descriptor assembly into core
|
|
273
|
+
helpers. First targets: Google Chat, IRC, Microsoft Teams, Nextcloud Talk,
|
|
274
|
+
Mattermost, Slack, Zalo, Zalo Personal.
|
|
275
|
+
|
|
276
|
+
4. Turn assembly sharing, expected plugin delta: -250 to -450.
|
|
277
|
+
Use common route/session/envelope/dispatch sequencing for simple inbound
|
|
278
|
+
plugins. First targets: QA Channel, IRC, Nextcloud Talk, Zalo, Zalo Personal.
|
|
279
|
+
|
|
280
|
+
5. Core repack, expected core delta: -300 to -700.
|
|
281
|
+
After plugins consume runtime projections directly, delete one-use modules,
|
|
282
|
+
merge tiny files back into `runtime.ts` or focused siblings, and keep SDK
|
|
283
|
+
compatibility files separate from bundled hot paths.
|
|
284
|
+
|
|
285
|
+
6. Test pruning, expected test delta: -300 to -600.
|
|
286
|
+
Delete tests that only assert removed wrapper shapes. Keep behavior tests for
|
|
287
|
+
command denial, group fallback, origin-subject matching, activation skip,
|
|
288
|
+
access groups, pairing, and redaction.
|
|
289
|
+
|
|
290
|
+
Expected minimum landing shape after these waves:
|
|
291
|
+
|
|
292
|
+
```text
|
|
293
|
+
plugin production <= -1,500
|
|
294
|
+
core production about +1,800 to +2,200 before final repack
|
|
295
|
+
tests <= +500
|
|
296
|
+
total <= +2,000
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
## Do Not Move
|
|
300
|
+
|
|
301
|
+
Do not move platform config defaults, setup UX, doctor/fix copy, API lookups,
|
|
302
|
+
Slack owner-presence checks, Matrix alias/verification handling, Telegram
|
|
303
|
+
callback parsing, command syntax parsing, native command registration, reaction
|
|
304
|
+
payload parsing, pairing replies, command replies, acks, typing, media, history,
|
|
305
|
+
or logs.
|
|
306
|
+
|
|
307
|
+
## Verification
|
|
308
|
+
|
|
309
|
+
Targeted local loop:
|
|
310
|
+
|
|
311
|
+
```sh
|
|
312
|
+
pnpm lint:extensions:no-deprecated-channel-access
|
|
313
|
+
pnpm test src/channels/message-access/message-access.test.ts src/plugin-sdk/channel-ingress-runtime.test.ts src/plugin-sdk/access-groups.test.ts
|
|
314
|
+
pnpm test extensions/<changed-plugin>/src/...
|
|
315
|
+
pnpm plugin-sdk:api:check
|
|
316
|
+
pnpm config:docs:check
|
|
317
|
+
pnpm check:docs
|
|
318
|
+
git diff --check
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
Use Testbox for broad changed gates/full-suite proof once the LOC trend is
|
|
322
|
+
inside budget.
|
|
323
|
+
|
|
324
|
+
Each work package records:
|
|
325
|
+
|
|
326
|
+
- before/after LOC by category
|
|
327
|
+
- deleted plugin wrappers
|
|
328
|
+
- new core helper LOC, if any
|
|
329
|
+
- targeted tests run
|
|
330
|
+
- remaining hotspot list
|
|
331
|
+
|
|
332
|
+
## Exit Criteria
|
|
333
|
+
|
|
334
|
+
- bundled production imports no deprecated channel-access or command-auth facades
|
|
335
|
+
- compatibility code is isolated to SDK/core seams
|
|
336
|
+
- bundled plugins consume ingress projections or generic outcomes directly
|
|
337
|
+
- plugin production LOC is at least 1,500 net negative against `origin/main`
|
|
338
|
+
- core production LOC is `<= +1,500`, or any excess is paid for while total
|
|
339
|
+
stays `<= +2,000`
|
|
340
|
+
- representative tests cover redaction, route, command/event, activation,
|
|
341
|
+
access-group, and channel-specific fallback behavior
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Default Nodmix agent instructions and skills roster for the personal assistant setup"
|
|
3
|
+
title: "Default AGENTS.md"
|
|
4
|
+
read_when:
|
|
5
|
+
- Starting a new Nodmix agent session
|
|
6
|
+
- Enabling or auditing default skills
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## First run (recommended)
|
|
10
|
+
|
|
11
|
+
Nodmix uses a dedicated workspace directory for the agent. Default: `~/.nodmix/workspace` (configurable via `agents.defaults.workspace`).
|
|
12
|
+
|
|
13
|
+
1. Create the workspace (if it doesn't already exist):
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
mkdir -p ~/.nodmix/workspace
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
2. Copy the default workspace templates into the workspace:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
cp docs/reference/templates/AGENTS.md ~/.nodmix/workspace/AGENTS.md
|
|
23
|
+
cp docs/reference/templates/SOUL.md ~/.nodmix/workspace/SOUL.md
|
|
24
|
+
cp docs/reference/templates/TOOLS.md ~/.nodmix/workspace/TOOLS.md
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
3. Optional: if you want the personal assistant skill roster, replace AGENTS.md with this file:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
cp docs/reference/AGENTS.default.md ~/.nodmix/workspace/AGENTS.md
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
4. Optional: choose a different workspace by setting `agents.defaults.workspace` (supports `~`):
|
|
34
|
+
|
|
35
|
+
```json5
|
|
36
|
+
{
|
|
37
|
+
agents: { defaults: { workspace: "~/.nodmix/workspace" } },
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Safety defaults
|
|
42
|
+
|
|
43
|
+
- Don't dump directories or secrets into chat.
|
|
44
|
+
- Don't run destructive commands unless explicitly asked.
|
|
45
|
+
- Don't send partial/streaming replies to external messaging surfaces (only final replies).
|
|
46
|
+
|
|
47
|
+
## Session start (required)
|
|
48
|
+
|
|
49
|
+
- Read `SOUL.md`, `USER.md`, and today+yesterday in `memory/`.
|
|
50
|
+
- Read `MEMORY.md` when present.
|
|
51
|
+
- Do it before responding.
|
|
52
|
+
|
|
53
|
+
## Soul (required)
|
|
54
|
+
|
|
55
|
+
- `SOUL.md` defines identity, tone, and boundaries. Keep it current.
|
|
56
|
+
- If you change `SOUL.md`, tell the user.
|
|
57
|
+
- You are a fresh instance each session; continuity lives in these files.
|
|
58
|
+
|
|
59
|
+
## Shared spaces (recommended)
|
|
60
|
+
|
|
61
|
+
- You're not the user's voice; be careful in group chats or public channels.
|
|
62
|
+
- Don't share private data, contact info, or internal notes.
|
|
63
|
+
|
|
64
|
+
## Memory system (recommended)
|
|
65
|
+
|
|
66
|
+
- Daily log: `memory/YYYY-MM-DD.md` (create `memory/` if needed).
|
|
67
|
+
- Long-term memory: `MEMORY.md` for durable facts, preferences, and decisions.
|
|
68
|
+
- Lowercase `memory.md` is legacy repair input only; do not keep both root files on purpose.
|
|
69
|
+
- On session start, read today + yesterday + `MEMORY.md` when present.
|
|
70
|
+
- Capture: decisions, preferences, constraints, open loops.
|
|
71
|
+
- Avoid secrets unless explicitly requested.
|
|
72
|
+
|
|
73
|
+
## Tools and skills
|
|
74
|
+
|
|
75
|
+
- Tools live in skills; follow each skill's `SKILL.md` when you need it.
|
|
76
|
+
- Keep environment-specific notes in `TOOLS.md` (Notes for Skills).
|
|
77
|
+
|
|
78
|
+
## Backup tip (recommended)
|
|
79
|
+
|
|
80
|
+
If you treat this workspace as Clawd's "memory", make it a git repo (ideally private) so `AGENTS.md` and your memory files are backed up.
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
cd ~/.nodmix/workspace
|
|
84
|
+
git init
|
|
85
|
+
git add AGENTS.md
|
|
86
|
+
git commit -m "Add Clawd workspace"
|
|
87
|
+
# Optional: add a private remote + push
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## What Nodmix does
|
|
91
|
+
|
|
92
|
+
- Runs WhatsApp gateway + Pi coding agent so the assistant can read/write chats, fetch context, and run skills via the host Mac.
|
|
93
|
+
- macOS app manages permissions (screen recording, notifications, microphone) and exposes the `nodmix` CLI via its bundled binary.
|
|
94
|
+
- Direct chats collapse into the agent's `main` session by default; groups stay isolated as `agent:<agentId>:<channel>:group:<id>` (rooms/channels: `agent:<agentId>:<channel>:channel:<id>`); heartbeats keep background tasks alive.
|
|
95
|
+
|
|
96
|
+
## Core skills (enable in Settings → Skills)
|
|
97
|
+
|
|
98
|
+
- **mcporter** - Tool server runtime/CLI for managing external skill backends.
|
|
99
|
+
- **Peekaboo** - Fast macOS screenshots with optional AI vision analysis.
|
|
100
|
+
- **camsnap** - Capture frames, clips, or motion alerts from RTSP/ONVIF security cams.
|
|
101
|
+
- **oracle** - OpenAI-ready agent CLI with session replay and browser control.
|
|
102
|
+
- **eightctl** - Control your sleep, from the terminal.
|
|
103
|
+
- **imsg** - Send, read, stream iMessage & SMS.
|
|
104
|
+
- **wacli** - WhatsApp CLI: sync, search, send.
|
|
105
|
+
- **discord** - Discord actions: react, stickers, polls. Use `user:<id>` or `channel:<id>` targets (bare numeric ids are ambiguous).
|
|
106
|
+
- **gog** - Google Suite CLI: Gmail, Calendar, Drive, Contacts.
|
|
107
|
+
- **spotify-player** - Terminal Spotify client to search/queue/control playback.
|
|
108
|
+
- **sag** - ElevenLabs speech with mac-style say UX; streams to speakers by default.
|
|
109
|
+
- **Sonos CLI** - Control Sonos speakers (discover/status/playback/volume/grouping) from scripts.
|
|
110
|
+
- **blucli** - Play, group, and automate BluOS players from scripts.
|
|
111
|
+
- **OpenHue CLI** - Philips Hue lighting control for scenes and automations.
|
|
112
|
+
- **OpenAI Whisper** - Local speech-to-text for quick dictation and voicemail transcripts.
|
|
113
|
+
- **Gemini CLI** - Google Gemini models from the terminal for fast Q&A.
|
|
114
|
+
- **agent-tools** - Utility toolkit for automations and helper scripts.
|
|
115
|
+
|
|
116
|
+
## Usage notes
|
|
117
|
+
|
|
118
|
+
- Prefer the `nodmix` CLI for scripting; mac app handles permissions.
|
|
119
|
+
- Run installs from the Skills tab; it hides the button if a binary is already present.
|
|
120
|
+
- Keep heartbeats enabled so the assistant can schedule reminders, monitor inboxes, and trigger camera captures.
|
|
121
|
+
- Canvas UI runs full-screen with native overlays. Avoid placing critical controls in the top-left/top-right/bottom edges; add explicit gutters in the layout and don't rely on safe-area insets.
|
|
122
|
+
- For browser-driven verification, use `nodmix browser` (tabs/status/screenshot) with the Nodmix-managed Chrome profile.
|
|
123
|
+
- For DOM inspection, use `nodmix browser eval|query|dom|snapshot` (and `--json`/`--out` when you need machine output).
|
|
124
|
+
- For interactions, use `nodmix browser click|type|hover|drag|select|upload|press|wait|navigate|back|evaluate|run` (click/type require snapshot refs; use `evaluate` for CSS selectors).
|
|
125
|
+
|
|
126
|
+
## Related
|
|
127
|
+
|
|
128
|
+
- [Agent workspace](/concepts/agent-workspace)
|
|
129
|
+
- [Agent runtime](/concepts/agent)
|