@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.
- package/dist/acp/event-mapper.js +87 -22
- package/dist/acp/meta.js +12 -6
- package/dist/agents/agent-paths.js +8 -9
- package/dist/agents/agent-scope.js +7 -5
- package/dist/agents/auth-profiles/oauth.js +148 -64
- package/dist/agents/auth-profiles/session-override.js +13 -7
- package/dist/agents/bash-tools.exec-host-gateway.js +14 -4
- package/dist/agents/bash-tools.exec-runtime.js +2 -25
- package/dist/agents/bedrock-discovery.js +3 -1
- package/dist/agents/byteplus-models.js +97 -0
- package/dist/agents/chutes-oauth.js +1 -0
- package/dist/agents/cli-runner/helpers.js +4 -0
- package/dist/agents/compaction.js +41 -14
- package/dist/agents/doubao-models.js +121 -0
- package/dist/agents/failover-error.js +2 -0
- package/dist/agents/huggingface-models.js +5 -3
- package/dist/agents/live-model-filter.js +5 -0
- package/dist/agents/minimax-vlm.js +10 -8
- package/dist/agents/model-auth.js +6 -0
- package/dist/agents/model-catalog.js +3 -1
- package/dist/agents/model-selection.js +7 -1
- package/dist/agents/models-config.providers.js +93 -11
- package/dist/agents/ollama-stream.js +117 -4
- package/dist/agents/opencode-zen-models.js +22 -11
- package/dist/agents/pi-embedded-helpers/errors.js +55 -33
- package/dist/agents/pi-embedded-helpers/messaging-dedupe.js +10 -5
- package/dist/agents/pi-embedded-helpers/thinking.js +10 -5
- package/dist/agents/pi-embedded-helpers.js +1 -1
- package/dist/agents/pi-embedded-runner/compact.js +29 -7
- package/dist/agents/pi-embedded-runner/extensions.js +28 -26
- package/dist/agents/pi-embedded-runner/google.js +20 -8
- package/dist/agents/pi-embedded-runner/run/attempt.js +95 -36
- package/dist/agents/pi-embedded-runner/run.js +71 -12
- package/dist/agents/pi-embedded-runner/run.overflow-compaction.mocks.shared.js +11 -2
- package/dist/agents/pi-embedded-runner/session-manager-cache.js +11 -7
- package/dist/agents/pi-embedded-runner/system-prompt.js +2 -0
- package/dist/agents/pi-embedded-runner/thinking.js +42 -0
- package/dist/agents/pi-embedded-runner/tool-name-allowlist.js +19 -0
- package/dist/agents/pi-embedded-runner/utils.js +7 -10
- package/dist/agents/pi-embedded-subscribe.handlers.lifecycle.js +45 -56
- package/dist/agents/pi-embedded-subscribe.handlers.tools.js +2 -2
- package/dist/agents/pi-embedded-subscribe.js +9 -4
- package/dist/agents/pi-embedded-subscribe.tools.js +68 -14
- package/dist/agents/pi-embedded-utils.js +3 -0
- package/dist/agents/pi-extensions/compaction-safeguard-runtime.js +4 -20
- package/dist/agents/pi-extensions/compaction-safeguard.js +75 -33
- package/dist/agents/pi-settings.js +40 -0
- package/dist/agents/pi-tools.policy.js +2 -1
- package/dist/agents/provider/config-loader.js +1 -1
- package/dist/agents/sandbox/browser.js +170 -33
- package/dist/agents/sandbox/config-hash.js +14 -27
- package/dist/agents/sandbox/config.js +21 -2
- package/dist/agents/sandbox/constants.js +2 -0
- package/dist/agents/sandbox/docker.js +16 -2
- package/dist/agents/sandbox/novnc-auth.js +62 -0
- package/dist/agents/sandbox/sanitize-env-vars.js +1 -1
- package/dist/agents/sandbox/shared.js +10 -6
- package/dist/agents/sandbox-paths.js +24 -11
- package/dist/agents/schema/clean-for-gemini.js +132 -85
- package/dist/agents/session-slug.js +10 -5
- package/dist/agents/session-tool-result-guard-wrapper.js +1 -0
- package/dist/agents/session-tool-result-guard.js +3 -1
- package/dist/agents/session-transcript-repair.js +40 -6
- package/dist/agents/skills/bundled-dir.js +19 -5
- package/dist/agents/skills/env-overrides.js +124 -43
- package/dist/agents/skills/frontmatter.js +6 -6
- package/dist/agents/skills/plugin-skills.js +14 -7
- package/dist/agents/skills/workspace.js +1 -0
- package/dist/agents/subagent-announce.js +251 -49
- package/dist/agents/subagent-lifecycle-events.js +19 -0
- package/dist/agents/subagent-registry-cleanup.js +31 -0
- package/dist/agents/subagent-registry-completion.js +68 -0
- package/dist/agents/subagent-registry-queries.js +117 -0
- package/dist/agents/subagent-registry-state.js +46 -0
- package/dist/agents/subagent-registry.js +252 -221
- package/dist/agents/subagent-registry.store.js +1 -0
- package/dist/agents/subagent-registry.types.js +1 -0
- package/dist/agents/subagent-spawn.js +195 -7
- package/dist/agents/system-prompt.js +22 -6
- package/dist/agents/test-helpers/fast-coding-tools.js +1 -18
- package/dist/agents/test-helpers/fast-core-tools.js +1 -17
- package/dist/agents/timeout.js +18 -6
- package/dist/agents/tool-call-id.js +1 -1
- package/dist/agents/tool-display-common.js +162 -29
- package/dist/agents/tool-images.js +82 -9
- package/dist/agents/tool-policy.js +51 -26
- package/dist/agents/tools/browser-tool.js +2 -2
- package/dist/agents/tools/canvas-tool.js +27 -1
- package/dist/agents/tools/common.js +45 -0
- package/dist/agents/tools/discord-actions-guild.js +4 -1
- package/dist/agents/tools/gateway-tool.js +3 -1
- package/dist/agents/tools/nodes-utils.js +1 -10
- package/dist/agents/tools/sessions-send-helpers.js +12 -6
- package/dist/agents/tools/sessions-spawn-tool.js +8 -2
- package/dist/agents/tools/subagents-tool.js +2 -1
- package/dist/agents/tools/whatsapp-actions.js +10 -2
- package/dist/agents/tools/whatsapp-target-auth.js +18 -0
- package/dist/agents/transcript-policy.js +22 -8
- package/dist/agents/venice-models.js +11 -3
- package/dist/auto-reply/commands-registry.data.js +51 -0
- package/dist/auto-reply/commands-registry.js +4 -3
- package/dist/auto-reply/group-activation.js +10 -5
- package/dist/auto-reply/inbound-debounce.js +10 -5
- package/dist/auto-reply/reply/abort.js +1 -1
- package/dist/auto-reply/reply/agent-runner-execution.js +4 -1
- package/dist/auto-reply/reply/bash-command.js +41 -39
- package/dist/auto-reply/reply/command-gates.js +25 -0
- package/dist/auto-reply/reply/commands-allowlist.js +111 -72
- package/dist/auto-reply/reply/commands-bash.js +6 -5
- package/dist/auto-reply/reply/commands-config.js +30 -28
- package/dist/auto-reply/reply/commands-core.js +2 -1
- package/dist/auto-reply/reply/commands-info.js +1 -0
- package/dist/auto-reply/reply/commands-models.js +65 -14
- package/dist/auto-reply/reply/commands-session.js +237 -82
- package/dist/auto-reply/reply/commands-setunset.js +45 -0
- package/dist/auto-reply/reply/commands-subagents/action-agents.js +44 -0
- package/dist/auto-reply/reply/commands-subagents/action-focus.js +64 -0
- package/dist/auto-reply/reply/commands-subagents/action-help.js +4 -0
- package/dist/auto-reply/reply/commands-subagents/action-info.js +45 -0
- package/dist/auto-reply/reply/commands-subagents/action-kill.js +60 -0
- package/dist/auto-reply/reply/commands-subagents/action-list.js +44 -0
- package/dist/auto-reply/reply/commands-subagents/action-log.js +29 -0
- package/dist/auto-reply/reply/commands-subagents/action-send.js +119 -0
- package/dist/auto-reply/reply/commands-subagents/action-spawn.js +52 -0
- package/dist/auto-reply/reply/commands-subagents/action-unfocus.js +30 -0
- package/dist/auto-reply/reply/commands-subagents/shared.js +303 -0
- package/dist/auto-reply/reply/commands-subagents.js +51 -587
- package/dist/auto-reply/reply/commands-tts.js +10 -5
- package/dist/auto-reply/reply/config-value.js +10 -5
- package/dist/auto-reply/reply/directive-handling.model-picker.js +12 -6
- package/dist/auto-reply/reply/directive-handling.persist.js +9 -21
- package/dist/auto-reply/reply/directive-handling.shared.js +24 -4
- package/dist/auto-reply/reply/followup-runner.js +1 -0
- package/dist/auto-reply/reply/get-reply-directives-utils.js +23 -14
- package/dist/auto-reply/reply/get-reply-directives.js +17 -28
- package/dist/auto-reply/reply/get-reply-inline-actions.js +1 -0
- package/dist/auto-reply/reply/get-reply.js +71 -12
- package/dist/auto-reply/reply/model-selection.js +80 -39
- package/dist/auto-reply/reply/queue/enqueue.js +10 -5
- package/dist/auto-reply/reply/queue/state.js +13 -12
- package/dist/auto-reply/reply/reply-payloads.js +67 -36
- package/dist/auto-reply/reply/reply-reference.js +9 -8
- package/dist/auto-reply/reply/route-reply.js +15 -8
- package/dist/auto-reply/reply/session-reset-prompt.js +1 -1
- package/dist/auto-reply/reply/session.js +22 -6
- package/dist/auto-reply/reply/strip-inbound-meta.js +147 -0
- package/dist/auto-reply/reply/subagents-utils.js +56 -30
- package/dist/auto-reply/reply/typing.js +46 -21
- package/dist/auto-reply/send-policy.js +14 -7
- package/dist/auto-reply/status.js +140 -16
- package/dist/auto-reply/templating.js +10 -5
- package/dist/auto-reply/thinking.js +7 -16
- package/dist/auto-reply/tokens.js +21 -5
- package/dist/browser/bridge-server.js +36 -20
- package/dist/browser/cdp.helpers.js +7 -14
- package/dist/browser/cdp.js +35 -15
- package/dist/browser/chrome.profile-decoration.js +7 -4
- package/dist/browser/config.js +4 -0
- package/dist/browser/extension-relay-auth.js +55 -0
- package/dist/browser/extension-relay.js +74 -29
- package/dist/browser/navigation-guard.js +9 -1
- package/dist/browser/paths.js +77 -0
- package/dist/browser/profiles.js +13 -8
- package/dist/browser/pw-ai-module.js +10 -5
- package/dist/browser/pw-session.js +76 -39
- package/dist/browser/pw-tools-core.interactions.js +14 -7
- package/dist/browser/pw-tools-core.state.js +12 -6
- package/dist/browser/routes/agent.act.js +2 -2
- package/dist/browser/server-context.js +7 -0
- package/dist/build-info.json +3 -3
- package/dist/channels/allow-from.js +2 -1
- package/dist/channels/allowlists/resolve-utils.js +43 -19
- package/dist/channels/channel-config.js +14 -7
- package/dist/channels/draft-stream-loop.js +7 -0
- package/dist/channels/model-overrides.js +82 -0
- package/dist/channels/plugins/normalize/imessage.js +14 -7
- package/dist/channels/plugins/normalize/slack.js +10 -5
- package/dist/channels/plugins/normalize/telegram.js +14 -7
- package/dist/channels/plugins/outbound/discord.js +80 -8
- package/dist/channels/plugins/outbound/signal.js +11 -11
- package/dist/channels/plugins/setup-helpers.js +10 -5
- package/dist/channels/sender-label.js +14 -7
- package/dist/channels/session.js +4 -2
- package/dist/channels/status-reactions.js +297 -0
- package/dist/cli/banner.js +1 -1
- package/dist/cli/browser-cli-actions-input/register.files-downloads.js +65 -56
- package/dist/cli/cli-name.js +11 -11
- package/dist/cli/cli-utils.js +13 -3
- package/dist/cli/command-format.js +1 -1
- package/dist/cli/config-cli.js +1 -1
- package/dist/cli/daemon-cli/lifecycle-core.js +31 -19
- package/dist/cli/daemon-cli/lifecycle.js +64 -2
- package/dist/cli/daemon-cli/restart-health.js +126 -0
- package/dist/cli/daemon-cli/status.gather.js +9 -13
- package/dist/cli/daemon-cli/status.print.js +2 -10
- package/dist/cli/deps.js +27 -22
- package/dist/cli/gateway-cli/run-loop.js +23 -5
- package/dist/cli/node-cli/register.js +14 -5
- package/dist/cli/nodes-media-utils.js +7 -2
- package/dist/cli/outbound-send-deps.js +2 -9
- package/dist/cli/outbound-send-mapping.js +11 -0
- package/dist/cli/pairing-cli.js +40 -14
- package/dist/cli/plugins-cli.js +34 -41
- package/dist/cli/ports.js +11 -10
- package/dist/cli/program/command-registry.js +2 -11
- package/dist/cli/program/command-tree.js +16 -0
- package/dist/cli/program/preaction.js +13 -9
- package/dist/cli/program/register.configure.js +3 -18
- package/dist/cli/program/register.maintenance.js +2 -2
- package/dist/cli/program/register.onboard.js +2 -0
- package/dist/cli/program/register.status-health-sessions.js +16 -17
- package/dist/cli/program/register.subclis.js +93 -52
- package/dist/cli/route.js +11 -7
- package/dist/cli/system-cli.js +36 -46
- package/dist/cli/update-cli/shared.js +22 -9
- package/dist/cli/update-cli/update-command.js +89 -14
- package/dist/cli/update-cli/wizard.js +6 -12
- package/dist/commands/agent/run-context.js +18 -5
- package/dist/commands/agent/session-store.js +17 -4
- package/dist/commands/agent.js +22 -2
- package/dist/commands/agents.bindings.js +14 -7
- package/dist/commands/agents.commands.add.js +13 -9
- package/dist/commands/agents.commands.identity.js +12 -6
- package/dist/commands/agents.commands.list.js +11 -6
- package/dist/commands/agents.config.js +8 -10
- package/dist/commands/agents.providers.js +12 -6
- package/dist/commands/auth-choice-options.js +103 -75
- package/dist/commands/auth-choice.apply.byteplus.js +55 -0
- package/dist/commands/auth-choice.apply.js +4 -0
- package/dist/commands/auth-choice.apply.minimax.js +61 -13
- package/dist/commands/auth-choice.apply.openai.js +3 -1
- package/dist/commands/auth-choice.apply.volcengine.js +55 -0
- package/dist/commands/auth-choice.preferred-provider.js +2 -0
- package/dist/commands/channels/remove.js +13 -6
- package/dist/commands/channels/shared.js +4 -14
- package/dist/commands/configure.commands.js +14 -0
- package/dist/commands/configure.gateway.js +2 -4
- package/dist/commands/configure.js +1 -1
- package/dist/commands/configure.shared.js +11 -0
- package/dist/commands/daemon-install-helpers.js +2 -2
- package/dist/commands/dashboard.js +12 -10
- package/dist/commands/docs.js +14 -8
- package/dist/commands/doctor-config-flow.js +11 -9
- package/dist/commands/doctor-legacy-config.js +281 -0
- package/dist/commands/doctor-state-integrity.js +99 -23
- package/dist/commands/doctor-update.js +12 -9
- package/dist/commands/models/list.list-command.js +7 -5
- package/dist/commands/models/set-image.js +2 -21
- package/dist/commands/node-daemon-install-helpers.js +10 -8
- package/dist/commands/onboard-auth.config-minimax.js +54 -80
- package/dist/commands/onboard-auth.config-opencode.js +2 -18
- package/dist/commands/onboard-auth.credentials.js +90 -13
- package/dist/commands/onboard-auth.js +1 -1
- package/dist/commands/onboard-auth.models.js +6 -5
- package/dist/commands/onboard-hooks.js +1 -1
- package/dist/commands/onboard-non-interactive/api-keys.js +14 -7
- package/dist/commands/onboard-non-interactive/local/auth-choice.js +64 -49
- package/dist/commands/onboard-provider-auth-flags.js +14 -0
- package/dist/commands/onboard-remote.js +14 -7
- package/dist/commands/onboard.js +11 -13
- package/dist/commands/sandbox-display.js +6 -5
- package/dist/commands/status-all/diagnosis.js +14 -10
- package/dist/commands/status-all/format.js +1 -0
- package/dist/commands/status.gateway-probe.js +1 -16
- package/dist/commands/systemd-linger.js +12 -6
- package/dist/config/agent-limits.js +2 -0
- package/dist/config/commands.js +30 -16
- package/dist/config/config-paths.js +9 -11
- package/dist/config/defaults.js +22 -2
- package/dist/config/discord-preview-streaming.js +104 -0
- package/dist/config/env-vars.js +37 -8
- package/dist/config/includes.js +4 -0
- package/dist/config/io.js +97 -12
- package/dist/config/legacy.migrations.part-1.js +189 -78
- package/dist/config/legacy.shared.js +3 -1
- package/dist/config/merge-patch.js +4 -0
- package/dist/config/prototype-keys.js +4 -0
- package/dist/config/schema.help.js +44 -7
- package/dist/config/schema.labels.js +38 -6
- package/dist/config/sessions/delivery-info.js +10 -3
- package/dist/config/sessions/main-session.js +10 -5
- package/dist/config/sessions/session-file.js +33 -0
- package/dist/config/sessions/session-key.js +10 -5
- package/dist/config/sessions/store.js +1 -1
- package/dist/config/sessions.js +1 -0
- package/dist/config/zod-schema.agent-runtime.js +11 -0
- package/dist/config/zod-schema.js +148 -13
- package/dist/config/zod-schema.providers-core.js +78 -4
- package/dist/config/zod-schema.providers.js +6 -1
- package/dist/config/zod-schema.session.js +41 -2
- package/dist/cron/run-log.js +3 -0
- package/dist/cron/schedule.js +21 -10
- package/dist/cron/service/ops.js +35 -21
- package/dist/cron/service/timer.js +116 -16
- package/dist/cron/stagger.js +3 -1
- package/dist/discord/api.js +12 -6
- package/dist/discord/draft-chunking.js +22 -0
- package/dist/discord/draft-stream.js +124 -0
- package/dist/discord/monitor/agent-components.js +1 -1
- package/dist/discord/monitor/commands.js +5 -0
- package/dist/discord/monitor/gateway-plugin.js +2 -1
- package/dist/discord/monitor/listeners.js +37 -27
- package/dist/discord/monitor/message-handler.js +4 -1
- package/dist/discord/monitor/message-handler.preflight.js +65 -8
- package/dist/discord/monitor/message-handler.process.js +246 -217
- package/dist/discord/monitor/message-utils.js +143 -6
- package/dist/discord/monitor/model-picker-preferences.js +143 -0
- package/dist/discord/monitor/model-picker.js +651 -0
- package/dist/discord/monitor/native-command.js +573 -16
- package/dist/discord/monitor/provider.allowlist.js +223 -0
- package/dist/discord/monitor/provider.js +275 -347
- package/dist/discord/monitor/provider.lifecycle.js +100 -0
- package/dist/discord/monitor/reply-delivery.js +123 -16
- package/dist/discord/monitor/thread-bindings.discord-api.js +215 -0
- package/dist/discord/monitor/thread-bindings.js +4 -0
- package/dist/discord/monitor/thread-bindings.lifecycle.js +177 -0
- package/dist/discord/monitor/thread-bindings.manager.js +423 -0
- package/dist/discord/monitor/thread-bindings.messages.js +55 -0
- package/dist/discord/monitor/thread-bindings.state.js +358 -0
- package/dist/discord/monitor/thread-bindings.types.js +6 -0
- package/dist/discord/resolve-users.js +33 -21
- package/dist/discord/send.channels.js +15 -0
- package/dist/discord/send.js +3 -2
- package/dist/discord/send.outbound.js +82 -26
- package/dist/discord/send.permissions.js +83 -30
- package/dist/discord/send.reactions.js +8 -4
- package/dist/discord/token.js +10 -5
- package/dist/discord/voice/command.js +263 -0
- package/dist/discord/voice/manager.js +531 -0
- package/dist/gateway/auth.js +34 -10
- package/dist/gateway/call.js +4 -16
- package/dist/gateway/client.js +28 -4
- package/dist/gateway/config-reload.js +3 -4
- package/dist/gateway/control-ui.js +219 -96
- package/dist/gateway/hooks-mapping.js +88 -38
- package/dist/gateway/http-auth-helpers.js +3 -2
- package/dist/gateway/http-endpoint-helpers.js +1 -0
- package/dist/gateway/net.js +54 -12
- package/dist/gateway/node-invoke-system-run-approval.js +14 -35
- package/dist/gateway/node-registry.js +10 -5
- package/dist/gateway/openai-http.js +1 -0
- package/dist/gateway/openresponses-http.js +1 -0
- package/dist/gateway/origin-check.js +1 -18
- package/dist/gateway/protocol/index.js +4 -3
- package/dist/gateway/protocol/schema/cron.js +1 -0
- package/dist/gateway/protocol/schema/devices.js +1 -0
- package/dist/gateway/protocol/schema/protocol-schemas.js +2 -1
- package/dist/gateway/protocol/schema/sessions.js +6 -0
- package/dist/gateway/role-policy.js +17 -0
- package/dist/gateway/server/ws-connection/connect-policy.js +37 -0
- package/dist/gateway/server/ws-connection/message-handler.js +175 -148
- package/dist/gateway/server-chat.js +83 -25
- package/dist/gateway/server-constants.js +10 -9
- package/dist/gateway/server-cron.js +1 -0
- package/dist/gateway/server-http.js +16 -7
- package/dist/gateway/server-maintenance.js +20 -5
- package/dist/gateway/server-methods/chat.js +10 -6
- package/dist/gateway/server-methods/config.js +12 -14
- package/dist/gateway/server-methods/devices.js +17 -3
- package/dist/gateway/server-methods/models.js +11 -1
- package/dist/gateway/server-methods/sessions.js +64 -8
- package/dist/gateway/server-methods/usage.js +162 -75
- package/dist/gateway/server-node-events.js +29 -0
- package/dist/gateway/server-runtime-config.js +34 -13
- package/dist/gateway/server-startup-memory.js +17 -11
- package/dist/gateway/session-utils.fs.js +32 -34
- package/dist/gateway/sessions-resolve.js +17 -5
- package/dist/gateway/test-helpers.openai-mock.js +14 -7
- package/dist/gateway/tools-invoke-http.js +21 -10
- package/dist/hooks/bundled/bootstrap-extra-files/handler.js +3 -1
- package/dist/hooks/bundled/command-logger/handler.js +7 -2
- package/dist/hooks/bundled/session-memory/handler.js +6 -5
- package/dist/hooks/frontmatter.js +6 -6
- package/dist/hooks/gmail-watcher.js +11 -6
- package/dist/hooks/internal-hooks.js +11 -1
- package/dist/hooks/llm-slug-generator.js +4 -1
- package/dist/hooks/workspace.js +47 -17
- package/dist/imessage/accounts.js +9 -20
- package/dist/imessage/monitor/inbound-processing.js +2 -1
- package/dist/infra/archive.js +174 -73
- package/dist/infra/control-ui-assets.js +14 -6
- package/dist/infra/device-pairing.js +108 -29
- package/dist/infra/env.js +10 -5
- package/dist/infra/exec-approvals-allowlist.js +122 -0
- package/dist/infra/exec-approvals-analysis.js +34 -3
- package/dist/infra/exec-approvals.js +5 -17
- package/dist/infra/exec-safe-bin-policy.js +53 -45
- package/dist/infra/fs-safe.js +71 -39
- package/dist/infra/gateway-lock.js +6 -2
- package/dist/infra/heartbeat-wake.js +6 -12
- package/dist/infra/host-env-security-policy.json +19 -0
- package/dist/infra/host-env-security.js +66 -0
- package/dist/infra/net/ssrf.js +131 -38
- package/dist/infra/outbound/bound-delivery-router.js +88 -0
- package/dist/infra/outbound/channel-selection.js +12 -6
- package/dist/infra/outbound/envelope.js +1 -1
- package/dist/infra/outbound/format.js +12 -6
- package/dist/infra/outbound/payloads.js +14 -7
- package/dist/infra/outbound/session-binding-service.js +123 -0
- package/dist/infra/path-guards.js +25 -0
- package/dist/infra/provider-usage.fetch.codex.js +7 -15
- package/dist/infra/provider-usage.fetch.gemini.js +14 -11
- package/dist/infra/provider-usage.fetch.shared.js +30 -1
- package/dist/infra/provider-usage.fetch.zai.js +10 -9
- package/dist/infra/retry-policy.js +4 -2
- package/dist/infra/retry.js +9 -5
- package/dist/infra/session-cost-usage.js +107 -59
- package/dist/infra/session-maintenance-warning.js +3 -1
- package/dist/infra/shell-env.js +98 -34
- package/dist/infra/ssh-config.js +12 -6
- package/dist/infra/system-run-command.js +49 -4
- package/dist/infra/update-channels.js +10 -5
- package/dist/line/accounts.js +5 -7
- package/dist/line/bot-access.js +8 -20
- package/dist/line/bot-handlers.js +3 -1
- package/dist/link-understanding/detect.js +15 -7
- package/dist/media/constants.js +15 -6
- package/dist/media/image-ops.js +7 -0
- package/dist/media/local-roots.js +3 -2
- package/dist/media-understanding/apply.js +4 -1
- package/dist/media-understanding/concurrency.js +8 -20
- package/dist/memory/backend-config.js +45 -6
- package/dist/memory/embeddings.js +10 -4
- package/dist/memory/fs-utils.js +23 -0
- package/dist/memory/manager-search.js +12 -6
- package/dist/memory/manager-sync-ops.js +12 -2
- package/dist/memory/qmd-manager.js +466 -53
- package/dist/memory/query-expansion.js +167 -3
- package/dist/memory/status-format.js +10 -5
- package/dist/memory/sync-memory-files.js +1 -1
- package/dist/node-host/invoke-system-run.js +281 -0
- package/dist/node-host/invoke.js +55 -337
- package/dist/pairing/pairing-store.js +22 -0
- package/dist/plugin-sdk/allow-from.js +1 -1
- package/dist/plugin-sdk/command-auth.js +3 -1
- package/dist/plugin-sdk/index.js +6 -3
- package/dist/plugin-sdk/webhook-targets.js +32 -0
- package/dist/plugins/bundled-dir.js +9 -6
- package/dist/plugins/hooks.js +50 -0
- package/dist/plugins/install.js +28 -16
- package/dist/plugins/runtime.js +3 -17
- package/dist/plugins/update.js +78 -12
- package/dist/process/spawn-utils.js +14 -7
- package/dist/providers/github-copilot-token.js +11 -6
- package/dist/providers/qwen-portal-oauth.js +14 -6
- package/dist/routing/account-id.js +30 -0
- package/dist/routing/resolve-route.js +3 -7
- package/dist/routing/session-key.js +2 -16
- package/dist/security/audit-channel.js +93 -2
- package/dist/security/audit-extra.async.js +159 -5
- package/dist/security/audit-extra.js +1 -1
- package/dist/security/audit-extra.sync.js +85 -6
- package/dist/security/audit.js +40 -4
- package/dist/security/dm-policy-shared.js +44 -0
- package/dist/security/external-content.js +26 -6
- package/dist/shared/entry-status.js +6 -0
- package/dist/shared/frontmatter.js +5 -5
- package/dist/shared/node-match.js +11 -4
- package/dist/shared/operator-scope-compat.js +8 -3
- package/dist/signal/accounts.js +7 -20
- package/dist/signal/monitor/event-handler.js +3 -1
- package/dist/slack/accounts.js +6 -19
- package/dist/slack/actions.js +11 -3
- package/dist/slack/monitor/auth.js +1 -1
- package/dist/slack/monitor/message-handler/dispatch.js +50 -29
- package/dist/slack/monitor/replies.js +15 -7
- package/dist/slack/monitor/slash.js +22 -13
- package/dist/slack/resolve-channels.js +10 -5
- package/dist/slack/send.js +102 -12
- package/dist/slack/stream-mode.js +10 -0
- package/dist/slack/streaming.js +4 -2
- package/dist/telegram/accounts.js +19 -14
- package/dist/telegram/bot/helpers.js +3 -5
- package/dist/telegram/bot-access.js +35 -36
- package/dist/telegram/bot-handlers.js +120 -148
- package/dist/telegram/bot-message-context.js +68 -9
- package/dist/telegram/bot-message-dispatch.js +155 -90
- package/dist/telegram/bot-native-commands.js +16 -0
- package/dist/telegram/draft-stream.js +14 -1
- package/dist/telegram/inline-buttons.js +5 -15
- package/dist/telegram/monitor.js +11 -7
- package/dist/telegram/network-config.js +19 -7
- package/dist/telegram/send.js +3 -2
- package/dist/telegram/sent-message-cache.js +5 -6
- package/dist/telegram/status-reaction-variants.js +208 -0
- package/dist/telegram/sticker-cache.js +11 -9
- package/dist/terminal/theme.js +12 -12
- package/dist/tts/tts.js +80 -567
- package/dist/tui/components/chat-log.js +41 -8
- package/dist/tui/theme/theme.js +10 -12
- package/dist/tui/tui-local-shell.js +16 -6
- package/dist/tui/tui.js +58 -6
- package/dist/utils/account-id.js +2 -4
- package/dist/utils/boolean.js +10 -5
- package/dist/utils/directive-tags.js +11 -0
- package/dist/utils/queue-helpers.js +67 -12
- package/dist/web/auto-reply/deliver-reply.js +8 -4
- package/dist/web/auto-reply/mentions.js +10 -5
- package/dist/web/auto-reply/monitor/group-members.js +14 -7
- package/dist/web/auto-reply/monitor/process-message.js +45 -24
- package/dist/web/inbound/access-control.js +5 -2
- package/dist/web/login-qr.js +12 -6
- package/dist/web/media.js +123 -16
- package/extensions/bluebubbles/src/monitor-processing.ts +580 -139
- package/extensions/bluebubbles/src/monitor.ts +208 -1950
- package/package.json +1 -1
package/dist/cli/plugins-cli.js
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
293
|
-
|
|
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
|
-
|
|
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
|
-
|
|
554
|
-
|
|
555
|
-
|
|
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 &&
|
|
560
|
-
defaultRuntime.log(`Pinned npm install record to ${
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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 [];
|
|
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
|
-
|
|
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 {
|
|
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
|
|
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,
|
|
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
|
|
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
|
-
|
|
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"
|
|
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:
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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));
|