@poolzin/pool-bot 2026.1.26 → 2026.1.30

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 (1186) hide show
  1. package/CHANGELOG.md +76 -1116
  2. package/LICENSE +21 -0
  3. package/README.md +58 -37
  4. package/assets/chrome-extension/README.md +2 -2
  5. package/assets/chrome-extension/background.js +5 -5
  6. package/assets/chrome-extension/manifest.json +3 -3
  7. package/assets/chrome-extension/options.html +5 -6
  8. package/assets/chrome-extension/options.js +1 -1
  9. package/dist/acp/client.js +5 -5
  10. package/dist/acp/server.js +1 -1
  11. package/dist/acp/types.js +2 -2
  12. package/dist/agents/agent-paths.js +3 -3
  13. package/dist/agents/auth-health.js +2 -6
  14. package/dist/agents/auth-profiles/doctor.js +1 -1
  15. package/dist/agents/auth-profiles/external-cli-sync.js +5 -150
  16. package/dist/agents/auth-profiles/oauth.js +26 -7
  17. package/dist/agents/auth-profiles/paths.js +3 -3
  18. package/dist/agents/auth-profiles/store.js +5 -13
  19. package/dist/agents/bash-tools.shared.js +8 -1
  20. package/dist/agents/cli-backends.js +8 -0
  21. package/dist/agents/cli-runner/helpers.js +3 -3
  22. package/dist/agents/cli-runner.js +2 -2
  23. package/dist/agents/compaction.js +3 -0
  24. package/dist/agents/context.js +4 -4
  25. package/dist/agents/docs-path.js +3 -3
  26. package/dist/agents/identity.js +1 -1
  27. package/dist/agents/memory-search.js +7 -2
  28. package/dist/agents/minimax-vlm.js +1 -1
  29. package/dist/agents/model-auth.js +1 -1
  30. package/dist/agents/model-catalog.js +4 -4
  31. package/dist/agents/model-fallback.js +22 -0
  32. package/dist/agents/model-selection.js +1 -1
  33. package/dist/agents/models-config.js +3 -3
  34. package/dist/agents/models-config.providers.js +4 -4
  35. package/dist/agents/pi-embedded-helpers/openai.js +1 -1
  36. package/dist/agents/pi-embedded-runner/cache-ttl.js +1 -1
  37. package/dist/agents/pi-embedded-runner/compact.js +8 -8
  38. package/dist/agents/pi-embedded-runner/extensions.js +5 -0
  39. package/dist/agents/pi-embedded-runner/model.js +2 -2
  40. package/dist/agents/pi-embedded-runner/run/attempt.js +10 -6
  41. package/dist/agents/pi-embedded-runner/run.js +4 -4
  42. package/dist/agents/pi-embedded-runner/sandbox-info.js +1 -4
  43. package/dist/agents/pi-embedded-runner/utils.js +1 -1
  44. package/dist/agents/pi-embedded-utils.js +7 -1
  45. package/dist/agents/pi-extensions/compaction-safeguard-runtime.js +20 -0
  46. package/dist/agents/pi-extensions/compaction-safeguard.js +32 -3
  47. package/dist/agents/pi-tools.js +25 -15
  48. package/dist/agents/pi-tools.policy.js +34 -1
  49. package/dist/agents/pi-tools.read.js +2 -2
  50. package/dist/agents/{clawdbot-tools.js → poolbot-tools.js} +2 -5
  51. package/dist/agents/sandbox/browser.js +5 -7
  52. package/dist/agents/sandbox/config.js +0 -12
  53. package/dist/agents/sandbox/constants.js +8 -8
  54. package/dist/agents/sandbox/context.js +3 -3
  55. package/dist/agents/sandbox/docker.js +8 -8
  56. package/dist/agents/sandbox/runtime-status.js +1 -1
  57. package/dist/agents/session-transcript-repair.js +1 -1
  58. package/dist/agents/session-write-lock.js +68 -0
  59. package/dist/agents/skills/config.js +9 -8
  60. package/dist/agents/skills/env-overrides.js +1 -1
  61. package/dist/agents/skills/frontmatter.js +15 -14
  62. package/dist/agents/skills/workspace.js +7 -7
  63. package/dist/agents/skills-install.js +1 -1
  64. package/dist/agents/skills-status.js +12 -12
  65. package/dist/agents/subagent-registry.store.js +2 -2
  66. package/dist/agents/system-prompt.js +24 -35
  67. package/dist/agents/tool-images.js +1 -1
  68. package/dist/agents/tool-policy.js +8 -2
  69. package/dist/agents/tools/browser-tool.js +19 -79
  70. package/dist/agents/tools/browser-tool.schema.js +1 -2
  71. package/dist/agents/tools/cron-tool.js +44 -1
  72. package/dist/agents/tools/discord-actions-guild.js +5 -1
  73. package/dist/agents/tools/image-tool.js +2 -2
  74. package/dist/agents/tools/memory-tool.js +2 -1
  75. package/dist/agents/tools/message-tool.js +1 -0
  76. package/dist/agents/tools/sessions-send-helpers.js +17 -2
  77. package/dist/agents/tools/telegram-actions.js +93 -1
  78. package/dist/agents/tools/web-fetch.js +123 -103
  79. package/dist/agents/tools/web-search.js +7 -7
  80. package/dist/agents/workspace.js +36 -0
  81. package/dist/auto-reply/commands-registry.data.js +68 -3
  82. package/dist/auto-reply/commands-registry.js +14 -11
  83. package/dist/auto-reply/reply/agent-runner-execution.js +21 -3
  84. package/dist/auto-reply/reply/agent-runner-memory.js +5 -0
  85. package/dist/auto-reply/reply/bash-command.js +2 -2
  86. package/dist/auto-reply/reply/commands-context-report.js +2 -2
  87. package/dist/auto-reply/reply/commands-info.js +50 -5
  88. package/dist/auto-reply/reply/commands-session.js +4 -4
  89. package/dist/auto-reply/reply/commands-tts.js +61 -63
  90. package/dist/auto-reply/reply/directive-handling.shared.js +1 -1
  91. package/dist/auto-reply/reply/dispatch-from-config.js +65 -1
  92. package/dist/auto-reply/reply/followup-runner.js +5 -0
  93. package/dist/auto-reply/reply/get-reply-inline-actions.js +2 -2
  94. package/dist/auto-reply/reply/get-reply-run.js +4 -0
  95. package/dist/auto-reply/reply/groups.js +1 -1
  96. package/dist/auto-reply/reply/history.js +23 -0
  97. package/dist/auto-reply/reply/reply-elevated.js +1 -1
  98. package/dist/auto-reply/reply/session-updates.js +6 -1
  99. package/dist/auto-reply/reply/stage-sandbox-media.js +1 -1
  100. package/dist/auto-reply/status.js +142 -50
  101. package/dist/browser/bridge-server.js +1 -3
  102. package/dist/browser/client-actions-core.js +13 -7
  103. package/dist/browser/client-actions-observe.js +14 -8
  104. package/dist/browser/client-actions-state.js +21 -15
  105. package/dist/browser/client-fetch.js +74 -61
  106. package/dist/browser/client.js +19 -21
  107. package/dist/browser/config.js +13 -26
  108. package/dist/browser/constants.js +1 -1
  109. package/dist/browser/control-service.js +72 -0
  110. package/dist/browser/extension-relay.js +3 -3
  111. package/dist/browser/pw-session.js +41 -4
  112. package/dist/browser/pw-tools-core.downloads.js +1 -1
  113. package/dist/browser/pw-tools-core.interactions.js +5 -5
  114. package/dist/browser/pw-tools-core.responses.js +1 -1
  115. package/dist/browser/routes/agent.act.js +13 -0
  116. package/dist/browser/routes/agent.debug.js +1 -1
  117. package/dist/browser/routes/basic.js +0 -1
  118. package/dist/browser/routes/dispatcher.js +86 -0
  119. package/dist/browser/server-context.js +3 -3
  120. package/dist/browser/server.js +7 -9
  121. package/dist/build-info.json +3 -3
  122. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  123. package/dist/canvas-host/a2ui/a2ui.bundle.js +1620 -1618
  124. package/dist/canvas-host/a2ui/index.html +28 -28
  125. package/dist/canvas-host/a2ui.js +27 -21
  126. package/dist/canvas-host/server.js +66 -32
  127. package/dist/channels/plugins/actions/discord/handle-action.guild-admin.js +5 -1
  128. package/dist/channels/plugins/actions/telegram.js +60 -7
  129. package/dist/channels/plugins/catalog.js +6 -4
  130. package/dist/channels/plugins/group-mentions.js +48 -1
  131. package/dist/channels/plugins/helpers.js +2 -2
  132. package/dist/channels/plugins/message-action-names.js +1 -0
  133. package/dist/channels/plugins/onboarding/imessage.js +1 -1
  134. package/dist/channels/plugins/onboarding/signal.js +2 -2
  135. package/dist/channels/plugins/onboarding/slack.js +4 -4
  136. package/dist/channels/plugins/onboarding/telegram.js +17 -9
  137. package/dist/channels/plugins/onboarding/whatsapp.js +4 -4
  138. package/dist/channels/plugins/outbound/telegram.js +38 -0
  139. package/dist/channels/plugins/pairing-message.js +1 -1
  140. package/dist/channels/plugins/status-issues/bluebubbles.js +1 -1
  141. package/dist/channels/plugins/status-issues/whatsapp.js +2 -2
  142. package/dist/channels/registry.js +1 -1
  143. package/dist/cli/acp-cli.js +2 -2
  144. package/dist/cli/argv.js +14 -7
  145. package/dist/cli/banner.js +3 -1
  146. package/dist/cli/browser-cli-actions-input/register.element.js +72 -44
  147. package/dist/cli/browser-cli-actions-input/register.files-downloads.js +55 -35
  148. package/dist/cli/browser-cli-actions-input/register.form-wait-eval.js +41 -28
  149. package/dist/cli/browser-cli-actions-input/register.navigation.js +23 -14
  150. package/dist/cli/browser-cli-actions-input/shared.js +10 -3
  151. package/dist/cli/browser-cli-actions-observe.js +29 -21
  152. package/dist/cli/browser-cli-debug.js +49 -35
  153. package/dist/cli/browser-cli-examples.js +29 -29
  154. package/dist/cli/browser-cli-extension.js +8 -8
  155. package/dist/cli/browser-cli-inspect.js +23 -17
  156. package/dist/cli/browser-cli-manage.js +106 -56
  157. package/dist/cli/browser-cli-shared.js +34 -1
  158. package/dist/cli/browser-cli-state.cookies-storage.js +53 -39
  159. package/dist/cli/browser-cli-state.js +90 -64
  160. package/dist/cli/browser-cli.js +4 -5
  161. package/dist/cli/channels-cli.js +1 -1
  162. package/dist/cli/cli-name.js +26 -0
  163. package/dist/cli/command-format.js +11 -7
  164. package/dist/cli/config-cli.js +2 -2
  165. package/dist/cli/cron-cli/register.js +1 -1
  166. package/dist/cli/daemon-cli/install.js +1 -1
  167. package/dist/cli/daemon-cli/register.js +1 -1
  168. package/dist/cli/daemon-cli/shared.js +5 -3
  169. package/dist/cli/daemon-cli/status.print.js +6 -6
  170. package/dist/cli/directory-cli.js +1 -1
  171. package/dist/cli/dns-cli.js +7 -7
  172. package/dist/cli/docs-cli.js +2 -2
  173. package/dist/cli/exec-approvals-cli.js +2 -2
  174. package/dist/cli/gateway-cli/dev.js +4 -4
  175. package/dist/cli/gateway-cli/register.js +1 -1
  176. package/dist/cli/gateway-cli/run.js +11 -8
  177. package/dist/cli/gateway-cli/shared.js +4 -4
  178. package/dist/cli/hooks-cli.js +3 -3
  179. package/dist/cli/logs-cli.js +3 -3
  180. package/dist/cli/memory-cli.js +1 -1
  181. package/dist/cli/models-cli.js +2 -2
  182. package/dist/cli/node-cli/daemon.js +2 -2
  183. package/dist/cli/node-cli/register.js +1 -1
  184. package/dist/cli/nodes-camera.js +3 -1
  185. package/dist/cli/nodes-canvas.js +3 -1
  186. package/dist/cli/nodes-cli/register.canvas.js +1 -1
  187. package/dist/cli/nodes-cli/register.js +1 -1
  188. package/dist/cli/nodes-screen.js +1 -1
  189. package/dist/cli/pairing-cli.js +3 -3
  190. package/dist/cli/plugin-registry.js +2 -2
  191. package/dist/cli/plugins-cli.js +3 -3
  192. package/dist/cli/profile.js +2 -2
  193. package/dist/cli/program/command-registry.js +5 -0
  194. package/dist/cli/program/config-guard.js +1 -1
  195. package/dist/cli/program/help.js +15 -16
  196. package/dist/cli/program/message/register.send.js +2 -1
  197. package/dist/cli/program/preaction.js +4 -2
  198. package/dist/cli/program/register.agent.js +12 -12
  199. package/dist/cli/program/register.completion.js +355 -0
  200. package/dist/cli/program/register.configure.js +1 -1
  201. package/dist/cli/program/register.maintenance.js +4 -4
  202. package/dist/cli/program/register.message.js +5 -5
  203. package/dist/cli/program/register.onboard.js +5 -3
  204. package/dist/cli/program/register.setup.js +2 -2
  205. package/dist/cli/program/register.status-health-sessions.js +13 -13
  206. package/dist/cli/run-main.js +11 -4
  207. package/dist/cli/sandbox-cli.js +19 -19
  208. package/dist/cli/security-cli.js +18 -8
  209. package/dist/cli/skills-cli.js +3 -3
  210. package/dist/cli/system-cli.js +1 -1
  211. package/dist/cli/tagline.js +1 -1
  212. package/dist/cli/tui-cli.js +1 -1
  213. package/dist/cli/update-cli.js +58 -42
  214. package/dist/cli/webhooks-cli.js +6 -6
  215. package/dist/commands/agent-via-gateway.js +1 -1
  216. package/dist/commands/agent.js +2 -1
  217. package/dist/commands/agents.command-shared.js +1 -1
  218. package/dist/commands/agents.commands.add.js +2 -3
  219. package/dist/commands/agents.commands.list.js +1 -1
  220. package/dist/commands/auth-choice-options.js +4 -54
  221. package/dist/commands/auth-choice.apply.anthropic.js +6 -109
  222. package/dist/commands/auth-choice.apply.openai.js +1 -33
  223. package/dist/commands/auth-choice.apply.plugin-provider.js +2 -2
  224. package/dist/commands/channels/list.js +2 -2
  225. package/dist/commands/channels/shared.js +1 -1
  226. package/dist/commands/channels/status.js +1 -1
  227. package/dist/commands/chutes-oauth.js +1 -1
  228. package/dist/commands/configure.channels.js +4 -4
  229. package/dist/commands/configure.gateway-auth.js +1 -8
  230. package/dist/commands/configure.gateway.js +1 -10
  231. package/dist/commands/configure.wizard.js +11 -11
  232. package/dist/commands/daemon-install-helpers.js +1 -1
  233. package/dist/commands/dashboard.js +1 -1
  234. package/dist/commands/docs.js +5 -5
  235. package/dist/commands/doctor-auth.js +122 -3
  236. package/dist/commands/doctor-config-flow.js +7 -7
  237. package/dist/commands/doctor-format.js +2 -2
  238. package/dist/commands/doctor-gateway-daemon-flow.js +1 -1
  239. package/dist/commands/doctor-gateway-services.js +3 -3
  240. package/dist/commands/doctor-platform-notes.js +1 -1
  241. package/dist/commands/doctor-security.js +48 -1
  242. package/dist/commands/doctor-state-integrity.js +3 -3
  243. package/dist/commands/doctor-ui.js +2 -2
  244. package/dist/commands/doctor-update.js +4 -4
  245. package/dist/commands/doctor-workspace-status.js +2 -2
  246. package/dist/commands/doctor-workspace.js +4 -4
  247. package/dist/commands/doctor.js +13 -12
  248. package/dist/commands/gateway-status.js +2 -2
  249. package/dist/commands/models/auth.js +23 -22
  250. package/dist/commands/models/list.probe.js +2 -2
  251. package/dist/commands/models/list.registry.js +4 -4
  252. package/dist/commands/models/list.status-command.js +8 -9
  253. package/dist/commands/onboard-auth.credentials.js +2 -2
  254. package/dist/commands/onboard-channels.js +3 -3
  255. package/dist/commands/onboard-helpers.js +4 -4
  256. package/dist/commands/onboard-hooks.js +4 -4
  257. package/dist/commands/onboard-non-interactive/local/auth-choice.js +38 -34
  258. package/dist/commands/onboard-non-interactive/local/gateway-config.js +7 -4
  259. package/dist/commands/onboard-non-interactive/local.js +1 -1
  260. package/dist/commands/onboard-non-interactive/remote.js +1 -1
  261. package/dist/commands/onboard-non-interactive.js +1 -1
  262. package/dist/commands/onboard-remote.js +2 -2
  263. package/dist/commands/onboard-skills.js +2 -2
  264. package/dist/commands/onboard.js +25 -4
  265. package/dist/commands/onboarding/plugin-install.js +2 -2
  266. package/dist/commands/reset.js +3 -3
  267. package/dist/commands/sandbox-display.js +1 -1
  268. package/dist/commands/sandbox-explain.js +2 -2
  269. package/dist/commands/setup.js +2 -2
  270. package/dist/commands/signal-install.js +2 -2
  271. package/dist/commands/status-all/diagnosis.js +1 -1
  272. package/dist/commands/status-all/report-lines.js +1 -1
  273. package/dist/commands/status-all.js +3 -3
  274. package/dist/commands/status.command.js +9 -9
  275. package/dist/commands/status.update.js +3 -3
  276. package/dist/commands/uninstall.js +4 -4
  277. package/dist/compat/legacy-names.js +5 -0
  278. package/dist/config/config.js +1 -1
  279. package/dist/config/group-policy.js +69 -0
  280. package/dist/config/io.js +17 -5
  281. package/dist/config/legacy.migrations.part-3.js +3 -0
  282. package/dist/config/logging.js +3 -3
  283. package/dist/config/paths.js +44 -14
  284. package/dist/config/schema.js +23 -11
  285. package/dist/config/sessions/transcript.js +1 -1
  286. package/dist/config/types.js +1 -1
  287. package/dist/config/types.poolbot.js +1 -0
  288. package/dist/config/validation.js +2 -2
  289. package/dist/config/version.js +4 -4
  290. package/dist/config/zod-schema.agent-defaults.js +1 -0
  291. package/dist/config/zod-schema.agent-runtime.js +39 -7
  292. package/dist/config/zod-schema.hooks.js +2 -0
  293. package/dist/config/zod-schema.js +9 -3
  294. package/dist/config/zod-schema.providers-core.js +23 -0
  295. package/dist/config/zod-schema.providers-whatsapp.js +3 -0
  296. package/dist/control-ui/assets/index-CIRDm-Lu.css +1 -0
  297. package/dist/control-ui/assets/{index-Cl-Y9zqE.js → index-CmNMuoem.js} +620 -578
  298. package/dist/control-ui/assets/index-CmNMuoem.js.map +1 -0
  299. package/dist/control-ui/index.html +4 -4
  300. package/dist/cron/isolated-agent/run.js +38 -3
  301. package/dist/daemon/constants.js +16 -16
  302. package/dist/daemon/inspect.js +12 -12
  303. package/dist/daemon/paths.js +1 -1
  304. package/dist/daemon/program-args.js +1 -1
  305. package/dist/daemon/systemd-hints.js +1 -1
  306. package/dist/daemon/systemd-unit.js +1 -1
  307. package/dist/discord/monitor/listeners.js +25 -1
  308. package/dist/discord/monitor/native-command.js +7 -5
  309. package/dist/discord/monitor/presence-cache.js +38 -0
  310. package/dist/discord/monitor/provider.js +21 -7
  311. package/dist/entry.js +4 -4
  312. package/dist/gateway/auth.js +52 -19
  313. package/dist/gateway/hooks/index.js +53 -0
  314. package/dist/gateway/hooks/lifecycle-hooks-integration.js +256 -0
  315. package/dist/gateway/hooks/lifecycle-hooks.js +236 -0
  316. package/dist/gateway/hooks/progressive-disclosure-details.js +237 -0
  317. package/dist/gateway/hooks/progressive-disclosure-index.js +354 -0
  318. package/dist/gateway/hooks/progressive-disclosure-timeline.js +231 -0
  319. package/dist/gateway/hooks/progressive-disclosure-types.js +65 -0
  320. package/dist/gateway/hooks/progressive-disclosure.js +242 -0
  321. package/dist/gateway/hooks/tool-usage-capture.js +253 -0
  322. package/dist/gateway/hooks/tool-usage-storage.js +144 -0
  323. package/dist/gateway/hooks-mapping.js +18 -4
  324. package/dist/gateway/hooks.js +5 -7
  325. package/dist/gateway/http-utils.js +3 -5
  326. package/dist/gateway/net.js +1 -1
  327. package/dist/gateway/openai-http.js +3 -3
  328. package/dist/gateway/openresponses-http.js +4 -4
  329. package/dist/gateway/protocol/client-info.js +5 -5
  330. package/dist/gateway/protocol/schema/logs-chat.js +1 -1
  331. package/dist/gateway/server/health-state.js +3 -3
  332. package/dist/gateway/server/hooks.js +1 -0
  333. package/dist/gateway/server/ws-connection/message-handler.js +44 -35
  334. package/dist/gateway/server-browser.js +14 -3
  335. package/dist/gateway/server-chat.js +28 -2
  336. package/dist/gateway/server-discovery-runtime.js +25 -17
  337. package/dist/gateway/server-discovery.js +5 -5
  338. package/dist/gateway/server-http.js +9 -3
  339. package/dist/gateway/server-methods/agent.js +2 -0
  340. package/dist/gateway/server-methods/browser.js +204 -0
  341. package/dist/gateway/server-methods/chat.js +5 -0
  342. package/dist/gateway/server-methods/config.js +8 -8
  343. package/dist/gateway/server-methods/logs.js +1 -1
  344. package/dist/gateway/server-methods/nodes.js +2 -0
  345. package/dist/gateway/server-methods/skills.js +3 -3
  346. package/dist/gateway/server-methods/update.js +2 -2
  347. package/dist/gateway/server-methods-list.js +1 -0
  348. package/dist/gateway/server-methods.js +3 -0
  349. package/dist/gateway/server-plugins.js +2 -2
  350. package/dist/gateway/server-restart-sentinel.js +10 -5
  351. package/dist/gateway/server-runtime-config.js +5 -2
  352. package/dist/gateway/server.impl.js +11 -6
  353. package/dist/gateway/session-utils.fs.js +1 -1
  354. package/dist/gateway/session-utils.js +31 -11
  355. package/dist/gateway/test-helpers.mocks.js +5 -5
  356. package/dist/gateway/test-helpers.server.js +30 -11
  357. package/dist/gateway/tools-invoke-http.js +15 -8
  358. package/dist/hooks/bundled/boot-md/HOOK.md +3 -3
  359. package/dist/hooks/bundled/command-logger/HOOK.md +12 -12
  360. package/dist/hooks/bundled/command-logger/handler.js +1 -1
  361. package/dist/hooks/bundled/session-memory/HOOK.md +4 -4
  362. package/dist/hooks/bundled/session-memory/handler.js +2 -2
  363. package/dist/hooks/bundled/soul-evil/HOOK.md +5 -5
  364. package/dist/hooks/bundled-dir.js +1 -1
  365. package/dist/hooks/config.js +8 -7
  366. package/dist/hooks/frontmatter.js +16 -15
  367. package/dist/hooks/gmail-ops.js +4 -4
  368. package/dist/hooks/hooks-status.js +13 -13
  369. package/dist/hooks/install.js +8 -7
  370. package/dist/hooks/internal-hooks.js +1 -1
  371. package/dist/hooks/llm-slug-generator.js +1 -1
  372. package/dist/hooks/loader.js +3 -3
  373. package/dist/hooks/plugin-hooks.js +8 -8
  374. package/dist/hooks/workspace.js +10 -9
  375. package/dist/imessage/monitor/monitor-provider.js +16 -3
  376. package/dist/index.js +4 -4
  377. package/dist/infra/agent-events.js +3 -0
  378. package/dist/infra/bonjour-discovery.js +9 -9
  379. package/dist/infra/bonjour.js +19 -12
  380. package/dist/infra/device-identity.js +1 -1
  381. package/dist/infra/dotenv.js +1 -1
  382. package/dist/infra/exec-approvals.js +2 -2
  383. package/dist/infra/fs-safe.js +76 -0
  384. package/dist/infra/gateway-lock.js +1 -1
  385. package/dist/infra/heartbeat-visibility.js +14 -0
  386. package/dist/infra/heartbeat-wake.js +2 -2
  387. package/dist/infra/machine-name.js +1 -1
  388. package/dist/infra/net/ssrf.js +77 -1
  389. package/dist/infra/outbound/message-action-spec.js +1 -0
  390. package/dist/infra/outbound/targets.js +1 -1
  391. package/dist/infra/path-env.js +7 -7
  392. package/dist/infra/{clawdbot-root.js → poolbot-root.js} +3 -2
  393. package/dist/infra/ports-format.js +2 -2
  394. package/dist/infra/ports.js +2 -2
  395. package/dist/infra/provider-usage.auth.js +2 -4
  396. package/dist/infra/provider-usage.fetch.claude.js +1 -1
  397. package/dist/infra/provider-usage.fetch.minimax.js +1 -1
  398. package/dist/infra/restart-sentinel.js +1 -1
  399. package/dist/infra/restart.js +1 -1
  400. package/dist/infra/retry-policy.js +4 -1
  401. package/dist/infra/runtime-guard.js +2 -2
  402. package/dist/infra/shell-env.js +1 -1
  403. package/dist/infra/skills-remote.js +3 -3
  404. package/dist/infra/tailscale.js +63 -1
  405. package/dist/infra/tls/gateway.js +1 -1
  406. package/dist/infra/unhandled-rejections.js +89 -2
  407. package/dist/infra/update-check.js +2 -4
  408. package/dist/infra/update-global.js +5 -5
  409. package/dist/infra/update-runner.js +32 -8
  410. package/dist/infra/update-startup.js +3 -3
  411. package/dist/infra/warnings.js +1 -1
  412. package/dist/infra/widearea-dns.js +10 -10
  413. package/dist/line/monitor.js +1 -5
  414. package/dist/line/signature.js +11 -0
  415. package/dist/line/webhook.js +2 -6
  416. package/dist/logging/logger.js +4 -4
  417. package/dist/macos/gateway-daemon.js +2 -2
  418. package/dist/macos/relay.js +4 -4
  419. package/dist/media/host.js +1 -1
  420. package/dist/media/image-ops.js +1 -1
  421. package/dist/media/input-files.js +40 -32
  422. package/dist/media/server.js +39 -15
  423. package/dist/media/store.js +109 -53
  424. package/dist/media-understanding/attachments.js +1 -1
  425. package/dist/media-understanding/providers/image.js +2 -2
  426. package/dist/media-understanding/runner.js +33 -1
  427. package/dist/memory/batch-gemini.js +1 -1
  428. package/dist/memory/batch-openai.js +1 -1
  429. package/dist/memory/embeddings.js +1 -1
  430. package/dist/memory/index.js +5 -0
  431. package/dist/memory/manager.js +25 -2
  432. package/dist/node-host/runner.js +60 -56
  433. package/dist/pairing/pairing-messages.js +2 -2
  434. package/dist/plugin-sdk/index.js +1 -0
  435. package/dist/plugins/cli.js +2 -2
  436. package/dist/plugins/discovery.js +6 -5
  437. package/dist/plugins/install.js +8 -7
  438. package/dist/plugins/loader.js +10 -4
  439. package/dist/plugins/manifest-registry.js +2 -2
  440. package/dist/plugins/manifest.js +16 -1
  441. package/dist/plugins/providers.js +2 -2
  442. package/dist/plugins/registry.js +5 -5
  443. package/dist/plugins/runtime.js +1 -1
  444. package/dist/plugins/services.js +3 -3
  445. package/dist/plugins/status.js +2 -2
  446. package/dist/plugins/tools.js +2 -2
  447. package/dist/plugins/update.js +3 -3
  448. package/dist/providers/qwen-portal-oauth.js +1 -1
  449. package/dist/routing/session-key.js +17 -12
  450. package/dist/security/audit-extra.js +116 -69
  451. package/dist/security/audit-fs.js +78 -0
  452. package/dist/security/audit.js +121 -88
  453. package/dist/security/external-content.js +143 -0
  454. package/dist/security/fix.js +93 -8
  455. package/dist/security/windows-acl.js +162 -0
  456. package/dist/slack/monitor/media.js +32 -4
  457. package/dist/slack/monitor/message-handler/dispatch.js +2 -1
  458. package/dist/slack/monitor/slash.js +3 -3
  459. package/dist/slack/monitor.test-helpers.js +1 -1
  460. package/dist/telegram/api-logging.js +24 -0
  461. package/dist/telegram/bot/delivery.js +139 -22
  462. package/dist/telegram/bot-handlers.js +70 -8
  463. package/dist/telegram/bot-message-context.js +79 -21
  464. package/dist/telegram/bot-message-dispatch.js +64 -0
  465. package/dist/telegram/bot-native-commands.js +244 -94
  466. package/dist/telegram/bot.js +18 -2
  467. package/dist/telegram/fetch.js +25 -1
  468. package/dist/telegram/monitor.js +11 -3
  469. package/dist/telegram/network-config.js +23 -0
  470. package/dist/telegram/network-errors.js +103 -0
  471. package/dist/telegram/send.js +148 -4
  472. package/dist/telegram/sticker-cache.js +202 -0
  473. package/dist/telegram/webhook-set.js +13 -6
  474. package/dist/telegram/webhook.js +8 -3
  475. package/dist/terminal/links.js +1 -1
  476. package/dist/tts/tts.js +27 -22
  477. package/dist/tui/components/filterable-select-list.js +1 -1
  478. package/dist/tui/components/searchable-select-list.js +2 -1
  479. package/dist/tui/gateway-chat.js +1 -1
  480. package/dist/tui/tui.js +1 -1
  481. package/dist/utils.js +1 -1
  482. package/dist/version.js +1 -1
  483. package/dist/web/active-listener.js +1 -1
  484. package/dist/web/auth-store.js +1 -1
  485. package/dist/web/auto-reply/monitor/process-message.js +1 -1
  486. package/dist/web/auto-reply/monitor.js +1 -1
  487. package/dist/web/login.js +1 -1
  488. package/dist/web/session.js +2 -2
  489. package/dist/wizard/onboarding.finalize.js +24 -21
  490. package/dist/wizard/onboarding.gateway-config.js +1 -11
  491. package/dist/wizard/onboarding.js +22 -11
  492. package/docs/CNAME +1 -1
  493. package/docs/RELEASE_WORKFLOW.md +133 -0
  494. package/docs/RELEASE_WORKFOTS_COMPARISON.md +151 -0
  495. package/docs/WHATSAPP-HEARTBEAT-TROUBLESHOOTING.md +319 -0
  496. package/docs/WORKFOTS_OPTIMIZATION.md +138 -0
  497. package/docs/_config.yml +2 -2
  498. package/docs/_layouts/default.html +9 -9
  499. package/docs/adr/002-model-fallback-router.md +104 -0
  500. package/docs/assets/terminal.css +3 -0
  501. package/docs/assets/theme.js +1 -1
  502. package/docs/automation/auth-monitoring.md +7 -7
  503. package/docs/automation/cron-jobs.md +17 -17
  504. package/docs/automation/cron-vs-heartbeat.md +8 -8
  505. package/docs/automation/gmail-pubsub.md +23 -21
  506. package/docs/automation/poll.md +7 -7
  507. package/docs/automation/webhook.md +13 -8
  508. package/docs/bedrock.md +10 -10
  509. package/docs/brave-search.md +1 -1
  510. package/docs/broadcast-groups.md +4 -4
  511. package/docs/channels/bluebubbles.md +13 -12
  512. package/docs/channels/discord.md +21 -16
  513. package/docs/channels/googlechat.md +16 -16
  514. package/docs/channels/imessage.md +12 -12
  515. package/docs/channels/index.md +6 -4
  516. package/docs/channels/line.md +183 -0
  517. package/docs/channels/location.md +1 -1
  518. package/docs/channels/matrix.md +15 -15
  519. package/docs/channels/mattermost.md +8 -8
  520. package/docs/channels/msteams.md +30 -26
  521. package/docs/channels/nextcloud-talk.md +7 -7
  522. package/docs/channels/nostr.md +9 -9
  523. package/docs/channels/signal.md +9 -9
  524. package/docs/channels/slack.md +15 -13
  525. package/docs/channels/telegram.md +149 -20
  526. package/docs/channels/tlon.md +5 -5
  527. package/docs/channels/troubleshooting.md +2 -2
  528. package/docs/channels/twitch.md +366 -0
  529. package/docs/channels/whatsapp.md +25 -25
  530. package/docs/channels/zalo.md +8 -8
  531. package/docs/channels/zalouser.md +12 -12
  532. package/docs/cli/acp.md +24 -24
  533. package/docs/cli/agent.md +6 -6
  534. package/docs/cli/agents.md +9 -9
  535. package/docs/cli/approvals.md +14 -14
  536. package/docs/cli/browser.md +33 -35
  537. package/docs/cli/channels.md +21 -21
  538. package/docs/cli/config.md +15 -15
  539. package/docs/cli/configure.md +6 -6
  540. package/docs/cli/cron.md +5 -5
  541. package/docs/cli/dashboard.md +4 -4
  542. package/docs/cli/devices.md +13 -13
  543. package/docs/cli/directory.md +12 -12
  544. package/docs/cli/dns.md +5 -5
  545. package/docs/cli/docs.md +5 -5
  546. package/docs/cli/doctor.md +6 -6
  547. package/docs/cli/gateway.md +24 -24
  548. package/docs/cli/health.md +5 -5
  549. package/docs/cli/hooks.md +34 -34
  550. package/docs/cli/index.md +46 -52
  551. package/docs/cli/logs.md +6 -6
  552. package/docs/cli/memory.md +11 -11
  553. package/docs/cli/message.md +11 -11
  554. package/docs/cli/models.md +17 -17
  555. package/docs/cli/node.md +14 -14
  556. package/docs/cli/nodes.md +14 -14
  557. package/docs/cli/onboard.md +7 -6
  558. package/docs/cli/pairing.md +4 -4
  559. package/docs/cli/plugins.md +16 -16
  560. package/docs/cli/reset.md +5 -5
  561. package/docs/cli/sandbox.md +28 -28
  562. package/docs/cli/security.md +5 -5
  563. package/docs/cli/sessions.md +5 -5
  564. package/docs/cli/setup.md +6 -6
  565. package/docs/cli/skills.md +6 -6
  566. package/docs/cli/status.md +7 -7
  567. package/docs/cli/system.md +6 -6
  568. package/docs/cli/tui.md +5 -5
  569. package/docs/cli/uninstall.md +5 -5
  570. package/docs/cli/update.md +20 -20
  571. package/docs/cli/voicecall.md +9 -9
  572. package/docs/cli/webhooks.md +5 -5
  573. package/docs/concepts/agent-loop.md +5 -5
  574. package/docs/concepts/agent-workspace.md +20 -20
  575. package/docs/concepts/agent.md +12 -12
  576. package/docs/concepts/architecture.md +1 -1
  577. package/docs/concepts/channel-routing.md +4 -4
  578. package/docs/concepts/compaction.md +5 -5
  579. package/docs/concepts/context.md +6 -6
  580. package/docs/concepts/group-messages.md +6 -6
  581. package/docs/concepts/groups.md +41 -5
  582. package/docs/concepts/markdown-formatting.md +3 -3
  583. package/docs/concepts/memory.md +14 -14
  584. package/docs/concepts/messages.md +4 -4
  585. package/docs/concepts/model-failover.md +14 -14
  586. package/docs/concepts/model-providers.md +22 -22
  587. package/docs/concepts/models.md +27 -27
  588. package/docs/concepts/multi-agent.md +18 -18
  589. package/docs/concepts/oauth.md +31 -58
  590. package/docs/concepts/presence.md +2 -2
  591. package/docs/concepts/retry.md +1 -1
  592. package/docs/concepts/session-pruning.md +1 -1
  593. package/docs/concepts/session-tool.md +4 -4
  594. package/docs/concepts/session.md +14 -14
  595. package/docs/concepts/streaming.md +3 -3
  596. package/docs/concepts/system-prompt.md +11 -11
  597. package/docs/concepts/timezone.md +2 -2
  598. package/docs/concepts/typebox.md +2 -2
  599. package/docs/concepts/typing-indicators.md +2 -2
  600. package/docs/concepts/usage-tracking.md +3 -3
  601. package/docs/date-time.md +2 -2
  602. package/docs/debug/node-issue.md +4 -4
  603. package/docs/debugging.md +14 -14
  604. package/docs/diagnostics/flags.md +5 -5
  605. package/docs/docs.json +37 -7
  606. package/docs/environment.md +4 -4
  607. package/docs/experiments/plans/cron-add-hardening.md +1 -1
  608. package/docs/experiments/plans/openresponses-gateway.md +2 -2
  609. package/docs/experiments/research/memory.md +6 -6
  610. package/docs/gateway/authentication.md +33 -57
  611. package/docs/gateway/background-process.md +1 -1
  612. package/docs/gateway/bonjour.md +21 -21
  613. package/docs/gateway/bridge-protocol.md +2 -2
  614. package/docs/gateway/cli-backends.md +13 -12
  615. package/docs/gateway/configuration-examples.md +14 -14
  616. package/docs/gateway/configuration.md +145 -132
  617. package/docs/gateway/discovery.md +6 -6
  618. package/docs/gateway/doctor.md +26 -26
  619. package/docs/gateway/gateway-lock.md +1 -1
  620. package/docs/gateway/health.md +11 -11
  621. package/docs/gateway/heartbeat.md +5 -5
  622. package/docs/gateway/index.md +56 -56
  623. package/docs/gateway/local-models.md +2 -2
  624. package/docs/gateway/logging.md +8 -8
  625. package/docs/gateway/multiple-gateways.md +23 -23
  626. package/docs/gateway/openai-http-api.md +10 -10
  627. package/docs/gateway/openresponses-http-api.md +10 -10
  628. package/docs/gateway/pairing.md +8 -8
  629. package/docs/gateway/protocol.md +5 -4
  630. package/docs/gateway/remote-gateway-readme.md +13 -13
  631. package/docs/gateway/remote.md +4 -4
  632. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +10 -7
  633. package/docs/gateway/sandboxing.md +8 -6
  634. package/docs/gateway/security/formal-verification.md +107 -0
  635. package/docs/gateway/{security.md → security/index.md} +151 -71
  636. package/docs/gateway/tailscale.md +16 -35
  637. package/docs/gateway/tools-invoke-http-api.md +3 -3
  638. package/docs/gateway/troubleshooting.md +108 -113
  639. package/docs/help/faq.md +326 -335
  640. package/docs/help/troubleshooting.md +15 -15
  641. package/docs/hooks/soul-evil.md +2 -2
  642. package/docs/hooks.md +60 -60
  643. package/docs/index.md +35 -35
  644. package/docs/install/ansible.md +35 -35
  645. package/docs/install/development-channels.md +10 -10
  646. package/docs/install/docker.md +31 -31
  647. package/docs/install/index.md +28 -27
  648. package/docs/install/installer.md +21 -21
  649. package/docs/install/migrating.md +190 -0
  650. package/docs/install/nix.md +17 -17
  651. package/docs/install/node.md +7 -6
  652. package/docs/install/uninstall.md +29 -29
  653. package/docs/install/updating.md +50 -49
  654. package/docs/logging.md +58 -58
  655. package/docs/multi-agent-sandbox-tools.md +7 -7
  656. package/docs/network.md +1 -1
  657. package/docs/nodes/audio.md +2 -2
  658. package/docs/nodes/camera.md +18 -18
  659. package/docs/nodes/images.md +4 -4
  660. package/docs/nodes/index.md +55 -55
  661. package/docs/nodes/location-command.md +2 -2
  662. package/docs/nodes/media-understanding.md +5 -5
  663. package/docs/nodes/talk.md +1 -1
  664. package/docs/nodes/voicewake.md +2 -2
  665. package/docs/northflank.mdx +53 -0
  666. package/docs/perplexity.md +2 -2
  667. package/docs/platforms/android.md +13 -13
  668. package/docs/platforms/digitalocean.md +243 -0
  669. package/docs/platforms/exe-dev.md +23 -23
  670. package/docs/platforms/fly.md +129 -18
  671. package/docs/platforms/gcp.md +498 -0
  672. package/docs/platforms/hetzner.md +30 -30
  673. package/docs/platforms/index.md +9 -9
  674. package/docs/platforms/ios.md +13 -13
  675. package/docs/platforms/linux.md +11 -11
  676. package/docs/platforms/mac/bundled-gateway.md +14 -14
  677. package/docs/platforms/mac/canvas.md +14 -14
  678. package/docs/platforms/mac/child-process.md +9 -9
  679. package/docs/platforms/mac/dev-setup.md +11 -11
  680. package/docs/platforms/mac/health.md +2 -2
  681. package/docs/platforms/mac/icon.md +1 -1
  682. package/docs/platforms/mac/logging.md +7 -7
  683. package/docs/platforms/mac/menu-bar.md +1 -1
  684. package/docs/platforms/mac/peekaboo.md +9 -9
  685. package/docs/platforms/mac/permissions.md +3 -3
  686. package/docs/platforms/mac/release.md +20 -20
  687. package/docs/platforms/mac/remote.md +14 -14
  688. package/docs/platforms/mac/signing.md +7 -7
  689. package/docs/platforms/mac/skills.md +4 -4
  690. package/docs/platforms/mac/voice-overlay.md +2 -2
  691. package/docs/platforms/mac/webchat.md +2 -2
  692. package/docs/platforms/mac/xpc.md +4 -4
  693. package/docs/platforms/macos-vm.md +27 -27
  694. package/docs/platforms/macos.md +20 -20
  695. package/docs/platforms/oracle.md +291 -0
  696. package/docs/platforms/raspberry-pi.md +354 -0
  697. package/docs/platforms/windows.md +11 -11
  698. package/docs/plugin.md +64 -64
  699. package/docs/plugins/agent-tools.md +1 -1
  700. package/docs/plugins/manifest.md +4 -4
  701. package/docs/plugins/voice-call.md +15 -12
  702. package/docs/plugins/zalouser.md +9 -9
  703. package/docs/prose.md +9 -9
  704. package/docs/providers/anthropic.md +23 -27
  705. package/docs/providers/claude-max-api-proxy.md +145 -0
  706. package/docs/providers/deepgram.md +2 -2
  707. package/docs/providers/github-copilot.md +11 -11
  708. package/docs/providers/glm.md +4 -4
  709. package/docs/providers/index.md +7 -3
  710. package/docs/providers/minimax.md +9 -9
  711. package/docs/providers/models.md +3 -3
  712. package/docs/providers/moonshot.md +2 -2
  713. package/docs/providers/ollama.md +11 -11
  714. package/docs/providers/openai.md +9 -13
  715. package/docs/providers/opencode.md +3 -3
  716. package/docs/providers/openrouter.md +3 -3
  717. package/docs/providers/qwen.md +6 -6
  718. package/docs/providers/synthetic.md +4 -4
  719. package/docs/providers/venice.md +21 -21
  720. package/docs/providers/vercel-ai-gateway.md +5 -4
  721. package/docs/providers/zai.md +5 -5
  722. package/docs/railway.mdx +5 -5
  723. package/docs/refactor/exec-host.md +5 -5
  724. package/docs/refactor/plugin-sdk.md +12 -12
  725. package/docs/refactor/strict-config.md +11 -11
  726. package/docs/reference/AGENTS.default.md +10 -10
  727. package/docs/reference/RELEASING.md +27 -27
  728. package/docs/reference/api-usage-costs.md +6 -6
  729. package/docs/reference/device-models.md +7 -7
  730. package/docs/reference/rpc.md +3 -3
  731. package/docs/reference/session-management-compaction.md +19 -19
  732. package/docs/reference/templates/AGENTS.dev.md +1 -1
  733. package/docs/reference/templates/BOOT.md +1 -1
  734. package/docs/reference/templates/TOOLS.dev.md +1 -1
  735. package/docs/reference/templates/USER.dev.md +2 -2
  736. package/docs/reference/test.md +2 -2
  737. package/docs/reference/transcript-hygiene.md +1 -1
  738. package/docs/render.mdx +158 -0
  739. package/docs/scripts.md +1 -1
  740. package/docs/security/formal-verification.md +107 -0
  741. package/docs/start/getting-started.md +31 -25
  742. package/docs/start/hubs.md +2 -2
  743. package/docs/start/lore.md +74 -38
  744. package/docs/start/onboarding.md +7 -7
  745. package/docs/start/pairing.md +10 -10
  746. package/docs/start/{clawd.md → poolbot.md} +29 -29
  747. package/docs/start/setup.md +30 -17
  748. package/docs/start/showcase.md +32 -32
  749. package/docs/start/wizard.md +29 -26
  750. package/docs/testing.md +12 -12
  751. package/docs/token-use.md +7 -7
  752. package/docs/tools/agent-send.md +10 -10
  753. package/docs/tools/browser-linux-troubleshooting.md +10 -10
  754. package/docs/tools/browser-login.md +4 -4
  755. package/docs/tools/browser.md +135 -241
  756. package/docs/tools/chrome-extension.md +31 -48
  757. package/docs/tools/creating-skills.md +4 -4
  758. package/docs/tools/elevated.md +1 -0
  759. package/docs/tools/exec-approvals.md +8 -5
  760. package/docs/tools/exec.md +15 -4
  761. package/docs/tools/firecrawl.md +2 -2
  762. package/docs/tools/index.md +18 -15
  763. package/docs/tools/llm-task.md +1 -1
  764. package/docs/tools/lobster.md +23 -11
  765. package/docs/tools/{clawdhub.md → poolhub.md} +7 -7
  766. package/docs/tools/skills-config.md +2 -2
  767. package/docs/tools/skills.md +39 -31
  768. package/docs/tools/slash-commands.md +10 -8
  769. package/docs/tools/web.md +8 -8
  770. package/docs/tts.md +11 -11
  771. package/docs/tui.md +7 -7
  772. package/docs/vps.md +6 -1
  773. package/docs/web/control-ui.md +13 -12
  774. package/docs/web/dashboard.md +8 -4
  775. package/docs/web/index.md +6 -5
  776. package/docs/web/webchat.md +1 -1
  777. package/extensions/bluebubbles/index.ts +3 -3
  778. package/extensions/bluebubbles/package.json +5 -5
  779. package/extensions/bluebubbles/src/accounts.ts +9 -9
  780. package/extensions/bluebubbles/src/actions.test.ts +22 -22
  781. package/extensions/bluebubbles/src/actions.ts +6 -6
  782. package/extensions/bluebubbles/src/attachments.ts +2 -2
  783. package/extensions/bluebubbles/src/channel.ts +17 -17
  784. package/extensions/bluebubbles/src/chat.ts +2 -2
  785. package/extensions/bluebubbles/src/config-schema.ts +1 -1
  786. package/extensions/bluebubbles/src/media-send.ts +2 -2
  787. package/extensions/bluebubbles/src/monitor.test.ts +56 -50
  788. package/extensions/bluebubbles/src/monitor.ts +181 -6
  789. package/extensions/bluebubbles/src/onboarding.ts +9 -9
  790. package/extensions/bluebubbles/src/reactions.ts +2 -2
  791. package/extensions/bluebubbles/src/runtime.ts +1 -1
  792. package/extensions/bluebubbles/src/send.ts +2 -2
  793. package/extensions/copilot-proxy/README.md +2 -2
  794. package/extensions/copilot-proxy/index.ts +1 -1
  795. package/extensions/copilot-proxy/package.json +4 -4
  796. package/extensions/diagnostics-otel/index.ts +3 -3
  797. package/extensions/diagnostics-otel/package.json +4 -4
  798. package/extensions/diagnostics-otel/src/service.test.ts +15 -15
  799. package/extensions/diagnostics-otel/src/service.ts +85 -85
  800. package/extensions/discord/index.ts +3 -3
  801. package/extensions/discord/package.json +4 -4
  802. package/extensions/discord/src/channel.ts +1 -1
  803. package/extensions/discord/src/runtime.ts +1 -1
  804. package/extensions/google-antigravity-auth/README.md +2 -2
  805. package/extensions/google-antigravity-auth/index.ts +9 -2
  806. package/extensions/google-antigravity-auth/package.json +4 -4
  807. package/extensions/google-gemini-cli-auth/README.md +2 -2
  808. package/extensions/google-gemini-cli-auth/index.ts +1 -1
  809. package/extensions/google-gemini-cli-auth/oauth.ts +2 -2
  810. package/extensions/google-gemini-cli-auth/package.json +4 -4
  811. package/extensions/googlechat/index.ts +4 -4
  812. package/extensions/googlechat/node_modules/.bin/poolbot +21 -0
  813. package/extensions/googlechat/package.json +7 -7
  814. package/extensions/googlechat/src/accounts.ts +9 -9
  815. package/extensions/googlechat/src/actions.ts +8 -8
  816. package/extensions/googlechat/src/api.ts +1 -1
  817. package/extensions/googlechat/src/channel.ts +23 -23
  818. package/extensions/googlechat/src/monitor.ts +9 -9
  819. package/extensions/googlechat/src/onboarding.ts +11 -11
  820. package/extensions/googlechat/src/runtime.ts +1 -1
  821. package/extensions/googlechat/src/types.config.ts +1 -1
  822. package/extensions/imessage/index.ts +3 -3
  823. package/extensions/imessage/package.json +4 -4
  824. package/extensions/imessage/src/channel.ts +1 -1
  825. package/extensions/imessage/src/runtime.ts +1 -1
  826. package/extensions/line/index.ts +3 -3
  827. package/extensions/line/node_modules/.bin/poolbot +21 -0
  828. package/extensions/line/package.json +6 -6
  829. package/extensions/line/src/card-command.ts +3 -3
  830. package/extensions/line/src/channel.logout.test.ts +4 -4
  831. package/extensions/line/src/channel.sendPayload.test.ts +8 -8
  832. package/extensions/line/src/channel.ts +5 -5
  833. package/extensions/line/src/runtime.ts +1 -1
  834. package/extensions/llm-task/README.md +1 -1
  835. package/extensions/llm-task/index.ts +2 -2
  836. package/extensions/llm-task/package.json +4 -4
  837. package/extensions/llm-task/src/llm-task-tool.ts +5 -5
  838. package/extensions/lobster/index.ts +2 -2
  839. package/extensions/lobster/package.json +3 -3
  840. package/extensions/lobster/src/lobster-tool.test.ts +26 -6
  841. package/extensions/lobster/src/lobster-tool.ts +24 -6
  842. package/extensions/matrix/CHANGELOG.md +9 -9
  843. package/extensions/matrix/index.ts +3 -3
  844. package/extensions/matrix/node_modules/.bin/markdown-it +0 -0
  845. package/extensions/matrix/node_modules/.bin/poolbot +21 -0
  846. package/extensions/matrix/package.json +7 -7
  847. package/extensions/matrix/src/actions.ts +1 -1
  848. package/extensions/matrix/src/channel.directory.test.ts +1 -1
  849. package/extensions/matrix/src/channel.ts +1 -1
  850. package/extensions/matrix/src/config-schema.ts +1 -1
  851. package/extensions/matrix/src/directory-live.ts +1 -1
  852. package/extensions/matrix/src/group-mentions.ts +1 -1
  853. package/extensions/matrix/src/matrix/accounts.ts +1 -1
  854. package/extensions/matrix/src/matrix/actions/messages.ts +1 -1
  855. package/extensions/matrix/src/matrix/actions/reactions.ts +1 -1
  856. package/extensions/matrix/src/matrix/actions/room.ts +3 -3
  857. package/extensions/matrix/src/matrix/actions/summary.ts +1 -1
  858. package/extensions/matrix/src/matrix/actions/types.ts +1 -1
  859. package/extensions/matrix/src/matrix/active-client.ts +1 -1
  860. package/extensions/matrix/src/matrix/client/config.ts +2 -2
  861. package/extensions/matrix/src/matrix/client/create-client.ts +2 -2
  862. package/extensions/matrix/src/matrix/client/logging.ts +1 -1
  863. package/extensions/matrix/src/matrix/client/shared.ts +3 -3
  864. package/extensions/matrix/src/matrix/deps.ts +5 -5
  865. package/extensions/matrix/src/matrix/monitor/allowlist.ts +1 -1
  866. package/extensions/matrix/src/matrix/monitor/auto-join.ts +3 -3
  867. package/extensions/matrix/src/matrix/monitor/direct.ts +1 -1
  868. package/extensions/matrix/src/matrix/monitor/events.ts +2 -2
  869. package/extensions/matrix/src/matrix/monitor/handler.ts +8 -8
  870. package/extensions/matrix/src/matrix/monitor/index.ts +2 -2
  871. package/extensions/matrix/src/matrix/monitor/location.ts +2 -2
  872. package/extensions/matrix/src/matrix/monitor/media.test.ts +3 -3
  873. package/extensions/matrix/src/matrix/monitor/media.ts +3 -3
  874. package/extensions/matrix/src/matrix/monitor/replies.ts +2 -2
  875. package/extensions/matrix/src/matrix/monitor/room-info.ts +1 -1
  876. package/extensions/matrix/src/matrix/monitor/rooms.ts +1 -1
  877. package/extensions/matrix/src/matrix/monitor/threads.ts +1 -1
  878. package/extensions/matrix/src/matrix/monitor/types.ts +1 -1
  879. package/extensions/matrix/src/matrix/poll-types.ts +1 -1
  880. package/extensions/matrix/src/matrix/probe.ts +1 -1
  881. package/extensions/matrix/src/matrix/send/client.ts +2 -2
  882. package/extensions/matrix/src/matrix/send/media.ts +1 -1
  883. package/extensions/matrix/src/matrix/send/targets.test.ts +1 -1
  884. package/extensions/matrix/src/matrix/send/targets.ts +1 -1
  885. package/extensions/matrix/src/matrix/send/types.ts +2 -2
  886. package/extensions/matrix/src/matrix/send.test.ts +3 -3
  887. package/extensions/matrix/src/matrix/send.ts +4 -4
  888. package/extensions/matrix/src/onboarding.ts +3 -3
  889. package/extensions/matrix/src/outbound.ts +1 -1
  890. package/extensions/matrix/src/resolve-targets.ts +1 -1
  891. package/extensions/matrix/src/runtime.ts +1 -1
  892. package/extensions/matrix/src/tool-actions.ts +1 -1
  893. package/extensions/matrix/src/types.ts +1 -1
  894. package/extensions/mattermost/index.ts +3 -3
  895. package/extensions/mattermost/package.json +5 -5
  896. package/extensions/mattermost/src/channel.ts +1 -1
  897. package/extensions/mattermost/src/config-schema.ts +1 -1
  898. package/extensions/mattermost/src/group-mentions.ts +1 -1
  899. package/extensions/mattermost/src/mattermost/accounts.ts +9 -9
  900. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +5 -5
  901. package/extensions/mattermost/src/mattermost/monitor.ts +4 -4
  902. package/extensions/mattermost/src/onboarding-helpers.ts +4 -4
  903. package/extensions/mattermost/src/onboarding.ts +4 -4
  904. package/extensions/mattermost/src/runtime.ts +1 -1
  905. package/extensions/mattermost/src/types.ts +1 -1
  906. package/extensions/memory-core/index.ts +3 -3
  907. package/extensions/memory-core/node_modules/.bin/poolbot +21 -0
  908. package/extensions/memory-core/package.json +5 -5
  909. package/extensions/memory-lancedb/config.ts +2 -2
  910. package/extensions/memory-lancedb/index.test.ts +2 -2
  911. package/extensions/memory-lancedb/index.ts +4 -4
  912. package/extensions/memory-lancedb/node_modules/.bin/openai +0 -0
  913. package/extensions/memory-lancedb/package.json +4 -4
  914. package/extensions/memory-lancedb/{clawdbot.plugin.json → poolbot.plugin.json} +1 -1
  915. package/extensions/msteams/CHANGELOG.md +7 -7
  916. package/extensions/msteams/index.ts +3 -3
  917. package/extensions/msteams/node_modules/.bin/poolbot +21 -0
  918. package/extensions/msteams/package.json +6 -6
  919. package/extensions/msteams/src/attachments.test.ts +1 -1
  920. package/extensions/msteams/src/channel.directory.test.ts +2 -2
  921. package/extensions/msteams/src/channel.ts +3 -3
  922. package/extensions/msteams/src/conversation-store-fs.test.ts +3 -3
  923. package/extensions/msteams/src/directory-live.ts +1 -1
  924. package/extensions/msteams/src/graph-upload.ts +4 -4
  925. package/extensions/msteams/src/media-helpers.ts +1 -1
  926. package/extensions/msteams/src/messenger.test.ts +1 -1
  927. package/extensions/msteams/src/messenger.ts +1 -1
  928. package/extensions/msteams/src/monitor-handler/message-handler.ts +1 -1
  929. package/extensions/msteams/src/monitor-handler.ts +2 -2
  930. package/extensions/msteams/src/monitor.ts +3 -3
  931. package/extensions/msteams/src/onboarding.ts +11 -11
  932. package/extensions/msteams/src/outbound.ts +1 -1
  933. package/extensions/msteams/src/policy.test.ts +1 -1
  934. package/extensions/msteams/src/policy.ts +50 -5
  935. package/extensions/msteams/src/polls-store.test.ts +1 -1
  936. package/extensions/msteams/src/polls.test.ts +4 -4
  937. package/extensions/msteams/src/polls.ts +8 -8
  938. package/extensions/msteams/src/probe.test.ts +1 -1
  939. package/extensions/msteams/src/probe.ts +1 -1
  940. package/extensions/msteams/src/reply-dispatcher.ts +36 -36
  941. package/extensions/msteams/src/runtime.ts +1 -1
  942. package/extensions/msteams/src/send-context.ts +2 -2
  943. package/extensions/msteams/src/send.ts +5 -5
  944. package/extensions/msteams/src/token.ts +1 -1
  945. package/extensions/nextcloud-talk/index.ts +3 -3
  946. package/extensions/nextcloud-talk/package.json +5 -5
  947. package/extensions/nextcloud-talk/src/accounts.ts +1 -1
  948. package/extensions/nextcloud-talk/src/channel.ts +8 -8
  949. package/extensions/nextcloud-talk/src/config-schema.ts +1 -1
  950. package/extensions/nextcloud-talk/src/inbound.ts +8 -8
  951. package/extensions/nextcloud-talk/src/monitor.ts +1 -1
  952. package/extensions/nextcloud-talk/src/onboarding.ts +2 -2
  953. package/extensions/nextcloud-talk/src/policy.ts +2 -2
  954. package/extensions/nextcloud-talk/src/room-info.ts +1 -1
  955. package/extensions/nextcloud-talk/src/runtime.ts +1 -1
  956. package/extensions/nextcloud-talk/src/types.ts +1 -1
  957. package/extensions/nostr/CHANGELOG.md +4 -4
  958. package/extensions/nostr/README.md +3 -3
  959. package/extensions/nostr/index.ts +6 -6
  960. package/extensions/nostr/node_modules/.bin/poolbot +21 -0
  961. package/extensions/nostr/package.json +6 -6
  962. package/extensions/nostr/src/channel.ts +2 -2
  963. package/extensions/nostr/src/config-schema.ts +1 -1
  964. package/extensions/nostr/src/nostr-state-store.test.ts +3 -3
  965. package/extensions/nostr/src/runtime.ts +1 -1
  966. package/extensions/nostr/src/types.ts +4 -4
  967. package/extensions/open-prose/index.ts +2 -2
  968. package/extensions/open-prose/package.json +3 -3
  969. package/extensions/open-prose/skills/prose/SKILL.md +5 -5
  970. package/extensions/open-prose/skills/prose/prose.md +4 -4
  971. package/extensions/qwen-portal-auth/README.md +2 -2
  972. package/extensions/qwen-portal-auth/index.ts +1 -1
  973. package/extensions/signal/index.ts +3 -3
  974. package/extensions/signal/package.json +4 -4
  975. package/extensions/signal/src/channel.ts +1 -1
  976. package/extensions/signal/src/runtime.ts +1 -1
  977. package/extensions/slack/index.ts +3 -3
  978. package/extensions/slack/package.json +4 -4
  979. package/extensions/slack/src/channel.ts +1 -1
  980. package/extensions/slack/src/runtime.ts +1 -1
  981. package/extensions/telegram/index.ts +3 -3
  982. package/extensions/telegram/package.json +4 -4
  983. package/extensions/telegram/src/channel.ts +3 -3
  984. package/extensions/telegram/src/runtime.ts +1 -1
  985. package/extensions/tlon/README.md +1 -1
  986. package/extensions/tlon/index.ts +3 -3
  987. package/extensions/tlon/package.json +5 -5
  988. package/extensions/tlon/src/channel.ts +15 -15
  989. package/extensions/tlon/src/config-schema.ts +1 -1
  990. package/extensions/tlon/src/monitor/discovery.ts +1 -1
  991. package/extensions/tlon/src/monitor/history.ts +1 -1
  992. package/extensions/tlon/src/monitor/index.ts +3 -3
  993. package/extensions/tlon/src/onboarding.ts +4 -4
  994. package/extensions/tlon/src/runtime.ts +1 -1
  995. package/extensions/tlon/src/types.ts +3 -3
  996. package/extensions/tlon/src/urbit/send.ts +19 -6
  997. package/extensions/twitch/CHANGELOG.md +21 -0
  998. package/extensions/twitch/README.md +89 -0
  999. package/extensions/twitch/index.ts +20 -0
  1000. package/extensions/twitch/node_modules/.bin/poolbot +21 -0
  1001. package/extensions/twitch/package.json +20 -0
  1002. package/extensions/twitch/poolbot.plugin.json +9 -0
  1003. package/extensions/twitch/src/access-control.test.ts +489 -0
  1004. package/extensions/twitch/src/access-control.ts +154 -0
  1005. package/extensions/twitch/src/actions.ts +173 -0
  1006. package/extensions/twitch/src/client-manager-registry.ts +115 -0
  1007. package/extensions/twitch/src/config-schema.ts +82 -0
  1008. package/extensions/twitch/src/config.test.ts +88 -0
  1009. package/extensions/twitch/src/config.ts +116 -0
  1010. package/extensions/twitch/src/monitor.ts +257 -0
  1011. package/extensions/twitch/src/onboarding.test.ts +311 -0
  1012. package/extensions/twitch/src/onboarding.ts +411 -0
  1013. package/extensions/twitch/src/outbound.test.ts +373 -0
  1014. package/extensions/twitch/src/outbound.ts +186 -0
  1015. package/extensions/twitch/src/plugin.test.ts +39 -0
  1016. package/extensions/twitch/src/plugin.ts +274 -0
  1017. package/extensions/twitch/src/probe.test.ts +198 -0
  1018. package/extensions/twitch/src/probe.ts +118 -0
  1019. package/extensions/twitch/src/resolver.ts +137 -0
  1020. package/extensions/twitch/src/runtime.ts +14 -0
  1021. package/extensions/twitch/src/send.test.ts +289 -0
  1022. package/extensions/twitch/src/send.ts +136 -0
  1023. package/extensions/twitch/src/status.test.ts +270 -0
  1024. package/extensions/twitch/src/status.ts +176 -0
  1025. package/extensions/twitch/src/token.test.ts +171 -0
  1026. package/extensions/twitch/src/token.ts +87 -0
  1027. package/extensions/twitch/src/twitch-client.test.ts +574 -0
  1028. package/extensions/twitch/src/twitch-client.ts +277 -0
  1029. package/extensions/twitch/src/types.ts +141 -0
  1030. package/extensions/twitch/src/utils/markdown.ts +92 -0
  1031. package/extensions/twitch/src/utils/twitch.ts +78 -0
  1032. package/extensions/twitch/test/setup.ts +7 -0
  1033. package/extensions/voice-call/CHANGELOG.md +13 -12
  1034. package/extensions/voice-call/README.md +15 -14
  1035. package/extensions/voice-call/index.ts +11 -9
  1036. package/extensions/voice-call/package.json +4 -4
  1037. package/extensions/voice-call/{clawdbot.plugin.json → poolbot.plugin.json} +3 -3
  1038. package/extensions/voice-call/src/cli.ts +1 -1
  1039. package/extensions/voice-call/src/config.test.ts +204 -0
  1040. package/extensions/voice-call/src/config.ts +61 -4
  1041. package/extensions/voice-call/src/core-bridge.ts +10 -8
  1042. package/extensions/voice-call/src/manager.test.ts +2 -2
  1043. package/extensions/voice-call/src/providers/twilio/webhook.ts +2 -1
  1044. package/extensions/voice-call/src/providers/twilio.ts +2 -2
  1045. package/extensions/voice-call/src/response-generator.ts +1 -1
  1046. package/extensions/voice-call/src/runtime.ts +26 -15
  1047. package/extensions/voice-call/src/types.ts +1 -0
  1048. package/extensions/voice-call/src/webhook-security.test.ts +52 -0
  1049. package/extensions/voice-call/src/webhook-security.ts +16 -5
  1050. package/extensions/voice-call/src/webhook.ts +1 -0
  1051. package/extensions/whatsapp/index.ts +3 -3
  1052. package/extensions/whatsapp/package.json +4 -4
  1053. package/extensions/whatsapp/src/channel.ts +1 -1
  1054. package/extensions/whatsapp/src/runtime.ts +1 -1
  1055. package/extensions/zalo/CHANGELOG.md +9 -9
  1056. package/extensions/zalo/README.md +3 -3
  1057. package/extensions/zalo/index.ts +3 -3
  1058. package/extensions/zalo/node_modules/.bin/poolbot +21 -0
  1059. package/extensions/zalo/package.json +6 -6
  1060. package/extensions/zalo/src/accounts.ts +9 -9
  1061. package/extensions/zalo/src/actions.ts +6 -6
  1062. package/extensions/zalo/src/channel.directory.test.ts +2 -2
  1063. package/extensions/zalo/src/channel.ts +20 -20
  1064. package/extensions/zalo/src/config-schema.ts +1 -1
  1065. package/extensions/zalo/src/monitor.ts +9 -9
  1066. package/extensions/zalo/src/monitor.webhook.test.ts +2 -2
  1067. package/extensions/zalo/src/onboarding.ts +27 -27
  1068. package/extensions/zalo/src/runtime.ts +1 -1
  1069. package/extensions/zalo/src/send.ts +2 -2
  1070. package/extensions/zalo/src/status-issues.ts +1 -1
  1071. package/extensions/zalo/src/token.ts +1 -1
  1072. package/extensions/zalouser/CHANGELOG.md +4 -4
  1073. package/extensions/zalouser/README.md +17 -17
  1074. package/extensions/zalouser/index.ts +3 -3
  1075. package/extensions/zalouser/node_modules/.bin/poolbot +21 -0
  1076. package/extensions/zalouser/package.json +6 -6
  1077. package/extensions/zalouser/src/accounts.ts +10 -10
  1078. package/extensions/zalouser/src/channel.ts +27 -27
  1079. package/extensions/zalouser/src/config-schema.ts +1 -1
  1080. package/extensions/zalouser/src/monitor.ts +5 -5
  1081. package/extensions/zalouser/src/onboarding.ts +32 -32
  1082. package/extensions/zalouser/src/runtime.ts +1 -1
  1083. package/extensions/zalouser/src/status-issues.ts +2 -2
  1084. package/git-hooks/pre-commit +0 -0
  1085. package/package.json +78 -89
  1086. package/skills/1password/SKILL.md +3 -3
  1087. package/skills/apple-notes/SKILL.md +2 -2
  1088. package/skills/apple-reminders/SKILL.md +1 -1
  1089. package/skills/bear-notes/SKILL.md +1 -1
  1090. package/skills/bird/SKILL.md +1 -1
  1091. package/skills/blogwatcher/SKILL.md +1 -1
  1092. package/skills/blucli/SKILL.md +1 -1
  1093. package/skills/bluebubbles/SKILL.md +2 -2
  1094. package/skills/camsnap/SKILL.md +1 -1
  1095. package/skills/canvas/SKILL.md +15 -15
  1096. package/skills/coding-agent/SKILL.md +6 -6
  1097. package/skills/discord/SKILL.md +6 -5
  1098. package/skills/eightctl/SKILL.md +1 -1
  1099. package/skills/food-order/SKILL.md +1 -1
  1100. package/skills/gemini/SKILL.md +1 -1
  1101. package/skills/gifgrep/SKILL.md +1 -1
  1102. package/skills/github/SKILL.md +1 -0
  1103. package/skills/gog/SKILL.md +1 -1
  1104. package/skills/goplaces/SKILL.md +1 -1
  1105. package/skills/himalaya/SKILL.md +1 -1
  1106. package/skills/imsg/SKILL.md +1 -1
  1107. package/skills/local-places/SKILL.md +1 -1
  1108. package/skills/mcporter/SKILL.md +1 -1
  1109. package/skills/model-usage/SKILL.md +1 -1
  1110. package/skills/nano-banana-pro/SKILL.md +10 -5
  1111. package/skills/nano-banana-pro/scripts/generate_image.py +42 -27
  1112. package/skills/nano-pdf/SKILL.md +1 -1
  1113. package/skills/notion/SKILL.md +1 -1
  1114. package/skills/obsidian/SKILL.md +1 -1
  1115. package/skills/openai-image-gen/SKILL.md +1 -1
  1116. package/skills/openai-whisper/SKILL.md +1 -1
  1117. package/skills/openai-whisper-api/SKILL.md +2 -2
  1118. package/skills/openhue/SKILL.md +1 -1
  1119. package/skills/oracle/SKILL.md +1 -1
  1120. package/skills/ordercli/SKILL.md +1 -1
  1121. package/skills/peekaboo/SKILL.md +1 -1
  1122. package/skills/{clawdhub → poolhub}/SKILL.md +2 -2
  1123. package/skills/sag/SKILL.md +1 -1
  1124. package/skills/session-logs/SKILL.md +7 -7
  1125. package/skills/sherpa-onnx-tts/SKILL.md +6 -6
  1126. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -0
  1127. package/skills/slack/SKILL.md +4 -3
  1128. package/skills/songsee/SKILL.md +1 -1
  1129. package/skills/sonoscli/SKILL.md +1 -1
  1130. package/skills/spotify-player/SKILL.md +1 -1
  1131. package/skills/summarize/SKILL.md +1 -1
  1132. package/skills/things-mac/SKILL.md +3 -3
  1133. package/skills/tmux/SKILL.md +7 -7
  1134. package/skills/tmux/scripts/find-sessions.sh +1 -1
  1135. package/skills/tmux/scripts/wait-for-text.sh +0 -0
  1136. package/skills/trello/SKILL.md +2 -2
  1137. package/skills/video-frames/SKILL.md +1 -1
  1138. package/skills/voice-call/SKILL.md +4 -4
  1139. package/skills/wacli/SKILL.md +2 -2
  1140. package/skills/weather/SKILL.md +1 -1
  1141. package/skills/webgpu-threejs-tsl/REFERENCE.md +283 -0
  1142. package/skills/webgpu-threejs-tsl/SKILL.md +91 -0
  1143. package/skills/webgpu-threejs-tsl/docs/compute-shaders.md +404 -0
  1144. package/skills/webgpu-threejs-tsl/docs/core-concepts.md +453 -0
  1145. package/skills/webgpu-threejs-tsl/docs/materials.md +353 -0
  1146. package/skills/webgpu-threejs-tsl/docs/post-processing.md +434 -0
  1147. package/skills/webgpu-threejs-tsl/docs/wgsl-integration.md +324 -0
  1148. package/skills/webgpu-threejs-tsl/examples/basic-setup.js +87 -0
  1149. package/skills/webgpu-threejs-tsl/examples/custom-material.js +170 -0
  1150. package/skills/webgpu-threejs-tsl/examples/earth-shader.js +292 -0
  1151. package/skills/webgpu-threejs-tsl/examples/particle-system.js +259 -0
  1152. package/skills/webgpu-threejs-tsl/examples/post-processing.js +199 -0
  1153. package/skills/webgpu-threejs-tsl/templates/compute-shader.js +305 -0
  1154. package/skills/webgpu-threejs-tsl/templates/webgpu-project.js +276 -0
  1155. package/dist/cli/browser-cli-serve.js +0 -91
  1156. package/dist/control-ui/assets/index-Cl-Y9zqE.js.map +0 -1
  1157. package/dist/control-ui/assets/index-DEPfFcOb.css +0 -1
  1158. package/docs/POOL-BOT.md +0 -119
  1159. /package/dist/{config/types.clawdbot.js → browser/routes/types.js} +0 -0
  1160. /package/docs/{whatsapp-clawd.jpg → whatsapp-poolbot.jpg} +0 -0
  1161. /package/extensions/bluebubbles/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1162. /package/extensions/copilot-proxy/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1163. /package/extensions/diagnostics-otel/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1164. /package/extensions/discord/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1165. /package/extensions/google-antigravity-auth/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1166. /package/extensions/google-gemini-cli-auth/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1167. /package/extensions/googlechat/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1168. /package/extensions/imessage/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1169. /package/extensions/line/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1170. /package/extensions/llm-task/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1171. /package/extensions/lobster/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1172. /package/extensions/matrix/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1173. /package/extensions/mattermost/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1174. /package/extensions/memory-core/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1175. /package/extensions/msteams/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1176. /package/extensions/nextcloud-talk/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1177. /package/extensions/nostr/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1178. /package/extensions/open-prose/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1179. /package/extensions/qwen-portal-auth/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1180. /package/extensions/signal/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1181. /package/extensions/slack/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1182. /package/extensions/telegram/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1183. /package/extensions/tlon/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1184. /package/extensions/whatsapp/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1185. /package/extensions/zalo/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1186. /package/extensions/zalouser/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
