@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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import os from "node:os";
|
|
3
|
-
import { createAgentSession, estimateTokens, SessionManager, SettingsManager, } from "@mariozechner/pi-coding-agent";
|
|
3
|
+
import { createAgentSession, DefaultResourceLoader, estimateTokens, SessionManager, SettingsManager, } from "@mariozechner/pi-coding-agent";
|
|
4
4
|
import { resolveHeartbeatPrompt } from "../../auto-reply/heartbeat.js";
|
|
5
5
|
import { resolveChannelCapabilities } from "../../config/channel-capabilities.js";
|
|
6
6
|
import { getMachineDisplayName } from "../../infra/machine-name.js";
|
|
@@ -24,7 +24,7 @@ import { resolvePoolbotDocsPath } from "../docs-path.js";
|
|
|
24
24
|
import { getApiKeyForModel, resolveModelAuthMode } from "../model-auth.js";
|
|
25
25
|
import { ensurePoolbotModelsJson } from "../models-config.js";
|
|
26
26
|
import { ensureSessionHeader, validateAnthropicTurns, validateGeminiTurns, } from "../pi-embedded-helpers.js";
|
|
27
|
-
import {
|
|
27
|
+
import { applyPiCompactionSettingsFromConfig } from "../pi-settings.js";
|
|
28
28
|
import { createPoolbotCodingTools } from "../pi-tools.js";
|
|
29
29
|
import { resolveSandboxContext } from "../sandbox.js";
|
|
30
30
|
import { repairSessionFileIfNeeded } from "../session-file-repair.js";
|
|
@@ -35,7 +35,7 @@ import { detectRuntimeShell } from "../shell-utils.js";
|
|
|
35
35
|
import { applySkillEnvOverrides, applySkillEnvOverridesFromSnapshot, loadWorkspaceSkillEntries, resolveSkillsPromptForRun, } from "../skills.js";
|
|
36
36
|
import { resolveTranscriptPolicy } from "../transcript-policy.js";
|
|
37
37
|
import { compactWithSafetyTimeout, EMBEDDED_COMPACTION_TIMEOUT_MS, } from "./compaction-safety-timeout.js";
|
|
38
|
-
import {
|
|
38
|
+
import { buildEmbeddedExtensionFactories } from "./extensions.js";
|
|
39
39
|
import { logToolSchemasForGoogle, sanitizeSessionHistory, sanitizeToolsForGoogle, } from "./google.js";
|
|
40
40
|
import { getDmHistoryLimitFromSessionKey, limitHistoryTurns } from "./history.js";
|
|
41
41
|
import { resolveGlobalLane, resolveSessionLane } from "./lanes.js";
|
|
@@ -44,6 +44,7 @@ import { buildModelAliasLines, resolveModel } from "./model.js";
|
|
|
44
44
|
import { buildEmbeddedSandboxInfo } from "./sandbox-info.js";
|
|
45
45
|
import { prewarmSessionFile, trackSessionManagerAccess } from "./session-manager-cache.js";
|
|
46
46
|
import { applySystemPromptOverrideToSession, buildEmbeddedSystemPrompt, createSystemPromptOverride, } from "./system-prompt.js";
|
|
47
|
+
import { collectAllowedToolNames } from "./tool-name-allowlist.js";
|
|
47
48
|
import { splitSdkTools } from "./tool-split.js";
|
|
48
49
|
import { describeUnknownError, mapThinkingLevel } from "./utils.js";
|
|
49
50
|
import { flushPendingToolResultsAfterIdle } from "./wait-for-idle-before-flush.js";
|
|
@@ -276,6 +277,7 @@ export async function compactEmbeddedPiSessionDirect(params) {
|
|
|
276
277
|
modelAuthMode: resolveModelAuthMode(model.provider, params.config),
|
|
277
278
|
});
|
|
278
279
|
const tools = sanitizeToolsForGoogle({ tools: toolsRaw, provider });
|
|
280
|
+
const allowedToolNames = collectAllowedToolNames({ tools });
|
|
279
281
|
logToolSchemasForGoogle({ tools, provider });
|
|
280
282
|
const machineName = await getMachineDisplayName();
|
|
281
283
|
const runtimeChannel = normalizeMessageChannel(params.messageChannel ?? params.messageProvider);
|
|
@@ -372,6 +374,10 @@ export async function compactEmbeddedPiSessionDirect(params) {
|
|
|
372
374
|
reasoningLevel: params.reasoningLevel ?? "off",
|
|
373
375
|
extraSystemPrompt: params.extraSystemPrompt,
|
|
374
376
|
ownerNumbers: params.ownerNumbers,
|
|
377
|
+
ownerDisplay: params.config?.commands?.ownerDisplay,
|
|
378
|
+
ownerDisplaySecret: params.config?.commands?.ownerDisplaySecret ??
|
|
379
|
+
params.config?.gateway?.auth?.token ??
|
|
380
|
+
params.config?.gateway?.remote?.token,
|
|
375
381
|
reasoningTagHint,
|
|
376
382
|
heartbeatPrompt: isDefaultAgent
|
|
377
383
|
? resolveHeartbeatPrompt(params.config?.agents?.defaults?.heartbeat?.prompt)
|
|
@@ -414,21 +420,35 @@ export async function compactEmbeddedPiSessionDirect(params) {
|
|
|
414
420
|
agentId: sessionAgentId,
|
|
415
421
|
sessionKey: params.sessionKey,
|
|
416
422
|
allowSyntheticToolResults: transcriptPolicy.allowSyntheticToolResults,
|
|
423
|
+
allowedToolNames,
|
|
417
424
|
});
|
|
418
425
|
trackSessionManagerAccess(params.sessionFile);
|
|
419
426
|
const settingsManager = SettingsManager.create(effectiveWorkspace, agentDir);
|
|
420
|
-
|
|
427
|
+
applyPiCompactionSettingsFromConfig({
|
|
421
428
|
settingsManager,
|
|
422
|
-
|
|
429
|
+
cfg: params.config,
|
|
423
430
|
});
|
|
424
|
-
//
|
|
425
|
-
|
|
431
|
+
// Sets compaction/pruning runtime state and returns extension factories
|
|
432
|
+
// that must be passed to the resource loader for the safeguard to be active.
|
|
433
|
+
const extensionFactories = buildEmbeddedExtensionFactories({
|
|
426
434
|
cfg: params.config,
|
|
427
435
|
sessionManager,
|
|
428
436
|
provider,
|
|
429
437
|
modelId,
|
|
430
438
|
model,
|
|
431
439
|
});
|
|
440
|
+
// Only create an explicit resource loader when there are extension factories
|
|
441
|
+
// to register; otherwise let createAgentSession use its built-in default.
|
|
442
|
+
let resourceLoader;
|
|
443
|
+
if (extensionFactories.length > 0) {
|
|
444
|
+
resourceLoader = new DefaultResourceLoader({
|
|
445
|
+
cwd: resolvedWorkspace,
|
|
446
|
+
agentDir,
|
|
447
|
+
settingsManager,
|
|
448
|
+
extensionFactories,
|
|
449
|
+
});
|
|
450
|
+
await resourceLoader.reload();
|
|
451
|
+
}
|
|
432
452
|
const { builtInTools, customTools } = splitSdkTools({
|
|
433
453
|
tools,
|
|
434
454
|
sandboxEnabled: !!sandbox?.enabled,
|
|
@@ -444,6 +464,7 @@ export async function compactEmbeddedPiSessionDirect(params) {
|
|
|
444
464
|
customTools,
|
|
445
465
|
sessionManager,
|
|
446
466
|
settingsManager,
|
|
467
|
+
resourceLoader,
|
|
447
468
|
});
|
|
448
469
|
applySystemPromptOverrideToSession(session, systemPromptOverride());
|
|
449
470
|
try {
|
|
@@ -452,6 +473,7 @@ export async function compactEmbeddedPiSessionDirect(params) {
|
|
|
452
473
|
modelApi: model.api,
|
|
453
474
|
modelId,
|
|
454
475
|
provider,
|
|
476
|
+
allowedToolNames,
|
|
455
477
|
config: params.config,
|
|
456
478
|
sessionManager,
|
|
457
479
|
sessionId: params.sessionId,
|
|
@@ -1,20 +1,13 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { fileURLToPath } from "node:url";
|
|
3
1
|
import { resolveContextWindowInfo } from "../context-window-guard.js";
|
|
4
2
|
import { DEFAULT_CONTEXT_TOKENS } from "../defaults.js";
|
|
5
3
|
import { setCompactionSafeguardRuntime } from "../pi-extensions/compaction-safeguard-runtime.js";
|
|
4
|
+
import compactionSafeguardExtension from "../pi-extensions/compaction-safeguard.js";
|
|
5
|
+
import contextPruningExtension from "../pi-extensions/context-pruning.js";
|
|
6
6
|
import { setContextPruningRuntime } from "../pi-extensions/context-pruning/runtime.js";
|
|
7
7
|
import { computeEffectiveSettings } from "../pi-extensions/context-pruning/settings.js";
|
|
8
8
|
import { makeToolPrunablePredicate } from "../pi-extensions/context-pruning/tools.js";
|
|
9
9
|
import { ensurePiCompactionReserveTokens } from "../pi-settings.js";
|
|
10
10
|
import { isCacheTtlEligibleProvider, readLastCacheTtlTimestamp } from "./cache-ttl.js";
|
|
11
|
-
function resolvePiExtensionPath(id) {
|
|
12
|
-
const self = fileURLToPath(import.meta.url);
|
|
13
|
-
const dir = path.dirname(self);
|
|
14
|
-
// In dev this file is `.ts` (tsx), in production it's `.js`.
|
|
15
|
-
const ext = path.extname(self) === ".ts" ? "ts" : "js";
|
|
16
|
-
return path.join(dir, "..", "pi-extensions", `${id}.${ext}`);
|
|
17
|
-
}
|
|
18
11
|
function resolveContextWindowTokens(params) {
|
|
19
12
|
return resolveContextWindowInfo({
|
|
20
13
|
cfg: params.cfg,
|
|
@@ -24,41 +17,50 @@ function resolveContextWindowTokens(params) {
|
|
|
24
17
|
defaultTokens: DEFAULT_CONTEXT_TOKENS,
|
|
25
18
|
}).tokens;
|
|
26
19
|
}
|
|
27
|
-
function
|
|
20
|
+
function buildContextPruningFactory(params) {
|
|
28
21
|
const raw = params.cfg?.agents?.defaults?.contextPruning;
|
|
29
|
-
if (raw?.mode !== "cache-ttl")
|
|
30
|
-
return
|
|
31
|
-
|
|
32
|
-
|
|
22
|
+
if (raw?.mode !== "cache-ttl") {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
if (!isCacheTtlEligibleProvider(params.provider, params.modelId)) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
33
28
|
const settings = computeEffectiveSettings(raw);
|
|
34
|
-
if (!settings)
|
|
35
|
-
return
|
|
29
|
+
if (!settings) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
36
32
|
setContextPruningRuntime(params.sessionManager, {
|
|
37
33
|
settings,
|
|
38
34
|
contextWindowTokens: resolveContextWindowTokens(params),
|
|
39
35
|
isToolPrunable: makeToolPrunablePredicate(settings.tools),
|
|
40
36
|
lastCacheTouchAt: readLastCacheTtlTimestamp(params.sessionManager),
|
|
41
37
|
});
|
|
42
|
-
return
|
|
43
|
-
additionalExtensionPaths: [resolvePiExtensionPath("context-pruning")],
|
|
44
|
-
};
|
|
38
|
+
return contextPruningExtension;
|
|
45
39
|
}
|
|
46
40
|
function resolveCompactionMode(cfg) {
|
|
47
41
|
return cfg?.agents?.defaults?.compaction?.mode === "safeguard" ? "safeguard" : "default";
|
|
48
42
|
}
|
|
49
|
-
export function
|
|
50
|
-
const
|
|
43
|
+
export function buildEmbeddedExtensionFactories(params) {
|
|
44
|
+
const factories = [];
|
|
51
45
|
if (resolveCompactionMode(params.cfg) === "safeguard") {
|
|
52
46
|
const compactionCfg = params.cfg?.agents?.defaults?.compaction;
|
|
47
|
+
const contextWindowInfo = resolveContextWindowInfo({
|
|
48
|
+
cfg: params.cfg,
|
|
49
|
+
provider: params.provider,
|
|
50
|
+
modelId: params.modelId,
|
|
51
|
+
modelContextWindow: params.model?.contextWindow,
|
|
52
|
+
defaultTokens: DEFAULT_CONTEXT_TOKENS,
|
|
53
|
+
});
|
|
53
54
|
setCompactionSafeguardRuntime(params.sessionManager, {
|
|
54
55
|
maxHistoryShare: compactionCfg?.maxHistoryShare,
|
|
56
|
+
contextWindowTokens: contextWindowInfo.tokens,
|
|
55
57
|
});
|
|
56
|
-
|
|
58
|
+
factories.push(compactionSafeguardExtension);
|
|
57
59
|
}
|
|
58
|
-
const
|
|
59
|
-
if (
|
|
60
|
-
|
|
60
|
+
const pruningFactory = buildContextPruningFactory(params);
|
|
61
|
+
if (pruningFactory) {
|
|
62
|
+
factories.push(pruningFactory);
|
|
61
63
|
}
|
|
62
|
-
return
|
|
64
|
+
return factories;
|
|
63
65
|
}
|
|
64
66
|
export { ensurePiCompactionReserveTokens };
|
|
@@ -7,6 +7,7 @@ import { cleanToolSchemaForGemini } from "../pi-tools.schema.js";
|
|
|
7
7
|
import { sanitizeToolCallInputs, stripToolResultDetails, sanitizeToolUseResultPairing, } from "../session-transcript-repair.js";
|
|
8
8
|
import { resolveTranscriptPolicy } from "../transcript-policy.js";
|
|
9
9
|
import { log } from "./logger.js";
|
|
10
|
+
import { dropThinkingBlocks } from "./thinking.js";
|
|
10
11
|
import { describeUnknownError } from "./utils.js";
|
|
11
12
|
const GOOGLE_TURN_ORDERING_CUSTOM_TYPE = "google-turn-ordering-bootstrap";
|
|
12
13
|
const GOOGLE_SCHEMA_UNSUPPORTED_KEYWORDS = new Set([
|
|
@@ -71,6 +72,12 @@ export function sanitizeAntigravityThinkingBlocks(messages) {
|
|
|
71
72
|
const rec = block;
|
|
72
73
|
const candidate = rec.thinkingSignature ?? rec.signature ?? rec.thought_signature ?? rec.thoughtSignature;
|
|
73
74
|
if (!isValidAntigravitySignature(candidate)) {
|
|
75
|
+
// Preserve reasoning content as plain text when signatures are invalid/missing.
|
|
76
|
+
// Antigravity Claude rejects unsigned thinking blocks, but dropping them loses context.
|
|
77
|
+
const thinkingText = block.thinking;
|
|
78
|
+
if (typeof thinkingText === "string" && thinkingText.trim()) {
|
|
79
|
+
nextContent.push({ type: "text", text: thinkingText });
|
|
80
|
+
}
|
|
74
81
|
contentChanged = true;
|
|
75
82
|
continue;
|
|
76
83
|
}
|
|
@@ -199,11 +206,11 @@ function findUnsupportedSchemaKeywords(schema, path) {
|
|
|
199
206
|
return violations;
|
|
200
207
|
}
|
|
201
208
|
export function sanitizeToolsForGoogle(params) {
|
|
202
|
-
//
|
|
203
|
-
//
|
|
204
|
-
//
|
|
205
|
-
//
|
|
206
|
-
if (params.provider !== "google-gemini-cli") {
|
|
209
|
+
// Cloud Code Assist uses the OpenAPI 3.03 `parameters` field for both Gemini
|
|
210
|
+
// AND Claude models. This field does not support JSON Schema keywords such as
|
|
211
|
+
// patternProperties, additionalProperties, $ref, etc. We must clean schemas
|
|
212
|
+
// for every provider that routes through this path.
|
|
213
|
+
if (params.provider !== "google-gemini-cli" && params.provider !== "google-antigravity") {
|
|
207
214
|
return params.tools;
|
|
208
215
|
}
|
|
209
216
|
return params.tools.map((tool) => {
|
|
@@ -350,10 +357,15 @@ export async function sanitizeSessionHistory(params) {
|
|
|
350
357
|
sanitizeThoughtSignatures: policy.sanitizeThoughtSignatures,
|
|
351
358
|
...resolveImageSanitizationLimits(params.config),
|
|
352
359
|
});
|
|
353
|
-
const
|
|
354
|
-
?
|
|
360
|
+
const droppedThinking = policy.dropThinkingBlocks
|
|
361
|
+
? dropThinkingBlocks(sanitizedImages)
|
|
355
362
|
: sanitizedImages;
|
|
356
|
-
const
|
|
363
|
+
const sanitizedThinking = policy.sanitizeThinkingSignatures
|
|
364
|
+
? sanitizeAntigravityThinkingBlocks(droppedThinking)
|
|
365
|
+
: droppedThinking;
|
|
366
|
+
const sanitizedToolCalls = sanitizeToolCallInputs(sanitizedThinking, {
|
|
367
|
+
allowedToolNames: params.allowedToolNames,
|
|
368
|
+
});
|
|
357
369
|
const repairedTools = policy.repairToolUseResultPairing
|
|
358
370
|
? sanitizeToolUseResultPairing(sanitizedToolCalls)
|
|
359
371
|
: sanitizedToolCalls;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import { streamSimple } from "@mariozechner/pi-ai";
|
|
4
|
-
import { createAgentSession, SessionManager, SettingsManager } from "@mariozechner/pi-coding-agent";
|
|
4
|
+
import { createAgentSession, DefaultResourceLoader, SessionManager, SettingsManager, } from "@mariozechner/pi-coding-agent";
|
|
5
5
|
import { resolveHeartbeatPrompt } from "../../../auto-reply/heartbeat.js";
|
|
6
6
|
import { resolveChannelCapabilities } from "../../../config/channel-capabilities.js";
|
|
7
7
|
import { getMachineDisplayName } from "../../../infra/machine-name.js";
|
|
@@ -30,7 +30,7 @@ import { resolveDefaultModelForAgent } from "../../model-selection.js";
|
|
|
30
30
|
import { createOllamaStreamFn, OLLAMA_NATIVE_BASE_URL } from "../../ollama-stream.js";
|
|
31
31
|
import { isCloudCodeAssistFormatError, resolveBootstrapMaxChars, resolveBootstrapTotalMaxChars, validateAnthropicTurns, validateGeminiTurns, } from "../../pi-embedded-helpers.js";
|
|
32
32
|
import { subscribeEmbeddedPiSession } from "../../pi-embedded-subscribe.js";
|
|
33
|
-
import {
|
|
33
|
+
import { applyPiCompactionSettingsFromConfig } from "../../pi-settings.js";
|
|
34
34
|
import { toClientToolDefinitions } from "../../pi-tool-definition-adapter.js";
|
|
35
35
|
import { createPoolbotCodingTools, resolveToolLoopDetectionConfig } from "../../pi-tools.js";
|
|
36
36
|
import { resolveSandboxContext } from "../../sandbox.js";
|
|
@@ -47,7 +47,7 @@ import { resolveTranscriptPolicy } from "../../transcript-policy.js";
|
|
|
47
47
|
import { DEFAULT_BOOTSTRAP_FILENAME } from "../../workspace.js";
|
|
48
48
|
import { isRunnerAbortError } from "../abort.js";
|
|
49
49
|
import { appendCacheTtlTimestamp, isCacheTtlEligibleProvider } from "../cache-ttl.js";
|
|
50
|
-
import {
|
|
50
|
+
import { buildEmbeddedExtensionFactories } from "../extensions.js";
|
|
51
51
|
import { applyExtraParamsToAgent } from "../extra-params.js";
|
|
52
52
|
import { logToolSchemasForGoogle, sanitizeAntigravityThinkingBlocks, sanitizeSessionHistory, sanitizeToolsForGoogle, } from "../google.js";
|
|
53
53
|
import { getDmHistoryLimitFromSessionKey, limitHistoryTurns } from "../history.js";
|
|
@@ -58,6 +58,8 @@ import { buildEmbeddedSandboxInfo } from "../sandbox-info.js";
|
|
|
58
58
|
import { prewarmSessionFile, trackSessionManagerAccess } from "../session-manager-cache.js";
|
|
59
59
|
import { prepareSessionManagerForRun } from "../session-manager-init.js";
|
|
60
60
|
import { applySystemPromptOverrideToSession, buildEmbeddedSystemPrompt, createSystemPromptOverride, } from "../system-prompt.js";
|
|
61
|
+
import { dropThinkingBlocks } from "../thinking.js";
|
|
62
|
+
import { collectAllowedToolNames } from "../tool-name-allowlist.js";
|
|
61
63
|
import { installToolResultContextGuard } from "../tool-result-context-guard.js";
|
|
62
64
|
import { splitSdkTools } from "../tool-split.js";
|
|
63
65
|
import { describeUnknownError, mapThinkingLevel } from "../utils.js";
|
|
@@ -101,6 +103,37 @@ export function injectHistoryImagesIntoMessages(messages, historyImagesByIndex)
|
|
|
101
103
|
}
|
|
102
104
|
return didMutate;
|
|
103
105
|
}
|
|
106
|
+
export async function resolvePromptBuildHookResult(params) {
|
|
107
|
+
const promptBuildResult = params.hookRunner?.hasHooks("before_prompt_build")
|
|
108
|
+
? await params.hookRunner
|
|
109
|
+
.runBeforePromptBuild({
|
|
110
|
+
prompt: params.prompt,
|
|
111
|
+
messages: params.messages,
|
|
112
|
+
}, params.hookCtx)
|
|
113
|
+
.catch((hookErr) => {
|
|
114
|
+
log.warn(`before_prompt_build hook failed: ${String(hookErr)}`);
|
|
115
|
+
return undefined;
|
|
116
|
+
})
|
|
117
|
+
: undefined;
|
|
118
|
+
const legacyResult = params.legacyBeforeAgentStartResult ??
|
|
119
|
+
(params.hookRunner?.hasHooks("before_agent_start")
|
|
120
|
+
? await params.hookRunner
|
|
121
|
+
.runBeforeAgentStart({
|
|
122
|
+
prompt: params.prompt,
|
|
123
|
+
messages: params.messages,
|
|
124
|
+
}, params.hookCtx)
|
|
125
|
+
.catch((hookErr) => {
|
|
126
|
+
log.warn(`before_agent_start hook (legacy prompt build path) failed: ${String(hookErr)}`);
|
|
127
|
+
return undefined;
|
|
128
|
+
})
|
|
129
|
+
: undefined);
|
|
130
|
+
return {
|
|
131
|
+
systemPrompt: promptBuildResult?.systemPrompt ?? legacyResult?.systemPrompt,
|
|
132
|
+
prependContext: [promptBuildResult?.prependContext, legacyResult?.prependContext]
|
|
133
|
+
.filter((value) => Boolean(value))
|
|
134
|
+
.join("\n\n"),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
104
137
|
function summarizeMessagePayload(msg) {
|
|
105
138
|
const content = msg.content;
|
|
106
139
|
if (typeof content === "string") {
|
|
@@ -244,6 +277,10 @@ export async function runEmbeddedAttempt(params) {
|
|
|
244
277
|
disableMessageTool: params.disableMessageTool,
|
|
245
278
|
});
|
|
246
279
|
const tools = sanitizeToolsForGoogle({ tools: toolsRaw, provider: params.provider });
|
|
280
|
+
const allowedToolNames = collectAllowedToolNames({
|
|
281
|
+
tools,
|
|
282
|
+
clientTools: params.clientTools,
|
|
283
|
+
});
|
|
247
284
|
logToolSchemasForGoogle({ tools, provider: params.provider });
|
|
248
285
|
const machineName = await getMachineDisplayName();
|
|
249
286
|
const runtimeChannel = normalizeMessageChannel(params.messageChannel ?? params.messageProvider);
|
|
@@ -349,6 +386,10 @@ export async function runEmbeddedAttempt(params) {
|
|
|
349
386
|
reasoningLevel: params.reasoningLevel ?? "off",
|
|
350
387
|
extraSystemPrompt: params.extraSystemPrompt,
|
|
351
388
|
ownerNumbers: params.ownerNumbers,
|
|
389
|
+
ownerDisplay: params.config?.commands?.ownerDisplay,
|
|
390
|
+
ownerDisplaySecret: params.config?.commands?.ownerDisplaySecret ??
|
|
391
|
+
params.config?.gateway?.auth?.token ??
|
|
392
|
+
params.config?.gateway?.remote?.token,
|
|
352
393
|
reasoningTagHint,
|
|
353
394
|
heartbeatPrompt: isDefaultAgent
|
|
354
395
|
? resolveHeartbeatPrompt(params.config?.agents?.defaults?.heartbeat?.prompt)
|
|
@@ -424,6 +465,7 @@ export async function runEmbeddedAttempt(params) {
|
|
|
424
465
|
sessionKey: params.sessionKey,
|
|
425
466
|
inputProvenance: params.inputProvenance,
|
|
426
467
|
allowSyntheticToolResults: transcriptPolicy.allowSyntheticToolResults,
|
|
468
|
+
allowedToolNames,
|
|
427
469
|
});
|
|
428
470
|
trackSessionManagerAccess(params.sessionFile);
|
|
429
471
|
await prepareSessionManagerForRun({
|
|
@@ -434,18 +476,31 @@ export async function runEmbeddedAttempt(params) {
|
|
|
434
476
|
cwd: effectiveWorkspace,
|
|
435
477
|
});
|
|
436
478
|
const settingsManager = SettingsManager.create(effectiveWorkspace, agentDir);
|
|
437
|
-
|
|
479
|
+
applyPiCompactionSettingsFromConfig({
|
|
438
480
|
settingsManager,
|
|
439
|
-
|
|
481
|
+
cfg: params.config,
|
|
440
482
|
});
|
|
441
|
-
//
|
|
442
|
-
|
|
483
|
+
// Sets compaction/pruning runtime state and returns extension factories
|
|
484
|
+
// that must be passed to the resource loader for the safeguard to be active.
|
|
485
|
+
const extensionFactories = buildEmbeddedExtensionFactories({
|
|
443
486
|
cfg: params.config,
|
|
444
487
|
sessionManager,
|
|
445
488
|
provider: params.provider,
|
|
446
489
|
modelId: params.modelId,
|
|
447
490
|
model: params.model,
|
|
448
491
|
});
|
|
492
|
+
// Only create an explicit resource loader when there are extension factories
|
|
493
|
+
// to register; otherwise let createAgentSession use its built-in default.
|
|
494
|
+
let resourceLoader;
|
|
495
|
+
if (extensionFactories.length > 0) {
|
|
496
|
+
resourceLoader = new DefaultResourceLoader({
|
|
497
|
+
cwd: resolvedWorkspace,
|
|
498
|
+
agentDir,
|
|
499
|
+
settingsManager,
|
|
500
|
+
extensionFactories,
|
|
501
|
+
});
|
|
502
|
+
await resourceLoader.reload();
|
|
503
|
+
}
|
|
449
504
|
// Get hook runner early so it's available when creating tools
|
|
450
505
|
const hookRunner = getGlobalHookRunner();
|
|
451
506
|
const { builtInTools, customTools } = splitSdkTools({
|
|
@@ -479,6 +534,7 @@ export async function runEmbeddedAttempt(params) {
|
|
|
479
534
|
customTools: allCustomTools,
|
|
480
535
|
sessionManager,
|
|
481
536
|
settingsManager,
|
|
537
|
+
resourceLoader,
|
|
482
538
|
}));
|
|
483
539
|
applySystemPromptOverrideToSession(session, systemPromptText);
|
|
484
540
|
if (!session) {
|
|
@@ -533,6 +589,28 @@ export async function runEmbeddedAttempt(params) {
|
|
|
533
589
|
});
|
|
534
590
|
activeSession.agent.streamFn = cacheTrace.wrapStreamFn(activeSession.agent.streamFn);
|
|
535
591
|
}
|
|
592
|
+
// Copilot/Claude can reject persisted `thinking` blocks (e.g. thinkingSignature:"reasoning_text")
|
|
593
|
+
// on *any* follow-up provider call (including tool continuations). Wrap the stream function
|
|
594
|
+
// so every outbound request sees sanitized messages.
|
|
595
|
+
if (transcriptPolicy.dropThinkingBlocks) {
|
|
596
|
+
const inner = activeSession.agent.streamFn;
|
|
597
|
+
activeSession.agent.streamFn = (model, context, options) => {
|
|
598
|
+
const ctx = context;
|
|
599
|
+
const messages = ctx?.messages;
|
|
600
|
+
if (!Array.isArray(messages)) {
|
|
601
|
+
return inner(model, context, options);
|
|
602
|
+
}
|
|
603
|
+
const sanitized = dropThinkingBlocks(messages);
|
|
604
|
+
if (sanitized === messages) {
|
|
605
|
+
return inner(model, context, options);
|
|
606
|
+
}
|
|
607
|
+
const nextContext = {
|
|
608
|
+
...context,
|
|
609
|
+
messages: sanitized,
|
|
610
|
+
};
|
|
611
|
+
return inner(model, nextContext, options);
|
|
612
|
+
};
|
|
613
|
+
}
|
|
536
614
|
if (anthropicPayloadLogger) {
|
|
537
615
|
activeSession.agent.streamFn = anthropicPayloadLogger.wrapStreamFn(activeSession.agent.streamFn);
|
|
538
616
|
}
|
|
@@ -542,6 +620,7 @@ export async function runEmbeddedAttempt(params) {
|
|
|
542
620
|
modelApi: params.model.api,
|
|
543
621
|
modelId: params.modelId,
|
|
544
622
|
provider: params.provider,
|
|
623
|
+
allowedToolNames,
|
|
545
624
|
config: params.config,
|
|
546
625
|
sessionManager,
|
|
547
626
|
sessionId: params.sessionId,
|
|
@@ -725,34 +804,13 @@ export async function runEmbeddedAttempt(params) {
|
|
|
725
804
|
workspaceDir: params.workspaceDir,
|
|
726
805
|
messageProvider: params.messageProvider ?? undefined,
|
|
727
806
|
};
|
|
728
|
-
const
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
log.warn(`before_prompt_build hook failed: ${String(hookErr)}`);
|
|
736
|
-
return undefined;
|
|
737
|
-
})
|
|
738
|
-
: undefined;
|
|
739
|
-
const legacyResult = hookRunner?.hasHooks("before_agent_start")
|
|
740
|
-
? await hookRunner
|
|
741
|
-
.runBeforeAgentStart({
|
|
742
|
-
prompt: params.prompt,
|
|
743
|
-
messages: activeSession.messages,
|
|
744
|
-
}, hookCtx)
|
|
745
|
-
.catch((hookErr) => {
|
|
746
|
-
log.warn(`before_agent_start hook (legacy prompt build path) failed: ${String(hookErr)}`);
|
|
747
|
-
return undefined;
|
|
748
|
-
})
|
|
749
|
-
: undefined;
|
|
750
|
-
const hookResult = {
|
|
751
|
-
systemPrompt: promptBuildResult?.systemPrompt ?? legacyResult?.systemPrompt,
|
|
752
|
-
prependContext: [promptBuildResult?.prependContext, legacyResult?.prependContext]
|
|
753
|
-
.filter((value) => Boolean(value))
|
|
754
|
-
.join("\n\n"),
|
|
755
|
-
};
|
|
807
|
+
const hookResult = await resolvePromptBuildHookResult({
|
|
808
|
+
prompt: params.prompt,
|
|
809
|
+
messages: activeSession.messages,
|
|
810
|
+
hookCtx,
|
|
811
|
+
hookRunner,
|
|
812
|
+
legacyBeforeAgentStartResult: params.legacyBeforeAgentStartResult,
|
|
813
|
+
});
|
|
756
814
|
{
|
|
757
815
|
if (hookResult?.prependContext) {
|
|
758
816
|
effectivePrompt = `${hookResult.prependContext}\n\n${params.prompt}`;
|
|
@@ -774,7 +832,8 @@ export async function runEmbeddedAttempt(params) {
|
|
|
774
832
|
sessionManager.resetLeaf();
|
|
775
833
|
}
|
|
776
834
|
const sessionContext = sessionManager.buildSessionContext();
|
|
777
|
-
const sanitizedOrphan = transcriptPolicy.
|
|
835
|
+
const sanitizedOrphan = transcriptPolicy.sanitizeThinkingSignatures ||
|
|
836
|
+
transcriptPolicy.normalizeAntigravityThinkingBlocks
|
|
778
837
|
? sanitizeAntigravityThinkingBlocks(sessionContext.messages)
|
|
779
838
|
: sessionContext.messages;
|
|
780
839
|
activeSession.agent.replaceMessages(sanitizedOrphan);
|