@poolzin/pool-bot 2026.1.39 → 2026.2.1

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 (511) 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/bash-tools.exec.js +76 -25
  11. package/dist/agents/cli-runner/helpers.js +10 -12
  12. package/dist/agents/cli-runner.js +2 -2
  13. package/dist/agents/cloudflare-ai-gateway.js +31 -0
  14. package/dist/agents/compaction.js +16 -2
  15. package/dist/agents/context-window-guard.js +13 -10
  16. package/dist/agents/context.js +4 -4
  17. package/dist/agents/docs-path.js +1 -1
  18. package/dist/agents/identity.js +47 -7
  19. package/dist/agents/memory-search.js +25 -8
  20. package/dist/agents/minimax-vlm.js +1 -1
  21. package/dist/agents/model-auth.js +12 -1
  22. package/dist/agents/model-catalog.js +4 -4
  23. package/dist/agents/model-selection.js +31 -4
  24. package/dist/agents/models-config.js +3 -3
  25. package/dist/agents/models-config.providers.js +147 -39
  26. package/dist/agents/pi-embedded-block-chunker.js +117 -42
  27. package/dist/agents/pi-embedded-helpers/errors.js +183 -78
  28. package/dist/agents/pi-embedded-helpers/openai.js +1 -1
  29. package/dist/agents/pi-embedded-helpers.js +1 -1
  30. package/dist/agents/pi-embedded-runner/compact.js +9 -8
  31. package/dist/agents/pi-embedded-runner/model.js +63 -4
  32. package/dist/agents/pi-embedded-runner/run/attempt.js +27 -17
  33. package/dist/agents/pi-embedded-runner/run.js +203 -50
  34. package/dist/agents/pi-embedded-runner/system-prompt.js +10 -2
  35. package/dist/agents/pi-embedded-runner/tool-result-truncation.js +275 -0
  36. package/dist/agents/pi-embedded-runner/utils.js +1 -1
  37. package/dist/agents/pi-embedded-subscribe.js +118 -29
  38. package/dist/agents/pi-model-discovery.js +10 -0
  39. package/dist/agents/pi-tool-definition-adapter.js +50 -9
  40. package/dist/agents/pi-tools.before-tool-call.js +67 -0
  41. package/dist/agents/pi-tools.js +20 -10
  42. package/dist/agents/pi-tools.read.js +2 -2
  43. package/dist/agents/poolbot-tools.js +15 -10
  44. package/dist/agents/sandbox-paths.js +31 -0
  45. package/dist/agents/session-file-repair.js +83 -0
  46. package/dist/agents/session-tool-result-guard.js +94 -15
  47. package/dist/agents/session-transcript-repair.js +68 -0
  48. package/dist/agents/shell-utils.js +51 -0
  49. package/dist/agents/skills/bundled-context.js +23 -0
  50. package/dist/agents/skills/bundled-dir.js +41 -7
  51. package/dist/agents/skills/frontmatter.js +1 -1
  52. package/dist/agents/skills/workspace.js +2 -2
  53. package/dist/agents/skills-install.js +60 -23
  54. package/dist/agents/subagent-announce.js +79 -34
  55. package/dist/agents/system-prompt.js +28 -4
  56. package/dist/agents/together-models.js +127 -0
  57. package/dist/agents/tool-images.js +1 -1
  58. package/dist/agents/tool-policy.conformance.js +14 -0
  59. package/dist/agents/tool-policy.js +25 -1
  60. package/dist/agents/tools/browser-tool.js +3 -3
  61. package/dist/agents/tools/cron-tool.js +166 -19
  62. package/dist/agents/tools/discord-actions-presence.js +78 -0
  63. package/dist/agents/tools/image-tool.js +2 -2
  64. package/dist/agents/tools/memory-tool.js +93 -5
  65. package/dist/agents/tools/message-tool.js +56 -2
  66. package/dist/agents/tools/sessions-history-tool.js +69 -1
  67. package/dist/agents/tools/web-search.js +211 -42
  68. package/dist/agents/usage.js +23 -1
  69. package/dist/agents/workspace-run.js +67 -0
  70. package/dist/agents/workspace-templates.js +44 -0
  71. package/dist/auto-reply/command-auth.js +121 -6
  72. package/dist/auto-reply/commands-registry.data.js +1 -1
  73. package/dist/auto-reply/envelope.js +50 -72
  74. package/dist/auto-reply/reply/commands-compact.js +1 -0
  75. package/dist/auto-reply/reply/commands-context-report.js +3 -2
  76. package/dist/auto-reply/reply/commands-context.js +1 -0
  77. package/dist/auto-reply/reply/commands-models.js +107 -60
  78. package/dist/auto-reply/reply/commands-ptt.js +171 -0
  79. package/dist/auto-reply/reply/commands-session.js +2 -2
  80. package/dist/auto-reply/reply/get-reply-run.js +16 -5
  81. package/dist/auto-reply/reply/groups.js +1 -1
  82. package/dist/auto-reply/reply/inbound-context.js +9 -1
  83. package/dist/auto-reply/reply/inbound-meta.js +130 -0
  84. package/dist/auto-reply/reply/model-selection.js +3 -3
  85. package/dist/auto-reply/reply/untrusted-context.js +15 -0
  86. package/dist/auto-reply/status.js +1 -1
  87. package/dist/auto-reply/thinking.js +88 -43
  88. package/dist/browser/bridge-server.js +13 -0
  89. package/dist/browser/cdp.helpers.js +38 -24
  90. package/dist/browser/client-fetch.js +51 -8
  91. package/dist/browser/config.js +2 -11
  92. package/dist/browser/extension-relay.js +104 -43
  93. package/dist/browser/pw-ai.js +1 -1
  94. package/dist/browser/pw-session.js +143 -8
  95. package/dist/browser/pw-tools-core.interactions.js +125 -27
  96. package/dist/browser/pw-tools-core.responses.js +1 -1
  97. package/dist/browser/pw-tools-core.state.js +1 -1
  98. package/dist/browser/routes/agent.act.js +86 -41
  99. package/dist/browser/routes/dispatcher.js +4 -4
  100. package/dist/browser/screenshot.js +1 -1
  101. package/dist/browser/server-context.js +2 -2
  102. package/dist/browser/server.js +13 -0
  103. package/dist/build-info.json +3 -3
  104. package/dist/canvas-host/a2ui.js +3 -3
  105. package/dist/channels/plugins/catalog.js +2 -2
  106. package/dist/channels/plugins/onboarding/imessage.js +1 -1
  107. package/dist/channels/plugins/onboarding/signal.js +1 -1
  108. package/dist/channels/plugins/onboarding/slack.js +4 -4
  109. package/dist/channels/plugins/onboarding/whatsapp.js +3 -3
  110. package/dist/channels/plugins/pairing-message.js +1 -1
  111. package/dist/channels/reply-prefix.js +8 -1
  112. package/dist/cli/browser-cli-extension.js +2 -2
  113. package/dist/cli/cron-cli/register.cron-add.js +61 -40
  114. package/dist/cli/cron-cli/register.cron-edit.js +60 -34
  115. package/dist/cli/cron-cli/shared.js +56 -41
  116. package/dist/cli/dns-cli.js +26 -14
  117. package/dist/cli/docs-cli.js +1 -1
  118. package/dist/cli/gateway-cli/dev.js +1 -1
  119. package/dist/cli/gateway-cli/register.js +37 -19
  120. package/dist/cli/memory-cli.js +30 -20
  121. package/dist/cli/nodes-cli/register.canvas.js +1 -1
  122. package/dist/cli/parse-bytes.js +37 -0
  123. package/dist/cli/plugins-cli.js +1 -1
  124. package/dist/cli/run-main.js +2 -2
  125. package/dist/cli/security-cli.js +1 -1
  126. package/dist/cli/tagline.js +1 -1
  127. package/dist/cli/update-cli.js +173 -52
  128. package/dist/cli/webhooks-cli.js +5 -5
  129. package/dist/commands/agent.js +1 -0
  130. package/dist/commands/agents.commands.add.js +1 -1
  131. package/dist/commands/auth-choice.apply.api-providers.js +305 -17
  132. package/dist/commands/auth-choice.apply.js +4 -1
  133. package/dist/commands/auth-choice.apply.plugin-provider.js +2 -2
  134. package/dist/commands/auth-choice.apply.xai.js +63 -0
  135. package/dist/commands/auth-choice.preferred-provider.js +7 -1
  136. package/dist/commands/configure.wizard.js +1 -1
  137. package/dist/commands/dashboard.js +1 -1
  138. package/dist/commands/docs.js +1 -1
  139. package/dist/commands/doctor-config-flow.js +61 -5
  140. package/dist/commands/doctor-gateway-services.js +3 -3
  141. package/dist/commands/doctor-state-migrations.js +1 -1
  142. package/dist/commands/doctor-update.js +3 -3
  143. package/dist/commands/doctor.js +1 -1
  144. package/dist/commands/health.js +1 -1
  145. package/dist/commands/model-allowlist.js +29 -0
  146. package/dist/commands/model-picker.js +2 -1
  147. package/dist/commands/models/list.probe.js +2 -2
  148. package/dist/commands/models/list.registry.js +4 -4
  149. package/dist/commands/models/list.status-command.js +44 -24
  150. package/dist/commands/models/shared.js +15 -0
  151. package/dist/commands/onboard-auth.config-core.js +366 -28
  152. package/dist/commands/onboard-auth.credentials.js +71 -9
  153. package/dist/commands/onboard-auth.js +3 -3
  154. package/dist/commands/onboard-auth.models.js +26 -24
  155. package/dist/commands/onboard-custom.js +384 -0
  156. package/dist/commands/onboard-non-interactive/local/auth-choice-inference.js +35 -0
  157. package/dist/commands/onboard-non-interactive/local/auth-choice.js +146 -9
  158. package/dist/commands/onboard-skills.js +63 -38
  159. package/dist/commands/openai-model-default.js +41 -0
  160. package/dist/commands/status-all/report-lines.js +1 -1
  161. package/dist/commands/status.command.js +1 -1
  162. package/dist/commands/uninstall.js +3 -3
  163. package/dist/compat/legacy-names.js +1 -1
  164. package/dist/config/defaults.js +3 -2
  165. package/dist/config/io.js +3 -3
  166. package/dist/config/paths.js +136 -35
  167. package/dist/config/plugin-auto-enable.js +21 -5
  168. package/dist/config/redact-snapshot.js +153 -0
  169. package/dist/config/schema.field-metadata.js +590 -0
  170. package/dist/config/schema.js +3 -3
  171. package/dist/config/sessions/store.js +291 -23
  172. package/dist/config/types.memory.js +1 -0
  173. package/dist/config/version.js +4 -4
  174. package/dist/config/zod-schema.agent-defaults.js +3 -0
  175. package/dist/config/zod-schema.agent-runtime.js +13 -2
  176. package/dist/config/zod-schema.providers-core.js +142 -0
  177. package/dist/config/zod-schema.session.js +3 -0
  178. package/dist/cron/delivery.js +57 -0
  179. package/dist/cron/isolated-agent/delivery-target.js +18 -3
  180. package/dist/cron/isolated-agent/helpers.js +22 -5
  181. package/dist/cron/isolated-agent/run.js +171 -63
  182. package/dist/cron/isolated-agent/session.js +2 -0
  183. package/dist/cron/normalize.js +356 -28
  184. package/dist/cron/parse.js +10 -5
  185. package/dist/cron/run-log.js +35 -10
  186. package/dist/cron/schedule.js +41 -6
  187. package/dist/cron/service/jobs.js +208 -35
  188. package/dist/cron/service/ops.js +72 -16
  189. package/dist/cron/service/state.js +2 -0
  190. package/dist/cron/service/store.js +386 -14
  191. package/dist/cron/service/timer.js +390 -147
  192. package/dist/cron/session-reaper.js +86 -0
  193. package/dist/cron/store.js +23 -8
  194. package/dist/cron/validate-timestamp.js +43 -0
  195. package/dist/daemon/constants.js +7 -7
  196. package/dist/daemon/inspect.js +6 -6
  197. package/dist/daemon/systemd-unit.js +1 -1
  198. package/dist/discord/monitor/agent-components.js +438 -0
  199. package/dist/discord/monitor/allow-list.js +28 -5
  200. package/dist/discord/monitor/gateway-registry.js +29 -0
  201. package/dist/discord/monitor/native-command.js +44 -23
  202. package/dist/discord/monitor/sender-identity.js +45 -0
  203. package/dist/discord/pluralkit.js +27 -0
  204. package/dist/discord/send.outbound.js +92 -5
  205. package/dist/discord/send.shared.js +60 -23
  206. package/dist/discord/targets.js +84 -1
  207. package/dist/entry.js +15 -9
  208. package/dist/extensionAPI.js +8 -0
  209. package/dist/gateway/control-ui.js +8 -1
  210. package/dist/gateway/hooks-mapping.js +3 -0
  211. package/dist/gateway/hooks.js +65 -0
  212. package/dist/gateway/live-image-probe.js +1 -66
  213. package/dist/gateway/net.js +96 -31
  214. package/dist/gateway/node-command-policy.js +50 -15
  215. package/dist/gateway/openai-http.js +2 -2
  216. package/dist/gateway/openresponses-http.js +4 -4
  217. package/dist/gateway/origin-check.js +56 -0
  218. package/dist/gateway/protocol/client-info.js +9 -0
  219. package/dist/gateway/protocol/index.js +9 -2
  220. package/dist/gateway/protocol/schema/agents-models-skills.js +71 -1
  221. package/dist/gateway/protocol/schema/cron.js +22 -10
  222. package/dist/gateway/protocol/schema/protocol-schemas.js +16 -2
  223. package/dist/gateway/protocol/schema/sessions.js +12 -0
  224. package/dist/gateway/server/hooks.js +1 -1
  225. package/dist/gateway/server-broadcast.js +26 -9
  226. package/dist/gateway/server-chat.js +112 -23
  227. package/dist/gateway/server-discovery-runtime.js +10 -2
  228. package/dist/gateway/server-discovery.js +2 -2
  229. package/dist/gateway/server-http.js +110 -12
  230. package/dist/gateway/server-methods/agent-timestamp.js +60 -0
  231. package/dist/gateway/server-methods/agents.js +321 -2
  232. package/dist/gateway/server-methods/usage.js +559 -16
  233. package/dist/gateway/server-runtime-state.js +22 -8
  234. package/dist/gateway/server-startup-memory.js +16 -0
  235. package/dist/gateway/server.impl.js +7 -3
  236. package/dist/gateway/session-utils.fs.js +23 -25
  237. package/dist/gateway/session-utils.js +20 -10
  238. package/dist/gateway/sessions-patch.js +7 -22
  239. package/dist/gateway/test-helpers.server.js +35 -2
  240. package/dist/hooks/frontmatter.js +1 -1
  241. package/dist/hooks/hooks-status.js +1 -1
  242. package/dist/hooks/install.js +2 -2
  243. package/dist/hooks/loader.js +1 -1
  244. package/dist/hooks/workspace.js +3 -3
  245. package/dist/imessage/constants.js +2 -0
  246. package/dist/imessage/monitor/deliver.js +4 -1
  247. package/dist/imessage/monitor/monitor-provider.js +51 -1
  248. package/dist/index.js +2 -2
  249. package/dist/infra/bonjour-discovery.js +131 -70
  250. package/dist/infra/bonjour.js +3 -3
  251. package/dist/infra/control-ui-assets.js +134 -12
  252. package/dist/infra/errors.js +12 -0
  253. package/dist/infra/exec-approvals.js +266 -57
  254. package/dist/infra/format-time/format-datetime.js +79 -0
  255. package/dist/infra/format-time/format-duration.js +81 -0
  256. package/dist/infra/format-time/format-relative.js +80 -0
  257. package/dist/infra/heartbeat-runner.js +140 -49
  258. package/dist/infra/home-dir.js +54 -0
  259. package/dist/infra/net/fetch-guard.js +122 -0
  260. package/dist/infra/net/ssrf.js +65 -29
  261. package/dist/infra/outbound/abort.js +14 -0
  262. package/dist/infra/outbound/message-action-runner.js +77 -13
  263. package/dist/infra/outbound/outbound-session.js +143 -37
  264. package/dist/infra/path-env.js +3 -3
  265. package/dist/infra/poolbot-root.js +43 -1
  266. package/dist/infra/provider-usage.fetch.minimax.js +1 -1
  267. package/dist/infra/restart.js +1 -1
  268. package/dist/infra/session-cost-usage.js +631 -41
  269. package/dist/infra/state-migrations.js +317 -47
  270. package/dist/infra/tailscale.js +1 -1
  271. package/dist/infra/update-global.js +35 -0
  272. package/dist/infra/update-runner.js +149 -43
  273. package/dist/infra/warning-filter.js +65 -0
  274. package/dist/infra/widearea-dns.js +30 -9
  275. package/dist/logging/redact-identifier.js +12 -0
  276. package/dist/macos/relay.js +2 -2
  277. package/dist/media/fetch.js +81 -58
  278. package/dist/media/input-files.js +1 -1
  279. package/dist/media/mime.js +4 -0
  280. package/dist/media/png-encode.js +74 -0
  281. package/dist/media-understanding/apply.js +403 -3
  282. package/dist/media-understanding/attachments.js +38 -27
  283. package/dist/media-understanding/defaults.js +16 -0
  284. package/dist/media-understanding/providers/deepgram/audio.js +22 -14
  285. package/dist/media-understanding/providers/google/audio.js +24 -17
  286. package/dist/media-understanding/providers/google/video.js +24 -17
  287. package/dist/media-understanding/providers/image.js +4 -4
  288. package/dist/media-understanding/providers/index.js +4 -1
  289. package/dist/media-understanding/providers/openai/audio.js +22 -14
  290. package/dist/media-understanding/providers/shared.js +16 -11
  291. package/dist/media-understanding/providers/zai/index.js +6 -0
  292. package/dist/media-understanding/runner.js +158 -90
  293. package/dist/memory/backend-config.js +207 -0
  294. package/dist/memory/batch-voyage.js +277 -0
  295. package/dist/memory/embeddings-voyage.js +75 -0
  296. package/dist/memory/embeddings.js +29 -17
  297. package/dist/memory/internal.js +101 -18
  298. package/dist/memory/manager.js +155 -48
  299. package/dist/memory/search-manager.js +173 -0
  300. package/dist/memory/session-files.js +9 -3
  301. package/dist/memory/types.js +1 -0
  302. package/dist/node-host/runner.js +36 -26
  303. package/dist/node-host/with-timeout.js +27 -0
  304. package/dist/pairing/pairing-messages.js +1 -1
  305. package/dist/plugins/commands.js +5 -1
  306. package/dist/plugins/config-state.js +86 -7
  307. package/dist/plugins/discovery.js +1 -1
  308. package/dist/plugins/install.js +2 -2
  309. package/dist/plugins/source-display.js +51 -0
  310. package/dist/plugins/update.js +1 -1
  311. package/dist/process/exec.js +20 -2
  312. package/dist/routing/resolve-route.js +12 -0
  313. package/dist/routing/session-key.js +15 -0
  314. package/dist/runtime.js +2 -0
  315. package/dist/security/audit-extra.async.js +601 -0
  316. package/dist/security/audit-extra.js +2 -830
  317. package/dist/security/audit-extra.sync.js +505 -0
  318. package/dist/security/audit.js +2 -2
  319. package/dist/security/channel-metadata.js +34 -0
  320. package/dist/security/external-content.js +88 -6
  321. package/dist/security/skill-scanner.js +330 -0
  322. package/dist/sessions/session-key-utils.js +7 -0
  323. package/dist/shared/text/reasoning-tags.js +52 -7
  324. package/dist/signal/monitor/event-handler.js +80 -1
  325. package/dist/slack/monitor/media.js +85 -15
  326. package/dist/tailscale/detect.js +145 -0
  327. package/dist/telegram/bot/helpers.js +109 -28
  328. package/dist/telegram/bot-handlers.js +144 -3
  329. package/dist/telegram/bot-message-context.js +38 -11
  330. package/dist/telegram/bot-message-dispatch.js +48 -15
  331. package/dist/telegram/bot-native-commands.js +86 -29
  332. package/dist/telegram/bot.js +30 -29
  333. package/dist/telegram/model-buttons.js +163 -0
  334. package/dist/telegram/monitor.js +110 -85
  335. package/dist/telegram/send.js +129 -47
  336. package/dist/terminal/restore.js +45 -0
  337. package/dist/test-helpers/state-dir-env.js +16 -0
  338. package/dist/test-helpers/workspace.js +11 -0
  339. package/dist/test-utils/channel-plugins.js +82 -0
  340. package/dist/test-utils/ports.js +73 -0
  341. package/dist/tts/tts.js +12 -6
  342. package/dist/tui/tui-session-actions.js +166 -54
  343. package/dist/utils/fetch-timeout.js +20 -0
  344. package/dist/utils/normalize-secret-input.js +19 -0
  345. package/dist/utils/shell-argv.js +61 -0
  346. package/dist/utils/transcript-tools.js +58 -0
  347. package/dist/utils.js +55 -14
  348. package/dist/version.js +42 -5
  349. package/dist/web/qr-image.js +1 -61
  350. package/dist/wizard/onboarding.finalize.js +7 -7
  351. package/dist/wizard/onboarding.js +3 -3
  352. package/docs/RELEASE_WORKFOTS_COMPARISON.md +3 -3
  353. package/docs/_config.yml +2 -2
  354. package/docs/_layouts/default.html +9 -9
  355. package/docs/concepts/typebox.md +1 -1
  356. package/docs/docs.json +1 -1
  357. package/docs/northflank.mdx +7 -7
  358. package/docs/railway.mdx +3 -3
  359. package/docs/render.mdx +5 -5
  360. package/docs/start/lore.md +2 -2
  361. package/extensions/bluebubbles/index.ts +2 -2
  362. package/extensions/bluebubbles/package.json +1 -1
  363. package/extensions/bluebubbles/src/accounts.ts +8 -8
  364. package/extensions/bluebubbles/src/actions.test.ts +22 -22
  365. package/extensions/bluebubbles/src/actions.ts +5 -5
  366. package/extensions/bluebubbles/src/attachments.ts +2 -2
  367. package/extensions/bluebubbles/src/channel.ts +16 -16
  368. package/extensions/bluebubbles/src/chat.ts +2 -2
  369. package/extensions/bluebubbles/src/media-send.ts +2 -2
  370. package/extensions/bluebubbles/src/monitor.test.ts +46 -46
  371. package/extensions/bluebubbles/src/monitor.ts +5 -5
  372. package/extensions/bluebubbles/src/onboarding.ts +7 -7
  373. package/extensions/bluebubbles/src/reactions.ts +2 -2
  374. package/extensions/bluebubbles/src/send.ts +2 -2
  375. package/extensions/copilot-proxy/README.md +1 -1
  376. package/extensions/copilot-proxy/package.json +1 -1
  377. package/extensions/diagnostics-otel/index.ts +2 -2
  378. package/extensions/diagnostics-otel/package.json +1 -1
  379. package/extensions/diagnostics-otel/src/service.ts +3 -3
  380. package/extensions/discord/index.ts +2 -2
  381. package/extensions/discord/package.json +1 -1
  382. package/extensions/google-antigravity-auth/README.md +1 -1
  383. package/extensions/google-antigravity-auth/index.ts +1 -1
  384. package/extensions/google-antigravity-auth/package.json +1 -1
  385. package/extensions/google-gemini-cli-auth/README.md +1 -1
  386. package/extensions/google-gemini-cli-auth/oauth.ts +1 -1
  387. package/extensions/google-gemini-cli-auth/package.json +1 -1
  388. package/extensions/googlechat/index.ts +3 -3
  389. package/extensions/googlechat/package.json +1 -1
  390. package/extensions/googlechat/src/accounts.ts +8 -8
  391. package/extensions/googlechat/src/actions.ts +6 -6
  392. package/extensions/googlechat/src/channel.ts +21 -21
  393. package/extensions/googlechat/src/monitor.ts +8 -8
  394. package/extensions/googlechat/src/onboarding.ts +10 -10
  395. package/extensions/imessage/index.ts +2 -2
  396. package/extensions/imessage/package.json +1 -1
  397. package/extensions/line/index.ts +2 -2
  398. package/extensions/line/package.json +1 -1
  399. package/extensions/line/src/card-command.ts +2 -2
  400. package/extensions/line/src/channel.logout.test.ts +4 -4
  401. package/extensions/line/src/channel.sendPayload.test.ts +8 -8
  402. package/extensions/line/src/channel.ts +3 -3
  403. package/extensions/llm-task/README.md +3 -3
  404. package/extensions/llm-task/index.ts +2 -2
  405. package/extensions/llm-task/package.json +1 -1
  406. package/extensions/llm-task/src/llm-task-tool.ts +4 -4
  407. package/extensions/lobster/README.md +6 -6
  408. package/extensions/lobster/index.ts +2 -2
  409. package/extensions/lobster/src/lobster-tool.test.ts +4 -4
  410. package/extensions/lobster/src/lobster-tool.ts +2 -2
  411. package/extensions/matrix/index.ts +2 -2
  412. package/extensions/matrix/package.json +1 -1
  413. package/extensions/matrix/src/matrix/client/config.ts +1 -1
  414. package/extensions/matrix/src/matrix/monitor/handler.ts +1 -1
  415. package/extensions/matrix/src/onboarding.ts +1 -1
  416. package/extensions/mattermost/index.ts +2 -2
  417. package/extensions/mattermost/package.json +1 -1
  418. package/extensions/mattermost/src/mattermost/accounts.ts +8 -8
  419. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +5 -5
  420. package/extensions/mattermost/src/mattermost/monitor.ts +2 -2
  421. package/extensions/mattermost/src/onboarding-helpers.ts +3 -3
  422. package/extensions/mattermost/src/onboarding.ts +2 -2
  423. package/extensions/memory-core/index.ts +2 -2
  424. package/extensions/memory-core/package.json +1 -1
  425. package/extensions/memory-lancedb/index.ts +3 -3
  426. package/extensions/memory-lancedb/package.json +1 -1
  427. package/extensions/msteams/index.ts +2 -2
  428. package/extensions/msteams/package.json +1 -1
  429. package/extensions/msteams/src/channel.directory.test.ts +2 -2
  430. package/extensions/msteams/src/channel.ts +2 -2
  431. package/extensions/msteams/src/graph-upload.ts +4 -4
  432. package/extensions/msteams/src/monitor-handler.ts +2 -2
  433. package/extensions/msteams/src/monitor.ts +2 -2
  434. package/extensions/msteams/src/onboarding.ts +9 -9
  435. package/extensions/msteams/src/reply-dispatcher.ts +2 -2
  436. package/extensions/msteams/src/send-context.ts +2 -2
  437. package/extensions/msteams/src/send.ts +4 -4
  438. package/extensions/nextcloud-talk/index.ts +2 -2
  439. package/extensions/nextcloud-talk/package.json +1 -1
  440. package/extensions/nextcloud-talk/src/channel.ts +7 -7
  441. package/extensions/nextcloud-talk/src/inbound.ts +7 -7
  442. package/extensions/nextcloud-talk/src/onboarding.ts +1 -1
  443. package/extensions/nostr/README.md +2 -2
  444. package/extensions/nostr/index.ts +5 -5
  445. package/extensions/nostr/package.json +1 -1
  446. package/extensions/nostr/src/types.ts +4 -4
  447. package/extensions/open-prose/index.ts +2 -2
  448. package/extensions/qwen-portal-auth/README.md +1 -1
  449. package/extensions/signal/index.ts +2 -2
  450. package/extensions/signal/package.json +1 -1
  451. package/extensions/slack/index.ts +2 -2
  452. package/extensions/slack/package.json +1 -1
  453. package/extensions/telegram/index.ts +2 -2
  454. package/extensions/telegram/package.json +1 -1
  455. package/extensions/telegram/src/channel.ts +2 -2
  456. package/extensions/tlon/README.md +2 -2
  457. package/extensions/tlon/index.ts +2 -2
  458. package/extensions/tlon/package.json +1 -1
  459. package/extensions/tlon/src/channel.ts +13 -13
  460. package/extensions/tlon/src/monitor/index.ts +3 -3
  461. package/extensions/tlon/src/onboarding.ts +3 -3
  462. package/extensions/tlon/src/types.ts +3 -3
  463. package/extensions/twitch/README.md +1 -1
  464. package/extensions/twitch/index.ts +2 -2
  465. package/extensions/twitch/package.json +1 -1
  466. package/extensions/twitch/src/config.ts +3 -3
  467. package/extensions/twitch/src/monitor.ts +3 -3
  468. package/extensions/twitch/src/onboarding.ts +9 -9
  469. package/extensions/twitch/src/outbound.test.ts +2 -2
  470. package/extensions/twitch/src/plugin.test.ts +2 -2
  471. package/extensions/twitch/src/plugin.ts +8 -8
  472. package/extensions/twitch/src/send.test.ts +2 -2
  473. package/extensions/twitch/src/send.ts +4 -4
  474. package/extensions/twitch/src/token.test.ts +8 -8
  475. package/extensions/twitch/src/token.ts +3 -3
  476. package/extensions/twitch/src/twitch-client.ts +3 -3
  477. package/extensions/twitch/src/types.ts +3 -3
  478. package/extensions/twitch/src/utils/markdown.ts +1 -1
  479. package/extensions/voice-call/README.md +3 -3
  480. package/extensions/voice-call/package.json +1 -1
  481. package/extensions/voice-call/src/core-bridge.ts +2 -2
  482. package/extensions/voice-call/src/response-generator.ts +1 -1
  483. package/extensions/whatsapp/index.ts +2 -2
  484. package/extensions/whatsapp/package.json +1 -1
  485. package/extensions/zalo/README.md +1 -1
  486. package/extensions/zalo/index.ts +2 -2
  487. package/extensions/zalo/package.json +1 -1
  488. package/extensions/zalo/src/accounts.ts +8 -8
  489. package/extensions/zalo/src/actions.ts +4 -4
  490. package/extensions/zalo/src/channel.directory.test.ts +2 -2
  491. package/extensions/zalo/src/channel.ts +18 -18
  492. package/extensions/zalo/src/monitor.ts +9 -9
  493. package/extensions/zalo/src/monitor.webhook.test.ts +2 -2
  494. package/extensions/zalo/src/onboarding.ts +24 -24
  495. package/extensions/zalo/src/send.ts +2 -2
  496. package/extensions/zalouser/README.md +2 -2
  497. package/extensions/zalouser/index.ts +2 -2
  498. package/extensions/zalouser/package.json +1 -1
  499. package/extensions/zalouser/src/accounts.ts +9 -9
  500. package/extensions/zalouser/src/channel.ts +24 -24
  501. package/extensions/zalouser/src/monitor.ts +4 -4
  502. package/extensions/zalouser/src/onboarding.ts +28 -28
  503. package/package.json +13 -251
  504. package/skills/nano-banana-pro/scripts/generate_image.py +1 -1
  505. package/skills/tmux/scripts/find-sessions.sh +1 -1
  506. package/CHANGELOG.md +0 -102
  507. package/README-header.png +0 -0
  508. package/git-hooks/pre-commit +0 -4
  509. package/scripts/format-staged.js +0 -148
  510. package/scripts/postinstall.js +0 -300
  511. package/scripts/setup-git-hooks.js +0 -96
