@poolzin/pool-bot 2026.1.26 → 2026.1.29

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 (1155) hide show
  1. package/CHANGELOG.md +50 -1118
  2. package/LICENSE +21 -0
  3. package/README.md +47 -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 +22 -33
  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/message-tool.js +1 -0
  75. package/dist/agents/tools/sessions-send-helpers.js +17 -2
  76. package/dist/agents/tools/telegram-actions.js +93 -1
  77. package/dist/agents/tools/web-fetch.js +123 -103
  78. package/dist/agents/tools/web-search.js +7 -7
  79. package/dist/agents/workspace.js +36 -0
  80. package/dist/auto-reply/commands-registry.data.js +68 -3
  81. package/dist/auto-reply/commands-registry.js +14 -11
  82. package/dist/auto-reply/reply/agent-runner-execution.js +21 -3
  83. package/dist/auto-reply/reply/agent-runner-memory.js +5 -0
  84. package/dist/auto-reply/reply/bash-command.js +2 -2
  85. package/dist/auto-reply/reply/commands-context-report.js +2 -2
  86. package/dist/auto-reply/reply/commands-info.js +50 -5
  87. package/dist/auto-reply/reply/commands-session.js +4 -4
  88. package/dist/auto-reply/reply/commands-tts.js +61 -63
  89. package/dist/auto-reply/reply/directive-handling.shared.js +1 -1
  90. package/dist/auto-reply/reply/dispatch-from-config.js +65 -1
  91. package/dist/auto-reply/reply/followup-runner.js +5 -0
  92. package/dist/auto-reply/reply/get-reply-inline-actions.js +2 -2
  93. package/dist/auto-reply/reply/get-reply-run.js +4 -0
  94. package/dist/auto-reply/reply/groups.js +1 -1
  95. package/dist/auto-reply/reply/history.js +23 -0
  96. package/dist/auto-reply/reply/reply-elevated.js +1 -1
  97. package/dist/auto-reply/reply/session-updates.js +6 -1
  98. package/dist/auto-reply/reply/stage-sandbox-media.js +1 -1
  99. package/dist/auto-reply/status.js +142 -50
  100. package/dist/browser/bridge-server.js +1 -3
  101. package/dist/browser/client-actions-core.js +13 -7
  102. package/dist/browser/client-actions-observe.js +14 -8
  103. package/dist/browser/client-actions-state.js +21 -15
  104. package/dist/browser/client-fetch.js +74 -61
  105. package/dist/browser/client.js +19 -21
  106. package/dist/browser/config.js +13 -26
  107. package/dist/browser/constants.js +1 -1
  108. package/dist/browser/control-service.js +72 -0
  109. package/dist/browser/extension-relay.js +3 -3
  110. package/dist/browser/pw-session.js +41 -4
  111. package/dist/browser/pw-tools-core.downloads.js +1 -1
  112. package/dist/browser/pw-tools-core.interactions.js +5 -5
  113. package/dist/browser/pw-tools-core.responses.js +1 -1
  114. package/dist/browser/routes/agent.act.js +13 -0
  115. package/dist/browser/routes/agent.debug.js +1 -1
  116. package/dist/browser/routes/basic.js +0 -1
  117. package/dist/browser/routes/dispatcher.js +86 -0
  118. package/dist/browser/server-context.js +3 -3
  119. package/dist/browser/server.js +7 -9
  120. package/dist/build-info.json +3 -3
  121. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  122. package/dist/canvas-host/a2ui/a2ui.bundle.js +1620 -1618
  123. package/dist/canvas-host/a2ui/index.html +28 -28
  124. package/dist/canvas-host/a2ui.js +27 -21
  125. package/dist/canvas-host/server.js +66 -32
  126. package/dist/channels/plugins/actions/discord/handle-action.guild-admin.js +5 -1
  127. package/dist/channels/plugins/actions/telegram.js +60 -7
  128. package/dist/channels/plugins/catalog.js +6 -4
  129. package/dist/channels/plugins/group-mentions.js +48 -1
  130. package/dist/channels/plugins/helpers.js +2 -2
  131. package/dist/channels/plugins/message-action-names.js +1 -0
  132. package/dist/channels/plugins/onboarding/imessage.js +1 -1
  133. package/dist/channels/plugins/onboarding/signal.js +2 -2
  134. package/dist/channels/plugins/onboarding/slack.js +4 -4
  135. package/dist/channels/plugins/onboarding/telegram.js +17 -9
  136. package/dist/channels/plugins/onboarding/whatsapp.js +4 -4
  137. package/dist/channels/plugins/outbound/telegram.js +38 -0
  138. package/dist/channels/plugins/pairing-message.js +1 -1
  139. package/dist/channels/plugins/status-issues/bluebubbles.js +1 -1
  140. package/dist/channels/plugins/status-issues/whatsapp.js +2 -2
  141. package/dist/channels/registry.js +1 -1
  142. package/dist/cli/acp-cli.js +2 -2
  143. package/dist/cli/argv.js +14 -7
  144. package/dist/cli/banner.js +3 -1
  145. package/dist/cli/browser-cli-actions-input/register.element.js +72 -44
  146. package/dist/cli/browser-cli-actions-input/register.files-downloads.js +55 -35
  147. package/dist/cli/browser-cli-actions-input/register.form-wait-eval.js +41 -28
  148. package/dist/cli/browser-cli-actions-input/register.navigation.js +23 -14
  149. package/dist/cli/browser-cli-actions-input/shared.js +10 -3
  150. package/dist/cli/browser-cli-actions-observe.js +29 -21
  151. package/dist/cli/browser-cli-debug.js +49 -35
  152. package/dist/cli/browser-cli-examples.js +29 -29
  153. package/dist/cli/browser-cli-extension.js +8 -8
  154. package/dist/cli/browser-cli-inspect.js +23 -17
  155. package/dist/cli/browser-cli-manage.js +106 -56
  156. package/dist/cli/browser-cli-shared.js +34 -1
  157. package/dist/cli/browser-cli-state.cookies-storage.js +53 -39
  158. package/dist/cli/browser-cli-state.js +90 -64
  159. package/dist/cli/browser-cli.js +4 -5
  160. package/dist/cli/channels-cli.js +1 -1
  161. package/dist/cli/cli-name.js +26 -0
  162. package/dist/cli/command-format.js +11 -7
  163. package/dist/cli/config-cli.js +2 -2
  164. package/dist/cli/cron-cli/register.js +1 -1
  165. package/dist/cli/daemon-cli/install.js +1 -1
  166. package/dist/cli/daemon-cli/register.js +1 -1
  167. package/dist/cli/daemon-cli/shared.js +5 -3
  168. package/dist/cli/daemon-cli/status.print.js +6 -6
  169. package/dist/cli/directory-cli.js +1 -1
  170. package/dist/cli/dns-cli.js +7 -7
  171. package/dist/cli/docs-cli.js +2 -2
  172. package/dist/cli/exec-approvals-cli.js +2 -2
  173. package/dist/cli/gateway-cli/dev.js +4 -4
  174. package/dist/cli/gateway-cli/register.js +1 -1
  175. package/dist/cli/gateway-cli/run.js +11 -8
  176. package/dist/cli/gateway-cli/shared.js +4 -4
  177. package/dist/cli/hooks-cli.js +3 -3
  178. package/dist/cli/logs-cli.js +3 -3
  179. package/dist/cli/memory-cli.js +1 -1
  180. package/dist/cli/models-cli.js +2 -2
  181. package/dist/cli/node-cli/daemon.js +2 -2
  182. package/dist/cli/node-cli/register.js +1 -1
  183. package/dist/cli/nodes-camera.js +3 -1
  184. package/dist/cli/nodes-canvas.js +3 -1
  185. package/dist/cli/nodes-cli/register.canvas.js +1 -1
  186. package/dist/cli/nodes-cli/register.js +1 -1
  187. package/dist/cli/nodes-screen.js +1 -1
  188. package/dist/cli/pairing-cli.js +3 -3
  189. package/dist/cli/plugin-registry.js +2 -2
  190. package/dist/cli/plugins-cli.js +3 -3
  191. package/dist/cli/profile.js +2 -2
  192. package/dist/cli/program/config-guard.js +1 -1
  193. package/dist/cli/program/help.js +15 -16
  194. package/dist/cli/program/message/register.send.js +2 -1
  195. package/dist/cli/program/preaction.js +4 -2
  196. package/dist/cli/program/register.agent.js +12 -12
  197. package/dist/cli/program/register.configure.js +1 -1
  198. package/dist/cli/program/register.maintenance.js +4 -4
  199. package/dist/cli/program/register.message.js +5 -5
  200. package/dist/cli/program/register.onboard.js +5 -3
  201. package/dist/cli/program/register.setup.js +2 -2
  202. package/dist/cli/program/register.status-health-sessions.js +13 -13
  203. package/dist/cli/run-main.js +11 -4
  204. package/dist/cli/sandbox-cli.js +19 -19
  205. package/dist/cli/security-cli.js +18 -8
  206. package/dist/cli/skills-cli.js +3 -3
  207. package/dist/cli/system-cli.js +1 -1
  208. package/dist/cli/tagline.js +1 -1
  209. package/dist/cli/tui-cli.js +1 -1
  210. package/dist/cli/update-cli.js +58 -42
  211. package/dist/cli/webhooks-cli.js +6 -6
  212. package/dist/commands/agent-via-gateway.js +1 -1
  213. package/dist/commands/agent.js +2 -1
  214. package/dist/commands/agents.command-shared.js +1 -1
  215. package/dist/commands/agents.commands.add.js +2 -3
  216. package/dist/commands/agents.commands.list.js +1 -1
  217. package/dist/commands/auth-choice-options.js +4 -54
  218. package/dist/commands/auth-choice.apply.anthropic.js +6 -109
  219. package/dist/commands/auth-choice.apply.openai.js +1 -33
  220. package/dist/commands/auth-choice.apply.plugin-provider.js +2 -2
  221. package/dist/commands/channels/list.js +2 -2
  222. package/dist/commands/channels/shared.js +1 -1
  223. package/dist/commands/channels/status.js +1 -1
  224. package/dist/commands/chutes-oauth.js +1 -1
  225. package/dist/commands/configure.channels.js +4 -4
  226. package/dist/commands/configure.gateway-auth.js +1 -8
  227. package/dist/commands/configure.gateway.js +1 -10
  228. package/dist/commands/configure.wizard.js +11 -11
  229. package/dist/commands/daemon-install-helpers.js +1 -1
  230. package/dist/commands/dashboard.js +1 -1
  231. package/dist/commands/docs.js +5 -5
  232. package/dist/commands/doctor-auth.js +122 -3
  233. package/dist/commands/doctor-config-flow.js +7 -7
  234. package/dist/commands/doctor-format.js +2 -2
  235. package/dist/commands/doctor-gateway-daemon-flow.js +1 -1
  236. package/dist/commands/doctor-gateway-services.js +3 -3
  237. package/dist/commands/doctor-platform-notes.js +1 -1
  238. package/dist/commands/doctor-security.js +48 -1
  239. package/dist/commands/doctor-state-integrity.js +3 -3
  240. package/dist/commands/doctor-ui.js +2 -2
  241. package/dist/commands/doctor-update.js +4 -4
  242. package/dist/commands/doctor-workspace-status.js +2 -2
  243. package/dist/commands/doctor-workspace.js +4 -4
  244. package/dist/commands/doctor.js +13 -12
  245. package/dist/commands/gateway-status.js +2 -2
  246. package/dist/commands/models/auth.js +23 -22
  247. package/dist/commands/models/list.probe.js +2 -2
  248. package/dist/commands/models/list.registry.js +4 -4
  249. package/dist/commands/models/list.status-command.js +8 -9
  250. package/dist/commands/onboard-auth.credentials.js +2 -2
  251. package/dist/commands/onboard-channels.js +3 -3
  252. package/dist/commands/onboard-helpers.js +4 -4
  253. package/dist/commands/onboard-hooks.js +4 -4
  254. package/dist/commands/onboard-non-interactive/local/auth-choice.js +38 -34
  255. package/dist/commands/onboard-non-interactive/local/gateway-config.js +7 -4
  256. package/dist/commands/onboard-non-interactive/local.js +1 -1
  257. package/dist/commands/onboard-non-interactive/remote.js +1 -1
  258. package/dist/commands/onboard-non-interactive.js +1 -1
  259. package/dist/commands/onboard-remote.js +2 -2
  260. package/dist/commands/onboard-skills.js +2 -2
  261. package/dist/commands/onboard.js +25 -4
  262. package/dist/commands/onboarding/plugin-install.js +2 -2
  263. package/dist/commands/reset.js +3 -3
  264. package/dist/commands/sandbox-display.js +1 -1
  265. package/dist/commands/sandbox-explain.js +2 -2
  266. package/dist/commands/setup.js +2 -2
  267. package/dist/commands/signal-install.js +2 -2
  268. package/dist/commands/status-all/diagnosis.js +1 -1
  269. package/dist/commands/status-all/report-lines.js +1 -1
  270. package/dist/commands/status-all.js +3 -3
  271. package/dist/commands/status.command.js +9 -9
  272. package/dist/commands/status.update.js +3 -3
  273. package/dist/commands/uninstall.js +4 -4
  274. package/dist/compat/legacy-names.js +5 -0
  275. package/dist/config/config.js +1 -1
  276. package/dist/config/group-policy.js +69 -0
  277. package/dist/config/io.js +17 -5
  278. package/dist/config/legacy.migrations.part-3.js +3 -0
  279. package/dist/config/logging.js +3 -3
  280. package/dist/config/paths.js +44 -14
  281. package/dist/config/schema.js +23 -11
  282. package/dist/config/sessions/transcript.js +1 -1
  283. package/dist/config/types.js +1 -1
  284. package/dist/config/types.poolbot.js +1 -0
  285. package/dist/config/validation.js +2 -2
  286. package/dist/config/version.js +4 -4
  287. package/dist/config/zod-schema.agent-defaults.js +1 -0
  288. package/dist/config/zod-schema.agent-runtime.js +39 -7
  289. package/dist/config/zod-schema.hooks.js +2 -0
  290. package/dist/config/zod-schema.js +9 -3
  291. package/dist/config/zod-schema.providers-core.js +23 -0
  292. package/dist/config/zod-schema.providers-whatsapp.js +3 -0
  293. package/dist/control-ui/assets/index-CIRDm-Lu.css +1 -0
  294. package/dist/control-ui/assets/{index-Cl-Y9zqE.js → index-CmNMuoem.js} +620 -578
  295. package/dist/control-ui/assets/index-CmNMuoem.js.map +1 -0
  296. package/dist/control-ui/index.html +4 -4
  297. package/dist/cron/isolated-agent/run.js +38 -3
  298. package/dist/daemon/constants.js +16 -16
  299. package/dist/daemon/inspect.js +12 -12
  300. package/dist/daemon/paths.js +1 -1
  301. package/dist/daemon/program-args.js +1 -1
  302. package/dist/daemon/systemd-hints.js +1 -1
  303. package/dist/daemon/systemd-unit.js +1 -1
  304. package/dist/discord/monitor/listeners.js +25 -1
  305. package/dist/discord/monitor/native-command.js +7 -5
  306. package/dist/discord/monitor/presence-cache.js +38 -0
  307. package/dist/discord/monitor/provider.js +21 -7
  308. package/dist/entry.js +4 -4
  309. package/dist/gateway/auth.js +52 -19
  310. package/dist/gateway/hooks-mapping.js +18 -4
  311. package/dist/gateway/hooks.js +5 -7
  312. package/dist/gateway/http-utils.js +3 -5
  313. package/dist/gateway/net.js +1 -1
  314. package/dist/gateway/openai-http.js +3 -3
  315. package/dist/gateway/openresponses-http.js +4 -4
  316. package/dist/gateway/protocol/client-info.js +5 -5
  317. package/dist/gateway/protocol/schema/logs-chat.js +1 -1
  318. package/dist/gateway/server/health-state.js +3 -3
  319. package/dist/gateway/server/hooks.js +1 -0
  320. package/dist/gateway/server/ws-connection/message-handler.js +44 -35
  321. package/dist/gateway/server-browser.js +14 -3
  322. package/dist/gateway/server-chat.js +28 -2
  323. package/dist/gateway/server-discovery-runtime.js +25 -17
  324. package/dist/gateway/server-discovery.js +5 -5
  325. package/dist/gateway/server-http.js +9 -3
  326. package/dist/gateway/server-methods/agent.js +2 -0
  327. package/dist/gateway/server-methods/browser.js +204 -0
  328. package/dist/gateway/server-methods/chat.js +5 -0
  329. package/dist/gateway/server-methods/config.js +8 -8
  330. package/dist/gateway/server-methods/logs.js +1 -1
  331. package/dist/gateway/server-methods/skills.js +3 -3
  332. package/dist/gateway/server-methods/update.js +2 -2
  333. package/dist/gateway/server-methods-list.js +1 -0
  334. package/dist/gateway/server-methods.js +3 -0
  335. package/dist/gateway/server-plugins.js +2 -2
  336. package/dist/gateway/server-restart-sentinel.js +10 -5
  337. package/dist/gateway/server-runtime-config.js +5 -2
  338. package/dist/gateway/server.impl.js +7 -6
  339. package/dist/gateway/session-utils.fs.js +1 -1
  340. package/dist/gateway/session-utils.js +31 -11
  341. package/dist/gateway/test-helpers.mocks.js +5 -5
  342. package/dist/gateway/test-helpers.server.js +30 -11
  343. package/dist/gateway/tools-invoke-http.js +15 -8
  344. package/dist/hooks/bundled/boot-md/HOOK.md +3 -3
  345. package/dist/hooks/bundled/command-logger/HOOK.md +12 -12
  346. package/dist/hooks/bundled/command-logger/handler.js +1 -1
  347. package/dist/hooks/bundled/session-memory/HOOK.md +4 -4
  348. package/dist/hooks/bundled/session-memory/handler.js +2 -2
  349. package/dist/hooks/bundled/soul-evil/HOOK.md +5 -5
  350. package/dist/hooks/bundled-dir.js +1 -1
  351. package/dist/hooks/config.js +8 -7
  352. package/dist/hooks/frontmatter.js +16 -15
  353. package/dist/hooks/gmail-ops.js +4 -4
  354. package/dist/hooks/hooks-status.js +13 -13
  355. package/dist/hooks/install.js +8 -7
  356. package/dist/hooks/internal-hooks.js +1 -1
  357. package/dist/hooks/llm-slug-generator.js +1 -1
  358. package/dist/hooks/loader.js +3 -3
  359. package/dist/hooks/plugin-hooks.js +8 -8
  360. package/dist/hooks/workspace.js +10 -9
  361. package/dist/imessage/monitor/monitor-provider.js +2 -2
  362. package/dist/index.js +4 -4
  363. package/dist/infra/agent-events.js +3 -0
  364. package/dist/infra/bonjour-discovery.js +9 -9
  365. package/dist/infra/bonjour.js +19 -12
  366. package/dist/infra/device-identity.js +1 -1
  367. package/dist/infra/dotenv.js +1 -1
  368. package/dist/infra/exec-approvals.js +2 -2
  369. package/dist/infra/fs-safe.js +76 -0
  370. package/dist/infra/gateway-lock.js +1 -1
  371. package/dist/infra/heartbeat-visibility.js +14 -0
  372. package/dist/infra/heartbeat-wake.js +2 -2
  373. package/dist/infra/machine-name.js +1 -1
  374. package/dist/infra/net/ssrf.js +77 -1
  375. package/dist/infra/outbound/message-action-spec.js +1 -0
  376. package/dist/infra/outbound/targets.js +1 -1
  377. package/dist/infra/path-env.js +7 -7
  378. package/dist/infra/{clawdbot-root.js → poolbot-root.js} +3 -2
  379. package/dist/infra/ports-format.js +2 -2
  380. package/dist/infra/ports.js +2 -2
  381. package/dist/infra/provider-usage.auth.js +2 -4
  382. package/dist/infra/provider-usage.fetch.claude.js +1 -1
  383. package/dist/infra/provider-usage.fetch.minimax.js +1 -1
  384. package/dist/infra/restart-sentinel.js +1 -1
  385. package/dist/infra/restart.js +1 -1
  386. package/dist/infra/retry-policy.js +4 -1
  387. package/dist/infra/runtime-guard.js +2 -2
  388. package/dist/infra/shell-env.js +1 -1
  389. package/dist/infra/skills-remote.js +3 -3
  390. package/dist/infra/tailscale.js +63 -1
  391. package/dist/infra/tls/gateway.js +1 -1
  392. package/dist/infra/unhandled-rejections.js +89 -2
  393. package/dist/infra/update-check.js +2 -4
  394. package/dist/infra/update-global.js +5 -5
  395. package/dist/infra/update-runner.js +32 -8
  396. package/dist/infra/update-startup.js +3 -3
  397. package/dist/infra/warnings.js +1 -1
  398. package/dist/infra/widearea-dns.js +10 -10
  399. package/dist/line/monitor.js +1 -5
  400. package/dist/line/signature.js +11 -0
  401. package/dist/line/webhook.js +2 -6
  402. package/dist/logging/logger.js +4 -4
  403. package/dist/macos/gateway-daemon.js +2 -2
  404. package/dist/macos/relay.js +4 -4
  405. package/dist/media/host.js +1 -1
  406. package/dist/media/image-ops.js +1 -1
  407. package/dist/media/input-files.js +40 -32
  408. package/dist/media/server.js +39 -15
  409. package/dist/media/store.js +72 -52
  410. package/dist/media-understanding/attachments.js +1 -1
  411. package/dist/media-understanding/providers/image.js +2 -2
  412. package/dist/media-understanding/runner.js +33 -1
  413. package/dist/memory/batch-gemini.js +1 -1
  414. package/dist/memory/batch-openai.js +1 -1
  415. package/dist/memory/embeddings.js +1 -1
  416. package/dist/node-host/runner.js +60 -56
  417. package/dist/pairing/pairing-messages.js +2 -2
  418. package/dist/plugin-sdk/index.js +1 -0
  419. package/dist/plugins/cli.js +2 -2
  420. package/dist/plugins/discovery.js +6 -5
  421. package/dist/plugins/install.js +8 -7
  422. package/dist/plugins/loader.js +10 -4
  423. package/dist/plugins/manifest-registry.js +2 -2
  424. package/dist/plugins/manifest.js +16 -1
  425. package/dist/plugins/providers.js +2 -2
  426. package/dist/plugins/registry.js +5 -5
  427. package/dist/plugins/runtime.js +1 -1
  428. package/dist/plugins/services.js +3 -3
  429. package/dist/plugins/status.js +2 -2
  430. package/dist/plugins/tools.js +2 -2
  431. package/dist/plugins/update.js +3 -3
  432. package/dist/providers/qwen-portal-oauth.js +1 -1
  433. package/dist/routing/session-key.js +17 -12
  434. package/dist/security/audit-extra.js +116 -69
  435. package/dist/security/audit-fs.js +78 -0
  436. package/dist/security/audit.js +121 -88
  437. package/dist/security/external-content.js +143 -0
  438. package/dist/security/fix.js +93 -8
  439. package/dist/security/windows-acl.js +162 -0
  440. package/dist/slack/monitor/media.js +32 -4
  441. package/dist/slack/monitor/message-handler/dispatch.js +2 -1
  442. package/dist/slack/monitor/slash.js +3 -3
  443. package/dist/slack/monitor.test-helpers.js +1 -1
  444. package/dist/telegram/api-logging.js +24 -0
  445. package/dist/telegram/bot/delivery.js +139 -22
  446. package/dist/telegram/bot-handlers.js +70 -8
  447. package/dist/telegram/bot-message-context.js +79 -21
  448. package/dist/telegram/bot-message-dispatch.js +64 -0
  449. package/dist/telegram/bot-native-commands.js +244 -94
  450. package/dist/telegram/bot.js +18 -2
  451. package/dist/telegram/fetch.js +25 -1
  452. package/dist/telegram/monitor.js +11 -3
  453. package/dist/telegram/network-config.js +23 -0
  454. package/dist/telegram/network-errors.js +103 -0
  455. package/dist/telegram/send.js +148 -4
  456. package/dist/telegram/sticker-cache.js +202 -0
  457. package/dist/telegram/webhook-set.js +13 -6
  458. package/dist/telegram/webhook.js +8 -3
  459. package/dist/terminal/links.js +1 -1
  460. package/dist/tts/tts.js +27 -22
  461. package/dist/tui/components/filterable-select-list.js +1 -1
  462. package/dist/tui/components/searchable-select-list.js +2 -1
  463. package/dist/tui/gateway-chat.js +1 -1
  464. package/dist/tui/tui.js +1 -1
  465. package/dist/utils.js +1 -1
  466. package/dist/version.js +1 -1
  467. package/dist/web/active-listener.js +1 -1
  468. package/dist/web/auth-store.js +1 -1
  469. package/dist/web/auto-reply/monitor/process-message.js +1 -1
  470. package/dist/web/auto-reply/monitor.js +1 -1
  471. package/dist/web/login.js +1 -1
  472. package/dist/web/session.js +2 -2
  473. package/dist/wizard/onboarding.finalize.js +24 -21
  474. package/dist/wizard/onboarding.gateway-config.js +1 -11
  475. package/dist/wizard/onboarding.js +22 -11
  476. package/docs/CNAME +1 -1
  477. package/docs/RELEASE_WORKFLOW.md +133 -0
  478. package/docs/RELEASE_WORKFOTS_COMPARISON.md +151 -0
  479. package/docs/WORKFOTS_OPTIMIZATION.md +138 -0
  480. package/docs/_config.yml +2 -2
  481. package/docs/_layouts/default.html +9 -9
  482. package/docs/adr/002-model-fallback-router.md +104 -0
  483. package/docs/assets/terminal.css +3 -0
  484. package/docs/assets/theme.js +1 -1
  485. package/docs/automation/auth-monitoring.md +7 -7
  486. package/docs/automation/cron-jobs.md +17 -17
  487. package/docs/automation/cron-vs-heartbeat.md +8 -8
  488. package/docs/automation/gmail-pubsub.md +23 -21
  489. package/docs/automation/poll.md +7 -7
  490. package/docs/automation/webhook.md +13 -8
  491. package/docs/bedrock.md +10 -10
  492. package/docs/brave-search.md +1 -1
  493. package/docs/broadcast-groups.md +4 -4
  494. package/docs/channels/bluebubbles.md +13 -12
  495. package/docs/channels/discord.md +21 -16
  496. package/docs/channels/googlechat.md +16 -16
  497. package/docs/channels/imessage.md +12 -12
  498. package/docs/channels/index.md +6 -4
  499. package/docs/channels/line.md +183 -0
  500. package/docs/channels/location.md +1 -1
  501. package/docs/channels/matrix.md +15 -15
  502. package/docs/channels/mattermost.md +8 -8
  503. package/docs/channels/msteams.md +30 -26
  504. package/docs/channels/nextcloud-talk.md +7 -7
  505. package/docs/channels/nostr.md +9 -9
  506. package/docs/channels/signal.md +9 -9
  507. package/docs/channels/slack.md +15 -13
  508. package/docs/channels/telegram.md +149 -20
  509. package/docs/channels/tlon.md +5 -5
  510. package/docs/channels/troubleshooting.md +2 -2
  511. package/docs/channels/twitch.md +366 -0
  512. package/docs/channels/whatsapp.md +25 -25
  513. package/docs/channels/zalo.md +8 -8
  514. package/docs/channels/zalouser.md +12 -12
  515. package/docs/cli/acp.md +24 -24
  516. package/docs/cli/agent.md +6 -6
  517. package/docs/cli/agents.md +9 -9
  518. package/docs/cli/approvals.md +14 -14
  519. package/docs/cli/browser.md +33 -35
  520. package/docs/cli/channels.md +21 -21
  521. package/docs/cli/config.md +15 -15
  522. package/docs/cli/configure.md +6 -6
  523. package/docs/cli/cron.md +5 -5
  524. package/docs/cli/dashboard.md +4 -4
  525. package/docs/cli/devices.md +13 -13
  526. package/docs/cli/directory.md +12 -12
  527. package/docs/cli/dns.md +5 -5
  528. package/docs/cli/docs.md +5 -5
  529. package/docs/cli/doctor.md +6 -6
  530. package/docs/cli/gateway.md +24 -24
  531. package/docs/cli/health.md +5 -5
  532. package/docs/cli/hooks.md +34 -34
  533. package/docs/cli/index.md +46 -52
  534. package/docs/cli/logs.md +6 -6
  535. package/docs/cli/memory.md +11 -11
  536. package/docs/cli/message.md +11 -11
  537. package/docs/cli/models.md +17 -17
  538. package/docs/cli/node.md +14 -14
  539. package/docs/cli/nodes.md +14 -14
  540. package/docs/cli/onboard.md +7 -6
  541. package/docs/cli/pairing.md +4 -4
  542. package/docs/cli/plugins.md +16 -16
  543. package/docs/cli/reset.md +5 -5
  544. package/docs/cli/sandbox.md +28 -28
  545. package/docs/cli/security.md +5 -5
  546. package/docs/cli/sessions.md +5 -5
  547. package/docs/cli/setup.md +6 -6
  548. package/docs/cli/skills.md +6 -6
  549. package/docs/cli/status.md +7 -7
  550. package/docs/cli/system.md +6 -6
  551. package/docs/cli/tui.md +5 -5
  552. package/docs/cli/uninstall.md +5 -5
  553. package/docs/cli/update.md +20 -20
  554. package/docs/cli/voicecall.md +9 -9
  555. package/docs/cli/webhooks.md +5 -5
  556. package/docs/concepts/agent-loop.md +5 -5
  557. package/docs/concepts/agent-workspace.md +20 -20
  558. package/docs/concepts/agent.md +12 -12
  559. package/docs/concepts/architecture.md +1 -1
  560. package/docs/concepts/channel-routing.md +4 -4
  561. package/docs/concepts/compaction.md +5 -5
  562. package/docs/concepts/context.md +6 -6
  563. package/docs/concepts/group-messages.md +6 -6
  564. package/docs/concepts/groups.md +41 -5
  565. package/docs/concepts/markdown-formatting.md +3 -3
  566. package/docs/concepts/memory.md +14 -14
  567. package/docs/concepts/messages.md +4 -4
  568. package/docs/concepts/model-failover.md +14 -14
  569. package/docs/concepts/model-providers.md +22 -22
  570. package/docs/concepts/models.md +27 -27
  571. package/docs/concepts/multi-agent.md +18 -18
  572. package/docs/concepts/oauth.md +31 -58
  573. package/docs/concepts/presence.md +2 -2
  574. package/docs/concepts/retry.md +1 -1
  575. package/docs/concepts/session-pruning.md +1 -1
  576. package/docs/concepts/session-tool.md +4 -4
  577. package/docs/concepts/session.md +14 -14
  578. package/docs/concepts/streaming.md +3 -3
  579. package/docs/concepts/system-prompt.md +11 -11
  580. package/docs/concepts/timezone.md +2 -2
  581. package/docs/concepts/typebox.md +2 -2
  582. package/docs/concepts/typing-indicators.md +2 -2
  583. package/docs/concepts/usage-tracking.md +3 -3
  584. package/docs/date-time.md +2 -2
  585. package/docs/debug/node-issue.md +4 -4
  586. package/docs/debugging.md +14 -14
  587. package/docs/diagnostics/flags.md +5 -5
  588. package/docs/docs.json +37 -7
  589. package/docs/environment.md +4 -4
  590. package/docs/experiments/plans/cron-add-hardening.md +1 -1
  591. package/docs/experiments/plans/openresponses-gateway.md +2 -2
  592. package/docs/experiments/research/memory.md +6 -6
  593. package/docs/gateway/authentication.md +33 -57
  594. package/docs/gateway/background-process.md +1 -1
  595. package/docs/gateway/bonjour.md +21 -21
  596. package/docs/gateway/bridge-protocol.md +2 -2
  597. package/docs/gateway/cli-backends.md +13 -12
  598. package/docs/gateway/configuration-examples.md +14 -14
  599. package/docs/gateway/configuration.md +145 -132
  600. package/docs/gateway/discovery.md +6 -6
  601. package/docs/gateway/doctor.md +26 -26
  602. package/docs/gateway/gateway-lock.md +1 -1
  603. package/docs/gateway/health.md +11 -11
  604. package/docs/gateway/heartbeat.md +5 -5
  605. package/docs/gateway/index.md +56 -56
  606. package/docs/gateway/local-models.md +2 -2
  607. package/docs/gateway/logging.md +8 -8
  608. package/docs/gateway/multiple-gateways.md +23 -23
  609. package/docs/gateway/openai-http-api.md +10 -10
  610. package/docs/gateway/openresponses-http-api.md +10 -10
  611. package/docs/gateway/pairing.md +8 -8
  612. package/docs/gateway/protocol.md +5 -4
  613. package/docs/gateway/remote-gateway-readme.md +13 -13
  614. package/docs/gateway/remote.md +4 -4
  615. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +10 -7
  616. package/docs/gateway/sandboxing.md +8 -6
  617. package/docs/gateway/security/formal-verification.md +107 -0
  618. package/docs/gateway/{security.md → security/index.md} +151 -71
  619. package/docs/gateway/tailscale.md +16 -35
  620. package/docs/gateway/tools-invoke-http-api.md +3 -3
  621. package/docs/gateway/troubleshooting.md +108 -113
  622. package/docs/help/faq.md +326 -335
  623. package/docs/help/troubleshooting.md +15 -15
  624. package/docs/hooks/soul-evil.md +2 -2
  625. package/docs/hooks.md +60 -60
  626. package/docs/index.md +35 -35
  627. package/docs/install/ansible.md +35 -35
  628. package/docs/install/development-channels.md +10 -10
  629. package/docs/install/docker.md +31 -31
  630. package/docs/install/index.md +28 -27
  631. package/docs/install/installer.md +21 -21
  632. package/docs/install/migrating.md +190 -0
  633. package/docs/install/nix.md +17 -17
  634. package/docs/install/node.md +7 -6
  635. package/docs/install/uninstall.md +29 -29
  636. package/docs/install/updating.md +50 -49
  637. package/docs/logging.md +58 -58
  638. package/docs/multi-agent-sandbox-tools.md +7 -7
  639. package/docs/network.md +1 -1
  640. package/docs/nodes/audio.md +2 -2
  641. package/docs/nodes/camera.md +18 -18
  642. package/docs/nodes/images.md +4 -4
  643. package/docs/nodes/index.md +55 -55
  644. package/docs/nodes/location-command.md +2 -2
  645. package/docs/nodes/media-understanding.md +5 -5
  646. package/docs/nodes/talk.md +1 -1
  647. package/docs/nodes/voicewake.md +2 -2
  648. package/docs/northflank.mdx +53 -0
  649. package/docs/perplexity.md +2 -2
  650. package/docs/platforms/android.md +13 -13
  651. package/docs/platforms/digitalocean.md +243 -0
  652. package/docs/platforms/exe-dev.md +23 -23
  653. package/docs/platforms/fly.md +129 -18
  654. package/docs/platforms/gcp.md +498 -0
  655. package/docs/platforms/hetzner.md +30 -30
  656. package/docs/platforms/index.md +9 -9
  657. package/docs/platforms/ios.md +13 -13
  658. package/docs/platforms/linux.md +11 -11
  659. package/docs/platforms/mac/bundled-gateway.md +14 -14
  660. package/docs/platforms/mac/canvas.md +14 -14
  661. package/docs/platforms/mac/child-process.md +9 -9
  662. package/docs/platforms/mac/dev-setup.md +11 -11
  663. package/docs/platforms/mac/health.md +2 -2
  664. package/docs/platforms/mac/icon.md +1 -1
  665. package/docs/platforms/mac/logging.md +7 -7
  666. package/docs/platforms/mac/menu-bar.md +1 -1
  667. package/docs/platforms/mac/peekaboo.md +9 -9
  668. package/docs/platforms/mac/permissions.md +3 -3
  669. package/docs/platforms/mac/release.md +20 -20
  670. package/docs/platforms/mac/remote.md +14 -14
  671. package/docs/platforms/mac/signing.md +7 -7
  672. package/docs/platforms/mac/skills.md +4 -4
  673. package/docs/platforms/mac/voice-overlay.md +2 -2
  674. package/docs/platforms/mac/webchat.md +2 -2
  675. package/docs/platforms/mac/xpc.md +4 -4
  676. package/docs/platforms/macos-vm.md +27 -27
  677. package/docs/platforms/macos.md +20 -20
  678. package/docs/platforms/oracle.md +291 -0
  679. package/docs/platforms/raspberry-pi.md +354 -0
  680. package/docs/platforms/windows.md +11 -11
  681. package/docs/plugin.md +64 -64
  682. package/docs/plugins/agent-tools.md +1 -1
  683. package/docs/plugins/manifest.md +4 -4
  684. package/docs/plugins/voice-call.md +15 -12
  685. package/docs/plugins/zalouser.md +9 -9
  686. package/docs/prose.md +9 -9
  687. package/docs/providers/anthropic.md +23 -27
  688. package/docs/providers/claude-max-api-proxy.md +145 -0
  689. package/docs/providers/deepgram.md +2 -2
  690. package/docs/providers/github-copilot.md +11 -11
  691. package/docs/providers/glm.md +4 -4
  692. package/docs/providers/index.md +7 -3
  693. package/docs/providers/minimax.md +9 -9
  694. package/docs/providers/models.md +3 -3
  695. package/docs/providers/moonshot.md +2 -2
  696. package/docs/providers/ollama.md +11 -11
  697. package/docs/providers/openai.md +9 -13
  698. package/docs/providers/opencode.md +3 -3
  699. package/docs/providers/openrouter.md +3 -3
  700. package/docs/providers/qwen.md +6 -6
  701. package/docs/providers/synthetic.md +4 -4
  702. package/docs/providers/venice.md +21 -21
  703. package/docs/providers/vercel-ai-gateway.md +5 -4
  704. package/docs/providers/zai.md +5 -5
  705. package/docs/railway.mdx +5 -5
  706. package/docs/refactor/exec-host.md +5 -5
  707. package/docs/refactor/plugin-sdk.md +12 -12
  708. package/docs/refactor/strict-config.md +11 -11
  709. package/docs/reference/AGENTS.default.md +10 -10
  710. package/docs/reference/RELEASING.md +27 -27
  711. package/docs/reference/api-usage-costs.md +6 -6
  712. package/docs/reference/device-models.md +7 -7
  713. package/docs/reference/rpc.md +3 -3
  714. package/docs/reference/session-management-compaction.md +19 -19
  715. package/docs/reference/templates/AGENTS.dev.md +1 -1
  716. package/docs/reference/templates/BOOT.md +1 -1
  717. package/docs/reference/templates/TOOLS.dev.md +1 -1
  718. package/docs/reference/templates/USER.dev.md +2 -2
  719. package/docs/reference/test.md +2 -2
  720. package/docs/reference/transcript-hygiene.md +1 -1
  721. package/docs/render.mdx +158 -0
  722. package/docs/scripts.md +1 -1
  723. package/docs/security/formal-verification.md +107 -0
  724. package/docs/start/getting-started.md +31 -25
  725. package/docs/start/hubs.md +2 -2
  726. package/docs/start/lore.md +74 -38
  727. package/docs/start/onboarding.md +7 -7
  728. package/docs/start/pairing.md +10 -10
  729. package/docs/start/{clawd.md → poolbot.md} +29 -29
  730. package/docs/start/setup.md +30 -17
  731. package/docs/start/showcase.md +32 -32
  732. package/docs/start/wizard.md +29 -26
  733. package/docs/testing.md +12 -12
  734. package/docs/token-use.md +7 -7
  735. package/docs/tools/agent-send.md +10 -10
  736. package/docs/tools/browser-linux-troubleshooting.md +10 -10
  737. package/docs/tools/browser-login.md +4 -4
  738. package/docs/tools/browser.md +135 -241
  739. package/docs/tools/chrome-extension.md +31 -48
  740. package/docs/tools/creating-skills.md +4 -4
  741. package/docs/tools/elevated.md +1 -0
  742. package/docs/tools/exec-approvals.md +8 -5
  743. package/docs/tools/exec.md +15 -4
  744. package/docs/tools/firecrawl.md +2 -2
  745. package/docs/tools/index.md +18 -15
  746. package/docs/tools/llm-task.md +1 -1
  747. package/docs/tools/lobster.md +23 -11
  748. package/docs/tools/{clawdhub.md → poolhub.md} +7 -7
  749. package/docs/tools/skills-config.md +2 -2
  750. package/docs/tools/skills.md +39 -31
  751. package/docs/tools/slash-commands.md +10 -8
  752. package/docs/tools/web.md +8 -8
  753. package/docs/tts.md +11 -11
  754. package/docs/tui.md +7 -7
  755. package/docs/vps.md +6 -1
  756. package/docs/web/control-ui.md +13 -12
  757. package/docs/web/dashboard.md +8 -4
  758. package/docs/web/index.md +6 -5
  759. package/docs/web/webchat.md +1 -1
  760. package/extensions/bluebubbles/index.ts +3 -3
  761. package/extensions/bluebubbles/package.json +5 -5
  762. package/extensions/bluebubbles/src/accounts.ts +9 -9
  763. package/extensions/bluebubbles/src/actions.test.ts +22 -22
  764. package/extensions/bluebubbles/src/actions.ts +6 -6
  765. package/extensions/bluebubbles/src/attachments.ts +2 -2
  766. package/extensions/bluebubbles/src/channel.ts +17 -17
  767. package/extensions/bluebubbles/src/chat.ts +2 -2
  768. package/extensions/bluebubbles/src/config-schema.ts +1 -1
  769. package/extensions/bluebubbles/src/media-send.ts +2 -2
  770. package/extensions/bluebubbles/src/monitor.test.ts +56 -50
  771. package/extensions/bluebubbles/src/monitor.ts +181 -6
  772. package/extensions/bluebubbles/src/onboarding.ts +9 -9
  773. package/extensions/bluebubbles/src/reactions.ts +2 -2
  774. package/extensions/bluebubbles/src/runtime.ts +1 -1
  775. package/extensions/bluebubbles/src/send.ts +2 -2
  776. package/extensions/copilot-proxy/README.md +2 -2
  777. package/extensions/copilot-proxy/index.ts +1 -1
  778. package/extensions/copilot-proxy/package.json +4 -4
  779. package/extensions/diagnostics-otel/index.ts +3 -3
  780. package/extensions/diagnostics-otel/package.json +4 -4
  781. package/extensions/diagnostics-otel/src/service.test.ts +15 -15
  782. package/extensions/diagnostics-otel/src/service.ts +85 -85
  783. package/extensions/discord/index.ts +3 -3
  784. package/extensions/discord/package.json +4 -4
  785. package/extensions/discord/src/channel.ts +1 -1
  786. package/extensions/discord/src/runtime.ts +1 -1
  787. package/extensions/google-antigravity-auth/README.md +2 -2
  788. package/extensions/google-antigravity-auth/index.ts +9 -2
  789. package/extensions/google-antigravity-auth/package.json +4 -4
  790. package/extensions/google-gemini-cli-auth/README.md +2 -2
  791. package/extensions/google-gemini-cli-auth/index.ts +1 -1
  792. package/extensions/google-gemini-cli-auth/oauth.ts +2 -2
  793. package/extensions/google-gemini-cli-auth/package.json +4 -4
  794. package/extensions/googlechat/index.ts +4 -4
  795. package/extensions/googlechat/node_modules/.bin/poolbot +21 -0
  796. package/extensions/googlechat/package.json +7 -7
  797. package/extensions/googlechat/src/accounts.ts +9 -9
  798. package/extensions/googlechat/src/actions.ts +8 -8
  799. package/extensions/googlechat/src/api.ts +1 -1
  800. package/extensions/googlechat/src/channel.ts +23 -23
  801. package/extensions/googlechat/src/monitor.ts +9 -9
  802. package/extensions/googlechat/src/onboarding.ts +11 -11
  803. package/extensions/googlechat/src/runtime.ts +1 -1
  804. package/extensions/googlechat/src/types.config.ts +1 -1
  805. package/extensions/imessage/index.ts +3 -3
  806. package/extensions/imessage/package.json +4 -4
  807. package/extensions/imessage/src/channel.ts +1 -1
  808. package/extensions/imessage/src/runtime.ts +1 -1
  809. package/extensions/line/index.ts +3 -3
  810. package/extensions/line/node_modules/.bin/poolbot +21 -0
  811. package/extensions/line/package.json +6 -6
  812. package/extensions/line/src/card-command.ts +3 -3
  813. package/extensions/line/src/channel.logout.test.ts +4 -4
  814. package/extensions/line/src/channel.sendPayload.test.ts +8 -8
  815. package/extensions/line/src/channel.ts +5 -5
  816. package/extensions/line/src/runtime.ts +1 -1
  817. package/extensions/llm-task/README.md +1 -1
  818. package/extensions/llm-task/index.ts +2 -2
  819. package/extensions/llm-task/package.json +4 -4
  820. package/extensions/llm-task/src/llm-task-tool.ts +5 -5
  821. package/extensions/lobster/index.ts +2 -2
  822. package/extensions/lobster/package.json +3 -3
  823. package/extensions/lobster/src/lobster-tool.test.ts +26 -6
  824. package/extensions/lobster/src/lobster-tool.ts +24 -6
  825. package/extensions/matrix/CHANGELOG.md +9 -9
  826. package/extensions/matrix/index.ts +3 -3
  827. package/extensions/matrix/node_modules/.bin/markdown-it +0 -0
  828. package/extensions/matrix/node_modules/.bin/poolbot +21 -0
  829. package/extensions/matrix/package.json +7 -7
  830. package/extensions/matrix/src/actions.ts +1 -1
  831. package/extensions/matrix/src/channel.directory.test.ts +1 -1
  832. package/extensions/matrix/src/channel.ts +1 -1
  833. package/extensions/matrix/src/config-schema.ts +1 -1
  834. package/extensions/matrix/src/directory-live.ts +1 -1
  835. package/extensions/matrix/src/group-mentions.ts +1 -1
  836. package/extensions/matrix/src/matrix/accounts.ts +1 -1
  837. package/extensions/matrix/src/matrix/actions/messages.ts +1 -1
  838. package/extensions/matrix/src/matrix/actions/reactions.ts +1 -1
  839. package/extensions/matrix/src/matrix/actions/room.ts +3 -3
  840. package/extensions/matrix/src/matrix/actions/summary.ts +1 -1
  841. package/extensions/matrix/src/matrix/actions/types.ts +1 -1
  842. package/extensions/matrix/src/matrix/active-client.ts +1 -1
  843. package/extensions/matrix/src/matrix/client/config.ts +2 -2
  844. package/extensions/matrix/src/matrix/client/create-client.ts +2 -2
  845. package/extensions/matrix/src/matrix/client/logging.ts +1 -1
  846. package/extensions/matrix/src/matrix/client/shared.ts +3 -3
  847. package/extensions/matrix/src/matrix/deps.ts +5 -5
  848. package/extensions/matrix/src/matrix/monitor/allowlist.ts +1 -1
  849. package/extensions/matrix/src/matrix/monitor/auto-join.ts +3 -3
  850. package/extensions/matrix/src/matrix/monitor/direct.ts +1 -1
  851. package/extensions/matrix/src/matrix/monitor/events.ts +2 -2
  852. package/extensions/matrix/src/matrix/monitor/handler.ts +8 -8
  853. package/extensions/matrix/src/matrix/monitor/index.ts +2 -2
  854. package/extensions/matrix/src/matrix/monitor/location.ts +2 -2
  855. package/extensions/matrix/src/matrix/monitor/media.test.ts +3 -3
  856. package/extensions/matrix/src/matrix/monitor/media.ts +3 -3
  857. package/extensions/matrix/src/matrix/monitor/replies.ts +2 -2
  858. package/extensions/matrix/src/matrix/monitor/room-info.ts +1 -1
  859. package/extensions/matrix/src/matrix/monitor/rooms.ts +1 -1
  860. package/extensions/matrix/src/matrix/monitor/threads.ts +1 -1
  861. package/extensions/matrix/src/matrix/monitor/types.ts +1 -1
  862. package/extensions/matrix/src/matrix/poll-types.ts +1 -1
  863. package/extensions/matrix/src/matrix/probe.ts +1 -1
  864. package/extensions/matrix/src/matrix/send/client.ts +2 -2
  865. package/extensions/matrix/src/matrix/send/media.ts +1 -1
  866. package/extensions/matrix/src/matrix/send/targets.test.ts +1 -1
  867. package/extensions/matrix/src/matrix/send/targets.ts +1 -1
  868. package/extensions/matrix/src/matrix/send/types.ts +2 -2
  869. package/extensions/matrix/src/matrix/send.test.ts +3 -3
  870. package/extensions/matrix/src/matrix/send.ts +4 -4
  871. package/extensions/matrix/src/onboarding.ts +3 -3
  872. package/extensions/matrix/src/outbound.ts +1 -1
  873. package/extensions/matrix/src/resolve-targets.ts +1 -1
  874. package/extensions/matrix/src/runtime.ts +1 -1
  875. package/extensions/matrix/src/tool-actions.ts +1 -1
  876. package/extensions/matrix/src/types.ts +1 -1
  877. package/extensions/mattermost/index.ts +3 -3
  878. package/extensions/mattermost/package.json +5 -5
  879. package/extensions/mattermost/src/channel.ts +1 -1
  880. package/extensions/mattermost/src/config-schema.ts +1 -1
  881. package/extensions/mattermost/src/group-mentions.ts +1 -1
  882. package/extensions/mattermost/src/mattermost/accounts.ts +9 -9
  883. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +5 -5
  884. package/extensions/mattermost/src/mattermost/monitor.ts +4 -4
  885. package/extensions/mattermost/src/onboarding-helpers.ts +4 -4
  886. package/extensions/mattermost/src/onboarding.ts +4 -4
  887. package/extensions/mattermost/src/runtime.ts +1 -1
  888. package/extensions/mattermost/src/types.ts +1 -1
  889. package/extensions/memory-core/index.ts +3 -3
  890. package/extensions/memory-core/node_modules/.bin/poolbot +21 -0
  891. package/extensions/memory-core/package.json +5 -5
  892. package/extensions/memory-lancedb/config.ts +2 -2
  893. package/extensions/memory-lancedb/index.test.ts +2 -2
  894. package/extensions/memory-lancedb/index.ts +4 -4
  895. package/extensions/memory-lancedb/node_modules/.bin/openai +0 -0
  896. package/extensions/memory-lancedb/package.json +4 -4
  897. package/extensions/memory-lancedb/{clawdbot.plugin.json → poolbot.plugin.json} +1 -1
  898. package/extensions/msteams/CHANGELOG.md +7 -7
  899. package/extensions/msteams/index.ts +3 -3
  900. package/extensions/msteams/node_modules/.bin/poolbot +21 -0
  901. package/extensions/msteams/package.json +6 -6
  902. package/extensions/msteams/src/attachments.test.ts +1 -1
  903. package/extensions/msteams/src/channel.directory.test.ts +2 -2
  904. package/extensions/msteams/src/channel.ts +3 -3
  905. package/extensions/msteams/src/conversation-store-fs.test.ts +3 -3
  906. package/extensions/msteams/src/directory-live.ts +1 -1
  907. package/extensions/msteams/src/graph-upload.ts +4 -4
  908. package/extensions/msteams/src/media-helpers.ts +1 -1
  909. package/extensions/msteams/src/messenger.test.ts +1 -1
  910. package/extensions/msteams/src/messenger.ts +1 -1
  911. package/extensions/msteams/src/monitor-handler/message-handler.ts +1 -1
  912. package/extensions/msteams/src/monitor-handler.ts +2 -2
  913. package/extensions/msteams/src/monitor.ts +3 -3
  914. package/extensions/msteams/src/onboarding.ts +11 -11
  915. package/extensions/msteams/src/outbound.ts +1 -1
  916. package/extensions/msteams/src/policy.test.ts +1 -1
  917. package/extensions/msteams/src/policy.ts +50 -5
  918. package/extensions/msteams/src/polls-store.test.ts +1 -1
  919. package/extensions/msteams/src/polls.test.ts +4 -4
  920. package/extensions/msteams/src/polls.ts +8 -8
  921. package/extensions/msteams/src/probe.test.ts +1 -1
  922. package/extensions/msteams/src/probe.ts +1 -1
  923. package/extensions/msteams/src/reply-dispatcher.ts +36 -36
  924. package/extensions/msteams/src/runtime.ts +1 -1
  925. package/extensions/msteams/src/send-context.ts +2 -2
  926. package/extensions/msteams/src/send.ts +5 -5
  927. package/extensions/msteams/src/token.ts +1 -1
  928. package/extensions/nextcloud-talk/index.ts +3 -3
  929. package/extensions/nextcloud-talk/package.json +5 -5
  930. package/extensions/nextcloud-talk/src/accounts.ts +1 -1
  931. package/extensions/nextcloud-talk/src/channel.ts +8 -8
  932. package/extensions/nextcloud-talk/src/config-schema.ts +1 -1
  933. package/extensions/nextcloud-talk/src/inbound.ts +8 -8
  934. package/extensions/nextcloud-talk/src/monitor.ts +1 -1
  935. package/extensions/nextcloud-talk/src/onboarding.ts +2 -2
  936. package/extensions/nextcloud-talk/src/policy.ts +2 -2
  937. package/extensions/nextcloud-talk/src/room-info.ts +1 -1
  938. package/extensions/nextcloud-talk/src/runtime.ts +1 -1
  939. package/extensions/nextcloud-talk/src/types.ts +1 -1
  940. package/extensions/nostr/CHANGELOG.md +4 -4
  941. package/extensions/nostr/README.md +3 -3
  942. package/extensions/nostr/index.ts +6 -6
  943. package/extensions/nostr/node_modules/.bin/poolbot +21 -0
  944. package/extensions/nostr/package.json +6 -6
  945. package/extensions/nostr/src/channel.ts +2 -2
  946. package/extensions/nostr/src/config-schema.ts +1 -1
  947. package/extensions/nostr/src/nostr-state-store.test.ts +3 -3
  948. package/extensions/nostr/src/runtime.ts +1 -1
  949. package/extensions/nostr/src/types.ts +4 -4
  950. package/extensions/open-prose/index.ts +2 -2
  951. package/extensions/open-prose/package.json +3 -3
  952. package/extensions/open-prose/skills/prose/SKILL.md +5 -5
  953. package/extensions/open-prose/skills/prose/prose.md +4 -4
  954. package/extensions/qwen-portal-auth/README.md +2 -2
  955. package/extensions/qwen-portal-auth/index.ts +1 -1
  956. package/extensions/signal/index.ts +3 -3
  957. package/extensions/signal/package.json +4 -4
  958. package/extensions/signal/src/channel.ts +1 -1
  959. package/extensions/signal/src/runtime.ts +1 -1
  960. package/extensions/slack/index.ts +3 -3
  961. package/extensions/slack/package.json +4 -4
  962. package/extensions/slack/src/channel.ts +1 -1
  963. package/extensions/slack/src/runtime.ts +1 -1
  964. package/extensions/telegram/index.ts +3 -3
  965. package/extensions/telegram/package.json +4 -4
  966. package/extensions/telegram/src/channel.ts +3 -3
  967. package/extensions/telegram/src/runtime.ts +1 -1
  968. package/extensions/tlon/README.md +1 -1
  969. package/extensions/tlon/index.ts +3 -3
  970. package/extensions/tlon/package.json +5 -5
  971. package/extensions/tlon/src/channel.ts +15 -15
  972. package/extensions/tlon/src/config-schema.ts +1 -1
  973. package/extensions/tlon/src/monitor/discovery.ts +1 -1
  974. package/extensions/tlon/src/monitor/history.ts +1 -1
  975. package/extensions/tlon/src/monitor/index.ts +3 -3
  976. package/extensions/tlon/src/onboarding.ts +4 -4
  977. package/extensions/tlon/src/runtime.ts +1 -1
  978. package/extensions/tlon/src/types.ts +3 -3
  979. package/extensions/tlon/src/urbit/send.ts +19 -6
  980. package/extensions/twitch/CHANGELOG.md +21 -0
  981. package/extensions/twitch/README.md +89 -0
  982. package/extensions/twitch/index.ts +20 -0
  983. package/extensions/twitch/node_modules/.bin/poolbot +21 -0
  984. package/extensions/twitch/package.json +20 -0
  985. package/extensions/twitch/poolbot.plugin.json +9 -0
  986. package/extensions/twitch/src/access-control.test.ts +489 -0
  987. package/extensions/twitch/src/access-control.ts +154 -0
  988. package/extensions/twitch/src/actions.ts +173 -0
  989. package/extensions/twitch/src/client-manager-registry.ts +115 -0
  990. package/extensions/twitch/src/config-schema.ts +82 -0
  991. package/extensions/twitch/src/config.test.ts +88 -0
  992. package/extensions/twitch/src/config.ts +116 -0
  993. package/extensions/twitch/src/monitor.ts +257 -0
  994. package/extensions/twitch/src/onboarding.test.ts +311 -0
  995. package/extensions/twitch/src/onboarding.ts +411 -0
  996. package/extensions/twitch/src/outbound.test.ts +373 -0
  997. package/extensions/twitch/src/outbound.ts +186 -0
  998. package/extensions/twitch/src/plugin.test.ts +39 -0
  999. package/extensions/twitch/src/plugin.ts +274 -0
  1000. package/extensions/twitch/src/probe.test.ts +198 -0
  1001. package/extensions/twitch/src/probe.ts +118 -0
  1002. package/extensions/twitch/src/resolver.ts +137 -0
  1003. package/extensions/twitch/src/runtime.ts +14 -0
  1004. package/extensions/twitch/src/send.test.ts +289 -0
  1005. package/extensions/twitch/src/send.ts +136 -0
  1006. package/extensions/twitch/src/status.test.ts +270 -0
  1007. package/extensions/twitch/src/status.ts +176 -0
  1008. package/extensions/twitch/src/token.test.ts +171 -0
  1009. package/extensions/twitch/src/token.ts +87 -0
  1010. package/extensions/twitch/src/twitch-client.test.ts +574 -0
  1011. package/extensions/twitch/src/twitch-client.ts +277 -0
  1012. package/extensions/twitch/src/types.ts +141 -0
  1013. package/extensions/twitch/src/utils/markdown.ts +92 -0
  1014. package/extensions/twitch/src/utils/twitch.ts +78 -0
  1015. package/extensions/twitch/test/setup.ts +7 -0
  1016. package/extensions/voice-call/CHANGELOG.md +13 -12
  1017. package/extensions/voice-call/README.md +15 -14
  1018. package/extensions/voice-call/index.ts +11 -9
  1019. package/extensions/voice-call/package.json +4 -4
  1020. package/extensions/voice-call/{clawdbot.plugin.json → poolbot.plugin.json} +3 -3
  1021. package/extensions/voice-call/src/cli.ts +1 -1
  1022. package/extensions/voice-call/src/config.test.ts +204 -0
  1023. package/extensions/voice-call/src/config.ts +61 -4
  1024. package/extensions/voice-call/src/core-bridge.ts +10 -8
  1025. package/extensions/voice-call/src/manager.test.ts +2 -2
  1026. package/extensions/voice-call/src/providers/twilio/webhook.ts +2 -1
  1027. package/extensions/voice-call/src/providers/twilio.ts +2 -2
  1028. package/extensions/voice-call/src/response-generator.ts +1 -1
  1029. package/extensions/voice-call/src/runtime.ts +26 -15
  1030. package/extensions/voice-call/src/types.ts +1 -0
  1031. package/extensions/voice-call/src/webhook-security.test.ts +52 -0
  1032. package/extensions/voice-call/src/webhook-security.ts +16 -5
  1033. package/extensions/voice-call/src/webhook.ts +1 -0
  1034. package/extensions/whatsapp/index.ts +3 -3
  1035. package/extensions/whatsapp/package.json +4 -4
  1036. package/extensions/whatsapp/src/channel.ts +1 -1
  1037. package/extensions/whatsapp/src/runtime.ts +1 -1
  1038. package/extensions/zalo/CHANGELOG.md +9 -9
  1039. package/extensions/zalo/README.md +3 -3
  1040. package/extensions/zalo/index.ts +3 -3
  1041. package/extensions/zalo/node_modules/.bin/poolbot +21 -0
  1042. package/extensions/zalo/package.json +6 -6
  1043. package/extensions/zalo/src/accounts.ts +9 -9
  1044. package/extensions/zalo/src/actions.ts +6 -6
  1045. package/extensions/zalo/src/channel.directory.test.ts +2 -2
  1046. package/extensions/zalo/src/channel.ts +20 -20
  1047. package/extensions/zalo/src/config-schema.ts +1 -1
  1048. package/extensions/zalo/src/monitor.ts +9 -9
  1049. package/extensions/zalo/src/monitor.webhook.test.ts +2 -2
  1050. package/extensions/zalo/src/onboarding.ts +27 -27
  1051. package/extensions/zalo/src/runtime.ts +1 -1
  1052. package/extensions/zalo/src/send.ts +2 -2
  1053. package/extensions/zalo/src/status-issues.ts +1 -1
  1054. package/extensions/zalo/src/token.ts +1 -1
  1055. package/extensions/zalouser/CHANGELOG.md +4 -4
  1056. package/extensions/zalouser/README.md +17 -17
  1057. package/extensions/zalouser/index.ts +3 -3
  1058. package/extensions/zalouser/node_modules/.bin/poolbot +21 -0
  1059. package/extensions/zalouser/package.json +6 -6
  1060. package/extensions/zalouser/src/accounts.ts +10 -10
  1061. package/extensions/zalouser/src/channel.ts +27 -27
  1062. package/extensions/zalouser/src/config-schema.ts +1 -1
  1063. package/extensions/zalouser/src/monitor.ts +5 -5
  1064. package/extensions/zalouser/src/onboarding.ts +32 -32
  1065. package/extensions/zalouser/src/runtime.ts +1 -1
  1066. package/extensions/zalouser/src/status-issues.ts +2 -2
  1067. package/git-hooks/pre-commit +0 -0
  1068. package/package.json +78 -89
  1069. package/skills/1password/SKILL.md +3 -3
  1070. package/skills/apple-notes/SKILL.md +2 -2
  1071. package/skills/apple-reminders/SKILL.md +1 -1
  1072. package/skills/bear-notes/SKILL.md +1 -1
  1073. package/skills/bird/SKILL.md +1 -1
  1074. package/skills/blogwatcher/SKILL.md +1 -1
  1075. package/skills/blucli/SKILL.md +1 -1
  1076. package/skills/bluebubbles/SKILL.md +2 -2
  1077. package/skills/camsnap/SKILL.md +1 -1
  1078. package/skills/canvas/SKILL.md +15 -15
  1079. package/skills/coding-agent/SKILL.md +6 -6
  1080. package/skills/discord/SKILL.md +6 -5
  1081. package/skills/eightctl/SKILL.md +1 -1
  1082. package/skills/food-order/SKILL.md +1 -1
  1083. package/skills/gemini/SKILL.md +1 -1
  1084. package/skills/gifgrep/SKILL.md +1 -1
  1085. package/skills/github/SKILL.md +1 -0
  1086. package/skills/gog/SKILL.md +1 -1
  1087. package/skills/goplaces/SKILL.md +1 -1
  1088. package/skills/himalaya/SKILL.md +1 -1
  1089. package/skills/imsg/SKILL.md +1 -1
  1090. package/skills/local-places/SKILL.md +1 -1
  1091. package/skills/mcporter/SKILL.md +1 -1
  1092. package/skills/model-usage/SKILL.md +1 -1
  1093. package/skills/nano-banana-pro/SKILL.md +10 -5
  1094. package/skills/nano-banana-pro/scripts/generate_image.py +42 -27
  1095. package/skills/nano-pdf/SKILL.md +1 -1
  1096. package/skills/notion/SKILL.md +1 -1
  1097. package/skills/obsidian/SKILL.md +1 -1
  1098. package/skills/openai-image-gen/SKILL.md +1 -1
  1099. package/skills/openai-whisper/SKILL.md +1 -1
  1100. package/skills/openai-whisper-api/SKILL.md +2 -2
  1101. package/skills/openhue/SKILL.md +1 -1
  1102. package/skills/oracle/SKILL.md +1 -1
  1103. package/skills/ordercli/SKILL.md +1 -1
  1104. package/skills/peekaboo/SKILL.md +1 -1
  1105. package/skills/{clawdhub → poolhub}/SKILL.md +2 -2
  1106. package/skills/sag/SKILL.md +1 -1
  1107. package/skills/session-logs/SKILL.md +7 -7
  1108. package/skills/sherpa-onnx-tts/SKILL.md +6 -6
  1109. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -0
  1110. package/skills/slack/SKILL.md +4 -3
  1111. package/skills/songsee/SKILL.md +1 -1
  1112. package/skills/sonoscli/SKILL.md +1 -1
  1113. package/skills/spotify-player/SKILL.md +1 -1
  1114. package/skills/summarize/SKILL.md +1 -1
  1115. package/skills/things-mac/SKILL.md +3 -3
  1116. package/skills/tmux/SKILL.md +7 -7
  1117. package/skills/tmux/scripts/find-sessions.sh +1 -1
  1118. package/skills/tmux/scripts/wait-for-text.sh +0 -0
  1119. package/skills/trello/SKILL.md +2 -2
  1120. package/skills/video-frames/SKILL.md +1 -1
  1121. package/skills/voice-call/SKILL.md +4 -4
  1122. package/skills/wacli/SKILL.md +2 -2
  1123. package/skills/weather/SKILL.md +1 -1
  1124. package/dist/cli/browser-cli-serve.js +0 -91
  1125. package/dist/control-ui/assets/index-Cl-Y9zqE.js.map +0 -1
  1126. package/dist/control-ui/assets/index-DEPfFcOb.css +0 -1
  1127. package/docs/POOL-BOT.md +0 -119
  1128. /package/dist/{config/types.clawdbot.js → browser/routes/types.js} +0 -0
  1129. /package/docs/{whatsapp-clawd.jpg → whatsapp-poolbot.jpg} +0 -0
  1130. /package/extensions/bluebubbles/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1131. /package/extensions/copilot-proxy/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1132. /package/extensions/diagnostics-otel/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1133. /package/extensions/discord/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1134. /package/extensions/google-antigravity-auth/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1135. /package/extensions/google-gemini-cli-auth/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1136. /package/extensions/googlechat/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1137. /package/extensions/imessage/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1138. /package/extensions/line/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1139. /package/extensions/llm-task/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1140. /package/extensions/lobster/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1141. /package/extensions/matrix/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1142. /package/extensions/mattermost/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1143. /package/extensions/memory-core/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1144. /package/extensions/msteams/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1145. /package/extensions/nextcloud-talk/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1146. /package/extensions/nostr/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1147. /package/extensions/open-prose/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1148. /package/extensions/qwen-portal-auth/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1149. /package/extensions/signal/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1150. /package/extensions/slack/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1151. /package/extensions/telegram/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1152. /package/extensions/tlon/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1153. /package/extensions/whatsapp/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1154. /package/extensions/zalo/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
  1155. /package/extensions/zalouser/{clawdbot.plugin.json → poolbot.plugin.json} +0 -0
