@poolzin/pool-bot 2026.1.38 → 2026.2.0

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 (336) hide show
  1. package/assets/chrome-extension/README.md +3 -3
  2. package/assets/chrome-extension/background.js +5 -5
  3. package/assets/chrome-extension/manifest.json +3 -3
  4. package/assets/chrome-extension/options.html +4 -4
  5. package/assets/chrome-extension/options.js +1 -1
  6. package/dist/acp/client.js +3 -3
  7. package/dist/acp/types.js +1 -1
  8. package/dist/agents/agent-paths.js +3 -3
  9. package/dist/agents/auth-profiles/paths.js +3 -3
  10. package/dist/agents/cli-runner/helpers.js +1 -1
  11. package/dist/agents/cli-runner.js +2 -2
  12. package/dist/agents/cloudflare-ai-gateway.js +31 -0
  13. package/dist/agents/compaction.js +16 -2
  14. package/dist/agents/context-window-guard.js +13 -10
  15. package/dist/agents/context.js +4 -4
  16. package/dist/agents/docs-path.js +1 -1
  17. package/dist/agents/minimax-vlm.js +1 -1
  18. package/dist/agents/model-auth.js +12 -1
  19. package/dist/agents/model-catalog.js +4 -4
  20. package/dist/agents/model-selection.js +10 -4
  21. package/dist/agents/models-config.js +3 -3
  22. package/dist/agents/models-config.providers.js +147 -39
  23. package/dist/agents/pi-embedded-helpers/openai.js +1 -1
  24. package/dist/agents/pi-embedded-runner/compact.js +8 -8
  25. package/dist/agents/pi-embedded-runner/model.js +2 -2
  26. package/dist/agents/pi-embedded-runner/run/attempt.js +6 -6
  27. package/dist/agents/pi-embedded-runner/run.js +4 -4
  28. package/dist/agents/pi-embedded-runner/tool-result-truncation.js +275 -0
  29. package/dist/agents/pi-embedded-runner/utils.js +1 -1
  30. package/dist/agents/pi-model-discovery.js +10 -0
  31. package/dist/agents/pi-tool-definition-adapter.js +50 -9
  32. package/dist/agents/pi-tools.before-tool-call.js +67 -0
  33. package/dist/agents/pi-tools.js +10 -5
  34. package/dist/agents/pi-tools.read.js +2 -2
  35. package/dist/agents/session-file-repair.js +83 -0
  36. package/dist/agents/session-transcript-repair.js +68 -0
  37. package/dist/agents/skills/frontmatter.js +1 -1
  38. package/dist/agents/skills/workspace.js +2 -2
  39. package/dist/agents/system-prompt.js +28 -4
  40. package/dist/agents/together-models.js +127 -0
  41. package/dist/agents/tool-images.js +1 -1
  42. package/dist/agents/tool-policy.js +1 -1
  43. package/dist/agents/tools/browser-tool.js +3 -3
  44. package/dist/agents/tools/image-tool.js +2 -2
  45. package/dist/agents/tools/memory-tool.js +94 -7
  46. package/dist/agents/tools/web-search.js +1 -1
  47. package/dist/agents/workspace.js +1 -5
  48. package/dist/auto-reply/commands-registry.data.js +1 -1
  49. package/dist/auto-reply/reply/commands-context-report.js +2 -2
  50. package/dist/auto-reply/reply/commands-session.js +2 -2
  51. package/dist/auto-reply/reply/get-reply-run.js +14 -4
  52. package/dist/auto-reply/reply/groups.js +1 -1
  53. package/dist/auto-reply/reply/inbound-context.js +4 -0
  54. package/dist/auto-reply/reply/inbound-meta.js +130 -0
  55. package/dist/auto-reply/reply/untrusted-context.js +15 -0
  56. package/dist/auto-reply/status.js +1 -1
  57. package/dist/browser/client-fetch.js +1 -1
  58. package/dist/browser/config.js +1 -1
  59. package/dist/browser/extension-relay.js +3 -3
  60. package/dist/browser/server-context.js +2 -2
  61. package/dist/build-info.json +3 -3
  62. package/dist/canvas-host/a2ui.js +3 -3
  63. package/dist/channels/plugins/agent-tools/whatsapp-login.js +1 -17
  64. package/dist/channels/plugins/catalog.js +2 -2
  65. package/dist/channels/plugins/onboarding/imessage.js +1 -1
  66. package/dist/channels/plugins/onboarding/signal.js +1 -1
  67. package/dist/channels/plugins/onboarding/slack.js +4 -4
  68. package/dist/channels/plugins/onboarding/whatsapp.js +3 -3
  69. package/dist/channels/plugins/pairing-message.js +1 -1
  70. package/dist/cli/browser-cli-extension.js +2 -2
  71. package/dist/cli/docs-cli.js +1 -1
  72. package/dist/cli/gateway-cli/dev.js +1 -1
  73. package/dist/cli/memory-cli.js +25 -15
  74. package/dist/cli/nodes-cli/register.canvas.js +1 -1
  75. package/dist/cli/plugins-cli.js +1 -1
  76. package/dist/cli/run-main.js +2 -2
  77. package/dist/cli/security-cli.js +1 -1
  78. package/dist/cli/tagline.js +1 -1
  79. package/dist/cli/update-cli.js +4 -4
  80. package/dist/cli/webhooks-cli.js +5 -5
  81. package/dist/commands/agents.commands.add.js +1 -1
  82. package/dist/commands/auth-choice.apply.api-providers.js +305 -17
  83. package/dist/commands/auth-choice.apply.js +4 -1
  84. package/dist/commands/auth-choice.apply.plugin-provider.js +2 -2
  85. package/dist/commands/auth-choice.apply.xai.js +63 -0
  86. package/dist/commands/auth-choice.preferred-provider.js +7 -1
  87. package/dist/commands/configure.wizard.js +1 -1
  88. package/dist/commands/dashboard.js +1 -1
  89. package/dist/commands/docs.js +1 -1
  90. package/dist/commands/doctor-gateway-services.js +3 -3
  91. package/dist/commands/doctor-state-integrity.js +2 -14
  92. package/dist/commands/doctor-update.js +3 -3
  93. package/dist/commands/doctor.js +1 -1
  94. package/dist/commands/models/list.probe.js +2 -2
  95. package/dist/commands/models/list.registry.js +4 -4
  96. package/dist/commands/models/list.status-command.js +2 -2
  97. package/dist/commands/onboard-auth.config-core.js +366 -28
  98. package/dist/commands/onboard-auth.credentials.js +71 -9
  99. package/dist/commands/onboard-auth.js +3 -3
  100. package/dist/commands/onboard-auth.models.js +26 -24
  101. package/dist/commands/onboard-non-interactive/local/auth-choice.js +140 -6
  102. package/dist/commands/status-all/report-lines.js +1 -1
  103. package/dist/commands/status.command.js +1 -1
  104. package/dist/commands/uninstall.js +3 -3
  105. package/dist/compat/legacy-names.js +1 -1
  106. package/dist/config/io.js +3 -3
  107. package/dist/config/schema.js +1 -1
  108. package/dist/config/types.js +0 -1
  109. package/dist/config/types.memory.js +1 -0
  110. package/dist/config/version.js +4 -4
  111. package/dist/config/zod-schema.js +0 -6
  112. package/dist/daemon/constants.js +7 -7
  113. package/dist/daemon/inspect.js +6 -6
  114. package/dist/daemon/systemd-unit.js +1 -1
  115. package/dist/discord/monitor/message-handler.process.js +6 -4
  116. package/dist/gateway/client.js +0 -14
  117. package/dist/gateway/live-image-probe.js +1 -66
  118. package/dist/gateway/openai-http.js +2 -2
  119. package/dist/gateway/openresponses-http.js +4 -4
  120. package/dist/gateway/server-discovery.js +2 -2
  121. package/dist/gateway/server-http.js +1 -1
  122. package/dist/gateway/server.impl.js +2 -6
  123. package/dist/hooks/frontmatter.js +1 -1
  124. package/dist/hooks/hooks-status.js +1 -1
  125. package/dist/hooks/install.js +2 -2
  126. package/dist/hooks/loader.js +1 -1
  127. package/dist/hooks/workspace.js +3 -3
  128. package/dist/index.js +2 -2
  129. package/dist/infra/bonjour.js +3 -3
  130. package/dist/infra/path-env.js +3 -3
  131. package/dist/infra/provider-usage.fetch.minimax.js +1 -1
  132. package/dist/infra/restart.js +1 -1
  133. package/dist/infra/tailscale.js +1 -1
  134. package/dist/macos/relay.js +2 -2
  135. package/dist/media/input-files.js +1 -1
  136. package/dist/media/mime.js +4 -0
  137. package/dist/media/png-encode.js +74 -0
  138. package/dist/media-understanding/providers/image.js +2 -2
  139. package/dist/memory/backend-config.js +207 -0
  140. package/dist/memory/embeddings.js +1 -1
  141. package/dist/memory/index.js +0 -5
  142. package/dist/memory/manager.js +3 -25
  143. package/dist/memory/types.js +1 -0
  144. package/dist/node-host/runner.js +2 -2
  145. package/dist/pairing/pairing-messages.js +1 -1
  146. package/dist/plugins/discovery.js +1 -1
  147. package/dist/plugins/install.js +2 -2
  148. package/dist/plugins/update.js +1 -1
  149. package/dist/security/audit.js +2 -2
  150. package/dist/shared/text/reasoning-tags.js +52 -7
  151. package/dist/slack/monitor/message-handler/prepare.js +10 -4
  152. package/dist/slack/monitor/slash.js +10 -4
  153. package/dist/tailscale/detect.js +146 -0
  154. package/dist/telegram/bot-message-context.js +1 -1
  155. package/dist/test-helpers/workspace.js +11 -0
  156. package/dist/test-utils/channel-plugins.js +82 -0
  157. package/dist/test-utils/ports.js +73 -0
  158. package/dist/utils/shell-argv.js +61 -0
  159. package/dist/utils.js +10 -0
  160. package/dist/web/qr-image.js +1 -61
  161. package/dist/wizard/onboarding.finalize.js +7 -7
  162. package/dist/wizard/onboarding.js +3 -3
  163. package/docs/RELEASE_WORKFOTS_COMPARISON.md +3 -3
  164. package/docs/_config.yml +2 -2
  165. package/docs/_layouts/default.html +9 -9
  166. package/docs/concepts/typebox.md +1 -1
  167. package/docs/docs.json +1 -1
  168. package/docs/northflank.mdx +7 -7
  169. package/docs/railway.mdx +3 -3
  170. package/docs/render.mdx +5 -5
  171. package/docs/start/lore.md +2 -2
  172. package/extensions/bluebubbles/index.ts +2 -2
  173. package/extensions/bluebubbles/package.json +1 -1
  174. package/extensions/bluebubbles/src/accounts.ts +8 -8
  175. package/extensions/bluebubbles/src/actions.test.ts +22 -22
  176. package/extensions/bluebubbles/src/actions.ts +5 -5
  177. package/extensions/bluebubbles/src/attachments.ts +2 -2
  178. package/extensions/bluebubbles/src/channel.ts +16 -16
  179. package/extensions/bluebubbles/src/chat.ts +2 -2
  180. package/extensions/bluebubbles/src/media-send.ts +2 -2
  181. package/extensions/bluebubbles/src/monitor.test.ts +46 -46
  182. package/extensions/bluebubbles/src/monitor.ts +5 -5
  183. package/extensions/bluebubbles/src/onboarding.ts +7 -7
  184. package/extensions/bluebubbles/src/reactions.ts +2 -2
  185. package/extensions/bluebubbles/src/send.ts +2 -2
  186. package/extensions/copilot-proxy/README.md +1 -1
  187. package/extensions/copilot-proxy/package.json +1 -1
  188. package/extensions/diagnostics-otel/index.ts +2 -2
  189. package/extensions/diagnostics-otel/package.json +1 -1
  190. package/extensions/diagnostics-otel/src/service.ts +3 -3
  191. package/extensions/discord/index.ts +2 -2
  192. package/extensions/discord/package.json +1 -1
  193. package/extensions/google-antigravity-auth/README.md +1 -1
  194. package/extensions/google-antigravity-auth/index.ts +1 -1
  195. package/extensions/google-antigravity-auth/package.json +1 -1
  196. package/extensions/google-gemini-cli-auth/README.md +1 -1
  197. package/extensions/google-gemini-cli-auth/oauth.ts +1 -1
  198. package/extensions/google-gemini-cli-auth/package.json +1 -1
  199. package/extensions/googlechat/index.ts +3 -3
  200. package/extensions/googlechat/package.json +1 -1
  201. package/extensions/googlechat/src/accounts.ts +8 -8
  202. package/extensions/googlechat/src/actions.ts +6 -6
  203. package/extensions/googlechat/src/channel.ts +21 -21
  204. package/extensions/googlechat/src/monitor.ts +8 -8
  205. package/extensions/googlechat/src/onboarding.ts +10 -10
  206. package/extensions/imessage/index.ts +2 -2
  207. package/extensions/imessage/package.json +1 -1
  208. package/extensions/line/index.ts +2 -2
  209. package/extensions/line/package.json +1 -1
  210. package/extensions/line/src/card-command.ts +2 -2
  211. package/extensions/line/src/channel.logout.test.ts +4 -4
  212. package/extensions/line/src/channel.sendPayload.test.ts +8 -8
  213. package/extensions/line/src/channel.ts +3 -3
  214. package/extensions/llm-task/README.md +3 -3
  215. package/extensions/llm-task/index.ts +2 -2
  216. package/extensions/llm-task/package.json +1 -1
  217. package/extensions/llm-task/src/llm-task-tool.ts +4 -4
  218. package/extensions/lobster/README.md +6 -6
  219. package/extensions/lobster/index.ts +2 -2
  220. package/extensions/lobster/src/lobster-tool.test.ts +4 -4
  221. package/extensions/lobster/src/lobster-tool.ts +2 -2
  222. package/extensions/matrix/index.ts +2 -2
  223. package/extensions/matrix/package.json +1 -1
  224. package/extensions/matrix/src/matrix/client/config.ts +1 -1
  225. package/extensions/matrix/src/matrix/monitor/handler.ts +1 -1
  226. package/extensions/matrix/src/onboarding.ts +1 -1
  227. package/extensions/mattermost/index.ts +2 -2
  228. package/extensions/mattermost/package.json +1 -1
  229. package/extensions/mattermost/src/mattermost/accounts.ts +8 -8
  230. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +5 -5
  231. package/extensions/mattermost/src/mattermost/monitor.ts +2 -2
  232. package/extensions/mattermost/src/onboarding-helpers.ts +3 -3
  233. package/extensions/mattermost/src/onboarding.ts +2 -2
  234. package/extensions/memory-core/index.ts +2 -2
  235. package/extensions/memory-core/package.json +1 -4
  236. package/extensions/memory-lancedb/index.ts +3 -3
  237. package/extensions/memory-lancedb/package.json +1 -1
  238. package/extensions/msteams/index.ts +2 -2
  239. package/extensions/msteams/package.json +1 -1
  240. package/extensions/msteams/src/channel.directory.test.ts +2 -2
  241. package/extensions/msteams/src/channel.ts +2 -2
  242. package/extensions/msteams/src/graph-upload.ts +4 -4
  243. package/extensions/msteams/src/monitor-handler.ts +2 -2
  244. package/extensions/msteams/src/monitor.ts +2 -2
  245. package/extensions/msteams/src/onboarding.ts +9 -9
  246. package/extensions/msteams/src/reply-dispatcher.ts +2 -2
  247. package/extensions/msteams/src/send-context.ts +2 -2
  248. package/extensions/msteams/src/send.ts +4 -4
  249. package/extensions/nextcloud-talk/index.ts +2 -2
  250. package/extensions/nextcloud-talk/package.json +1 -1
  251. package/extensions/nextcloud-talk/src/channel.ts +7 -7
  252. package/extensions/nextcloud-talk/src/inbound.ts +7 -7
  253. package/extensions/nextcloud-talk/src/onboarding.ts +1 -1
  254. package/extensions/nostr/README.md +2 -2
  255. package/extensions/nostr/index.ts +5 -5
  256. package/extensions/nostr/package.json +1 -1
  257. package/extensions/nostr/src/types.ts +4 -4
  258. package/extensions/open-prose/index.ts +2 -2
  259. package/extensions/qwen-portal-auth/README.md +1 -1
  260. package/extensions/signal/index.ts +2 -2
  261. package/extensions/signal/package.json +1 -1
  262. package/extensions/slack/index.ts +2 -2
  263. package/extensions/slack/package.json +1 -1
  264. package/extensions/telegram/index.ts +2 -2
  265. package/extensions/telegram/package.json +1 -1
  266. package/extensions/telegram/src/channel.ts +2 -2
  267. package/extensions/tlon/README.md +2 -2
  268. package/extensions/tlon/index.ts +2 -2
  269. package/extensions/tlon/package.json +1 -1
  270. package/extensions/tlon/src/channel.ts +13 -13
  271. package/extensions/tlon/src/monitor/index.ts +3 -3
  272. package/extensions/tlon/src/onboarding.ts +3 -3
  273. package/extensions/tlon/src/types.ts +3 -3
  274. package/extensions/twitch/README.md +1 -1
  275. package/extensions/twitch/index.ts +2 -2
  276. package/extensions/twitch/package.json +1 -1
  277. package/extensions/twitch/src/config.ts +3 -3
  278. package/extensions/twitch/src/monitor.ts +3 -3
  279. package/extensions/twitch/src/onboarding.ts +9 -9
  280. package/extensions/twitch/src/outbound.test.ts +2 -2
  281. package/extensions/twitch/src/plugin.test.ts +2 -2
  282. package/extensions/twitch/src/plugin.ts +8 -8
  283. package/extensions/twitch/src/send.test.ts +2 -2
  284. package/extensions/twitch/src/send.ts +4 -4
  285. package/extensions/twitch/src/token.test.ts +8 -8
  286. package/extensions/twitch/src/token.ts +3 -3
  287. package/extensions/twitch/src/twitch-client.ts +3 -3
  288. package/extensions/twitch/src/types.ts +3 -3
  289. package/extensions/twitch/src/utils/markdown.ts +1 -1
  290. package/extensions/voice-call/README.md +3 -3
  291. package/extensions/voice-call/package.json +1 -1
  292. package/extensions/voice-call/src/core-bridge.ts +2 -2
  293. package/extensions/voice-call/src/response-generator.ts +1 -1
  294. package/extensions/whatsapp/index.ts +2 -2
  295. package/extensions/whatsapp/package.json +1 -1
  296. package/extensions/zalo/README.md +1 -1
  297. package/extensions/zalo/index.ts +2 -2
  298. package/extensions/zalo/package.json +1 -1
  299. package/extensions/zalo/src/accounts.ts +8 -8
  300. package/extensions/zalo/src/actions.ts +4 -4
  301. package/extensions/zalo/src/channel.directory.test.ts +2 -2
  302. package/extensions/zalo/src/channel.ts +18 -18
  303. package/extensions/zalo/src/monitor.ts +9 -9
  304. package/extensions/zalo/src/monitor.webhook.test.ts +2 -2
  305. package/extensions/zalo/src/onboarding.ts +24 -24
  306. package/extensions/zalo/src/send.ts +2 -2
  307. package/extensions/zalouser/README.md +2 -2
  308. package/extensions/zalouser/index.ts +2 -2
  309. package/extensions/zalouser/package.json +1 -1
  310. package/extensions/zalouser/src/accounts.ts +9 -9
  311. package/extensions/zalouser/src/channel.ts +24 -24
  312. package/extensions/zalouser/src/monitor.ts +4 -4
  313. package/extensions/zalouser/src/onboarding.ts +28 -28
  314. package/package.json +13 -250
  315. package/skills/nano-banana-pro/scripts/generate_image.py +1 -1
  316. package/skills/tmux/scripts/find-sessions.sh +1 -1
  317. package/CHANGELOG.md +0 -200
  318. package/README-header.png +0 -0
  319. package/git-hooks/pre-commit +0 -4
  320. package/scripts/format-staged.js +0 -148
  321. package/scripts/postinstall.js +0 -300
  322. package/scripts/setup-git-hooks.js +0 -96
  323. package/skills/webgpu-threejs-tsl/REFERENCE.md +0 -283
  324. package/skills/webgpu-threejs-tsl/SKILL.md +0 -91
  325. package/skills/webgpu-threejs-tsl/docs/compute-shaders.md +0 -404
  326. package/skills/webgpu-threejs-tsl/docs/core-concepts.md +0 -453
  327. package/skills/webgpu-threejs-tsl/docs/materials.md +0 -353
  328. package/skills/webgpu-threejs-tsl/docs/post-processing.md +0 -434
  329. package/skills/webgpu-threejs-tsl/docs/wgsl-integration.md +0 -324
  330. package/skills/webgpu-threejs-tsl/examples/basic-setup.js +0 -87
  331. package/skills/webgpu-threejs-tsl/examples/custom-material.js +0 -170
  332. package/skills/webgpu-threejs-tsl/examples/earth-shader.js +0 -292
  333. package/skills/webgpu-threejs-tsl/examples/particle-system.js +0 -259
  334. package/skills/webgpu-threejs-tsl/examples/post-processing.js +0 -199
  335. package/skills/webgpu-threejs-tsl/templates/compute-shader.js +0 -305
  336. package/skills/webgpu-threejs-tsl/templates/webgpu-project.js +0 -276