@@ -2,9 +2,11 @@ import { upsertAuthProfile } from "../../../agents/auth-profiles.js";
2
2
  import { normalizeProviderId } from "../../../agents/model-selection.js";
3
3
  import { parseDurationMs } from "../../../cli/parse-duration.js";
4
4
  import { upsertSharedEnvVar } from "../../../infra/env-file.js";
5
+ import { normalizeSecretInput } from "../../../utils/normalize-secret-input.js";
5
6
  import { buildTokenProfileId, validateAnthropicSetupToken } from "../../auth-token.js";
6
7
  import { applyGoogleGeminiModelDefault } from "../../google-gemini-model-default.js";
7
- import { applyAuthProfileConfig, applyKimiCodeConfig, applyMinimaxApiConfig, applyMinimaxConfig, applyMoonshotConfig, applyOpencodeZenConfig, applyOpenrouterConfig, applySyntheticConfig, applyVeniceConfig, applyVercelAiGatewayConfig, applyZaiConfig, setAnthropicApiKey, setGeminiApiKey, setKimiCodeApiKey, setMinimaxApiKey, setMoonshotApiKey, setOpencodeZenApiKey, setOpenrouterApiKey, setSyntheticApiKey, setVeniceApiKey, setVercelAiGatewayApiKey, setZaiApiKey, } from "../../onboard-auth.js";
8
+ import { applyOpenAIConfig } from "../../openai-model-default.js";
9
+ import { applyAuthProfileConfig, applyCloudflareAiGatewayConfig, applyKimiCodeConfig, applyMinimaxApiConfig, applyMinimaxConfig, applyMoonshotConfig, applyMoonshotConfigCn, applyOpencodeZenConfig, applyOpenrouterConfig, applyQianfanConfig, applySyntheticConfig, applyTogetherConfig, applyVeniceConfig, applyVercelAiGatewayConfig, applyXaiConfig, applyXiaomiConfig, applyZaiConfig, setAnthropicApiKey, setCloudflareAiGatewayConfig, setGeminiApiKey, setKimiCodingApiKey, setMinimaxApiKey, setMoonshotApiKey, setOpencodeZenApiKey, setOpenrouterApiKey, setQianfanApiKey, setSyntheticApiKey, setTogetherApiKey, setVeniceApiKey, setVercelAiGatewayApiKey, setXaiApiKey, setXiaomiApiKey, setZaiApiKey, } from "../../onboard-auth.js";
8
10
  import { resolveNonInteractiveApiKey } from "../api-keys.js";
