@poolzin/pool-bot 2026.2.25 → 2026.2.26

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 (506) hide show
  1. package/dist/acp/event-mapper.js +87 -22
  2. package/dist/acp/meta.js +12 -6
  3. package/dist/agents/agent-paths.js +8 -9
  4. package/dist/agents/agent-scope.js +7 -5
  5. package/dist/agents/auth-profiles/oauth.js +148 -64
  6. package/dist/agents/auth-profiles/session-override.js +13 -7
  7. package/dist/agents/bash-tools.exec-host-gateway.js +14 -4
  8. package/dist/agents/bash-tools.exec-runtime.js +2 -25
  9. package/dist/agents/bedrock-discovery.js +3 -1
  10. package/dist/agents/byteplus-models.js +97 -0
  11. package/dist/agents/chutes-oauth.js +1 -0
  12. package/dist/agents/cli-runner/helpers.js +4 -0
  13. package/dist/agents/compaction.js +41 -14
  14. package/dist/agents/doubao-models.js +121 -0
  15. package/dist/agents/failover-error.js +2 -0
  16. package/dist/agents/huggingface-models.js +5 -3
  17. package/dist/agents/live-model-filter.js +5 -0
  18. package/dist/agents/minimax-vlm.js +10 -8
  19. package/dist/agents/model-auth.js +6 -0
  20. package/dist/agents/model-catalog.js +3 -1
  21. package/dist/agents/model-selection.js +7 -1
  22. package/dist/agents/models-config.providers.js +93 -11
  23. package/dist/agents/ollama-stream.js +117 -4
  24. package/dist/agents/opencode-zen-models.js +22 -11
  25. package/dist/agents/pi-embedded-helpers/errors.js +55 -33
  26. package/dist/agents/pi-embedded-helpers/messaging-dedupe.js +10 -5
  27. package/dist/agents/pi-embedded-helpers/thinking.js +10 -5
  28. package/dist/agents/pi-embedded-helpers.js +1 -1
  29. package/dist/agents/pi-embedded-runner/compact.js +29 -7
  30. package/dist/agents/pi-embedded-runner/extensions.js +28 -26
  31. package/dist/agents/pi-embedded-runner/google.js +20 -8
  32. package/dist/agents/pi-embedded-runner/run/attempt.js +95 -36
  33. package/dist/agents/pi-embedded-runner/run.js +71 -12
  34. package/dist/agents/pi-embedded-runner/run.overflow-compaction.mocks.shared.js +11 -2
  35. package/dist/agents/pi-embedded-runner/session-manager-cache.js +11 -7
  36. package/dist/agents/pi-embedded-runner/system-prompt.js +2 -0
  37. package/dist/agents/pi-embedded-runner/thinking.js +42 -0
  38. package/dist/agents/pi-embedded-runner/tool-name-allowlist.js +19 -0
  39. package/dist/agents/pi-embedded-runner/utils.js +7 -10
  40. package/dist/agents/pi-embedded-subscribe.handlers.lifecycle.js +45 -56
  41. package/dist/agents/pi-embedded-subscribe.handlers.tools.js +2 -2
  42. package/dist/agents/pi-embedded-subscribe.js +9 -4
  43. package/dist/agents/pi-embedded-subscribe.tools.js +68 -14
  44. package/dist/agents/pi-embedded-utils.js +3 -0
  45. package/dist/agents/pi-extensions/compaction-safeguard-runtime.js +4 -20
  46. package/dist/agents/pi-extensions/compaction-safeguard.js +75 -33
  47. package/dist/agents/pi-settings.js +40 -0
  48. package/dist/agents/pi-tools.policy.js +2 -1
  49. package/dist/agents/provider/config-loader.js +1 -1
  50. package/dist/agents/sandbox/browser.js +170 -33
  51. package/dist/agents/sandbox/config-hash.js +14 -27
  52. package/dist/agents/sandbox/config.js +21 -2
  53. package/dist/agents/sandbox/constants.js +2 -0
  54. package/dist/agents/sandbox/docker.js +16 -2
  55. package/dist/agents/sandbox/novnc-auth.js +62 -0
  56. package/dist/agents/sandbox/sanitize-env-vars.js +1 -1
  57. package/dist/agents/sandbox/shared.js +10 -6
  58. package/dist/agents/sandbox-paths.js +24 -11
  59. package/dist/agents/schema/clean-for-gemini.js +132 -85
  60. package/dist/agents/session-slug.js +10 -5
  61. package/dist/agents/session-tool-result-guard-wrapper.js +1 -0
  62. package/dist/agents/session-tool-result-guard.js +3 -1
  63. package/dist/agents/session-transcript-repair.js +40 -6
  64. package/dist/agents/skills/bundled-dir.js +19 -5
  65. package/dist/agents/skills/env-overrides.js +124 -43
  66. package/dist/agents/skills/frontmatter.js +6 -6
  67. package/dist/agents/skills/plugin-skills.js +14 -7
  68. package/dist/agents/skills/workspace.js +1 -0
  69. package/dist/agents/subagent-announce.js +251 -49
  70. package/dist/agents/subagent-lifecycle-events.js +19 -0
  71. package/dist/agents/subagent-registry-cleanup.js +31 -0
  72. package/dist/agents/subagent-registry-completion.js +68 -0
  73. package/dist/agents/subagent-registry-queries.js +117 -0
  74. package/dist/agents/subagent-registry-state.js +46 -0
  75. package/dist/agents/subagent-registry.js +252 -221
  76. package/dist/agents/subagent-registry.store.js +1 -0
  77. package/dist/agents/subagent-registry.types.js +1 -0
  78. package/dist/agents/subagent-spawn.js +195 -7
  79. package/dist/agents/system-prompt.js +22 -6
  80. package/dist/agents/test-helpers/fast-coding-tools.js +1 -18
  81. package/dist/agents/test-helpers/fast-core-tools.js +1 -17
  82. package/dist/agents/timeout.js +18 -6
  83. package/dist/agents/tool-call-id.js +1 -1
  84. package/dist/agents/tool-display-common.js +162 -29
  85. package/dist/agents/tool-images.js +82 -9
  86. package/dist/agents/tool-policy.js +51 -26
  87. package/dist/agents/tools/browser-tool.js +2 -2
  88. package/dist/agents/tools/canvas-tool.js +27 -1
  89. package/dist/agents/tools/common.js +45 -0
  90. package/dist/agents/tools/discord-actions-guild.js +4 -1
  91. package/dist/agents/tools/gateway-tool.js +3 -1
  92. package/dist/agents/tools/nodes-utils.js +1 -10
  93. package/dist/agents/tools/sessions-send-helpers.js +12 -6
  94. package/dist/agents/tools/sessions-spawn-tool.js +8 -2
  95. package/dist/agents/tools/subagents-tool.js +2 -1
  96. package/dist/agents/tools/whatsapp-actions.js +10 -2
  97. package/dist/agents/tools/whatsapp-target-auth.js +18 -0
  98. package/dist/agents/transcript-policy.js +22 -8
  99. package/dist/agents/venice-models.js +11 -3
  100. package/dist/auto-reply/commands-registry.data.js +51 -0
  101. package/dist/auto-reply/commands-registry.js +4 -3
  102. package/dist/auto-reply/group-activation.js +10 -5
  103. package/dist/auto-reply/inbound-debounce.js +10 -5
  104. package/dist/auto-reply/reply/abort.js +1 -1
  105. package/dist/auto-reply/reply/agent-runner-execution.js +4 -1
  106. package/dist/auto-reply/reply/bash-command.js +41 -39
  107. package/dist/auto-reply/reply/command-gates.js +25 -0
  108. package/dist/auto-reply/reply/commands-allowlist.js +111 -72
  109. package/dist/auto-reply/reply/commands-bash.js +6 -5
  110. package/dist/auto-reply/reply/commands-config.js +30 -28
  111. package/dist/auto-reply/reply/commands-core.js +2 -1
  112. package/dist/auto-reply/reply/commands-info.js +1 -0
  113. package/dist/auto-reply/reply/commands-models.js +65 -14
  114. package/dist/auto-reply/reply/commands-session.js +237 -82
  115. package/dist/auto-reply/reply/commands-setunset.js +45 -0
  116. package/dist/auto-reply/reply/commands-subagents/action-agents.js +44 -0
  117. package/dist/auto-reply/reply/commands-subagents/action-focus.js +64 -0
  118. package/dist/auto-reply/reply/commands-subagents/action-help.js +4 -0
  119. package/dist/auto-reply/reply/commands-subagents/action-info.js +45 -0
  120. package/dist/auto-reply/reply/commands-subagents/action-kill.js +60 -0
  121. package/dist/auto-reply/reply/commands-subagents/action-list.js +44 -0
  122. package/dist/auto-reply/reply/commands-subagents/action-log.js +29 -0
  123. package/dist/auto-reply/reply/commands-subagents/action-send.js +119 -0
  124. package/dist/auto-reply/reply/commands-subagents/action-spawn.js +52 -0
  125. package/dist/auto-reply/reply/commands-subagents/action-unfocus.js +30 -0
  126. package/dist/auto-reply/reply/commands-subagents/shared.js +303 -0
  127. package/dist/auto-reply/reply/commands-subagents.js +51 -587
  128. package/dist/auto-reply/reply/commands-tts.js +10 -5
  129. package/dist/auto-reply/reply/config-value.js +10 -5
  130. package/dist/auto-reply/reply/directive-handling.model-picker.js +12 -6
  131. package/dist/auto-reply/reply/directive-handling.persist.js +9 -21
  132. package/dist/auto-reply/reply/directive-handling.shared.js +24 -4
  133. package/dist/auto-reply/reply/followup-runner.js +1 -0
  134. package/dist/auto-reply/reply/get-reply-directives-utils.js +23 -14
  135. package/dist/auto-reply/reply/get-reply-directives.js +17 -28
  136. package/dist/auto-reply/reply/get-reply-inline-actions.js +1 -0
  137. package/dist/auto-reply/reply/get-reply.js +71 -12
  138. package/dist/auto-reply/reply/model-selection.js +80 -39
  139. package/dist/auto-reply/reply/queue/enqueue.js +10 -5
  140. package/dist/auto-reply/reply/queue/state.js +13 -12
  141. package/dist/auto-reply/reply/reply-payloads.js +67 -36
  142. package/dist/auto-reply/reply/reply-reference.js +9 -8
  143. package/dist/auto-reply/reply/route-reply.js +15 -8
  144. package/dist/auto-reply/reply/session-reset-prompt.js +1 -1
  145. package/dist/auto-reply/reply/session.js +22 -6
  146. package/dist/auto-reply/reply/strip-inbound-meta.js +147 -0
  147. package/dist/auto-reply/reply/subagents-utils.js +56 -30
  148. package/dist/auto-reply/reply/typing.js +46 -21
  149. package/dist/auto-reply/send-policy.js +14 -7
  150. package/dist/auto-reply/status.js +140 -16
  151. package/dist/auto-reply/templating.js +10 -5
  152. package/dist/auto-reply/thinking.js +7 -16
  153. package/dist/auto-reply/tokens.js +21 -5
  154. package/dist/browser/bridge-server.js +36 -20
  155. package/dist/browser/cdp.helpers.js +7 -14
  156. package/dist/browser/cdp.js +35 -15
  157. package/dist/browser/chrome.profile-decoration.js +7 -4
  158. package/dist/browser/config.js +4 -0
  159. package/dist/browser/extension-relay-auth.js +55 -0
  160. package/dist/browser/extension-relay.js +74 -29
  161. package/dist/browser/navigation-guard.js +9 -1
  162. package/dist/browser/paths.js +77 -0
  163. package/dist/browser/profiles.js +13 -8
  164. package/dist/browser/pw-ai-module.js +10 -5
  165. package/dist/browser/pw-session.js +76 -39
  166. package/dist/browser/pw-tools-core.interactions.js +14 -7
  167. package/dist/browser/pw-tools-core.state.js +12 -6
  168. package/dist/browser/routes/agent.act.js +2 -2
  169. package/dist/browser/server-context.js +7 -0
  170. package/dist/build-info.json +3 -3
  171. package/dist/channels/allow-from.js +2 -1
  172. package/dist/channels/allowlists/resolve-utils.js +43 -19
  173. package/dist/channels/channel-config.js +14 -7
  174. package/dist/channels/draft-stream-loop.js +7 -0
  175. package/dist/channels/model-overrides.js +82 -0
  176. package/dist/channels/plugins/normalize/imessage.js +14 -7
  177. package/dist/channels/plugins/normalize/slack.js +10 -5
  178. package/dist/channels/plugins/normalize/telegram.js +14 -7
  179. package/dist/channels/plugins/outbound/discord.js +80 -8
  180. package/dist/channels/plugins/outbound/signal.js +11 -11
  181. package/dist/channels/plugins/setup-helpers.js +10 -5
  182. package/dist/channels/sender-label.js +14 -7
  183. package/dist/channels/session.js +4 -2
  184. package/dist/channels/status-reactions.js +297 -0
  185. package/dist/cli/banner.js +1 -1
  186. package/dist/cli/browser-cli-actions-input/register.files-downloads.js +65 -56
  187. package/dist/cli/cli-name.js +11 -11
  188. package/dist/cli/cli-utils.js +13 -3
  189. package/dist/cli/command-format.js +1 -1
  190. package/dist/cli/config-cli.js +1 -1
  191. package/dist/cli/daemon-cli/lifecycle-core.js +31 -19
  192. package/dist/cli/daemon-cli/lifecycle.js +64 -2
  193. package/dist/cli/daemon-cli/restart-health.js +126 -0
  194. package/dist/cli/daemon-cli/status.gather.js +9 -13
  195. package/dist/cli/daemon-cli/status.print.js +2 -10
  196. package/dist/cli/deps.js +27 -22
  197. package/dist/cli/gateway-cli/run-loop.js +23 -5
  198. package/dist/cli/node-cli/register.js +14 -5
  199. package/dist/cli/nodes-media-utils.js +7 -2
  200. package/dist/cli/outbound-send-deps.js +2 -9
  201. package/dist/cli/outbound-send-mapping.js +11 -0
  202. package/dist/cli/pairing-cli.js +40 -14
  203. package/dist/cli/plugins-cli.js +34 -41
  204. package/dist/cli/ports.js +11 -10
  205. package/dist/cli/program/command-registry.js +2 -11
  206. package/dist/cli/program/command-tree.js +16 -0
  207. package/dist/cli/program/preaction.js +13 -9
  208. package/dist/cli/program/register.configure.js +3 -18
  209. package/dist/cli/program/register.maintenance.js +2 -2
  210. package/dist/cli/program/register.onboard.js +2 -0
  211. package/dist/cli/program/register.status-health-sessions.js +16 -17
  212. package/dist/cli/program/register.subclis.js +93 -52
  213. package/dist/cli/route.js +11 -7
  214. package/dist/cli/system-cli.js +36 -46
  215. package/dist/cli/update-cli/shared.js +22 -9
  216. package/dist/cli/update-cli/update-command.js +89 -14
  217. package/dist/cli/update-cli/wizard.js +6 -12
  218. package/dist/commands/agent/run-context.js +18 -5
  219. package/dist/commands/agent/session-store.js +17 -4
  220. package/dist/commands/agent.js +22 -2
  221. package/dist/commands/agents.bindings.js +14 -7
  222. package/dist/commands/agents.commands.add.js +13 -9
  223. package/dist/commands/agents.commands.identity.js +12 -6
  224. package/dist/commands/agents.commands.list.js +11 -6
  225. package/dist/commands/agents.config.js +8 -10
  226. package/dist/commands/agents.providers.js +12 -6
  227. package/dist/commands/auth-choice-options.js +103 -75
  228. package/dist/commands/auth-choice.apply.byteplus.js +55 -0
  229. package/dist/commands/auth-choice.apply.js +4 -0
  230. package/dist/commands/auth-choice.apply.minimax.js +61 -13
  231. package/dist/commands/auth-choice.apply.openai.js +3 -1
  232. package/dist/commands/auth-choice.apply.volcengine.js +55 -0
  233. package/dist/commands/auth-choice.preferred-provider.js +2 -0
  234. package/dist/commands/channels/remove.js +13 -6
  235. package/dist/commands/channels/shared.js +4 -14
  236. package/dist/commands/configure.commands.js +14 -0
  237. package/dist/commands/configure.gateway.js +2 -4
  238. package/dist/commands/configure.js +1 -1
  239. package/dist/commands/configure.shared.js +11 -0
  240. package/dist/commands/daemon-install-helpers.js +2 -2
  241. package/dist/commands/dashboard.js +12 -10
  242. package/dist/commands/docs.js +14 -8
  243. package/dist/commands/doctor-config-flow.js +11 -9
  244. package/dist/commands/doctor-legacy-config.js +281 -0
  245. package/dist/commands/doctor-state-integrity.js +99 -23
  246. package/dist/commands/doctor-update.js +12 -9
  247. package/dist/commands/models/list.list-command.js +7 -5
  248. package/dist/commands/models/set-image.js +2 -21
  249. package/dist/commands/node-daemon-install-helpers.js +10 -8
  250. package/dist/commands/onboard-auth.config-minimax.js +54 -80
  251. package/dist/commands/onboard-auth.config-opencode.js +2 -18
  252. package/dist/commands/onboard-auth.credentials.js +90 -13
  253. package/dist/commands/onboard-auth.js +1 -1
  254. package/dist/commands/onboard-auth.models.js +6 -5
  255. package/dist/commands/onboard-hooks.js +1 -1
  256. package/dist/commands/onboard-non-interactive/api-keys.js +14 -7
  257. package/dist/commands/onboard-non-interactive/local/auth-choice.js +64 -49
  258. package/dist/commands/onboard-provider-auth-flags.js +14 -0
  259. package/dist/commands/onboard-remote.js +14 -7
  260. package/dist/commands/onboard.js +11 -13
  261. package/dist/commands/sandbox-display.js +6 -5
  262. package/dist/commands/status-all/diagnosis.js +14 -10
  263. package/dist/commands/status-all/format.js +1 -0
  264. package/dist/commands/status.gateway-probe.js +1 -16
  265. package/dist/commands/systemd-linger.js +12 -6
  266. package/dist/config/agent-limits.js +2 -0
  267. package/dist/config/commands.js +30 -16
  268. package/dist/config/config-paths.js +9 -11
  269. package/dist/config/defaults.js +22 -2
  270. package/dist/config/discord-preview-streaming.js +104 -0
  271. package/dist/config/env-vars.js +37 -8
  272. package/dist/config/includes.js +4 -0
  273. package/dist/config/io.js +97 -12
  274. package/dist/config/legacy.migrations.part-1.js +189 -78
  275. package/dist/config/legacy.shared.js +3 -1
  276. package/dist/config/merge-patch.js +4 -0
  277. package/dist/config/prototype-keys.js +4 -0
  278. package/dist/config/schema.help.js +44 -7
  279. package/dist/config/schema.labels.js +38 -6
  280. package/dist/config/sessions/delivery-info.js +10 -3
  281. package/dist/config/sessions/main-session.js +10 -5
  282. package/dist/config/sessions/session-file.js +33 -0
  283. package/dist/config/sessions/session-key.js +10 -5
  284. package/dist/config/sessions/store.js +1 -1
  285. package/dist/config/sessions.js +1 -0
  286. package/dist/config/zod-schema.agent-runtime.js +11 -0
  287. package/dist/config/zod-schema.js +148 -13
  288. package/dist/config/zod-schema.providers-core.js +78 -4
  289. package/dist/config/zod-schema.providers.js +6 -1
  290. package/dist/config/zod-schema.session.js +41 -2
  291. package/dist/cron/run-log.js +3 -0
  292. package/dist/cron/schedule.js +21 -10
  293. package/dist/cron/service/ops.js +35 -21
  294. package/dist/cron/service/timer.js +116 -16
  295. package/dist/cron/stagger.js +3 -1
  296. package/dist/discord/api.js +12 -6
  297. package/dist/discord/draft-chunking.js +22 -0
  298. package/dist/discord/draft-stream.js +124 -0
  299. package/dist/discord/monitor/agent-components.js +1 -1
  300. package/dist/discord/monitor/commands.js +5 -0
  301. package/dist/discord/monitor/gateway-plugin.js +2 -1
  302. package/dist/discord/monitor/listeners.js +37 -27
  303. package/dist/discord/monitor/message-handler.js +4 -1
  304. package/dist/discord/monitor/message-handler.preflight.js +65 -8
  305. package/dist/discord/monitor/message-handler.process.js +246 -217
  306. package/dist/discord/monitor/message-utils.js +143 -6
  307. package/dist/discord/monitor/model-picker-preferences.js +143 -0
  308. package/dist/discord/monitor/model-picker.js +651 -0
  309. package/dist/discord/monitor/native-command.js +573 -16
  310. package/dist/discord/monitor/provider.allowlist.js +223 -0
  311. package/dist/discord/monitor/provider.js +275 -347
  312. package/dist/discord/monitor/provider.lifecycle.js +100 -0
  313. package/dist/discord/monitor/reply-delivery.js +123 -16
  314. package/dist/discord/monitor/thread-bindings.discord-api.js +215 -0
  315. package/dist/discord/monitor/thread-bindings.js +4 -0
  316. package/dist/discord/monitor/thread-bindings.lifecycle.js +177 -0
  317. package/dist/discord/monitor/thread-bindings.manager.js +423 -0
  318. package/dist/discord/monitor/thread-bindings.messages.js +55 -0
  319. package/dist/discord/monitor/thread-bindings.state.js +358 -0
  320. package/dist/discord/monitor/thread-bindings.types.js +6 -0
  321. package/dist/discord/resolve-users.js +33 -21
  322. package/dist/discord/send.channels.js +15 -0
  323. package/dist/discord/send.js +3 -2
  324. package/dist/discord/send.outbound.js +82 -26
  325. package/dist/discord/send.permissions.js +83 -30
  326. package/dist/discord/send.reactions.js +8 -4
  327. package/dist/discord/token.js +10 -5
  328. package/dist/discord/voice/command.js +263 -0
  329. package/dist/discord/voice/manager.js +531 -0
  330. package/dist/gateway/auth.js +34 -10
  331. package/dist/gateway/call.js +4 -16
  332. package/dist/gateway/client.js +28 -4
  333. package/dist/gateway/config-reload.js +3 -4
  334. package/dist/gateway/control-ui.js +219 -96
  335. package/dist/gateway/hooks-mapping.js +88 -38
  336. package/dist/gateway/http-auth-helpers.js +3 -2
  337. package/dist/gateway/http-endpoint-helpers.js +1 -0
  338. package/dist/gateway/net.js +54 -12
  339. package/dist/gateway/node-invoke-system-run-approval.js +14 -35
  340. package/dist/gateway/node-registry.js +10 -5
  341. package/dist/gateway/openai-http.js +1 -0
  342. package/dist/gateway/openresponses-http.js +1 -0
  343. package/dist/gateway/origin-check.js +1 -18
  344. package/dist/gateway/protocol/index.js +4 -3
  345. package/dist/gateway/protocol/schema/cron.js +1 -0
  346. package/dist/gateway/protocol/schema/devices.js +1 -0
  347. package/dist/gateway/protocol/schema/protocol-schemas.js +2 -1
  348. package/dist/gateway/protocol/schema/sessions.js +6 -0
  349. package/dist/gateway/role-policy.js +17 -0
  350. package/dist/gateway/server/ws-connection/connect-policy.js +37 -0
  351. package/dist/gateway/server/ws-connection/message-handler.js +175 -148
  352. package/dist/gateway/server-chat.js +83 -25
  353. package/dist/gateway/server-constants.js +10 -9
  354. package/dist/gateway/server-cron.js +1 -0
  355. package/dist/gateway/server-http.js +16 -7
  356. package/dist/gateway/server-maintenance.js +20 -5
  357. package/dist/gateway/server-methods/chat.js +10 -6
  358. package/dist/gateway/server-methods/config.js +12 -14
  359. package/dist/gateway/server-methods/devices.js +17 -3
  360. package/dist/gateway/server-methods/models.js +11 -1
  361. package/dist/gateway/server-methods/sessions.js +64 -8
  362. package/dist/gateway/server-methods/usage.js +162 -75
  363. package/dist/gateway/server-node-events.js +29 -0
  364. package/dist/gateway/server-runtime-config.js +34 -13
  365. package/dist/gateway/server-startup-memory.js +17 -11
  366. package/dist/gateway/session-utils.fs.js +32 -34
  367. package/dist/gateway/sessions-resolve.js +17 -5
  368. package/dist/gateway/test-helpers.openai-mock.js +14 -7
  369. package/dist/gateway/tools-invoke-http.js +21 -10
  370. package/dist/hooks/bundled/bootstrap-extra-files/handler.js +3 -1
  371. package/dist/hooks/bundled/command-logger/handler.js +7 -2
  372. package/dist/hooks/bundled/session-memory/handler.js +6 -5
  373. package/dist/hooks/frontmatter.js +6 -6
  374. package/dist/hooks/gmail-watcher.js +11 -6
  375. package/dist/hooks/internal-hooks.js +11 -1
  376. package/dist/hooks/llm-slug-generator.js +4 -1
  377. package/dist/hooks/workspace.js +47 -17
  378. package/dist/imessage/accounts.js +9 -20
  379. package/dist/imessage/monitor/inbound-processing.js +2 -1
  380. package/dist/infra/archive.js +174 -73
  381. package/dist/infra/control-ui-assets.js +14 -6
  382. package/dist/infra/device-pairing.js +108 -29
  383. package/dist/infra/env.js +10 -5
  384. package/dist/infra/exec-approvals-allowlist.js +122 -0
  385. package/dist/infra/exec-approvals-analysis.js +34 -3
  386. package/dist/infra/exec-approvals.js +5 -17
  387. package/dist/infra/exec-safe-bin-policy.js +53 -45
  388. package/dist/infra/fs-safe.js +71 -39
  389. package/dist/infra/gateway-lock.js +6 -2
  390. package/dist/infra/heartbeat-wake.js +6 -12
  391. package/dist/infra/host-env-security-policy.json +19 -0
  392. package/dist/infra/host-env-security.js +66 -0
  393. package/dist/infra/net/ssrf.js +131 -38
  394. package/dist/infra/outbound/bound-delivery-router.js +88 -0
  395. package/dist/infra/outbound/channel-selection.js +12 -6
  396. package/dist/infra/outbound/envelope.js +1 -1
  397. package/dist/infra/outbound/format.js +12 -6
  398. package/dist/infra/outbound/payloads.js +14 -7
  399. package/dist/infra/outbound/session-binding-service.js +123 -0
  400. package/dist/infra/path-guards.js +25 -0
  401. package/dist/infra/provider-usage.fetch.codex.js +7 -15
  402. package/dist/infra/provider-usage.fetch.gemini.js +14 -11
  403. package/dist/infra/provider-usage.fetch.shared.js +30 -1
  404. package/dist/infra/provider-usage.fetch.zai.js +10 -9
  405. package/dist/infra/retry-policy.js +4 -2
  406. package/dist/infra/retry.js +9 -5
  407. package/dist/infra/session-cost-usage.js +107 -59
  408. package/dist/infra/session-maintenance-warning.js +3 -1
  409. package/dist/infra/shell-env.js +98 -34
  410. package/dist/infra/ssh-config.js +12 -6
  411. package/dist/infra/system-run-command.js +49 -4
  412. package/dist/infra/update-channels.js +10 -5
  413. package/dist/line/accounts.js +5 -7
  414. package/dist/line/bot-access.js +8 -20
  415. package/dist/line/bot-handlers.js +3 -1
  416. package/dist/link-understanding/detect.js +15 -7
  417. package/dist/media/constants.js +15 -6
  418. package/dist/media/image-ops.js +7 -0
  419. package/dist/media/local-roots.js +3 -2
  420. package/dist/media-understanding/apply.js +4 -1
  421. package/dist/media-understanding/concurrency.js +8 -20
  422. package/dist/memory/backend-config.js +45 -6
  423. package/dist/memory/embeddings.js +10 -4
  424. package/dist/memory/fs-utils.js +23 -0
  425. package/dist/memory/manager-search.js +12 -6
  426. package/dist/memory/manager-sync-ops.js +12 -2
  427. package/dist/memory/qmd-manager.js +466 -53
  428. package/dist/memory/query-expansion.js +167 -3
  429. package/dist/memory/status-format.js +10 -5
  430. package/dist/memory/sync-memory-files.js +1 -1
  431. package/dist/node-host/invoke-system-run.js +281 -0
  432. package/dist/node-host/invoke.js +55 -337
  433. package/dist/pairing/pairing-store.js +22 -0
  434. package/dist/plugin-sdk/allow-from.js +1 -1
  435. package/dist/plugin-sdk/command-auth.js +3 -1
  436. package/dist/plugin-sdk/index.js +6 -3
  437. package/dist/plugin-sdk/webhook-targets.js +32 -0
  438. package/dist/plugins/bundled-dir.js +9 -6
  439. package/dist/plugins/hooks.js +50 -0
  440. package/dist/plugins/install.js +28 -16
  441. package/dist/plugins/runtime.js +3 -17
  442. package/dist/plugins/update.js +78 -12
  443. package/dist/process/spawn-utils.js +14 -7
  444. package/dist/providers/github-copilot-token.js +11 -6
  445. package/dist/providers/qwen-portal-oauth.js +14 -6
  446. package/dist/routing/account-id.js +30 -0
  447. package/dist/routing/resolve-route.js +3 -7
  448. package/dist/routing/session-key.js +2 -16
  449. package/dist/security/audit-channel.js +93 -2
  450. package/dist/security/audit-extra.async.js +159 -5
  451. package/dist/security/audit-extra.js +1 -1
  452. package/dist/security/audit-extra.sync.js +85 -6
  453. package/dist/security/audit.js +40 -4
  454. package/dist/security/dm-policy-shared.js +44 -0
  455. package/dist/security/external-content.js +26 -6
  456. package/dist/shared/entry-status.js +6 -0
  457. package/dist/shared/frontmatter.js +5 -5
  458. package/dist/shared/node-match.js +11 -4
  459. package/dist/shared/operator-scope-compat.js +8 -3
  460. package/dist/signal/accounts.js +7 -20
  461. package/dist/signal/monitor/event-handler.js +3 -1
  462. package/dist/slack/accounts.js +6 -19
  463. package/dist/slack/actions.js +11 -3
  464. package/dist/slack/monitor/auth.js +1 -1
  465. package/dist/slack/monitor/message-handler/dispatch.js +50 -29
  466. package/dist/slack/monitor/replies.js +15 -7
  467. package/dist/slack/monitor/slash.js +22 -13
  468. package/dist/slack/resolve-channels.js +10 -5
  469. package/dist/slack/send.js +102 -12
  470. package/dist/slack/stream-mode.js +10 -0
  471. package/dist/slack/streaming.js +4 -2
  472. package/dist/telegram/accounts.js +19 -14
  473. package/dist/telegram/bot/helpers.js +3 -5
  474. package/dist/telegram/bot-access.js +35 -36
  475. package/dist/telegram/bot-handlers.js +120 -148
  476. package/dist/telegram/bot-message-context.js +68 -9
  477. package/dist/telegram/bot-message-dispatch.js +155 -90
  478. package/dist/telegram/bot-native-commands.js +16 -0
  479. package/dist/telegram/draft-stream.js +14 -1
  480. package/dist/telegram/inline-buttons.js +5 -15
  481. package/dist/telegram/monitor.js +11 -7
  482. package/dist/telegram/network-config.js +19 -7
  483. package/dist/telegram/send.js +3 -2
  484. package/dist/telegram/sent-message-cache.js +5 -6
  485. package/dist/telegram/status-reaction-variants.js +208 -0
  486. package/dist/telegram/sticker-cache.js +11 -9
  487. package/dist/terminal/theme.js +12 -12
  488. package/dist/tts/tts.js +80 -567
  489. package/dist/tui/components/chat-log.js +41 -8
  490. package/dist/tui/theme/theme.js +10 -12
  491. package/dist/tui/tui-local-shell.js +16 -6
  492. package/dist/tui/tui.js +58 -6
  493. package/dist/utils/account-id.js +2 -4
  494. package/dist/utils/boolean.js +10 -5
  495. package/dist/utils/directive-tags.js +11 -0
  496. package/dist/utils/queue-helpers.js +67 -12
  497. package/dist/web/auto-reply/deliver-reply.js +8 -4
  498. package/dist/web/auto-reply/mentions.js +10 -5
  499. package/dist/web/auto-reply/monitor/group-members.js +14 -7
  500. package/dist/web/auto-reply/monitor/process-message.js +45 -24
  501. package/dist/web/inbound/access-control.js +5 -2
  502. package/dist/web/login-qr.js +12 -6
  503. package/dist/web/media.js +123 -16
  504. package/extensions/bluebubbles/src/monitor-processing.ts +580 -139
  505. package/extensions/bluebubbles/src/monitor.ts +208 -1950
  506. package/package.json +1 -1
