@poolzin/pool-bot 2026.1.39 → 2026.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/chrome-extension/README.md +3 -3
- package/assets/chrome-extension/background.js +5 -5
- package/assets/chrome-extension/manifest.json +3 -3
- package/assets/chrome-extension/options.html +4 -4
- package/assets/chrome-extension/options.js +1 -1
- package/dist/acp/client.js +3 -3
- package/dist/acp/types.js +1 -1
- package/dist/agents/agent-paths.js +3 -3
- package/dist/agents/auth-profiles/paths.js +3 -3
- package/dist/agents/bash-tools.exec.js +76 -25
- package/dist/agents/cli-runner/helpers.js +10 -12
- package/dist/agents/cli-runner.js +2 -2
- package/dist/agents/cloudflare-ai-gateway.js +31 -0
- package/dist/agents/compaction.js +16 -2
- package/dist/agents/context-window-guard.js +13 -10
- package/dist/agents/context.js +4 -4
- package/dist/agents/docs-path.js +1 -1
- package/dist/agents/identity.js +47 -7
- package/dist/agents/memory-search.js +25 -8
- package/dist/agents/minimax-vlm.js +1 -1
- package/dist/agents/model-auth.js +12 -1
- package/dist/agents/model-catalog.js +4 -4
- package/dist/agents/model-selection.js +31 -4
- package/dist/agents/models-config.js +3 -3
- package/dist/agents/models-config.providers.js +147 -39
- package/dist/agents/pi-embedded-block-chunker.js +117 -42
- package/dist/agents/pi-embedded-helpers/errors.js +183 -78
- package/dist/agents/pi-embedded-helpers/openai.js +1 -1
- package/dist/agents/pi-embedded-helpers.js +1 -1
- package/dist/agents/pi-embedded-runner/compact.js +9 -8
- package/dist/agents/pi-embedded-runner/model.js +63 -4
- package/dist/agents/pi-embedded-runner/run/attempt.js +27 -17
- package/dist/agents/pi-embedded-runner/run.js +203 -50
- package/dist/agents/pi-embedded-runner/system-prompt.js +10 -2
- package/dist/agents/pi-embedded-runner/tool-result-truncation.js +275 -0
- package/dist/agents/pi-embedded-runner/utils.js +1 -1
- package/dist/agents/pi-embedded-subscribe.js +118 -29
- package/dist/agents/pi-model-discovery.js +10 -0
- package/dist/agents/pi-tool-definition-adapter.js +50 -9
- package/dist/agents/pi-tools.before-tool-call.js +67 -0
- package/dist/agents/pi-tools.js +20 -10
- package/dist/agents/pi-tools.read.js +2 -2
- package/dist/agents/poolbot-tools.js +15 -10
- package/dist/agents/sandbox-paths.js +31 -0
- package/dist/agents/session-file-repair.js +83 -0
- package/dist/agents/session-tool-result-guard.js +94 -15
- package/dist/agents/session-transcript-repair.js +68 -0
- package/dist/agents/shell-utils.js +51 -0
- package/dist/agents/skills/bundled-context.js +23 -0
- package/dist/agents/skills/bundled-dir.js +41 -7
- package/dist/agents/skills/frontmatter.js +1 -1
- package/dist/agents/skills/workspace.js +2 -2
- package/dist/agents/skills-install.js +60 -23
- package/dist/agents/subagent-announce.js +79 -34
- package/dist/agents/system-prompt.js +28 -4
- package/dist/agents/together-models.js +127 -0
- package/dist/agents/tool-images.js +1 -1
- package/dist/agents/tool-policy.conformance.js +14 -0
- package/dist/agents/tool-policy.js +25 -1
- package/dist/agents/tools/browser-tool.js +3 -3
- package/dist/agents/tools/cron-tool.js +166 -19
- package/dist/agents/tools/discord-actions-presence.js +78 -0
- package/dist/agents/tools/image-tool.js +2 -2
- package/dist/agents/tools/memory-tool.js +93 -5
- package/dist/agents/tools/message-tool.js +56 -2
- package/dist/agents/tools/sessions-history-tool.js +69 -1
- package/dist/agents/tools/web-search.js +211 -42
- package/dist/agents/usage.js +23 -1
- package/dist/agents/workspace-run.js +67 -0
- package/dist/agents/workspace-templates.js +44 -0
- package/dist/auto-reply/command-auth.js +121 -6
- package/dist/auto-reply/commands-registry.data.js +1 -1
- package/dist/auto-reply/envelope.js +50 -72
- package/dist/auto-reply/reply/commands-compact.js +1 -0
- package/dist/auto-reply/reply/commands-context-report.js +3 -2
- package/dist/auto-reply/reply/commands-context.js +1 -0
- package/dist/auto-reply/reply/commands-models.js +107 -60
- package/dist/auto-reply/reply/commands-ptt.js +171 -0
- package/dist/auto-reply/reply/commands-session.js +2 -2
- package/dist/auto-reply/reply/get-reply-run.js +16 -5
- package/dist/auto-reply/reply/groups.js +1 -1
- package/dist/auto-reply/reply/inbound-context.js +9 -1
- package/dist/auto-reply/reply/inbound-meta.js +130 -0
- package/dist/auto-reply/reply/model-selection.js +3 -3
- package/dist/auto-reply/reply/untrusted-context.js +15 -0
- package/dist/auto-reply/status.js +1 -1
- package/dist/auto-reply/thinking.js +88 -43
- package/dist/browser/bridge-server.js +13 -0
- package/dist/browser/cdp.helpers.js +38 -24
- package/dist/browser/client-fetch.js +51 -8
- package/dist/browser/config.js +2 -11
- package/dist/browser/extension-relay.js +104 -43
- package/dist/browser/pw-ai.js +1 -1
- package/dist/browser/pw-session.js +143 -8
- package/dist/browser/pw-tools-core.interactions.js +125 -27
- package/dist/browser/pw-tools-core.responses.js +1 -1
- package/dist/browser/pw-tools-core.state.js +1 -1
- package/dist/browser/routes/agent.act.js +86 -41
- package/dist/browser/routes/dispatcher.js +4 -4
- package/dist/browser/screenshot.js +1 -1
- package/dist/browser/server-context.js +2 -2
- package/dist/browser/server.js +13 -0
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui.js +3 -3
- package/dist/channels/plugins/catalog.js +2 -2
- package/dist/channels/plugins/onboarding/imessage.js +1 -1
- package/dist/channels/plugins/onboarding/signal.js +1 -1
- package/dist/channels/plugins/onboarding/slack.js +4 -4
- package/dist/channels/plugins/onboarding/whatsapp.js +3 -3
- package/dist/channels/plugins/pairing-message.js +1 -1
- package/dist/channels/reply-prefix.js +8 -1
- package/dist/cli/browser-cli-extension.js +2 -2
- package/dist/cli/cron-cli/register.cron-add.js +61 -40
- package/dist/cli/cron-cli/register.cron-edit.js +60 -34
- package/dist/cli/cron-cli/shared.js +56 -41
- package/dist/cli/dns-cli.js +26 -14
- package/dist/cli/docs-cli.js +1 -1
- package/dist/cli/gateway-cli/dev.js +1 -1
- package/dist/cli/gateway-cli/register.js +37 -19
- package/dist/cli/memory-cli.js +30 -20
- package/dist/cli/nodes-cli/register.canvas.js +1 -1
- package/dist/cli/parse-bytes.js +37 -0
- package/dist/cli/plugins-cli.js +1 -1
- package/dist/cli/run-main.js +2 -2
- package/dist/cli/security-cli.js +1 -1
- package/dist/cli/tagline.js +1 -1
- package/dist/cli/update-cli.js +173 -52
- package/dist/cli/webhooks-cli.js +5 -5
- package/dist/commands/agent.js +1 -0
- package/dist/commands/agents.commands.add.js +1 -1
- package/dist/commands/auth-choice.apply.api-providers.js +305 -17
- package/dist/commands/auth-choice.apply.js +4 -1
- package/dist/commands/auth-choice.apply.plugin-provider.js +2 -2
- package/dist/commands/auth-choice.apply.xai.js +63 -0
- package/dist/commands/auth-choice.preferred-provider.js +7 -1
- package/dist/commands/configure.wizard.js +1 -1
- package/dist/commands/dashboard.js +1 -1
- package/dist/commands/docs.js +1 -1
- package/dist/commands/doctor-config-flow.js +61 -5
- package/dist/commands/doctor-gateway-services.js +3 -3
- package/dist/commands/doctor-state-migrations.js +1 -1
- package/dist/commands/doctor-update.js +3 -3
- package/dist/commands/doctor.js +1 -1
- package/dist/commands/health.js +1 -1
- package/dist/commands/model-allowlist.js +29 -0
- package/dist/commands/model-picker.js +2 -1
- package/dist/commands/models/list.probe.js +2 -2
- package/dist/commands/models/list.registry.js +4 -4
- package/dist/commands/models/list.status-command.js +44 -24
- package/dist/commands/models/shared.js +15 -0
- package/dist/commands/onboard-auth.config-core.js +366 -28
- package/dist/commands/onboard-auth.credentials.js +71 -9
- package/dist/commands/onboard-auth.js +3 -3
- package/dist/commands/onboard-auth.models.js +26 -24
- package/dist/commands/onboard-custom.js +384 -0
- package/dist/commands/onboard-non-interactive/local/auth-choice-inference.js +35 -0
- package/dist/commands/onboard-non-interactive/local/auth-choice.js +146 -9
- package/dist/commands/onboard-skills.js +63 -38
- package/dist/commands/openai-model-default.js +41 -0
- package/dist/commands/status-all/report-lines.js +1 -1
- package/dist/commands/status.command.js +1 -1
- package/dist/commands/uninstall.js +3 -3
- package/dist/compat/legacy-names.js +1 -1
- package/dist/config/defaults.js +3 -2
- package/dist/config/io.js +3 -3
- package/dist/config/paths.js +136 -35
- package/dist/config/plugin-auto-enable.js +21 -5
- package/dist/config/redact-snapshot.js +153 -0
- package/dist/config/schema.field-metadata.js +590 -0
- package/dist/config/schema.js +3 -3
- package/dist/config/sessions/store.js +291 -23
- package/dist/config/types.memory.js +1 -0
- package/dist/config/version.js +4 -4
- package/dist/config/zod-schema.agent-defaults.js +3 -0
- package/dist/config/zod-schema.agent-runtime.js +13 -2
- package/dist/config/zod-schema.providers-core.js +142 -0
- package/dist/config/zod-schema.session.js +3 -0
- package/dist/cron/delivery.js +57 -0
- package/dist/cron/isolated-agent/delivery-target.js +18 -3
- package/dist/cron/isolated-agent/helpers.js +22 -5
- package/dist/cron/isolated-agent/run.js +171 -63
- package/dist/cron/isolated-agent/session.js +2 -0
- package/dist/cron/normalize.js +356 -28
- package/dist/cron/parse.js +10 -5
- package/dist/cron/run-log.js +35 -10
- package/dist/cron/schedule.js +41 -6
- package/dist/cron/service/jobs.js +208 -35
- package/dist/cron/service/ops.js +72 -16
- package/dist/cron/service/state.js +2 -0
- package/dist/cron/service/store.js +386 -14
- package/dist/cron/service/timer.js +390 -147
- package/dist/cron/session-reaper.js +86 -0
- package/dist/cron/store.js +23 -8
- package/dist/cron/validate-timestamp.js +43 -0
- package/dist/daemon/constants.js +7 -7
- package/dist/daemon/inspect.js +6 -6
- package/dist/daemon/systemd-unit.js +1 -1
- package/dist/discord/monitor/agent-components.js +438 -0
- package/dist/discord/monitor/allow-list.js +28 -5
- package/dist/discord/monitor/gateway-registry.js +29 -0
- package/dist/discord/monitor/native-command.js +44 -23
- package/dist/discord/monitor/sender-identity.js +45 -0
- package/dist/discord/pluralkit.js +27 -0
- package/dist/discord/send.outbound.js +92 -5
- package/dist/discord/send.shared.js +60 -23
- package/dist/discord/targets.js +84 -1
- package/dist/entry.js +15 -9
- package/dist/extensionAPI.js +8 -0
- package/dist/gateway/control-ui.js +8 -1
- package/dist/gateway/hooks-mapping.js +3 -0
- package/dist/gateway/hooks.js +65 -0
- package/dist/gateway/live-image-probe.js +1 -66
- package/dist/gateway/net.js +96 -31
- package/dist/gateway/node-command-policy.js +50 -15
- package/dist/gateway/openai-http.js +2 -2
- package/dist/gateway/openresponses-http.js +4 -4
- package/dist/gateway/origin-check.js +56 -0
- package/dist/gateway/protocol/client-info.js +9 -0
- package/dist/gateway/protocol/index.js +9 -2
- package/dist/gateway/protocol/schema/agents-models-skills.js +71 -1
- package/dist/gateway/protocol/schema/cron.js +22 -10
- package/dist/gateway/protocol/schema/protocol-schemas.js +16 -2
- package/dist/gateway/protocol/schema/sessions.js +12 -0
- package/dist/gateway/server/hooks.js +1 -1
- package/dist/gateway/server-broadcast.js +26 -9
- package/dist/gateway/server-chat.js +112 -23
- package/dist/gateway/server-discovery-runtime.js +10 -2
- package/dist/gateway/server-discovery.js +2 -2
- package/dist/gateway/server-http.js +110 -12
- package/dist/gateway/server-methods/agent-timestamp.js +60 -0
- package/dist/gateway/server-methods/agents.js +321 -2
- package/dist/gateway/server-methods/usage.js +559 -16
- package/dist/gateway/server-runtime-state.js +22 -8
- package/dist/gateway/server-startup-memory.js +16 -0
- package/dist/gateway/server.impl.js +7 -3
- package/dist/gateway/session-utils.fs.js +23 -25
- package/dist/gateway/session-utils.js +20 -10
- package/dist/gateway/sessions-patch.js +7 -22
- package/dist/gateway/test-helpers.server.js +35 -2
- package/dist/hooks/frontmatter.js +1 -1
- package/dist/hooks/hooks-status.js +1 -1
- package/dist/hooks/install.js +2 -2
- package/dist/hooks/loader.js +1 -1
- package/dist/hooks/workspace.js +3 -3
- package/dist/imessage/constants.js +2 -0
- package/dist/imessage/monitor/deliver.js +4 -1
- package/dist/imessage/monitor/monitor-provider.js +51 -1
- package/dist/index.js +2 -2
- package/dist/infra/bonjour-discovery.js +131 -70
- package/dist/infra/bonjour.js +3 -3
- package/dist/infra/control-ui-assets.js +134 -12
- package/dist/infra/errors.js +12 -0
- package/dist/infra/exec-approvals.js +266 -57
- package/dist/infra/format-time/format-datetime.js +79 -0
- package/dist/infra/format-time/format-duration.js +81 -0
- package/dist/infra/format-time/format-relative.js +80 -0
- package/dist/infra/heartbeat-runner.js +140 -49
- package/dist/infra/home-dir.js +54 -0
- package/dist/infra/net/fetch-guard.js +122 -0
- package/dist/infra/net/ssrf.js +65 -29
- package/dist/infra/outbound/abort.js +14 -0
- package/dist/infra/outbound/message-action-runner.js +77 -13
- package/dist/infra/outbound/outbound-session.js +143 -37
- package/dist/infra/path-env.js +3 -3
- package/dist/infra/poolbot-root.js +43 -1
- package/dist/infra/provider-usage.fetch.minimax.js +1 -1
- package/dist/infra/restart.js +1 -1
- package/dist/infra/session-cost-usage.js +631 -41
- package/dist/infra/state-migrations.js +317 -47
- package/dist/infra/tailscale.js +1 -1
- package/dist/infra/update-global.js +35 -0
- package/dist/infra/update-runner.js +149 -43
- package/dist/infra/warning-filter.js +65 -0
- package/dist/infra/widearea-dns.js +30 -9
- package/dist/logging/redact-identifier.js +12 -0
- package/dist/macos/relay.js +2 -2
- package/dist/media/fetch.js +81 -58
- package/dist/media/input-files.js +1 -1
- package/dist/media/mime.js +4 -0
- package/dist/media/png-encode.js +74 -0
- package/dist/media-understanding/apply.js +403 -3
- package/dist/media-understanding/attachments.js +38 -27
- package/dist/media-understanding/defaults.js +16 -0
- package/dist/media-understanding/providers/deepgram/audio.js +22 -14
- package/dist/media-understanding/providers/google/audio.js +24 -17
- package/dist/media-understanding/providers/google/video.js +24 -17
- package/dist/media-understanding/providers/image.js +4 -4
- package/dist/media-understanding/providers/index.js +4 -1
- package/dist/media-understanding/providers/openai/audio.js +22 -14
- package/dist/media-understanding/providers/shared.js +16 -11
- package/dist/media-understanding/providers/zai/index.js +6 -0
- package/dist/media-understanding/runner.js +158 -90
- package/dist/memory/backend-config.js +207 -0
- package/dist/memory/batch-voyage.js +277 -0
- package/dist/memory/embeddings-voyage.js +75 -0
- package/dist/memory/embeddings.js +29 -17
- package/dist/memory/internal.js +101 -18
- package/dist/memory/manager.js +155 -48
- package/dist/memory/search-manager.js +173 -0
- package/dist/memory/session-files.js +9 -3
- package/dist/memory/types.js +1 -0
- package/dist/node-host/runner.js +36 -26
- package/dist/node-host/with-timeout.js +27 -0
- package/dist/pairing/pairing-messages.js +1 -1
- package/dist/plugins/commands.js +5 -1
- package/dist/plugins/config-state.js +86 -7
- package/dist/plugins/discovery.js +1 -1
- package/dist/plugins/install.js +2 -2
- package/dist/plugins/source-display.js +51 -0
- package/dist/plugins/update.js +1 -1
- package/dist/process/exec.js +20 -2
- package/dist/routing/resolve-route.js +12 -0
- package/dist/routing/session-key.js +15 -0
- package/dist/runtime.js +2 -0
- package/dist/security/audit-extra.async.js +601 -0
- package/dist/security/audit-extra.js +2 -830
- package/dist/security/audit-extra.sync.js +505 -0
- package/dist/security/audit.js +2 -2
- package/dist/security/channel-metadata.js +34 -0
- package/dist/security/external-content.js +88 -6
- package/dist/security/skill-scanner.js +330 -0
- package/dist/sessions/session-key-utils.js +7 -0
- package/dist/shared/text/reasoning-tags.js +52 -7
- package/dist/signal/monitor/event-handler.js +80 -1
- package/dist/slack/monitor/media.js +85 -15
- package/dist/tailscale/detect.js +145 -0
- package/dist/telegram/bot/helpers.js +109 -28
- package/dist/telegram/bot-handlers.js +144 -3
- package/dist/telegram/bot-message-context.js +38 -11
- package/dist/telegram/bot-message-dispatch.js +48 -15
- package/dist/telegram/bot-native-commands.js +86 -29
- package/dist/telegram/bot.js +30 -29
- package/dist/telegram/model-buttons.js +163 -0
- package/dist/telegram/monitor.js +110 -85
- package/dist/telegram/send.js +129 -47
- package/dist/terminal/restore.js +45 -0
- package/dist/test-helpers/state-dir-env.js +16 -0
- package/dist/test-helpers/workspace.js +11 -0
- package/dist/test-utils/channel-plugins.js +82 -0
- package/dist/test-utils/ports.js +73 -0
- package/dist/tts/tts.js +12 -6
- package/dist/tui/tui-session-actions.js +166 -54
- package/dist/utils/fetch-timeout.js +20 -0
- package/dist/utils/normalize-secret-input.js +19 -0
- package/dist/utils/shell-argv.js +61 -0
- package/dist/utils/transcript-tools.js +58 -0
- package/dist/utils.js +55 -14
- package/dist/version.js +42 -5
- package/dist/web/qr-image.js +1 -61
- package/dist/wizard/onboarding.finalize.js +7 -7
- package/dist/wizard/onboarding.js +3 -3
- package/docs/RELEASE_WORKFOTS_COMPARISON.md +3 -3
- package/docs/_config.yml +2 -2
- package/docs/_layouts/default.html +9 -9
- package/docs/concepts/typebox.md +1 -1
- package/docs/docs.json +1 -1
- package/docs/northflank.mdx +7 -7
- package/docs/railway.mdx +3 -3
- package/docs/render.mdx +5 -5
- package/docs/start/lore.md +2 -2
- package/extensions/bluebubbles/index.ts +2 -2
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/bluebubbles/src/accounts.ts +8 -8
- package/extensions/bluebubbles/src/actions.test.ts +22 -22
- package/extensions/bluebubbles/src/actions.ts +5 -5
- package/extensions/bluebubbles/src/attachments.ts +2 -2
- package/extensions/bluebubbles/src/channel.ts +16 -16
- package/extensions/bluebubbles/src/chat.ts +2 -2
- package/extensions/bluebubbles/src/media-send.ts +2 -2
- package/extensions/bluebubbles/src/monitor.test.ts +46 -46
- package/extensions/bluebubbles/src/monitor.ts +5 -5
- package/extensions/bluebubbles/src/onboarding.ts +7 -7
- package/extensions/bluebubbles/src/reactions.ts +2 -2
- package/extensions/bluebubbles/src/send.ts +2 -2
- package/extensions/copilot-proxy/README.md +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/index.ts +2 -2
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/diagnostics-otel/src/service.ts +3 -3
- package/extensions/discord/index.ts +2 -2
- package/extensions/discord/package.json +1 -1
- package/extensions/google-antigravity-auth/README.md +1 -1
- package/extensions/google-antigravity-auth/index.ts +1 -1
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/README.md +1 -1
- package/extensions/google-gemini-cli-auth/oauth.ts +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/index.ts +3 -3
- package/extensions/googlechat/package.json +1 -1
- package/extensions/googlechat/src/accounts.ts +8 -8
- package/extensions/googlechat/src/actions.ts +6 -6
- package/extensions/googlechat/src/channel.ts +21 -21
- package/extensions/googlechat/src/monitor.ts +8 -8
- package/extensions/googlechat/src/onboarding.ts +10 -10
- package/extensions/imessage/index.ts +2 -2
- package/extensions/imessage/package.json +1 -1
- package/extensions/line/index.ts +2 -2
- package/extensions/line/package.json +1 -1
- package/extensions/line/src/card-command.ts +2 -2
- package/extensions/line/src/channel.logout.test.ts +4 -4
- package/extensions/line/src/channel.sendPayload.test.ts +8 -8
- package/extensions/line/src/channel.ts +3 -3
- package/extensions/llm-task/README.md +3 -3
- package/extensions/llm-task/index.ts +2 -2
- package/extensions/llm-task/package.json +1 -1
- package/extensions/llm-task/src/llm-task-tool.ts +4 -4
- package/extensions/lobster/README.md +6 -6
- package/extensions/lobster/index.ts +2 -2
- package/extensions/lobster/src/lobster-tool.test.ts +4 -4
- package/extensions/lobster/src/lobster-tool.ts +2 -2
- package/extensions/matrix/index.ts +2 -2
- package/extensions/matrix/package.json +1 -1
- package/extensions/matrix/src/matrix/client/config.ts +1 -1
- package/extensions/matrix/src/matrix/monitor/handler.ts +1 -1
- package/extensions/matrix/src/onboarding.ts +1 -1
- package/extensions/mattermost/index.ts +2 -2
- package/extensions/mattermost/package.json +1 -1
- package/extensions/mattermost/src/mattermost/accounts.ts +8 -8
- package/extensions/mattermost/src/mattermost/monitor-helpers.ts +5 -5
- package/extensions/mattermost/src/mattermost/monitor.ts +2 -2
- package/extensions/mattermost/src/onboarding-helpers.ts +3 -3
- package/extensions/mattermost/src/onboarding.ts +2 -2
- package/extensions/memory-core/index.ts +2 -2
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/index.ts +3 -3
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/msteams/index.ts +2 -2
- package/extensions/msteams/package.json +1 -1
- package/extensions/msteams/src/channel.directory.test.ts +2 -2
- package/extensions/msteams/src/channel.ts +2 -2
- package/extensions/msteams/src/graph-upload.ts +4 -4
- package/extensions/msteams/src/monitor-handler.ts +2 -2
- package/extensions/msteams/src/monitor.ts +2 -2
- package/extensions/msteams/src/onboarding.ts +9 -9
- package/extensions/msteams/src/reply-dispatcher.ts +2 -2
- package/extensions/msteams/src/send-context.ts +2 -2
- package/extensions/msteams/src/send.ts +4 -4
- package/extensions/nextcloud-talk/index.ts +2 -2
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nextcloud-talk/src/channel.ts +7 -7
- package/extensions/nextcloud-talk/src/inbound.ts +7 -7
- package/extensions/nextcloud-talk/src/onboarding.ts +1 -1
- package/extensions/nostr/README.md +2 -2
- package/extensions/nostr/index.ts +5 -5
- package/extensions/nostr/package.json +1 -1
- package/extensions/nostr/src/types.ts +4 -4
- package/extensions/open-prose/index.ts +2 -2
- package/extensions/qwen-portal-auth/README.md +1 -1
- package/extensions/signal/index.ts +2 -2
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/index.ts +2 -2
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/index.ts +2 -2
- package/extensions/telegram/package.json +1 -1
- package/extensions/telegram/src/channel.ts +2 -2
- package/extensions/tlon/README.md +2 -2
- package/extensions/tlon/index.ts +2 -2
- package/extensions/tlon/package.json +1 -1
- package/extensions/tlon/src/channel.ts +13 -13
- package/extensions/tlon/src/monitor/index.ts +3 -3
- package/extensions/tlon/src/onboarding.ts +3 -3
- package/extensions/tlon/src/types.ts +3 -3
- package/extensions/twitch/README.md +1 -1
- package/extensions/twitch/index.ts +2 -2
- package/extensions/twitch/package.json +1 -1
- package/extensions/twitch/src/config.ts +3 -3
- package/extensions/twitch/src/monitor.ts +3 -3
- package/extensions/twitch/src/onboarding.ts +9 -9
- package/extensions/twitch/src/outbound.test.ts +2 -2
- package/extensions/twitch/src/plugin.test.ts +2 -2
- package/extensions/twitch/src/plugin.ts +8 -8
- package/extensions/twitch/src/send.test.ts +2 -2
- package/extensions/twitch/src/send.ts +4 -4
- package/extensions/twitch/src/token.test.ts +8 -8
- package/extensions/twitch/src/token.ts +3 -3
- package/extensions/twitch/src/twitch-client.ts +3 -3
- package/extensions/twitch/src/types.ts +3 -3
- package/extensions/twitch/src/utils/markdown.ts +1 -1
- package/extensions/voice-call/README.md +3 -3
- package/extensions/voice-call/package.json +1 -1
- package/extensions/voice-call/src/core-bridge.ts +2 -2
- package/extensions/voice-call/src/response-generator.ts +1 -1
- package/extensions/whatsapp/index.ts +2 -2
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/README.md +1 -1
- package/extensions/zalo/index.ts +2 -2
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalo/src/accounts.ts +8 -8
- package/extensions/zalo/src/actions.ts +4 -4
- package/extensions/zalo/src/channel.directory.test.ts +2 -2
- package/extensions/zalo/src/channel.ts +18 -18
- package/extensions/zalo/src/monitor.ts +9 -9
- package/extensions/zalo/src/monitor.webhook.test.ts +2 -2
- package/extensions/zalo/src/onboarding.ts +24 -24
- package/extensions/zalo/src/send.ts +2 -2
- package/extensions/zalouser/README.md +2 -2
- package/extensions/zalouser/index.ts +2 -2
- package/extensions/zalouser/package.json +1 -1
- package/extensions/zalouser/src/accounts.ts +9 -9
- package/extensions/zalouser/src/channel.ts +24 -24
- package/extensions/zalouser/src/monitor.ts +4 -4
- package/extensions/zalouser/src/onboarding.ts +28 -28
- package/package.json +13 -251
- package/skills/nano-banana-pro/scripts/generate_image.py +1 -1
- package/skills/tmux/scripts/find-sessions.sh +1 -1
- package/CHANGELOG.md +0 -102
- package/README-header.png +0 -0
- package/git-hooks/pre-commit +0 -4
- package/scripts/format-staged.js +0 -148
- package/scripts/postinstall.js +0 -300
- package/scripts/setup-git-hooks.js +0 -96
|
@@ -8,10 +8,22 @@ const CANVAS_COMMANDS = [
|
|
|
8
8
|
"canvas.a2ui.pushJSONL",
|
|
9
9
|
"canvas.a2ui.reset",
|
|
10
10
|
];
|
|
11
|
-
const CAMERA_COMMANDS = ["camera.list"
|
|
12
|
-
const
|
|
11
|
+
const CAMERA_COMMANDS = ["camera.list"];
|
|
12
|
+
const CAMERA_DANGEROUS_COMMANDS = ["camera.snap", "camera.clip"];
|
|
13
|
+
const SCREEN_DANGEROUS_COMMANDS = ["screen.record"];
|
|
13
14
|
const LOCATION_COMMANDS = ["location.get"];
|
|
14
|
-
const
|
|
15
|
+
const DEVICE_COMMANDS = ["device.info", "device.status"];
|
|
16
|
+
const CONTACTS_COMMANDS = ["contacts.search"];
|
|
17
|
+
const CONTACTS_DANGEROUS_COMMANDS = ["contacts.add"];
|
|
18
|
+
const CALENDAR_COMMANDS = ["calendar.events"];
|
|
19
|
+
const CALENDAR_DANGEROUS_COMMANDS = ["calendar.add"];
|
|
20
|
+
const REMINDERS_COMMANDS = ["reminders.list"];
|
|
21
|
+
const REMINDERS_DANGEROUS_COMMANDS = ["reminders.add"];
|
|
22
|
+
const PHOTOS_COMMANDS = ["photos.latest"];
|
|
23
|
+
const MOTION_COMMANDS = ["motion.activity", "motion.pedometer"];
|
|
24
|
+
const SMS_DANGEROUS_COMMANDS = ["sms.send"];
|
|
25
|
+
// iOS nodes don't implement system.run/which, but they do support notifications.
|
|
26
|
+
const IOS_SYSTEM_COMMANDS = ["system.notify"];
|
|
15
27
|
const SYSTEM_COMMANDS = [
|
|
16
28
|
"system.run",
|
|
17
29
|
"system.which",
|
|
@@ -20,32 +32,55 @@ const SYSTEM_COMMANDS = [
|
|
|
20
32
|
"system.execApprovals.set",
|
|
21
33
|
"browser.proxy",
|
|
22
34
|
];
|
|
35
|
+
// "High risk" node commands. These can be enabled by explicitly adding them to
|
|
36
|
+
// `gateway.nodes.allowCommands` (and ensuring they're not blocked by denyCommands).
|
|
37
|
+
export const DEFAULT_DANGEROUS_NODE_COMMANDS = [
|
|
38
|
+
...CAMERA_DANGEROUS_COMMANDS,
|
|
39
|
+
...SCREEN_DANGEROUS_COMMANDS,
|
|
40
|
+
...CONTACTS_DANGEROUS_COMMANDS,
|
|
41
|
+
...CALENDAR_DANGEROUS_COMMANDS,
|
|
42
|
+
...REMINDERS_DANGEROUS_COMMANDS,
|
|
43
|
+
...SMS_DANGEROUS_COMMANDS,
|
|
44
|
+
];
|
|
23
45
|
const PLATFORM_DEFAULTS = {
|
|
24
|
-
ios: [
|
|
25
|
-
android: [
|
|
46
|
+
ios: [
|
|
26
47
|
...CANVAS_COMMANDS,
|
|
27
48
|
...CAMERA_COMMANDS,
|
|
28
|
-
...SCREEN_COMMANDS,
|
|
29
49
|
...LOCATION_COMMANDS,
|
|
30
|
-
...
|
|
50
|
+
...DEVICE_COMMANDS,
|
|
51
|
+
...CONTACTS_COMMANDS,
|
|
52
|
+
...CALENDAR_COMMANDS,
|
|
53
|
+
...REMINDERS_COMMANDS,
|
|
54
|
+
...PHOTOS_COMMANDS,
|
|
55
|
+
...MOTION_COMMANDS,
|
|
56
|
+
...IOS_SYSTEM_COMMANDS,
|
|
31
57
|
],
|
|
32
|
-
|
|
58
|
+
android: [
|
|
33
59
|
...CANVAS_COMMANDS,
|
|
34
60
|
...CAMERA_COMMANDS,
|
|
35
|
-
...SCREEN_COMMANDS,
|
|
36
61
|
...LOCATION_COMMANDS,
|
|
37
|
-
...
|
|
62
|
+
...DEVICE_COMMANDS,
|
|
63
|
+
...CONTACTS_COMMANDS,
|
|
64
|
+
...CALENDAR_COMMANDS,
|
|
65
|
+
...REMINDERS_COMMANDS,
|
|
66
|
+
...PHOTOS_COMMANDS,
|
|
67
|
+
...MOTION_COMMANDS,
|
|
38
68
|
],
|
|
39
|
-
|
|
40
|
-
windows: [...SYSTEM_COMMANDS],
|
|
41
|
-
unknown: [
|
|
69
|
+
macos: [
|
|
42
70
|
...CANVAS_COMMANDS,
|
|
43
71
|
...CAMERA_COMMANDS,
|
|
44
|
-
...SCREEN_COMMANDS,
|
|
45
72
|
...LOCATION_COMMANDS,
|
|
46
|
-
...
|
|
73
|
+
...DEVICE_COMMANDS,
|
|
74
|
+
...CONTACTS_COMMANDS,
|
|
75
|
+
...CALENDAR_COMMANDS,
|
|
76
|
+
...REMINDERS_COMMANDS,
|
|
77
|
+
...PHOTOS_COMMANDS,
|
|
78
|
+
...MOTION_COMMANDS,
|
|
47
79
|
...SYSTEM_COMMANDS,
|
|
48
80
|
],
|
|
81
|
+
linux: [...SYSTEM_COMMANDS],
|
|
82
|
+
windows: [...SYSTEM_COMMANDS],
|
|
83
|
+
unknown: [...CANVAS_COMMANDS, ...CAMERA_COMMANDS, ...LOCATION_COMMANDS, ...SYSTEM_COMMANDS],
|
|
49
84
|
};
|
|
50
85
|
function normalizePlatformId(platform, deviceFamily) {
|
|
51
86
|
const raw = (platform ?? "").trim().toLowerCase();
|
|
@@ -167,7 +167,7 @@ export async function handleOpenAiHttpRequest(req, res, opts) {
|
|
|
167
167
|
.map((p) => (typeof p.text === "string" ? p.text : ""))
|
|
168
168
|
.filter(Boolean)
|
|
169
169
|
.join("\n\n")
|
|
170
|
-
: "No response from
|
|
170
|
+
: "No response from Poolbot.";
|
|
171
171
|
sendJson(res, 200, {
|
|
172
172
|
id: runId,
|
|
173
173
|
object: "chat.completion",
|
|
@@ -275,7 +275,7 @@ export async function handleOpenAiHttpRequest(req, res, opts) {
|
|
|
275
275
|
.map((p) => (typeof p.text === "string" ? p.text : ""))
|
|
276
276
|
.filter(Boolean)
|
|
277
277
|
.join("\n\n")
|
|
278
|
-
: "No response from
|
|
278
|
+
: "No response from Poolbot.";
|
|
279
279
|
sawAssistantDelta = true;
|
|
280
280
|
writeSse(res, {
|
|
281
281
|
id: runId,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OpenResponses HTTP Handler
|
|
3
3
|
*
|
|
4
|
-
* Implements the OpenResponses `/v1/responses` endpoint for
|
|
4
|
+
* Implements the OpenResponses `/v1/responses` endpoint for Poolbot Gateway.
|
|
5
5
|
*
|
|
6
6
|
* @see https://www.open-responses.com/
|
|
7
7
|
*/
|
|
@@ -405,7 +405,7 @@ export async function handleOpenResponsesHttpRequest(req, res, opts) {
|
|
|
405
405
|
.map((p) => (typeof p.text === "string" ? p.text : ""))
|
|
406
406
|
.filter(Boolean)
|
|
407
407
|
.join("\n\n")
|
|
408
|
-
: "No response from
|
|
408
|
+
: "No response from Poolbot.";
|
|
409
409
|
const response = createResponseResource({
|
|
410
410
|
id: responseId,
|
|
411
411
|
model,
|
|
@@ -543,7 +543,7 @@ export async function handleOpenResponsesHttpRequest(req, res, opts) {
|
|
|
543
543
|
if (evt.stream === "lifecycle") {
|
|
544
544
|
const phase = evt.data?.phase;
|
|
545
545
|
if (phase === "end" || phase === "error") {
|
|
546
|
-
const finalText = accumulatedText || "No response from
|
|
546
|
+
const finalText = accumulatedText || "No response from Poolbot.";
|
|
547
547
|
const finalStatus = phase === "error" ? "failed" : "completed";
|
|
548
548
|
requestFinalize(finalStatus, finalText);
|
|
549
549
|
}
|
|
@@ -647,7 +647,7 @@ export async function handleOpenResponsesHttpRequest(req, res, opts) {
|
|
|
647
647
|
.map((p) => (typeof p.text === "string" ? p.text : ""))
|
|
648
648
|
.filter(Boolean)
|
|
649
649
|
.join("\n\n")
|
|
650
|
-
: "No response from
|
|
650
|
+
: "No response from Poolbot.";
|
|
651
651
|
accumulatedText = content;
|
|
652
652
|
sawAssistantDelta = true;
|
|
653
653
|
writeSseEvent(res, {
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { isLoopbackHost } from "./net.js";
|
|
2
|
+
function normalizeHostHeader(hostHeader) {
|
|
3
|
+
return (hostHeader ?? "").trim().toLowerCase();
|
|
4
|
+
}
|
|
5
|
+
function resolveHostName(hostHeader) {
|
|
6
|
+
const host = normalizeHostHeader(hostHeader);
|
|
7
|
+
if (!host) {
|
|
8
|
+
return "";
|
|
9
|
+
}
|
|
10
|
+
if (host.startsWith("[")) {
|
|
11
|
+
const end = host.indexOf("]");
|
|
12
|
+
if (end !== -1) {
|
|
13
|
+
return host.slice(1, end);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const [name] = host.split(":");
|
|
17
|
+
return name ?? "";
|
|
18
|
+
}
|
|
19
|
+
function parseOrigin(originRaw) {
|
|
20
|
+
const trimmed = (originRaw ?? "").trim();
|
|
21
|
+
if (!trimmed || trimmed === "null") {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const url = new URL(trimmed);
|
|
26
|
+
return {
|
|
27
|
+
origin: url.origin.toLowerCase(),
|
|
28
|
+
host: url.host.toLowerCase(),
|
|
29
|
+
hostname: url.hostname.toLowerCase(),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function checkBrowserOrigin(params) {
|
|
37
|
+
const parsedOrigin = parseOrigin(params.origin);
|
|
38
|
+
if (!parsedOrigin) {
|
|
39
|
+
return { ok: false, reason: "origin missing or invalid" };
|
|
40
|
+
}
|
|
41
|
+
const allowlist = (params.allowedOrigins ?? [])
|
|
42
|
+
.map((value) => value.trim().toLowerCase())
|
|
43
|
+
.filter(Boolean);
|
|
44
|
+
if (allowlist.includes(parsedOrigin.origin)) {
|
|
45
|
+
return { ok: true };
|
|
46
|
+
}
|
|
47
|
+
const requestHost = normalizeHostHeader(params.requestHost);
|
|
48
|
+
if (requestHost && parsedOrigin.host === requestHost) {
|
|
49
|
+
return { ok: true };
|
|
50
|
+
}
|
|
51
|
+
const requestHostname = resolveHostName(requestHost);
|
|
52
|
+
if (isLoopbackHost(parsedOrigin.hostname) && isLoopbackHost(requestHostname)) {
|
|
53
|
+
return { ok: true };
|
|
54
|
+
}
|
|
55
|
+
return { ok: false, reason: "origin not allowed" };
|
|
56
|
+
}
|
|
@@ -23,6 +23,9 @@ export const GATEWAY_CLIENT_MODES = {
|
|
|
23
23
|
PROBE: "probe",
|
|
24
24
|
TEST: "test",
|
|
25
25
|
};
|
|
26
|
+
export const GATEWAY_CLIENT_CAPS = {
|
|
27
|
+
TOOL_EVENTS: "tool-events",
|
|
28
|
+
};
|
|
26
29
|
const GATEWAY_CLIENT_ID_SET = new Set(Object.values(GATEWAY_CLIENT_IDS));
|
|
27
30
|
const GATEWAY_CLIENT_MODE_SET = new Set(Object.values(GATEWAY_CLIENT_MODES));
|
|
28
31
|
export function normalizeGatewayClientId(raw) {
|
|
@@ -44,3 +47,9 @@ export function normalizeGatewayClientMode(raw) {
|
|
|
44
47
|
? normalized
|
|
45
48
|
: undefined;
|
|
46
49
|
}
|
|
50
|
+
export function hasGatewayClientCap(caps, cap) {
|
|
51
|
+
if (!Array.isArray(caps)) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
return caps.includes(cap);
|
|
55
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import AjvPkg from "ajv";
|
|
2
|
-
import { AgentEventSchema, AgentIdentityParamsSchema, AgentIdentityResultSchema, AgentParamsSchema, AgentSummarySchema, AgentsListParamsSchema, AgentsListResultSchema, AgentWaitParamsSchema, ChannelsLogoutParamsSchema, ChannelsStatusParamsSchema, ChannelsStatusResultSchema, ChatAbortParamsSchema, ChatEventSchema, ChatHistoryParamsSchema, ChatInjectParamsSchema, ChatSendParamsSchema, ConfigApplyParamsSchema, ConfigGetParamsSchema, ConfigPatchParamsSchema, ConfigSchemaParamsSchema, ConfigSchemaResponseSchema, ConfigSetParamsSchema, ConnectParamsSchema, CronAddParamsSchema, CronJobSchema, CronListParamsSchema, CronRemoveParamsSchema, CronRunParamsSchema, CronRunsParamsSchema, CronStatusParamsSchema, CronUpdateParamsSchema, DevicePairApproveParamsSchema, DevicePairListParamsSchema, DevicePairRejectParamsSchema, DeviceTokenRevokeParamsSchema, DeviceTokenRotateParamsSchema, ExecApprovalsGetParamsSchema, ExecApprovalsNodeGetParamsSchema, ExecApprovalsNodeSetParamsSchema, ExecApprovalsSetParamsSchema, ExecApprovalRequestParamsSchema, ExecApprovalResolveParamsSchema, ErrorCodes, ErrorShapeSchema, EventFrameSchema, errorShape, GatewayFrameSchema, HelloOkSchema, LogsTailParamsSchema, LogsTailResultSchema, ModelsListParamsSchema, NodeDescribeParamsSchema, NodeEventParamsSchema, NodeInvokeParamsSchema, NodeInvokeResultParamsSchema, NodeListParamsSchema, NodePairApproveParamsSchema, NodePairListParamsSchema, NodePairRejectParamsSchema, NodePairRequestParamsSchema, NodePairVerifyParamsSchema, NodeRenameParamsSchema, PollParamsSchema, PROTOCOL_VERSION, PresenceEntrySchema, ProtocolSchemas, RequestFrameSchema, ResponseFrameSchema, SendParamsSchema, SessionsCompactParamsSchema, SessionsDeleteParamsSchema, SessionsListParamsSchema, SessionsPatchParamsSchema, SessionsPreviewParamsSchema, SessionsResetParamsSchema, SessionsResolveParamsSchema, ShutdownEventSchema, SkillsBinsParamsSchema, SkillsInstallParamsSchema, SkillsStatusParamsSchema, SkillsUpdateParamsSchema, SnapshotSchema, StateVersionSchema, TalkModeParamsSchema, TickEventSchema, UpdateRunParamsSchema, WakeParamsSchema, WebLoginStartParamsSchema, WebLoginWaitParamsSchema, WizardCancelParamsSchema, WizardNextParamsSchema, WizardNextResultSchema, WizardStartParamsSchema, WizardStartResultSchema, WizardStatusParamsSchema, WizardStatusResultSchema, WizardStepSchema, } from "./schema.js";
|
|
2
|
+
import { AgentEventSchema, AgentIdentityParamsSchema, AgentIdentityResultSchema, AgentParamsSchema, AgentSummarySchema, AgentsFileEntrySchema, AgentsCreateParamsSchema, AgentsCreateResultSchema, AgentsUpdateParamsSchema, AgentsUpdateResultSchema, AgentsDeleteParamsSchema, AgentsDeleteResultSchema, AgentsFilesGetParamsSchema, AgentsFilesGetResultSchema, AgentsFilesListParamsSchema, AgentsFilesListResultSchema, AgentsFilesSetParamsSchema, AgentsFilesSetResultSchema, AgentsListParamsSchema, AgentsListResultSchema, AgentWaitParamsSchema, ChannelsLogoutParamsSchema, ChannelsStatusParamsSchema, ChannelsStatusResultSchema, ChatAbortParamsSchema, ChatEventSchema, ChatHistoryParamsSchema, ChatInjectParamsSchema, ChatSendParamsSchema, ConfigApplyParamsSchema, ConfigGetParamsSchema, ConfigPatchParamsSchema, ConfigSchemaParamsSchema, ConfigSchemaResponseSchema, ConfigSetParamsSchema, ConnectParamsSchema, CronAddParamsSchema, CronJobSchema, CronListParamsSchema, CronRemoveParamsSchema, CronRunParamsSchema, CronRunsParamsSchema, CronStatusParamsSchema, CronUpdateParamsSchema, DevicePairApproveParamsSchema, DevicePairListParamsSchema, DevicePairRejectParamsSchema, DeviceTokenRevokeParamsSchema, DeviceTokenRotateParamsSchema, ExecApprovalsGetParamsSchema, ExecApprovalsNodeGetParamsSchema, ExecApprovalsNodeSetParamsSchema, ExecApprovalsSetParamsSchema, ExecApprovalRequestParamsSchema, ExecApprovalResolveParamsSchema, ErrorCodes, ErrorShapeSchema, EventFrameSchema, errorShape, GatewayFrameSchema, HelloOkSchema, LogsTailParamsSchema, LogsTailResultSchema, ModelsListParamsSchema, NodeDescribeParamsSchema, NodeEventParamsSchema, NodeInvokeParamsSchema, NodeInvokeResultParamsSchema, NodeListParamsSchema, NodePairApproveParamsSchema, NodePairListParamsSchema, NodePairRejectParamsSchema, NodePairRequestParamsSchema, NodePairVerifyParamsSchema, NodeRenameParamsSchema, PollParamsSchema, PROTOCOL_VERSION, PresenceEntrySchema, ProtocolSchemas, RequestFrameSchema, ResponseFrameSchema, SendParamsSchema, SessionsCompactParamsSchema, SessionsDeleteParamsSchema, SessionsListParamsSchema, SessionsPatchParamsSchema, SessionsPreviewParamsSchema, SessionsResetParamsSchema, SessionsResolveParamsSchema, SessionsUsageParamsSchema, ShutdownEventSchema, SkillsBinsParamsSchema, SkillsInstallParamsSchema, SkillsStatusParamsSchema, SkillsUpdateParamsSchema, SnapshotSchema, StateVersionSchema, TalkModeParamsSchema, TickEventSchema, UpdateRunParamsSchema, WakeParamsSchema, WebLoginStartParamsSchema, WebLoginWaitParamsSchema, WizardCancelParamsSchema, WizardNextParamsSchema, WizardNextResultSchema, WizardStartParamsSchema, WizardStartResultSchema, WizardStatusParamsSchema, WizardStatusResultSchema, WizardStepSchema, } from "./schema.js";
|
|
3
3
|
const ajv = new AjvPkg({
|
|
4
4
|
allErrors: true,
|
|
5
5
|
strict: false,
|
|
@@ -16,6 +16,12 @@ export const validateAgentIdentityParams = ajv.compile(AgentIdentityParamsSchema
|
|
|
16
16
|
export const validateAgentWaitParams = ajv.compile(AgentWaitParamsSchema);
|
|
17
17
|
export const validateWakeParams = ajv.compile(WakeParamsSchema);
|
|
18
18
|
export const validateAgentsListParams = ajv.compile(AgentsListParamsSchema);
|
|
19
|
+
export const validateAgentsCreateParams = ajv.compile(AgentsCreateParamsSchema);
|
|
20
|
+
export const validateAgentsUpdateParams = ajv.compile(AgentsUpdateParamsSchema);
|
|
21
|
+
export const validateAgentsDeleteParams = ajv.compile(AgentsDeleteParamsSchema);
|
|
22
|
+
export const validateAgentsFilesListParams = ajv.compile(AgentsFilesListParamsSchema);
|
|
23
|
+
export const validateAgentsFilesGetParams = ajv.compile(AgentsFilesGetParamsSchema);
|
|
24
|
+
export const validateAgentsFilesSetParams = ajv.compile(AgentsFilesSetParamsSchema);
|
|
19
25
|
export const validateNodePairRequestParams = ajv.compile(NodePairRequestParamsSchema);
|
|
20
26
|
export const validateNodePairListParams = ajv.compile(NodePairListParamsSchema);
|
|
21
27
|
export const validateNodePairApproveParams = ajv.compile(NodePairApproveParamsSchema);
|
|
@@ -34,6 +40,7 @@ export const validateSessionsPatchParams = ajv.compile(SessionsPatchParamsSchema
|
|
|
34
40
|
export const validateSessionsResetParams = ajv.compile(SessionsResetParamsSchema);
|
|
35
41
|
export const validateSessionsDeleteParams = ajv.compile(SessionsDeleteParamsSchema);
|
|
36
42
|
export const validateSessionsCompactParams = ajv.compile(SessionsCompactParamsSchema);
|
|
43
|
+
export const validateSessionsUsageParams = ajv.compile(SessionsUsageParamsSchema);
|
|
37
44
|
export const validateConfigGetParams = ajv.compile(ConfigGetParamsSchema);
|
|
38
45
|
export const validateConfigSetParams = ajv.compile(ConfigSetParamsSchema);
|
|
39
46
|
export const validateConfigApplyParams = ajv.compile(ConfigApplyParamsSchema);
|
|
@@ -106,4 +113,4 @@ export function formatValidationErrors(errors) {
|
|
|
106
113
|
}
|
|
107
114
|
return unique.join("; ");
|
|
108
115
|
}
|
|
109
|
-
export { ConnectParamsSchema, HelloOkSchema, RequestFrameSchema, ResponseFrameSchema, EventFrameSchema, GatewayFrameSchema, PresenceEntrySchema, SnapshotSchema, ErrorShapeSchema, StateVersionSchema, AgentEventSchema, ChatEventSchema, SendParamsSchema, PollParamsSchema, AgentParamsSchema, AgentIdentityParamsSchema, AgentIdentityResultSchema, WakeParamsSchema, NodePairRequestParamsSchema, NodePairListParamsSchema, NodePairApproveParamsSchema, NodePairRejectParamsSchema, NodePairVerifyParamsSchema, NodeListParamsSchema, NodeInvokeParamsSchema, SessionsListParamsSchema, SessionsPreviewParamsSchema, SessionsPatchParamsSchema, SessionsResetParamsSchema, SessionsDeleteParamsSchema, SessionsCompactParamsSchema, ConfigGetParamsSchema, ConfigSetParamsSchema, ConfigApplyParamsSchema, ConfigPatchParamsSchema, ConfigSchemaParamsSchema, ConfigSchemaResponseSchema, WizardStartParamsSchema, WizardNextParamsSchema, WizardCancelParamsSchema, WizardStatusParamsSchema, WizardStepSchema, WizardNextResultSchema, WizardStartResultSchema, WizardStatusResultSchema, ChannelsStatusParamsSchema, ChannelsStatusResultSchema, ChannelsLogoutParamsSchema, WebLoginStartParamsSchema, WebLoginWaitParamsSchema, AgentSummarySchema, AgentsListParamsSchema, AgentsListResultSchema, ModelsListParamsSchema, SkillsStatusParamsSchema, SkillsInstallParamsSchema, SkillsUpdateParamsSchema, CronJobSchema, CronListParamsSchema, CronStatusParamsSchema, CronAddParamsSchema, CronUpdateParamsSchema, CronRemoveParamsSchema, CronRunParamsSchema, CronRunsParamsSchema, LogsTailParamsSchema, LogsTailResultSchema, ChatHistoryParamsSchema, ChatSendParamsSchema, ChatInjectParamsSchema, UpdateRunParamsSchema, TickEventSchema, ShutdownEventSchema, ProtocolSchemas, PROTOCOL_VERSION, ErrorCodes, errorShape, };
|
|
116
|
+
export { ConnectParamsSchema, HelloOkSchema, RequestFrameSchema, ResponseFrameSchema, EventFrameSchema, GatewayFrameSchema, PresenceEntrySchema, SnapshotSchema, ErrorShapeSchema, StateVersionSchema, AgentEventSchema, ChatEventSchema, SendParamsSchema, PollParamsSchema, AgentParamsSchema, AgentIdentityParamsSchema, AgentIdentityResultSchema, WakeParamsSchema, NodePairRequestParamsSchema, NodePairListParamsSchema, NodePairApproveParamsSchema, NodePairRejectParamsSchema, NodePairVerifyParamsSchema, NodeListParamsSchema, NodeInvokeParamsSchema, SessionsListParamsSchema, SessionsPreviewParamsSchema, SessionsPatchParamsSchema, SessionsResetParamsSchema, SessionsDeleteParamsSchema, SessionsCompactParamsSchema, SessionsUsageParamsSchema, ConfigGetParamsSchema, ConfigSetParamsSchema, ConfigApplyParamsSchema, ConfigPatchParamsSchema, ConfigSchemaParamsSchema, ConfigSchemaResponseSchema, WizardStartParamsSchema, WizardNextParamsSchema, WizardCancelParamsSchema, WizardStatusParamsSchema, WizardStepSchema, WizardNextResultSchema, WizardStartResultSchema, WizardStatusResultSchema, ChannelsStatusParamsSchema, ChannelsStatusResultSchema, ChannelsLogoutParamsSchema, WebLoginStartParamsSchema, WebLoginWaitParamsSchema, AgentSummarySchema, AgentsListParamsSchema, AgentsListResultSchema, AgentsFileEntrySchema, AgentsCreateParamsSchema, AgentsCreateResultSchema, AgentsUpdateParamsSchema, AgentsUpdateResultSchema, AgentsDeleteParamsSchema, AgentsDeleteResultSchema, AgentsFilesListParamsSchema, AgentsFilesListResultSchema, AgentsFilesGetParamsSchema, AgentsFilesGetResultSchema, AgentsFilesSetParamsSchema, AgentsFilesSetResultSchema, ModelsListParamsSchema, SkillsStatusParamsSchema, SkillsInstallParamsSchema, SkillsUpdateParamsSchema, CronJobSchema, CronListParamsSchema, CronStatusParamsSchema, CronAddParamsSchema, CronUpdateParamsSchema, CronRemoveParamsSchema, CronRunParamsSchema, CronRunsParamsSchema, LogsTailParamsSchema, LogsTailResultSchema, ChatHistoryParamsSchema, ChatSendParamsSchema, ChatInjectParamsSchema, UpdateRunParamsSchema, TickEventSchema, ShutdownEventSchema, ProtocolSchemas, PROTOCOL_VERSION, ErrorCodes, errorShape, };
|
|
@@ -25,11 +25,81 @@ export const AgentsListResultSchema = Type.Object({
|
|
|
25
25
|
scope: Type.Union([Type.Literal("per-sender"), Type.Literal("global")]),
|
|
26
26
|
agents: Type.Array(AgentSummarySchema),
|
|
27
27
|
}, { additionalProperties: false });
|
|
28
|
+
export const AgentsCreateParamsSchema = Type.Object({
|
|
29
|
+
name: NonEmptyString,
|
|
30
|
+
workspace: NonEmptyString,
|
|
31
|
+
emoji: Type.Optional(Type.String()),
|
|
32
|
+
avatar: Type.Optional(Type.String()),
|
|
33
|
+
}, { additionalProperties: false });
|
|
34
|
+
export const AgentsCreateResultSchema = Type.Object({
|
|
35
|
+
ok: Type.Literal(true),
|
|
36
|
+
agentId: NonEmptyString,
|
|
37
|
+
name: NonEmptyString,
|
|
38
|
+
workspace: NonEmptyString,
|
|
39
|
+
}, { additionalProperties: false });
|
|
40
|
+
export const AgentsUpdateParamsSchema = Type.Object({
|
|
41
|
+
agentId: NonEmptyString,
|
|
42
|
+
name: Type.Optional(NonEmptyString),
|
|
43
|
+
workspace: Type.Optional(NonEmptyString),
|
|
44
|
+
model: Type.Optional(NonEmptyString),
|
|
45
|
+
avatar: Type.Optional(Type.String()),
|
|
46
|
+
}, { additionalProperties: false });
|
|
47
|
+
export const AgentsUpdateResultSchema = Type.Object({
|
|
48
|
+
ok: Type.Literal(true),
|
|
49
|
+
agentId: NonEmptyString,
|
|
50
|
+
}, { additionalProperties: false });
|
|
51
|
+
export const AgentsDeleteParamsSchema = Type.Object({
|
|
52
|
+
agentId: NonEmptyString,
|
|
53
|
+
deleteFiles: Type.Optional(Type.Boolean()),
|
|
54
|
+
}, { additionalProperties: false });
|
|
55
|
+
export const AgentsDeleteResultSchema = Type.Object({
|
|
56
|
+
ok: Type.Literal(true),
|
|
57
|
+
agentId: NonEmptyString,
|
|
58
|
+
removedBindings: Type.Integer({ minimum: 0 }),
|
|
59
|
+
}, { additionalProperties: false });
|
|
60
|
+
export const AgentsFileEntrySchema = Type.Object({
|
|
61
|
+
name: NonEmptyString,
|
|
62
|
+
path: NonEmptyString,
|
|
63
|
+
missing: Type.Boolean(),
|
|
64
|
+
size: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
65
|
+
updatedAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
66
|
+
content: Type.Optional(Type.String()),
|
|
67
|
+
}, { additionalProperties: false });
|
|
68
|
+
export const AgentsFilesListParamsSchema = Type.Object({
|
|
69
|
+
agentId: NonEmptyString,
|
|
70
|
+
}, { additionalProperties: false });
|
|
71
|
+
export const AgentsFilesListResultSchema = Type.Object({
|
|
72
|
+
agentId: NonEmptyString,
|
|
73
|
+
workspace: NonEmptyString,
|
|
74
|
+
files: Type.Array(AgentsFileEntrySchema),
|
|
75
|
+
}, { additionalProperties: false });
|
|
76
|
+
export const AgentsFilesGetParamsSchema = Type.Object({
|
|
77
|
+
agentId: NonEmptyString,
|
|
78
|
+
name: NonEmptyString,
|
|
79
|
+
}, { additionalProperties: false });
|
|
80
|
+
export const AgentsFilesGetResultSchema = Type.Object({
|
|
81
|
+
agentId: NonEmptyString,
|
|
82
|
+
workspace: NonEmptyString,
|
|
83
|
+
file: AgentsFileEntrySchema,
|
|
84
|
+
}, { additionalProperties: false });
|
|
85
|
+
export const AgentsFilesSetParamsSchema = Type.Object({
|
|
86
|
+
agentId: NonEmptyString,
|
|
87
|
+
name: NonEmptyString,
|
|
88
|
+
content: Type.String(),
|
|
89
|
+
}, { additionalProperties: false });
|
|
90
|
+
export const AgentsFilesSetResultSchema = Type.Object({
|
|
91
|
+
ok: Type.Literal(true),
|
|
92
|
+
agentId: NonEmptyString,
|
|
93
|
+
workspace: NonEmptyString,
|
|
94
|
+
file: AgentsFileEntrySchema,
|
|
95
|
+
}, { additionalProperties: false });
|
|
28
96
|
export const ModelsListParamsSchema = Type.Object({}, { additionalProperties: false });
|
|
29
97
|
export const ModelsListResultSchema = Type.Object({
|
|
30
98
|
models: Type.Array(ModelChoiceSchema),
|
|
31
99
|
}, { additionalProperties: false });
|
|
32
|
-
export const SkillsStatusParamsSchema = Type.Object({
|
|
100
|
+
export const SkillsStatusParamsSchema = Type.Object({
|
|
101
|
+
agentId: Type.Optional(NonEmptyString),
|
|
102
|
+
}, { additionalProperties: false });
|
|
33
103
|
export const SkillsBinsParamsSchema = Type.Object({}, { additionalProperties: false });
|
|
34
104
|
export const SkillsBinsResultSchema = Type.Object({
|
|
35
105
|
bins: Type.Array(NonEmptyString),
|
|
@@ -3,7 +3,7 @@ import { NonEmptyString } from "./primitives.js";
|
|
|
3
3
|
export const CronScheduleSchema = Type.Union([
|
|
4
4
|
Type.Object({
|
|
5
5
|
kind: Type.Literal("at"),
|
|
6
|
-
|
|
6
|
+
at: NonEmptyString,
|
|
7
7
|
}, { additionalProperties: false }),
|
|
8
8
|
Type.Object({
|
|
9
9
|
kind: Type.Literal("every"),
|
|
@@ -27,8 +27,9 @@ export const CronPayloadSchema = Type.Union([
|
|
|
27
27
|
model: Type.Optional(Type.String()),
|
|
28
28
|
thinking: Type.Optional(Type.String()),
|
|
29
29
|
timeoutSeconds: Type.Optional(Type.Integer({ minimum: 1 })),
|
|
30
|
+
allowUnsafeExternalContent: Type.Optional(Type.Boolean()),
|
|
30
31
|
deliver: Type.Optional(Type.Boolean()),
|
|
31
|
-
channel: Type.Optional(Type.
|
|
32
|
+
channel: Type.Optional(Type.String()),
|
|
32
33
|
to: Type.Optional(Type.String()),
|
|
33
34
|
bestEffortDeliver: Type.Optional(Type.Boolean()),
|
|
34
35
|
}, { additionalProperties: false }),
|
|
@@ -44,16 +45,24 @@ export const CronPayloadPatchSchema = Type.Union([
|
|
|
44
45
|
model: Type.Optional(Type.String()),
|
|
45
46
|
thinking: Type.Optional(Type.String()),
|
|
46
47
|
timeoutSeconds: Type.Optional(Type.Integer({ minimum: 1 })),
|
|
48
|
+
allowUnsafeExternalContent: Type.Optional(Type.Boolean()),
|
|
47
49
|
deliver: Type.Optional(Type.Boolean()),
|
|
48
|
-
channel: Type.Optional(Type.
|
|
50
|
+
channel: Type.Optional(Type.String()),
|
|
49
51
|
to: Type.Optional(Type.String()),
|
|
50
52
|
bestEffortDeliver: Type.Optional(Type.Boolean()),
|
|
51
53
|
}, { additionalProperties: false }),
|
|
52
54
|
]);
|
|
53
|
-
export const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
export const CronDeliverySchema = Type.Object({
|
|
56
|
+
mode: Type.Union([Type.Literal("none"), Type.Literal("announce")]),
|
|
57
|
+
channel: Type.Optional(Type.Union([Type.Literal("last"), NonEmptyString])),
|
|
58
|
+
to: Type.Optional(Type.String()),
|
|
59
|
+
bestEffort: Type.Optional(Type.Boolean()),
|
|
60
|
+
}, { additionalProperties: false });
|
|
61
|
+
export const CronDeliveryPatchSchema = Type.Object({
|
|
62
|
+
mode: Type.Optional(Type.Union([Type.Literal("none"), Type.Literal("announce")])),
|
|
63
|
+
channel: Type.Optional(Type.Union([Type.Literal("last"), NonEmptyString])),
|
|
64
|
+
to: Type.Optional(Type.String()),
|
|
65
|
+
bestEffort: Type.Optional(Type.Boolean()),
|
|
57
66
|
}, { additionalProperties: false });
|
|
58
67
|
export const CronJobStateSchema = Type.Object({
|
|
59
68
|
nextRunAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
@@ -62,6 +71,7 @@ export const CronJobStateSchema = Type.Object({
|
|
|
62
71
|
lastStatus: Type.Optional(Type.Union([Type.Literal("ok"), Type.Literal("error"), Type.Literal("skipped")])),
|
|
63
72
|
lastError: Type.Optional(Type.String()),
|
|
64
73
|
lastDurationMs: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
74
|
+
consecutiveErrors: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
65
75
|
}, { additionalProperties: false });
|
|
66
76
|
export const CronJobSchema = Type.Object({
|
|
67
77
|
id: NonEmptyString,
|
|
@@ -76,7 +86,7 @@ export const CronJobSchema = Type.Object({
|
|
|
76
86
|
sessionTarget: Type.Union([Type.Literal("main"), Type.Literal("isolated")]),
|
|
77
87
|
wakeMode: Type.Union([Type.Literal("next-heartbeat"), Type.Literal("now")]),
|
|
78
88
|
payload: CronPayloadSchema,
|
|
79
|
-
|
|
89
|
+
delivery: Type.Optional(CronDeliverySchema),
|
|
80
90
|
state: CronJobStateSchema,
|
|
81
91
|
}, { additionalProperties: false });
|
|
82
92
|
export const CronListParamsSchema = Type.Object({
|
|
@@ -93,7 +103,7 @@ export const CronAddParamsSchema = Type.Object({
|
|
|
93
103
|
sessionTarget: Type.Union([Type.Literal("main"), Type.Literal("isolated")]),
|
|
94
104
|
wakeMode: Type.Union([Type.Literal("next-heartbeat"), Type.Literal("now")]),
|
|
95
105
|
payload: CronPayloadSchema,
|
|
96
|
-
|
|
106
|
+
delivery: Type.Optional(CronDeliverySchema),
|
|
97
107
|
}, { additionalProperties: false });
|
|
98
108
|
export const CronJobPatchSchema = Type.Object({
|
|
99
109
|
name: Type.Optional(NonEmptyString),
|
|
@@ -105,7 +115,7 @@ export const CronJobPatchSchema = Type.Object({
|
|
|
105
115
|
sessionTarget: Type.Optional(Type.Union([Type.Literal("main"), Type.Literal("isolated")])),
|
|
106
116
|
wakeMode: Type.Optional(Type.Union([Type.Literal("next-heartbeat"), Type.Literal("now")])),
|
|
107
117
|
payload: Type.Optional(CronPayloadPatchSchema),
|
|
108
|
-
|
|
118
|
+
delivery: Type.Optional(CronDeliveryPatchSchema),
|
|
109
119
|
state: Type.Optional(Type.Partial(CronJobStateSchema)),
|
|
110
120
|
}, { additionalProperties: false });
|
|
111
121
|
export const CronUpdateParamsSchema = Type.Union([
|
|
@@ -153,6 +163,8 @@ export const CronRunLogEntrySchema = Type.Object({
|
|
|
153
163
|
status: Type.Optional(Type.Union([Type.Literal("ok"), Type.Literal("error"), Type.Literal("skipped")])),
|
|
154
164
|
error: Type.Optional(Type.String()),
|
|
155
165
|
summary: Type.Optional(Type.String()),
|
|
166
|
+
sessionId: Type.Optional(NonEmptyString),
|
|
167
|
+
sessionKey: Type.Optional(NonEmptyString),
|
|
156
168
|
runAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
157
169
|
durationMs: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
158
170
|
nextRunAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AgentEventSchema, AgentIdentityParamsSchema, AgentIdentityResultSchema, AgentParamsSchema, AgentWaitParamsSchema, PollParamsSchema, SendParamsSchema, WakeParamsSchema, } from "./agent.js";
|
|
2
|
-
import { AgentSummarySchema, AgentsListParamsSchema, AgentsListResultSchema, ModelChoiceSchema, ModelsListParamsSchema, ModelsListResultSchema, SkillsBinsParamsSchema, SkillsBinsResultSchema, SkillsInstallParamsSchema, SkillsStatusParamsSchema, SkillsUpdateParamsSchema, } from "./agents-models-skills.js";
|
|
2
|
+
import { AgentSummarySchema, AgentsCreateParamsSchema, AgentsCreateResultSchema, AgentsDeleteParamsSchema, AgentsDeleteResultSchema, AgentsFileEntrySchema, AgentsFilesGetParamsSchema, AgentsFilesGetResultSchema, AgentsFilesListParamsSchema, AgentsFilesListResultSchema, AgentsFilesSetParamsSchema, AgentsFilesSetResultSchema, AgentsListParamsSchema, AgentsListResultSchema, AgentsUpdateParamsSchema, AgentsUpdateResultSchema, ModelChoiceSchema, ModelsListParamsSchema, ModelsListResultSchema, SkillsBinsParamsSchema, SkillsBinsResultSchema, SkillsInstallParamsSchema, SkillsStatusParamsSchema, SkillsUpdateParamsSchema, } from "./agents-models-skills.js";
|
|
3
3
|
import { ChannelsLogoutParamsSchema, ChannelsStatusParamsSchema, ChannelsStatusResultSchema, TalkModeParamsSchema, WebLoginStartParamsSchema, WebLoginWaitParamsSchema, } from "./channels.js";
|
|
4
4
|
import { ConfigApplyParamsSchema, ConfigGetParamsSchema, ConfigPatchParamsSchema, ConfigSchemaParamsSchema, ConfigSchemaResponseSchema, ConfigSetParamsSchema, UpdateRunParamsSchema, } from "./config.js";
|
|
5
5
|
import { CronAddParamsSchema, CronJobSchema, CronListParamsSchema, CronRemoveParamsSchema, CronRunLogEntrySchema, CronRunParamsSchema, CronRunsParamsSchema, CronStatusParamsSchema, CronUpdateParamsSchema, } from "./cron.js";
|
|
@@ -8,7 +8,7 @@ import { DevicePairApproveParamsSchema, DevicePairListParamsSchema, DevicePairRe
|
|
|
8
8
|
import { ConnectParamsSchema, ErrorShapeSchema, EventFrameSchema, GatewayFrameSchema, HelloOkSchema, RequestFrameSchema, ResponseFrameSchema, ShutdownEventSchema, TickEventSchema, } from "./frames.js";
|
|
9
9
|
import { ChatAbortParamsSchema, ChatEventSchema, ChatHistoryParamsSchema, ChatInjectParamsSchema, ChatSendParamsSchema, LogsTailParamsSchema, LogsTailResultSchema, } from "./logs-chat.js";
|
|
10
10
|
import { NodeDescribeParamsSchema, NodeEventParamsSchema, NodeInvokeParamsSchema, NodeInvokeResultParamsSchema, NodeInvokeRequestEventSchema, NodeListParamsSchema, NodePairApproveParamsSchema, NodePairListParamsSchema, NodePairRejectParamsSchema, NodePairRequestParamsSchema, NodePairVerifyParamsSchema, NodeRenameParamsSchema, } from "./nodes.js";
|
|
11
|
-
import { SessionsCompactParamsSchema, SessionsDeleteParamsSchema, SessionsListParamsSchema, SessionsPatchParamsSchema, SessionsPreviewParamsSchema, SessionsResetParamsSchema, SessionsResolveParamsSchema, } from "./sessions.js";
|
|
11
|
+
import { SessionsCompactParamsSchema, SessionsDeleteParamsSchema, SessionsListParamsSchema, SessionsPatchParamsSchema, SessionsPreviewParamsSchema, SessionsResetParamsSchema, SessionsResolveParamsSchema, SessionsUsageParamsSchema, } from "./sessions.js";
|
|
12
12
|
import { PresenceEntrySchema, SnapshotSchema, StateVersionSchema } from "./snapshot.js";
|
|
13
13
|
import { WizardCancelParamsSchema, WizardNextParamsSchema, WizardNextResultSchema, WizardStartParamsSchema, WizardStartResultSchema, WizardStatusParamsSchema, WizardStatusResultSchema, WizardStepSchema, } from "./wizard.js";
|
|
14
14
|
export const ProtocolSchemas = {
|
|
@@ -49,6 +49,7 @@ export const ProtocolSchemas = {
|
|
|
49
49
|
SessionsResetParams: SessionsResetParamsSchema,
|
|
50
50
|
SessionsDeleteParams: SessionsDeleteParamsSchema,
|
|
51
51
|
SessionsCompactParams: SessionsCompactParamsSchema,
|
|
52
|
+
SessionsUsageParams: SessionsUsageParamsSchema,
|
|
52
53
|
ConfigGetParams: ConfigGetParamsSchema,
|
|
53
54
|
ConfigSetParams: ConfigSetParamsSchema,
|
|
54
55
|
ConfigApplyParams: ConfigApplyParamsSchema,
|
|
@@ -72,6 +73,19 @@ export const ProtocolSchemas = {
|
|
|
72
73
|
AgentSummary: AgentSummarySchema,
|
|
73
74
|
AgentsListParams: AgentsListParamsSchema,
|
|
74
75
|
AgentsListResult: AgentsListResultSchema,
|
|
76
|
+
AgentsCreateParams: AgentsCreateParamsSchema,
|
|
77
|
+
AgentsCreateResult: AgentsCreateResultSchema,
|
|
78
|
+
AgentsUpdateParams: AgentsUpdateParamsSchema,
|
|
79
|
+
AgentsUpdateResult: AgentsUpdateResultSchema,
|
|
80
|
+
AgentsDeleteParams: AgentsDeleteParamsSchema,
|
|
81
|
+
AgentsDeleteResult: AgentsDeleteResultSchema,
|
|
82
|
+
AgentsFileEntry: AgentsFileEntrySchema,
|
|
83
|
+
AgentsFilesListParams: AgentsFilesListParamsSchema,
|
|
84
|
+
AgentsFilesListResult: AgentsFilesListResultSchema,
|
|
85
|
+
AgentsFilesGetParams: AgentsFilesGetParamsSchema,
|
|
86
|
+
AgentsFilesGetResult: AgentsFilesGetResultSchema,
|
|
87
|
+
AgentsFilesSetParams: AgentsFilesSetParamsSchema,
|
|
88
|
+
AgentsFilesSetResult: AgentsFilesSetResultSchema,
|
|
75
89
|
ModelChoice: ModelChoiceSchema,
|
|
76
90
|
ModelsListParams: ModelsListParamsSchema,
|
|
77
91
|
ModelsListResult: ModelsListResultSchema,
|
|
@@ -67,3 +67,15 @@ export const SessionsCompactParamsSchema = Type.Object({
|
|
|
67
67
|
key: NonEmptyString,
|
|
68
68
|
maxLines: Type.Optional(Type.Integer({ minimum: 1 })),
|
|
69
69
|
}, { additionalProperties: false });
|
|
70
|
+
export const SessionsUsageParamsSchema = Type.Object({
|
|
71
|
+
/** Specific session key to analyze; if omitted returns all sessions. */
|
|
72
|
+
key: Type.Optional(NonEmptyString),
|
|
73
|
+
/** Start date for range filter (YYYY-MM-DD). */
|
|
74
|
+
startDate: Type.Optional(Type.String({ pattern: "^\\d{4}-\\d{2}-\\d{2}$" })),
|
|
75
|
+
/** End date for range filter (YYYY-MM-DD). */
|
|
76
|
+
endDate: Type.Optional(Type.String({ pattern: "^\\d{4}-\\d{2}-\\d{2}$" })),
|
|
77
|
+
/** Maximum sessions to return (default 50). */
|
|
78
|
+
limit: Type.Optional(Type.Integer({ minimum: 1 })),
|
|
79
|
+
/** Include context weight breakdown (systemPromptReport). */
|
|
80
|
+
includeContextWeight: Type.Optional(Type.Boolean()),
|
|
81
|
+
}, { additionalProperties: false });
|
|
@@ -25,7 +25,7 @@ export function createGatewayHooksRequestHandler(params) {
|
|
|
25
25
|
enabled: true,
|
|
26
26
|
createdAtMs: now,
|
|
27
27
|
updatedAtMs: now,
|
|
28
|
-
schedule: { kind: "at",
|
|
28
|
+
schedule: { kind: "at", at: new Date(now).toISOString() },
|
|
29
29
|
sessionTarget: "isolated",
|
|
30
30
|
wakeMode: value.wakeMode,
|
|
31
31
|
payload: {
|
|
@@ -13,20 +13,24 @@ const EVENT_SCOPE_GUARDS = {
|
|
|
13
13
|
};
|
|
14
14
|
function hasEventScope(client, event) {
|
|
15
15
|
const required = EVENT_SCOPE_GUARDS[event];
|
|
16
|
-
if (!required)
|
|
16
|
+
if (!required) {
|
|
17
17
|
return true;
|
|
18
|
+
}
|
|
18
19
|
const role = client.connect.role ?? "operator";
|
|
19
|
-
if (role !== "operator")
|
|
20
|
+
if (role !== "operator") {
|
|
20
21
|
return false;
|
|
22
|
+
}
|
|
21
23
|
const scopes = Array.isArray(client.connect.scopes) ? client.connect.scopes : [];
|
|
22
|
-
if (scopes.includes(ADMIN_SCOPE))
|
|
24
|
+
if (scopes.includes(ADMIN_SCOPE)) {
|
|
23
25
|
return true;
|
|
26
|
+
}
|
|
24
27
|
return required.some((scope) => scopes.includes(scope));
|
|
25
28
|
}
|
|
26
29
|
export function createGatewayBroadcaster(params) {
|
|
27
30
|
let seq = 0;
|
|
28
|
-
const
|
|
29
|
-
const
|
|
31
|
+
const broadcastInternal = (event, payload, opts, targetConnIds) => {
|
|
32
|
+
const isTargeted = Boolean(targetConnIds);
|
|
33
|
+
const eventSeq = isTargeted ? undefined : ++seq;
|
|
30
34
|
const frame = JSON.stringify({
|
|
31
35
|
type: "event",
|
|
32
36
|
event,
|
|
@@ -36,8 +40,9 @@ export function createGatewayBroadcaster(params) {
|
|
|
36
40
|
});
|
|
37
41
|
const logMeta = {
|
|
38
42
|
event,
|
|
39
|
-
seq: eventSeq,
|
|
43
|
+
seq: eventSeq ?? "targeted",
|
|
40
44
|
clients: params.clients.size,
|
|
45
|
+
targets: targetConnIds ? targetConnIds.size : undefined,
|
|
41
46
|
dropIfSlow: opts?.dropIfSlow,
|
|
42
47
|
presenceVersion: opts?.stateVersion?.presence,
|
|
43
48
|
healthVersion: opts?.stateVersion?.health,
|
|
@@ -47,11 +52,16 @@ export function createGatewayBroadcaster(params) {
|
|
|
47
52
|
}
|
|
48
53
|
logWs("out", "event", logMeta);
|
|
49
54
|
for (const c of params.clients) {
|
|
50
|
-
if (!
|
|
55
|
+
if (targetConnIds && !targetConnIds.has(c.connId)) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (!hasEventScope(c, event)) {
|
|
51
59
|
continue;
|
|
60
|
+
}
|
|
52
61
|
const slow = c.socket.bufferedAmount > MAX_BUFFERED_BYTES;
|
|
53
|
-
if (slow && opts?.dropIfSlow)
|
|
62
|
+
if (slow && opts?.dropIfSlow) {
|
|
54
63
|
continue;
|
|
64
|
+
}
|
|
55
65
|
if (slow) {
|
|
56
66
|
try {
|
|
57
67
|
c.socket.close(1008, "slow consumer");
|
|
@@ -69,5 +79,12 @@ export function createGatewayBroadcaster(params) {
|
|
|
69
79
|
}
|
|
70
80
|
}
|
|
71
81
|
};
|
|
72
|
-
|
|
82
|
+
const broadcast = (event, payload, opts) => broadcastInternal(event, payload, opts);
|
|
83
|
+
const broadcastToConnIds = (event, payload, connIds, opts) => {
|
|
84
|
+
if (connIds.size === 0) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
broadcastInternal(event, payload, opts, connIds);
|
|
88
|
+
};
|
|
89
|
+
return { broadcast, broadcastToConnIds };
|
|
73
90
|
}
|