@poolzin/pool-bot 2026.1.39 → 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 (312) 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 +93 -5
  46. package/dist/agents/tools/web-search.js +1 -1
  47. package/dist/auto-reply/commands-registry.data.js +1 -1
  48. package/dist/auto-reply/reply/commands-context-report.js +2 -2
  49. package/dist/auto-reply/reply/commands-session.js +2 -2
  50. package/dist/auto-reply/reply/get-reply-run.js +14 -4
  51. package/dist/auto-reply/reply/groups.js +1 -1
  52. package/dist/auto-reply/reply/inbound-context.js +4 -0
  53. package/dist/auto-reply/reply/inbound-meta.js +130 -0
  54. package/dist/auto-reply/reply/untrusted-context.js +15 -0
  55. package/dist/auto-reply/status.js +1 -1
  56. package/dist/browser/client-fetch.js +1 -1
  57. package/dist/browser/config.js +1 -1
  58. package/dist/browser/extension-relay.js +3 -3
  59. package/dist/browser/server-context.js +2 -2
  60. package/dist/build-info.json +3 -3
  61. package/dist/canvas-host/a2ui.js +3 -3
  62. package/dist/channels/plugins/catalog.js +2 -2
  63. package/dist/channels/plugins/onboarding/imessage.js +1 -1
  64. package/dist/channels/plugins/onboarding/signal.js +1 -1
  65. package/dist/channels/plugins/onboarding/slack.js +4 -4
  66. package/dist/channels/plugins/onboarding/whatsapp.js +3 -3
  67. package/dist/channels/plugins/pairing-message.js +1 -1
  68. package/dist/cli/browser-cli-extension.js +2 -2
  69. package/dist/cli/docs-cli.js +1 -1
  70. package/dist/cli/gateway-cli/dev.js +1 -1
  71. package/dist/cli/memory-cli.js +25 -15
  72. package/dist/cli/nodes-cli/register.canvas.js +1 -1
  73. package/dist/cli/plugins-cli.js +1 -1
  74. package/dist/cli/run-main.js +2 -2
  75. package/dist/cli/security-cli.js +1 -1
  76. package/dist/cli/tagline.js +1 -1
  77. package/dist/cli/update-cli.js +4 -4
  78. package/dist/cli/webhooks-cli.js +5 -5
  79. package/dist/commands/agents.commands.add.js +1 -1
  80. package/dist/commands/auth-choice.apply.api-providers.js +305 -17
  81. package/dist/commands/auth-choice.apply.js +4 -1
  82. package/dist/commands/auth-choice.apply.plugin-provider.js +2 -2
  83. package/dist/commands/auth-choice.apply.xai.js +63 -0
  84. package/dist/commands/auth-choice.preferred-provider.js +7 -1
  85. package/dist/commands/configure.wizard.js +1 -1
  86. package/dist/commands/dashboard.js +1 -1
  87. package/dist/commands/docs.js +1 -1
  88. package/dist/commands/doctor-gateway-services.js +3 -3
  89. package/dist/commands/doctor-update.js +3 -3
  90. package/dist/commands/doctor.js +1 -1
  91. package/dist/commands/models/list.probe.js +2 -2
  92. package/dist/commands/models/list.registry.js +4 -4
  93. package/dist/commands/models/list.status-command.js +2 -2
  94. package/dist/commands/onboard-auth.config-core.js +366 -28
  95. package/dist/commands/onboard-auth.credentials.js +71 -9
  96. package/dist/commands/onboard-auth.js +3 -3
  97. package/dist/commands/onboard-auth.models.js +26 -24
  98. package/dist/commands/onboard-non-interactive/local/auth-choice.js +140 -6
  99. package/dist/commands/status-all/report-lines.js +1 -1
  100. package/dist/commands/status.command.js +1 -1
  101. package/dist/commands/uninstall.js +3 -3
  102. package/dist/compat/legacy-names.js +1 -1
  103. package/dist/config/io.js +3 -3
  104. package/dist/config/schema.js +1 -1
  105. package/dist/config/types.memory.js +1 -0
  106. package/dist/config/version.js +4 -4
  107. package/dist/daemon/constants.js +7 -7
  108. package/dist/daemon/inspect.js +6 -6
  109. package/dist/daemon/systemd-unit.js +1 -1
  110. package/dist/gateway/live-image-probe.js +1 -66
  111. package/dist/gateway/openai-http.js +2 -2
  112. package/dist/gateway/openresponses-http.js +4 -4
  113. package/dist/gateway/server-discovery.js +2 -2
  114. package/dist/gateway/server-http.js +1 -1
  115. package/dist/gateway/server.impl.js +2 -2
  116. package/dist/hooks/frontmatter.js +1 -1
  117. package/dist/hooks/hooks-status.js +1 -1
  118. package/dist/hooks/install.js +2 -2
  119. package/dist/hooks/loader.js +1 -1
  120. package/dist/hooks/workspace.js +3 -3
  121. package/dist/index.js +2 -2
  122. package/dist/infra/bonjour.js +3 -3
  123. package/dist/infra/path-env.js +3 -3
  124. package/dist/infra/provider-usage.fetch.minimax.js +1 -1
  125. package/dist/infra/restart.js +1 -1
  126. package/dist/infra/tailscale.js +1 -1
  127. package/dist/macos/relay.js +2 -2
  128. package/dist/media/input-files.js +1 -1
  129. package/dist/media/mime.js +4 -0
  130. package/dist/media/png-encode.js +74 -0
  131. package/dist/media-understanding/providers/image.js +2 -2
  132. package/dist/memory/backend-config.js +207 -0
  133. package/dist/memory/embeddings.js +1 -1
  134. package/dist/memory/manager.js +1 -0
  135. package/dist/memory/types.js +1 -0
  136. package/dist/node-host/runner.js +2 -2
  137. package/dist/pairing/pairing-messages.js +1 -1
  138. package/dist/plugins/discovery.js +1 -1
  139. package/dist/plugins/install.js +2 -2
  140. package/dist/plugins/update.js +1 -1
  141. package/dist/security/audit.js +2 -2
  142. package/dist/shared/text/reasoning-tags.js +52 -7
  143. package/dist/tailscale/detect.js +146 -0
  144. package/dist/telegram/bot-message-context.js +1 -1
  145. package/dist/test-helpers/workspace.js +11 -0
  146. package/dist/test-utils/channel-plugins.js +82 -0
  147. package/dist/test-utils/ports.js +73 -0
  148. package/dist/utils/shell-argv.js +61 -0
  149. package/dist/utils.js +10 -0
  150. package/dist/web/qr-image.js +1 -61
  151. package/dist/wizard/onboarding.finalize.js +7 -7
  152. package/dist/wizard/onboarding.js +3 -3
  153. package/docs/RELEASE_WORKFOTS_COMPARISON.md +3 -3
  154. package/docs/_config.yml +2 -2
  155. package/docs/_layouts/default.html +9 -9
  156. package/docs/concepts/typebox.md +1 -1
  157. package/docs/docs.json +1 -1
  158. package/docs/northflank.mdx +7 -7
  159. package/docs/railway.mdx +3 -3
  160. package/docs/render.mdx +5 -5
  161. package/docs/start/lore.md +2 -2
  162. package/extensions/bluebubbles/index.ts +2 -2
  163. package/extensions/bluebubbles/package.json +1 -1
  164. package/extensions/bluebubbles/src/accounts.ts +8 -8
  165. package/extensions/bluebubbles/src/actions.test.ts +22 -22
  166. package/extensions/bluebubbles/src/actions.ts +5 -5
  167. package/extensions/bluebubbles/src/attachments.ts +2 -2
  168. package/extensions/bluebubbles/src/channel.ts +16 -16
  169. package/extensions/bluebubbles/src/chat.ts +2 -2
  170. package/extensions/bluebubbles/src/media-send.ts +2 -2
  171. package/extensions/bluebubbles/src/monitor.test.ts +46 -46
  172. package/extensions/bluebubbles/src/monitor.ts +5 -5
  173. package/extensions/bluebubbles/src/onboarding.ts +7 -7
  174. package/extensions/bluebubbles/src/reactions.ts +2 -2
  175. package/extensions/bluebubbles/src/send.ts +2 -2
  176. package/extensions/copilot-proxy/README.md +1 -1
  177. package/extensions/copilot-proxy/package.json +1 -1
  178. package/extensions/diagnostics-otel/index.ts +2 -2
  179. package/extensions/diagnostics-otel/package.json +1 -1
  180. package/extensions/diagnostics-otel/src/service.ts +3 -3
  181. package/extensions/discord/index.ts +2 -2
  182. package/extensions/discord/package.json +1 -1
  183. package/extensions/google-antigravity-auth/README.md +1 -1
  184. package/extensions/google-antigravity-auth/index.ts +1 -1
  185. package/extensions/google-antigravity-auth/package.json +1 -1
  186. package/extensions/google-gemini-cli-auth/README.md +1 -1
  187. package/extensions/google-gemini-cli-auth/oauth.ts +1 -1
  188. package/extensions/google-gemini-cli-auth/package.json +1 -1
  189. package/extensions/googlechat/index.ts +3 -3
  190. package/extensions/googlechat/package.json +1 -1
  191. package/extensions/googlechat/src/accounts.ts +8 -8
  192. package/extensions/googlechat/src/actions.ts +6 -6
  193. package/extensions/googlechat/src/channel.ts +21 -21
  194. package/extensions/googlechat/src/monitor.ts +8 -8
  195. package/extensions/googlechat/src/onboarding.ts +10 -10
  196. package/extensions/imessage/index.ts +2 -2
  197. package/extensions/imessage/package.json +1 -1
  198. package/extensions/line/index.ts +2 -2
  199. package/extensions/line/package.json +1 -1
  200. package/extensions/line/src/card-command.ts +2 -2
  201. package/extensions/line/src/channel.logout.test.ts +4 -4
  202. package/extensions/line/src/channel.sendPayload.test.ts +8 -8
  203. package/extensions/line/src/channel.ts +3 -3
  204. package/extensions/llm-task/README.md +3 -3
  205. package/extensions/llm-task/index.ts +2 -2
  206. package/extensions/llm-task/package.json +1 -1
  207. package/extensions/llm-task/src/llm-task-tool.ts +4 -4
  208. package/extensions/lobster/README.md +6 -6
  209. package/extensions/lobster/index.ts +2 -2
  210. package/extensions/lobster/src/lobster-tool.test.ts +4 -4
  211. package/extensions/lobster/src/lobster-tool.ts +2 -2
  212. package/extensions/matrix/index.ts +2 -2
  213. package/extensions/matrix/package.json +1 -1
  214. package/extensions/matrix/src/matrix/client/config.ts +1 -1
  215. package/extensions/matrix/src/matrix/monitor/handler.ts +1 -1
  216. package/extensions/matrix/src/onboarding.ts +1 -1
  217. package/extensions/mattermost/index.ts +2 -2
  218. package/extensions/mattermost/package.json +1 -1
  219. package/extensions/mattermost/src/mattermost/accounts.ts +8 -8
  220. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +5 -5
  221. package/extensions/mattermost/src/mattermost/monitor.ts +2 -2
  222. package/extensions/mattermost/src/onboarding-helpers.ts +3 -3
  223. package/extensions/mattermost/src/onboarding.ts +2 -2
  224. package/extensions/memory-core/index.ts +2 -2
  225. package/extensions/memory-core/package.json +1 -1
  226. package/extensions/memory-lancedb/index.ts +3 -3
  227. package/extensions/memory-lancedb/package.json +1 -1
  228. package/extensions/msteams/index.ts +2 -2
  229. package/extensions/msteams/package.json +1 -1
  230. package/extensions/msteams/src/channel.directory.test.ts +2 -2
  231. package/extensions/msteams/src/channel.ts +2 -2
  232. package/extensions/msteams/src/graph-upload.ts +4 -4
  233. package/extensions/msteams/src/monitor-handler.ts +2 -2
  234. package/extensions/msteams/src/monitor.ts +2 -2
  235. package/extensions/msteams/src/onboarding.ts +9 -9
  236. package/extensions/msteams/src/reply-dispatcher.ts +2 -2
  237. package/extensions/msteams/src/send-context.ts +2 -2
  238. package/extensions/msteams/src/send.ts +4 -4
  239. package/extensions/nextcloud-talk/index.ts +2 -2
  240. package/extensions/nextcloud-talk/package.json +1 -1
  241. package/extensions/nextcloud-talk/src/channel.ts +7 -7
  242. package/extensions/nextcloud-talk/src/inbound.ts +7 -7
  243. package/extensions/nextcloud-talk/src/onboarding.ts +1 -1
  244. package/extensions/nostr/README.md +2 -2
  245. package/extensions/nostr/index.ts +5 -5
  246. package/extensions/nostr/package.json +1 -1
  247. package/extensions/nostr/src/types.ts +4 -4
  248. package/extensions/open-prose/index.ts +2 -2
  249. package/extensions/qwen-portal-auth/README.md +1 -1
  250. package/extensions/signal/index.ts +2 -2
  251. package/extensions/signal/package.json +1 -1
  252. package/extensions/slack/index.ts +2 -2
  253. package/extensions/slack/package.json +1 -1
  254. package/extensions/telegram/index.ts +2 -2
  255. package/extensions/telegram/package.json +1 -1
  256. package/extensions/telegram/src/channel.ts +2 -2
  257. package/extensions/tlon/README.md +2 -2
  258. package/extensions/tlon/index.ts +2 -2
  259. package/extensions/tlon/package.json +1 -1
  260. package/extensions/tlon/src/channel.ts +13 -13
  261. package/extensions/tlon/src/monitor/index.ts +3 -3
  262. package/extensions/tlon/src/onboarding.ts +3 -3
  263. package/extensions/tlon/src/types.ts +3 -3
  264. package/extensions/twitch/README.md +1 -1
  265. package/extensions/twitch/index.ts +2 -2
  266. package/extensions/twitch/package.json +1 -1
  267. package/extensions/twitch/src/config.ts +3 -3
  268. package/extensions/twitch/src/monitor.ts +3 -3
  269. package/extensions/twitch/src/onboarding.ts +9 -9
  270. package/extensions/twitch/src/outbound.test.ts +2 -2
  271. package/extensions/twitch/src/plugin.test.ts +2 -2
  272. package/extensions/twitch/src/plugin.ts +8 -8
  273. package/extensions/twitch/src/send.test.ts +2 -2
  274. package/extensions/twitch/src/send.ts +4 -4
  275. package/extensions/twitch/src/token.test.ts +8 -8
  276. package/extensions/twitch/src/token.ts +3 -3
  277. package/extensions/twitch/src/twitch-client.ts +3 -3
  278. package/extensions/twitch/src/types.ts +3 -3
  279. package/extensions/twitch/src/utils/markdown.ts +1 -1
  280. package/extensions/voice-call/README.md +3 -3
  281. package/extensions/voice-call/package.json +1 -1
  282. package/extensions/voice-call/src/core-bridge.ts +2 -2
  283. package/extensions/voice-call/src/response-generator.ts +1 -1
  284. package/extensions/whatsapp/index.ts +2 -2
  285. package/extensions/whatsapp/package.json +1 -1
  286. package/extensions/zalo/README.md +1 -1
  287. package/extensions/zalo/index.ts +2 -2
  288. package/extensions/zalo/package.json +1 -1
  289. package/extensions/zalo/src/accounts.ts +8 -8
  290. package/extensions/zalo/src/actions.ts +4 -4
  291. package/extensions/zalo/src/channel.directory.test.ts +2 -2
  292. package/extensions/zalo/src/channel.ts +18 -18
  293. package/extensions/zalo/src/monitor.ts +9 -9
  294. package/extensions/zalo/src/monitor.webhook.test.ts +2 -2
  295. package/extensions/zalo/src/onboarding.ts +24 -24
  296. package/extensions/zalo/src/send.ts +2 -2
  297. package/extensions/zalouser/README.md +2 -2
  298. package/extensions/zalouser/index.ts +2 -2
  299. package/extensions/zalouser/package.json +1 -1
  300. package/extensions/zalouser/src/accounts.ts +9 -9
  301. package/extensions/zalouser/src/channel.ts +24 -24
  302. package/extensions/zalouser/src/monitor.ts +4 -4
  303. package/extensions/zalouser/src/onboarding.ts +28 -28
  304. package/package.json +13 -251
  305. package/skills/nano-banana-pro/scripts/generate_image.py +1 -1
  306. package/skills/tmux/scripts/find-sessions.sh +1 -1
  307. package/CHANGELOG.md +0 -102
  308. package/README-header.png +0 -0
  309. package/git-hooks/pre-commit +0 -4
  310. package/scripts/format-staged.js +0 -148
  311. package/scripts/postinstall.js +0 -300
  312. package/scripts/setup-git-hooks.js +0 -96