@@ -4,6 +4,7 @@ import path from "node:path";
4
4
  import { loadConfig, writeConfigFile } from "../config/config.js";
5
5
  import { resolveStateDir } from "../config/paths.js";
6
6
  import { resolveArchiveKind } from "../infra/archive.js";
7
+ import { enablePluginInConfig } from "../plugins/enable.js";
7
8
  import { installPluginFromNpmSpec, installPluginFromPath } from "../plugins/install.js";
8
9
  import { recordPluginInstall } from "../plugins/installs.js";
9
10
  import { clearPluginManifestRegistryCache } from "../plugins/manifest-registry.js";
@@ -95,21 +96,6 @@ function createPluginInstallLogger() {
95
96
  warn: (msg) => defaultRuntime.log(theme.warn(msg)),
96
97
  };
97
98
  }
98
- function enablePluginInConfig(config, pluginId) {
99
- return {
100
- ...config,
101
- plugins: {
102
- ...config.plugins,
103
- entries: {
104
- ...config.plugins?.entries,
105
- [pluginId]: {
106
- ...config.plugins?.entries?.[pluginId],
107
- enabled: true,
108
- },
109
- },
110
- },
111
- };
112
- }
113
99
  function logSlotWarnings(warnings) {
114
100
  if (warnings.length === 0) {
115
101
  return;
@@ -122,7 +108,7 @@ export function registerPluginsCli(program) {
122
108
  const plugins = program
123
109
  .command("plugins")
124
110
  .description("Manage Pool Bot plugins and extensions")
125
- .addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/plugins", "docs.poolbot.ai/cli/plugins")}\n`);
111
+ .addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/plugins", "docs.molt.bot/cli/plugins")}\n`);
126
112
  plugins
127
113
  .command("list")
128
114
  .description("List discovered plugins")
@@ -289,24 +275,17 @@ export function registerPluginsCli(program) {
289
275
  .argument("<id>", "Plugin id")
290
276
  .action(async (id) => {
291
277
  const cfg = loadConfig();
292
- let next = {
293
- ...cfg,
294
- plugins: {
295
- ...cfg.plugins,
296
- entries: {
297
- ...cfg.plugins?.entries,
298
- [id]: {
299
- ...cfg.plugins?.entries?.[id],
300
- enabled: true,
301
- },
302
- },
303
- },
304
- };
278
+ const enableResult = enablePluginInConfig(cfg, id);
279
+ let next = enableResult.config;
305
280
  const slotResult = applySlotSelectionForPlugin(next, id);
306
281
  next = slotResult.config;
307
282
  await writeConfigFile(next);
308
283
  logSlotWarnings(slotResult.warnings);
309
- defaultRuntime.log(`Enabled plugin "${id}". Restart the gateway to apply.`);
284
+ if (enableResult.enabled) {
285
+ defaultRuntime.log(`Enabled plugin "${id}". Restart the gateway to apply.`);
286
+ return;
287
+ }
288
+ defaultRuntime.log(theme.warn(`Plugin "${id}" could not be enabled (${enableResult.reason ?? "unknown reason"}).`));
310
289
  });
311
290
  plugins
312
291
  .command("disable")
@@ -476,7 +455,7 @@ export function registerPluginsCli(program) {
476
455
  paths: merged,
477
456
  },
478
457
  },
479
- }, probe.pluginId);
458
+ }, probe.pluginId).config;
480
459
  next = recordPluginInstall(next, {
481
460
  pluginId: probe.pluginId,
482
461
  source: "path",
@@ -503,7 +482,7 @@ export function registerPluginsCli(program) {
503
482
  // Plugin CLI registrars may have warmed the manifest registry cache before install;
504
483
  // force a rescan so config validation sees the freshly installed plugin.
505
484
  clearPluginManifestRegistryCache();
506
- let next = enablePluginInConfig(cfg, result.pluginId);
485
+ let next = enablePluginInConfig(cfg, result.pluginId).config;
507
486
  const source = resolveArchiveKind(resolved) ? "archive" : "path";
508
487
  next = recordPluginInstall(next, {
509
488
  pluginId: result.pluginId,
@@ -549,15 +528,14 @@ export function registerPluginsCli(program) {
549
528
  }
550
529
  // Ensure config validation sees newly installed plugin(s) even if the cache was warmed at startup.
551
530
  clearPluginManifestRegistryCache();
552
- let next = enablePluginInConfig(cfg, result.pluginId);
553
- // PB's installPluginFromNpmSpec does not return npmResolution metadata yet;
554
- // record what we can (version from manifest) and store the raw spec.
555
- const recordSpec = opts.pin && result.version ? `${result.pluginId}@${result.version}` : raw;
556
- if (opts.pin && !result.version) {
531
+ let next = enablePluginInConfig(cfg, result.pluginId).config;
532
+ const resolvedSpec = result.npmResolution?.resolvedSpec;
533
+ const recordSpec = opts.pin && resolvedSpec ? resolvedSpec : raw;
534
+ if (opts.pin && !resolvedSpec) {
557
535
  defaultRuntime.log(theme.warn("Could not resolve exact npm version for --pin; storing original npm spec."));
558
536
  }
559
- if (opts.pin && result.version) {
560
- defaultRuntime.log(`Pinned npm install record to ${result.pluginId}@${result.version}.`);
537
+ if (opts.pin && resolvedSpec) {
538
+ defaultRuntime.log(`Pinned npm install record to ${resolvedSpec}.`);
561
539
  }
562
540
  next = recordPluginInstall(next, {
563
541
  pluginId: result.pluginId,
@@ -565,6 +543,12 @@ export function registerPluginsCli(program) {
565
543
  spec: recordSpec,
566
544
  installPath: result.targetDir,
567
545
  version: result.version,
546
+ resolvedName: result.npmResolution?.name,
547
+ resolvedVersion: result.npmResolution?.version,
548
+ resolvedSpec: result.npmResolution?.resolvedSpec,
549
+ integrity: result.npmResolution?.integrity,
550
+ shasum: result.npmResolution?.shasum,
551
+ resolvedAt: result.npmResolution?.resolvedAt,
568
552
  });
569
553
  const slotResult = applySlotSelectionForPlugin(next, result.pluginId);
570
554
  next = slotResult.config;
@@ -599,7 +583,16 @@ export function registerPluginsCli(program) {
599
583
  info: (msg) => defaultRuntime.log(msg),
600
584
  warn: (msg) => defaultRuntime.log(theme.warn(msg)),
601
585
  },
602
- // NOTE: onIntegrityDrift is available in OC but not yet ported to PB's update module.
586
+ onIntegrityDrift: async (drift) => {
587
+ const specLabel = drift.resolvedSpec ?? drift.spec;
588
+ defaultRuntime.log(theme.warn(`Integrity drift detected for "${drift.pluginId}" (${specLabel})` +
589
+ `\nExpected: ${drift.expectedIntegrity}` +
590
+ `\nActual: ${drift.actualIntegrity}`));
591
+ if (drift.dryRun) {
592
+ return true;
593
+ }
594
+ return await promptYesNo(`Continue updating "${drift.pluginId}" with this artifact?`);
595
+ },
603
596
  });
604
597
  for (const outcome of result.outcomes) {
605
598
  if (outcome.status === "error") {
@@ -645,7 +638,7 @@ export function registerPluginsCli(program) {
645
638
  lines.push(`- ${target}${diag.message}`);
646
639
  }
647
640
  }
648
- const docs = formatDocsLink("/plugin", "docs.poolbot.ai/plugin");
641
+ const docs = formatDocsLink("/plugin", "docs.molt.bot/plugin");
649
642
  lines.push("");
650
643
  lines.push(`${theme.muted("Docs:")} ${docs}`);
651
644
  defaultRuntime.log(lines.join("\n"));
package/dist/cli/ports.js CHANGED
@@ -1,24 +1,24 @@
1
1
  import { execFileSync } from "node:child_process";
2
2
  import { resolveLsofCommandSync } from "../infra/ports-lsof.js";
3
- function sleep(ms) {
4
- return new Promise((resolve) => setTimeout(resolve, ms));
5
- }
3
+ import { sleep } from "../utils.js";
6
4
  export function parseLsofOutput(output) {
7
5
  const lines = output.split(/\r?\n/).filter(Boolean);
8
6
  const results = [];
9
7
  let current = {};
10
8
  for (const line of lines) {
11
9
  if (line.startsWith("p")) {
12
- if (current.pid)
10
+ if (current.pid) {
13
11
  results.push(current);
12
+ }
14
13
  current = { pid: Number.parseInt(line.slice(1), 10) };
15
14
  }
16
15
  else if (line.startsWith("c")) {
17
16
  current.command = line.slice(1);
18
17
  }
19
18
  }
20
- if (current.pid)
19
+ if (current.pid) {
21
20
  results.push(current);
21
+ }
22
22
  return results;
23
23
  }
24
24
  export function listPortListeners(port) {
@@ -33,10 +33,11 @@ export function listPortListeners(port) {
33
33
  const status = err.status;
34
34
  const code = err.code;
35
35
  if (code === "ENOENT") {
36
- throw new Error("lsof not found; required for --force");
36
+ throw new Error("lsof not found; required for --force", { cause: err });
37
37
  }
38
- if (status === 1)
39
- return []; // no listeners
38
+ if (status === 1) {
39
+ return [];
40
+ } // no listeners
40
41
  throw err instanceof Error ? err : new Error(String(err));
41
42
  }
42
43
  }
@@ -47,7 +48,7 @@ export function forceFreePort(port) {
47
48
  process.kill(proc.pid, "SIGTERM");
48
49
  }
49
50
  catch (err) {
50
- throw new Error(`failed to kill pid ${proc.pid}${proc.command ? ` (${proc.command})` : ""}: ${String(err)}`);
51
+ throw new Error(`failed to kill pid ${proc.pid}${proc.command ? ` (${proc.command})` : ""}: ${String(err)}`, { cause: err });
51
52
  }
52
53
  }
53
54
  return listeners;
@@ -58,7 +59,7 @@ function killPids(listeners, signal) {
58
59
  process.kill(proc.pid, signal);
59
60
  }
60
61
  catch (err) {
61
- throw new Error(`failed to kill pid ${proc.pid}${proc.command ? ` (${proc.command})` : ""}: ${String(err)}`);
62
+ throw new Error(`failed to kill pid ${proc.pid}${proc.command ? ` (${proc.command})` : ""}: ${String(err)}`, { cause: err });
62
63
  }
63
64
  }
64
65
  }
@@ -1,5 +1,6 @@
1
1
  import { getPrimaryCommand, hasHelpOrVersion } from "../argv.js";
2
2
  import { reparseProgramFromActionArgs } from "./action-reparse.js";
3
+ import { removeCommandByName } from "./command-tree.js";
3
4
  import { registerSubCliCommands } from "./register.subclis.js";
4
5
  const shouldRegisterCorePrimaryOnly = (argv) => {
5
6
  if (hasHelpOrVersion(argv)) {
@@ -197,21 +198,11 @@ export function getCoreCliCommandNames() {
197
198
  export function getCoreCliCommandsWithSubcommands() {
198
199
  return collectCoreCliCommandNames((command) => command.hasSubcommands);
199
200
  }
200
- function removeCommand(program, command) {
201
- const commands = program.commands;
202
- const index = commands.indexOf(command);
203
- if (index >= 0) {
204
- commands.splice(index, 1);
205
- }
206
- }
207
201
  function removeEntryCommands(program, entry) {
208
202
  // Some registrars install multiple top-level commands (e.g. status/health/sessions).
209
203
  // Remove placeholders/old registrations for all names in the entry before re-registering.
210
204
  for (const cmd of entry.commands) {
211
- const existing = program.commands.find((c) => c.name() === cmd.name);
212
- if (existing) {
213
- removeCommand(program, existing);
214
- }
205
+ removeCommandByName(program, cmd.name);
215
206
  }
216
207
  }
217
208
  function registerLazyCoreCommand(program, ctx, entry, command) {
@@ -0,0 +1,16 @@
1
+ export function removeCommand(program, command) {
2
+ const commands = program.commands;
3
+ const index = commands.indexOf(command);
4
+ if (index < 0) {
5
+ return false;
6
+ }
7
+ commands.splice(index, 1);
8
+ return true;
9
+ }
10
+ export function removeCommandByName(program, name) {
11
+ const existing = program.commands.find((command) => command.name() === name);
12
+ if (!existing) {
13
+ return false;
14
+ }
15
+ return removeCommand(program, existing);
16
+ }
@@ -1,10 +1,8 @@
1
+ import { setVerbose } from "../../globals.js";
2
+ import { isTruthyEnvValue } from "../../infra/env.js";
1
3
  import { defaultRuntime } from "../../runtime.js";
2
- import { emitCliBanner } from "../banner.js";
3
4
  import { getCommandPath, getVerboseFlag, hasHelpOrVersion } from "../argv.js";
4
- import { ensureConfigReady } from "./config-guard.js";
5
- import { ensurePluginRegistryLoaded } from "../plugin-registry.js";
6
- import { isTruthyEnvValue } from "../../infra/env.js";
7
- import { setVerbose } from "../../globals.js";
5
+ import { emitCliBanner } from "../banner.js";
8
6
  import { resolveCliName } from "../cli-name.js";
9
7
  function setProcessTitleForCommand(actionCommand) {
10
8
  let current = actionCommand;
@@ -13,8 +11,9 @@ function setProcessTitleForCommand(actionCommand) {
13
11
  }
14
12
  const name = current.name();
15
13
  const cliName = resolveCliName();
16
- if (!name || name === cliName)
14
+ if (!name || name === cliName) {
17
15
  return;
16
+ }
18
17
  process.title = `${cliName}-${name}`;
19
18
  }
20
19
  // Commands that need channel plugins loaded
@@ -23,11 +22,13 @@ export function registerPreActionHooks(program, programVersion) {
23
22
  program.hook("preAction", async (_thisCommand, actionCommand) => {
24
23
  setProcessTitleForCommand(actionCommand);
25
24
  const argv = process.argv;
26
- if (hasHelpOrVersion(argv))
25
+ if (hasHelpOrVersion(argv)) {
27
26
  return;
27
+ }
28
28
  const commandPath = getCommandPath(argv, 2);
29
- const hideBanner = isTruthyEnvValue(process.env.POOLBOT_HIDE_BANNER || process.env.CLAWDBOT_HIDE_BANNER) ||
29
+ const hideBanner = isTruthyEnvValue(process.env.POOLBOT_HIDE_BANNER) ||
30
30
  commandPath[0] === "update" ||
31
+ commandPath[0] === "completion" ||
31
32
  (commandPath[0] === "plugins" && commandPath[1] === "update");
32
33
  if (!hideBanner) {
33
34
  emitCliBanner(programVersion);
@@ -37,11 +38,14 @@ export function registerPreActionHooks(program, programVersion) {
37
38
  if (!verbose) {
38
39
  process.env.NODE_NO_WARNINGS ??= "1";
39
40
  }
40
- if (commandPath[0] === "doctor")
41
+ if (commandPath[0] === "doctor" || commandPath[0] === "completion") {
41
42
  return;
43
+ }
44
+ const { ensureConfigReady } = await import("./config-guard.js");
42
45
  await ensureConfigReady({ runtime: defaultRuntime, commandPath });
43
46
  // Load plugins for commands that need channel access
44
47
  if (PLUGIN_REQUIRED_COMMANDS.has(commandPath[0])) {
48
+ const { ensurePluginRegistryLoaded } = await import("../plugin-registry.js");
45
49
  ensurePluginRegistryLoaded();
46
50
  }
47
51
  });
@@ -1,4 +1,4 @@
1
- import { CONFIGURE_WIZARD_SECTIONS, configureCommand, configureCommandWithSections, } from "../../commands/configure.js";
1
+ import { CONFIGURE_WIZARD_SECTIONS, configureCommandFromSectionsArg, } from "../../commands/configure.js";
2
2
  import { defaultRuntime } from "../../runtime.js";
3
3
  import { formatDocsLink } from "../../terminal/links.js";
4
4
  import { theme } from "../../terminal/theme.js";
@@ -6,27 +6,12 @@ import { runCommandWithRuntime } from "../cli-utils.js";
6
6
  export function registerConfigureCommand(program) {
7
7
  program
8
8
  .command("configure")
9
- .description("Interactive prompt to set up credentials, devices, and agent defaults")
9
+ .description("Interactive setup wizard for credentials, channels, gateway, and agent defaults")
10
10
  .addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/configure", "docs.molt.bot/cli/configure")}\n`)
11
11
  .option("--section <section>", `Configuration sections (repeatable). Options: ${CONFIGURE_WIZARD_SECTIONS.join(", ")}`, (value, previous) => [...previous, value], [])
12
12
  .action(async (opts) => {
13
13
  await runCommandWithRuntime(defaultRuntime, async () => {
14
- const sections = Array.isArray(opts.section)
15
- ? opts.section
16
- .map((value) => (typeof value === "string" ? value.trim() : ""))
17
- .filter(Boolean)
18
- : [];
19
- if (sections.length === 0) {
20
- await configureCommand(defaultRuntime);
21
- return;
22
- }
23
- const invalid = sections.filter((s) => !CONFIGURE_WIZARD_SECTIONS.includes(s));
24
- if (invalid.length > 0) {
25
- defaultRuntime.error(`Invalid --section: ${invalid.join(", ")}. Expected one of: ${CONFIGURE_WIZARD_SECTIONS.join(", ")}.`);
26
- defaultRuntime.exit(1);
27
- return;
28
- }
29
- await configureCommandWithSections(sections, defaultRuntime);
14
+ await configureCommandFromSectionsArg(opts.section, defaultRuntime);
30
15
  });
31
16
  });
32
17
  }
@@ -36,11 +36,11 @@ export function registerMaintenanceCommands(program) {
36
36
  .command("dashboard")
37
37
  .description("Open the Control UI with your current token")
38
38
  .addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/dashboard", "docs.molt.bot/cli/dashboard")}\n`)
39
- .option("--no-open", "Print URL but do not launch a browser", false)
39
+ .option("--no-open", "Print URL but do not launch a browser")
40
40
  .action(async (opts) => {
41
41
  await runCommandWithRuntime(defaultRuntime, async () => {
42
42
  await dashboardCommand(defaultRuntime, {
43
- noOpen: Boolean(opts.noOpen),
43
+ noOpen: opts.open === false,
44
44
  });
45
45
  });
46
46
  });
@@ -114,6 +114,8 @@ export function registerOnboardCommand(program) {
114
114
  xiaomiApiKey: opts.xiaomiApiKey,
115
115
  qianfanApiKey: opts.qianfanApiKey,
116
116
  minimaxApiKey: opts.minimaxApiKey,
117
+ volcengineApiKey: opts.volcengineApiKey,
118
+ byteplusApiKey: opts.byteplusApiKey,
117
119
  syntheticApiKey: opts.syntheticApiKey,
118
120
  veniceApiKey: opts.veniceApiKey,
119
121
  togetherApiKey: opts.togetherApiKey,
@@ -20,6 +20,17 @@ function parseTimeoutMs(timeout) {
20
20
  }
21
21
  return parsed;
22
22
  }
23
+ async function runWithVerboseAndTimeout(opts, action) {
24
+ const verbose = resolveVerbose(opts);
25
+ setVerbose(verbose);
26
+ const timeoutMs = parseTimeoutMs(opts.timeout);
27
+ if (timeoutMs === null) {
28
+ return;
29
+ }
30
+ await runCommandWithRuntime(defaultRuntime, async () => {
31
+ await action({ verbose, timeoutMs });
32
+ });
33
+ }
23
34
  export function registerStatusHealthSessionsCommands(program) {
24
35
  program
25
36
  .command("status")
@@ -44,19 +55,13 @@ export function registerStatusHealthSessionsCommands(program) {
44
55
  ])}`)
45
56
  .addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/status", "docs.molt.bot/cli/status")}\n`)
46
57
  .action(async (opts) => {
47
- const verbose = resolveVerbose(opts);
48
- setVerbose(verbose);
49
- const timeout = parseTimeoutMs(opts.timeout);
50
- if (timeout === null) {
51
- return;
52
- }
53
- await runCommandWithRuntime(defaultRuntime, async () => {
58
+ await runWithVerboseAndTimeout(opts, async ({ verbose, timeoutMs }) => {
54
59
  await statusCommand({
55
60
  json: Boolean(opts.json),
56
61
  all: Boolean(opts.all),
57
62
  deep: Boolean(opts.deep),
58
63
  usage: Boolean(opts.usage),
59
- timeoutMs: timeout,
64
+ timeoutMs,
60
65
  verbose,
61
66
  }, defaultRuntime);
62
67
  });
@@ -70,16 +75,10 @@ export function registerStatusHealthSessionsCommands(program) {
70
75
  .option("--debug", "Alias for --verbose", false)
71
76
  .addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/health", "docs.molt.bot/cli/health")}\n`)
72
77
  .action(async (opts) => {
73
- const verbose = resolveVerbose(opts);
74
- setVerbose(verbose);
75
- const timeout = parseTimeoutMs(opts.timeout);
76
- if (timeout === null) {
77
- return;
78
- }
79
- await runCommandWithRuntime(defaultRuntime, async () => {
78
+ await runWithVerboseAndTimeout(opts, async ({ verbose, timeoutMs }) => {
80
79
  await healthCommand({
81
80
  json: Boolean(opts.json),
82
- timeoutMs: timeout,
81
+ timeoutMs,
83
82
  verbose,
84
83
  }, defaultRuntime);
85
84
  });
@@ -96,7 +95,7 @@ export function registerStatusHealthSessionsCommands(program) {
96
95
  ["poolbot sessions --active 120", "Only last 2 hours."],
97
96
  ["poolbot sessions --json", "Machine-readable output."],
98
97
  ["poolbot sessions --store ./tmp/sessions.json", "Use a specific session store."],
99
- ])}\n\n${theme.muted("Shows token usage per session when the agent reports it; set agents.defaults.contextTokens to see % of your model window.")}`)
98
+ ])}\n\n${theme.muted("Shows token usage per session when the agent reports it; set agents.defaults.contextTokens to cap the window and show %.")}`)
100
99
  .addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/sessions", "docs.molt.bot/cli/sessions")}\n`)
101
100
  .action(async (opts) => {
102
101
  setVerbose(Boolean(opts.verbose));