@@ -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
+ }
@@ -36,7 +36,7 @@ async function generateSelfSignedCert(params) {
36
36
  "-out",
37
37
  params.certPath,
38
38
  "-subj",
39
- "/CN=clawdbot-gateway",
39
+ "/CN=poolbot-gateway",
40
40
  ]);
41
41
  await fs.chmod(params.keyPath, 0o600).catch(() => { });
42
42
  await fs.chmod(params.certPath, 0o600).catch(() => { });
@@ -1,6 +1,81 @@
1
1
  import process from "node:process";
2
2
  import { formatUncaughtError } from "./errors.js";
3
3
  const handlers = new Set();
4
+ /**
5
+ * Checks if an error is an AbortError.
6
+ * These are typically intentional cancellations (e.g., during shutdown) and shouldn't crash.
7
+ */
8
+ export function isAbortError(err) {
9
+ if (!err || typeof err !== "object")
10
+ return false;
11
+ const name = "name" in err ? String(err.name) : "";
12
+ if (name === "AbortError")
13
+ return true;
14
+ // Check for "This operation was aborted" message from Node's undici
15
+ const message = "message" in err && typeof err.message === "string" ? err.message : "";
16
+ if (message === "This operation was aborted")
17
+ return true;
18
+ return false;
19
+ }
20
+ // Network error codes that indicate transient failures (shouldn't crash the gateway)
21
+ const TRANSIENT_NETWORK_CODES = new Set([
22
+ "ECONNRESET",
23
+ "ECONNREFUSED",
24
+ "ENOTFOUND",
25
+ "ETIMEDOUT",
26
+ "ESOCKETTIMEDOUT",
27
+ "ECONNABORTED",
28
+ "EPIPE",
29
+ "EHOSTUNREACH",
30
+ "ENETUNREACH",
31
+ "EAI_AGAIN",
32
+ "UND_ERR_CONNECT_TIMEOUT",
33
+ "UND_ERR_SOCKET",
34
+ "UND_ERR_HEADERS_TIMEOUT",
35
+ "UND_ERR_BODY_TIMEOUT",
36
+ ]);
37
+ function getErrorCode(err) {
38
+ if (!err || typeof err !== "object")
39
+ return undefined;
40
+ const code = err.code;
41
+ return typeof code === "string" ? code : undefined;
42
+ }
43
+ function getErrorCause(err) {
44
+ if (!err || typeof err !== "object")
45
+ return undefined;
46
+ return err.cause;
47
+ }
48
+ /**
49
+ * Checks if an error is a transient network error that shouldn't crash the gateway.
50
+ * These are typically temporary connectivity issues that will resolve on their own.
51
+ */
52
+ export function isTransientNetworkError(err) {
53
+ if (!err)
54
+ return false;
55
+ // Check the error itself
56
+ const code = getErrorCode(err);
57
+ if (code && TRANSIENT_NETWORK_CODES.has(code))
58
+ return true;
59
+ // "fetch failed" TypeError from undici (Node's native fetch)
60
+ if (err instanceof TypeError && err.message === "fetch failed") {
61
+ const cause = getErrorCause(err);
62
+ // The cause often contains the actual network error
63
+ if (cause)
64
+ return isTransientNetworkError(cause);
65
+ // Even without a cause, "fetch failed" is typically a network issue
66
+ return true;
67
+ }
68
+ // Check the cause chain recursively
69
+ const cause = getErrorCause(err);
70
+ if (cause && cause !== err) {
71
+ return isTransientNetworkError(cause);
72
+ }
73
+ // AggregateError may wrap multiple causes
74
+ if (err instanceof AggregateError && err.errors?.length) {
75
+ return err.errors.some((e) => isTransientNetworkError(e));
76
+ }
77
+ return false;
78
+ }
4
79
  export function registerUnhandledRejectionHandler(handler) {
5
80
  handlers.add(handler);
6
81
  return () => {
@@ -14,7 +89,7 @@ export function isUnhandledRejectionHandled(reason) {
14
89
  return true;
15
90
  }
16
91
  catch (err) {
17
- console.error("[clawdbot] Unhandled rejection handler failed:", err instanceof Error ? (err.stack ?? err.message) : err);
92
+ console.error("[poolbot] Unhandled rejection handler failed:", err instanceof Error ? (err.stack ?? err.message) : err);
18
93
  }
19
94
  }
20
95
  return false;
@@ -23,7 +98,19 @@ export function installUnhandledRejectionHandler() {
23
98
  process.on("unhandledRejection", (reason, _promise) => {
24
99
  if (isUnhandledRejectionHandled(reason))
25
100
  return;
26
- console.error("[clawdbot] Unhandled promise rejection:", formatUncaughtError(reason));
101
+ // AbortError is typically an intentional cancellation (e.g., during shutdown)
102
+ // Log it but don't crash - these are expected during graceful shutdown
103
+ if (isAbortError(reason)) {
104
+ console.warn("[poolbot] Suppressed AbortError:", formatUncaughtError(reason));
105
+ return;
106
+ }
107
+ // Transient network errors (fetch failed, connection reset, etc.) shouldn't crash
108
+ // These are temporary connectivity issues that will resolve on their own
109
+ if (isTransientNetworkError(reason)) {
110
+ console.error("[poolbot] Network error (non-fatal):", formatUncaughtError(reason));
111
+ return;
112
+ }
113
+ console.error("[poolbot] Unhandled promise rejection:", formatUncaughtError(reason));
27
114
  process.exit(1);
28
115
  });
29
116
  }
@@ -68,9 +68,7 @@ export async function checkGitUpdateStatus(params) {
68
68
  const tag = tagRes && tagRes.code === 0 ? tagRes.stdout.trim() : null;
69
69
  const upstreamRes = await runCommandWithTimeout(["git", "-C", root, "rev-parse", "--abbrev-ref", "@{upstream}"], { timeoutMs }).catch(() => null);
70
70
  const upstream = upstreamRes && upstreamRes.code === 0 ? upstreamRes.stdout.trim() : null;
71
- const dirtyRes = await runCommandWithTimeout(["git", "-C", root, "status", "--porcelain"], {
72
- timeoutMs,
73
- }).catch(() => null);
71
+ const dirtyRes = await runCommandWithTimeout(["git", "-C", root, "status", "--porcelain", "--", ":!dist/control-ui/"], { timeoutMs }).catch(() => null);
74
72
  const dirty = dirtyRes && dirtyRes.code === 0 ? dirtyRes.stdout.trim().length > 0 : null;
75
73
  const fetchOk = params.fetch
76
74
  ? await runCommandWithTimeout(["git", "-C", root, "fetch", "--quiet", "--prune"], { timeoutMs })
@@ -216,7 +214,7 @@ export async function fetchNpmTagVersion(params) {
216
214
  const timeoutMs = params?.timeoutMs ?? 3500;
217
215
  const tag = params.tag;
218
216
  try {
219
- const res = await fetchWithTimeout(`https://registry.npmjs.org/clawdbot/${encodeURIComponent(tag)}`, timeoutMs);
217
+ const res = await fetchWithTimeout(`https://registry.npmjs.org/poolbot/${encodeURIComponent(tag)}`, timeoutMs);
220
218
  if (!res.ok) {
221
219
  return { tag, version: null, error: `HTTP ${res.status}` };
222
220
  }
@@ -36,7 +36,7 @@ export async function resolveGlobalPackageRoot(manager, runCommand, timeoutMs) {
36
36
  const root = await resolveGlobalRoot(manager, runCommand, timeoutMs);
37
37
  if (!root)
38
38
  return null;
39
- return path.join(root, "clawdbot");
39
+ return path.join(root, "poolbot");
40
40
  }
41
41
  export async function detectGlobalInstallManagerForRoot(runCommand, pkgRoot, timeoutMs) {
42
42
  const pkgReal = await tryRealpath(pkgRoot);
@@ -52,13 +52,13 @@ export async function detectGlobalInstallManagerForRoot(runCommand, pkgRoot, tim
52
52
  if (!globalRoot)
53
53
  continue;
54
54
  const globalReal = await tryRealpath(globalRoot);
55
- const expected = path.join(globalReal, "clawdbot");
55
+ const expected = path.join(globalReal, "poolbot");
56
56
  if (path.resolve(expected) === path.resolve(pkgReal))
57
57
  return manager;
58
58
  }
59
59
  const bunGlobalRoot = resolveBunGlobalRoot();
60
60
  const bunGlobalReal = await tryRealpath(bunGlobalRoot);
61
- const bunExpected = path.join(bunGlobalReal, "clawdbot");
61
+ const bunExpected = path.join(bunGlobalReal, "poolbot");
62
62
  if (path.resolve(bunExpected) === path.resolve(pkgReal))
63
63
  return "bun";
64
64
  return null;
@@ -68,11 +68,11 @@ export async function detectGlobalInstallManagerByPresence(runCommand, timeoutMs
68
68
  const root = await resolveGlobalRoot(manager, runCommand, timeoutMs);
69
69
  if (!root)
70
70
  continue;
71
- if (await pathExists(path.join(root, "clawdbot")))
71
+ if (await pathExists(path.join(root, "poolbot")))
72
72
  return manager;
73
73
  }
74
74
  const bunRoot = resolveBunGlobalRoot();
75
- if (await pathExists(path.join(bunRoot, "clawdbot")))
75
+ if (await pathExists(path.join(bunRoot, "poolbot")))
76
76
  return "bun";
77
77
  return null;
78
78
  }
@@ -10,6 +10,8 @@ const DEFAULT_TIMEOUT_MS = 20 * 60_000;
10
10
  const MAX_LOG_CHARS = 8000;
11
11
  const PREFLIGHT_MAX_COMMITS = 10;
12
12
  const START_DIRS = ["cwd", "argv1", "process"];
13
+ const DEFAULT_PACKAGE_NAME = "poolbot";
14
+ const CORE_PACKAGE_NAMES = new Set([DEFAULT_PACKAGE_NAME, "poolbot"]);
13
15
  function normalizeDir(value) {
14
16
  if (!value)
15
17
  return null;
@@ -57,6 +59,17 @@ async function readPackageVersion(root) {
57
59
  return null;
58
60
  }
59
61
  }
62
+ async function readPackageName(root) {
63
+ try {
64
+ const raw = await fs.readFile(path.join(root, "package.json"), "utf-8");
65
+ const parsed = JSON.parse(raw);
66
+ const name = parsed?.name?.trim();
67
+ return name ? name : null;
68
+ }
69
+ catch {
70
+ return null;
71
+ }
72
+ }
60
73
  async function readBranchName(runCommand, root, timeoutMs) {
61
74
  const res = await runCommand(["git", "-C", root, "rev-parse", "--abbrev-ref", "HEAD"], {
62
75
  timeoutMs,
@@ -114,7 +127,8 @@ async function findPackageRoot(candidates) {
114
127
  try {
115
128
  const raw = await fs.readFile(pkgPath, "utf-8");
116
129
  const parsed = JSON.parse(raw);
117
- if (parsed?.name === "clawdbot")
130
+ const name = parsed?.name?.trim();
131
+ if (name && CORE_PACKAGE_NAMES.has(name))
118
132
  return current;
119
133
  }
120
134
  catch {
@@ -198,7 +212,12 @@ function normalizeTag(tag) {
198
212
  const trimmed = tag?.trim();
199
213
  if (!trimmed)
200
214
  return "latest";
201
- return trimmed.startsWith("clawdbot@") ? trimmed.slice("clawdbot@".length) : trimmed;
215
+ if (trimmed.startsWith("poolbot@"))
216
+ return trimmed.slice("poolbot@".length);
217
+ if (trimmed.startsWith(`${DEFAULT_PACKAGE_NAME}@`)) {
218
+ return trimmed.slice(`${DEFAULT_PACKAGE_NAME}@`.length);
219
+ }
220
+ return trimmed;
202
221
  }
203
222
  export async function runGatewayUpdate(opts = {}) {
204
223
  const startedAt = Date.now();
@@ -238,7 +257,7 @@ export async function runGatewayUpdate(opts = {}) {
238
257
  status: "error",
239
258
  mode: "unknown",
240
259
  root: gitRoot,
241
- reason: "not-clawdbot-root",
260
+ reason: "not-poolbot-root",
242
261
  steps: [],
243
262
  durationMs: Date.now() - startedAt,
244
263
  };
@@ -254,8 +273,8 @@ export async function runGatewayUpdate(opts = {}) {
254
273
  const channel = opts.channel ?? "dev";
255
274
  const branch = channel === "dev" ? await readBranchName(runCommand, gitRoot, timeoutMs) : null;
256
275
  const needsCheckoutMain = channel === "dev" && branch !== DEV_BRANCH;
257
- gitTotalSteps = channel === "dev" ? (needsCheckoutMain ? 10 : 9) : 8;
258
- const statusCheck = await runStep(step("clean check", ["git", "-C", gitRoot, "status", "--porcelain"], gitRoot));
276
+ gitTotalSteps = channel === "dev" ? (needsCheckoutMain ? 11 : 10) : 9;
277
+ const statusCheck = await runStep(step("clean check", ["git", "-C", gitRoot, "status", "--porcelain", "--", ":!dist/control-ui/"], gitRoot));
259
278
  steps.push(statusCheck);
260
279
  const hasUncommittedChanges = statusCheck.stdoutTail && statusCheck.stdoutTail.trim().length > 0;
261
280
  if (hasUncommittedChanges) {
@@ -351,7 +370,7 @@ export async function runGatewayUpdate(opts = {}) {
351
370
  };
352
371
  }
353
372
  const manager = await detectPackageManager(gitRoot);
354
- const preflightRoot = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-update-preflight-"));
373
+ const preflightRoot = await fs.mkdtemp(path.join(os.tmpdir(), "poolbot-update-preflight-"));
355
374
  const worktreeDir = path.join(preflightRoot, "worktree");
356
375
  const worktreeStep = await runStep(step("preflight worktree", ["git", "-C", gitRoot, "worktree", "add", "--detach", worktreeDir, upstreamSha], gitRoot));
357
376
  steps.push(worktreeStep);
@@ -485,7 +504,11 @@ export async function runGatewayUpdate(opts = {}) {
485
504
  steps.push(buildStep);
486
505
  const uiBuildStep = await runStep(step("ui:build", managerScriptArgs(manager, "ui:build"), gitRoot));
487
506
  steps.push(uiBuildStep);
488
- const doctorStep = await runStep(step("clawdbot doctor", managerScriptArgs(manager, "clawdbot", ["doctor", "--non-interactive"]), gitRoot, { CLAWDBOT_UPDATE_IN_PROGRESS: "1" }));
507
+ // Restore dist/control-ui/ to committed state to prevent dirty repo after update
508
+ // (ui:build regenerates assets with new hashes, which would block future updates)
509
+ const restoreUiStep = await runStep(step("restore control-ui", ["git", "-C", gitRoot, "checkout", "--", "dist/control-ui/"], gitRoot));
510
+ steps.push(restoreUiStep);
511
+ const doctorStep = await runStep(step("poolbot doctor", managerScriptArgs(manager, "poolbot", ["doctor", "--non-interactive"]), gitRoot, { CLAWDBOT_UPDATE_IN_PROGRESS: "1" }));
489
512
  steps.push(doctorStep);
490
513
  const failedStep = steps.find((s) => s.exitCode !== 0);
491
514
  const afterShaStep = await runStep(step("git rev-parse HEAD (after)", ["git", "-C", gitRoot, "rev-parse", "HEAD"], gitRoot));
@@ -517,7 +540,8 @@ export async function runGatewayUpdate(opts = {}) {
517
540
  const beforeVersion = await readPackageVersion(pkgRoot);
518
541
  const globalManager = await detectGlobalInstallManagerForRoot(runCommand, pkgRoot, timeoutMs);
519
542
  if (globalManager) {
520
- const spec = `clawdbot@${normalizeTag(opts.tag)}`;
543
+ const packageName = (await readPackageName(pkgRoot)) ?? DEFAULT_PACKAGE_NAME;
544
+ const spec = `${packageName}@${normalizeTag(opts.tag)}`;
521
545
  const updateStep = await runStep({
522
546
  runCommand,
523
547
  name: "global update",
@@ -1,7 +1,7 @@
1
1
  import fs from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { resolveStateDir } from "../config/paths.js";
4
- import { resolveClawdbotPackageRoot } from "./clawdbot-root.js";
4
+ import { resolvePoolBotPackageRoot } from "./poolbot-root.js";
5
5
  import { compareSemverStrings, resolveNpmChannelTag, checkUpdateStatus } from "./update-check.js";
6
6
  import { normalizeUpdateChannel, DEFAULT_PACKAGE_CHANNEL } from "./update-channels.js";
7
7
  import { VERSION } from "../version.js";
@@ -44,7 +44,7 @@ export async function runGatewayUpdateCheck(params) {
44
44
  if (now - lastCheckedAt < UPDATE_CHECK_INTERVAL_MS)
45
45
  return;
46
46
  }
47
- const root = await resolveClawdbotPackageRoot({
47
+ const root = await resolvePoolBotPackageRoot({
48
48
  moduleUrl: import.meta.url,
49
49
  argv1: process.argv[1],
50
50
  cwd: process.cwd(),
@@ -74,7 +74,7 @@ export async function runGatewayUpdateCheck(params) {
74
74
  if (cmp != null && cmp < 0) {
75
75
  const shouldNotify = state.lastNotifiedVersion !== resolved.version || state.lastNotifiedTag !== tag;
76
76
  if (shouldNotify) {
77
- params.log.info(`update available (${tag}): v${resolved.version} (current v${VERSION}). Run: ${formatCliCommand("clawdbot update")}`);
77
+ params.log.info(`update available (${tag}): v${resolved.version} (current v${VERSION}). Run: ${formatCliCommand("poolbot update")}`);
78
78
  nextState.lastNotifiedVersion = resolved.version;
79
79
  nextState.lastNotifiedTag = tag;
80
80
  }
@@ -1,4 +1,4 @@
1
- const warningFilterKey = Symbol.for("clawdbot.warning-filter");
1
+ const warningFilterKey = Symbol.for("poolbot.warning-filter");
2
2
  function shouldIgnoreWarning(warning) {
3
3
  if (warning.code === "DEP0040" && warning.message?.includes("punycode")) {
4
4
  return true;
@@ -2,8 +2,8 @@ import fs from "node:fs";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
4
  import { CONFIG_DIR, ensureDir } from "../utils.js";
5
- export const WIDE_AREA_DISCOVERY_DOMAIN = "clawdbot.internal.";
6
- export const WIDE_AREA_ZONE_FILENAME = "clawdbot.internal.db";
5
+ export const WIDE_AREA_DISCOVERY_DOMAIN = "poolbot.internal.";
6
+ export const WIDE_AREA_ZONE_FILENAME = "poolbot.internal.db";
7
7
  export function getWideAreaZonePath() {
8
8
  return path.join(CONFIG_DIR, "dns", WIDE_AREA_ZONE_FILENAME);
9
9
  }
@@ -45,7 +45,7 @@ function extractSerial(zoneText) {
45
45
  return Number.isFinite(parsed) ? parsed : null;
46
46
  }
47
47
  function extractContentHash(zoneText) {
48
- const match = zoneText.match(/^\s*;\s*clawdbot-content-hash:\s*(\S+)\s*$/m);
48
+ const match = zoneText.match(/^\s*;\s*poolbot-content-hash:\s*(\S+)\s*$/m);
49
49
  return match?.[1] ?? null;
50
50
  }
51
51
  function computeContentHash(body) {
@@ -58,9 +58,9 @@ function computeContentHash(body) {
58
58
  return (h >>> 0).toString(16).padStart(8, "0");
59
59
  }
60
60
  function renderZone(opts) {
61
- const hostname = os.hostname().split(".")[0] ?? "clawdbot";
62
- const hostLabel = dnsLabel(opts.hostLabel ?? hostname, "clawdbot");
63
- const instanceLabel = dnsLabel(opts.instanceLabel ?? `${hostname}-gateway`, "clawdbot-gw");
61
+ const hostname = os.hostname().split(".")[0] ?? "poolbot";
62
+ const hostLabel = dnsLabel(opts.hostLabel ?? hostname, "poolbot");
63
+ const instanceLabel = dnsLabel(opts.instanceLabel ?? `${hostname}-gateway`, "poolbot-gw");
64
64
  const txt = [
65
65
  `displayName=${opts.displayName.trim() || hostname}`,
66
66
  `role=gateway`,
@@ -93,15 +93,15 @@ function renderZone(opts) {
93
93
  if (opts.tailnetIPv6) {
94
94
  records.push(`${hostLabel} IN AAAA ${opts.tailnetIPv6}`);
95
95
  }
96
- records.push(`_clawdbot-gw._tcp IN PTR ${instanceLabel}._clawdbot-gw._tcp`);
97
- records.push(`${instanceLabel}._clawdbot-gw._tcp IN SRV 0 0 ${opts.gatewayPort} ${hostLabel}`);
98
- records.push(`${instanceLabel}._clawdbot-gw._tcp IN TXT ${txt.map(txtQuote).join(" ")}`);
96
+ records.push(`_poolbot-gw._tcp IN PTR ${instanceLabel}._poolbot-gw._tcp`);
97
+ records.push(`${instanceLabel}._poolbot-gw._tcp IN SRV 0 0 ${opts.gatewayPort} ${hostLabel}`);
98
+ records.push(`${instanceLabel}._poolbot-gw._tcp IN TXT ${txt.map(txtQuote).join(" ")}`);
99
99
  const contentBody = `${records.join("\n")}\n`;
100
100
  const hashBody = `${records
101
101
  .map((line) => line === soaLine ? `@ IN SOA ns1 hostmaster SERIAL 7200 3600 1209600 60` : line)
102
102
  .join("\n")}\n`;
103
103
  const contentHash = computeContentHash(hashBody);
104
- return `; clawdbot-content-hash: ${contentHash}\n${contentBody}`;
104
+ return `; poolbot-content-hash: ${contentHash}\n${contentBody}`;
105
105
  }
106
106
  export function renderWideAreaGatewayZoneText(opts) {
107
107
  return renderZone(opts);
@@ -1,6 +1,6 @@
1
- import crypto from "node:crypto";
2
1
  import { danger, logVerbose } from "../globals.js";
3
2
  import { createLineBot } from "./bot.js";
3
+ import { validateLineSignature } from "./signature.js";
4
4
  import { normalizePluginHttpPath } from "../plugins/http-path.js";
5
5
  import { registerPluginHttpRoute } from "../plugins/http-registry.js";
6
6
  import { replyMessageLine, showLoadingAnimation, getUserDisplayName, createQuickReplyItems, createTextMessageWithQuickReplies, pushTextMessageWithQuickReplies, pushMessageLine, pushMessagesLine, createFlexMessage, createImageMessage, createLocationMessage, } from "./send.js";
@@ -26,10 +26,6 @@ function recordChannelRuntimeState(params) {
26
26
  export function getLineRuntimeState(accountId) {
27
27
  return runtimeState.get(`line:${accountId}`);
28
28
  }
29
- function validateLineSignature(body, signature, channelSecret) {
30
- const hash = crypto.createHmac("SHA256", channelSecret).update(body).digest("base64");
31
- return hash === signature;
32
- }
33
29
  async function readRequestBody(req) {
34
30
  return new Promise((resolve, reject) => {
35
31
  const chunks = [];