clawdbot 2026.1.4
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 +115 -0
- package/LICENSE +21 -0
- package/README-header.png +0 -0
- package/README.md +297 -0
- package/dist/agents/agent-paths.js +17 -0
- package/dist/agents/bash-process-registry.js +126 -0
- package/dist/agents/bash-tools.js +837 -0
- package/dist/agents/clawdbot-tools.js +30 -0
- package/dist/agents/clawdis-tools.js +27 -0
- package/dist/agents/context.js +34 -0
- package/dist/agents/defaults.js +6 -0
- package/dist/agents/model-auth.js +112 -0
- package/dist/agents/model-catalog.js +55 -0
- package/dist/agents/model-fallback.js +191 -0
- package/dist/agents/model-scan.js +263 -0
- package/dist/agents/model-selection.js +116 -0
- package/dist/agents/models-config.js +49 -0
- package/dist/agents/pi-embedded-helpers.js +74 -0
- package/dist/agents/pi-embedded-runner.js +407 -0
- package/dist/agents/pi-embedded-subscribe.js +568 -0
- package/dist/agents/pi-embedded-utils.js +20 -0
- package/dist/agents/pi-embedded.js +1 -0
- package/dist/agents/pi-oauth.js +88 -0
- package/dist/agents/pi-tools.js +433 -0
- package/dist/agents/sandbox-paths.js +68 -0
- package/dist/agents/sandbox.js +644 -0
- package/dist/agents/shell-utils.js +53 -0
- package/dist/agents/skills-install.js +244 -0
- package/dist/agents/skills-status.js +157 -0
- package/dist/agents/skills.js +470 -0
- package/dist/agents/steerable-agent-loop.js +338 -0
- package/dist/agents/steerable-provider-transport.js +48 -0
- package/dist/agents/system-prompt.js +104 -0
- package/dist/agents/tool-display.js +162 -0
- package/dist/agents/tool-images.js +138 -0
- package/dist/agents/tools/browser-tool.js +339 -0
- package/dist/agents/tools/canvas-tool.js +193 -0
- package/dist/agents/tools/common.js +88 -0
- package/dist/agents/tools/cron-tool.js +124 -0
- package/dist/agents/tools/discord-actions-guild.js +186 -0
- package/dist/agents/tools/discord-actions-messaging.js +285 -0
- package/dist/agents/tools/discord-actions-moderation.js +70 -0
- package/dist/agents/tools/discord-actions.js +56 -0
- package/dist/agents/tools/discord-schema.js +199 -0
- package/dist/agents/tools/discord-tool.js +16 -0
- package/dist/agents/tools/gateway-tool.js +46 -0
- package/dist/agents/tools/gateway.js +27 -0
- package/dist/agents/tools/image-tool.js +132 -0
- package/dist/agents/tools/nodes-tool.js +413 -0
- package/dist/agents/tools/nodes-utils.js +92 -0
- package/dist/agents/tools/sessions-helpers.js +88 -0
- package/dist/agents/tools/sessions-history-tool.js +53 -0
- package/dist/agents/tools/sessions-list-tool.js +143 -0
- package/dist/agents/tools/sessions-send-helpers.js +100 -0
- package/dist/agents/tools/sessions-send-tool.js +347 -0
- package/dist/agents/tools/slack-actions.js +129 -0
- package/dist/agents/tools/slack-schema.js +59 -0
- package/dist/agents/tools/slack-tool.js +16 -0
- package/dist/agents/usage.js +39 -0
- package/dist/agents/workspace.js +241 -0
- package/dist/auto-reply/chunk.js +76 -0
- package/dist/auto-reply/envelope.js +38 -0
- package/dist/auto-reply/group-activation.js +20 -0
- package/dist/auto-reply/heartbeat.js +57 -0
- package/dist/auto-reply/model.js +14 -0
- package/dist/auto-reply/reply/abort.js +14 -0
- package/dist/auto-reply/reply/agent-runner.js +371 -0
- package/dist/auto-reply/reply/block-streaming.js +34 -0
- package/dist/auto-reply/reply/body.js +29 -0
- package/dist/auto-reply/reply/commands.js +207 -0
- package/dist/auto-reply/reply/directive-handling.js +361 -0
- package/dist/auto-reply/reply/directives.js +47 -0
- package/dist/auto-reply/reply/followup-runner.js +149 -0
- package/dist/auto-reply/reply/groups.js +91 -0
- package/dist/auto-reply/reply/mentions.js +38 -0
- package/dist/auto-reply/reply/model-selection.js +114 -0
- package/dist/auto-reply/reply/queue.js +399 -0
- package/dist/auto-reply/reply/reply-tags.js +26 -0
- package/dist/auto-reply/reply/session-updates.js +87 -0
- package/dist/auto-reply/reply/session.js +160 -0
- package/dist/auto-reply/reply/typing.js +75 -0
- package/dist/auto-reply/reply.js +535 -0
- package/dist/auto-reply/send-policy.js +28 -0
- package/dist/auto-reply/status.js +158 -0
- package/dist/auto-reply/templating.js +9 -0
- package/dist/auto-reply/thinking.js +49 -0
- package/dist/auto-reply/tokens.js +2 -0
- package/dist/auto-reply/tool-meta.js +74 -0
- package/dist/auto-reply/transcription.js +57 -0
- package/dist/auto-reply/types.js +1 -0
- package/dist/browser/bridge-server.js +37 -0
- package/dist/browser/cdp.js +382 -0
- package/dist/browser/chrome.js +432 -0
- package/dist/browser/client-actions-core.js +67 -0
- package/dist/browser/client-actions-observe.js +24 -0
- package/dist/browser/client-actions-types.js +1 -0
- package/dist/browser/client-actions.js +3 -0
- package/dist/browser/client-fetch.js +43 -0
- package/dist/browser/client.js +105 -0
- package/dist/browser/config.js +140 -0
- package/dist/browser/constants.js +4 -0
- package/dist/browser/profiles-service.js +122 -0
- package/dist/browser/profiles.js +85 -0
- package/dist/browser/pw-ai.js +2 -0
- package/dist/browser/pw-session.js +144 -0
- package/dist/browser/pw-tools-core.js +363 -0
- package/dist/browser/routes/agent.js +535 -0
- package/dist/browser/routes/basic.js +155 -0
- package/dist/browser/routes/index.js +8 -0
- package/dist/browser/routes/tabs.js +105 -0
- package/dist/browser/routes/utils.js +62 -0
- package/dist/browser/screenshot.js +40 -0
- package/dist/browser/server-context.js +377 -0
- package/dist/browser/server.js +81 -0
- package/dist/browser/target-id.js +18 -0
- package/dist/browser/trash.js +21 -0
- package/dist/canvas-host/a2ui/.bundle.hash +1 -0
- package/dist/canvas-host/a2ui/a2ui.bundle.js +17768 -0
- package/dist/canvas-host/a2ui/index.html +246 -0
- package/dist/canvas-host/a2ui.js +187 -0
- package/dist/canvas-host/server.js +382 -0
- package/dist/cli/browser-cli-actions-input.js +459 -0
- package/dist/cli/browser-cli-actions-observe.js +56 -0
- package/dist/cli/browser-cli-examples.js +31 -0
- package/dist/cli/browser-cli-inspect.js +97 -0
- package/dist/cli/browser-cli-manage.js +286 -0
- package/dist/cli/browser-cli-shared.js +1 -0
- package/dist/cli/browser-cli.js +26 -0
- package/dist/cli/canvas-cli.js +416 -0
- package/dist/cli/cron-cli.js +454 -0
- package/dist/cli/deps.js +17 -0
- package/dist/cli/dns-cli.js +180 -0
- package/dist/cli/gateway-cli.js +489 -0
- package/dist/cli/gateway-rpc.js +20 -0
- package/dist/cli/hooks-cli.js +135 -0
- package/dist/cli/models-cli.js +248 -0
- package/dist/cli/nodes-camera.js +57 -0
- package/dist/cli/nodes-canvas.js +26 -0
- package/dist/cli/nodes-cli.js +946 -0
- package/dist/cli/nodes-screen.js +37 -0
- package/dist/cli/parse-duration.js +20 -0
- package/dist/cli/ports.js +97 -0
- package/dist/cli/program.js +406 -0
- package/dist/cli/prompt.js +19 -0
- package/dist/cli/tui-cli.js +35 -0
- package/dist/cli/wait.js +8 -0
- package/dist/commands/agent.js +645 -0
- package/dist/commands/antigravity-oauth.js +327 -0
- package/dist/commands/configure.js +480 -0
- package/dist/commands/doctor.js +484 -0
- package/dist/commands/health.js +108 -0
- package/dist/commands/models/aliases.js +64 -0
- package/dist/commands/models/fallbacks.js +99 -0
- package/dist/commands/models/image-fallbacks.js +99 -0
- package/dist/commands/models/list.js +323 -0
- package/dist/commands/models/scan.js +266 -0
- package/dist/commands/models/set-image.js +23 -0
- package/dist/commands/models/set.js +23 -0
- package/dist/commands/models/shared.js +72 -0
- package/dist/commands/models.js +7 -0
- package/dist/commands/onboard-auth.js +70 -0
- package/dist/commands/onboard-helpers.js +295 -0
- package/dist/commands/onboard-interactive.js +17 -0
- package/dist/commands/onboard-non-interactive.js +202 -0
- package/dist/commands/onboard-providers.js +634 -0
- package/dist/commands/onboard-remote.js +120 -0
- package/dist/commands/onboard-skills.js +148 -0
- package/dist/commands/onboard-types.js +1 -0
- package/dist/commands/onboard.js +12 -0
- package/dist/commands/send.js +124 -0
- package/dist/commands/sessions.js +212 -0
- package/dist/commands/setup.js +58 -0
- package/dist/commands/signal-install.js +135 -0
- package/dist/commands/status.js +207 -0
- package/dist/commands/update.js +16 -0
- package/dist/config/config.js +6 -0
- package/dist/config/defaults.js +61 -0
- package/dist/config/io.js +147 -0
- package/dist/config/legacy-migrate.js +13 -0
- package/dist/config/legacy.js +159 -0
- package/dist/config/paths.js +71 -0
- package/dist/config/schema.js +150 -0
- package/dist/config/sessions.js +282 -0
- package/dist/config/talk.js +31 -0
- package/dist/config/types.js +1 -0
- package/dist/config/validation.js +29 -0
- package/dist/config/zod-schema.js +831 -0
- package/dist/cron/isolated-agent.js +499 -0
- package/dist/cron/run-log.js +72 -0
- package/dist/cron/schedule.js +24 -0
- package/dist/cron/service.js +471 -0
- package/dist/cron/store.js +43 -0
- package/dist/cron/types.js +1 -0
- package/dist/discord/index.js +2 -0
- package/dist/discord/monitor.js +1188 -0
- package/dist/discord/probe.js +54 -0
- package/dist/discord/send.js +577 -0
- package/dist/discord/token.js +8 -0
- package/dist/gateway/auth.js +121 -0
- package/dist/gateway/call.js +94 -0
- package/dist/gateway/chat-attachments.js +41 -0
- package/dist/gateway/client.js +180 -0
- package/dist/gateway/config-reload.js +274 -0
- package/dist/gateway/control-ui.js +184 -0
- package/dist/gateway/hooks-mapping.js +282 -0
- package/dist/gateway/hooks.js +168 -0
- package/dist/gateway/net.js +29 -0
- package/dist/gateway/protocol/index.js +61 -0
- package/dist/gateway/protocol/schema.js +560 -0
- package/dist/gateway/server-bridge-subscriptions.js +93 -0
- package/dist/gateway/server-bridge.js +1013 -0
- package/dist/gateway/server-browser.js +12 -0
- package/dist/gateway/server-chat.js +159 -0
- package/dist/gateway/server-constants.js +8 -0
- package/dist/gateway/server-discovery.js +62 -0
- package/dist/gateway/server-http.js +165 -0
- package/dist/gateway/server-methods/agent-job.js +125 -0
- package/dist/gateway/server-methods/agent.js +250 -0
- package/dist/gateway/server-methods/chat.js +200 -0
- package/dist/gateway/server-methods/config.js +50 -0
- package/dist/gateway/server-methods/connect.js +6 -0
- package/dist/gateway/server-methods/cron.js +83 -0
- package/dist/gateway/server-methods/health.js +28 -0
- package/dist/gateway/server-methods/models.js +16 -0
- package/dist/gateway/server-methods/nodes.js +294 -0
- package/dist/gateway/server-methods/providers.js +217 -0
- package/dist/gateway/server-methods/send.js +166 -0
- package/dist/gateway/server-methods/sessions.js +305 -0
- package/dist/gateway/server-methods/skills.js +83 -0
- package/dist/gateway/server-methods/system.js +118 -0
- package/dist/gateway/server-methods/talk.js +22 -0
- package/dist/gateway/server-methods/types.js +1 -0
- package/dist/gateway/server-methods/voicewake.js +30 -0
- package/dist/gateway/server-methods/web.js +58 -0
- package/dist/gateway/server-methods/wizard.js +100 -0
- package/dist/gateway/server-methods.js +53 -0
- package/dist/gateway/server-providers.js +644 -0
- package/dist/gateway/server-shared.js +1 -0
- package/dist/gateway/server-utils.js +35 -0
- package/dist/gateway/server.js +1437 -0
- package/dist/gateway/session-utils.js +216 -0
- package/dist/gateway/ws-log.js +349 -0
- package/dist/gateway/ws-logging.js +8 -0
- package/dist/globals.js +41 -0
- package/dist/hooks/gmail-ops.js +236 -0
- package/dist/hooks/gmail-setup-utils.js +278 -0
- package/dist/hooks/gmail-watcher.js +175 -0
- package/dist/hooks/gmail.js +177 -0
- package/dist/index.js +50 -0
- package/dist/infra/agent-events.js +46 -0
- package/dist/infra/binaries.js +9 -0
- package/dist/infra/bonjour-discovery.js +163 -0
- package/dist/infra/bonjour.js +200 -0
- package/dist/infra/bridge/server.js +562 -0
- package/dist/infra/canvas-host-url.js +54 -0
- package/dist/infra/env.js +8 -0
- package/dist/infra/errors.js +28 -0
- package/dist/infra/gateway-lock.js +8 -0
- package/dist/infra/heartbeat-events.js +21 -0
- package/dist/infra/heartbeat-runner.js +453 -0
- package/dist/infra/heartbeat-wake.js +61 -0
- package/dist/infra/is-main.js +37 -0
- package/dist/infra/machine-name.js +40 -0
- package/dist/infra/node-pairing.js +211 -0
- package/dist/infra/pam.js +42 -0
- package/dist/infra/path-env.js +92 -0
- package/dist/infra/ports.js +87 -0
- package/dist/infra/provider-summary.js +80 -0
- package/dist/infra/restart.js +29 -0
- package/dist/infra/retry.js +16 -0
- package/dist/infra/runtime-guard.js +59 -0
- package/dist/infra/system-events.js +44 -0
- package/dist/infra/system-presence.js +216 -0
- package/dist/infra/tailnet.js +46 -0
- package/dist/infra/tailscale.js +149 -0
- package/dist/infra/voicewake.js +77 -0
- package/dist/infra/widearea-dns.js +123 -0
- package/dist/infra/ws.js +13 -0
- package/dist/logger.js +52 -0
- package/dist/logging.js +490 -0
- package/dist/macos/gateway-daemon.js +141 -0
- package/dist/macos/relay.js +46 -0
- package/dist/media/constants.js +33 -0
- package/dist/media/host.js +42 -0
- package/dist/media/image-ops.js +121 -0
- package/dist/media/mime.js +115 -0
- package/dist/media/parse.js +81 -0
- package/dist/media/server.js +64 -0
- package/dist/media/store.js +139 -0
- package/dist/process/command-queue.js +97 -0
- package/dist/process/exec.js +75 -0
- package/dist/protocol.schema.json +2918 -0
- package/dist/provider-web.js +8 -0
- package/dist/providers/web/index.js +2 -0
- package/dist/runtime.js +8 -0
- package/dist/telegram/bot.js +394 -0
- package/dist/telegram/download.js +34 -0
- package/dist/telegram/index.js +4 -0
- package/dist/telegram/monitor.js +47 -0
- package/dist/telegram/probe.js +63 -0
- package/dist/telegram/proxy.js +9 -0
- package/dist/telegram/send.js +138 -0
- package/dist/telegram/token.js +30 -0
- package/dist/telegram/webhook-set.js +12 -0
- package/dist/telegram/webhook.js +56 -0
- package/dist/utils.js +133 -0
- package/dist/version.js +18 -0
- package/dist/web/active-listener.js +7 -0
- package/dist/web/auto-reply.js +1203 -0
- package/dist/web/inbound.js +481 -0
- package/dist/web/login-qr.js +204 -0
- package/dist/web/login.js +59 -0
- package/dist/web/media.js +148 -0
- package/dist/web/outbound.js +67 -0
- package/dist/web/qr-image.js +97 -0
- package/dist/web/reconnect.js +60 -0
- package/dist/web/reply-heartbeat-wake.js +61 -0
- package/dist/web/session.js +346 -0
- package/docs/AGENTS.default.md +116 -0
- package/docs/CNAME +1 -0
- package/docs/RELEASING.md +64 -0
- package/docs/_config.yml +51 -0
- package/docs/_layouts/default.html +145 -0
- package/docs/agent-send.md +21 -0
- package/docs/agent.md +104 -0
- package/docs/android/connect.md +131 -0
- package/docs/architecture.md +89 -0
- package/docs/assets/markdown.css +130 -0
- package/docs/assets/pixel-lobster.svg +60 -0
- package/docs/assets/terminal.css +497 -0
- package/docs/assets/theme.js +55 -0
- package/docs/audio.md +50 -0
- package/docs/background-process.md +74 -0
- package/docs/bash.md +32 -0
- package/docs/bonjour.md +159 -0
- package/docs/browser.md +289 -0
- package/docs/camera.md +152 -0
- package/docs/clawd.md +199 -0
- package/docs/clawdbot-mac.md +104 -0
- package/docs/configuration.md +1177 -0
- package/docs/control-api.md +49 -0
- package/docs/control-ui.md +83 -0
- package/docs/cron.md +374 -0
- package/docs/dashboard.md +17 -0
- package/docs/device-models.md +46 -0
- package/docs/discord.md +293 -0
- package/docs/discovery.md +112 -0
- package/docs/docker.md +251 -0
- package/docs/docs.json +86 -0
- package/docs/doctor.md +47 -0
- package/docs/elevated.md +31 -0
- package/docs/faq.md +640 -0
- package/docs/gateway/pairing.md +109 -0
- package/docs/gateway-lock.md +28 -0
- package/docs/gateway.md +174 -0
- package/docs/gmail-pubsub.md +191 -0
- package/docs/grammy.md +27 -0
- package/docs/group-messages.md +71 -0
- package/docs/groups.md +78 -0
- package/docs/health.md +28 -0
- package/docs/heartbeat.md +64 -0
- package/docs/images.md +52 -0
- package/docs/imessage.md +63 -0
- package/docs/index.md +182 -0
- package/docs/ios/connect.md +177 -0
- package/docs/ios/spec.md +236 -0
- package/docs/location-command.md +95 -0
- package/docs/logging.md +99 -0
- package/docs/lore.md +131 -0
- package/docs/mac/bun.md +133 -0
- package/docs/mac/canvas.md +161 -0
- package/docs/mac/child-process.md +72 -0
- package/docs/mac/dev-setup.md +81 -0
- package/docs/mac/health.md +28 -0
- package/docs/mac/icon.md +26 -0
- package/docs/mac/logging.md +51 -0
- package/docs/mac/menu-bar.md +69 -0
- package/docs/mac/peekaboo.md +170 -0
- package/docs/mac/permissions.md +40 -0
- package/docs/mac/release.md +76 -0
- package/docs/mac/remote.md +57 -0
- package/docs/mac/signing.md +41 -0
- package/docs/mac/skills.md +27 -0
- package/docs/mac/voice-overlay.md +52 -0
- package/docs/mac/voicewake.md +56 -0
- package/docs/mac/webchat.md +27 -0
- package/docs/mac/xpc.md +40 -0
- package/docs/models.md +90 -0
- package/docs/nix.md +49 -0
- package/docs/nodes.md +157 -0
- package/docs/onboarding-config-protocol.md +29 -0
- package/docs/onboarding.md +185 -0
- package/docs/presence.md +133 -0
- package/docs/queue.md +78 -0
- package/docs/refactor/browser-control-simplification.md +58 -0
- package/docs/refactor/canvas-a2ui.md +93 -0
- package/docs/refactor/cli-unification.md +64 -0
- package/docs/refactor/gateway-client.md +31 -0
- package/docs/refactor/gateway.md +99 -0
- package/docs/refactor/new-arch.md +171 -0
- package/docs/refactor/tui.md +26 -0
- package/docs/refactor/web-gateway-troubleshooting.md +37 -0
- package/docs/refactor/webagent-session.md +46 -0
- package/docs/remote-gateway-readme.md +148 -0
- package/docs/remote.md +66 -0
- package/docs/research/memory.md +227 -0
- package/docs/rpc.md +35 -0
- package/docs/security.md +168 -0
- package/docs/session-tool.md +119 -0
- package/docs/session.md +84 -0
- package/docs/sessions.md +8 -0
- package/docs/setup.md +118 -0
- package/docs/signal.md +113 -0
- package/docs/skills-config.md +58 -0
- package/docs/skills.md +149 -0
- package/docs/slack.md +158 -0
- package/docs/surface.md +20 -0
- package/docs/tailscale.md +71 -0
- package/docs/talk.md +79 -0
- package/docs/telegram.md +90 -0
- package/docs/templates/AGENTS.md +126 -0
- package/docs/templates/BOOTSTRAP.md +53 -0
- package/docs/templates/IDENTITY.md +17 -0
- package/docs/templates/SOUL.md +41 -0
- package/docs/templates/TOOLS.md +41 -0
- package/docs/templates/USER.md +22 -0
- package/docs/test.md +35 -0
- package/docs/thinking.md +46 -0
- package/docs/tools.md +248 -0
- package/docs/troubleshooting.md +227 -0
- package/docs/tui.md +69 -0
- package/docs/typebox.md +42 -0
- package/docs/voicewake.md +61 -0
- package/docs/web.md +115 -0
- package/docs/webchat.md +34 -0
- package/docs/webhook.md +132 -0
- package/docs/whatsapp-clawd.jpg +0 -0
- package/docs/whatsapp.md +142 -0
- package/docs/wizard.md +158 -0
- package/package.json +178 -0
- package/skills/apple-notes/SKILL.md +50 -0
- package/skills/apple-reminders/SKILL.md +67 -0
- package/skills/bear-notes/SKILL.md +79 -0
- package/skills/bird/SKILL.md +25 -0
- package/skills/blogwatcher/SKILL.md +46 -0
- package/skills/blucli/SKILL.md +27 -0
- package/skills/brave-search/SKILL.md +30 -0
- package/skills/brave-search/scripts/content.mjs +53 -0
- package/skills/brave-search/scripts/search.mjs +79 -0
- package/skills/camsnap/SKILL.md +25 -0
- package/skills/clawdhub/SKILL.md +53 -0
- package/skills/coding-agent/SKILL.md +275 -0
- package/skills/discord/SKILL.md +369 -0
- package/skills/eightctl/SKILL.md +29 -0
- package/skills/food-order/SKILL.md +41 -0
- package/skills/gemini/SKILL.md +23 -0
- package/skills/gifgrep/SKILL.md +47 -0
- package/skills/github/SKILL.md +47 -0
- package/skills/gog/SKILL.md +36 -0
- package/skills/goplaces/SKILL.md +30 -0
- package/skills/imsg/SKILL.md +25 -0
- package/skills/local-places/SERVER_README.md +101 -0
- package/skills/local-places/SKILL.md +91 -0
- package/skills/local-places/pyproject.toml +27 -0
- package/skills/local-places/src/local_places/__init__.py +2 -0
- package/skills/local-places/src/local_places/__pycache__/__init__.cpython-314.pyc +0 -0
- package/skills/local-places/src/local_places/__pycache__/google_places.cpython-314.pyc +0 -0
- package/skills/local-places/src/local_places/__pycache__/main.cpython-314.pyc +0 -0
- package/skills/local-places/src/local_places/__pycache__/schemas.cpython-314.pyc +0 -0
- package/skills/local-places/src/local_places/google_places.py +314 -0
- package/skills/local-places/src/local_places/main.py +65 -0
- package/skills/local-places/src/local_places/schemas.py +107 -0
- package/skills/mcporter/SKILL.md +38 -0
- package/skills/nano-banana-pro/SKILL.md +29 -0
- package/skills/nano-banana-pro/scripts/generate_image.py +167 -0
- package/skills/nano-pdf/SKILL.md +20 -0
- package/skills/notion/SKILL.md +156 -0
- package/skills/obsidian/SKILL.md +55 -0
- package/skills/openai-image-gen/SKILL.md +31 -0
- package/skills/openai-image-gen/scripts/gen.py +173 -0
- package/skills/openai-whisper/SKILL.md +19 -0
- package/skills/openai-whisper-api/SKILL.md +43 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
- package/skills/openhue/SKILL.md +30 -0
- package/skills/oracle/SKILL.md +105 -0
- package/skills/ordercli/SKILL.md +47 -0
- package/skills/peekaboo/SKILL.md +153 -0
- package/skills/qmd/SKILL.md +26 -0
- package/skills/sag/SKILL.md +62 -0
- package/skills/slack/SKILL.md +143 -0
- package/skills/songsee/SKILL.md +29 -0
- package/skills/sonoscli/SKILL.md +26 -0
- package/skills/spotify-player/SKILL.md +34 -0
- package/skills/summarize/SKILL.md +49 -0
- package/skills/things-mac/SKILL.md +61 -0
- package/skills/tmux/SKILL.md +121 -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 +84 -0
- package/skills/video-frames/SKILL.md +29 -0
- package/skills/video-frames/scripts/frame.sh +81 -0
- package/skills/wacli/SKILL.md +42 -0
- package/skills/weather/SKILL.md +49 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Workspace template for TOOLS.md"
|
|
3
|
+
read_when:
|
|
4
|
+
- Bootstrapping a workspace manually
|
|
5
|
+
---
|
|
6
|
+
# TOOLS.md - Local Notes
|
|
7
|
+
|
|
8
|
+
Skills define *how* tools work. This file is for *your* specifics — the stuff that's unique to your setup.
|
|
9
|
+
|
|
10
|
+
## What Goes Here
|
|
11
|
+
|
|
12
|
+
Things like:
|
|
13
|
+
- Camera names and locations
|
|
14
|
+
- SSH hosts and aliases
|
|
15
|
+
- Preferred voices for TTS
|
|
16
|
+
- Speaker/room names
|
|
17
|
+
- Device nicknames
|
|
18
|
+
- Anything environment-specific
|
|
19
|
+
|
|
20
|
+
## Examples
|
|
21
|
+
|
|
22
|
+
```markdown
|
|
23
|
+
### Cameras
|
|
24
|
+
- living-room → Main area, 180° wide angle
|
|
25
|
+
- front-door → Entrance, motion-triggered
|
|
26
|
+
|
|
27
|
+
### SSH
|
|
28
|
+
- home-server → 192.168.1.100, user: admin
|
|
29
|
+
|
|
30
|
+
### TTS
|
|
31
|
+
- Preferred voice: "Nova" (warm, slightly British)
|
|
32
|
+
- Default speaker: Kitchen HomePod
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Why Separate?
|
|
36
|
+
|
|
37
|
+
Skills are shared. Your setup is yours. Keeping them apart means you can update skills without losing your notes, and share skills without leaking your infrastructure.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
Add whatever helps you do your job. This is your cheat sheet.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "User profile record"
|
|
3
|
+
read_when:
|
|
4
|
+
- Bootstrapping a workspace manually
|
|
5
|
+
---
|
|
6
|
+
# USER.md - About Your Human
|
|
7
|
+
|
|
8
|
+
*Learn about the person you're helping. Update this as you go.*
|
|
9
|
+
|
|
10
|
+
- **Name:**
|
|
11
|
+
- **What to call them:**
|
|
12
|
+
- **Pronouns:** *(optional)*
|
|
13
|
+
- **Timezone:**
|
|
14
|
+
- **Notes:**
|
|
15
|
+
|
|
16
|
+
## Context
|
|
17
|
+
|
|
18
|
+
*(What do they care about? What projects are they working on? What annoys them? What makes them laugh? Build this over time.)*
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
The more you know, the better you can help. But remember — you're learning about a person, not building a dossier. Respect the difference.
|
package/docs/test.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "How to run tests locally (vitest) and when to use force/coverage modes"
|
|
3
|
+
read_when:
|
|
4
|
+
- Running or fixing tests
|
|
5
|
+
---
|
|
6
|
+
# Tests
|
|
7
|
+
|
|
8
|
+
- `pnpm test:force`: Kills any lingering gateway process holding the default control port, then runs the full Vitest suite with an isolated gateway port so server tests don’t collide with a running instance. Use this when a prior gateway run left port 18789 occupied.
|
|
9
|
+
- `pnpm test:coverage`: Runs Vitest with V8 coverage. Global thresholds are 70% lines/branches/functions/statements. Coverage excludes integration-heavy entrypoints (CLI wiring, gateway/telegram bridges, webchat static server) to keep the target focused on unit-testable logic.
|
|
10
|
+
- `pnpm test:e2e`: Runs gateway end-to-end smoke tests (multi-instance WS/HTTP/node pairing).
|
|
11
|
+
|
|
12
|
+
## Model latency bench (local keys)
|
|
13
|
+
|
|
14
|
+
Script: `scripts/bench-model.ts`
|
|
15
|
+
|
|
16
|
+
Usage:
|
|
17
|
+
- `source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10`
|
|
18
|
+
- Optional env: `MINIMAX_API_KEY`, `MINIMAX_BASE_URL`, `MINIMAX_MODEL`, `ANTHROPIC_API_KEY`
|
|
19
|
+
- Default prompt: “Reply with a single word: ok. No punctuation or extra text.”
|
|
20
|
+
|
|
21
|
+
Last run (2025-12-31, 20 runs):
|
|
22
|
+
- minimax median 1279ms (min 1114, max 2431)
|
|
23
|
+
- opus median 2454ms (min 1224, max 3170)
|
|
24
|
+
|
|
25
|
+
## Onboarding E2E (Docker)
|
|
26
|
+
|
|
27
|
+
Docker is optional; this is only needed for containerized onboarding smoke tests.
|
|
28
|
+
|
|
29
|
+
Full cold-start flow in a clean Linux container:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
scripts/e2e/onboard-docker.sh
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
This script drives the interactive wizard via a pseudo-tty, verifies config/workspace/session files, then starts the gateway and runs `clawdbot health`.
|
package/docs/thinking.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Directive syntax for /think + /verbose and how they affect model reasoning"
|
|
3
|
+
read_when:
|
|
4
|
+
- Adjusting thinking or verbose directive parsing or defaults
|
|
5
|
+
---
|
|
6
|
+
# Thinking Levels (/think directives)
|
|
7
|
+
|
|
8
|
+
## What it does
|
|
9
|
+
- Inline directive in any inbound body: `/t <level>`, `/think:<level>`, or `/thinking <level>`.
|
|
10
|
+
- Levels (aliases): `off | minimal | low | medium | high`
|
|
11
|
+
- minimal → “think”
|
|
12
|
+
- low → “think hard”
|
|
13
|
+
- medium → “think harder”
|
|
14
|
+
- high → “ultrathink” (max budget)
|
|
15
|
+
- `highest`, `max` map to `high`.
|
|
16
|
+
|
|
17
|
+
## Resolution order
|
|
18
|
+
1. Inline directive on the message (applies only to that message).
|
|
19
|
+
2. Session override (set by sending a directive-only message).
|
|
20
|
+
3. Global default (`agent.thinkingDefault` in config).
|
|
21
|
+
4. Fallback: low for reasoning-capable models; off otherwise.
|
|
22
|
+
|
|
23
|
+
## Setting a session default
|
|
24
|
+
- Send a message that is **only** the directive (whitespace allowed), e.g. `/think:medium` or `/t high`.
|
|
25
|
+
- That sticks for the current session (per-sender by default); cleared by `/think:off` or session idle reset.
|
|
26
|
+
- Confirmation reply is sent (`Thinking level set to high.` / `Thinking disabled.`). If the level is invalid (e.g. `/thinking big`), the command is rejected with a hint and the session state is left unchanged.
|
|
27
|
+
|
|
28
|
+
## Application by agent
|
|
29
|
+
- **Embedded Pi**: the resolved level is passed to the in-process Pi agent runtime.
|
|
30
|
+
|
|
31
|
+
## Verbose directives (/verbose or /v)
|
|
32
|
+
- Levels: `on|full` or `off` (default).
|
|
33
|
+
- Directive-only message toggles session verbose and replies `Verbose logging enabled.` / `Verbose logging disabled.`; invalid levels return a hint without changing state.
|
|
34
|
+
- Inline directive affects only that message; session/global defaults apply otherwise.
|
|
35
|
+
- When verbose is on, agents that emit structured tool results (Pi, other JSON agents) send each tool result back as its own metadata-only message, prefixed with `<emoji> <tool-name>: <arg>` when available (path/command); the tool output itself is not forwarded. These tool summaries are sent as soon as each tool finishes (separate bubbles), not as streaming deltas. If you toggle `/verbose on|off` while a run is in-flight, subsequent tool bubbles honor the new setting.
|
|
36
|
+
|
|
37
|
+
## Related
|
|
38
|
+
- Elevated mode docs live in `docs/elevated.md`.
|
|
39
|
+
|
|
40
|
+
## Heartbeats
|
|
41
|
+
- Heartbeat probe body is `HEARTBEAT`. Inline directives in a heartbeat message apply as usual (but avoid changing session defaults from heartbeats).
|
|
42
|
+
|
|
43
|
+
## Web chat UI
|
|
44
|
+
- The web chat thinking selector mirrors the session's stored level from the inbound session store/config when the page loads.
|
|
45
|
+
- Picking another level applies only to the next message (`thinkingOnce`); after sending, the selector snaps back to the stored session level.
|
|
46
|
+
- To change the session default, send a `/think:<level>` directive (as before); the selector will reflect it after the next reload.
|
package/docs/tools.md
ADDED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Agent tool surface for Clawdbot (browser, canvas, nodes, cron) replacing clawdbot-* skills"
|
|
3
|
+
read_when:
|
|
4
|
+
- Adding or modifying agent tools
|
|
5
|
+
- Retiring or changing clawdbot-* skills
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Tools (Clawdbot)
|
|
9
|
+
|
|
10
|
+
Clawdbot exposes **first-class agent tools** for browser, canvas, nodes, and cron.
|
|
11
|
+
These replace the old `clawdbot-*` skills: the tools are typed, no shelling,
|
|
12
|
+
and the agent should rely on them directly.
|
|
13
|
+
|
|
14
|
+
## Tool inventory
|
|
15
|
+
|
|
16
|
+
### `bash`
|
|
17
|
+
Run shell commands in the workspace.
|
|
18
|
+
|
|
19
|
+
Core parameters:
|
|
20
|
+
- `command` (required)
|
|
21
|
+
- `yieldMs` (auto-background after timeout, default 10000)
|
|
22
|
+
- `background` (immediate background)
|
|
23
|
+
- `timeout` (seconds; kills the process if exceeded, default 1800)
|
|
24
|
+
- `elevated` (bool; run on host if elevated mode is enabled/allowed)
|
|
25
|
+
- Need a real TTY? Use the tmux skill.
|
|
26
|
+
|
|
27
|
+
Notes:
|
|
28
|
+
- Returns `status: "running"` with a `sessionId` when backgrounded.
|
|
29
|
+
- Use `process` to poll/log/write/kill/clear background sessions.
|
|
30
|
+
|
|
31
|
+
### `process`
|
|
32
|
+
Manage background bash sessions.
|
|
33
|
+
|
|
34
|
+
Core actions:
|
|
35
|
+
- `list`, `poll`, `log`, `write`, `kill`, `clear`, `remove`
|
|
36
|
+
|
|
37
|
+
Notes:
|
|
38
|
+
- `poll` returns new output and exit status when complete.
|
|
39
|
+
- `log` supports line-based `offset`/`limit` (omit `offset` to grab the last N lines).
|
|
40
|
+
|
|
41
|
+
### `browser`
|
|
42
|
+
Control the dedicated clawd browser.
|
|
43
|
+
|
|
44
|
+
Core actions:
|
|
45
|
+
- `status`, `start`, `stop`, `tabs`, `open`, `focus`, `close`
|
|
46
|
+
- `snapshot` (aria/ai)
|
|
47
|
+
- `screenshot` (returns image block + `MEDIA:<path>`)
|
|
48
|
+
- `act` (UI actions: click/type/press/hover/drag/select/fill/resize/wait/evaluate)
|
|
49
|
+
- `navigate`, `console`, `pdf`, `upload`, `dialog`
|
|
50
|
+
|
|
51
|
+
Profile management:
|
|
52
|
+
- `profiles` — list all browser profiles with status
|
|
53
|
+
- `create-profile` — create new profile with auto-allocated port (or `cdpUrl`)
|
|
54
|
+
- `delete-profile` — stop browser, delete user data, remove from config (local only)
|
|
55
|
+
- `reset-profile` — kill orphan process on profile's port (local only)
|
|
56
|
+
|
|
57
|
+
Common parameters:
|
|
58
|
+
- `controlUrl` (defaults from config)
|
|
59
|
+
- `profile` (optional; defaults to `browser.defaultProfile`)
|
|
60
|
+
Notes:
|
|
61
|
+
- Requires `browser.enabled=true` in `~/.clawdbot/clawdbot.json`.
|
|
62
|
+
- Uses `browser.controlUrl` unless `controlUrl` is passed explicitly.
|
|
63
|
+
- All actions accept optional `profile` parameter for multi-instance support.
|
|
64
|
+
- When `profile` is omitted, uses `browser.defaultProfile` (defaults to "clawd").
|
|
65
|
+
- Profile names: lowercase alphanumeric + hyphens only (max 64 chars).
|
|
66
|
+
- Port range: 18800-18899 (~100 profiles max).
|
|
67
|
+
- Remote profiles are attach-only (no start/stop/reset).
|
|
68
|
+
- `snapshot` defaults to `ai`; use `aria` for the accessibility tree.
|
|
69
|
+
- `act` requires `ref` from `snapshot --format ai`; use `evaluate` for rare CSS selector needs.
|
|
70
|
+
- Avoid `act` → `wait` by default; use it only in exceptional cases (no reliable UI state to wait on).
|
|
71
|
+
- `upload` can optionally pass a `ref` to auto-click after arming.
|
|
72
|
+
- `upload` also supports `inputRef` (aria ref) or `element` (CSS selector) to set `<input type="file">` directly.
|
|
73
|
+
|
|
74
|
+
### `canvas`
|
|
75
|
+
Drive the node Canvas (present, eval, snapshot, A2UI).
|
|
76
|
+
|
|
77
|
+
Core actions:
|
|
78
|
+
- `present`, `hide`, `navigate`, `eval`
|
|
79
|
+
- `snapshot` (returns image block + `MEDIA:<path>`)
|
|
80
|
+
- `a2ui_push`, `a2ui_reset`
|
|
81
|
+
|
|
82
|
+
Notes:
|
|
83
|
+
- Uses gateway `node.invoke` under the hood.
|
|
84
|
+
- If no `node` is provided, the tool picks a default (single connected node or local mac node).
|
|
85
|
+
- A2UI is v0.8 only (no `createSurface`); the CLI rejects v0.9 JSONL with line errors.
|
|
86
|
+
- Quick smoke: `clawdbot canvas a2ui push --text "Hello from A2UI"`.
|
|
87
|
+
|
|
88
|
+
### `nodes`
|
|
89
|
+
Discover and target paired nodes; send notifications; capture camera/screen.
|
|
90
|
+
|
|
91
|
+
Core actions:
|
|
92
|
+
- `status`, `describe`
|
|
93
|
+
- `pending`, `approve`, `reject` (pairing)
|
|
94
|
+
- `notify` (macOS `system.notify`)
|
|
95
|
+
- `camera_snap`, `camera_clip`, `screen_record`
|
|
96
|
+
- `location_get`
|
|
97
|
+
|
|
98
|
+
Notes:
|
|
99
|
+
- Camera/screen commands require the node app to be foregrounded.
|
|
100
|
+
- Images return image blocks + `MEDIA:<path>`.
|
|
101
|
+
- Videos return `FILE:<path>` (mp4).
|
|
102
|
+
- Location returns a JSON payload (lat/lon/accuracy/timestamp).
|
|
103
|
+
|
|
104
|
+
### `image`
|
|
105
|
+
Analyze an image with the configured image model.
|
|
106
|
+
|
|
107
|
+
Core parameters:
|
|
108
|
+
- `image` (required path or URL)
|
|
109
|
+
- `prompt` (optional; defaults to "Describe the image.")
|
|
110
|
+
- `model` (optional override)
|
|
111
|
+
- `maxBytesMb` (optional size cap)
|
|
112
|
+
|
|
113
|
+
Notes:
|
|
114
|
+
- Only available when `agent.imageModel` or `agent.imageModelFallbacks` is set.
|
|
115
|
+
- Uses the image model directly (independent of the main chat model).
|
|
116
|
+
|
|
117
|
+
### `cron`
|
|
118
|
+
Manage Gateway cron jobs and wakeups.
|
|
119
|
+
|
|
120
|
+
Core actions:
|
|
121
|
+
- `status`, `list`
|
|
122
|
+
- `add`, `update`, `remove`, `run`, `runs`
|
|
123
|
+
- `wake` (enqueue system event + optional immediate heartbeat)
|
|
124
|
+
|
|
125
|
+
Notes:
|
|
126
|
+
- `add` expects a full cron job object (same schema as `cron.add` RPC).
|
|
127
|
+
- `update` uses `{ jobId, patch }`.
|
|
128
|
+
|
|
129
|
+
### `gateway`
|
|
130
|
+
Restart the running Gateway process (in-place).
|
|
131
|
+
|
|
132
|
+
Core actions:
|
|
133
|
+
- `restart` (sends `SIGUSR1` to the current process; `clawdbot gateway`/`gateway-daemon` restart in-place)
|
|
134
|
+
|
|
135
|
+
Notes:
|
|
136
|
+
- Use `delayMs` (defaults to 2000) to avoid interrupting an in-flight reply.
|
|
137
|
+
|
|
138
|
+
### `sessions_list` / `sessions_history` / `sessions_send`
|
|
139
|
+
List sessions, inspect transcript history, or send to another session.
|
|
140
|
+
|
|
141
|
+
Core parameters:
|
|
142
|
+
- `sessions_list`: `kinds?`, `limit?`, `activeMinutes?`, `messageLimit?` (0 = none)
|
|
143
|
+
- `sessions_history`: `sessionKey`, `limit?`, `includeTools?`
|
|
144
|
+
- `sessions_send`: `sessionKey`, `message`, `timeoutSeconds?` (0 = fire-and-forget)
|
|
145
|
+
|
|
146
|
+
Notes:
|
|
147
|
+
- `main` is the canonical direct-chat key; global/unknown are hidden.
|
|
148
|
+
- `messageLimit > 0` fetches last N messages per session (tool messages filtered).
|
|
149
|
+
- `sessions_send` waits for final completion when `timeoutSeconds > 0`.
|
|
150
|
+
- `sessions_send` runs a reply‑back ping‑pong (reply `REPLY_SKIP` to stop; max turns via `session.agentToAgent.maxPingPongTurns`, 0–5).
|
|
151
|
+
- After the ping‑pong, the target agent runs an **announce step**; reply `ANNOUNCE_SKIP` to suppress the announcement.
|
|
152
|
+
|
|
153
|
+
### `discord`
|
|
154
|
+
Send Discord reactions, stickers, or polls.
|
|
155
|
+
|
|
156
|
+
Core actions:
|
|
157
|
+
- `react` (`channelId`, `messageId`, `emoji`)
|
|
158
|
+
- `reactions` (`channelId`, `messageId`, optional `limit`)
|
|
159
|
+
- `sticker` (`to`, `stickerIds`, optional `content`)
|
|
160
|
+
- `poll` (`to`, `question`, `answers`, optional `allowMultiselect`, `durationHours`, `content`)
|
|
161
|
+
- `permissions` (`channelId`)
|
|
162
|
+
- `readMessages` (`channelId`, optional `limit`/`before`/`after`/`around`)
|
|
163
|
+
- `sendMessage` (`to`, `content`, optional `mediaUrl`, `replyTo`)
|
|
164
|
+
- `editMessage` (`channelId`, `messageId`, `content`)
|
|
165
|
+
- `deleteMessage` (`channelId`, `messageId`)
|
|
166
|
+
- `threadCreate` (`channelId`, `name`, optional `messageId`, `autoArchiveMinutes`)
|
|
167
|
+
- `threadList` (`guildId`, optional `channelId`, `includeArchived`, `before`, `limit`)
|
|
168
|
+
- `threadReply` (`channelId`, `content`, optional `mediaUrl`, `replyTo`)
|
|
169
|
+
- `pinMessage`/`unpinMessage` (`channelId`, `messageId`)
|
|
170
|
+
- `listPins` (`channelId`)
|
|
171
|
+
- `searchMessages` (`guildId`, `content`, optional `channelId`/`channelIds`, `authorId`/`authorIds`, `limit`)
|
|
172
|
+
- `memberInfo` (`guildId`, `userId`)
|
|
173
|
+
- `roleInfo` (`guildId`)
|
|
174
|
+
- `emojiList` (`guildId`)
|
|
175
|
+
- `roleAdd`/`roleRemove` (`guildId`, `userId`, `roleId`)
|
|
176
|
+
- `channelInfo` (`channelId`)
|
|
177
|
+
- `channelList` (`guildId`)
|
|
178
|
+
- `voiceStatus` (`guildId`, `userId`)
|
|
179
|
+
- `eventList` (`guildId`)
|
|
180
|
+
- `eventCreate` (`guildId`, `name`, `startTime`, optional `endTime`, `description`, `channelId`, `entityType`, `location`)
|
|
181
|
+
- `timeout` (`guildId`, `userId`, optional `durationMinutes`, `until`, `reason`)
|
|
182
|
+
- `kick` (`guildId`, `userId`, optional `reason`)
|
|
183
|
+
- `ban` (`guildId`, `userId`, optional `reason`, `deleteMessageDays`)
|
|
184
|
+
|
|
185
|
+
Notes:
|
|
186
|
+
- `to` accepts `channel:<id>` or `user:<id>`.
|
|
187
|
+
- Polls require 2–10 answers and default to 24 hours.
|
|
188
|
+
- `reactions` returns per-emoji user lists (limited to 100 per reaction).
|
|
189
|
+
- `discord.actions.*` gates Discord tool actions; `roles` + `moderation` default to `false`.
|
|
190
|
+
- `searchMessages` follows the Discord preview spec (limit max 25, channel/author filters accept arrays).
|
|
191
|
+
- The tool is only exposed when the current surface is Discord.
|
|
192
|
+
|
|
193
|
+
## Parameters (common)
|
|
194
|
+
|
|
195
|
+
Gateway-backed tools (`canvas`, `nodes`, `cron`):
|
|
196
|
+
- `gatewayUrl` (default `ws://127.0.0.1:18789`)
|
|
197
|
+
- `gatewayToken` (if auth enabled)
|
|
198
|
+
- `timeoutMs`
|
|
199
|
+
|
|
200
|
+
Browser tool:
|
|
201
|
+
- `controlUrl` (defaults from config)
|
|
202
|
+
|
|
203
|
+
## Recommended agent flows
|
|
204
|
+
|
|
205
|
+
Browser automation:
|
|
206
|
+
1) `browser` → `status` / `start`
|
|
207
|
+
2) `snapshot` (ai or aria)
|
|
208
|
+
3) `act` (click/type/press)
|
|
209
|
+
4) `screenshot` if you need visual confirmation
|
|
210
|
+
|
|
211
|
+
Canvas render:
|
|
212
|
+
1) `canvas` → `present`
|
|
213
|
+
2) `a2ui_push` (optional)
|
|
214
|
+
3) `snapshot`
|
|
215
|
+
|
|
216
|
+
Node targeting:
|
|
217
|
+
1) `nodes` → `status`
|
|
218
|
+
2) `describe` on the chosen node
|
|
219
|
+
3) `notify` / `camera_snap` / `screen_record`
|
|
220
|
+
|
|
221
|
+
## Safety
|
|
222
|
+
|
|
223
|
+
- Avoid `system.run` (not exposed as a tool).
|
|
224
|
+
- Respect user consent for camera/screen capture.
|
|
225
|
+
- Use `status/describe` to ensure permissions before invoking media commands.
|
|
226
|
+
|
|
227
|
+
## How the model sees tools (pi-mono internals)
|
|
228
|
+
|
|
229
|
+
Tools are exposed to the model in **two parallel channels**:
|
|
230
|
+
|
|
231
|
+
1) **System prompt text**: a human-readable list + guidelines.
|
|
232
|
+
2) **Provider tool schema**: the actual function/tool declarations sent to the model API.
|
|
233
|
+
|
|
234
|
+
In pi-mono:
|
|
235
|
+
- System prompt builder: `packages/coding-agent/src/core/system-prompt.ts`
|
|
236
|
+
- Builds the `Available tools:` list from `toolDescriptions`.
|
|
237
|
+
- Appends skills and project context.
|
|
238
|
+
- Tool schemas passed to providers:
|
|
239
|
+
- OpenAI: `packages/ai/src/providers/openai-responses.ts` (`convertTools`)
|
|
240
|
+
- Anthropic: `packages/ai/src/providers/anthropic.ts` (`convertTools`)
|
|
241
|
+
- Gemini: `packages/ai/src/providers/google-shared.ts` (`convertTools`)
|
|
242
|
+
- Tool execution loop:
|
|
243
|
+
- Agent loop: `packages/ai/src/agent/agent-loop.ts`
|
|
244
|
+
- Validates tool arguments and executes tools, then appends `toolResult` messages.
|
|
245
|
+
|
|
246
|
+
In Clawdbot:
|
|
247
|
+
- System prompt append: `src/agents/system-prompt.ts`
|
|
248
|
+
- Tool list injected via `createClawdbotCodingTools()` in `src/agents/pi-tools.ts`
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Quick troubleshooting guide for common Clawdbot failures"
|
|
3
|
+
read_when:
|
|
4
|
+
- Investigating runtime issues or failures
|
|
5
|
+
---
|
|
6
|
+
# Troubleshooting 🔧
|
|
7
|
+
|
|
8
|
+
When your CLAWDBOT misbehaves, here's how to fix it.
|
|
9
|
+
|
|
10
|
+
## Common Issues
|
|
11
|
+
|
|
12
|
+
### "Agent was aborted"
|
|
13
|
+
|
|
14
|
+
The agent was interrupted mid-response.
|
|
15
|
+
|
|
16
|
+
**Causes:**
|
|
17
|
+
- User sent `stop`, `abort`, `esc`, or `exit`
|
|
18
|
+
- Timeout exceeded
|
|
19
|
+
- Process crashed
|
|
20
|
+
|
|
21
|
+
**Fix:** Just send another message. The session continues.
|
|
22
|
+
|
|
23
|
+
### Messages Not Triggering
|
|
24
|
+
|
|
25
|
+
**Check 1:** Is the sender in `whatsapp.allowFrom`?
|
|
26
|
+
```bash
|
|
27
|
+
cat ~/.clawdbot/clawdbot.json | jq '.whatsapp.allowFrom'
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Check 2:** For group chats, is mention required?
|
|
31
|
+
```bash
|
|
32
|
+
# The message must match mentionPatterns or explicit mentions; defaults live in whatsapp.groups
|
|
33
|
+
cat ~/.clawdbot/clawdbot.json | jq '.routing.groupChat, .whatsapp.groups'
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Check 3:** Check the logs
|
|
37
|
+
```bash
|
|
38
|
+
tail -f "$(ls -t /tmp/clawdbot/clawdbot-*.log | head -1)" | grep "blocked\\|skip\\|unauthorized"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Image + Mention Not Working
|
|
42
|
+
|
|
43
|
+
Known issue: When you send an image with ONLY a mention (no other text), WhatsApp sometimes doesn't include the mention metadata.
|
|
44
|
+
|
|
45
|
+
**Workaround:** Add some text with the mention:
|
|
46
|
+
- ❌ `@clawd` + image
|
|
47
|
+
- ✅ `@clawd check this` + image
|
|
48
|
+
|
|
49
|
+
### Session Not Resuming
|
|
50
|
+
|
|
51
|
+
**Check 1:** Is the session file there?
|
|
52
|
+
```bash
|
|
53
|
+
ls -la ~/.clawdbot/sessions/
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Check 2:** Is `idleMinutes` too short?
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"session": {
|
|
60
|
+
"idleMinutes": 10080 // 7 days
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Check 3:** Did someone send `/new`, `/reset`, or a reset trigger?
|
|
66
|
+
|
|
67
|
+
### Agent Timing Out
|
|
68
|
+
|
|
69
|
+
Default timeout is 30 minutes. For long tasks:
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"reply": {
|
|
74
|
+
"timeoutSeconds": 3600 // 1 hour
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Or use the `process` tool to background long commands.
|
|
80
|
+
|
|
81
|
+
### WhatsApp Disconnected
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# Check local status (creds, sessions, queued events)
|
|
85
|
+
clawdbot status
|
|
86
|
+
# Probe the running gateway + providers (WA connect + Telegram + Discord APIs)
|
|
87
|
+
clawdbot status --deep
|
|
88
|
+
|
|
89
|
+
# View recent connection events
|
|
90
|
+
tail -100 /tmp/clawdbot/clawdbot-*.log | grep "connection\\|disconnect\\|logout"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Fix:** Usually reconnects automatically once the Gateway is running. If you’re stuck, restart the Gateway process (however you supervise it), or run it manually with verbose output:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
clawdbot gateway --verbose
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
If you’re logged out / unlinked:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
clawdbot logout
|
|
103
|
+
rm -rf ~/.clawdbot/credentials # if logout can't cleanly remove everything
|
|
104
|
+
clawdbot login --verbose # re-scan QR
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Media Send Failing
|
|
108
|
+
|
|
109
|
+
**Check 1:** Is the file path valid?
|
|
110
|
+
```bash
|
|
111
|
+
ls -la /path/to/your/image.jpg
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Check 2:** Is it too large?
|
|
115
|
+
- Images: max 6MB
|
|
116
|
+
- Audio/Video: max 16MB
|
|
117
|
+
- Documents: max 100MB
|
|
118
|
+
|
|
119
|
+
**Check 3:** Check media logs
|
|
120
|
+
```bash
|
|
121
|
+
grep "media\\|fetch\\|download" "$(ls -t /tmp/clawdbot/clawdbot-*.log | head -1)" | tail -20
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### High Memory Usage
|
|
125
|
+
|
|
126
|
+
CLAWDBOT keeps conversation history in memory.
|
|
127
|
+
|
|
128
|
+
**Fix:** Restart periodically or set session limits:
|
|
129
|
+
```json
|
|
130
|
+
{
|
|
131
|
+
"session": {
|
|
132
|
+
"historyLimit": 100 // Max messages to keep
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## macOS Specific Issues
|
|
138
|
+
|
|
139
|
+
### App Crashes when Granting Permissions (Speech/Mic)
|
|
140
|
+
|
|
141
|
+
If the app disappears or shows "Abort trap 6" when you click "Allow" on a privacy prompt:
|
|
142
|
+
|
|
143
|
+
**Fix 1: Reset TCC Cache**
|
|
144
|
+
```bash
|
|
145
|
+
tccutil reset All com.clawdbot.mac.debug
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Fix 2: Force New Bundle ID**
|
|
149
|
+
If resetting doesn't work, change the `BUNDLE_ID` in `scripts/package-mac-app.sh` (e.g., add a `.test` suffix) and rebuild. This forces macOS to treat it as a new app.
|
|
150
|
+
|
|
151
|
+
### Gateway stuck on "Starting..."
|
|
152
|
+
|
|
153
|
+
The app connects to a local gateway on port `18789`. If it stays stuck:
|
|
154
|
+
|
|
155
|
+
**Fix 1: Kill Zombie Processes**
|
|
156
|
+
Another process might be holding the port.
|
|
157
|
+
```bash
|
|
158
|
+
lsof -nP -i :18789
|
|
159
|
+
# Kill any matching PIDs
|
|
160
|
+
kill -9 <PID>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Fix 2: Check embedded gateway**
|
|
164
|
+
Ensure the gateway relay was properly bundled. Run `./scripts/package-mac-app.sh` and ensure `bun` is installed.
|
|
165
|
+
|
|
166
|
+
## Debug Mode
|
|
167
|
+
|
|
168
|
+
Get verbose logging:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# Turn on trace logging in config:
|
|
172
|
+
# ~/.clawdbot/clawdbot.json -> { logging: { level: "trace" } }
|
|
173
|
+
#
|
|
174
|
+
# Then run verbose commands to mirror debug output to stdout:
|
|
175
|
+
clawdbot gateway --verbose
|
|
176
|
+
clawdbot login --verbose
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Log Locations
|
|
180
|
+
|
|
181
|
+
| Log | Location |
|
|
182
|
+
|-----|----------|
|
|
183
|
+
| Main logs (default) | `/tmp/clawdbot/clawdbot-YYYY-MM-DD.log` |
|
|
184
|
+
| Session files | `~/.clawdbot/sessions/` |
|
|
185
|
+
| Media cache | `~/.clawdbot/media/` |
|
|
186
|
+
| Credentials | `~/.clawdbot/credentials/` |
|
|
187
|
+
|
|
188
|
+
## Health Check
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# Is the gateway reachable?
|
|
192
|
+
clawdbot health --json
|
|
193
|
+
|
|
194
|
+
# Is something listening on the default port?
|
|
195
|
+
lsof -nP -iTCP:18789 -sTCP:LISTEN
|
|
196
|
+
|
|
197
|
+
# Recent activity
|
|
198
|
+
tail -20 /tmp/clawdbot/clawdbot-*.log
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Reset Everything
|
|
202
|
+
|
|
203
|
+
Nuclear option:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
rm -rf ~/.clawdbot
|
|
207
|
+
clawdbot login # re-pair WhatsApp
|
|
208
|
+
clawdbot gateway # start the Gateway again
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
⚠️ This loses all sessions and requires re-pairing WhatsApp.
|
|
212
|
+
|
|
213
|
+
## Getting Help
|
|
214
|
+
|
|
215
|
+
1. Check logs first: `/tmp/clawdbot/` (default: `clawdbot-YYYY-MM-DD.log`, or your configured `logging.file`)
|
|
216
|
+
2. Search existing issues on GitHub
|
|
217
|
+
3. Open a new issue with:
|
|
218
|
+
- CLAWDBOT version
|
|
219
|
+
- Relevant log snippets
|
|
220
|
+
- Steps to reproduce
|
|
221
|
+
- Your config (redact secrets!)
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
*"Have you tried turning it off and on again?"* — Every IT person ever
|
|
226
|
+
|
|
227
|
+
🦞🔧
|
package/docs/tui.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Terminal UI (TUI) for Clawdbot via the Gateway"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want a terminal UI that connects to the Gateway from any machine
|
|
5
|
+
- You are debugging the TUI client or Gateway chat stream
|
|
6
|
+
---
|
|
7
|
+
# TUI (Gateway chat client)
|
|
8
|
+
|
|
9
|
+
Updated: 2026-01-03
|
|
10
|
+
|
|
11
|
+
## What it is
|
|
12
|
+
- A terminal UI that connects to the Gateway WebSocket and speaks the same chat APIs as WebChat.
|
|
13
|
+
- Uses Gateway agent events for tool cards while streaming responses.
|
|
14
|
+
- Works locally (loopback) or remotely (Tailscale/SSH tunnel) without running a separate agent process.
|
|
15
|
+
|
|
16
|
+
## Run
|
|
17
|
+
```bash
|
|
18
|
+
clawdbot tui
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Remote
|
|
22
|
+
```bash
|
|
23
|
+
clawdbot tui --url ws://127.0.0.1:18789 --token <gateway-token>
|
|
24
|
+
```
|
|
25
|
+
Use SSH tunneling or Tailscale to reach the Gateway WS.
|
|
26
|
+
|
|
27
|
+
## Options
|
|
28
|
+
- `--url <url>`: Gateway WebSocket URL (defaults to config `gateway.remote.url` or `ws://127.0.0.1:18789`).
|
|
29
|
+
- `--token <token>`: Gateway token (if required).
|
|
30
|
+
- `--password <password>`: Gateway password (if required).
|
|
31
|
+
- `--session <key>`: Session key (default: `main`, or `global` when scope is global).
|
|
32
|
+
- `--deliver`: Deliver assistant replies to the provider (default off).
|
|
33
|
+
- `--thinking <level>`: Override thinking level for sends.
|
|
34
|
+
- `--timeout-ms <ms>`: Agent timeout in ms (default 30000).
|
|
35
|
+
- `--history-limit <n>`: History entries to load (default 200).
|
|
36
|
+
|
|
37
|
+
## Controls
|
|
38
|
+
- Enter: send message
|
|
39
|
+
- Esc: abort active run
|
|
40
|
+
- Ctrl+C: clear input (press twice to exit)
|
|
41
|
+
- Ctrl+D: exit
|
|
42
|
+
- Ctrl+L: model picker
|
|
43
|
+
- Ctrl+P: session picker
|
|
44
|
+
- Ctrl+O: toggle tool output expansion
|
|
45
|
+
- Ctrl+T: toggle thinking visibility
|
|
46
|
+
|
|
47
|
+
## Slash commands
|
|
48
|
+
- `/help`
|
|
49
|
+
- `/status`
|
|
50
|
+
- `/session <key>` (or `/sessions`)
|
|
51
|
+
- `/model <provider/model>` (or `/models`)
|
|
52
|
+
- `/think <off|minimal|low|medium|high>`
|
|
53
|
+
- `/verbose <on|off>`
|
|
54
|
+
- `/elevated <on|off>`
|
|
55
|
+
- `/activation <mention|always>`
|
|
56
|
+
- `/deliver <on|off>`
|
|
57
|
+
- `/new` or `/reset`
|
|
58
|
+
- `/abort`
|
|
59
|
+
- `/settings`
|
|
60
|
+
- `/exit`
|
|
61
|
+
|
|
62
|
+
## Notes
|
|
63
|
+
- The TUI shows Gateway chat deltas (`event: chat`) and agent tool events.
|
|
64
|
+
- It registers as a Gateway client with `mode: "tui"` for presence and debugging.
|
|
65
|
+
|
|
66
|
+
## Files
|
|
67
|
+
- CLI: `src/cli/tui-cli.ts`
|
|
68
|
+
- Runner: `src/tui/tui.ts`
|
|
69
|
+
- Gateway client: `src/tui/gateway-chat.ts`
|