@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
@@ -3,6 +3,7 @@ import path from "node:path";
3
3
  import { resolveSkillKey } from "./frontmatter.js";
4
4
  const DEFAULT_CONFIG_VALUES = {
5
5
  "browser.enabled": true,
6
+ "browser.evaluateEnabled": true,
6
7
  };
7
8
  function isTruthy(value) {
8
9
  if (value === undefined || value === null)
@@ -53,7 +54,7 @@ function normalizeAllowlist(input) {
53
54
  return normalized.length > 0 ? normalized : undefined;
54
55
  }
55
56
  function isBundledSkill(entry) {
56
- return entry.skill.source === "clawdbot-bundled";
57
+ return entry.skill.source === "poolbot-bundled";
57
58
  }
58
59
  export function resolveBundledAllowlist(config) {
59
60
  return normalizeAllowlist(config?.skills?.allowBundled);
@@ -86,7 +87,7 @@ export function shouldIncludeSkill(params) {
86
87
  const skillKey = resolveSkillKey(entry.skill, entry);
87
88
  const skillConfig = resolveSkillConfig(config, skillKey);
88
89
  const allowBundled = normalizeAllowlist(config?.skills?.allowBundled);
89
- const osList = entry.clawdbot?.os ?? [];
90
+ const osList = entry.metadata?.os ?? [];
90
91
  const remotePlatforms = eligibility?.remote?.platforms ?? [];
91
92
  if (skillConfig?.enabled === false)
92
93
  return false;
@@ -97,10 +98,10 @@ export function shouldIncludeSkill(params) {
97
98
  !remotePlatforms.some((platform) => osList.includes(platform))) {
98
99
  return false;
99
100
  }
100
- if (entry.clawdbot?.always === true) {
101
+ if (entry.metadata?.always === true) {
101
102
  return true;
102
103
  }
103
- const requiredBins = entry.clawdbot?.requires?.bins ?? [];
104
+ const requiredBins = entry.metadata?.requires?.bins ?? [];
104
105
  if (requiredBins.length > 0) {
105
106
  for (const bin of requiredBins) {
106
107
  if (hasBinary(bin))
@@ -110,27 +111,27 @@ export function shouldIncludeSkill(params) {
110
111
  return false;
111
112
  }
112
113
  }
113
- const requiredAnyBins = entry.clawdbot?.requires?.anyBins ?? [];
114
+ const requiredAnyBins = entry.metadata?.requires?.anyBins ?? [];
114
115
  if (requiredAnyBins.length > 0) {
115
116
  const anyFound = requiredAnyBins.some((bin) => hasBinary(bin)) ||
116
117
  eligibility?.remote?.hasAnyBin?.(requiredAnyBins);
117
118
  if (!anyFound)
118
119
  return false;
119
120
  }
120
- const requiredEnv = entry.clawdbot?.requires?.env ?? [];
121
+ const requiredEnv = entry.metadata?.requires?.env ?? [];
121
122
  if (requiredEnv.length > 0) {
122
123
  for (const envName of requiredEnv) {
123
124
  if (process.env[envName])
124
125
  continue;
125
126
  if (skillConfig?.env?.[envName])
126
127
  continue;
127
- if (skillConfig?.apiKey && entry.clawdbot?.primaryEnv === envName) {
128
+ if (skillConfig?.apiKey && entry.metadata?.primaryEnv === envName) {
128
129
  continue;
129
130
  }
130
131
  return false;
131
132
  }
132
133
  }
133
- const requiredConfig = entry.clawdbot?.requires?.config ?? [];
134
+ const requiredConfig = entry.metadata?.requires?.config ?? [];
134
135
  if (requiredConfig.length > 0) {
135
136
  for (const configPath of requiredConfig) {
136
137
  if (!isConfigPathTruthy(config, configPath))
@@ -16,7 +16,7 @@ export function applySkillEnvOverrides(params) {
16
16
  process.env[envKey] = envValue;
17
17
  }
18
18
  }
19
- const primaryEnv = entry.clawdbot?.primaryEnv;
19
+ const primaryEnv = entry.metadata?.primaryEnv;
20
20
  if (primaryEnv && skillConfig.apiKey && !process.env[primaryEnv]) {
21
21
  updates.push({ key: primaryEnv, prev: process.env[primaryEnv] });
22
22
  process.env[primaryEnv] = skillConfig.apiKey;
@@ -1,4 +1,5 @@
1
1
  import JSON5 from "json5";
2
+ import { LEGACY_MANIFEST_KEY } from "../../compat/legacy-names.js";
2
3
  import { parseFrontmatterBlock } from "../../markdown/frontmatter.js";
3
4
  import { parseBooleanValue } from "../../utils/boolean.js";
4
5
  export function parseFrontmatter(content) {
@@ -66,7 +67,7 @@ function parseFrontmatterBool(value, fallback) {
66
67
  const parsed = parseBooleanValue(value);
67
68
  return parsed === undefined ? fallback : parsed;
68
69
  }
69
- export function resolveClawdbotMetadata(frontmatter) {
70
+ export function resolveMoltbotMetadata(frontmatter) {
70
71
  const raw = getFrontmatterValue(frontmatter, "metadata");
71
72
  if (!raw)
72
73
  return undefined;
@@ -74,24 +75,24 @@ export function resolveClawdbotMetadata(frontmatter) {
74
75
  const parsed = JSON5.parse(raw);
75
76
  if (!parsed || typeof parsed !== "object")
76
77
  return undefined;
77
- const clawdbot = parsed.clawdbot;
78
- if (!clawdbot || typeof clawdbot !== "object")
78
+ const metadataRaw = parsed.poolbot ?? parsed[LEGACY_MANIFEST_KEY];
79
+ if (!metadataRaw || typeof metadataRaw !== "object")
79
80
  return undefined;
80
- const clawdbotObj = clawdbot;
81
- const requiresRaw = typeof clawdbotObj.requires === "object" && clawdbotObj.requires !== null
82
- ? clawdbotObj.requires
81
+ const metadataObj = metadataRaw;
82
+ const requiresRaw = typeof metadataObj.requires === "object" && metadataObj.requires !== null
83
+ ? metadataObj.requires
83
84
  : undefined;
84
- const installRaw = Array.isArray(clawdbotObj.install) ? clawdbotObj.install : [];
85
+ const installRaw = Array.isArray(metadataObj.install) ? metadataObj.install : [];
85
86
  const install = installRaw
86
87
  .map((entry) => parseInstallSpec(entry))
87
88
  .filter((entry) => Boolean(entry));
88
- const osRaw = normalizeStringList(clawdbotObj.os);
89
+ const osRaw = normalizeStringList(metadataObj.os);
89
90
  return {
90
- always: typeof clawdbotObj.always === "boolean" ? clawdbotObj.always : undefined,
91
- emoji: typeof clawdbotObj.emoji === "string" ? clawdbotObj.emoji : undefined,
92
- homepage: typeof clawdbotObj.homepage === "string" ? clawdbotObj.homepage : undefined,
93
- skillKey: typeof clawdbotObj.skillKey === "string" ? clawdbotObj.skillKey : undefined,
94
- primaryEnv: typeof clawdbotObj.primaryEnv === "string" ? clawdbotObj.primaryEnv : undefined,
91
+ always: typeof metadataObj.always === "boolean" ? metadataObj.always : undefined,
92
+ emoji: typeof metadataObj.emoji === "string" ? metadataObj.emoji : undefined,
93
+ homepage: typeof metadataObj.homepage === "string" ? metadataObj.homepage : undefined,
94
+ skillKey: typeof metadataObj.skillKey === "string" ? metadataObj.skillKey : undefined,
95
+ primaryEnv: typeof metadataObj.primaryEnv === "string" ? metadataObj.primaryEnv : undefined,
95
96
  os: osRaw.length > 0 ? osRaw : undefined,
96
97
  requires: requiresRaw
97
98
  ? {
@@ -115,5 +116,5 @@ export function resolveSkillInvocationPolicy(frontmatter) {
115
116
  };
116
117
  }
117
118
  export function resolveSkillKey(skill, entry) {
118
- return entry?.clawdbot?.skillKey ?? skill.name;
119
+ return entry?.metadata?.skillKey ?? skill.name;
119
120
  }
@@ -5,7 +5,7 @@ import { createSubsystemLogger } from "../../logging/subsystem.js";
5
5
  import { CONFIG_DIR, resolveUserPath } from "../../utils.js";
6
6
  import { resolveBundledSkillsDir } from "./bundled-dir.js";
7
7
  import { shouldIncludeSkill } from "./config.js";
8
- import { parseFrontmatter, resolveClawdbotMetadata, resolveSkillInvocationPolicy, } from "./frontmatter.js";
8
+ import { parseFrontmatter, resolveMoltbotMetadata, resolveSkillInvocationPolicy, } from "./frontmatter.js";
9
9
  import { resolvePluginSkillDirs } from "./plugin-skills.js";
10
10
  import { serializeByKey } from "./serialize.js";
11
11
  const fsp = fs.promises;
@@ -89,23 +89,23 @@ function loadSkillEntries(workspaceDir, opts) {
89
89
  const bundledSkills = bundledSkillsDir
90
90
  ? loadSkills({
91
91
  dir: bundledSkillsDir,
92
- source: "clawdbot-bundled",
92
+ source: "poolbot-bundled",
93
93
  })
94
94
  : [];
95
95
  const extraSkills = mergedExtraDirs.flatMap((dir) => {
96
96
  const resolved = resolveUserPath(dir);
97
97
  return loadSkills({
98
98
  dir: resolved,
99
- source: "clawdbot-extra",
99
+ source: "poolbot-extra",
100
100
  });
101
101
  });
102
102
  const managedSkills = loadSkills({
103
103
  dir: managedSkillsDir,
104
- source: "clawdbot-managed",
104
+ source: "poolbot-managed",
105
105
  });
106
106
  const workspaceSkills = loadSkills({
107
107
  dir: workspaceSkillsDir,
108
- source: "clawdbot-workspace",
108
+ source: "poolbot-workspace",
109
109
  });
110
110
  const merged = new Map();
111
111
  // Precedence: extra < bundled < managed < workspace
@@ -129,7 +129,7 @@ function loadSkillEntries(workspaceDir, opts) {
129
129
  return {
130
130
  skill,
131
131
  frontmatter,
132
- clawdbot: resolveClawdbotMetadata(frontmatter),
132
+ metadata: resolveMoltbotMetadata(frontmatter),
133
133
  invocation: resolveSkillInvocationPolicy(frontmatter),
134
134
  };
135
135
  });
@@ -146,7 +146,7 @@ export function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
146
146
  prompt,
147
147
  skills: eligible.map((entry) => ({
148
148
  name: entry.skill.name,
149
- primaryEnv: entry.clawdbot?.primaryEnv,
149
+ primaryEnv: entry.metadata?.primaryEnv,
150
150
  })),
151
151
  resolvedSkills,
152
152
  version: opts?.snapshotVersion,
@@ -40,7 +40,7 @@ function resolveInstallId(spec, index) {
40
40
  return (spec.id ?? `${spec.kind}-${index}`).trim();
41
41
  }
42
42
  function findInstallSpec(entry, installId) {
43
- const specs = entry.clawdbot?.install ?? [];
43
+ const specs = entry.metadata?.install ?? [];
44
44
  for (const [index, spec] of specs.entries()) {
45
45
  if (resolveInstallId(spec, index) === installId)
46
46
  return spec;
@@ -2,7 +2,7 @@ import path from "node:path";
2
2
  import { CONFIG_DIR } from "../utils.js";
3
3
  import { hasBinary, isBundledSkillAllowed, isConfigPathTruthy, loadWorkspaceSkillEntries, resolveBundledAllowlist, resolveConfigPath, resolveSkillConfig, resolveSkillsInstallPreferences, } from "./skills.js";
4
4
  function resolveSkillKey(entry) {
5
- return entry.clawdbot?.skillKey ?? entry.skill.name;
5
+ return entry.metadata?.skillKey ?? entry.skill.name;
6
6
  }
7
7
  function selectPreferredInstallSpec(install, prefs) {
8
8
  if (install.length === 0)
@@ -26,7 +26,7 @@ function selectPreferredInstallSpec(install, prefs) {
26
26
  return indexed[0];
27
27
  }
28
28
  function normalizeInstallOptions(entry, prefs) {
29
- const install = entry.clawdbot?.install ?? [];
29
+ const install = entry.metadata?.install ?? [];
30
30
  if (install.length === 0)
31
31
  return [];
32
32
  const platform = process.platform;
@@ -82,18 +82,18 @@ function buildSkillStatus(entry, config, prefs, eligibility) {
82
82
  const disabled = skillConfig?.enabled === false;
83
83
  const allowBundled = resolveBundledAllowlist(config);
84
84
  const blockedByAllowlist = !isBundledSkillAllowed(entry, allowBundled);
85
- const always = entry.clawdbot?.always === true;
86
- const emoji = entry.clawdbot?.emoji ?? entry.frontmatter.emoji;
87
- const homepageRaw = entry.clawdbot?.homepage ??
85
+ const always = entry.metadata?.always === true;
86
+ const emoji = entry.metadata?.emoji ?? entry.frontmatter.emoji;
87
+ const homepageRaw = entry.metadata?.homepage ??
88
88
  entry.frontmatter.homepage ??
89
89
  entry.frontmatter.website ??
90
90
  entry.frontmatter.url;
91
91
  const homepage = homepageRaw?.trim() ? homepageRaw.trim() : undefined;
92
- const requiredBins = entry.clawdbot?.requires?.bins ?? [];
93
- const requiredAnyBins = entry.clawdbot?.requires?.anyBins ?? [];
94
- const requiredEnv = entry.clawdbot?.requires?.env ?? [];
95
- const requiredConfig = entry.clawdbot?.requires?.config ?? [];
96
- const requiredOs = entry.clawdbot?.os ?? [];
92
+ const requiredBins = entry.metadata?.requires?.bins ?? [];
93
+ const requiredAnyBins = entry.metadata?.requires?.anyBins ?? [];
94
+ const requiredEnv = entry.metadata?.requires?.env ?? [];
95
+ const requiredConfig = entry.metadata?.requires?.config ?? [];
96
+ const requiredOs = entry.metadata?.os ?? [];
97
97
  const missingBins = requiredBins.filter((bin) => {
98
98
  if (hasBinary(bin))
99
99
  return false;
@@ -117,7 +117,7 @@ function buildSkillStatus(entry, config, prefs, eligibility) {
117
117
  continue;
118
118
  if (skillConfig?.env?.[envName])
119
119
  continue;
120
- if (skillConfig?.apiKey && entry.clawdbot?.primaryEnv === envName) {
120
+ if (skillConfig?.apiKey && entry.metadata?.primaryEnv === envName) {
121
121
  continue;
122
122
  }
123
123
  missingEnv.push(envName);
@@ -152,7 +152,7 @@ function buildSkillStatus(entry, config, prefs, eligibility) {
152
152
  filePath: entry.skill.filePath,
153
153
  baseDir: entry.skill.baseDir,
154
154
  skillKey,
155
- primaryEnv: entry.clawdbot?.primaryEnv,
155
+ primaryEnv: entry.metadata?.primaryEnv,
156
156
  emoji,
157
157
  homepage,
158
158
  always,
@@ -1,10 +1,10 @@
1
1
  import path from "node:path";
2
- import { STATE_DIR_CLAWDBOT } from "../config/paths.js";
2
+ import { STATE_DIR } from "../config/paths.js";
3
3
  import { loadJsonFile, saveJsonFile } from "../infra/json-file.js";
4
4
  import { normalizeDeliveryContext } from "../utils/delivery-context.js";
5
5
  const REGISTRY_VERSION = 2;
6
6
  export function resolveSubagentRegistryPath() {
7
- return path.join(STATE_DIR_CLAWDBOT, "subagents", "runs.json");
7
+ return path.join(STATE_DIR, "subagents", "runs.json");
8
8
  }
9
9
  export function loadSubagentRegistryFromDisk() {
10
10
  const pathname = resolveSubagentRegistryPath();
@@ -59,7 +59,7 @@ function buildMessagingSection(params) {
59
59
  "## Messaging",
60
60
  "- Reply in current session → automatically routes to the source channel (Signal, Telegram, etc.)",
61
61
  "- Cross-session messaging → use sessions_send(sessionKey, message)",
62
- "- Never use exec/curl for provider messaging; Clawdbot handles all routing internally.",
62
+ "- Never use exec/curl for provider messaging; Moltbot handles all routing internally.",
63
63
  params.availableTools.has("message")
64
64
  ? [
65
65
  "",
@@ -95,13 +95,13 @@ function buildDocsSection(params) {
95
95
  return [];
96
96
  return [
97
97
  "## Documentation",
98
- `Clawdbot docs: ${docsPath}`,
99
- "Mirror: https://docs.clawd.bot",
100
- "Source: https://github.com/clawdbot/clawdbot",
101
- "Community: https://discord.com/invite/clawd",
98
+ `Moltbot docs: ${docsPath}`,
99
+ "Mirror: https://docs.molt.bot",
100
+ "Source: https://github.com/poolbot/poolbot",
101
+ "Community: https://discord.com/discord.gg/poolbot",
102
102
  "Find new skills: https://clawdhub.com",
103
- "For Clawdbot behavior, commands, config, or architecture: consult local docs first.",
104
- "When diagnosing issues, run `clawdbot status` yourself when possible; only ask the user if you lack access (e.g., sandboxed).",
103
+ "For Moltbot behavior, commands, config, or architecture: consult local docs first.",
104
+ "When diagnosing issues, run `poolbot status` yourself when possible; only ask the user if you lack access (e.g., sandboxed).",
105
105
  "",
106
106
  ];
107
107
  }
@@ -124,7 +124,7 @@ export function buildAgentSystemPrompt(params) {
124
124
  nodes: "List/describe/notify/camera/screen on paired nodes",
125
125
  cron: "Manage cron jobs and wake events (use for reminders; when scheduling a reminder, write the systemEvent text as something that will read like a reminder when it fires, and mention that it is a reminder depending on the time gap between setting and firing; include recent context in reminder text if appropriate)",
126
126
  message: "Send messages and channel actions",
127
- gateway: "Restart, apply config, or run updates on the running Clawdbot process",
127
+ gateway: "Restart, apply config, or run updates on the running Moltbot process",
128
128
  agents_list: "List agent ids allowed for sessions_spawn",
129
129
  sessions_list: "List other sessions (incl. sub-agents) with filters/last",
130
130
  sessions_history: "Fetch history for another session/sub-agent",
@@ -242,10 +242,10 @@ export function buildAgentSystemPrompt(params) {
242
242
  const workspaceNotes = (params.workspaceNotes ?? []).map((note) => note.trim()).filter(Boolean);
243
243
  // For "none" mode, return just the basic identity line
244
244
  if (promptMode === "none") {
245
- return "You are a personal assistant running inside Clawdbot.";
245
+ return "You are a personal assistant running inside Moltbot.";
246
246
  }
247
247
  const lines = [
248
- "You are a personal assistant running inside Clawdbot.",
248
+ "You are a personal assistant running inside Moltbot.",
249
249
  "",
250
250
  "## Tooling",
251
251
  "Tool availability (filtered by policy):",
@@ -277,25 +277,25 @@ export function buildAgentSystemPrompt(params) {
277
277
  "Keep narration brief and value-dense; avoid repeating obvious steps.",
278
278
  "Use plain human language for narration unless in a technical context.",
279
279
  "",
280
- "## Clawdbot CLI Quick Reference",
281
- "Clawdbot is controlled via subcommands. Do not invent commands.",
280
+ "## Moltbot CLI Quick Reference",
281
+ "Moltbot is controlled via subcommands. Do not invent commands.",
282
282
  "To manage the Gateway daemon service (start/stop/restart):",
283
- "- clawdbot gateway status",
284
- "- clawdbot gateway start",
285
- "- clawdbot gateway stop",
286
- "- clawdbot gateway restart",
287
- "If unsure, ask the user to run `clawdbot help` (or `clawdbot gateway --help`) and paste the output.",
283
+ "- poolbot gateway status",
284
+ "- poolbot gateway start",
285
+ "- poolbot gateway stop",
286
+ "- poolbot gateway restart",
287
+ "If unsure, ask the user to run `poolbot help` (or `poolbot gateway --help`) and paste the output.",
288
288
  "",
289
289
  ...skillsSection,
290
290
  ...memorySection,
291
291
  // Skip self-update for subagent/none modes
292
- hasGateway && !isMinimal ? "## Clawdbot Self-Update" : "",
292
+ hasGateway && !isMinimal ? "## Moltbot Self-Update" : "",
293
293
  hasGateway && !isMinimal
294
294
  ? [
295
295
  "Get Updates (self-update) is ONLY allowed when the user explicitly asks for it.",
296
296
  "Do not run config.apply or update.run unless the user explicitly requests an update or config change; if it's not explicit, ask first.",
297
297
  "Actions: config.get, config.schema, config.apply (validate + write full config, then restart), update.run (update deps or git, then restart).",
298
- "After restart, Clawdbot pings the last active session automatically.",
298
+ "After restart, Moltbot pings the last active session automatically.",
299
299
  ].join("\n")
300
300
  : "",
301
301
  hasGateway && !isMinimal ? "" : "",
@@ -331,9 +331,7 @@ export function buildAgentSystemPrompt(params) {
331
331
  ? ` (mounted at ${params.sandboxInfo.agentWorkspaceMount})`
332
332
  : ""}`
333
333
  : "",
334
- params.sandboxInfo.browserControlUrl
335
- ? `Sandbox browser control URL: ${params.sandboxInfo.browserControlUrl}`
336
- : "",
334
+ params.sandboxInfo.browserBridgeUrl ? "Sandbox browser: enabled." : "",
337
335
  params.sandboxInfo.browserNoVncUrl
338
336
  ? `Sandbox browser observer (noVNC): ${params.sandboxInfo.browserNoVncUrl}`
339
337
  : "",
@@ -342,15 +340,6 @@ export function buildAgentSystemPrompt(params) {
342
340
  : params.sandboxInfo.hostBrowserAllowed === false
343
341
  ? "Host browser control: blocked."
344
342
  : "",
345
- params.sandboxInfo.allowedControlUrls?.length
346
- ? `Browser control URL allowlist: ${params.sandboxInfo.allowedControlUrls.join(", ")}`
347
- : "",
348
- params.sandboxInfo.allowedControlHosts?.length
349
- ? `Browser control host allowlist: ${params.sandboxInfo.allowedControlHosts.join(", ")}`
350
- : "",
351
- params.sandboxInfo.allowedControlPorts?.length
352
- ? `Browser control port allowlist: ${params.sandboxInfo.allowedControlPorts.join(", ")}`
353
- : "",
354
343
  params.sandboxInfo.elevated?.allowed
355
344
  ? "Elevated exec is available for this session."
356
345
  : "",
@@ -373,7 +362,7 @@ export function buildAgentSystemPrompt(params) {
373
362
  userTimezone,
374
363
  }),
375
364
  "## Workspace Files (injected)",
376
- "These user-editable files are loaded by Clawdbot and included below in Project Context.",
365
+ "These user-editable files are loaded by Moltbot and included below in Project Context.",
377
366
  "",
378
367
  ...buildReplyTagsSection(isMinimal),
379
368
  ...buildMessagingSection({
@@ -438,7 +427,7 @@ export function buildAgentSystemPrompt(params) {
438
427
  }
439
428
  // Skip heartbeats for subagent/none modes
440
429
  if (!isMinimal) {
441
- lines.push("## Heartbeats", heartbeatPromptLine, "If you receive a heartbeat poll (a user message matching the heartbeat prompt above), and there is nothing that needs attention, reply exactly:", "HEARTBEAT_OK", 'Clawdbot treats a leading/trailing "HEARTBEAT_OK" as a heartbeat ack (and may discard it).', 'If something needs attention, do NOT include "HEARTBEAT_OK"; reply with the alert text instead.', "");
430
+ lines.push("## Heartbeats", heartbeatPromptLine, "If you receive a heartbeat poll (a user message matching the heartbeat prompt above), and there is nothing that needs attention, reply exactly:", "HEARTBEAT_OK", 'Moltbot treats a leading/trailing "HEARTBEAT_OK" as a heartbeat ack (and may discard it).', 'If something needs attention, do NOT include "HEARTBEAT_OK"; reply with the alert text instead.', "");
442
431
  }
443
432
  lines.push("## Runtime", buildRuntimeLine(runtimeInfo, runtimeChannel, runtimeCapabilities, params.defaultThinkLevel), `Reasoning: ${reasoningLevel} (hidden unless on/stream). Toggle /reasoning; /status shows Reasoning when enabled.`);
444
433
  return lines.filter(Boolean).join("\n");
@@ -1,6 +1,6 @@
1
1
  import { createSubsystemLogger } from "../logging/subsystem.js";
2
2
  import { getImageMetadata, resizeToJpeg } from "../media/image-ops.js";
3
- // Anthropic Messages API limitations (observed in Clawdbot sessions):
3
+ // Anthropic Messages API limitations (observed in Moltbot sessions):
4
4
  // - Images over ~2000px per side can fail in multi-image requests.
5
5
  // - Images over 5MB are rejected by the API.
6
6
  //
@@ -26,8 +26,8 @@ export const TOOL_GROUPS = {
26
26
  "group:messaging": ["message"],
27
27
  // Nodes + device tools
28
28
  "group:nodes": ["nodes"],
29
- // All Clawdbot native tools (excludes provider plugins).
30
- "group:clawdbot": [
29
+ // All Moltbot native tools (excludes provider plugins).
30
+ "group:poolbot": [
31
31
  "browser",
32
32
  "canvas",
33
33
  "nodes",
@@ -172,6 +172,12 @@ export function stripPluginOnlyAllowlist(policy, groups, coreTools) {
172
172
  unknownAllowlist.push(entry);
173
173
  }
174
174
  const strippedAllowlist = !hasCoreEntry;
175
+ // When an allowlist contains only plugin tools, we strip it to avoid accidentally
176
+ // disabling core tools. Users who want additive behavior should prefer `tools.alsoAllow`.
177
+ if (strippedAllowlist) {
178
+ // Note: logging happens in the caller (pi-tools/tools-invoke) after this function returns.
179
+ // We keep this note here for future maintainers.
180
+ }
175
181
  return {
176
182
  policy: strippedAllowlist ? { ...policy, allow: undefined } : policy,
177
183
  unknownAllowlist: Array.from(new Set(unknownAllowlist)),
@@ -25,11 +25,9 @@ async function resolveBrowserNodeTarget(params) {
25
25
  }
26
26
  return null;
27
27
  }
28
- if (params.defaultControlUrl?.trim() && params.target !== "node" && !params.requestedNode) {
28
+ if (params.sandboxBridgeUrl?.trim() && params.target !== "node" && !params.requestedNode) {
29
29
  return null;
30
30
  }
31
- if (params.controlUrl?.trim())
32
- return null;
33
31
  if (params.target && params.target !== "node")
34
32
  return null;
35
33
  if (mode === "manual" && params.target !== "node" && !params.requestedNode) {
@@ -121,125 +119,67 @@ function applyProxyPaths(result, mapping) {
121
119
  }
122
120
  function resolveBrowserBaseUrl(params) {
123
121
  const cfg = loadConfig();
124
- const resolved = resolveBrowserConfig(cfg.browser);
125
- const normalizedControlUrl = params.controlUrl?.trim() ?? "";
126
- const normalizedDefault = params.defaultControlUrl?.trim() ?? "";
127
- const target = params.target ?? (normalizedControlUrl ? "custom" : normalizedDefault ? "sandbox" : "host");
128
- const assertAllowedControlUrl = (url) => {
129
- const allowedUrls = params.allowedControlUrls?.map((entry) => entry.trim().replace(/\/$/, ""));
130
- const allowedHosts = params.allowedControlHosts?.map((entry) => entry.trim().toLowerCase());
131
- const allowedPorts = params.allowedControlPorts;
132
- if (!allowedUrls?.length && !allowedHosts?.length && !allowedPorts?.length) {
133
- return;
134
- }
135
- let parsed;
136
- try {
137
- parsed = new URL(url);
138
- }
139
- catch {
140
- throw new Error(`Invalid browser controlUrl: ${url}`);
141
- }
142
- const normalizedUrl = parsed.toString().replace(/\/$/, "");
143
- if (allowedUrls?.length && !allowedUrls.includes(normalizedUrl)) {
144
- throw new Error("Browser controlUrl is not in the allowed URL list.");
145
- }
146
- if (allowedHosts?.length && !allowedHosts.includes(parsed.hostname)) {
147
- throw new Error("Browser controlUrl hostname is not in the allowed host list.");
148
- }
149
- if (allowedPorts?.length) {
150
- const port = parsed.port?.trim() !== "" ? Number(parsed.port) : parsed.protocol === "https:" ? 443 : 80;
151
- if (!Number.isFinite(port) || !allowedPorts.includes(port)) {
152
- throw new Error("Browser controlUrl port is not in the allowed port list.");
153
- }
154
- }
155
- };
156
- if (target !== "custom" && params.target && normalizedControlUrl) {
157
- throw new Error('controlUrl is only supported with target="custom".');
158
- }
159
- if (target === "custom") {
160
- if (!normalizedControlUrl) {
161
- throw new Error("Custom browser target requires controlUrl.");
162
- }
163
- const normalized = normalizedControlUrl.replace(/\/$/, "");
164
- assertAllowedControlUrl(normalized);
165
- return normalized;
166
- }
122
+ const resolved = resolveBrowserConfig(cfg.browser, cfg);
123
+ const normalizedSandbox = params.sandboxBridgeUrl?.trim() ?? "";
124
+ const target = params.target ?? (normalizedSandbox ? "sandbox" : "host");
167
125
  if (target === "sandbox") {
168
- if (!normalizedDefault) {
126
+ if (!normalizedSandbox) {
169
127
  throw new Error('Sandbox browser is unavailable. Enable agents.defaults.sandbox.browser.enabled or use target="host" if allowed.');
170
128
  }
171
- return normalizedDefault.replace(/\/$/, "");
129
+ return normalizedSandbox.replace(/\/$/, "");
172
130
  }
173
131
  if (params.allowHostControl === false) {
174
132
  throw new Error("Host browser control is disabled by sandbox policy.");
175
133
  }
176
134
  if (!resolved.enabled) {
177
- throw new Error("Browser control is disabled. Set browser.enabled=true in ~/.clawdbot/clawdbot.json.");
135
+ throw new Error("Browser control is disabled. Set browser.enabled=true in ~/.poolbot/poolbot.json.");
178
136
  }
179
- const normalized = resolved.controlUrl.replace(/\/$/, "");
180
- assertAllowedControlUrl(normalized);
181
- return normalized;
137
+ return undefined;
182
138
  }
183
139
  export function createBrowserTool(opts) {
184
- const targetDefault = opts?.defaultControlUrl ? "sandbox" : "host";
140
+ const targetDefault = opts?.sandboxBridgeUrl ? "sandbox" : "host";
185
141
  const hostHint = opts?.allowHostControl === false ? "Host target blocked by policy." : "Host target allowed.";
186
- const allowlistHint = opts?.allowedControlUrls?.length ||
187
- opts?.allowedControlHosts?.length ||
188
- opts?.allowedControlPorts?.length
189
- ? "Custom targets are restricted by sandbox allowlists."
190
- : "Custom targets are unrestricted.";
191
142
  return {
192
143
  label: "Browser",
193
144
  name: "browser",
194
145
  description: [
195
- "Control the browser via Clawdbot's browser control server (status/start/stop/profiles/tabs/open/snapshot/screenshot/actions).",
146
+ "Control the browser via Moltbot's browser control server (status/start/stop/profiles/tabs/open/snapshot/screenshot/actions).",
196
147
  'Profiles: use profile="chrome" for Chrome extension relay takeover (your existing Chrome tabs). Use profile="clawd" for the isolated clawd-managed browser.',
197
148
  'If the user mentions the Chrome extension / Browser Relay / toolbar button / “attach tab”, ALWAYS use profile="chrome" (do not ask which profile).',
198
149
  'When a node-hosted browser proxy is available, the tool may auto-route to it. Pin a node with node=<id|name> or target="node".',
199
- "Chrome extension relay needs an attached tab: user must click the Clawdbot Browser Relay toolbar icon on the tab (badge ON). If no tab is connected, ask them to attach it.",
150
+ "Chrome extension relay needs an attached tab: user must click the Moltbot Browser Relay toolbar icon on the tab (badge ON). If no tab is connected, ask them to attach it.",
200
151
  "When using refs from snapshot (e.g. e12), keep the same tab: prefer passing targetId from the snapshot response into subsequent actions (act/click/type/etc).",
201
152
  'For stable, self-resolving refs across calls, use snapshot with refs="aria" (Playwright aria-ref ids). Default refs="role" are role+name-based.',
202
153
  "Use snapshot+act for UI automation. Avoid act:wait by default; use only in exceptional cases when no reliable UI state exists.",
203
- `target selects browser location (sandbox|host|custom|node). Default: ${targetDefault}.`,
204
- "controlUrl implies target=custom (remote control server).",
154
+ `target selects browser location (sandbox|host|node). Default: ${targetDefault}.`,
205
155
  hostHint,
206
- allowlistHint,
207
156
  ].join(" "),
208
157
  parameters: BrowserToolSchema,
209
158
  execute: async (_toolCallId, args) => {
210
159
  const params = args;
211
160
  const action = readStringParam(params, "action", { required: true });
212
- const controlUrl = readStringParam(params, "controlUrl");
213
161
  const profile = readStringParam(params, "profile");
214
162
  const requestedNode = readStringParam(params, "node");
215
163
  let target = readStringParam(params, "target");
216
- if (controlUrl?.trim() && (target === "node" || requestedNode)) {
217
- throw new Error('controlUrl is not supported with target="node".');
218
- }
219
- if (target === "custom" && requestedNode) {
220
- throw new Error('node is not supported with target="custom".');
164
+ if (requestedNode && target && target !== "node") {
165
+ throw new Error('node is only supported with target="node".');
221
166
  }
222
- if (!target && !controlUrl?.trim() && !requestedNode && profile === "chrome") {
167
+ if (!target && !requestedNode && profile === "chrome") {
223
168
  // Chrome extension relay takeover is a host Chrome feature; prefer host unless explicitly targeting a node.
224
169
  target = "host";
225
170
  }
226
171
  const nodeTarget = await resolveBrowserNodeTarget({
227
172
  requestedNode: requestedNode ?? undefined,
228
173
  target,
229
- controlUrl,
230
- defaultControlUrl: opts?.defaultControlUrl,
174
+ sandboxBridgeUrl: opts?.sandboxBridgeUrl,
231
175
  });
232
176
  const resolvedTarget = target === "node" ? undefined : target;
233
177
  const baseUrl = nodeTarget
234
- ? ""
178
+ ? undefined
235
179
  : resolveBrowserBaseUrl({
236
180
  target: resolvedTarget,
237
- controlUrl,
238
- defaultControlUrl: opts?.defaultControlUrl,
181
+ sandboxBridgeUrl: opts?.sandboxBridgeUrl,
239
182
  allowHostControl: opts?.allowHostControl,
240
- allowedControlUrls: opts?.allowedControlUrls,
241
- allowedControlHosts: opts?.allowedControlHosts,
242
- allowedControlPorts: opts?.allowedControlPorts,
243
183
  });
244
184
  const proxyRequest = nodeTarget
245
185
  ? async (opts) => {
@@ -641,7 +581,7 @@ export function createBrowserTool(opts) {
641
581
  })).tabs ?? [])
642
582
  : await browserTabs(baseUrl, { profile }).catch(() => []);
643
583
  if (!tabs.length) {
644
- throw new Error("No Chrome tabs are attached via the Clawdbot Browser Relay extension. Click the toolbar icon on the tab you want to control (badge ON), then retry.");
584
+ throw new Error("No Chrome tabs are attached via the Moltbot Browser Relay extension. Click the toolbar icon on the tab you want to control (badge ON), then retry.");
645
585
  }
646
586
  throw new Error(`Chrome tab not found (stale targetId?). Run action=tabs profile="chrome" and use one of the returned targetIds.`);
647
587
  }
@@ -31,7 +31,7 @@ const BROWSER_TOOL_ACTIONS = [
31
31
  "dialog",
32
32
  "act",
33
33
  ];
34
- const BROWSER_TARGETS = ["sandbox", "host", "custom", "node"];
34
+ const BROWSER_TARGETS = ["sandbox", "host", "node"];
35
35
  const BROWSER_SNAPSHOT_FORMATS = ["aria", "ai"];
36
36
  const BROWSER_SNAPSHOT_MODES = ["efficient"];
37
37
  const BROWSER_SNAPSHOT_REFS = ["role", "aria"];
@@ -78,7 +78,6 @@ export const BrowserToolSchema = Type.Object({
78
78
  target: optionalStringEnum(BROWSER_TARGETS),
79
79
  node: Type.Optional(Type.String()),
80
80
  profile: Type.Optional(Type.String()),
81
- controlUrl: Type.Optional(Type.String()),
82
81
  targetUrl: Type.Optional(Type.String()),
83
82
  targetId: Type.Optional(Type.String()),
84
83
  limit: Type.Optional(Type.Number()),