@@ -1,10 +1,10 @@
1
- # Clawdbot Chrome Extension (Browser Relay)
1
+ # Pool-Bot Chrome Extension (Browser Relay)
2
2
 
3
- Purpose: attach Clawdbot to an existing Chrome tab so the Gateway can automate it (via the local CDP relay server).
3
+ Purpose: attach Pool-Bot to an existing Chrome tab so the Gateway can automate it (via the local CDP relay server).
4
4
 
5
5
  ## Dev / load unpacked
6
6
 
7
- 1. Build/run Clawdbot Gateway with browser control enabled.
7
+ 1. Build/run Pool-Bot Gateway with browser control enabled.
8
8
  2. Ensure the relay server is reachable at `http://127.0.0.1:18792/` (default).
9
9
  3. Install the extension to a stable path:
10
10
 
@@ -114,7 +114,7 @@ function onRelayClosed(reason) {
114
114
  setBadge(tabId, 'connecting')
115
115
  void chrome.action.setTitle({
116
116
  tabId,
117
- title: 'Moltbot Browser Relay: disconnected (click to re-attach)',
117
+ title: 'Poolbot Browser Relay: disconnected (click to re-attach)',
118
118
  })
119
119
  }
120
120
  tabs.clear()
@@ -225,7 +225,7 @@ async function attachTab(tabId, opts = {}) {
225
225
  tabBySession.set(sessionId, tabId)
226
226
  void chrome.action.setTitle({
227
227
  tabId,
228
- title: 'Moltbot Browser Relay: attached (click to detach)',
228
+ title: 'Poolbot Browser Relay: attached (click to detach)',
229
229
  })
230
230
 
231
231
  if (!opts.skipAttachedEvent) {
@@ -278,7 +278,7 @@ async function detachTab(tabId, reason) {
278
278
  setBadge(tabId, 'off')
279
279
  void chrome.action.setTitle({
280
280
  tabId,
281
- title: 'Moltbot Browser Relay (click to attach/detach)',
281
+ title: 'Poolbot Browser Relay (click to attach/detach)',
282
282
  })
283
283
  }
284
284
 
@@ -297,7 +297,7 @@ async function connectOrToggleForActiveTab() {
297
297
  setBadge(tabId, 'connecting')
298
298
  void chrome.action.setTitle({
299
299
  tabId,
300
- title: 'Moltbot Browser Relay: connecting to local relay…',
300
+ title: 'Poolbot Browser Relay: connecting to local relay…',
301
301
  })
302
302
 
303
303
  try {
@@ -308,7 +308,7 @@ async function connectOrToggleForActiveTab() {
308
308
  setBadge(tabId, 'error')
309
309
  void chrome.action.setTitle({
310
310
  tabId,
311
- title: 'Moltbot Browser Relay: relay not running (open options for setup)',
311
+ title: 'Poolbot Browser Relay: relay not running (open options for setup)',
312
312
  })
313
313
  void maybeOpenHelpOnce()
314
314
  // Extra breadcrumbs in chrome://extensions service worker logs.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "manifest_version": 3,
3
- "name": "Moltbot Browser Relay",
3
+ "name": "Poolbot Browser Relay",
4
4
  "version": "0.1.0",
5
- "description": "Attach Moltbot to your existing Chrome tab via a local CDP relay server.",
5
+ "description": "Attach Poolbot to your existing Chrome tab via a local CDP relay server.",
6
6
  "icons": {
7
7
  "16": "icons/icon16.png",
8
8
  "32": "icons/icon32.png",
@@ -13,7 +13,7 @@
13
13
  "host_permissions": ["http://127.0.0.1/*", "http://localhost/*"],
14
14
  "background": { "service_worker": "background.js", "type": "module" },
15
15
  "action": {
16
- "default_title": "Moltbot Browser Relay (click to attach/detach)",
16
+ "default_title": "Poolbot Browser Relay (click to attach/detach)",
17
17
  "default_icon": {
18
18
  "16": "icons/icon16.png",
19
19
  "32": "icons/icon32.png",
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <title>Moltbot Browser Relay</title>
6
+ <title>Poolbot Browser Relay</title>
7
7
  <style>
8
8
  :root {
9
9
  color-scheme: light dark;
@@ -158,7 +158,7 @@
158
158
  <img src="icons/icon128.png" alt="" />
159
159
  </div>
160
160
  <div>
161
- <h1>Moltbot Browser Relay</h1>
161
+ <h1>Poolbot Browser Relay</h1>
162
162
  <p class="subtitle">Click the toolbar button on a tab to attach / detach.</p>
163
163
  </div>
164
164
  </header>
@@ -168,7 +168,7 @@
168
168
  <h2>Getting started</h2>
169
169
  <p>
170
170
  If you see a red <code>!</code> badge on the extension icon, the relay server is not reachable.
171
- Start Moltbot’s browser relay on this machine (Gateway or node host), then click the toolbar button again.
171
+ Start Poolbot’s browser relay on this machine (Gateway or node host), then click the toolbar button again.
172
172
  </p>
173
173
  <p>
174
174
  Full guide (install, remote Gateway, security): <a href="https://docs.molt.bot/tools/chrome-extension" target="_blank" rel="noreferrer">docs.molt.bot/tools/chrome-extension</a>
@@ -184,7 +184,7 @@
184
184
  </div>
185
185
  <div class="hint">
186
186
  Default: <code>18792</code>. Extension connects to: <code id="relay-url">http://127.0.0.1:&lt;port&gt;/</code>.
187
- Only change this if your Moltbot profile uses a different <code>cdpUrl</code> port.
187
+ Only change this if your Poolbot profile uses a different <code>cdpUrl</code> port.
188
188
  </div>
189
189
  <div class="status" id="status"></div>
190
190
  </div>
@@ -31,7 +31,7 @@ async function checkRelayReachable(port) {
31
31
  } catch {
32
32
  setStatus(
33
33
  'error',
34
- `Relay not reachable at ${url}. Start Moltbot’s browser relay on this machine, then click the toolbar button again.`,
34
+ `Relay not reachable at ${url}. Start Poolbot’s browser relay on this machine, then click the toolbar button again.`,
35
35
  )
36
36
  } finally {
37
37
  clearTimeout(t)
@@ -2,7 +2,7 @@ import { spawn } from "node:child_process";
2
2
  import * as readline from "node:readline";
3
3
  import { Readable, Writable } from "node:stream";
4
4
  import { ClientSideConnection, PROTOCOL_VERSION, ndJsonStream, } from "@agentclientprotocol/sdk";
5
- import { ensureMoltbotCliOnPath } from "../infra/path-env.js";
5
+ import { ensurePoolbotCliOnPath } from "../infra/path-env.js";
6
6
  function toArgs(value) {
7
7
  if (!value)
8
8
  return [];
@@ -50,7 +50,7 @@ export async function createAcpClient(opts = {}) {
50
50
  const cwd = opts.cwd ?? process.cwd();
51
51
  const verbose = Boolean(opts.verbose);
52
52
  const log = verbose ? (msg) => console.error(`[acp-client] ${msg}`) : () => { };
53
- ensureMoltbotCliOnPath({ cwd });
53
+ ensurePoolbotCliOnPath({ cwd });
54
54
  const serverCommand = opts.serverCommand ?? "poolbot";
55
55
  const serverArgs = buildServerArgs(opts);
56
56
  log(`spawning: ${serverCommand} ${serverArgs.join(" ")}`);
@@ -107,7 +107,7 @@ export async function runAcpClientInteractive(opts = {}) {
107
107
  input: process.stdin,
108
108
  output: process.stdout,
109
109
  });
110
- console.log("Moltbot ACP client");
110
+ console.log("Poolbot ACP client");
111
111
  console.log(`Session: ${sessionId}`);
112
112
  console.log('Type a prompt, or "exit" to quit.\n');
113
113
  const prompt = () => {
package/dist/acp/types.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { VERSION } from "../version.js";
2
2
  export const ACP_AGENT_INFO = {
3
3
  name: "poolbot-acp",
4
- title: "Moltbot ACP Gateway",
4
+ title: "Poolbot ACP Gateway",
5
5
  version: VERSION,
6
6
  };
@@ -2,15 +2,15 @@ import path from "node:path";
2
2
  import { resolveStateDir } from "../config/paths.js";
3
3
  import { DEFAULT_AGENT_ID } from "../routing/session-key.js";
4
4
  import { resolveUserPath } from "../utils.js";
5
- export function resolveMoltbotAgentDir() {
5
+ export function resolvePoolbotAgentDir() {
6
6
  const override = process.env.CLAWDBOT_AGENT_DIR?.trim() || process.env.PI_CODING_AGENT_DIR?.trim();
7
7
  if (override)
8
8
  return resolveUserPath(override);
9
9
  const defaultAgentDir = path.join(resolveStateDir(), "agents", DEFAULT_AGENT_ID, "agent");
10
10
  return resolveUserPath(defaultAgentDir);
11
11
  }
12
- export function ensureMoltbotAgentEnv() {
13
- const dir = resolveMoltbotAgentDir();
12
+ export function ensurePoolbotAgentEnv() {
13
+ const dir = resolvePoolbotAgentDir();
14
14
  if (!process.env.CLAWDBOT_AGENT_DIR)
15
15
  process.env.CLAWDBOT_AGENT_DIR = dir;
16
16
  if (!process.env.PI_CODING_AGENT_DIR)
@@ -2,14 +2,14 @@ import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { saveJsonFile } from "../../infra/json-file.js";
4
4
  import { resolveUserPath } from "../../utils.js";
5
- import { resolveMoltbotAgentDir } from "../agent-paths.js";
5
+ import { resolvePoolbotAgentDir } from "../agent-paths.js";
6
6
  import { AUTH_PROFILE_FILENAME, AUTH_STORE_VERSION, LEGACY_AUTH_FILENAME } from "./constants.js";
7
7
  export function resolveAuthStorePath(agentDir) {
8
- const resolved = resolveUserPath(agentDir ?? resolveMoltbotAgentDir());
8
+ const resolved = resolveUserPath(agentDir ?? resolvePoolbotAgentDir());
9
9
  return path.join(resolved, AUTH_PROFILE_FILENAME);
10
10
  }
11
11
  export function resolveLegacyAuthStorePath(agentDir) {
12
- const resolved = resolveUserPath(agentDir ?? resolveMoltbotAgentDir());
12
+ const resolved = resolveUserPath(agentDir ?? resolvePoolbotAgentDir());
13
13
  return path.join(resolved, LEGACY_AUTH_FILENAME);
14
14
  }
15
15
  export function resolveAuthStorePathForDisplay(agentDir) {
@@ -74,7 +74,7 @@ function tokenToRegex(token) {
74
74
  return parts.join("\\S+");
75
75
  }
76
76
  /**
77
- * Cleanup suspended Moltbot CLI processes that have accumulated.
77
+ * Cleanup suspended Poolbot CLI processes that have accumulated.
78
78
  * Only cleans up if there are more than the threshold (default: 10).
79
79
  */
80
80
  export async function cleanupSuspendedCliProcesses(backend, threshold = 10) {
@@ -4,7 +4,7 @@ import { shouldLogVerbose } from "../globals.js";
4
4
  import { createSubsystemLogger } from "../logging/subsystem.js";
5
5
  import { runCommandWithTimeout } from "../process/exec.js";
6
6
  import { resolveUserPath } from "../utils.js";
7
- import { resolveMoltbotDocsPath } from "./docs-path.js";
7
+ import { resolvePoolbotDocsPath } from "./docs-path.js";
8
8
  import { resolveSessionAgentIds } from "./agent-scope.js";
9
9
  import { makeBootstrapWarn, resolveBootstrapContextForRun } from "./bootstrap-files.js";
10
10
  import { resolveCliBackendConfig } from "./cli-backends.js";
@@ -45,7 +45,7 @@ export async function runCliAgent(params) {
45
45
  const heartbeatPrompt = sessionAgentId === defaultAgentId
46
46
  ? resolveHeartbeatPrompt(params.config?.agents?.defaults?.heartbeat?.prompt)
47
47
  : undefined;
48
- const docsPath = await resolveMoltbotDocsPath({
48
+ const docsPath = await resolvePoolbotDocsPath({
49
49
  workspaceDir,
50
50
  argv1: process.argv[1],
51
51
  cwd: process.cwd(),
@@ -0,0 +1,31 @@
1
+ export const CLOUDFLARE_AI_GATEWAY_PROVIDER_ID = "cloudflare-ai-gateway";
2
+ export const CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_ID = "claude-sonnet-4-5";
3
+ export const CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF = `${CLOUDFLARE_AI_GATEWAY_PROVIDER_ID}/${CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_ID}`;
4
+ export const CLOUDFLARE_AI_GATEWAY_DEFAULT_CONTEXT_WINDOW = 200_000;
5
+ export const CLOUDFLARE_AI_GATEWAY_DEFAULT_MAX_TOKENS = 64_000;
6
+ export const CLOUDFLARE_AI_GATEWAY_DEFAULT_COST = {
7
+ input: 3,
8
+ output: 15,
9
+ cacheRead: 0.3,
10
+ cacheWrite: 3.75,
11
+ };
12
+ export function buildCloudflareAiGatewayModelDefinition(params) {
13
+ const id = params?.id?.trim() || CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_ID;
14
+ return {
15
+ id,
16
+ name: params?.name ?? "Claude Sonnet 4.5",
17
+ reasoning: params?.reasoning ?? true,
18
+ input: params?.input ?? ["text", "image"],
19
+ cost: CLOUDFLARE_AI_GATEWAY_DEFAULT_COST,
20
+ contextWindow: CLOUDFLARE_AI_GATEWAY_DEFAULT_CONTEXT_WINDOW,
21
+ maxTokens: CLOUDFLARE_AI_GATEWAY_DEFAULT_MAX_TOKENS,
22
+ };
23
+ }
24
+ export function resolveCloudflareAiGatewayBaseUrl(params) {
25
+ const accountId = params.accountId.trim();
26
+ const gatewayId = params.gatewayId.trim();
27
+ if (!accountId || !gatewayId) {
28
+ return "";
29
+ }
30
+ return `https://gateway.ai.cloudflare.com/v1/${accountId}/${gatewayId}/anthropic`;
31
+ }
@@ -1,5 +1,6 @@
1
1
  import { estimateTokens, generateSummary } from "@mariozechner/pi-coding-agent";
2
2
  import { DEFAULT_CONTEXT_TOKENS } from "./defaults.js";
3
+ import { repairToolUseResultPairing } from "./session-transcript-repair.js";
3
4
  export const BASE_CHUNK_RATIO = 0.4;
4
5
  export const MIN_CHUNK_RATIO = 0.15;
5
6
  export const SAFETY_MARGIN = 1.2; // 20% buffer for estimateTokens() inaccuracy
@@ -208,11 +209,24 @@ export function pruneHistoryForContextShare(params) {
208
209
  if (chunks.length <= 1)
209
210
  break;
210
211
  const [dropped, ...rest] = chunks;
212
+ const flatRest = rest.flat();
213
+ // After dropping a chunk, repair tool_use/tool_result pairing to handle
214
+ // orphaned tool_results (whose tool_use was in the dropped chunk).
215
+ // repairToolUseResultPairing drops orphaned tool_results, preventing
216
+ // "unexpected tool_use_id" errors from Anthropic's API.
217
+ const repairReport = repairToolUseResultPairing(flatRest);
218
+ const repairedKept = repairReport.messages;
219
+ // Track orphaned tool_results as dropped (they were in kept but their tool_use was dropped)
220
+ const orphanedCount = repairReport.droppedOrphanCount;
211
221
  droppedChunks += 1;
212
- droppedMessages += dropped.length;
222
+ droppedMessages += dropped.length + orphanedCount;
213
223
  droppedTokens += estimateMessagesTokens(dropped);
224
+ // Note: We don't have the actual orphaned messages to add to droppedMessagesList
225
+ // since repairToolUseResultPairing doesn't return them. This is acceptable since
226
+ // the dropped messages are used for summarization, and orphaned tool_results
227
+ // without their tool_use context aren't useful for summarization anyway.
214
228
  allDroppedMessages.push(...dropped);
215
- keptMessages = rest.flat();
229
+ keptMessages = repairedKept;
216
230
  }
217
231
  return {
218
232
  messages: keptMessages,
@@ -1,15 +1,13 @@
1
1
  export const CONTEXT_WINDOW_HARD_MIN_TOKENS = 16_000;
2
2
  export const CONTEXT_WINDOW_WARN_BELOW_TOKENS = 32_000;
3
3
  function normalizePositiveInt(value) {
4
- if (typeof value !== "number" || !Number.isFinite(value))
4
+ if (typeof value !== "number" || !Number.isFinite(value)) {
5
5
  return null;
6
+ }
6
7
  const int = Math.floor(value);
7
8
  return int > 0 ? int : null;
8
9
  }
9
10
  export function resolveContextWindowInfo(params) {
10
- const fromModel = normalizePositiveInt(params.modelContextWindow);
11
- if (fromModel)
12
- return { tokens: fromModel, source: "model" };
13
11
  const fromModelsConfig = (() => {
14
12
  const providers = params.cfg?.models?.providers;
15
13
  const providerEntry = providers?.[params.provider];
@@ -17,12 +15,17 @@ export function resolveContextWindowInfo(params) {
17
15
  const match = models.find((m) => m?.id === params.modelId);
18
16
  return normalizePositiveInt(match?.contextWindow);
19
17
  })();
20
- if (fromModelsConfig)
21
- return { tokens: fromModelsConfig, source: "modelsConfig" };
22
- const fromAgentConfig = normalizePositiveInt(params.cfg?.agents?.defaults?.contextTokens);
23
- if (fromAgentConfig)
24
- return { tokens: fromAgentConfig, source: "agentContextTokens" };
25
- return { tokens: Math.floor(params.defaultTokens), source: "default" };
18
+ const fromModel = normalizePositiveInt(params.modelContextWindow);
19
+ const baseInfo = fromModelsConfig
20
+ ? { tokens: fromModelsConfig, source: "modelsConfig" }
21
+ : fromModel
22
+ ? { tokens: fromModel, source: "model" }
23
+ : { tokens: Math.floor(params.defaultTokens), source: "default" };
24
+ const capTokens = normalizePositiveInt(params.cfg?.agents?.defaults?.contextTokens);
25
+ if (capTokens && capTokens < baseInfo.tokens) {
26
+ return { tokens: capTokens, source: "agentContextTokens" };
27
+ }
28
+ return baseInfo;
26
29
  }
27
30
  export function evaluateContextWindowGuard(params) {
28
31
  const warnBelow = Math.max(1, Math.floor(params.warnBelowTokens ?? CONTEXT_WINDOW_WARN_BELOW_TOKENS));
@@ -1,15 +1,15 @@
1
1
  // Lazy-load pi-coding-agent model metadata so we can infer context windows when
2
2
  // the agent reports a model id. This includes custom models.json entries.
3
3
  import { loadConfig } from "../config/config.js";
4
- import { resolveMoltbotAgentDir } from "./agent-paths.js";
5
- import { ensureMoltbotModelsJson } from "./models-config.js";
4
+ import { resolvePoolbotAgentDir } from "./agent-paths.js";
5
+ import { ensurePoolbotModelsJson } from "./models-config.js";
6
6
  const MODEL_CACHE = new Map();
7
7
  const loadPromise = (async () => {
8
8
  try {
9
9
  const { discoverAuthStorage, discoverModels } = await import("@mariozechner/pi-coding-agent");
10
10
  const cfg = loadConfig();
11
- await ensureMoltbotModelsJson(cfg);
12
- const agentDir = resolveMoltbotAgentDir();
11
+ await ensurePoolbotModelsJson(cfg);
12
+ const agentDir = resolvePoolbotAgentDir();
13
13
  const authStorage = discoverAuthStorage(agentDir);
14
14
  const modelRegistry = discoverModels(authStorage, agentDir);
15
15
  const models = modelRegistry.getAll();
@@ -1,7 +1,7 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { resolvePoolBotPackageRoot } from "../infra/poolbot-root.js";
4
- export async function resolveMoltbotDocsPath(params) {
4
+ export async function resolvePoolbotDocsPath(params) {
5
5
  const workspaceDir = params.workspaceDir?.trim();
6
6
  if (workspaceDir) {
7
7
  const workspaceDocs = path.join(workspaceDir, "docs");
@@ -47,7 +47,7 @@ export async function minimaxUnderstandImage(params) {
47
47
  headers: {
48
48
  Authorization: `Bearer ${apiKey}`,
49
49
  "Content-Type": "application/json",
50
- "MM-API-Source": "Moltbot",
50
+ "MM-API-Source": "Poolbot",
51
51
  },
52
52
  body: JSON.stringify({
53
53
  prompt,
@@ -199,22 +199,33 @@ export function resolveEnvApiKey(provider) {
199
199
  if (normalized === "qwen-portal") {
200
200
  return pick("QWEN_OAUTH_TOKEN") ?? pick("QWEN_PORTAL_API_KEY");
201
201
  }
202
+ if (normalized === "minimax-portal") {
203
+ return pick("MINIMAX_OAUTH_TOKEN") ?? pick("MINIMAX_API_KEY");
204
+ }
205
+ if (normalized === "kimi-coding") {
206
+ return pick("KIMI_API_KEY") ?? pick("KIMICODE_API_KEY");
207
+ }
202
208
  const envMap = {
203
209
  openai: "OPENAI_API_KEY",
204
210
  google: "GEMINI_API_KEY",
211
+ voyage: "VOYAGE_API_KEY",
205
212
  groq: "GROQ_API_KEY",
206
213
  deepgram: "DEEPGRAM_API_KEY",
207
214
  cerebras: "CEREBRAS_API_KEY",
208
215
  xai: "XAI_API_KEY",
209
216
  openrouter: "OPENROUTER_API_KEY",
210
217
  "vercel-ai-gateway": "AI_GATEWAY_API_KEY",
218
+ "cloudflare-ai-gateway": "CLOUDFLARE_AI_GATEWAY_API_KEY",
211
219
  moonshot: "MOONSHOT_API_KEY",
212
- "kimi-code": "KIMICODE_API_KEY",
213
220
  minimax: "MINIMAX_API_KEY",
221
+ xiaomi: "XIAOMI_API_KEY",
214
222
  synthetic: "SYNTHETIC_API_KEY",
215
223
  venice: "VENICE_API_KEY",
216
224
  mistral: "MISTRAL_API_KEY",
217
225
  opencode: "OPENCODE_API_KEY",
226
+ together: "TOGETHER_API_KEY",
227
+ qianfan: "QIANFAN_API_KEY",
228
+ ollama: "OLLAMA_API_KEY",
218
229
  };
219
230
  const envVar = envMap[normalized];
220
231
  if (!envVar)
@@ -1,6 +1,6 @@
1
1
  import { loadConfig } from "../config/config.js";
2
- import { resolveMoltbotAgentDir } from "./agent-paths.js";
3
- import { ensureMoltbotModelsJson } from "./models-config.js";
2
+ import { resolvePoolbotAgentDir } from "./agent-paths.js";
3
+ import { ensurePoolbotModelsJson } from "./models-config.js";
4
4
  let modelCatalogPromise = null;
5
5
  let hasLoggedModelCatalogError = false;
6
6
  const defaultImportPiSdk = () => import("@mariozechner/pi-coding-agent");
@@ -30,13 +30,13 @@ export async function loadModelCatalog(params) {
30
30
  });
31
31
  try {
32
32
  const cfg = params?.config ?? loadConfig();
33
- await ensureMoltbotModelsJson(cfg);
33
+ await ensurePoolbotModelsJson(cfg);
34
34
  // IMPORTANT: keep the dynamic import *inside* the try/catch.
35
35
  // If this fails once (e.g. during a pnpm install that temporarily swaps node_modules),
36
36
  // we must not poison the cache with a rejected promise (otherwise all channel handlers
37
37
  // will keep failing until restart).
38
38
  const piSdk = await importPiSdk();
39
- const agentDir = resolveMoltbotAgentDir();
39
+ const agentDir = resolvePoolbotAgentDir();
40
40
  const authStorage = piSdk.discoverAuthStorage(agentDir);
41
41
  const registry = piSdk.discoverModels(authStorage, agentDir);
42
42
  const entries = Array.isArray(registry) ? registry : registry.getAll();
@@ -1,6 +1,11 @@
1
1
  import { normalizeGoogleModelId } from "./models-config.providers.js";
2
2
  import { resolveAgentModelPrimary } from "./agent-scope.js";
3
3
  import { DEFAULT_MODEL, DEFAULT_PROVIDER } from "./defaults.js";
4
+ const ANTHROPIC_MODEL_ALIASES = {
5
+ "opus-4.6": "claude-opus-4-6",
6
+ "opus-4.5": "claude-opus-4-5",
7
+ "sonnet-4.5": "claude-sonnet-4-5",
8
+ };
4
9
  function normalizeAliasKey(value) {
5
10
  return value.trim().toLowerCase();
6
11
  }
@@ -15,6 +20,8 @@ export function normalizeProviderId(provider) {
15
20
  return "opencode";
16
21
  if (normalized === "qwen")
17
22
  return "qwen-portal";
23
+ if (normalized === "kimi-code")
24
+ return "kimi-coding";
18
25
  return normalized;
19
26
  }
20
27
  export function isCliProvider(provider, cfg) {
@@ -31,10 +38,9 @@ function normalizeAnthropicModelId(model) {
31
38
  if (!trimmed)
32
39
  return trimmed;
33
40
  const lower = trimmed.toLowerCase();
34
- if (lower === "opus-4.5")
35
- return "claude-opus-4-5";
36
- if (lower === "sonnet-4.5")
37
- return "claude-sonnet-4-5";
41
+ const aliased = ANTHROPIC_MODEL_ALIASES[lower];
42
+ if (aliased)
43
+ return aliased;
38
44
  return trimmed;
39
45
  }
40
46
  function normalizeProviderModelId(provider, model) {
@@ -1,7 +1,7 @@
1
1
  import fs from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { loadConfig } from "../config/config.js";
4
- import { resolveMoltbotAgentDir } from "./agent-paths.js";
4
+ import { resolvePoolbotAgentDir } from "./agent-paths.js";
5
5
  import { normalizeProviders, resolveImplicitBedrockProvider, resolveImplicitCopilotProvider, resolveImplicitProviders, } from "./models-config.providers.js";
6
6
  const DEFAULT_MODE = "merge";
7
7
  function isRecord(value) {
@@ -57,9 +57,9 @@ async function readJson(pathname) {
57
57
  return null;
58
58
  }
59
59
  }
60
- export async function ensureMoltbotModelsJson(config, agentDirOverride) {
60
+ export async function ensurePoolbotModelsJson(config, agentDirOverride) {
61
61
  const cfg = config ?? loadConfig();
62
- const agentDir = agentDirOverride?.trim() ? agentDirOverride.trim() : resolveMoltbotAgentDir();
62
+ const agentDir = agentDirOverride?.trim() ? agentDirOverride.trim() : resolvePoolbotAgentDir();
63
63
  const explicitProviders = (cfg.models?.providers ?? {});
64
64
  const implicitProviders = await resolveImplicitProviders({ agentDir });
65
65
  const providers = mergeProviders({