@@ -2,13 +2,17 @@ import { DEFAULT_COPILOT_API_BASE_URL, resolveCopilotApiToken, } from "../provid
2
2
  import { ensureAuthProfileStore, listProfilesForProvider } from "./auth-profiles.js";
3
3
  import { resolveAwsSdkEnvVarName, resolveEnvApiKey } from "./model-auth.js";
4
4
  import { discoverBedrockModels } from "./bedrock-discovery.js";
5
+ import { buildCloudflareAiGatewayModelDefinition, resolveCloudflareAiGatewayBaseUrl, } from "./cloudflare-ai-gateway.js";
5
6
  import { buildSyntheticModelDefinition, SYNTHETIC_BASE_URL, SYNTHETIC_MODEL_CATALOG, } from "./synthetic-models.js";
7
+ import { TOGETHER_BASE_URL, TOGETHER_MODEL_CATALOG, buildTogetherModelDefinition, } from "./together-models.js";
6
8
  import { discoverVeniceModels, VENICE_BASE_URL } from "./venice-models.js";
7
- const MINIMAX_API_BASE_URL = "https://api.minimax.io/anthropic";
9
+ const MINIMAX_API_BASE_URL = "https://api.minimax.chat/v1";
10
+ const MINIMAX_PORTAL_BASE_URL = "https://api.minimax.io/anthropic";
8
11
  const MINIMAX_DEFAULT_MODEL_ID = "MiniMax-M2.1";
