clawdbot 2026.1.4

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