@@ -16,11 +16,11 @@ function isDisabledByEnv() {
16
16
  }
17
17
  function safeServiceName(name) {
18
18
  const trimmed = name.trim();
19
- return trimmed.length > 0 ? trimmed : "Clawdbot";
19
+ return trimmed.length > 0 ? trimmed : "Moltbot";
20
20
  }
21
21
  function prettifyInstanceName(name) {
22
22
  const normalized = name.trim().replace(/\s+/g, " ");
23
- return normalized.replace(/\s+\(Clawdbot\)\s*$/i, "").trim() || normalized;
23
+ return normalized.replace(/\s+\(Moltbot\)\s*$/i, "").trim() || normalized;
24
24
  }
25
25
  function serviceSummary(label, svc) {
26
26
  let fqdn = "unknown";
@@ -60,10 +60,10 @@ export async function startGatewayBonjourAdvertiser(opts) {
60
60
  .hostname()
61
61
  .replace(/\.local$/i, "")
62
62
  .split(".")[0]
63
- .trim() || "clawdbot";
63
+ .trim() || "poolbot";
64
64
  const instanceName = typeof opts.instanceName === "string" && opts.instanceName.trim()
65
65
  ? opts.instanceName.trim()
66
- : `${hostname} (Clawdbot)`;
66
+ : `${hostname} (Moltbot)`;
67
67
  const displayName = prettifyInstanceName(instanceName);
68
68
  const txtBase = {
69
69
  role: "gateway",
@@ -83,22 +83,29 @@ export async function startGatewayBonjourAdvertiser(opts) {
83
83
  if (typeof opts.tailnetDns === "string" && opts.tailnetDns.trim()) {
84
84
  txtBase.tailnetDns = opts.tailnetDns.trim();
85
85
  }
86
- if (typeof opts.cliPath === "string" && opts.cliPath.trim()) {
86
+ // In minimal mode, omit cliPath to avoid exposing filesystem structure.
87
+ // This info can be obtained via the authenticated WebSocket if needed.
88
+ if (!opts.minimal && typeof opts.cliPath === "string" && opts.cliPath.trim()) {
87
89
  txtBase.cliPath = opts.cliPath.trim();
88
90
  }
89
91
  const services = [];
92
+ // Build TXT record for the gateway service.
93
+ // In minimal mode, omit sshPort to avoid advertising SSH availability.
94
+ const gatewayTxt = {
95
+ ...txtBase,
96
+ transport: "gateway",
97
+ };
98
+ if (!opts.minimal) {
99
+ gatewayTxt.sshPort = String(opts.sshPort ?? 22);
100
+ }
90
101
  const gateway = responder.createService({
91
102
  name: safeServiceName(instanceName),
92
- type: "clawdbot-gw",
103
+ type: "poolbot-gw",
93
104
  protocol: "tcp" /* Protocol.TCP */,
94
105
  port: opts.gatewayPort,
95
106
  domain: "local",
96
107
  hostname,
97
- txt: {
98
- ...txtBase,
99
- sshPort: String(opts.sshPort ?? 22),
100
- transport: "gateway",
101
- },
108
+ txt: gatewayTxt,
102
109
  });
103
110
  services.push({
104
111
  label: "gateway",
@@ -108,7 +115,7 @@ export async function startGatewayBonjourAdvertiser(opts) {
108
115
  if (services.length > 0) {
109
116
  ciaoCancellationRejectionHandler = registerUnhandledRejectionHandler(ignoreCiaoCancellationRejection);
110
117
  }
111
- logDebug(`bonjour: starting (hostname=${hostname}, instance=${JSON.stringify(safeServiceName(instanceName))}, gatewayPort=${opts.gatewayPort}, sshPort=${opts.sshPort ?? 22})`);
118
+ logDebug(`bonjour: starting (hostname=${hostname}, instance=${JSON.stringify(safeServiceName(instanceName))}, gatewayPort=${opts.gatewayPort}${opts.minimal ? ", minimal=true" : `, sshPort=${opts.sshPort ?? 22}`})`);
112
119
  for (const { label, svc } of services) {
113
120
  try {
114
121
  svc.on("name-change", (name) => {
@@ -2,7 +2,7 @@ import crypto from "node:crypto";
2
2
  import fs from "node:fs";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
5
- const DEFAULT_DIR = path.join(os.homedir(), ".clawdbot", "identity");
5
+ const DEFAULT_DIR = path.join(os.homedir(), ".poolbot", "identity");
6
6
  const DEFAULT_FILE = path.join(DEFAULT_DIR, "device.json");
7
7
  function ensureDir(filePath) {
8
8
  fs.mkdirSync(path.dirname(filePath), { recursive: true });
@@ -6,7 +6,7 @@ export function loadDotEnv(opts) {
6
6
  const quiet = opts?.quiet ?? true;
7
7
  // Load from process CWD first (dotenv default).
8
8
  dotenv.config({ quiet });
9
- // Then load global fallback: ~/.clawdbot/.env (or CLAWDBOT_STATE_DIR/.env),
9
+ // Then load global fallback: ~/.poolbot/.env (or CLAWDBOT_STATE_DIR/.env),
10
10
  // without overriding any env vars already present.
11
11
  const globalEnvPath = path.join(resolveConfigDir(process.env), ".env");
12
12
  if (!fs.existsSync(globalEnvPath))
@@ -8,8 +8,8 @@ const DEFAULT_SECURITY = "deny";
8
8
  const DEFAULT_ASK = "on-miss";
9
9
  const DEFAULT_ASK_FALLBACK = "deny";
10
10
  const DEFAULT_AUTO_ALLOW_SKILLS = false;
11
- const DEFAULT_SOCKET = "~/.clawdbot/exec-approvals.sock";
12
- const DEFAULT_FILE = "~/.clawdbot/exec-approvals.json";
11
+ const DEFAULT_SOCKET = "~/.poolbot/exec-approvals.sock";
12
+ const DEFAULT_FILE = "~/.poolbot/exec-approvals.json";
13
13
  export const DEFAULT_SAFE_BINS = ["jq", "grep", "cut", "sort", "uniq", "head", "tail", "tr", "wc"];
14
14
  function hashExecApprovalsRaw(raw) {
15
15
  return crypto
@@ -0,0 +1,76 @@
1
+ import { constants as fsConstants } from "node:fs";
2
+ import fs from "node:fs/promises";
3
+ import path from "node:path";
4
+ export class SafeOpenError extends Error {
5
+ code;
6
+ constructor(code, message) {
7
+ super(message);
8
+ this.code = code;
9
+ this.name = "SafeOpenError";
10
+ }
11
+ }
12
+ const NOT_FOUND_CODES = new Set(["ENOENT", "ENOTDIR"]);
13
+ const ensureTrailingSep = (value) => (value.endsWith(path.sep) ? value : value + path.sep);
14
+ const isNodeError = (err) => Boolean(err && typeof err === "object" && "code" in err);
15
+ const isNotFoundError = (err) => isNodeError(err) && typeof err.code === "string" && NOT_FOUND_CODES.has(err.code);
16
+ const isSymlinkOpenError = (err) => isNodeError(err) && (err.code === "ELOOP" || err.code === "EINVAL" || err.code === "ENOTSUP");
17
+ export async function openFileWithinRoot(params) {
18
+ let rootReal;
19
+ try {
20
+ rootReal = await fs.realpath(params.rootDir);
21
+ }
22
+ catch (err) {
23
+ if (isNotFoundError(err)) {
24
+ throw new SafeOpenError("not-found", "root dir not found");
25
+ }
26
+ throw err;
27
+ }
28
+ const rootWithSep = ensureTrailingSep(rootReal);
29
+ const resolved = path.resolve(rootWithSep, params.relativePath);
30
+ if (!resolved.startsWith(rootWithSep)) {
31
+ throw new SafeOpenError("invalid-path", "path escapes root");
32
+ }
33
+ const supportsNoFollow = process.platform !== "win32" && "O_NOFOLLOW" in fsConstants;
34
+ const flags = fsConstants.O_RDONLY | (supportsNoFollow ? fsConstants.O_NOFOLLOW : 0);
35
+ let handle;
36
+ try {
37
+ handle = await fs.open(resolved, flags);
38
+ }
39
+ catch (err) {
40
+ if (isNotFoundError(err)) {
41
+ throw new SafeOpenError("not-found", "file not found");
42
+ }
43
+ if (isSymlinkOpenError(err)) {
44
+ throw new SafeOpenError("invalid-path", "symlink open blocked");
45
+ }
46
+ throw err;
47
+ }
48
+ try {
49
+ const lstat = await fs.lstat(resolved).catch(() => null);
50
+ if (lstat?.isSymbolicLink()) {
51
+ throw new SafeOpenError("invalid-path", "symlink not allowed");
52
+ }
53
+ const realPath = await fs.realpath(resolved);
54
+ if (!realPath.startsWith(rootWithSep)) {
55
+ throw new SafeOpenError("invalid-path", "path escapes root");
56
+ }
57
+ const stat = await handle.stat();
58
+ if (!stat.isFile()) {
59
+ throw new SafeOpenError("invalid-path", "not a file");
60
+ }
61
+ const realStat = await fs.stat(realPath);
62
+ if (stat.ino !== realStat.ino || stat.dev !== realStat.dev) {
63
+ throw new SafeOpenError("invalid-path", "path mismatch");
64
+ }
65
+ return { handle, realPath, stat };
66
+ }
67
+ catch (err) {
68
+ await handle.close().catch(() => { });
69
+ if (err instanceof SafeOpenError)
70
+ throw err;
71
+ if (isNotFoundError(err)) {
72
+ throw new SafeOpenError("not-found", "file not found");
73
+ }
74
+ throw err;
75
+ }
76
+ }
@@ -50,7 +50,7 @@ function isGatewayArgv(args) {
50
50
  return true;
51
51
  }
52
52
  const exe = normalized[0] ?? "";
53
- return exe.endsWith("/clawdbot") || exe === "clawdbot";
53
+ return exe.endsWith("/poolbot") || exe === "poolbot";
54
54
  }
55
55
  function readLinuxCmdline(pid) {
56
56
  try {
@@ -3,8 +3,22 @@ const DEFAULT_VISIBILITY = {
3
3
  showAlerts: true, // Show content messages
4
4
  useIndicator: true, // Emit indicator events
5
5
  };
6
+ /**
7
+ * Resolve heartbeat visibility settings for a channel.
8
+ * Supports both deliverable channels (telegram, signal, etc.) and webchat.
9
+ * For webchat, uses channels.defaults.heartbeat since webchat doesn't have per-channel config.
10
+ */
6
11
  export function resolveHeartbeatVisibility(params) {
7
12
  const { cfg, channel, accountId } = params;
13
+ // Webchat uses channel defaults only (no per-channel or per-account config)
14
+ if (channel === "webchat") {
15
+ const channelDefaults = cfg.channels?.defaults?.heartbeat;
16
+ return {
17
+ showOk: channelDefaults?.showOk ?? DEFAULT_VISIBILITY.showOk,
18
+ showAlerts: channelDefaults?.showAlerts ?? DEFAULT_VISIBILITY.showAlerts,
19
+ useIndicator: channelDefaults?.useIndicator ?? DEFAULT_VISIBILITY.useIndicator,
20
+ };
21
+ }
8
22
  // Layer 1: Global channel defaults
9
23
  const channelDefaults = cfg.channels?.defaults?.heartbeat;
10
24
  // Layer 2: Per-channel config (at channel root level)
@@ -30,10 +30,10 @@ function schedule(coalesceMs) {
30
30
  schedule(DEFAULT_RETRY_MS);
31
31
  }
32
32
  }
33
- catch (err) {
33
+ catch {
34
+ // Error is already logged by the heartbeat runner; schedule a retry.
34
35
  pendingReason = reason ?? "retry";
35
36
  schedule(DEFAULT_RETRY_MS);
36
- throw err;
37
37
  }
38
38
  finally {
39
39
  running = false;
@@ -20,7 +20,7 @@ function fallbackHostName() {
20
20
  return (os
21
21
  .hostname()
22
22
  .replace(/\.local$/i, "")
23
- .trim() || "clawdbot");
23
+ .trim() || "poolbot");
24
24
  }
25
25
  export async function getMachineDisplayName() {
26
26
  if (cachedPromise)
@@ -1,4 +1,6 @@
1
1
  import { lookup as dnsLookup } from "node:dns/promises";
2
+ import { lookup as dnsLookupCb } from "node:dns";
3
+ import { Agent } from "undici";
2
4
  export class SsrFBlockedError extends Error {
3
5
  constructor(message) {
4
6
  super(message);
@@ -100,7 +102,45 @@ export function isBlockedHostname(hostname) {
100
102
  normalized.endsWith(".local") ||
101
103
  normalized.endsWith(".internal"));
102
104
  }
103
- export async function assertPublicHostname(hostname, lookupFn = dnsLookup) {
105
+ export function createPinnedLookup(params) {
106
+ const normalizedHost = normalizeHostname(params.hostname);
107
+ const fallback = params.fallback ?? dnsLookupCb;
108
+ const fallbackLookup = fallback;
109
+ const fallbackWithOptions = fallback;
110
+ const records = params.addresses.map((address) => ({
111
+ address,
112
+ family: address.includes(":") ? 6 : 4,
113
+ }));
114
+ let index = 0;
115
+ return ((host, options, callback) => {
116
+ const cb = typeof options === "function" ? options : callback;
117
+ if (!cb)
118
+ return;
119
+ const normalized = normalizeHostname(host);
120
+ if (!normalized || normalized !== normalizedHost) {
121
+ if (typeof options === "function" || options === undefined) {
122
+ return fallbackLookup(host, cb);
123
+ }
124
+ return fallbackWithOptions(host, options, cb);
125
+ }
126
+ const opts = typeof options === "object" && options !== null
127
+ ? options
128
+ : {};
129
+ const requestedFamily = typeof options === "number" ? options : typeof opts.family === "number" ? opts.family : 0;
130
+ const candidates = requestedFamily === 4 || requestedFamily === 6
131
+ ? records.filter((entry) => entry.family === requestedFamily)
132
+ : records;
133
+ const usable = candidates.length > 0 ? candidates : records;
134
+ if (opts.all) {
135
+ cb(null, usable);
136
+ return;
137
+ }
138
+ const chosen = usable[index % usable.length];
139
+ index += 1;
140
+ cb(null, chosen.address, chosen.family);
141
+ });
142
+ }
143
+ export async function resolvePinnedHostname(hostname, lookupFn = dnsLookup) {
104
144
  const normalized = normalizeHostname(hostname);
105
145
  if (!normalized) {
106
146
  throw new Error("Invalid hostname");
@@ -120,4 +160,40 @@ export async function assertPublicHostname(hostname, lookupFn = dnsLookup) {
120
160
  throw new SsrFBlockedError("Blocked: resolves to private/internal IP address");
121
161
  }
122
162
  }
163
+ const addresses = Array.from(new Set(results.map((entry) => entry.address)));
164
+ if (addresses.length === 0) {
165
+ throw new Error(`Unable to resolve hostname: ${hostname}`);
166
+ }
167
+ return {
168
+ hostname: normalized,
169
+ addresses,
170
+ lookup: createPinnedLookup({ hostname: normalized, addresses }),
171
+ };
172
+ }
173
+ export function createPinnedDispatcher(pinned) {
174
+ return new Agent({
175
+ connect: {
176
+ lookup: pinned.lookup,
177
+ },
178
+ });
179
+ }
180
+ export async function closeDispatcher(dispatcher) {
181
+ if (!dispatcher)
182
+ return;
183
+ const candidate = dispatcher;
184
+ try {
185
+ if (typeof candidate.close === "function") {
186
+ await candidate.close();
187
+ return;
188
+ }
189
+ if (typeof candidate.destroy === "function") {
190
+ candidate.destroy();
191
+ }
192
+ }
193
+ catch {
194
+ // ignore dispatcher cleanup errors
195
+ }
196
+ }
197
+ export async function assertPublicHostname(hostname, lookupFn = dnsLookup) {
198
+ await resolvePinnedHostname(hostname, lookupFn);
123
199
  }
@@ -25,6 +25,7 @@ export const MESSAGE_ACTION_TARGET_MODE = {
25
25
  "thread-reply": "to",
26
26
  search: "none",
27
27
  sticker: "to",
28
+ "sticker-search": "none",
28
29
  "member-info": "none",
29
30
  "role-info": "none",
30
31
  "emoji-list": "none",
@@ -55,7 +55,7 @@ export function resolveOutboundTarget(params) {
55
55
  if (params.channel === INTERNAL_MESSAGE_CHANNEL) {
56
56
  return {
57
57
  ok: false,
58
- error: new Error(`Delivering to WebChat is not supported via \`${formatCliCommand("clawdbot agent")}\`; use WhatsApp/Telegram or run with --deliver=false.`),
58
+ error: new Error(`Delivering to WebChat is not supported via \`${formatCliCommand("poolbot agent")}\`; use WhatsApp/Telegram or run with --deliver=false.`),
59
59
  };
60
60
  }
61
61
  const plugin = getChannelPlugin(params.channel);
@@ -42,20 +42,20 @@ function candidateBinDirs(opts) {
42
42
  const homeDir = opts.homeDir ?? os.homedir();
43
43
  const platform = opts.platform ?? process.platform;
44
44
  const candidates = [];
45
- // Bundled macOS app: `clawdbot` lives next to the executable (process.execPath).
45
+ // Bundled macOS app: `poolbot` lives next to the executable (process.execPath).
46
46
  try {
47
47
  const execDir = path.dirname(execPath);
48
- const siblingClawdbot = path.join(execDir, "clawdbot");
49
- if (isExecutable(siblingClawdbot))
48
+ const siblingMoltbot = path.join(execDir, "poolbot");
49
+ if (isExecutable(siblingMoltbot))
50
50
  candidates.push(execDir);
51
51
  }
52
52
  catch {
53
53
  // ignore
54
54
  }
55
- // Project-local installs (best effort): if a `node_modules/.bin/clawdbot` exists near cwd,
55
+ // Project-local installs (best effort): if a `node_modules/.bin/poolbot` exists near cwd,
56
56
  // include it. This helps when running under launchd or other minimal PATH environments.
57
57
  const localBinDir = path.join(cwd, "node_modules", ".bin");
58
- if (isExecutable(path.join(localBinDir, "clawdbot")))
58
+ if (isExecutable(path.join(localBinDir, "poolbot")))
59
59
  candidates.push(localBinDir);
60
60
  const miseDataDir = process.env.MISE_DATA_DIR ?? path.join(homeDir, ".local", "share", "mise");
61
61
  const miseShims = path.join(miseDataDir, "shims");
@@ -76,10 +76,10 @@ function candidateBinDirs(opts) {
76
76
  return candidates.filter(isDirectory);
77
77
  }
78
78
  /**
79
- * Best-effort PATH bootstrap so skills that require the `clawdbot` CLI can run
79
+ * Best-effort PATH bootstrap so skills that require the `poolbot` CLI can run
80
80
  * under launchd/minimal environments (and inside the macOS app bundle).
81
81
  */
82
- export function ensureClawdbotCliOnPath(opts = {}) {
82
+ export function ensureMoltbotCliOnPath(opts = {}) {
83
83
  if (isTruthyEnvValue(process.env.CLAWDBOT_PATH_BOOTSTRAPPED))
84
84
  return;
85
85
  process.env.CLAWDBOT_PATH_BOOTSTRAPPED = "1";
@@ -1,6 +1,7 @@
1
1
  import fs from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
+ const CORE_PACKAGE_NAMES = new Set(["poolbot", "poolbot"]);
4
5
  async function readPackageName(dir) {
5
6
  try {
6
7
  const raw = await fs.readFile(path.join(dir, "package.json"), "utf-8");
@@ -15,7 +16,7 @@ async function findPackageRoot(startDir, maxDepth = 12) {
15
16
  let current = path.resolve(startDir);
16
17
  for (let i = 0; i < maxDepth; i += 1) {
17
18
  const name = await readPackageName(current);
18
- if (name === "clawdbot")
19
+ if (name && CORE_PACKAGE_NAMES.has(name))
19
20
  return current;
20
21
  const parent = path.dirname(current);
21
22
  if (parent === current)
@@ -36,7 +37,7 @@ function candidateDirsFromArgv1(argv1) {
36
37
  }
37
38
  return candidates;
38
39
  }
39
- export async function resolveClawdbotPackageRoot(opts) {
40
+ export async function resolvePoolBotPackageRoot(opts) {
40
41
  const candidates = [];
41
42
  if (opts.moduleUrl) {
42
43
  candidates.push(path.dirname(fileURLToPath(opts.moduleUrl)));
@@ -1,7 +1,7 @@
1
1
  import { formatCliCommand } from "../cli/command-format.js";
2
2
  export function classifyPortListener(listener, port) {
3
3
  const raw = `${listener.commandLine ?? ""} ${listener.command ?? ""}`.trim().toLowerCase();
4
- if (raw.includes("clawdbot"))
4
+ if (raw.includes("poolbot"))
5
5
  return "gateway";
6
6
  if (raw.includes("ssh")) {
7
7
  const portToken = String(port);
@@ -18,7 +18,7 @@ export function buildPortHints(listeners, port) {
18
18
  const kinds = new Set(listeners.map((listener) => classifyPortListener(listener, port)));
19
19
  const hints = [];
20
20
  if (kinds.has("gateway")) {
21
- hints.push(`Gateway already running locally. Stop it (${formatCliCommand("clawdbot gateway stop")}) or use a different port.`);
21
+ hints.push(`Gateway already running locally. Stop it (${formatCliCommand("poolbot gateway stop")}) or use a different port.`);
22
22
  }
23
23
  if (kinds.has("ssh")) {
24
24
  hints.push("SSH tunnel already bound to this port. Close the tunnel or use a different local port in -L.");
@@ -52,8 +52,8 @@ export async function handlePortError(err, port, context, runtime = defaultRunti
52
52
  if (details) {
53
53
  runtime.error(info("Port listener details:"));
54
54
  runtime.error(details);
55
- if (/clawdbot|src\/index\.ts|dist\/index\.js/.test(details)) {
56
- runtime.error(warn("It looks like another clawdbot instance is already running. Stop it or pick a different port."));
55
+ if (/poolbot|src\/index\.ts|dist\/index\.js/.test(details)) {
56
+ runtime.error(warn("It looks like another poolbot instance is already running. Stop it or pick a different port."));
57
57
  }
58
58
  }
59
59
  runtime.error(info("Resolve by stopping the process using the port or passing --port <free-port>."));
@@ -1,7 +1,7 @@
1
1
  import fs from "node:fs";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
- import { CLAUDE_CLI_PROFILE_ID, ensureAuthProfileStore, listProfilesForProvider, resolveApiKeyForProfile, resolveAuthProfileOrder, } from "../agents/auth-profiles.js";
4
+ import { ensureAuthProfileStore, listProfilesForProvider, resolveApiKeyForProfile, resolveAuthProfileOrder, } from "../agents/auth-profiles.js";
5
5
  import { getCustomProviderApiKey, resolveEnvApiKey } from "../agents/model-auth.js";
6
6
  import { normalizeProviderId } from "../agents/model-selection.js";
7
7
  import { loadConfig } from "../config/config.js";
@@ -89,9 +89,7 @@ async function resolveOAuthToken(params) {
89
89
  store,
90
90
  provider: params.provider,
91
91
  });
92
- // Claude Code CLI creds are the only Anthropic tokens that reliably include the
93
- // `user:profile` scope required for the OAuth usage endpoint.
94
- const candidates = params.provider === "anthropic" ? [CLAUDE_CLI_PROFILE_ID, ...order] : order;
92
+ const candidates = order;
95
93
  const deduped = [];
96
94
  for (const entry of candidates) {
97
95
  if (!deduped.includes(entry))
@@ -62,7 +62,7 @@ export async function fetchClaudeUsage(token, timeoutMs, fetchFn) {
62
62
  const res = await fetchJson("https://api.anthropic.com/api/oauth/usage", {
63
63
  headers: {
64
64
  Authorization: `Bearer ${token}`,
65
- "User-Agent": "clawdbot",
65
+ "User-Agent": "poolbot",
66
66
  Accept: "application/json",
67
67
  "anthropic-version": "2023-06-01",
68
68
  "anthropic-beta": "oauth-2025-04-20",
@@ -260,7 +260,7 @@ export async function fetchMinimaxUsage(apiKey, timeoutMs, fetchFn) {
260
260
  headers: {
261
261
  Authorization: `Bearer ${apiKey}`,
262
262
  "Content-Type": "application/json",
263
- "MM-API-Source": "Clawdbot",
263
+ "MM-API-Source": "Moltbot",
264
264
  },
265
265
  }, timeoutMs, fetchFn);
266
266
  if (!res.ok) {
@@ -4,7 +4,7 @@ import { formatCliCommand } from "../cli/command-format.js";
4
4
  import { resolveStateDir } from "../config/paths.js";
5
5
  const SENTINEL_FILENAME = "restart-sentinel.json";
6
6
  export function formatDoctorNonInteractiveHint(env = process.env) {
7
- return `Run: ${formatCliCommand("clawdbot doctor --non-interactive", env)}`;
7
+ return `Run: ${formatCliCommand("poolbot doctor --non-interactive", env)}`;
8
8
  }
9
9
  export function resolveRestartSentinelPath(env = process.env) {
10
10
  return path.join(resolveStateDir(env), SENTINEL_FILENAME);
@@ -71,7 +71,7 @@ function normalizeSystemdUnit(raw, profile) {
71
71
  }
72
72
  return unit.endsWith(".service") ? unit : `${unit}.service`;
73
73
  }
74
- export function triggerClawdbotRestart() {
74
+ export function triggerMoltbotRestart() {
75
75
  if (process.env.VITEST || process.env.NODE_ENV === "test") {
76
76
  return { ok: true, method: "supervisor", detail: "test mode" };
77
77
  }
@@ -53,10 +53,13 @@ export function createTelegramRetryRunner(params) {
53
53
  ...params.configRetry,
54
54
  ...params.retry,
55
55
  });
56
+ const shouldRetry = params.shouldRetry
57
+ ? (err) => params.shouldRetry?.(err) || TELEGRAM_RETRY_RE.test(formatErrorMessage(err))
58
+ : (err) => TELEGRAM_RETRY_RE.test(formatErrorMessage(err));
56
59
  return (fn, label) => retryAsync(fn, {
57
60
  ...retryConfig,
58
61
  label,
59
- shouldRetry: (err) => TELEGRAM_RETRY_RE.test(formatErrorMessage(err)),
62
+ shouldRetry,
60
63
  retryAfterMs: getTelegramRetryAfterMs,
61
64
  onRetry: params.verbose
62
65
  ? (info) => {
@@ -50,11 +50,11 @@ export function assertSupportedRuntime(runtime = defaultRuntime, details = detec
50
50
  const runtimeLabel = details.kind === "unknown" ? "unknown runtime" : `${details.kind} ${versionLabel}`;
51
51
  const execLabel = details.execPath ?? "unknown";
52
52
  runtime.error([
53
- "clawdbot requires Node >=22.0.0.",
53
+ "poolbot requires Node >=22.0.0.",
54
54
  `Detected: ${runtimeLabel} (exec: ${execLabel}).`,
55
55
  `PATH searched: ${details.pathEnv}`,
56
56
  "Install Node: https://nodejs.org/en/download",
57
- "Upgrade Node and re-run clawdbot.",
57
+ "Upgrade Node and re-run poolbot.",
58
58
  ].join("\n"));
59
59
  runtime.exit(1);
60
60
  }
@@ -53,7 +53,7 @@ export function loadShellEnvFallback(opts) {
53
53
  }
54
54
  catch (err) {
55
55
  const msg = err instanceof Error ? err.message : String(err);
56
- logger.warn(`[clawdbot] shell env fallback failed: ${msg}`);
56
+ logger.warn(`[poolbot] shell env fallback failed: ${msg}`);
57
57
  lastAppliedKeys = [];
58
58
  return { ok: false, error: msg, applied: [] };
59
59
  }
@@ -139,11 +139,11 @@ function listWorkspaceDirs(cfg) {
139
139
  function collectRequiredBins(entries, targetPlatform) {
140
140
  const bins = new Set();
141
141
  for (const entry of entries) {
142
- const os = entry.clawdbot?.os ?? [];
142
+ const os = entry.metadata?.os ?? [];
143
143
  if (os.length > 0 && !os.includes(targetPlatform))
144
144
  continue;
145
- const required = entry.clawdbot?.requires?.bins ?? [];
146
- const anyBins = entry.clawdbot?.requires?.anyBins ?? [];
145
+ const required = entry.metadata?.requires?.bins ?? [];
146
+ const anyBins = entry.metadata?.requires?.anyBins ?? [];
147
147
  for (const bin of required) {
148
148
  if (bin.trim())
149
149
  bins.add(bin.trim());
@@ -173,6 +173,7 @@ export async function ensureTailscaledInstalled(exec = runExec, prompt = promptY
173
173
  logVerbose("Installing tailscaled via Homebrew…");
174
174
  await exec("brew", ["install", "tailscale"]);
175
175
  }
176
+ const whoisCache = new Map();
176
177
  function extractExecErrorText(err) {
177
178
  const errOutput = err;
178
179
  const stdout = typeof errOutput.stdout === "string" ? errOutput.stdout : "";
@@ -262,7 +263,7 @@ export async function ensureFunnel(port, exec = runExec, runtime = defaultRuntim
262
263
  console.error(warn("Tailscale client/server version mismatch detected; try updating tailscale/tailscaled."));
263
264
  }
264
265
  runtime.error("Failed to enable Tailscale Funnel. Is it allowed on your tailnet?");
265
- runtime.error(info(`Tip: Funnel is optional for CLAWDBOT. You can keep running the web gateway without it: \`${formatCliCommand("clawdbot gateway")}\``));
266
+ runtime.error(info(`Tip: Funnel is optional for Moltbot. You can keep running the web gateway without it: \`${formatCliCommand("poolbot gateway")}\``));
266
267
  if (shouldLogVerbose()) {
267
268
  const rich = isRich();
268
269
  if (stdout.trim()) {
@@ -304,3 +305,64 @@ export async function disableTailscaleFunnel(exec = runExec) {
304
305
  timeoutMs: 15_000,
305
306
  });
306
307
  }
308
+ function getString(value) {
309
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
310
+ }
311
+ function readRecord(value) {
312
+ return value && typeof value === "object" ? value : null;
313
+ }
314
+ function parseWhoisIdentity(payload) {
315
+ const userProfile = readRecord(payload.UserProfile) ?? readRecord(payload.userProfile) ?? readRecord(payload.User);
316
+ const login = getString(userProfile?.LoginName) ??
317
+ getString(userProfile?.Login) ??
318
+ getString(userProfile?.login) ??
319
+ getString(payload.LoginName) ??
320
+ getString(payload.login);
321
+ if (!login)
322
+ return null;
323
+ const name = getString(userProfile?.DisplayName) ??
324
+ getString(userProfile?.Name) ??
325
+ getString(userProfile?.displayName) ??
326
+ getString(payload.DisplayName) ??
327
+ getString(payload.name);
328
+ return { login, name };
329
+ }
330
+ function readCachedWhois(ip, now) {
331
+ const cached = whoisCache.get(ip);
332
+ if (!cached)
333
+ return undefined;
334
+ if (cached.expiresAt <= now) {
335
+ whoisCache.delete(ip);
336
+ return undefined;
337
+ }
338
+ return cached.value;
339
+ }
340
+ function writeCachedWhois(ip, value, ttlMs) {
341
+ whoisCache.set(ip, { value, expiresAt: Date.now() + ttlMs });
342
+ }
343
+ export async function readTailscaleWhoisIdentity(ip, exec = runExec, opts) {
344
+ const normalized = ip.trim();
345
+ if (!normalized)
346
+ return null;
347
+ const now = Date.now();
348
+ const cached = readCachedWhois(normalized, now);
349
+ if (cached !== undefined)
350
+ return cached;
351
+ const cacheTtlMs = opts?.cacheTtlMs ?? 60_000;
352
+ const errorTtlMs = opts?.errorTtlMs ?? 5_000;
353
+ try {
354
+ const tailscaleBin = await getTailscaleBinary();
355
+ const { stdout } = await exec(tailscaleBin, ["whois", "--json", normalized], {
356
+ timeoutMs: opts?.timeoutMs ?? 5_000,
357
+ maxBuffer: 200_000,
358
+ });
359
+ const parsed = stdout ? parsePossiblyNoisyJsonObject(stdout) : {};
360
+ const identity = parseWhoisIdentity(parsed);
361
+ writeCachedWhois(normalized, identity, cacheTtlMs);
362
+ return identity;
363
+ }
364
+ catch {
365
+ writeCachedWhois(normalized, null, errorTtlMs);
366
+ return null;
367
+ }
368
+ }