9
12
  const MINIMAX_DEFAULT_VISION_MODEL_ID = "MiniMax-VL-01";
10
13
  const MINIMAX_DEFAULT_CONTEXT_WINDOW = 200000;
11
14
  const MINIMAX_DEFAULT_MAX_TOKENS = 8192;
15
+ const MINIMAX_OAUTH_PLACEHOLDER = "minimax-oauth";
12
16
  // Pricing: MiniMax doesn't publish public rates. Override in models.json for accurate costs.
13
17
  const MINIMAX_API_COST = {
14
18
  input: 15,
@@ -17,7 +21,7 @@ const MINIMAX_API_COST = {
17
21
  cacheWrite: 10,
18
22
  };
19
23
  const MOONSHOT_BASE_URL = "https://api.moonshot.ai/v1";
20
- const MOONSHOT_DEFAULT_MODEL_ID = "kimi-k2-0905-preview";
24
+ const MOONSHOT_DEFAULT_MODEL_ID = "kimi-k2.5";
21
25
  const MOONSHOT_DEFAULT_CONTEXT_WINDOW = 256000;
22
26
  const MOONSHOT_DEFAULT_MAX_TOKENS = 8192;
23
27
  const MOONSHOT_DEFAULT_COST = {
@@ -26,13 +30,11 @@ const MOONSHOT_DEFAULT_COST = {
26
30
  cacheRead: 0,
27
31
  cacheWrite: 0,
28
32
  };
29
- const KIMI_CODE_BASE_URL = "https://api.kimi.com/coding/v1";
30
- const KIMI_CODE_MODEL_ID = "kimi-for-coding";
31
- const KIMI_CODE_CONTEXT_WINDOW = 262144;
32
- const KIMI_CODE_MAX_TOKENS = 32768;
33
- const KIMI_CODE_HEADERS = { "User-Agent": "KimiCLI/0.77" };
34
- const KIMI_CODE_COMPAT = { supportsDeveloperRole: false };
35
- const KIMI_CODE_DEFAULT_COST = {
33
+ const XIAOMI_BASE_URL = "https://api.xiaomimimo.com/anthropic";
34
+ export const XIAOMI_DEFAULT_MODEL_ID = "mimo-v2-flash";
35
+ const XIAOMI_DEFAULT_CONTEXT_WINDOW = 262144;
36
+ const XIAOMI_DEFAULT_MAX_TOKENS = 8192;
37
+ const XIAOMI_DEFAULT_COST = {
36
38
  input: 0,
37
39
  output: 0,
38
40
  cacheRead: 0,
@@ -58,6 +60,16 @@ const OLLAMA_DEFAULT_COST = {
58
60
  cacheRead: 0,
59
61
  cacheWrite: 0,
60
62
  };
63
+ export const QIANFAN_BASE_URL = "https://qianfan.baidubce.com/v2";
64
+ export const QIANFAN_DEFAULT_MODEL_ID = "deepseek-v3.2";
65
+ const QIANFAN_DEFAULT_CONTEXT_WINDOW = 98304;
66
+ const QIANFAN_DEFAULT_MAX_TOKENS = 32768;
67
+ const QIANFAN_DEFAULT_COST = {
68
+ input: 0,
69
+ output: 0,
70
+ cacheRead: 0,
71
+ cacheWrite: 0,
72
+ };
61
73
  async function discoverOllamaModels() {
62
74
  // Skip Ollama discovery in test environments
63
75
  if (process.env.VITEST || process.env.NODE_ENV === "test") {
@@ -87,6 +99,11 @@ async function discoverOllamaModels() {
87
99
  cost: OLLAMA_DEFAULT_COST,
88
100
  contextWindow: OLLAMA_DEFAULT_CONTEXT_WINDOW,
89
101
  maxTokens: OLLAMA_DEFAULT_MAX_TOKENS,
102
+ // Disable streaming by default for Ollama to avoid SDK issue #1205
103
+ // See: https://github.com/badlogic/pi-mono/issues/1205
104
+ params: {
105
+ streaming: false,
106
+ },
90
107
  };
91
108
  });
92
109
  }
@@ -198,7 +215,7 @@ export function normalizeProviders(params) {
198
215
  function buildMinimaxProvider() {
199
216
  return {
200
217
  baseUrl: MINIMAX_API_BASE_URL,
201
- api: "anthropic-messages",
218
+ api: "openai-completions",
202
219
  models: [
203
220
  {
204
221
  id: MINIMAX_DEFAULT_MODEL_ID,
@@ -228,7 +245,7 @@ function buildMoonshotProvider() {
228
245
  models: [
229
246
  {
230
247
  id: MOONSHOT_DEFAULT_MODEL_ID,
231
- name: "Kimi K2 0905 Preview",
248
+ name: "Kimi K2.5",
232
249
  reasoning: false,
233
250
  input: ["text"],
234
251
  cost: MOONSHOT_DEFAULT_COST,
@@ -238,25 +255,6 @@ function buildMoonshotProvider() {
238
255
  ],
239
256
  };
240
257
  }
241
- function buildKimiCodeProvider() {
242
- return {
243
- baseUrl: KIMI_CODE_BASE_URL,
244
- api: "openai-completions",
245
- models: [
246
- {
247
- id: KIMI_CODE_MODEL_ID,
248
- name: "Kimi For Coding",
249
- reasoning: true,
250
- input: ["text"],
251
- cost: KIMI_CODE_DEFAULT_COST,
252
- contextWindow: KIMI_CODE_CONTEXT_WINDOW,
253
- maxTokens: KIMI_CODE_MAX_TOKENS,
254
- headers: KIMI_CODE_HEADERS,
255
- compat: KIMI_CODE_COMPAT,
256
- },
257
- ],
258
- };
259
- }
260
258
  function buildQwenPortalProvider() {
261
259
  return {
262
260
  baseUrl: QWEN_PORTAL_BASE_URL,
@@ -306,6 +304,73 @@ async function buildOllamaProvider() {
306
304
  models,
307
305
  };
308
306
  }
307
+ function buildMinimaxPortalProvider() {
308
+ return {
309
+ baseUrl: MINIMAX_PORTAL_BASE_URL,
310
+ api: "anthropic-messages",
311
+ models: [
312
+ {
313
+ id: MINIMAX_DEFAULT_MODEL_ID,
314
+ name: "MiniMax M2.1",
315
+ reasoning: false,
316
+ input: ["text"],
317
+ cost: MINIMAX_API_COST,
318
+ contextWindow: MINIMAX_DEFAULT_CONTEXT_WINDOW,
319
+ maxTokens: MINIMAX_DEFAULT_MAX_TOKENS,
320
+ },
321
+ ],
322
+ };
323
+ }
324
+ export function buildXiaomiProvider() {
325
+ return {
326
+ baseUrl: XIAOMI_BASE_URL,
327
+ api: "anthropic-messages",
328
+ models: [
329
+ {
330
+ id: XIAOMI_DEFAULT_MODEL_ID,
331
+ name: "Xiaomi MiMo V2 Flash",
332
+ reasoning: false,
333
+ input: ["text"],
334
+ cost: XIAOMI_DEFAULT_COST,
335
+ contextWindow: XIAOMI_DEFAULT_CONTEXT_WINDOW,
336
+ maxTokens: XIAOMI_DEFAULT_MAX_TOKENS,
337
+ },
338
+ ],
339
+ };
340
+ }
341
+ function buildTogetherProvider() {
342
+ return {
343
+ baseUrl: TOGETHER_BASE_URL,
344
+ api: "openai-completions",
345
+ models: TOGETHER_MODEL_CATALOG.map(buildTogetherModelDefinition),
346
+ };
347
+ }
348
+ export function buildQianfanProvider() {
349
+ return {
350
+ baseUrl: QIANFAN_BASE_URL,
351
+ api: "openai-completions",
352
+ models: [
353
+ {
354
+ id: QIANFAN_DEFAULT_MODEL_ID,
355
+ name: "DEEPSEEK V3.2",
356
+ reasoning: true,
357
+ input: ["text"],
358
+ cost: QIANFAN_DEFAULT_COST,
359
+ contextWindow: QIANFAN_DEFAULT_CONTEXT_WINDOW,
360
+ maxTokens: QIANFAN_DEFAULT_MAX_TOKENS,
361
+ },
362
+ {
363
+ id: "ernie-5.0-thinking-preview",
364
+ name: "ERNIE-5.0-Thinking-Preview",
365
+ reasoning: true,
366
+ input: ["text", "image"],
367
+ cost: QIANFAN_DEFAULT_COST,
368
+ contextWindow: 119000,
369
+ maxTokens: 64000,
370
+ },
371
+ ],
372
+ };
373
+ }
309
374
  export async function resolveImplicitProviders(params) {
310
375
  const providers = {};
311
376
  const authStore = ensureAuthProfileStore(params.agentDir, {
@@ -316,16 +381,18 @@ export async function resolveImplicitProviders(params) {
316
381
  if (minimaxKey) {
317
382
  providers.minimax = { ...buildMinimaxProvider(), apiKey: minimaxKey };
318
383
  }
384
+ const minimaxOauthProfile = listProfilesForProvider(authStore, "minimax-portal");
385
+ if (minimaxOauthProfile.length > 0) {
386
+ providers["minimax-portal"] = {
387
+ ...buildMinimaxPortalProvider(),
388
+ apiKey: MINIMAX_OAUTH_PLACEHOLDER,
389
+ };
390
+ }
319
391
  const moonshotKey = resolveEnvApiKeyVarName("moonshot") ??
320
392
  resolveApiKeyFromProfiles({ provider: "moonshot", store: authStore });
321
393
  if (moonshotKey) {
322
394
  providers.moonshot = { ...buildMoonshotProvider(), apiKey: moonshotKey };
323
395
  }
324
- const kimiCodeKey = resolveEnvApiKeyVarName("kimi-code") ??
325
- resolveApiKeyFromProfiles({ provider: "kimi-code", store: authStore });
326
- if (kimiCodeKey) {
327
- providers["kimi-code"] = { ...buildKimiCodeProvider(), apiKey: kimiCodeKey };
328
- }
329
396
  const syntheticKey = resolveEnvApiKeyVarName("synthetic") ??
330
397
  resolveApiKeyFromProfiles({ provider: "synthetic", store: authStore });
331
398
  if (syntheticKey) {
@@ -343,12 +410,53 @@ export async function resolveImplicitProviders(params) {
343
410
  apiKey: QWEN_PORTAL_OAUTH_PLACEHOLDER,
344
411
  };
345
412
  }
413
+ const xiaomiKey = resolveEnvApiKeyVarName("xiaomi") ??
414
+ resolveApiKeyFromProfiles({ provider: "xiaomi", store: authStore });
415
+ if (xiaomiKey) {
416
+ providers.xiaomi = { ...buildXiaomiProvider(), apiKey: xiaomiKey };
417
+ }
418
+ const cloudflareProfiles = listProfilesForProvider(authStore, "cloudflare-ai-gateway");
419
+ for (const profileId of cloudflareProfiles) {
420
+ const cred = authStore.profiles[profileId];
421
+ if (cred?.type !== "api_key")
422
+ continue;
423
+ const accountId = cred.metadata?.accountId?.trim();
424
+ const gatewayId = cred.metadata?.gatewayId?.trim();
425
+ if (!accountId || !gatewayId)
426
+ continue;
427
+ const baseUrl = resolveCloudflareAiGatewayBaseUrl({ accountId, gatewayId });
428
+ if (!baseUrl)
429
+ continue;
430
+ const apiKey = resolveEnvApiKeyVarName("cloudflare-ai-gateway") ?? cred.key?.trim() ?? "";
431
+ if (!apiKey)
432
+ continue;
433
+ providers["cloudflare-ai-gateway"] = {
434
+ baseUrl,
435
+ api: "anthropic-messages",
436
+ apiKey,
437
+ models: [buildCloudflareAiGatewayModelDefinition()],
438
+ };
439
+ break;
440
+ }
346
441
  // Ollama provider - only add if explicitly configured
347
442
  const ollamaKey = resolveEnvApiKeyVarName("ollama") ??
348
443
  resolveApiKeyFromProfiles({ provider: "ollama", store: authStore });
349
444
  if (ollamaKey) {
350
445
  providers.ollama = { ...(await buildOllamaProvider()), apiKey: ollamaKey };
351
446
  }
447
+ const togetherKey = resolveEnvApiKeyVarName("together") ??
448
+ resolveApiKeyFromProfiles({ provider: "together", store: authStore });
449
+ if (togetherKey) {
450
+ providers.together = {
451
+ ...buildTogetherProvider(),
452
+ apiKey: togetherKey,
453
+ };
454
+ }
455
+ const qianfanKey = resolveEnvApiKeyVarName("qianfan") ??
456
+ resolveApiKeyFromProfiles({ provider: "qianfan", store: authStore });
457
+ if (qianfanKey) {
458
+ providers.qianfan = { ...buildQianfanProvider(), apiKey: qianfanKey };
459
+ }
352
460
  return providers;
353
461
  }
354
462
  export async function resolveImplicitCopilotProvider(params) {
@@ -384,15 +492,15 @@ export async function resolveImplicitCopilotProvider(params) {
384
492
  }
385
493
  // pi-coding-agent's ModelRegistry marks a model "available" only if its
386
494
  // `AuthStorage` has auth configured for that provider (via auth.json/env/etc).
387
- // Our Copilot auth lives in Moltbot's auth-profiles store instead, so we also
495
+ // Our Copilot auth lives in Poolbot's auth-profiles store instead, so we also
388
496
  // write a runtime-only auth.json entry for pi-coding-agent to pick up.
389
497
  //
390
- // This is safe because it's (1) within Moltbot's agent dir, (2) contains the
498
+ // This is safe because it's (1) within Poolbot's agent dir, (2) contains the
391
499
  // GitHub token (not the exchanged Copilot token), and (3) matches existing
392
500
  // patterns for OAuth-like providers in pi-coding-agent.
393
501
  // Note: we deliberately do not write pi-coding-agent's `auth.json` here.
394
- // Moltbot uses its own auth store and exchanges tokens at runtime.
395
- // `models list` uses Moltbot's auth heuristics for availability.
502
+ // Poolbot uses its own auth store and exchanges tokens at runtime.
503
+ // `models list` uses Poolbot's auth heuristics for availability.
396
504
  // We intentionally do NOT define custom models for Copilot in models.json.
397
505
  // pi-coding-agent treats providers with models as replacements requiring apiKey.
398
506
  // We only override baseUrl; the model list comes from pi-ai built-ins.
@@ -41,7 +41,7 @@ function hasFollowingNonThinkingBlock(content, index) {
41
41
  * OpenAI Responses API can reject transcripts that contain a standalone `reasoning` item id
42
42
  * without the required following item.
43
43
  *
44
- * Moltbot persists provider-specific reasoning metadata in `thinkingSignature`; if that metadata
44
+ * Poolbot persists provider-specific reasoning metadata in `thinkingSignature`; if that metadata
45
45
  * is incomplete, drop the block to keep history usable.
46
46
  */
47
47
  export function downgradeOpenAIReasoningBlocks(messages) {
@@ -13,16 +13,16 @@ import { normalizeMessageChannel } from "../../utils/message-channel.js";
13
13
  import { isSubagentSessionKey } from "../../routing/session-key.js";
14
14
  import { isReasoningTagProvider } from "../../utils/provider-utils.js";
15
15
  import { resolveUserPath } from "../../utils.js";
16
- import { resolveMoltbotAgentDir } from "../agent-paths.js";
16
+ import { resolvePoolbotAgentDir } from "../agent-paths.js";
17
17
  import { resolveSessionAgentIds } from "../agent-scope.js";
18
18
  import { makeBootstrapWarn, resolveBootstrapContextForRun } from "../bootstrap-files.js";
19
- import { resolveMoltbotDocsPath } from "../docs-path.js";
19
+ import { resolvePoolbotDocsPath } from "../docs-path.js";
20
20
  import { DEFAULT_MODEL, DEFAULT_PROVIDER } from "../defaults.js";
21
21
  import { getApiKeyForModel, resolveModelAuthMode } from "../model-auth.js";
22
- import { ensureMoltbotModelsJson } from "../models-config.js";
22
+ import { ensurePoolbotModelsJson } from "../models-config.js";
23
23
  import { ensureSessionHeader, validateAnthropicTurns, validateGeminiTurns, } from "../pi-embedded-helpers.js";
24
24
  import { ensurePiCompactionReserveTokens, resolveCompactionReserveTokensFloor, } from "../pi-settings.js";
25
- import { createMoltbotCodingTools } from "../pi-tools.js";
25
+ import { createPoolbotCodingTools } from "../pi-tools.js";
26
26
  import { resolveSandboxContext } from "../sandbox.js";
27
27
  import { guardSessionManager } from "../session-tool-result-guard-wrapper.js";
28
28
  import { resolveTranscriptPolicy } from "../transcript-policy.js";
@@ -50,8 +50,8 @@ export async function compactEmbeddedPiSessionDirect(params) {
50
50
  const prevCwd = process.cwd();
51
51
  const provider = (params.provider ?? DEFAULT_PROVIDER).trim() || DEFAULT_PROVIDER;
52
52
  const modelId = (params.model ?? DEFAULT_MODEL).trim() || DEFAULT_MODEL;
53
- const agentDir = params.agentDir ?? resolveMoltbotAgentDir();
54
- await ensureMoltbotModelsJson(params.config, agentDir);
53
+ const agentDir = params.agentDir ?? resolvePoolbotAgentDir();
54
+ await ensurePoolbotModelsJson(params.config, agentDir);
55
55
  const { model, error, authStorage, modelRegistry } = resolveModel(provider, modelId, agentDir, params.config);
56
56
  if (!model) {
57
57
  return {
@@ -139,7 +139,7 @@ export async function compactEmbeddedPiSessionDirect(params) {
139
139
  warn: makeBootstrapWarn({ sessionLabel, warn: (message) => log.warn(message) }),
140
140
  });
141
141
  const runAbortController = new AbortController();
142
- const toolsRaw = createMoltbotCodingTools({
142
+ const toolsRaw = createPoolbotCodingTools({
143
143
  exec: {
144
144
  ...resolveExecToolDefaults(params.config),
145
145
  elevated: params.bashElevated,
@@ -240,7 +240,7 @@ export async function compactEmbeddedPiSessionDirect(params) {
240
240
  });
241
241
  const isDefaultAgent = sessionAgentId === defaultAgentId;
242
242
  const promptMode = isSubagentSessionKey(params.sessionKey) ? "minimal" : "full";
243
- const docsPath = await resolveMoltbotDocsPath({
243
+ const docsPath = await resolvePoolbotDocsPath({
244
244
  workspaceDir: effectiveWorkspace,
245
245
  argv1: process.argv[1],
246
246
  cwd: process.cwd(),
@@ -1,5 +1,5 @@
1
1
  import { discoverAuthStorage, discoverModels } from "@mariozechner/pi-coding-agent";
2
- import { resolveMoltbotAgentDir } from "../agent-paths.js";
2
+ import { resolvePoolbotAgentDir } from "../agent-paths.js";
3
3
  import { DEFAULT_CONTEXT_TOKENS } from "../defaults.js";
4
4
  import { normalizeModelCompat } from "../model-compat.js";
5
5
  import { normalizeProviderId } from "../model-selection.js";
@@ -28,7 +28,7 @@ export function buildModelAliasLines(cfg) {
28
28
  .map((entry) => `- ${entry.alias}: ${entry.model}`);
29
29
  }
30
30
  export function resolveModel(provider, modelId, agentDir, cfg) {
31
- const resolvedAgentDir = agentDir ?? resolveMoltbotAgentDir();
31
+ const resolvedAgentDir = agentDir ?? resolvePoolbotAgentDir();
32
32
  const authStorage = discoverAuthStorage(resolvedAgentDir);
33
33
  const modelRegistry = discoverModels(authStorage, resolvedAgentDir);
34
34
  const model = modelRegistry.find(provider, modelId);
@@ -15,15 +15,15 @@ import { isSubagentSessionKey } from "../../../routing/session-key.js";
15
15
  import { resolveUserPath } from "../../../utils.js";
16
16
  import { createCacheTrace } from "../../cache-trace.js";
17
17
  import { createAnthropicPayloadLogger } from "../../anthropic-payload-log.js";
18
- import { resolveMoltbotAgentDir } from "../../agent-paths.js";
18
+ import { resolvePoolbotAgentDir } from "../../agent-paths.js";
19
19
  import { resolveSessionAgentIds } from "../../agent-scope.js";
20
20
  import { makeBootstrapWarn, resolveBootstrapContextForRun } from "../../bootstrap-files.js";
21
- import { resolveMoltbotDocsPath } from "../../docs-path.js";
21
+ import { resolvePoolbotDocsPath } from "../../docs-path.js";
22
22
  import { resolveModelAuthMode } from "../../model-auth.js";
23
23
  import { isCloudCodeAssistFormatError, resolveBootstrapMaxChars, validateAnthropicTurns, validateGeminiTurns, } from "../../pi-embedded-helpers.js";
24
24
  import { subscribeEmbeddedPiSession } from "../../pi-embedded-subscribe.js";
25
25
  import { ensurePiCompactionReserveTokens, resolveCompactionReserveTokensFloor, } from "../../pi-settings.js";
26
- import { createMoltbotCodingTools } from "../../pi-tools.js";
26
+ import { createPoolbotCodingTools } from "../../pi-tools.js";
27
27
  import { resolveSandboxContext } from "../../sandbox.js";
28
28
  import { guardSessionManager } from "../../session-tool-result-guard-wrapper.js";
29
29
  import { resolveTranscriptPolicy } from "../../transcript-policy.js";
@@ -141,12 +141,12 @@ export async function runEmbeddedAttempt(params) {
141
141
  const workspaceNotes = hookAdjustedBootstrapFiles.some((file) => file.name === DEFAULT_BOOTSTRAP_FILENAME && !file.missing)
142
142
  ? ["Reminder: commit your changes in this workspace after edits."]
143
143
  : undefined;
144
- const agentDir = params.agentDir ?? resolveMoltbotAgentDir();
144
+ const agentDir = params.agentDir ?? resolvePoolbotAgentDir();
145
145
  // Check if the model supports native image input
146
146
  const modelHasVision = params.model.input?.includes("image") ?? false;
147
147
  const toolsRaw = params.disableTools
148
148
  ? []
149
- : createMoltbotCodingTools({
149
+ : createPoolbotCodingTools({
150
150
  exec: {
151
151
  ...params.execOverrides,
152
152
  elevated: params.bashElevated,
@@ -267,7 +267,7 @@ export async function runEmbeddedAttempt(params) {
267
267
  });
268
268
  const isDefaultAgent = sessionAgentId === defaultAgentId;
269
269
  const promptMode = isSubagentSessionKey(params.sessionKey) ? "minimal" : "full";
270
- const docsPath = await resolveMoltbotDocsPath({
270
+ const docsPath = await resolvePoolbotDocsPath({
271
271
  workspaceDir: effectiveWorkspace,
272
272
  argv1: process.argv[1],
273
273
  cwd: process.cwd(),
@@ -2,14 +2,14 @@ import fs from "node:fs/promises";
2
2
  import { enqueueCommandInLane } from "../../process/command-queue.js";
3
3
  import { resolveUserPath } from "../../utils.js";
4
4
  import { isMarkdownCapableMessageChannel } from "../../utils/message-channel.js";
5
- import { resolveMoltbotAgentDir } from "../agent-paths.js";
5
+ import { resolvePoolbotAgentDir } from "../agent-paths.js";
6
6
  import { isProfileInCooldown, markAuthProfileFailure, markAuthProfileGood, markAuthProfileUsed, } from "../auth-profiles.js";
7
7
  import { CONTEXT_WINDOW_HARD_MIN_TOKENS, CONTEXT_WINDOW_WARN_BELOW_TOKENS, evaluateContextWindowGuard, resolveContextWindowInfo, } from "../context-window-guard.js";
8
8
  import { DEFAULT_CONTEXT_TOKENS, DEFAULT_MODEL, DEFAULT_PROVIDER } from "../defaults.js";
9
9
  import { FailoverError, resolveFailoverStatus } from "../failover-error.js";
10
10
  import { ensureAuthProfileStore, getApiKeyForModel, resolveAuthProfileOrder, } from "../model-auth.js";
11
11
  import { normalizeProviderId } from "../model-selection.js";
12
- import { ensureMoltbotModelsJson } from "../models-config.js";
12
+ import { ensurePoolbotModelsJson } from "../models-config.js";
13
13
  import { classifyFailoverReason, formatAssistantErrorText, isAuthAssistantError, isCompactionFailureError, isContextOverflowError, isFailoverAssistantError, isFailoverErrorMessage, parseImageDimensionError, isRateLimitAssistantError, isTimeoutErrorMessage, pickFallbackThinkingLevel, } from "../pi-embedded-helpers.js";
14
14
  import { normalizeUsage } from "../usage.js";
15
15
  import { compactEmbeddedPiSessionDirect } from "./compact.js";
@@ -46,9 +46,9 @@ export async function runEmbeddedPiAgent(params) {
46
46
  const prevCwd = process.cwd();
47
47
  const provider = (params.provider ?? DEFAULT_PROVIDER).trim() || DEFAULT_PROVIDER;
48
48
  const modelId = (params.model ?? DEFAULT_MODEL).trim() || DEFAULT_MODEL;
49
- const agentDir = params.agentDir ?? resolveMoltbotAgentDir();
49
+ const agentDir = params.agentDir ?? resolvePoolbotAgentDir();
50
50
  const fallbackConfigured = (params.config?.agents?.defaults?.model?.fallbacks?.length ?? 0) > 0;
51
- await ensureMoltbotModelsJson(params.config, agentDir);
51
+ await ensurePoolbotModelsJson(params.config, agentDir);
52
52
  const { model, error, authStorage, modelRegistry } = resolveModel(provider, modelId, agentDir, params.config);
53
53
  if (!model) {
54
54
  throw new Error(error ?? `Unknown model: ${provider}/${modelId}`);