clawdbot 2026.1.4-1
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 +120 -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/control-ui/assets/index-BFID3yAA.css +1 -0
- package/dist/control-ui/assets/index-CE_axlTS.js +2235 -0
- package/dist/control-ui/assets/index-CE_axlTS.js.map +1 -0
- package/dist/control-ui/index.html +15 -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/daemon/constants.js +10 -0
- package/dist/daemon/launchd.js +276 -0
- package/dist/daemon/legacy.js +63 -0
- package/dist/daemon/program-args.js +76 -0
- package/dist/daemon/schtasks.js +257 -0
- package/dist/daemon/service.js +60 -0
- package/dist/daemon/systemd.js +266 -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/imessage/client.js +165 -0
- package/dist/imessage/index.js +3 -0
- package/dist/imessage/monitor.js +272 -0
- package/dist/imessage/probe.js +26 -0
- package/dist/imessage/send.js +83 -0
- package/dist/imessage/targets.js +176 -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/sessions/send-policy.js +68 -0
- package/dist/signal/client.js +134 -0
- package/dist/signal/daemon.js +69 -0
- package/dist/signal/index.js +3 -0
- package/dist/signal/monitor.js +336 -0
- package/dist/signal/probe.js +46 -0
- package/dist/signal/send.js +91 -0
- package/dist/slack/actions.js +97 -0
- package/dist/slack/index.js +5 -0
- package/dist/slack/monitor.js +1029 -0
- package/dist/slack/probe.js +47 -0
- package/dist/slack/send.js +131 -0
- package/dist/slack/token.js +10 -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/tui/commands.js +74 -0
- package/dist/tui/components/assistant-message.js +16 -0
- package/dist/tui/components/chat-log.js +92 -0
- package/dist/tui/components/custom-editor.js +53 -0
- package/dist/tui/components/selectors.js +8 -0
- package/dist/tui/components/tool-execution.js +111 -0
- package/dist/tui/components/user-message.js +17 -0
- package/dist/tui/gateway-chat.js +140 -0
- package/dist/tui/layout.js +41 -0
- package/dist/tui/message-list.js +57 -0
- package/dist/tui/theme/theme.js +80 -0
- package/dist/tui/theme.js +25 -0
- package/dist/tui/tui.js +708 -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/dist/wizard/clack-prompter.js +56 -0
- package/dist/wizard/onboarding.js +452 -0
- package/dist/wizard/prompts.js +6 -0
- package/dist/wizard/session.js +203 -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 +186 -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
package/package.json
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "clawdbot",
|
|
3
|
+
"version": "2026.1.4-1",
|
|
4
|
+
"description": "WhatsApp gateway CLI (Baileys web) with Pi RPC agent",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"clawdbot": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/agents/**",
|
|
12
|
+
"dist/auto-reply/**",
|
|
13
|
+
"dist/browser/**",
|
|
14
|
+
"dist/canvas-host/**",
|
|
15
|
+
"dist/cli/**",
|
|
16
|
+
"dist/commands/**",
|
|
17
|
+
"dist/config/**",
|
|
18
|
+
"dist/control-ui/**",
|
|
19
|
+
"dist/cron/**",
|
|
20
|
+
"dist/daemon/**",
|
|
21
|
+
"dist/discord/**",
|
|
22
|
+
"dist/gateway/**",
|
|
23
|
+
"dist/hooks/**",
|
|
24
|
+
"dist/imessage/**",
|
|
25
|
+
"dist/infra/**",
|
|
26
|
+
"dist/macos/**",
|
|
27
|
+
"dist/media/**",
|
|
28
|
+
"dist/process/**",
|
|
29
|
+
"dist/providers/**",
|
|
30
|
+
"dist/sessions/**",
|
|
31
|
+
"dist/signal/**",
|
|
32
|
+
"dist/slack/**",
|
|
33
|
+
"dist/telegram/**",
|
|
34
|
+
"dist/tui/**",
|
|
35
|
+
"dist/web/**",
|
|
36
|
+
"dist/wizard/**",
|
|
37
|
+
"dist/*.js",
|
|
38
|
+
"dist/*.json",
|
|
39
|
+
"docs/**",
|
|
40
|
+
"skills/**",
|
|
41
|
+
"README.md",
|
|
42
|
+
"README-header.png",
|
|
43
|
+
"CHANGELOG.md",
|
|
44
|
+
"LICENSE"
|
|
45
|
+
],
|
|
46
|
+
"scripts": {
|
|
47
|
+
"dev": "tsx src/index.ts",
|
|
48
|
+
"docs:list": "tsx scripts/docs-list.ts",
|
|
49
|
+
"docs:dev": "cd docs && mint dev",
|
|
50
|
+
"docs:build": "cd docs && mint broken-links",
|
|
51
|
+
"build": "tsc -p tsconfig.json && tsx scripts/canvas-a2ui-copy.ts",
|
|
52
|
+
"release:check": "tsx scripts/release-check.ts",
|
|
53
|
+
"ui:install": "pnpm -C ui install",
|
|
54
|
+
"ui:dev": "pnpm -C ui dev",
|
|
55
|
+
"ui:build": "pnpm -C ui build",
|
|
56
|
+
"start": "tsx src/index.ts",
|
|
57
|
+
"clawdbot": "tsx src/index.ts",
|
|
58
|
+
"gateway:watch": "tsx watch --clear-screen=false --include 'src/**/*.ts' src/index.ts gateway --force",
|
|
59
|
+
"clawdbot:rpc": "tsx src/index.ts agent --mode rpc --json",
|
|
60
|
+
"lint": "biome check src test && oxlint --type-aware src test --ignore-pattern src/canvas-host/a2ui/a2ui.bundle.js",
|
|
61
|
+
"lint:swift": "swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)",
|
|
62
|
+
"lint:fix": "biome check --write --unsafe src && biome format --write src",
|
|
63
|
+
"format": "biome format src",
|
|
64
|
+
"format:swift": "swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/ClawdbotKit/Sources",
|
|
65
|
+
"format:fix": "biome format src --write",
|
|
66
|
+
"test": "vitest",
|
|
67
|
+
"test:force": "tsx scripts/test-force.ts",
|
|
68
|
+
"test:coverage": "vitest run --coverage",
|
|
69
|
+
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
70
|
+
"protocol:gen": "tsx scripts/protocol-gen.ts",
|
|
71
|
+
"protocol:gen:swift": "tsx scripts/protocol-gen-swift.ts",
|
|
72
|
+
"protocol:check": "pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/ClawdbotProtocol/GatewayModels.swift",
|
|
73
|
+
"canvas:a2ui:bundle": "bash scripts/bundle-a2ui.sh"
|
|
74
|
+
},
|
|
75
|
+
"keywords": [],
|
|
76
|
+
"author": "",
|
|
77
|
+
"license": "MIT",
|
|
78
|
+
"engines": {
|
|
79
|
+
"node": ">=22.12.0"
|
|
80
|
+
},
|
|
81
|
+
"packageManager": "pnpm@10.23.0",
|
|
82
|
+
"dependencies": {
|
|
83
|
+
"@clack/prompts": "^0.11.0",
|
|
84
|
+
"@grammyjs/transformer-throttler": "^1.2.1",
|
|
85
|
+
"@homebridge/ciao": "^1.3.4",
|
|
86
|
+
"@mariozechner/pi-agent-core": "^0.32.3",
|
|
87
|
+
"@mariozechner/pi-ai": "^0.32.3",
|
|
88
|
+
"@mariozechner/pi-coding-agent": "^0.32.3",
|
|
89
|
+
"@mariozechner/pi-tui": "^0.32.3",
|
|
90
|
+
"@slack/bolt": "^4.5.0",
|
|
91
|
+
"@slack/web-api": "^7.11.1",
|
|
92
|
+
"@sinclair/typebox": "0.34.46",
|
|
93
|
+
"@whiskeysockets/baileys": "7.0.0-rc.9",
|
|
94
|
+
"ajv": "^8.17.1",
|
|
95
|
+
"body-parser": "^2.2.1",
|
|
96
|
+
"chalk": "^5.6.2",
|
|
97
|
+
"chokidar": "^5.0.0",
|
|
98
|
+
"chromium-bidi": "12.0.1",
|
|
99
|
+
"commander": "^14.0.2",
|
|
100
|
+
"croner": "^9.1.0",
|
|
101
|
+
"detect-libc": "^2.1.2",
|
|
102
|
+
"discord-api-types": "^0.38.33",
|
|
103
|
+
"discord.js": "^14.25.1",
|
|
104
|
+
"dotenv": "^17.2.3",
|
|
105
|
+
"express": "^5.2.1",
|
|
106
|
+
"file-type": "^21.2.0",
|
|
107
|
+
"grammy": "^1.39.2",
|
|
108
|
+
"json5": "^2.2.3",
|
|
109
|
+
"long": "5.3.2",
|
|
110
|
+
"playwright-core": "1.57.0",
|
|
111
|
+
"qrcode-terminal": "^0.12.0",
|
|
112
|
+
"sharp": "^0.34.5",
|
|
113
|
+
"tslog": "^4.10.2",
|
|
114
|
+
"undici": "^7.16.0",
|
|
115
|
+
"ws": "^8.18.3",
|
|
116
|
+
"zod": "^4.3.4"
|
|
117
|
+
},
|
|
118
|
+
"devDependencies": {
|
|
119
|
+
"@biomejs/biome": "^2.3.10",
|
|
120
|
+
"@lit-labs/signals": "^0.2.0",
|
|
121
|
+
"@lit/context": "^1.1.6",
|
|
122
|
+
"@mariozechner/mini-lit": "0.2.1",
|
|
123
|
+
"@types/body-parser": "^1.19.6",
|
|
124
|
+
"@types/express": "^5.0.6",
|
|
125
|
+
"@types/markdown-it": "^14.1.2",
|
|
126
|
+
"@types/node": "^25.0.3",
|
|
127
|
+
"@types/qrcode-terminal": "^0.12.2",
|
|
128
|
+
"@types/ws": "^8.18.1",
|
|
129
|
+
"@vitest/coverage-v8": "^4.0.16",
|
|
130
|
+
"docx-preview": "^0.3.7",
|
|
131
|
+
"jszip": "^3.10.1",
|
|
132
|
+
"lit": "^3.3.2",
|
|
133
|
+
"lucide": "^0.562.0",
|
|
134
|
+
"markdown-it": "^14.1.0",
|
|
135
|
+
"ollama": "^0.6.3",
|
|
136
|
+
"oxlint": "^1.36.0",
|
|
137
|
+
"oxlint-tsgolint": "^0.10.1",
|
|
138
|
+
"quicktype-core": "^23.2.6",
|
|
139
|
+
"rolldown": "1.0.0-beta.58",
|
|
140
|
+
"signal-utils": "^0.21.1",
|
|
141
|
+
"tsx": "^4.21.0",
|
|
142
|
+
"typescript": "^5.9.3",
|
|
143
|
+
"vitest": "^4.0.16",
|
|
144
|
+
"wireit": "^0.14.12"
|
|
145
|
+
},
|
|
146
|
+
"pnpm": {
|
|
147
|
+
"overrides": {
|
|
148
|
+
"@sinclair/typebox": "0.34.46"
|
|
149
|
+
},
|
|
150
|
+
"patchedDependencies": {
|
|
151
|
+
"@mariozechner/pi-ai": "patches/@mariozechner__pi-ai.patch"
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"vitest": {
|
|
155
|
+
"coverage": {
|
|
156
|
+
"provider": "v8",
|
|
157
|
+
"reporter": [
|
|
158
|
+
"text",
|
|
159
|
+
"lcov"
|
|
160
|
+
],
|
|
161
|
+
"thresholds": {
|
|
162
|
+
"lines": 70,
|
|
163
|
+
"functions": 70,
|
|
164
|
+
"branches": 70,
|
|
165
|
+
"statements": 70
|
|
166
|
+
},
|
|
167
|
+
"include": [
|
|
168
|
+
"src/**/*.ts"
|
|
169
|
+
],
|
|
170
|
+
"exclude": [
|
|
171
|
+
"src/**/*.test.ts"
|
|
172
|
+
]
|
|
173
|
+
},
|
|
174
|
+
"include": [
|
|
175
|
+
"src/**/*.test.ts"
|
|
176
|
+
],
|
|
177
|
+
"exclude": [
|
|
178
|
+
"dist/**",
|
|
179
|
+
"apps/macos/**",
|
|
180
|
+
"apps/macos/.build/**",
|
|
181
|
+
"**/vendor/**",
|
|
182
|
+
"apps/macos/.build/**",
|
|
183
|
+
"dist/Clawdbot.app/**"
|
|
184
|
+
]
|
|
185
|
+
}
|
|
186
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: apple-notes
|
|
3
|
+
description: Manage Apple Notes via the `memo` CLI on macOS (create, view, edit, delete, search, move, and export notes). Use when a user asks Clawdbot to add a note, list notes, search notes, or manage note folders.
|
|
4
|
+
homepage: https://github.com/antoniorodr/memo
|
|
5
|
+
metadata: {"clawdbot":{"emoji":"📝","os":["darwin"],"requires":{"bins":["memo"]},"install":[{"id":"brew","kind":"brew","formula":"antoniorodr/memo/memo","bins":["memo"],"label":"Install memo via Homebrew"}]}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Apple Notes CLI
|
|
9
|
+
|
|
10
|
+
Use `memo notes` to manage Apple Notes directly from the terminal. Create, view, edit, delete, search, move notes between folders, and export to HTML/Markdown.
|
|
11
|
+
|
|
12
|
+
Setup
|
|
13
|
+
- Install (Homebrew): `brew tap antoniorodr/memo && brew install antoniorodr/memo/memo`
|
|
14
|
+
- Manual (pip): `pip install .` (after cloning the repo)
|
|
15
|
+
- macOS-only; if prompted, grant Automation access to Notes.app.
|
|
16
|
+
|
|
17
|
+
View Notes
|
|
18
|
+
- List all notes: `memo notes`
|
|
19
|
+
- Filter by folder: `memo notes -f "Folder Name"`
|
|
20
|
+
- Search notes (fuzzy): `memo notes -s "query"`
|
|
21
|
+
|
|
22
|
+
Create Notes
|
|
23
|
+
- Add a new note: `memo notes -a`
|
|
24
|
+
- Opens an interactive editor to compose the note.
|
|
25
|
+
- Quick add with title: `memo notes -a "Note Title"`
|
|
26
|
+
|
|
27
|
+
Edit Notes
|
|
28
|
+
- Edit existing note: `memo notes -e`
|
|
29
|
+
- Interactive selection of note to edit.
|
|
30
|
+
|
|
31
|
+
Delete Notes
|
|
32
|
+
- Delete a note: `memo notes -d`
|
|
33
|
+
- Interactive selection of note to delete.
|
|
34
|
+
|
|
35
|
+
Move Notes
|
|
36
|
+
- Move note to folder: `memo notes -m`
|
|
37
|
+
- Interactive selection of note and destination folder.
|
|
38
|
+
|
|
39
|
+
Export Notes
|
|
40
|
+
- Export to HTML/Markdown: `memo notes -ex`
|
|
41
|
+
- Exports selected note; uses Mistune for markdown processing.
|
|
42
|
+
|
|
43
|
+
Limitations
|
|
44
|
+
- Cannot edit notes containing images or attachments.
|
|
45
|
+
- Interactive prompts may require terminal access.
|
|
46
|
+
|
|
47
|
+
Notes
|
|
48
|
+
- macOS-only.
|
|
49
|
+
- Requires Apple Notes.app to be accessible.
|
|
50
|
+
- For automation, grant permissions in System Settings > Privacy & Security > Automation.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: apple-reminders
|
|
3
|
+
description: Manage Apple Reminders via the `remindctl` CLI on macOS (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.
|
|
4
|
+
homepage: https://github.com/steipete/remindctl
|
|
5
|
+
metadata: {"clawdbot":{"emoji":"⏰","os":["darwin"],"requires":{"bins":["remindctl"]},"install":[{"id":"brew","kind":"brew","formula":"steipete/tap/remindctl","bins":["remindctl"],"label":"Install remindctl via Homebrew"}]}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Apple Reminders CLI (remindctl)
|
|
9
|
+
|
|
10
|
+
Use `remindctl` to manage Apple Reminders directly from the terminal. It supports list filtering, date-based views, and scripting output.
|
|
11
|
+
|
|
12
|
+
Setup
|
|
13
|
+
- Install (Homebrew): `brew install steipete/tap/remindctl`
|
|
14
|
+
- From source: `pnpm install && pnpm build` (binary at `./bin/remindctl`)
|
|
15
|
+
- macOS-only; grant Reminders permission when prompted.
|
|
16
|
+
|
|
17
|
+
Permissions
|
|
18
|
+
- Check status: `remindctl status`
|
|
19
|
+
- Request access: `remindctl authorize`
|
|
20
|
+
|
|
21
|
+
View Reminders
|
|
22
|
+
- Default (today): `remindctl`
|
|
23
|
+
- Today: `remindctl today`
|
|
24
|
+
- Tomorrow: `remindctl tomorrow`
|
|
25
|
+
- Week: `remindctl week`
|
|
26
|
+
- Overdue: `remindctl overdue`
|
|
27
|
+
- Upcoming: `remindctl upcoming`
|
|
28
|
+
- Completed: `remindctl completed`
|
|
29
|
+
- All: `remindctl all`
|
|
30
|
+
- Specific date: `remindctl 2026-01-04`
|
|
31
|
+
|
|
32
|
+
Manage Lists
|
|
33
|
+
- List all lists: `remindctl list`
|
|
34
|
+
- Show list: `remindctl list Work`
|
|
35
|
+
- Create list: `remindctl list Projects --create`
|
|
36
|
+
- Rename list: `remindctl list Work --rename Office`
|
|
37
|
+
- Delete list: `remindctl list Work --delete`
|
|
38
|
+
|
|
39
|
+
Create Reminders
|
|
40
|
+
- Quick add: `remindctl add "Buy milk"`
|
|
41
|
+
- With list + due: `remindctl add --title "Call mom" --list Personal --due tomorrow`
|
|
42
|
+
|
|
43
|
+
Edit Reminders
|
|
44
|
+
- Edit title/due: `remindctl edit 1 --title "New title" --due 2026-01-04`
|
|
45
|
+
|
|
46
|
+
Complete Reminders
|
|
47
|
+
- Complete by id: `remindctl complete 1 2 3`
|
|
48
|
+
|
|
49
|
+
Delete Reminders
|
|
50
|
+
- Delete by id: `remindctl delete 4A83 --force`
|
|
51
|
+
|
|
52
|
+
Output Formats
|
|
53
|
+
- JSON (scripting): `remindctl today --json`
|
|
54
|
+
- Plain TSV: `remindctl today --plain`
|
|
55
|
+
- Counts only: `remindctl today --quiet`
|
|
56
|
+
|
|
57
|
+
Date Formats
|
|
58
|
+
Accepted by `--due` and date filters:
|
|
59
|
+
- `today`, `tomorrow`, `yesterday`
|
|
60
|
+
- `YYYY-MM-DD`
|
|
61
|
+
- `YYYY-MM-DD HH:mm`
|
|
62
|
+
- ISO 8601 (`2026-01-04T12:34:56Z`)
|
|
63
|
+
|
|
64
|
+
Notes
|
|
65
|
+
- macOS-only.
|
|
66
|
+
- If access is denied, enable Terminal/remindctl in System Settings → Privacy & Security → Reminders.
|
|
67
|
+
- If running over SSH, grant access on the Mac that runs the command.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bear-notes
|
|
3
|
+
description: Create, search, and manage Bear notes via grizzly CLI.
|
|
4
|
+
homepage: https://bear.app
|
|
5
|
+
metadata: {"clawdbot":{"emoji":"🐻","os":["darwin"],"requires":{"bins":["grizzly"]},"install":[{"id":"go","kind":"go","module":"github.com/tylerwince/grizzly/cmd/grizzly@latest","bins":["grizzly"],"label":"Install grizzly (go)"}]}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Bear Notes
|
|
9
|
+
|
|
10
|
+
Use `grizzly` to create, read, and manage notes in Bear on macOS.
|
|
11
|
+
|
|
12
|
+
Requirements
|
|
13
|
+
- Bear app installed and running
|
|
14
|
+
- For some operations (add-text, tags, open-note --selected), a Bear app token (stored in `~/.config/grizzly/token`)
|
|
15
|
+
|
|
16
|
+
## Getting a Bear Token
|
|
17
|
+
|
|
18
|
+
For operations that require a token (add-text, tags, open-note --selected), you need an authentication token:
|
|
19
|
+
1. Open Bear → Help → API Token → Copy Token
|
|
20
|
+
2. Save it: `echo "YOUR_TOKEN" > ~/.config/grizzly/token`
|
|
21
|
+
|
|
22
|
+
## Common Commands
|
|
23
|
+
|
|
24
|
+
Create a note
|
|
25
|
+
```bash
|
|
26
|
+
echo "Note content here" | grizzly create --title "My Note" --tag work
|
|
27
|
+
grizzly create --title "Quick Note" --tag inbox < /dev/null
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Open/read a note by ID
|
|
31
|
+
```bash
|
|
32
|
+
grizzly open-note --id "NOTE_ID" --enable-callback --json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Append text to a note
|
|
36
|
+
```bash
|
|
37
|
+
echo "Additional content" | grizzly add-text --id "NOTE_ID" --mode append --token-file ~/.config/grizzly/token
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
List all tags
|
|
41
|
+
```bash
|
|
42
|
+
grizzly tags --enable-callback --json --token-file ~/.config/grizzly/token
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Search notes (via open-tag)
|
|
46
|
+
```bash
|
|
47
|
+
grizzly open-tag --name "work" --enable-callback --json
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Options
|
|
51
|
+
|
|
52
|
+
Common flags:
|
|
53
|
+
- `--dry-run` — Preview the URL without executing
|
|
54
|
+
- `--print-url` — Show the x-callback-url
|
|
55
|
+
- `--enable-callback` — Wait for Bear's response (needed for reading data)
|
|
56
|
+
- `--json` — Output as JSON (when using callbacks)
|
|
57
|
+
- `--token-file PATH` — Path to Bear API token file
|
|
58
|
+
|
|
59
|
+
## Configuration
|
|
60
|
+
|
|
61
|
+
Grizzly reads config from (in priority order):
|
|
62
|
+
1. CLI flags
|
|
63
|
+
2. Environment variables (`GRIZZLY_TOKEN_FILE`, `GRIZZLY_CALLBACK_URL`, `GRIZZLY_TIMEOUT`)
|
|
64
|
+
3. `.grizzly.toml` in current directory
|
|
65
|
+
4. `~/.config/grizzly/config.toml`
|
|
66
|
+
|
|
67
|
+
Example `~/.config/grizzly/config.toml`:
|
|
68
|
+
```toml
|
|
69
|
+
token_file = "~/.config/grizzly/token"
|
|
70
|
+
callback_url = "http://127.0.0.1:42123/success"
|
|
71
|
+
timeout = "5s"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Notes
|
|
75
|
+
|
|
76
|
+
- Bear must be running for commands to work
|
|
77
|
+
- Note IDs are Bear's internal identifiers (visible in note info or via callbacks)
|
|
78
|
+
- Use `--enable-callback` when you need to read data back from Bear
|
|
79
|
+
- Some operations require a valid token (add-text, tags, open-note --selected)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bird
|
|
3
|
+
description: X/Twitter CLI for reading, searching, and posting via cookies or Sweetistics.
|
|
4
|
+
homepage: https://bird.fast
|
|
5
|
+
metadata: {"clawdbot":{"emoji":"🐦","requires":{"bins":["bird"]},"install":[{"id":"brew","kind":"brew","formula":"steipete/tap/bird","bins":["bird"],"label":"Install bird (brew)"}]}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# bird
|
|
9
|
+
|
|
10
|
+
Use `bird` to read/search X and post tweets/replies.
|
|
11
|
+
|
|
12
|
+
Quick start
|
|
13
|
+
- `bird whoami`
|
|
14
|
+
- `bird read <url-or-id>`
|
|
15
|
+
- `bird thread <url-or-id>`
|
|
16
|
+
- `bird search "query" -n 5`
|
|
17
|
+
|
|
18
|
+
Posting (confirm with user first)
|
|
19
|
+
- `bird tweet "text"`
|
|
20
|
+
- `bird reply <id-or-url> "text"`
|
|
21
|
+
|
|
22
|
+
Auth sources
|
|
23
|
+
- Browser cookies (default: Firefox/Chrome)
|
|
24
|
+
- Sweetistics API: set `SWEETISTICS_API_KEY` or use `--engine sweetistics`
|
|
25
|
+
- Check sources: `bird check`
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: blogwatcher
|
|
3
|
+
description: Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.
|
|
4
|
+
homepage: https://github.com/Hyaxia/blogwatcher
|
|
5
|
+
metadata: {"clawdbot":{"emoji":"📰","requires":{"bins":["blogwatcher"]},"install":[{"id":"go","kind":"go","module":"github.com/Hyaxia/blogwatcher/cmd/blogwatcher@latest","bins":["blogwatcher"],"label":"Install blogwatcher (go)"}]}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# blogwatcher
|
|
9
|
+
|
|
10
|
+
Track blog and RSS/Atom feed updates with the `blogwatcher` CLI.
|
|
11
|
+
|
|
12
|
+
Install
|
|
13
|
+
- Go: `go install github.com/Hyaxia/blogwatcher/cmd/blogwatcher@latest`
|
|
14
|
+
|
|
15
|
+
Quick start
|
|
16
|
+
- `blogwatcher --help`
|
|
17
|
+
|
|
18
|
+
Common commands
|
|
19
|
+
- Add a blog: `blogwatcher add "My Blog" https://example.com`
|
|
20
|
+
- List blogs: `blogwatcher blogs`
|
|
21
|
+
- Scan for updates: `blogwatcher scan`
|
|
22
|
+
- List articles: `blogwatcher articles`
|
|
23
|
+
- Mark an article read: `blogwatcher read 1`
|
|
24
|
+
- Mark all articles read: `blogwatcher read-all`
|
|
25
|
+
- Remove a blog: `blogwatcher remove "My Blog"`
|
|
26
|
+
|
|
27
|
+
Example output
|
|
28
|
+
```
|
|
29
|
+
$ blogwatcher blogs
|
|
30
|
+
Tracked blogs (1):
|
|
31
|
+
|
|
32
|
+
xkcd
|
|
33
|
+
URL: https://xkcd.com
|
|
34
|
+
```
|
|
35
|
+
```
|
|
36
|
+
$ blogwatcher scan
|
|
37
|
+
Scanning 1 blog(s)...
|
|
38
|
+
|
|
39
|
+
xkcd
|
|
40
|
+
Source: RSS | Found: 4 | New: 4
|
|
41
|
+
|
|
42
|
+
Found 4 new article(s) total!
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Notes
|
|
46
|
+
- Use `blogwatcher <command> --help` to discover flags and options.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: blucli
|
|
3
|
+
description: BluOS CLI (blu) for discovery, playback, grouping, and volume.
|
|
4
|
+
homepage: https://blucli.sh
|
|
5
|
+
metadata: {"clawdbot":{"emoji":"🫐","requires":{"bins":["blu"]},"install":[{"id":"go","kind":"go","module":"github.com/steipete/blucli/cmd/blu@latest","bins":["blu"],"label":"Install blucli (go)"}]}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# blucli (blu)
|
|
9
|
+
|
|
10
|
+
Use `blu` to control Bluesound/NAD players.
|
|
11
|
+
|
|
12
|
+
Quick start
|
|
13
|
+
- `blu devices` (pick target)
|
|
14
|
+
- `blu --device <id> status`
|
|
15
|
+
- `blu play|pause|stop`
|
|
16
|
+
- `blu volume set 15`
|
|
17
|
+
|
|
18
|
+
Target selection (in priority order)
|
|
19
|
+
- `--device <id|name|alias>`
|
|
20
|
+
- `BLU_DEVICE`
|
|
21
|
+
- config default (if set)
|
|
22
|
+
|
|
23
|
+
Common tasks
|
|
24
|
+
- Grouping: `blu group status|add|remove`
|
|
25
|
+
- TuneIn search/play: `blu tunein search "query"`, `blu tunein play "query"`
|
|
26
|
+
|
|
27
|
+
Prefer `--json` for scripts. Confirm the target device before changing playback.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brave-search
|
|
3
|
+
description: Web search and content extraction via Brave Search API.
|
|
4
|
+
homepage: https://brave.com/search/api
|
|
5
|
+
metadata: {"clawdbot":{"emoji":"🦁","requires":{"bins":["node"],"env":["BRAVE_API_KEY"]},"primaryEnv":"BRAVE_API_KEY"}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Brave Search
|
|
9
|
+
|
|
10
|
+
Headless web search (and lightweight content extraction) using Brave Search API. No browser required.
|
|
11
|
+
|
|
12
|
+
## Search
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
node {baseDir}/scripts/search.mjs "query"
|
|
16
|
+
node {baseDir}/scripts/search.mjs "query" -n 10
|
|
17
|
+
node {baseDir}/scripts/search.mjs "query" --content
|
|
18
|
+
node {baseDir}/scripts/search.mjs "query" -n 3 --content
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Extract a page
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
node {baseDir}/scripts/content.mjs "https://example.com/article"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Notes:
|
|
28
|
+
- Needs `BRAVE_API_KEY`.
|
|
29
|
+
- Content extraction is best-effort (good for articles; not for app-like sites).
|
|
30
|
+
- If a site is blocked or too JS-heavy, prefer the `summarize` skill (it can use a Firecrawl fallback).
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
function usage() {
|
|
4
|
+
console.error(`Usage: content.mjs <url>`);
|
|
5
|
+
process.exit(2);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export async function fetchAsMarkdown(url) {
|
|
9
|
+
const resp = await fetch(url, {
|
|
10
|
+
headers: { "User-Agent": "clawdbot-brave-search/1.0" },
|
|
11
|
+
});
|
|
12
|
+
const html = await resp.text();
|
|
13
|
+
|
|
14
|
+
// Very lightweight “readability-ish” extraction without dependencies:
|
|
15
|
+
// - drop script/style/nav/footer
|
|
16
|
+
// - strip tags
|
|
17
|
+
// - keep paragraphs
|
|
18
|
+
const cleaned = html
|
|
19
|
+
.replace(/<script[\s\S]*?<\/script>/gi, " ")
|
|
20
|
+
.replace(/<style[\s\S]*?<\/style>/gi, " ")
|
|
21
|
+
.replace(/<(nav|footer|header)[\s\S]*?<\/\1>/gi, " ")
|
|
22
|
+
.replace(/<br\s*\/?>/gi, "\n")
|
|
23
|
+
.replace(/<\/p>/gi, "\n\n")
|
|
24
|
+
.replace(/<\/div>/gi, "\n")
|
|
25
|
+
.replace(/<[^>]+>/g, " ")
|
|
26
|
+
.replace(/ /g, " ")
|
|
27
|
+
.replace(/&/g, "&")
|
|
28
|
+
.replace(/</g, "<")
|
|
29
|
+
.replace(/>/g, ">")
|
|
30
|
+
.replace(/"/g, '"')
|
|
31
|
+
.replace(/'/g, "'")
|
|
32
|
+
.replace(/\s+\n/g, "\n")
|
|
33
|
+
.replace(/\n{3,}/g, "\n\n")
|
|
34
|
+
.replace(/[ \t]{2,}/g, " ")
|
|
35
|
+
.trim();
|
|
36
|
+
|
|
37
|
+
if (!resp.ok) {
|
|
38
|
+
return `> Fetch failed (${resp.status}).\n\n${cleaned.slice(0, 2000)}\n`;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const paras = cleaned
|
|
42
|
+
.split("\n\n")
|
|
43
|
+
.map((p) => p.trim())
|
|
44
|
+
.filter(Boolean)
|
|
45
|
+
.slice(0, 30);
|
|
46
|
+
|
|
47
|
+
return paras.map((p) => `- ${p}`).join("\n") + "\n";
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const args = process.argv.slice(2);
|
|
51
|
+
if (args.length === 0 || args[0] === "-h" || args[0] === "--help") usage();
|
|
52
|
+
const url = args[0];
|
|
53
|
+
process.stdout.write(await fetchAsMarkdown(url));
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
function usage() {
|
|
4
|
+
console.error(`Usage: search.mjs "query" [-n 5] [--content]`);
|
|
5
|
+
process.exit(2);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const args = process.argv.slice(2);
|
|
9
|
+
if (args.length === 0 || args[0] === "-h" || args[0] === "--help") usage();
|
|
10
|
+
|
|
11
|
+
const query = args[0];
|
|
12
|
+
let n = 5;
|
|
13
|
+
let withContent = false;
|
|
14
|
+
|
|
15
|
+
for (let i = 1; i < args.length; i++) {
|
|
16
|
+
const a = args[i];
|
|
17
|
+
if (a === "-n") {
|
|
18
|
+
n = Number.parseInt(args[i + 1] ?? "5", 10);
|
|
19
|
+
i++;
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (a === "--content") {
|
|
23
|
+
withContent = true;
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
console.error(`Unknown arg: ${a}`);
|
|
27
|
+
usage();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const apiKey = (process.env.BRAVE_API_KEY ?? "").trim();
|
|
31
|
+
if (!apiKey) {
|
|
32
|
+
console.error("Missing BRAVE_API_KEY");
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const endpoint = new URL("https://api.search.brave.com/res/v1/web/search");
|
|
37
|
+
endpoint.searchParams.set("q", query);
|
|
38
|
+
endpoint.searchParams.set("count", String(Math.max(1, Math.min(n, 20))));
|
|
39
|
+
endpoint.searchParams.set("text_decorations", "false");
|
|
40
|
+
endpoint.searchParams.set("safesearch", "moderate");
|
|
41
|
+
|
|
42
|
+
const resp = await fetch(endpoint, {
|
|
43
|
+
headers: {
|
|
44
|
+
Accept: "application/json",
|
|
45
|
+
"X-Subscription-Token": apiKey,
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
if (!resp.ok) {
|
|
50
|
+
const text = await resp.text().catch(() => "");
|
|
51
|
+
throw new Error(`Brave Search failed (${resp.status}): ${text}`);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const data = await resp.json();
|
|
55
|
+
const results = (data?.web?.results ?? []).slice(0, n);
|
|
56
|
+
|
|
57
|
+
const lines = [];
|
|
58
|
+
for (const r of results) {
|
|
59
|
+
const title = String(r?.title ?? "").trim();
|
|
60
|
+
const url = String(r?.url ?? "").trim();
|
|
61
|
+
const desc = String(r?.description ?? "").trim();
|
|
62
|
+
if (!title || !url) continue;
|
|
63
|
+
lines.push(`- ${title}\n ${url}${desc ? `\n ${desc}` : ""}`);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
process.stdout.write(lines.join("\n\n") + "\n");
|
|
67
|
+
|
|
68
|
+
if (!withContent) process.exit(0);
|
|
69
|
+
|
|
70
|
+
process.stdout.write("\n---\n\n");
|
|
71
|
+
for (const r of results) {
|
|
72
|
+
const title = String(r?.title ?? "").trim();
|
|
73
|
+
const url = String(r?.url ?? "").trim();
|
|
74
|
+
if (!url) continue;
|
|
75
|
+
process.stdout.write(`# ${title || url}\n${url}\n\n`);
|
|
76
|
+
const child = await import("./content.mjs");
|
|
77
|
+
const text = await child.fetchAsMarkdown(url);
|
|
78
|
+
process.stdout.write(text.trimEnd() + "\n\n");
|
|
79
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: camsnap
|
|
3
|
+
description: Capture frames or clips from RTSP/ONVIF cameras.
|
|
4
|
+
homepage: https://camsnap.ai
|
|
5
|
+
metadata: {"clawdbot":{"emoji":"📸","requires":{"bins":["camsnap"]},"install":[{"id":"brew","kind":"brew","formula":"steipete/tap/camsnap","bins":["camsnap"],"label":"Install camsnap (brew)"}]}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# camsnap
|
|
9
|
+
|
|
10
|
+
Use `camsnap` to grab snapshots, clips, or motion events from configured cameras.
|
|
11
|
+
|
|
12
|
+
Setup
|
|
13
|
+
- Config file: `~/.config/camsnap/config.yaml`
|
|
14
|
+
- Add camera: `camsnap add --name kitchen --host 192.168.0.10 --user user --pass pass`
|
|
15
|
+
|
|
16
|
+
Common commands
|
|
17
|
+
- Discover: `camsnap discover --info`
|
|
18
|
+
- Snapshot: `camsnap snap kitchen --out shot.jpg`
|
|
19
|
+
- Clip: `camsnap clip kitchen --dur 5s --out clip.mp4`
|
|
20
|
+
- Motion watch: `camsnap watch kitchen --threshold 0.2 --action '...'`
|
|
21
|
+
- Doctor: `camsnap doctor --probe`
|
|
22
|
+
|
|
23
|
+
Notes
|
|
24
|
+
- Requires `ffmpeg` on PATH.
|
|
25
|
+
- Prefer a short test capture before longer clips.
|