9
11
  import { shortenHomePath } from "../../../utils.js";
10
12
  export async function applyNonInteractiveAuthChoice(params) {
@@ -58,7 +60,7 @@ export async function applyNonInteractiveAuthChoice(params) {
58
60
  runtime.exit(1);
59
61
  return null;
60
62
  }
61
- const tokenRaw = opts.token?.trim();
63
+ const tokenRaw = normalizeSecretInput(opts.token);
62
64
  if (!tokenRaw) {
63
65
  runtime.error("Missing --token for --auth-choice token.");
64
66
  runtime.exit(1);
@@ -154,7 +156,7 @@ export async function applyNonInteractiveAuthChoice(params) {
154
156
  const result = upsertSharedEnvVar({ key: "OPENAI_API_KEY", value: key });
155
157
  process.env.OPENAI_API_KEY = key;
156
158
  runtime.log(`Saved OPENAI_API_KEY to ${shortenHomePath(result.path)}`);
157
- return nextConfig;
159
+ return applyOpenAIConfig(nextConfig);
158
160
  }
159
161
  if (authChoice === "openrouter-api-key") {
160
162
  const resolved = await resolveNonInteractiveApiKey({
@@ -216,22 +218,42 @@ export async function applyNonInteractiveAuthChoice(params) {
216
218
  });
217
219
  return applyMoonshotConfig(nextConfig);
218
220
  }
221
+ if (authChoice === "moonshot-api-key-cn") {
222
+ const resolved = await resolveNonInteractiveApiKey({
223
+ provider: "moonshot",
224
+ cfg: baseConfig,
225
+ flagValue: opts.moonshotApiKey,
226
+ flagName: "--moonshot-api-key",
227
+ envVar: "MOONSHOT_API_KEY",
228
+ runtime,
229
+ });
230
+ if (!resolved)
231
+ return null;
232
+ if (resolved.source !== "profile")
233
+ await setMoonshotApiKey(resolved.key);
234
+ nextConfig = applyAuthProfileConfig(nextConfig, {
235
+ profileId: "moonshot:default",
236
+ provider: "moonshot",
237
+ mode: "api_key",
238
+ });
239
+ return applyMoonshotConfigCn(nextConfig);
240
+ }
219
241
  if (authChoice === "kimi-code-api-key") {
220
242
  const resolved = await resolveNonInteractiveApiKey({
221
- provider: "kimi-code",
243
+ provider: "kimi-coding",
222
244
  cfg: baseConfig,
223
245
  flagValue: opts.kimiCodeApiKey,
224
246
  flagName: "--kimi-code-api-key",
225
- envVar: "KIMICODE_API_KEY",
247
+ envVar: "KIMI_API_KEY",
226
248
  runtime,
227
249
  });
228
250
  if (!resolved)
229
251
  return null;
230
252
  if (resolved.source !== "profile")
231
- await setKimiCodeApiKey(resolved.key);
253
+ await setKimiCodingApiKey(resolved.key);
232
254
  nextConfig = applyAuthProfileConfig(nextConfig, {
233
- profileId: "kimi-code:default",
234
- provider: "kimi-code",
255
+ profileId: "kimi-coding:default",
256
+ provider: "kimi-coding",
235
257
  mode: "api_key",
236
258
  });
237
259
  return applyKimiCodeConfig(nextConfig);
@@ -276,6 +298,120 @@ export async function applyNonInteractiveAuthChoice(params) {
276
298
  });
277
299
  return applyVeniceConfig(nextConfig);
278
300
  }
301
+ if (authChoice === "xiaomi-api-key") {
302
+ const resolved = await resolveNonInteractiveApiKey({
303
+ provider: "xiaomi",
304
+ cfg: baseConfig,
305
+ flagValue: opts.xiaomiApiKey,
306
+ flagName: "--xiaomi-api-key",
307
+ envVar: "XIAOMI_API_KEY",
308
+ runtime,
309
+ });
310
+ if (!resolved)
311
+ return null;
312
+ if (resolved.source !== "profile")
313
+ await setXiaomiApiKey(resolved.key);
314
+ nextConfig = applyAuthProfileConfig(nextConfig, {
315
+ profileId: "xiaomi:default",
316
+ provider: "xiaomi",
317
+ mode: "api_key",
318
+ });
319
+ return applyXiaomiConfig(nextConfig);
320
+ }
321
+ if (authChoice === "xai-api-key") {
322
+ const resolved = await resolveNonInteractiveApiKey({
323
+ provider: "xai",
324
+ cfg: baseConfig,
325
+ flagValue: opts.xaiApiKey,
326
+ flagName: "--xai-api-key",
327
+ envVar: "XAI_API_KEY",
328
+ runtime,
329
+ });
330
+ if (!resolved)
331
+ return null;
332
+ if (resolved.source !== "profile")
333
+ setXaiApiKey(resolved.key);
334
+ nextConfig = applyAuthProfileConfig(nextConfig, {
335
+ profileId: "xai:default",
336
+ provider: "xai",
337
+ mode: "api_key",
338
+ });
339
+ return applyXaiConfig(nextConfig);
340
+ }
341
+ if (authChoice === "qianfan-api-key") {
342
+ const resolved = await resolveNonInteractiveApiKey({
343
+ provider: "qianfan",
344
+ cfg: baseConfig,
345
+ flagValue: opts.qianfanApiKey,
346
+ flagName: "--qianfan-api-key",
347
+ envVar: "QIANFAN_API_KEY",
348
+ runtime,
349
+ });
350
+ if (!resolved)
351
+ return null;
352
+ if (resolved.source !== "profile")
353
+ setQianfanApiKey(resolved.key);
354
+ nextConfig = applyAuthProfileConfig(nextConfig, {
355
+ profileId: "qianfan:default",
356
+ provider: "qianfan",
357
+ mode: "api_key",
358
+ });
359
+ return applyQianfanConfig(nextConfig);
360
+ }
361
+ if (authChoice === "cloudflare-ai-gateway-api-key") {
362
+ const accountId = opts.cloudflareAiGatewayAccountId?.trim() ?? "";
363
+ const gatewayId = opts.cloudflareAiGatewayGatewayId?.trim() ?? "";
364
+ if (!accountId || !gatewayId) {
365
+ runtime.error([
366
+ 'Auth choice "cloudflare-ai-gateway-api-key" requires Account ID and Gateway ID.',
367
+ "Use --cloudflare-ai-gateway-account-id and --cloudflare-ai-gateway-gateway-id.",
368
+ ].join("\n"));
369
+ runtime.exit(1);
370
+ return null;
371
+ }
372
+ const resolved = await resolveNonInteractiveApiKey({
373
+ provider: "cloudflare-ai-gateway",
374
+ cfg: baseConfig,
375
+ flagValue: opts.cloudflareAiGatewayApiKey,
376
+ flagName: "--cloudflare-ai-gateway-api-key",
377
+ envVar: "CLOUDFLARE_AI_GATEWAY_API_KEY",
378
+ runtime,
379
+ });
380
+ if (!resolved)
381
+ return null;
382
+ if (resolved.source !== "profile") {
383
+ await setCloudflareAiGatewayConfig(accountId, gatewayId, resolved.key);
384
+ }
385
+ nextConfig = applyAuthProfileConfig(nextConfig, {
386
+ profileId: "cloudflare-ai-gateway:default",
387
+ provider: "cloudflare-ai-gateway",
388
+ mode: "api_key",
389
+ });
390
+ return applyCloudflareAiGatewayConfig(nextConfig, {
391
+ accountId,
392
+ gatewayId,
393
+ });
394
+ }
395
+ if (authChoice === "together-api-key") {
396
+ const resolved = await resolveNonInteractiveApiKey({
397
+ provider: "together",
398
+ cfg: baseConfig,
399
+ flagValue: opts.togetherApiKey,
400
+ flagName: "--together-api-key",
401
+ envVar: "TOGETHER_API_KEY",
402
+ runtime,
403
+ });
404
+ if (!resolved)
405
+ return null;
406
+ if (resolved.source !== "profile")
407
+ await setTogetherApiKey(resolved.key);
408
+ nextConfig = applyAuthProfileConfig(nextConfig, {
409
+ profileId: "together:default",
410
+ provider: "together",
411
+ mode: "api_key",
412
+ });
413
+ return applyTogetherConfig(nextConfig);
414
+ }
279
415
  if (authChoice === "minimax-cloud" ||
280
416
  authChoice === "minimax-api" ||
281
417
  authChoice === "minimax-api-lightning") {
@@ -324,7 +460,8 @@ export async function applyNonInteractiveAuthChoice(params) {
324
460
  if (authChoice === "oauth" ||
325
461
  authChoice === "chutes" ||
326
462
  authChoice === "openai-codex" ||
327
- authChoice === "qwen-portal") {
463
+ authChoice === "qwen-portal" ||
464
+ authChoice === "minimax-portal") {
328
465
  runtime.error("OAuth requires interactive mode.");
329
466
  runtime.exit(1);
330
467
  return null;
@@ -1,6 +1,7 @@
1
1
  import { installSkill } from "../agents/skills-install.js";
2
2
  import { buildWorkspaceSkillStatus } from "../agents/skills-status.js";
3
3
  import { formatCliCommand } from "../cli/command-format.js";
4
+ import { normalizeSecretInput } from "../utils/normalize-secret-input.js";
4
5
  import { detectBinary, resolveNodeManagerOptions } from "./onboard-helpers.js";
5
6
  function summarizeInstallFailure(message) {
6
7
  const cleaned = message.replace(/^Install failed(?:\s*\([^)]*\))?\s*:?\s*/i, "").trim();
@@ -33,14 +34,13 @@ function upsertSkillEntry(cfg, skillKey, patch) {
33
34
  export async function setupSkills(cfg, workspaceDir, runtime, prompter) {
34
35
  const report = buildWorkspaceSkillStatus(workspaceDir, { config: cfg });
35
36
  const eligible = report.skills.filter((s) => s.eligible);
36
- const missing = report.skills.filter((s) => !s.eligible && !s.disabled && !s.blockedByAllowlist);
37
+ const unsupportedOs = report.skills.filter((s) => !s.disabled && !s.blockedByAllowlist && s.missing.os.length > 0);
38
+ const missing = report.skills.filter((s) => !s.eligible && !s.disabled && !s.blockedByAllowlist && s.missing.os.length === 0);
37
39
  const blocked = report.skills.filter((s) => s.blockedByAllowlist);
38
- const needsBrewPrompt = process.platform !== "win32" &&
39
- report.skills.some((skill) => skill.install.some((option) => option.kind === "brew")) &&
40
- !(await detectBinary("brew"));
41
40
  await prompter.note([
42
41
  `Eligible: ${eligible.length}`,
43
42
  `Missing requirements: ${missing.length}`,
43
+ `Unsupported on this OS: ${unsupportedOs.length}`,
44
44
  `Blocked by allowlist: ${blocked.length}`,
45
45
  ].join("\n"), "Skills status");
46
46
  const shouldConfigure = await prompter.confirm({
@@ -49,36 +49,7 @@ export async function setupSkills(cfg, workspaceDir, runtime, prompter) {
49
49
  });
50
50
  if (!shouldConfigure)
51
51
  return cfg;
52
- if (needsBrewPrompt) {
53
- await prompter.note([
54
- "Many skill dependencies are shipped via Homebrew.",
55
- "Without brew, you'll need to build from source or download releases manually.",
56
- ].join("\n"), "Homebrew recommended");
57
- const showBrewInstall = await prompter.confirm({
58
- message: "Show Homebrew install command?",
59
- initialValue: true,
60
- });
61
- if (showBrewInstall) {
62
- await prompter.note([
63
- "Run:",
64
- '/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"',
65
- ].join("\n"), "Homebrew install");
66
- }
67
- }
68
- const nodeManager = (await prompter.select({
69
- message: "Preferred node manager for skill installs",
70
- options: resolveNodeManagerOptions(),
71
- }));
72
- let next = {
73
- ...cfg,
74
- skills: {
75
- ...cfg.skills,
76
- install: {
77
- ...cfg.skills?.install,
78
- nodeManager,
79
- },
80
- },
81
- };
52
+ let next = cfg;
82
53
  const installable = missing.filter((skill) => skill.install.length > 0 && skill.missing.bins.length > 0);
83
54
  if (installable.length > 0) {
84
55
  const toInstall = await prompter.multiselect({
@@ -96,8 +67,50 @@ export async function setupSkills(cfg, workspaceDir, runtime, prompter) {
96
67
  })),
97
68
  ],
98
69
  });
99
- const selected = toInstall.filter((name) => name !== "__skip__");
100
- for (const name of selected) {
70
+ const selectedSkills = toInstall.filter((name) => name !== "__skip__");
71
+ const needsBrewPrompt = process.platform !== "win32" &&
72
+ selectedSkills.some((name) => {
73
+ const skill = installable.find((s) => s.name === name);
74
+ return skill?.install.some((option) => option.kind === "brew");
75
+ }) &&
76
+ !(await detectBinary("brew"));
77
+ if (needsBrewPrompt) {
78
+ await prompter.note([
79
+ "Many skill dependencies are shipped via Homebrew.",
80
+ "Without brew, you'll need to build from source or download releases manually.",
81
+ ].join("\n"), "Homebrew recommended");
82
+ const showBrewInstall = await prompter.confirm({
83
+ message: "Show Homebrew install command?",
84
+ initialValue: true,
85
+ });
86
+ if (showBrewInstall) {
87
+ await prompter.note([
88
+ "Run:",
89
+ '/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"',
90
+ ].join("\n"), "Homebrew install");
91
+ }
92
+ }
93
+ const needsNodeManagerPrompt = selectedSkills.some((name) => {
94
+ const skill = installable.find((s) => s.name === name);
95
+ return skill?.install.some((option) => option.kind === "node");
96
+ });
97
+ if (needsNodeManagerPrompt) {
98
+ const nodeManager = (await prompter.select({
99
+ message: "Preferred node manager for skill installs",
100
+ options: resolveNodeManagerOptions(),
101
+ }));
102
+ next = {
103
+ ...next,
104
+ skills: {
105
+ ...next.skills,
106
+ install: {
107
+ ...next.skills?.install,
108
+ nodeManager,
109
+ },
110
+ },
111
+ };
112
+ }
113
+ for (const name of selectedSkills) {
101
114
  const target = installable.find((s) => s.name === name);
102
115
  if (!target || target.install.length === 0)
103
116
  continue;
@@ -111,13 +124,25 @@ export async function setupSkills(cfg, workspaceDir, runtime, prompter) {
111
124
  installId,
112
125
  config: next,
113
126
  });
127
+ const warnings = result.warnings ?? [];
114
128
  if (result.ok) {
115
- spin.stop(`Installed ${name}`);
129
+ if (warnings.length > 0) {
130
+ spin.stop(`Installed ${name} (${warnings.length} warning${warnings.length === 1 ? "" : "s"})`);
131
+ for (const warning of warnings)
132
+ runtime.log(` ⚠ ${warning}`);
133
+ }
134
+ else {
135
+ spin.stop(`Installed ${name}`);
136
+ }
116
137
  }
117
138
  else {
118
139
  const code = result.code == null ? "" : ` (exit ${result.code})`;
119
140
  const detail = summarizeInstallFailure(result.message);
120
141
  spin.stop(`Install failed: ${name}${code}${detail ? ` — ${detail}` : ""}`);
142
+ if (warnings.length > 0) {
143
+ for (const warning of warnings)
144
+ runtime.log(` ⚠ ${warning}`);
145
+ }
121
146
  if (result.stderr)
122
147
  runtime.log(result.stderr.trim());
123
148
  else if (result.stdout)
@@ -140,7 +165,7 @@ export async function setupSkills(cfg, workspaceDir, runtime, prompter) {
140
165
  message: `Enter ${skill.primaryEnv}`,
141
166
  validate: (value) => (value?.trim() ? undefined : "Required"),
142
167
  }));
143
- next = upsertSkillEntry(next, skill.skillKey, { apiKey: apiKey.trim() });
168
+ next = upsertSkillEntry(next, skill.skillKey, { apiKey: normalizeSecretInput(apiKey) ?? "" });
144
169
  }
145
170
  return next;
146
171
  }
@@ -0,0 +1,41 @@
1
+ import { ensureModelAllowlistEntry } from "./model-allowlist.js";
2
+ export const OPENAI_DEFAULT_MODEL = "openai/gpt-5.1-codex";
3
+ export function applyOpenAIProviderConfig(cfg) {
4
+ const next = ensureModelAllowlistEntry({
5
+ cfg,
6
+ modelRef: OPENAI_DEFAULT_MODEL,
7
+ });
8
+ const models = { ...next.agents?.defaults?.models };
9
+ models[OPENAI_DEFAULT_MODEL] = {
10
+ ...models[OPENAI_DEFAULT_MODEL],
11
+ alias: models[OPENAI_DEFAULT_MODEL]?.alias ?? "GPT",
12
+ };
13
+ return {
14
+ ...next,
15
+ agents: {
16
+ ...next.agents,
17
+ defaults: {
18
+ ...next.agents?.defaults,
19
+ models,
20
+ },
21
+ },
22
+ };
23
+ }
24
+ export function applyOpenAIConfig(cfg) {
25
+ const next = applyOpenAIProviderConfig(cfg);
26
+ return {
27
+ ...next,
28
+ agents: {
29
+ ...next.agents,
30
+ defaults: {
31
+ ...next.agents?.defaults,
32
+ model: next.agents?.defaults?.model && typeof next.agents.defaults.model === "object"
33
+ ? {
34
+ ...next.agents.defaults.model,
35
+ primary: OPENAI_DEFAULT_MODEL,
36
+ }
37
+ : { primary: OPENAI_DEFAULT_MODEL },
38
+ },
39
+ },
40
+ };
41
+ }
@@ -88,7 +88,7 @@ export async function buildStatusAllReportLines(params) {
88
88
  rows: agentRows,
89
89
  });
90
90
  const lines = [];
91
- lines.push(heading("Moltbot status --all"));
91
+ lines.push(heading("Poolbot status --all"));
92
92
  lines.push("");
93
93
  lines.push(heading("Overview"));
94
94
  lines.push(overview.trimEnd());
@@ -271,7 +271,7 @@ export async function statusCommand(opts, runtime) {
271
271
  Value: `${summary.sessions.count} active · default ${defaults.model ?? "unknown"}${defaultCtx} · ${storeLabel}`,
272
272
  },
273
273
  ];
274
- runtime.log(theme.heading("Moltbot status"));
274
+ runtime.log(theme.heading("Poolbot status"));
275
275
  runtime.log("");
276
276
  runtime.log(theme.heading("Overview"));
277
277
  runtime.log(renderTable({
@@ -59,9 +59,9 @@ async function stopAndUninstallService(runtime) {
59
59
  async function removeMacApp(runtime, dryRun) {
60
60
  if (process.platform !== "darwin")
61
61
  return;
62
- await removePath("/Applications/Moltbot.app", runtime, {
62
+ await removePath("/Applications/Poolbot.app", runtime, {
63
63
  dryRun,
64
- label: "/Applications/Moltbot.app",
64
+ label: "/Applications/Poolbot.app",
65
65
  });
66
66
  }
67
67
  export async function uninstallCommand(runtime, opts) {
@@ -91,7 +91,7 @@ export async function uninstallCommand(runtime, opts) {
91
91
  {
92
92
  value: "app",
93
93
  label: "macOS app",
94
- hint: "/Applications/Moltbot.app",
94
+ hint: "/Applications/Poolbot.app",
95
95
  },
96
96
  ],
97
97
  initialValues: ["service", "state", "workspace"],
@@ -2,4 +2,4 @@ export const LEGACY_PROJECT_NAME = "poolbot";
2
2
  export const LEGACY_MANIFEST_KEY = LEGACY_PROJECT_NAME;
3
3
  export const LEGACY_PLUGIN_MANIFEST_FILENAME = `${LEGACY_PROJECT_NAME}.plugin.json`;
4
4
  export const LEGACY_CANVAS_HANDLER_NAME = `${LEGACY_PROJECT_NAME}CanvasA2UIAction`;
5
- export const LEGACY_MACOS_APP_SOURCES_DIR = "apps/macos/Sources/Clawdbot";
5
+ export const LEGACY_MACOS_APP_SOURCES_DIR = "apps/macos/Sources/Pool-Bot";
@@ -5,7 +5,7 @@ import { DEFAULT_AGENT_MAX_CONCURRENT, DEFAULT_SUBAGENT_MAX_CONCURRENT } from ".
5
5
  let defaultWarnState = { warned: false };
6
6
  const DEFAULT_MODEL_ALIASES = {
7
7
  // Anthropic (pi-ai catalog uses "latest" ids without date suffix)
8
- opus: "anthropic/claude-opus-4-5",
8
+ opus: "anthropic/claude-opus-4-6",
9
9
  sonnet: "anthropic/claude-sonnet-4-5",
10
10
  // OpenAI
11
11
  gpt: "openai/gpt-5.2",
@@ -145,7 +145,8 @@ export function applyModelDefaults(cfg) {
145
145
  if (raw.contextWindow !== contextWindow)
146
146
  modelMutated = true;
147
147
  const defaultMaxTokens = Math.min(DEFAULT_MODEL_MAX_TOKENS, contextWindow);
148
- const maxTokens = isPositiveNumber(raw.maxTokens) ? raw.maxTokens : defaultMaxTokens;
148
+ const rawMaxTokens = isPositiveNumber(raw.maxTokens) ? raw.maxTokens : defaultMaxTokens;
149
+ const maxTokens = Math.min(rawMaxTokens, contextWindow);
149
150
  if (raw.maxTokens !== maxTokens)
150
151
  modelMutated = true;
151
152
  if (!modelMutated)
package/dist/config/io.js CHANGED
@@ -15,7 +15,7 @@ import { normalizeConfigPaths } from "./normalize-paths.js";
15
15
  import { resolveConfigPath, resolveDefaultConfigCandidates, resolveStateDir } from "./paths.js";
16
16
  import { applyConfigOverrides } from "./runtime-overrides.js";
17
17
  import { validateConfigObjectWithPlugins } from "./validation.js";
18
- import { compareMoltbotVersions } from "./version.js";
18
+ import { comparePoolbotVersions } from "./version.js";
19
19
  // Re-export for backwards compatibility
20
20
  export { CircularIncludeError, ConfigIncludeError } from "./includes.js";
21
21
  export { MissingEnvVarError } from "./env-substitution.js";
@@ -103,11 +103,11 @@ function warnIfConfigFromFuture(cfg, logger) {
103
103
  const touched = cfg.meta?.lastTouchedVersion;
104
104
  if (!touched)
105
105
  return;
106
- const cmp = compareMoltbotVersions(VERSION, touched);
106
+ const cmp = comparePoolbotVersions(VERSION, touched);
107
107
  if (cmp === null)
108
108
  return;
109
109
  if (cmp < 0) {
110
- logger.warn(`Config was last written by a newer Moltbot (${touched}); current version is ${VERSION}.`);
110
+ logger.warn(`Config was last written by a newer Poolbot (${touched}); current version is ${VERSION}.`);
111
111
  }
112
112
  }
113
113
  function applyConfigEnv(cfg, env) {