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.
Files changed (550) hide show
  1. package/CHANGELOG.md +120 -0
  2. package/LICENSE +21 -0
  3. package/README-header.png +0 -0
  4. package/README.md +297 -0
  5. package/dist/agents/agent-paths.js +17 -0
  6. package/dist/agents/bash-process-registry.js +126 -0
  7. package/dist/agents/bash-tools.js +837 -0
  8. package/dist/agents/clawdbot-tools.js +30 -0
  9. package/dist/agents/clawdis-tools.js +27 -0
  10. package/dist/agents/context.js +34 -0
  11. package/dist/agents/defaults.js +6 -0
  12. package/dist/agents/model-auth.js +112 -0
  13. package/dist/agents/model-catalog.js +55 -0
  14. package/dist/agents/model-fallback.js +191 -0
  15. package/dist/agents/model-scan.js +263 -0
  16. package/dist/agents/model-selection.js +116 -0
  17. package/dist/agents/models-config.js +49 -0
  18. package/dist/agents/pi-embedded-helpers.js +74 -0
  19. package/dist/agents/pi-embedded-runner.js +407 -0
  20. package/dist/agents/pi-embedded-subscribe.js +568 -0
  21. package/dist/agents/pi-embedded-utils.js +20 -0
  22. package/dist/agents/pi-embedded.js +1 -0
  23. package/dist/agents/pi-oauth.js +88 -0
  24. package/dist/agents/pi-tools.js +433 -0
  25. package/dist/agents/sandbox-paths.js +68 -0
  26. package/dist/agents/sandbox.js +644 -0
  27. package/dist/agents/shell-utils.js +53 -0
  28. package/dist/agents/skills-install.js +244 -0
  29. package/dist/agents/skills-status.js +157 -0
  30. package/dist/agents/skills.js +470 -0
  31. package/dist/agents/steerable-agent-loop.js +338 -0
  32. package/dist/agents/steerable-provider-transport.js +48 -0
  33. package/dist/agents/system-prompt.js +104 -0
  34. package/dist/agents/tool-display.js +162 -0
  35. package/dist/agents/tool-images.js +138 -0
  36. package/dist/agents/tools/browser-tool.js +339 -0
  37. package/dist/agents/tools/canvas-tool.js +193 -0
  38. package/dist/agents/tools/common.js +88 -0
  39. package/dist/agents/tools/cron-tool.js +124 -0
  40. package/dist/agents/tools/discord-actions-guild.js +186 -0
  41. package/dist/agents/tools/discord-actions-messaging.js +285 -0
  42. package/dist/agents/tools/discord-actions-moderation.js +70 -0
  43. package/dist/agents/tools/discord-actions.js +56 -0
  44. package/dist/agents/tools/discord-schema.js +199 -0
  45. package/dist/agents/tools/discord-tool.js +16 -0
  46. package/dist/agents/tools/gateway-tool.js +46 -0
  47. package/dist/agents/tools/gateway.js +27 -0
  48. package/dist/agents/tools/image-tool.js +132 -0
  49. package/dist/agents/tools/nodes-tool.js +413 -0
  50. package/dist/agents/tools/nodes-utils.js +92 -0
  51. package/dist/agents/tools/sessions-helpers.js +88 -0
  52. package/dist/agents/tools/sessions-history-tool.js +53 -0
  53. package/dist/agents/tools/sessions-list-tool.js +143 -0
  54. package/dist/agents/tools/sessions-send-helpers.js +100 -0
  55. package/dist/agents/tools/sessions-send-tool.js +347 -0
  56. package/dist/agents/tools/slack-actions.js +129 -0
  57. package/dist/agents/tools/slack-schema.js +59 -0
  58. package/dist/agents/tools/slack-tool.js +16 -0
  59. package/dist/agents/usage.js +39 -0
  60. package/dist/agents/workspace.js +241 -0
  61. package/dist/auto-reply/chunk.js +76 -0
  62. package/dist/auto-reply/envelope.js +38 -0
  63. package/dist/auto-reply/group-activation.js +20 -0
  64. package/dist/auto-reply/heartbeat.js +57 -0
  65. package/dist/auto-reply/model.js +14 -0
  66. package/dist/auto-reply/reply/abort.js +14 -0
  67. package/dist/auto-reply/reply/agent-runner.js +371 -0
  68. package/dist/auto-reply/reply/block-streaming.js +34 -0
  69. package/dist/auto-reply/reply/body.js +29 -0
  70. package/dist/auto-reply/reply/commands.js +207 -0
  71. package/dist/auto-reply/reply/directive-handling.js +361 -0
  72. package/dist/auto-reply/reply/directives.js +47 -0
  73. package/dist/auto-reply/reply/followup-runner.js +149 -0
  74. package/dist/auto-reply/reply/groups.js +91 -0
  75. package/dist/auto-reply/reply/mentions.js +38 -0
  76. package/dist/auto-reply/reply/model-selection.js +114 -0
  77. package/dist/auto-reply/reply/queue.js +399 -0
  78. package/dist/auto-reply/reply/reply-tags.js +26 -0
  79. package/dist/auto-reply/reply/session-updates.js +87 -0
  80. package/dist/auto-reply/reply/session.js +160 -0
  81. package/dist/auto-reply/reply/typing.js +75 -0
  82. package/dist/auto-reply/reply.js +535 -0
  83. package/dist/auto-reply/send-policy.js +28 -0
  84. package/dist/auto-reply/status.js +158 -0
  85. package/dist/auto-reply/templating.js +9 -0
  86. package/dist/auto-reply/thinking.js +49 -0
  87. package/dist/auto-reply/tokens.js +2 -0
  88. package/dist/auto-reply/tool-meta.js +74 -0
  89. package/dist/auto-reply/transcription.js +57 -0
  90. package/dist/auto-reply/types.js +1 -0
  91. package/dist/browser/bridge-server.js +37 -0
  92. package/dist/browser/cdp.js +382 -0
  93. package/dist/browser/chrome.js +432 -0
  94. package/dist/browser/client-actions-core.js +67 -0
  95. package/dist/browser/client-actions-observe.js +24 -0
  96. package/dist/browser/client-actions-types.js +1 -0
  97. package/dist/browser/client-actions.js +3 -0
  98. package/dist/browser/client-fetch.js +43 -0
  99. package/dist/browser/client.js +105 -0
  100. package/dist/browser/config.js +140 -0
  101. package/dist/browser/constants.js +4 -0
  102. package/dist/browser/profiles-service.js +122 -0
  103. package/dist/browser/profiles.js +85 -0
  104. package/dist/browser/pw-ai.js +2 -0
  105. package/dist/browser/pw-session.js +144 -0
  106. package/dist/browser/pw-tools-core.js +363 -0
  107. package/dist/browser/routes/agent.js +535 -0
  108. package/dist/browser/routes/basic.js +155 -0
  109. package/dist/browser/routes/index.js +8 -0
  110. package/dist/browser/routes/tabs.js +105 -0
  111. package/dist/browser/routes/utils.js +62 -0
  112. package/dist/browser/screenshot.js +40 -0
  113. package/dist/browser/server-context.js +377 -0
  114. package/dist/browser/server.js +81 -0
  115. package/dist/browser/target-id.js +18 -0
  116. package/dist/browser/trash.js +21 -0
  117. package/dist/canvas-host/a2ui/.bundle.hash +1 -0
  118. package/dist/canvas-host/a2ui/a2ui.bundle.js +17768 -0
  119. package/dist/canvas-host/a2ui/index.html +246 -0
  120. package/dist/canvas-host/a2ui.js +187 -0
  121. package/dist/canvas-host/server.js +382 -0
  122. package/dist/cli/browser-cli-actions-input.js +459 -0
  123. package/dist/cli/browser-cli-actions-observe.js +56 -0
  124. package/dist/cli/browser-cli-examples.js +31 -0
  125. package/dist/cli/browser-cli-inspect.js +97 -0
  126. package/dist/cli/browser-cli-manage.js +286 -0
  127. package/dist/cli/browser-cli-shared.js +1 -0
  128. package/dist/cli/browser-cli.js +26 -0
  129. package/dist/cli/canvas-cli.js +416 -0
  130. package/dist/cli/cron-cli.js +454 -0
  131. package/dist/cli/deps.js +17 -0
  132. package/dist/cli/dns-cli.js +180 -0
  133. package/dist/cli/gateway-cli.js +489 -0
  134. package/dist/cli/gateway-rpc.js +20 -0
  135. package/dist/cli/hooks-cli.js +135 -0
  136. package/dist/cli/models-cli.js +248 -0
  137. package/dist/cli/nodes-camera.js +57 -0
  138. package/dist/cli/nodes-canvas.js +26 -0
  139. package/dist/cli/nodes-cli.js +946 -0
  140. package/dist/cli/nodes-screen.js +37 -0
  141. package/dist/cli/parse-duration.js +20 -0
  142. package/dist/cli/ports.js +97 -0
  143. package/dist/cli/program.js +406 -0
  144. package/dist/cli/prompt.js +19 -0
  145. package/dist/cli/tui-cli.js +35 -0
  146. package/dist/cli/wait.js +8 -0
  147. package/dist/commands/agent.js +645 -0
  148. package/dist/commands/antigravity-oauth.js +327 -0
  149. package/dist/commands/configure.js +480 -0
  150. package/dist/commands/doctor.js +484 -0
  151. package/dist/commands/health.js +108 -0
  152. package/dist/commands/models/aliases.js +64 -0
  153. package/dist/commands/models/fallbacks.js +99 -0
  154. package/dist/commands/models/image-fallbacks.js +99 -0
  155. package/dist/commands/models/list.js +323 -0
  156. package/dist/commands/models/scan.js +266 -0
  157. package/dist/commands/models/set-image.js +23 -0
  158. package/dist/commands/models/set.js +23 -0
  159. package/dist/commands/models/shared.js +72 -0
  160. package/dist/commands/models.js +7 -0
  161. package/dist/commands/onboard-auth.js +70 -0
  162. package/dist/commands/onboard-helpers.js +295 -0
  163. package/dist/commands/onboard-interactive.js +17 -0
  164. package/dist/commands/onboard-non-interactive.js +202 -0
  165. package/dist/commands/onboard-providers.js +634 -0
  166. package/dist/commands/onboard-remote.js +120 -0
  167. package/dist/commands/onboard-skills.js +148 -0
  168. package/dist/commands/onboard-types.js +1 -0
  169. package/dist/commands/onboard.js +12 -0
  170. package/dist/commands/send.js +124 -0
  171. package/dist/commands/sessions.js +212 -0
  172. package/dist/commands/setup.js +58 -0
  173. package/dist/commands/signal-install.js +135 -0
  174. package/dist/commands/status.js +207 -0
  175. package/dist/commands/update.js +16 -0
  176. package/dist/config/config.js +6 -0
  177. package/dist/config/defaults.js +61 -0
  178. package/dist/config/io.js +147 -0
  179. package/dist/config/legacy-migrate.js +13 -0
  180. package/dist/config/legacy.js +159 -0
  181. package/dist/config/paths.js +71 -0
  182. package/dist/config/schema.js +150 -0
  183. package/dist/config/sessions.js +282 -0
  184. package/dist/config/talk.js +31 -0
  185. package/dist/config/types.js +1 -0
  186. package/dist/config/validation.js +29 -0
  187. package/dist/config/zod-schema.js +831 -0
  188. package/dist/control-ui/assets/index-BFID3yAA.css +1 -0
  189. package/dist/control-ui/assets/index-CE_axlTS.js +2235 -0
  190. package/dist/control-ui/assets/index-CE_axlTS.js.map +1 -0
  191. package/dist/control-ui/index.html +15 -0
  192. package/dist/cron/isolated-agent.js +499 -0
  193. package/dist/cron/run-log.js +72 -0
  194. package/dist/cron/schedule.js +24 -0
  195. package/dist/cron/service.js +471 -0
  196. package/dist/cron/store.js +43 -0
  197. package/dist/cron/types.js +1 -0
  198. package/dist/daemon/constants.js +10 -0
  199. package/dist/daemon/launchd.js +276 -0
  200. package/dist/daemon/legacy.js +63 -0
  201. package/dist/daemon/program-args.js +76 -0
  202. package/dist/daemon/schtasks.js +257 -0
  203. package/dist/daemon/service.js +60 -0
  204. package/dist/daemon/systemd.js +266 -0
  205. package/dist/discord/index.js +2 -0
  206. package/dist/discord/monitor.js +1188 -0
  207. package/dist/discord/probe.js +54 -0
  208. package/dist/discord/send.js +577 -0
  209. package/dist/discord/token.js +8 -0
  210. package/dist/gateway/auth.js +121 -0
  211. package/dist/gateway/call.js +94 -0
  212. package/dist/gateway/chat-attachments.js +41 -0
  213. package/dist/gateway/client.js +180 -0
  214. package/dist/gateway/config-reload.js +274 -0
  215. package/dist/gateway/control-ui.js +184 -0
  216. package/dist/gateway/hooks-mapping.js +282 -0
  217. package/dist/gateway/hooks.js +168 -0
  218. package/dist/gateway/net.js +29 -0
  219. package/dist/gateway/protocol/index.js +61 -0
  220. package/dist/gateway/protocol/schema.js +560 -0
  221. package/dist/gateway/server-bridge-subscriptions.js +93 -0
  222. package/dist/gateway/server-bridge.js +1013 -0
  223. package/dist/gateway/server-browser.js +12 -0
  224. package/dist/gateway/server-chat.js +159 -0
  225. package/dist/gateway/server-constants.js +8 -0
  226. package/dist/gateway/server-discovery.js +62 -0
  227. package/dist/gateway/server-http.js +165 -0
  228. package/dist/gateway/server-methods/agent-job.js +125 -0
  229. package/dist/gateway/server-methods/agent.js +250 -0
  230. package/dist/gateway/server-methods/chat.js +200 -0
  231. package/dist/gateway/server-methods/config.js +50 -0
  232. package/dist/gateway/server-methods/connect.js +6 -0
  233. package/dist/gateway/server-methods/cron.js +83 -0
  234. package/dist/gateway/server-methods/health.js +28 -0
  235. package/dist/gateway/server-methods/models.js +16 -0
  236. package/dist/gateway/server-methods/nodes.js +294 -0
  237. package/dist/gateway/server-methods/providers.js +217 -0
  238. package/dist/gateway/server-methods/send.js +166 -0
  239. package/dist/gateway/server-methods/sessions.js +305 -0
  240. package/dist/gateway/server-methods/skills.js +83 -0
  241. package/dist/gateway/server-methods/system.js +118 -0
  242. package/dist/gateway/server-methods/talk.js +22 -0
  243. package/dist/gateway/server-methods/types.js +1 -0
  244. package/dist/gateway/server-methods/voicewake.js +30 -0
  245. package/dist/gateway/server-methods/web.js +58 -0
  246. package/dist/gateway/server-methods/wizard.js +100 -0
  247. package/dist/gateway/server-methods.js +53 -0
  248. package/dist/gateway/server-providers.js +644 -0
  249. package/dist/gateway/server-shared.js +1 -0
  250. package/dist/gateway/server-utils.js +35 -0
  251. package/dist/gateway/server.js +1437 -0
  252. package/dist/gateway/session-utils.js +216 -0
  253. package/dist/gateway/ws-log.js +349 -0
  254. package/dist/gateway/ws-logging.js +8 -0
  255. package/dist/globals.js +41 -0
  256. package/dist/hooks/gmail-ops.js +236 -0
  257. package/dist/hooks/gmail-setup-utils.js +278 -0
  258. package/dist/hooks/gmail-watcher.js +175 -0
  259. package/dist/hooks/gmail.js +177 -0
  260. package/dist/imessage/client.js +165 -0
  261. package/dist/imessage/index.js +3 -0
  262. package/dist/imessage/monitor.js +272 -0
  263. package/dist/imessage/probe.js +26 -0
  264. package/dist/imessage/send.js +83 -0
  265. package/dist/imessage/targets.js +176 -0
  266. package/dist/index.js +50 -0
  267. package/dist/infra/agent-events.js +46 -0
  268. package/dist/infra/binaries.js +9 -0
  269. package/dist/infra/bonjour-discovery.js +163 -0
  270. package/dist/infra/bonjour.js +200 -0
  271. package/dist/infra/bridge/server.js +562 -0
  272. package/dist/infra/canvas-host-url.js +54 -0
  273. package/dist/infra/env.js +8 -0
  274. package/dist/infra/errors.js +28 -0
  275. package/dist/infra/gateway-lock.js +8 -0
  276. package/dist/infra/heartbeat-events.js +21 -0
  277. package/dist/infra/heartbeat-runner.js +453 -0
  278. package/dist/infra/heartbeat-wake.js +61 -0
  279. package/dist/infra/is-main.js +37 -0
  280. package/dist/infra/machine-name.js +40 -0
  281. package/dist/infra/node-pairing.js +211 -0
  282. package/dist/infra/pam.js +42 -0
  283. package/dist/infra/path-env.js +92 -0
  284. package/dist/infra/ports.js +87 -0
  285. package/dist/infra/provider-summary.js +80 -0
  286. package/dist/infra/restart.js +29 -0
  287. package/dist/infra/retry.js +16 -0
  288. package/dist/infra/runtime-guard.js +59 -0
  289. package/dist/infra/system-events.js +44 -0
  290. package/dist/infra/system-presence.js +216 -0
  291. package/dist/infra/tailnet.js +46 -0
  292. package/dist/infra/tailscale.js +149 -0
  293. package/dist/infra/voicewake.js +77 -0
  294. package/dist/infra/widearea-dns.js +123 -0
  295. package/dist/infra/ws.js +13 -0
  296. package/dist/logger.js +52 -0
  297. package/dist/logging.js +490 -0
  298. package/dist/macos/gateway-daemon.js +141 -0
  299. package/dist/macos/relay.js +46 -0
  300. package/dist/media/constants.js +33 -0
  301. package/dist/media/host.js +42 -0
  302. package/dist/media/image-ops.js +121 -0
  303. package/dist/media/mime.js +115 -0
  304. package/dist/media/parse.js +81 -0
  305. package/dist/media/server.js +64 -0
  306. package/dist/media/store.js +139 -0
  307. package/dist/process/command-queue.js +97 -0
  308. package/dist/process/exec.js +75 -0
  309. package/dist/protocol.schema.json +2918 -0
  310. package/dist/provider-web.js +8 -0
  311. package/dist/providers/web/index.js +2 -0
  312. package/dist/runtime.js +8 -0
  313. package/dist/sessions/send-policy.js +68 -0
  314. package/dist/signal/client.js +134 -0
  315. package/dist/signal/daemon.js +69 -0
  316. package/dist/signal/index.js +3 -0
  317. package/dist/signal/monitor.js +336 -0
  318. package/dist/signal/probe.js +46 -0
  319. package/dist/signal/send.js +91 -0
  320. package/dist/slack/actions.js +97 -0
  321. package/dist/slack/index.js +5 -0
  322. package/dist/slack/monitor.js +1029 -0
  323. package/dist/slack/probe.js +47 -0
  324. package/dist/slack/send.js +131 -0
  325. package/dist/slack/token.js +10 -0
  326. package/dist/telegram/bot.js +394 -0
  327. package/dist/telegram/download.js +34 -0
  328. package/dist/telegram/index.js +4 -0
  329. package/dist/telegram/monitor.js +47 -0
  330. package/dist/telegram/probe.js +63 -0
  331. package/dist/telegram/proxy.js +9 -0
  332. package/dist/telegram/send.js +138 -0
  333. package/dist/telegram/token.js +30 -0
  334. package/dist/telegram/webhook-set.js +12 -0
  335. package/dist/telegram/webhook.js +56 -0
  336. package/dist/tui/commands.js +74 -0
  337. package/dist/tui/components/assistant-message.js +16 -0
  338. package/dist/tui/components/chat-log.js +92 -0
  339. package/dist/tui/components/custom-editor.js +53 -0
  340. package/dist/tui/components/selectors.js +8 -0
  341. package/dist/tui/components/tool-execution.js +111 -0
  342. package/dist/tui/components/user-message.js +17 -0
  343. package/dist/tui/gateway-chat.js +140 -0
  344. package/dist/tui/layout.js +41 -0
  345. package/dist/tui/message-list.js +57 -0
  346. package/dist/tui/theme/theme.js +80 -0
  347. package/dist/tui/theme.js +25 -0
  348. package/dist/tui/tui.js +708 -0
  349. package/dist/utils.js +133 -0
  350. package/dist/version.js +18 -0
  351. package/dist/web/active-listener.js +7 -0
  352. package/dist/web/auto-reply.js +1203 -0
  353. package/dist/web/inbound.js +481 -0
  354. package/dist/web/login-qr.js +204 -0
  355. package/dist/web/login.js +59 -0
  356. package/dist/web/media.js +148 -0
  357. package/dist/web/outbound.js +67 -0
  358. package/dist/web/qr-image.js +97 -0
  359. package/dist/web/reconnect.js +60 -0
  360. package/dist/web/reply-heartbeat-wake.js +61 -0
  361. package/dist/web/session.js +346 -0
  362. package/dist/wizard/clack-prompter.js +56 -0
  363. package/dist/wizard/onboarding.js +452 -0
  364. package/dist/wizard/prompts.js +6 -0
  365. package/dist/wizard/session.js +203 -0
  366. package/docs/AGENTS.default.md +116 -0
  367. package/docs/CNAME +1 -0
  368. package/docs/RELEASING.md +64 -0
  369. package/docs/_config.yml +51 -0
  370. package/docs/_layouts/default.html +145 -0
  371. package/docs/agent-send.md +21 -0
  372. package/docs/agent.md +104 -0
  373. package/docs/android/connect.md +131 -0
  374. package/docs/architecture.md +89 -0
  375. package/docs/assets/markdown.css +130 -0
  376. package/docs/assets/pixel-lobster.svg +60 -0
  377. package/docs/assets/terminal.css +497 -0
  378. package/docs/assets/theme.js +55 -0
  379. package/docs/audio.md +50 -0
  380. package/docs/background-process.md +74 -0
  381. package/docs/bash.md +32 -0
  382. package/docs/bonjour.md +159 -0
  383. package/docs/browser.md +289 -0
  384. package/docs/camera.md +152 -0
  385. package/docs/clawd.md +199 -0
  386. package/docs/clawdbot-mac.md +104 -0
  387. package/docs/configuration.md +1177 -0
  388. package/docs/control-api.md +49 -0
  389. package/docs/control-ui.md +83 -0
  390. package/docs/cron.md +374 -0
  391. package/docs/dashboard.md +17 -0
  392. package/docs/device-models.md +46 -0
  393. package/docs/discord.md +293 -0
  394. package/docs/discovery.md +112 -0
  395. package/docs/docker.md +251 -0
  396. package/docs/docs.json +86 -0
  397. package/docs/doctor.md +47 -0
  398. package/docs/elevated.md +31 -0
  399. package/docs/faq.md +640 -0
  400. package/docs/gateway/pairing.md +109 -0
  401. package/docs/gateway-lock.md +28 -0
  402. package/docs/gateway.md +174 -0
  403. package/docs/gmail-pubsub.md +191 -0
  404. package/docs/grammy.md +27 -0
  405. package/docs/group-messages.md +71 -0
  406. package/docs/groups.md +78 -0
  407. package/docs/health.md +28 -0
  408. package/docs/heartbeat.md +64 -0
  409. package/docs/images.md +52 -0
  410. package/docs/imessage.md +63 -0
  411. package/docs/index.md +182 -0
  412. package/docs/ios/connect.md +177 -0
  413. package/docs/ios/spec.md +236 -0
  414. package/docs/location-command.md +95 -0
  415. package/docs/logging.md +99 -0
  416. package/docs/lore.md +131 -0
  417. package/docs/mac/bun.md +133 -0
  418. package/docs/mac/canvas.md +161 -0
  419. package/docs/mac/child-process.md +72 -0
  420. package/docs/mac/dev-setup.md +81 -0
  421. package/docs/mac/health.md +28 -0
  422. package/docs/mac/icon.md +26 -0
  423. package/docs/mac/logging.md +51 -0
  424. package/docs/mac/menu-bar.md +69 -0
  425. package/docs/mac/peekaboo.md +170 -0
  426. package/docs/mac/permissions.md +40 -0
  427. package/docs/mac/release.md +76 -0
  428. package/docs/mac/remote.md +57 -0
  429. package/docs/mac/signing.md +41 -0
  430. package/docs/mac/skills.md +27 -0
  431. package/docs/mac/voice-overlay.md +52 -0
  432. package/docs/mac/voicewake.md +56 -0
  433. package/docs/mac/webchat.md +27 -0
  434. package/docs/mac/xpc.md +40 -0
  435. package/docs/models.md +90 -0
  436. package/docs/nix.md +49 -0
  437. package/docs/nodes.md +157 -0
  438. package/docs/onboarding-config-protocol.md +29 -0
  439. package/docs/onboarding.md +185 -0
  440. package/docs/presence.md +133 -0
  441. package/docs/queue.md +78 -0
  442. package/docs/refactor/browser-control-simplification.md +58 -0
  443. package/docs/refactor/canvas-a2ui.md +93 -0
  444. package/docs/refactor/cli-unification.md +64 -0
  445. package/docs/refactor/gateway-client.md +31 -0
  446. package/docs/refactor/gateway.md +99 -0
  447. package/docs/refactor/new-arch.md +171 -0
  448. package/docs/refactor/tui.md +26 -0
  449. package/docs/refactor/web-gateway-troubleshooting.md +37 -0
  450. package/docs/refactor/webagent-session.md +46 -0
  451. package/docs/remote-gateway-readme.md +148 -0
  452. package/docs/remote.md +66 -0
  453. package/docs/research/memory.md +227 -0
  454. package/docs/rpc.md +35 -0
  455. package/docs/security.md +168 -0
  456. package/docs/session-tool.md +119 -0
  457. package/docs/session.md +84 -0
  458. package/docs/sessions.md +8 -0
  459. package/docs/setup.md +118 -0
  460. package/docs/signal.md +113 -0
  461. package/docs/skills-config.md +58 -0
  462. package/docs/skills.md +149 -0
  463. package/docs/slack.md +158 -0
  464. package/docs/surface.md +20 -0
  465. package/docs/tailscale.md +71 -0
  466. package/docs/talk.md +79 -0
  467. package/docs/telegram.md +90 -0
  468. package/docs/templates/AGENTS.md +126 -0
  469. package/docs/templates/BOOTSTRAP.md +53 -0
  470. package/docs/templates/IDENTITY.md +17 -0
  471. package/docs/templates/SOUL.md +41 -0
  472. package/docs/templates/TOOLS.md +41 -0
  473. package/docs/templates/USER.md +22 -0
  474. package/docs/test.md +35 -0
  475. package/docs/thinking.md +46 -0
  476. package/docs/tools.md +248 -0
  477. package/docs/troubleshooting.md +227 -0
  478. package/docs/tui.md +69 -0
  479. package/docs/typebox.md +42 -0
  480. package/docs/voicewake.md +61 -0
  481. package/docs/web.md +115 -0
  482. package/docs/webchat.md +34 -0
  483. package/docs/webhook.md +132 -0
  484. package/docs/whatsapp-clawd.jpg +0 -0
  485. package/docs/whatsapp.md +142 -0
  486. package/docs/wizard.md +158 -0
  487. package/package.json +186 -0
  488. package/skills/apple-notes/SKILL.md +50 -0
  489. package/skills/apple-reminders/SKILL.md +67 -0
  490. package/skills/bear-notes/SKILL.md +79 -0
  491. package/skills/bird/SKILL.md +25 -0
  492. package/skills/blogwatcher/SKILL.md +46 -0
  493. package/skills/blucli/SKILL.md +27 -0
  494. package/skills/brave-search/SKILL.md +30 -0
  495. package/skills/brave-search/scripts/content.mjs +53 -0
  496. package/skills/brave-search/scripts/search.mjs +79 -0
  497. package/skills/camsnap/SKILL.md +25 -0
  498. package/skills/clawdhub/SKILL.md +53 -0
  499. package/skills/coding-agent/SKILL.md +275 -0
  500. package/skills/discord/SKILL.md +369 -0
  501. package/skills/eightctl/SKILL.md +29 -0
  502. package/skills/food-order/SKILL.md +41 -0
  503. package/skills/gemini/SKILL.md +23 -0
  504. package/skills/gifgrep/SKILL.md +47 -0
  505. package/skills/github/SKILL.md +47 -0
  506. package/skills/gog/SKILL.md +36 -0
  507. package/skills/goplaces/SKILL.md +30 -0
  508. package/skills/imsg/SKILL.md +25 -0
  509. package/skills/local-places/SERVER_README.md +101 -0
  510. package/skills/local-places/SKILL.md +91 -0
  511. package/skills/local-places/pyproject.toml +27 -0
  512. package/skills/local-places/src/local_places/__init__.py +2 -0
  513. package/skills/local-places/src/local_places/__pycache__/__init__.cpython-314.pyc +0 -0
  514. package/skills/local-places/src/local_places/__pycache__/google_places.cpython-314.pyc +0 -0
  515. package/skills/local-places/src/local_places/__pycache__/main.cpython-314.pyc +0 -0
  516. package/skills/local-places/src/local_places/__pycache__/schemas.cpython-314.pyc +0 -0
  517. package/skills/local-places/src/local_places/google_places.py +314 -0
  518. package/skills/local-places/src/local_places/main.py +65 -0
  519. package/skills/local-places/src/local_places/schemas.py +107 -0
  520. package/skills/mcporter/SKILL.md +38 -0
  521. package/skills/nano-banana-pro/SKILL.md +29 -0
  522. package/skills/nano-banana-pro/scripts/generate_image.py +167 -0
  523. package/skills/nano-pdf/SKILL.md +20 -0
  524. package/skills/notion/SKILL.md +156 -0
  525. package/skills/obsidian/SKILL.md +55 -0
  526. package/skills/openai-image-gen/SKILL.md +31 -0
  527. package/skills/openai-image-gen/scripts/gen.py +173 -0
  528. package/skills/openai-whisper/SKILL.md +19 -0
  529. package/skills/openai-whisper-api/SKILL.md +43 -0
  530. package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
  531. package/skills/openhue/SKILL.md +30 -0
  532. package/skills/oracle/SKILL.md +105 -0
  533. package/skills/ordercli/SKILL.md +47 -0
  534. package/skills/peekaboo/SKILL.md +153 -0
  535. package/skills/qmd/SKILL.md +26 -0
  536. package/skills/sag/SKILL.md +62 -0
  537. package/skills/slack/SKILL.md +143 -0
  538. package/skills/songsee/SKILL.md +29 -0
  539. package/skills/sonoscli/SKILL.md +26 -0
  540. package/skills/spotify-player/SKILL.md +34 -0
  541. package/skills/summarize/SKILL.md +49 -0
  542. package/skills/things-mac/SKILL.md +61 -0
  543. package/skills/tmux/SKILL.md +121 -0
  544. package/skills/tmux/scripts/find-sessions.sh +112 -0
  545. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  546. package/skills/trello/SKILL.md +84 -0
  547. package/skills/video-frames/SKILL.md +29 -0
  548. package/skills/video-frames/scripts/frame.sh +81 -0
  549. package/skills/wacli/SKILL.md +42 -0
  550. 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(/&nbsp;/g, " ")
27
+ .replace(/&amp;/g, "&")
28
+ .replace(/&lt;/g, "<")
29
+ .replace(/&gt;/g, ">")
30
+ .replace(/&quot;/g, '"')
31
+ .replace(/&#39;/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.