@songsid/agend 2.2.0-beta.2 → 2.2.0-beta.20
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/README.md +40 -24
- package/README.zh-TW.md +40 -24
- package/dist/agent-cli-instructions.md +6 -2
- package/dist/agent-cli.js +15 -7
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.js +3 -0
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/agent-whats-new.js +16 -4
- package/dist/agent-whats-new.js.map +1 -1
- package/dist/auth-api.d.ts +3 -1
- package/dist/auth-api.js +17 -1
- package/dist/auth-api.js.map +1 -1
- package/dist/backend/antigravity.d.ts +33 -0
- package/dist/backend/antigravity.js +126 -18
- package/dist/backend/antigravity.js.map +1 -1
- package/dist/backend/claude-carry.d.ts +22 -0
- package/dist/backend/claude-carry.js +170 -0
- package/dist/backend/claude-carry.js.map +1 -0
- package/dist/backend/claude-code.d.ts +65 -2
- package/dist/backend/claude-code.js +226 -33
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex-metadata.d.ts +33 -0
- package/dist/backend/codex-metadata.js +122 -18
- package/dist/backend/codex-metadata.js.map +1 -1
- package/dist/backend/codex.d.ts +3 -0
- package/dist/backend/codex.js +17 -1
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/credential-profile.d.ts +40 -3
- package/dist/backend/credential-profile.js +113 -5
- package/dist/backend/credential-profile.js.map +1 -1
- package/dist/backend/effort-metadata.d.ts +37 -1
- package/dist/backend/effort-metadata.js +86 -15
- package/dist/backend/effort-metadata.js.map +1 -1
- package/dist/backend/grok.d.ts +4 -0
- package/dist/backend/grok.js +14 -0
- package/dist/backend/grok.js.map +1 -1
- package/dist/backend/kiro.d.ts +27 -1
- package/dist/backend/kiro.js +63 -10
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/launch-effort.d.ts +61 -0
- package/dist/backend/launch-effort.js +170 -0
- package/dist/backend/launch-effort.js.map +1 -0
- package/dist/backend/muse.d.ts +84 -0
- package/dist/backend/muse.js +449 -53
- package/dist/backend/muse.js.map +1 -1
- package/dist/backend/types.d.ts +48 -2
- package/dist/backend/types.js +12 -1
- package/dist/backend/types.js.map +1 -1
- package/dist/backend-command.d.ts +91 -0
- package/dist/backend-command.js +122 -0
- package/dist/backend-command.js.map +1 -0
- package/dist/background-work-ended.d.ts +18 -0
- package/dist/background-work-ended.js +30 -0
- package/dist/background-work-ended.js.map +1 -0
- package/dist/cache-service.d.ts +2 -0
- package/dist/cache-service.js +2 -1
- package/dist/cache-service.js.map +1 -1
- package/dist/channel/adapters/discord.d.ts +26 -1
- package/dist/channel/adapters/discord.js +103 -3
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/adapters/telegram.d.ts +35 -3
- package/dist/channel/adapters/telegram.js +122 -23
- package/dist/channel/adapters/telegram.js.map +1 -1
- package/dist/channel/mcp-tools.js +5 -3
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/channel/message-edit-errors.d.ts +5 -0
- package/dist/channel/message-edit-errors.js +24 -0
- package/dist/channel/message-edit-errors.js.map +1 -0
- package/dist/channel/telegram-markdown.d.ts +6 -0
- package/dist/channel/telegram-markdown.js +104 -0
- package/dist/channel/telegram-markdown.js.map +1 -0
- package/dist/channel/tool-router.d.ts +2 -0
- package/dist/channel/tool-router.js +6 -5
- package/dist/channel/tool-router.js.map +1 -1
- package/dist/channel/types.d.ts +46 -4
- package/dist/cli.js +184 -34
- package/dist/cli.js.map +1 -1
- package/dist/command-table.d.ts +2 -2
- package/dist/command-table.js +5 -2
- package/dist/command-table.js.map +1 -1
- package/dist/compact-watch.d.ts +86 -0
- package/dist/compact-watch.js +288 -0
- package/dist/compact-watch.js.map +1 -0
- package/dist/config-validator.js +55 -5
- package/dist/config-validator.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/cross-instance-envelope.js +2 -0
- package/dist/cross-instance-envelope.js.map +1 -1
- package/dist/daemon.d.ts +129 -1
- package/dist/daemon.js +754 -94
- package/dist/daemon.js.map +1 -1
- package/dist/delivery-outbox.d.ts +64 -8
- package/dist/delivery-outbox.js +315 -24
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/delivery-reconciliation.d.ts +18 -1
- package/dist/delivery-reconciliation.js +67 -2
- package/dist/delivery-reconciliation.js.map +1 -1
- package/dist/doctor.js +7 -0
- package/dist/doctor.js.map +1 -1
- package/dist/fleet-context.d.ts +12 -1
- package/dist/fleet-manager.d.ts +392 -19
- package/dist/fleet-manager.js +2030 -275
- package/dist/fleet-manager.js.map +1 -1
- package/dist/forged-envelope-scan.d.ts +4 -3
- package/dist/forged-envelope-scan.js +4 -3
- package/dist/forged-envelope-scan.js.map +1 -1
- package/dist/general-knowledge/skills/credential-profiles/SKILL.md +84 -16
- package/dist/general-knowledge/skills/cross-instance-messaging/SKILL.md +16 -1
- package/dist/general-knowledge/skills/model-discovery/SKILL.md +4 -1
- package/dist/general-knowledge/skills/worker-collaboration/SKILL.md +4 -0
- package/dist/host-memory.d.ts +10 -0
- package/dist/host-memory.js +33 -1
- package/dist/host-memory.js.map +1 -1
- package/dist/human-delivery-receipts.d.ts +83 -0
- package/dist/human-delivery-receipts.js +194 -0
- package/dist/human-delivery-receipts.js.map +1 -0
- package/dist/install-lock.d.ts +18 -1
- package/dist/install-lock.js +30 -3
- package/dist/install-lock.js.map +1 -1
- package/dist/instance-avatar.d.ts +5 -4
- package/dist/instance-avatar.js +12 -8
- package/dist/instance-avatar.js.map +1 -1
- package/dist/instance-config-impact.js +1 -0
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +25 -6
- package/dist/instance-lifecycle.js +76 -27
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.js +3 -3
- package/dist/instructions.js.map +1 -1
- package/dist/kiro-compact-pane.d.ts +38 -0
- package/dist/kiro-compact-pane.js +57 -0
- package/dist/kiro-compact-pane.js.map +1 -0
- package/dist/kiro-log-gate.d.ts +42 -0
- package/dist/kiro-log-gate.js +39 -0
- package/dist/kiro-log-gate.js.map +1 -0
- package/dist/launchd-handoff.d.ts +43 -0
- package/dist/launchd-handoff.js +56 -0
- package/dist/launchd-handoff.js.map +1 -0
- package/dist/locale.js +268 -42
- package/dist/locale.js.map +1 -1
- package/dist/log-service.d.ts +99 -0
- package/dist/log-service.js +243 -0
- package/dist/log-service.js.map +1 -0
- package/dist/log-steps.d.ts +169 -0
- package/dist/log-steps.js +858 -0
- package/dist/log-steps.js.map +1 -0
- package/dist/login-controller.d.ts +20 -3
- package/dist/login-controller.js +71 -19
- package/dist/login-controller.js.map +1 -1
- package/dist/login-flows.d.ts +5 -2
- package/dist/login-flows.js +5 -4
- package/dist/login-flows.js.map +1 -1
- package/dist/login-shell.d.ts +21 -0
- package/dist/login-shell.js +98 -0
- package/dist/login-shell.js.map +1 -0
- package/dist/memory-pressure.d.ts +13 -1
- package/dist/memory-pressure.js +50 -10
- package/dist/memory-pressure.js.map +1 -1
- package/dist/needs-you-hub.js +2 -0
- package/dist/needs-you-hub.js.map +1 -1
- package/dist/needs-you-live.d.ts +6 -0
- package/dist/needs-you-live.js +23 -3
- package/dist/needs-you-live.js.map +1 -1
- package/dist/outbound-handlers.d.ts +100 -0
- package/dist/outbound-handlers.js +277 -93
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +30 -15
- package/dist/outbound-schemas.js +23 -5
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/provider-probe.d.ts +29 -0
- package/dist/provider-probe.js +198 -2
- package/dist/provider-probe.js.map +1 -1
- package/dist/public-link-progress.d.ts +1 -1
- package/dist/public-link-progress.js +8 -2
- package/dist/public-link-progress.js.map +1 -1
- package/dist/public-preview.d.ts +101 -0
- package/dist/public-preview.js +236 -0
- package/dist/public-preview.js.map +1 -0
- package/dist/public-web-gateway.d.ts +2 -0
- package/dist/public-web-gateway.js +20 -6
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/public-web-link.d.ts +24 -1
- package/dist/public-web-link.js +63 -9
- package/dist/public-web-link.js.map +1 -1
- package/dist/quickstart-api.d.ts +1 -1
- package/dist/quickstart-api.js +8 -6
- package/dist/quickstart-api.js.map +1 -1
- package/dist/quickstart.d.ts +12 -0
- package/dist/quickstart.js +36 -6
- package/dist/quickstart.js.map +1 -1
- package/dist/reply-buttons-controller.d.ts +89 -5
- package/dist/reply-buttons-controller.js +273 -8
- package/dist/reply-buttons-controller.js.map +1 -1
- package/dist/reply-buttons.d.ts +48 -3
- package/dist/reply-buttons.js +105 -10
- package/dist/reply-buttons.js.map +1 -1
- package/dist/reply-polls.d.ts +85 -0
- package/dist/reply-polls.js +154 -0
- package/dist/reply-polls.js.map +1 -0
- package/dist/restart-guard.d.ts +6 -3
- package/dist/restart-guard.js +6 -3
- package/dist/restart-guard.js.map +1 -1
- package/dist/restart-progress.d.ts +33 -2
- package/dist/restart-progress.js +30 -2
- package/dist/restart-progress.js.map +1 -1
- package/dist/sd-notify.d.ts +22 -1
- package/dist/sd-notify.js +63 -10
- package/dist/sd-notify.js.map +1 -1
- package/dist/service-activation.d.ts +15 -7
- package/dist/service-activation.js +42 -26
- package/dist/service-activation.js.map +1 -1
- package/dist/service-installer.d.ts +55 -0
- package/dist/service-installer.js +90 -3
- package/dist/service-installer.js.map +1 -1
- package/dist/service-plan.d.ts +11 -0
- package/dist/service-plan.js +23 -0
- package/dist/service-plan.js.map +1 -1
- package/dist/settings-api.js +14 -4
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +4 -2
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-effect.js +2 -0
- package/dist/settings-effect.js.map +1 -1
- package/dist/spawn-gate.js +5 -1
- package/dist/spawn-gate.js.map +1 -1
- package/dist/spawn-hold-reply.d.ts +12 -0
- package/dist/spawn-hold-reply.js +39 -0
- package/dist/spawn-hold-reply.js.map +1 -0
- package/dist/systemd-peer-bus.d.ts +95 -0
- package/dist/systemd-peer-bus.js +430 -0
- package/dist/systemd-peer-bus.js.map +1 -0
- package/dist/systemd-runtime.d.ts +27 -1
- package/dist/systemd-runtime.js +69 -7
- package/dist/systemd-runtime.js.map +1 -1
- package/dist/tips.js +1 -1
- package/dist/tips.js.map +1 -1
- package/dist/tool-permissions.js +3 -3
- package/dist/tool-permissions.js.map +1 -1
- package/dist/tool-progress.js +3 -2
- package/dist/tool-progress.js.map +1 -1
- package/dist/topic-commands.d.ts +71 -4
- package/dist/topic-commands.js +167 -34
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-delta-reader.d.ts +3 -3
- package/dist/transcript-delta-reader.js +8 -8
- package/dist/transcript-delta-reader.js.map +1 -1
- package/dist/transcript-jsonl.d.ts +85 -3
- package/dist/transcript-jsonl.js +156 -13
- package/dist/transcript-jsonl.js.map +1 -1
- package/dist/transcript-monitor.d.ts +11 -0
- package/dist/transcript-monitor.js +61 -13
- package/dist/transcript-monitor.js.map +1 -1
- package/dist/transcript-sources.d.ts +24 -0
- package/dist/transcript-sources.js +211 -56
- package/dist/transcript-sources.js.map +1 -1
- package/dist/tunnel/cloudflared.d.ts +7 -15
- package/dist/tunnel/cloudflared.js +36 -1
- package/dist/tunnel/cloudflared.js.map +1 -1
- package/dist/tunnel/purpose-lane.d.ts +5 -1
- package/dist/tunnel/purpose-lane.js +14 -7
- package/dist/tunnel/purpose-lane.js.map +1 -1
- package/dist/tunnel/types.d.ts +5 -1
- package/dist/tunnel/types.js.map +1 -1
- package/dist/turn-resume.d.ts +2 -0
- package/dist/turn-resume.js +1 -1
- package/dist/turn-resume.js.map +1 -1
- package/dist/types.d.ts +22 -0
- package/dist/ui/chat-commands.js +1 -0
- package/dist/ui/chat-mentions.js +63 -0
- package/dist/ui/chat-render.js +80 -10
- package/dist/ui/chat-store.js +70 -6
- package/dist/ui/chat-strings.js +62 -32
- package/dist/ui/chat-thread.js +199 -24
- package/dist/ui/chat-time.js +80 -0
- package/dist/ui/chat-tour.js +17 -14
- package/dist/ui/panel-chat.js +45 -21
- package/dist/ui/panel-details.js +2 -0
- package/dist/ui/panel-fleet.js +213 -58
- package/dist/ui/panel-log.js +428 -0
- package/dist/ui/panel-needs.js +14 -10
- package/dist/ui/panel-settings.js +82 -17
- package/dist/ui/preview-panel.js +55 -15
- package/dist/ui/preview-status.js +28 -0
- package/dist/ui/preview.js +44 -3
- package/dist/ui/settings-dialogs.js +11 -6
- package/dist/ui/settings-model.js +3 -1
- package/dist/ui/settings-strings.js +32 -12
- package/dist/ui/settings-token.js +8 -1
- package/dist/ui/settings-wizard.js +5 -3
- package/dist/ui/shared/app-i18n.js +41 -15
- package/dist/ui/shared/app-prefs.js +250 -0
- package/dist/ui/shared/app-route.js +6 -1
- package/dist/ui/shared/app-shell.js +165 -8
- package/dist/ui/shared/app-store.js +5 -1
- package/dist/ui/shared/app-stream.js +26 -5
- package/dist/ui/shared/app.css +170 -30
- package/dist/ui/shared/app.js +11 -1
- package/dist/ui/shared/fonts/README.md +1 -1
- package/dist/ui/shared/header-tools.js +83 -13
- package/dist/ui/shared/instance-nav.js +178 -51
- package/dist/ui/shared/instance-switch.js +8 -5
- package/dist/ui/shared/panel-view.js +21 -4
- package/dist/ui/shared/signin.js +15 -9
- package/dist/ui/shared/theme.js +39 -7
- package/dist/ui/shared/tokens.css +1 -1
- package/dist/ui/shared/ui-icons.js +2 -0
- package/dist/ui/shared/usage-dialog.js +23 -5
- package/dist/ui/shared/view-strings.js +40 -4
- package/dist/ui/signin.html +8 -3
- package/dist/unrecognised-prompt.d.ts +23 -0
- package/dist/unrecognised-prompt.js +74 -0
- package/dist/unrecognised-prompt.js.map +1 -0
- package/dist/update-check.d.ts +31 -0
- package/dist/update-check.js +47 -0
- package/dist/update-check.js.map +1 -1
- package/dist/update-install.d.ts +13 -1
- package/dist/update-install.js +16 -4
- package/dist/update-install.js.map +1 -1
- package/dist/update-launch.d.ts +48 -1
- package/dist/update-launch.js +159 -5
- package/dist/update-launch.js.map +1 -1
- package/dist/update-marker.d.ts +51 -0
- package/dist/update-marker.js +61 -0
- package/dist/update-marker.js.map +1 -1
- package/dist/usage/i18n-keys.d.ts +1 -1
- package/dist/usage/i18n-keys.js +1 -1
- package/dist/usage/i18n-keys.js.map +1 -1
- package/dist/usage/providers.d.ts +62 -13
- package/dist/usage/providers.js +256 -68
- package/dist/usage/providers.js.map +1 -1
- package/dist/usage/statusline-usage.d.ts +6 -2
- package/dist/usage/statusline-usage.js +10 -4
- package/dist/usage/statusline-usage.js.map +1 -1
- package/dist/view-api.js +31 -9
- package/dist/view-api.js.map +1 -1
- package/dist/web-api.d.ts +82 -4
- package/dist/web-api.js +632 -88
- package/dist/web-api.js.map +1 -1
- package/dist/web-auth.js +5 -2
- package/dist/web-auth.js.map +1 -1
- package/dist/web-chat-history.d.ts +26 -1
- package/dist/web-chat-history.js +47 -8
- package/dist/web-chat-history.js.map +1 -1
- package/dist/web-commands.d.ts +41 -5
- package/dist/web-commands.js +25 -7
- package/dist/web-commands.js.map +1 -1
- package/dist/web-login.d.ts +14 -0
- package/dist/web-login.js +4 -2
- package/dist/web-login.js.map +1 -1
- package/dist/web-mentions.d.ts +44 -0
- package/dist/web-mentions.js +75 -0
- package/dist/web-mentions.js.map +1 -0
- package/dist/web-prefs.d.ts +81 -0
- package/dist/web-prefs.js +297 -0
- package/dist/web-prefs.js.map +1 -0
- package/dist/web-preview.d.ts +14 -1
- package/dist/web-preview.js +35 -13
- package/dist/web-preview.js.map +1 -1
- package/dist/web-profile.d.ts +32 -0
- package/dist/web-profile.js +132 -0
- package/dist/web-profile.js.map +1 -0
- package/dist/web-reply-files.d.ts +45 -0
- package/dist/web-reply-files.js +223 -0
- package/dist/web-reply-files.js.map +1 -0
- package/dist/web-schedules.d.ts +12 -0
- package/dist/web-schedules.js +34 -0
- package/dist/web-schedules.js.map +1 -0
- package/dist/web-server-drain.d.ts +10 -0
- package/dist/web-server-drain.js +50 -0
- package/dist/web-server-drain.js.map +1 -0
- package/dist/web-session.d.ts +14 -0
- package/dist/web-session.js +11 -1
- package/dist/web-session.js.map +1 -1
- package/dist/web-settings-patch.d.ts +3 -1
- package/dist/web-settings-patch.js +4 -1
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/web-shell-routes.d.ts +4 -0
- package/dist/web-shell-routes.js +9 -0
- package/dist/web-shell-routes.js.map +1 -1
- package/dist/web-upload.d.ts +135 -7
- package/dist/web-upload.js +315 -51
- package/dist/web-upload.js.map +1 -1
- package/launcher/install-admission.cjs +61 -6
- package/package.json +3 -3
- package/templates/launchd.plist.ejs +3 -1
- package/templates/systemd.service.ejs +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../../src/channel/mcp-tools.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAgB,MAAM,KAAK,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AAWlD,gFAAgF;AAChF,SAAS,iBAAiB,CAAC,MAAe;IACxC,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAA4B,CAAC;IAC9D,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;IAChD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC,UAAqC,CAAC;IACzG,OAAO,EAAE,GAAG,IAAI,EAAE,UAAU,EAAsB,CAAC;AACrD,CAAC;AAQD;;;GAGG;AACH,MAAM,IAAI,GAAqC;IAC7C,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS;QACzB,6IAA6I,CAAC;IAChJ,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS;QACzB,6CAA6C,CAAC;IAChD,CAAC,cAAc,EAAE,OAAO,CAAC,eAAe;QACtC,8EAA8E,CAAC;IACjF,CAAC,qBAAqB,EAAE,OAAO,CAAC,sBAAsB;QACpD,+FAA+F,CAAC;IAClG,CAAC,iBAAiB,EAAE,OAAO,CAAC,kBAAkB;QAC5C,uJAAuJ,CAAC;IAC1J,CAAC,iBAAiB,EAAE,OAAO,CAAC,kBAAkB;QAC5C,+HAA+H,CAAC;IAClI,CAAC,gBAAgB,EAAE,OAAO,CAAC,iBAAiB;QAC1C,2DAA2D,CAAC;IAC9D,CAAC,iBAAiB,EAAE,OAAO,CAAC,kBAAkB;QAC5C,sEAAsE,CAAC;IACzE,CAAC,iBAAiB,EAAE,OAAO,CAAC,kBAAkB;QAC5C,0BAA0B,CAAC;IAC7B,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa;QAC5B,mfAAmf,CAAC;IACtf,CAAC,eAAe,EAAE,OAAO,CAAC,gBAAgB;QACxC,yOAAyO,CAAC;IAC5O,CAAC,gBAAgB,EAAE,OAAO,CAAC,iBAAiB;QAC1C,uJAAuJ,CAAC;IAC1J,CAAC,iBAAiB,EAAE,OAAO,CAAC,kBAAkB;QAC5C,yCAAyC,CAAC;IAC5C,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa;QACjC,8FAA8F,CAAC;IACjG,CAAC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC7C,
|
|
1
|
+
{"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../../src/channel/mcp-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Telegram's explicit unchanged-content refusal confirms the requested edit is already present. */
|
|
2
|
+
export declare function isTelegramEditNotModified(err: unknown): boolean;
|
|
3
|
+
/** Provider evidence that an existing message/destination or its edit permission is unavailable.
|
|
4
|
+
* Network uncertainty, invalid content, rate limits and server errors never authorize a replacement post. */
|
|
5
|
+
export declare function isMessageEditLoss(err: unknown): boolean;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { GrammyError } from "grammy";
|
|
2
|
+
import { DiscordAPIError } from "discord.js";
|
|
3
|
+
/** Telegram's explicit unchanged-content refusal confirms the requested edit is already present. */
|
|
4
|
+
export function isTelegramEditNotModified(err) {
|
|
5
|
+
return err instanceof GrammyError && err.error_code === 400
|
|
6
|
+
&& typeof err.description === "string"
|
|
7
|
+
&& /^Bad Request: message is not modified(?::|$)/.test(err.description);
|
|
8
|
+
}
|
|
9
|
+
/** Provider evidence that an existing message/destination or its edit permission is unavailable.
|
|
10
|
+
* Network uncertainty, invalid content, rate limits and server errors never authorize a replacement post. */
|
|
11
|
+
export function isMessageEditLoss(err) {
|
|
12
|
+
if (err instanceof GrammyError) {
|
|
13
|
+
if (typeof err.description !== "string")
|
|
14
|
+
return false;
|
|
15
|
+
if (err.error_code === 403 && err.description.startsWith("Forbidden:"))
|
|
16
|
+
return true;
|
|
17
|
+
return err.error_code === 400 && /^Bad Request: (?:message to edit not found|chat not found|message thread not found|TOPIC_ID_INVALID|not enough rights to (?:edit|send) (?:text )?messages)(?:$|[.:])/.test(err.description);
|
|
18
|
+
}
|
|
19
|
+
return err instanceof DiscordAPIError
|
|
20
|
+
&& typeof err.code === "number"
|
|
21
|
+
&& ((err.status === 404 && [10003, 10008].includes(err.code))
|
|
22
|
+
|| (err.status === 403 && [50001, 50013].includes(err.code)));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=message-edit-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-edit-errors.js","sourceRoot":"","sources":["../../src/channel/message-edit-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,oGAAoG;AACpG,MAAM,UAAU,yBAAyB,CAAC,GAAY;IACpD,OAAO,GAAG,YAAY,WAAW,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG;WACtD,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ;WACnC,8CAA8C,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC5E,CAAC;AAED;6GAC6G;AAC7G,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;QAC/B,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACtD,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,OAAO,IAAI,CAAC;QACpF,OAAO,GAAG,CAAC,UAAU,KAAK,GAAG,IAAI,sKAAsK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAChO,CAAC;IACD,OAAO,GAAG,YAAY,eAAe;WAChC,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;WAC5B,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;eACxD,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function markdownToTelegramHtml(text: string): string;
|
|
2
|
+
/**
|
|
3
|
+
* Telegram refused the text's markup itself ("Bad Request: can't parse entities: …"): a definite 400 before anything
|
|
4
|
+
* changed, so sending the same text again without a parse mode is safe and cannot double-apply.
|
|
5
|
+
*/
|
|
6
|
+
export declare function isTelegramParseRefusal(err: unknown): boolean;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown → Telegram HTML (parse_mode "HTML") for text an agent wrote as markdown.
|
|
3
|
+
*
|
|
4
|
+
* Escape first, by construction: every character of the input is escaped (`&`, `<`, `>`) before any tag is added, and
|
|
5
|
+
* the only tags in the output are the ones this file writes — so `a<b`, `&` or a literal `<b>` in the input are shown
|
|
6
|
+
* as text, never parsed. A fixed set of inline forms becomes tags: `code`, **bold**, ~~strike~~, *italic* / _italic_
|
|
7
|
+
* and [text](http(s) URL). Each tag pair wraps text that contains no tag yet (code spans, fences and link targets are
|
|
8
|
+
* cut out before emphasis runs; emphasis content excludes `<` `>`), so the output is always well-formed. A fence or
|
|
9
|
+
* any other run of two or more backticks keeps its text exactly — escaped, backticks and all, never formatted.
|
|
10
|
+
* Tables and headings stay as their literal characters.
|
|
11
|
+
*
|
|
12
|
+
* Linear time: the text can be as long as a tool argument allows (far beyond Telegram's 4096), and this runs on the
|
|
13
|
+
* fleet's event loop before any API call. One left-to-right pass; each scan stops at the next character that could
|
|
14
|
+
* start another token, and the emphasis patterns stop at their own next delimiter.
|
|
15
|
+
*/
|
|
16
|
+
import { GrammyError } from "grammy";
|
|
17
|
+
const escapeHtml = (s) => s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
18
|
+
/** Emphasis on already-escaped text. Bold first; strike and italic never span a tag (their content excludes < >). */
|
|
19
|
+
function emphasis(escaped) {
|
|
20
|
+
return escaped
|
|
21
|
+
.replace(/\*\*([^*\n]+?)\*\*/g, "<b>$1</b>")
|
|
22
|
+
.replace(/~~([^~\n<>]+?)~~/g, "<s>$1</s>")
|
|
23
|
+
.replace(/(^|[^\w*])\*([^*\s<>](?:[^*\n<>]*?[^*\s<>])?)\*(?![\w*])/g, "$1<i>$2</i>")
|
|
24
|
+
// `_` only at word edges, so snake_case stays as it is.
|
|
25
|
+
.replace(/(^|[^\w])_([^_\s<>](?:[^_\n<>]*?[^_\s<>])?)_(?!\w)/g, "$1<i>$2</i>");
|
|
26
|
+
}
|
|
27
|
+
/** `(http(s)://target)` right after a link's `]`; the target stops at whitespace, parentheses, quotes and < >. */
|
|
28
|
+
const LINK_TARGET = /\((https?:\/\/[^\s()<>"]+)\)/y;
|
|
29
|
+
/** Every maximal run of 2+ backticks, by length — so finding a fence's closing run never rescans the text. */
|
|
30
|
+
function backtickRuns(text) {
|
|
31
|
+
const runs = new Map();
|
|
32
|
+
for (let i = text.indexOf("`"); i >= 0; i = text.indexOf("`", i)) {
|
|
33
|
+
let n = 1;
|
|
34
|
+
while (text[i + n] === "`")
|
|
35
|
+
n++;
|
|
36
|
+
if (n >= 2)
|
|
37
|
+
(runs.get(n) ?? runs.set(n, []).get(n)).push(i);
|
|
38
|
+
i += n;
|
|
39
|
+
}
|
|
40
|
+
return runs;
|
|
41
|
+
}
|
|
42
|
+
export function markdownToTelegramHtml(text) {
|
|
43
|
+
const runs = backtickRuns(text);
|
|
44
|
+
const cursor = new Map();
|
|
45
|
+
/** The first run of exactly `n` backticks starting at or after `from` (callers ask with a rising `from`). */
|
|
46
|
+
const nextRun = (n, from) => {
|
|
47
|
+
const list = runs.get(n) ?? [];
|
|
48
|
+
let k = cursor.get(n) ?? 0;
|
|
49
|
+
while (k < list.length && list[k] < from)
|
|
50
|
+
k++;
|
|
51
|
+
cursor.set(n, k);
|
|
52
|
+
return k < list.length ? list[k] : -1;
|
|
53
|
+
};
|
|
54
|
+
let out = "", from = 0, i = 0;
|
|
55
|
+
const token = (start, end, html) => {
|
|
56
|
+
if (start > from)
|
|
57
|
+
out += emphasis(escapeHtml(text.slice(from, start)));
|
|
58
|
+
out += html;
|
|
59
|
+
from = i = end;
|
|
60
|
+
};
|
|
61
|
+
while (i < text.length) {
|
|
62
|
+
const c = text[i];
|
|
63
|
+
if (c === "`") {
|
|
64
|
+
let n = 1;
|
|
65
|
+
while (text[i + n] === "`")
|
|
66
|
+
n++;
|
|
67
|
+
if (n >= 2) {
|
|
68
|
+
// A fence or a multi-backtick span: literal through its closing run of the same length (or just the run).
|
|
69
|
+
const close = nextRun(n, i + n);
|
|
70
|
+
const end = close < 0 ? i + n : close + n;
|
|
71
|
+
token(i, end, escapeHtml(text.slice(i, end)));
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
const j = text.indexOf("`", i + 1);
|
|
75
|
+
if (j > i + 1 && text[j + 1] !== "`" && !text.slice(i + 1, j).includes("\n")) {
|
|
76
|
+
token(i, j + 1, `<code>${escapeHtml(text.slice(i + 1, j))}</code>`);
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else if (c === "[") {
|
|
81
|
+
let k = i + 1;
|
|
82
|
+
while (k < text.length && text[k] !== "]" && text[k] !== "[" && text[k] !== "\n")
|
|
83
|
+
k++;
|
|
84
|
+
if (text[k] === "]" && k > i + 1) {
|
|
85
|
+
LINK_TARGET.lastIndex = k + 1;
|
|
86
|
+
const m = LINK_TARGET.exec(text);
|
|
87
|
+
if (m) {
|
|
88
|
+
token(i, k + 1 + m[0].length, `<a href="${escapeHtml(m[1])}">${emphasis(escapeHtml(text.slice(i + 1, k)))}</a>`);
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
i++;
|
|
94
|
+
}
|
|
95
|
+
return out + emphasis(escapeHtml(text.slice(from)));
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Telegram refused the text's markup itself ("Bad Request: can't parse entities: …"): a definite 400 before anything
|
|
99
|
+
* changed, so sending the same text again without a parse mode is safe and cannot double-apply.
|
|
100
|
+
*/
|
|
101
|
+
export function isTelegramParseRefusal(err) {
|
|
102
|
+
return err instanceof GrammyError && err.error_code === 400 && /can't parse entities/i.test(err.description);
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=telegram-markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telegram-markdown.js","sourceRoot":"","sources":["../../src/channel/telegram-markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ChannelAdapter } from "./types.js";
|
|
2
|
+
import type { PollRender } from "../reply-polls.js";
|
|
2
3
|
/**
|
|
3
4
|
* Route a channel tool call (reply, react, edit_message, download_attachment)
|
|
4
5
|
* to the adapter. Returns true if handled, false if unknown tool.
|
|
@@ -10,4 +11,5 @@ extra?: {
|
|
|
10
11
|
id: string;
|
|
11
12
|
label: string;
|
|
12
13
|
}>;
|
|
14
|
+
replyPoll?: PollRender;
|
|
13
15
|
}): boolean;
|
|
@@ -63,7 +63,8 @@ extra = {}) {
|
|
|
63
63
|
return true;
|
|
64
64
|
}
|
|
65
65
|
const replyThreadId = args.thread_id ?? threadId;
|
|
66
|
-
|
|
66
|
+
// #1658: markdown reaches the adapter as markdown — Telegram converts it escape-first (its rich path is unchanged).
|
|
67
|
+
const format = args.format === "markdown" ? "markdown" : undefined;
|
|
67
68
|
// Stickers (#1226) go with the text, as the platform does it — and were checked by the fleet before this
|
|
68
69
|
// call; an adapter that cannot send them says so rather than dropping them.
|
|
69
70
|
const stickers = Array.isArray(args.stickers) ? args.stickers.filter((x) => typeof x === "string") : [];
|
|
@@ -71,7 +72,7 @@ extra = {}) {
|
|
|
71
72
|
respond(null, "reply: this channel cannot send stickers");
|
|
72
73
|
return true;
|
|
73
74
|
}
|
|
74
|
-
const sendOpts = { threadId: replyThreadId, replyTo: args.reply_to, format, ...(extra.replyButtons?.length ? { replyButtons: extra.replyButtons } : {}) };
|
|
75
|
+
const sendOpts = { threadId: replyThreadId, replyTo: args.reply_to, format, ...(extra.replyButtons?.length ? { replyButtons: extra.replyButtons } : {}), ...(extra.replyPoll ? { replyPoll: extra.replyPoll } : {}) };
|
|
75
76
|
const sending = stickers.length
|
|
76
77
|
? adapter.sendStickers(chatId, stickers, { ...sendOpts, text: args.text ?? "" })
|
|
77
78
|
: adapter.sendText(chatId, args.text ?? "", sendOpts);
|
|
@@ -101,9 +102,9 @@ extra = {}) {
|
|
|
101
102
|
.catch(e => respond(null, e.message));
|
|
102
103
|
return true;
|
|
103
104
|
case "edit_message": {
|
|
104
|
-
// #1651: the
|
|
105
|
-
// always was — no options argument at all.
|
|
106
|
-
const format = args.format === "markdown" ? "
|
|
105
|
+
// #1651: "markdown" reaches the adapter as markdown — Telegram converts it escape-first, so a `<` or `&` in the
|
|
106
|
+
// text is shown, not refused. A text edit is the call it always was — no options argument at all.
|
|
107
|
+
const format = args.format === "markdown" ? "markdown" : undefined;
|
|
107
108
|
const messageId = args.message_id ?? "", text = args.text ?? "";
|
|
108
109
|
(format ? adapter.editMessage(chatId, messageId, text, threadId, { format }) : adapter.editMessage(chatId, messageId, text, threadId))
|
|
109
110
|
.then(() => respond("ok"))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-router.js","sourceRoot":"","sources":["../../src/channel/tool-router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,IAAI,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-router.js","sourceRoot":"","sources":["../../src/channel/tool-router.ts"],"names":[],"mappings":"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"}
|
package/dist/channel/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from "node:events";
|
|
2
|
+
import type { PollRender } from "../reply-polls.js";
|
|
2
3
|
export interface Choice {
|
|
3
4
|
id: string;
|
|
4
5
|
label: string;
|
|
@@ -77,6 +78,16 @@ export interface ChannelAdapter extends EventEmitter {
|
|
|
77
78
|
readonly id: string;
|
|
78
79
|
/** Authenticated platform identity, cache-only; absent until login/init. */
|
|
79
80
|
getBotUserId?(): string | undefined;
|
|
81
|
+
/** #1682: names for Discord mention ids from this adapter's own caches (never a request). */
|
|
82
|
+
mentionNames?(query: {
|
|
83
|
+
u: string[];
|
|
84
|
+
r: string[];
|
|
85
|
+
c: string[];
|
|
86
|
+
}): {
|
|
87
|
+
u?: Record<string, string>;
|
|
88
|
+
r?: Record<string, string>;
|
|
89
|
+
c?: Record<string, string>;
|
|
90
|
+
};
|
|
80
91
|
start(): Promise<void>;
|
|
81
92
|
stop(): Promise<void>;
|
|
82
93
|
/** Hot-rebuild an adapter transport without discarding its outbound queue. */
|
|
@@ -102,15 +113,19 @@ export interface ChannelAdapter extends EventEmitter {
|
|
|
102
113
|
sendFile(chatId: string, filePath: string, opts?: SendOpts): Promise<SentMessage>;
|
|
103
114
|
/** threadId locates the message when it lives in a topic/thread (Discord forum
|
|
104
115
|
* topics are their own channel and won't be found by a guild text-channel scan). */
|
|
105
|
-
/** #1651:
|
|
116
|
+
/** #1651: "html" is the platform's parse mode, as on sendText; "markdown" is an agent's markdown (Telegram converts it
|
|
117
|
+
* escape-first to HTML). Discord always renders Markdown. */
|
|
106
118
|
editMessage(chatId: string, messageId: string, text: string, threadId?: string, opts?: {
|
|
107
|
-
format?: "html";
|
|
119
|
+
format?: "html" | "markdown";
|
|
108
120
|
}): Promise<void>;
|
|
109
121
|
/** Edit a message's text AND remove any inline buttons/components. Used to
|
|
110
122
|
* retire a Cancel button after the agent replies or a timeout elapses.
|
|
111
123
|
* threadId locates the message when it lives in a topic/thread (Discord
|
|
112
124
|
* forum topics are their own channel and won't be found by a guild scan). */
|
|
113
|
-
editMessageRemoveButtons?(chatId: string, messageId: string, text: string, threadId?: string
|
|
125
|
+
editMessageRemoveButtons?(chatId: string, messageId: string, text: string, threadId?: string, urlButtons?: Array<{
|
|
126
|
+
label: string;
|
|
127
|
+
url: string;
|
|
128
|
+
}>): Promise<void>;
|
|
114
129
|
/** Remove a message's buttons while keeping its text untouched. */
|
|
115
130
|
removeMessageButtons?(chatId: string, messageId: string, threadId?: string): Promise<void>;
|
|
116
131
|
/** #1610: replace a message's buttons, keeping its text untouched (a confirm step on a message whose text matters). */
|
|
@@ -119,6 +134,19 @@ export interface ChannelAdapter extends EventEmitter {
|
|
|
119
134
|
readonly supportsReplyButtons?: boolean;
|
|
120
135
|
/** #1266: show a reply's buttons as ended — the choice and who made it, or expired — on the message carrying them. */
|
|
121
136
|
settleReplyButtons?(chatId: string, messageId: string, threadId: string | undefined, labels: readonly string[], outcome: ReplyButtonsOutcome): Promise<void>;
|
|
137
|
+
/** #1823: this adapter shows a poll (`SendOpts.replyPoll`) and redraws it (`renderPoll`). */
|
|
138
|
+
readonly supportsPolls?: boolean;
|
|
139
|
+
/** #1823: redraw a poll's buttons and status (its options, "N answered", the countdown; at close, the tally). */
|
|
140
|
+
renderPoll?(chatId: string, messageId: string, threadId: string | undefined, poll: PollRender): Promise<void>;
|
|
141
|
+
/** #1823: the least time between two poll redraws in one chat, inside the platform's edit limits. */
|
|
142
|
+
readonly pollEditIntervalMs?: number;
|
|
143
|
+
/**
|
|
144
|
+
* #1823: what `pollEditIntervalMs` is counted over: "chat" (Telegram: a group's edit limit covers all its topics) or
|
|
145
|
+
* the default, each thread (Discord: every channel and thread has its own bucket).
|
|
146
|
+
*/
|
|
147
|
+
readonly pollRateScope?: "chat" | "thread";
|
|
148
|
+
/** #1823: the platform cannot count down by itself: the status is redrawn as time passes (`pollTickMs`). */
|
|
149
|
+
readonly pollCountdownTicks?: boolean;
|
|
122
150
|
/** Delete a message (e.g. retire the Cancel button message when done).
|
|
123
151
|
* threadId locates the message when it lives in a topic/thread. */
|
|
124
152
|
deleteMessage?(chatId: string, messageId: string, threadId?: string): Promise<void>;
|
|
@@ -243,7 +271,8 @@ export interface SendOpts {
|
|
|
243
271
|
};
|
|
244
272
|
threadId?: string;
|
|
245
273
|
replyTo?: string;
|
|
246
|
-
|
|
274
|
+
/** "html": the caller's own platform HTML. "markdown": an agent's markdown (#1658 — Telegram converts it escape-first). */
|
|
275
|
+
format?: "text" | "html" | "markdown";
|
|
247
276
|
chunkLimit?: number;
|
|
248
277
|
/** Suppress the link/web-page preview for URLs in the message (Telegram). */
|
|
249
278
|
disablePreview?: boolean;
|
|
@@ -255,6 +284,16 @@ export interface SendOpts {
|
|
|
255
284
|
id: string;
|
|
256
285
|
label: string;
|
|
257
286
|
}>;
|
|
287
|
+
/** #1823: the reply's buttons are a poll's options: this is how it looks when posted (it replaces `replyButtons`). */
|
|
288
|
+
replyPoll?: PollRender;
|
|
289
|
+
/**
|
|
290
|
+
* #1686: URL buttons on the message's last chunk (Telegram inline_keyboard `url` rows). Ignored by adapters
|
|
291
|
+
* that do not support them (Discord, etc.).
|
|
292
|
+
*/
|
|
293
|
+
urlButtons?: Array<{
|
|
294
|
+
label: string;
|
|
295
|
+
url: string;
|
|
296
|
+
}>;
|
|
258
297
|
}
|
|
259
298
|
/** #1266: how a reply's buttons end — one chosen (by whom), or expired with none chosen. */
|
|
260
299
|
export type ReplyButtonsOutcome = {
|
|
@@ -278,6 +317,9 @@ export interface OutboundMessage {
|
|
|
278
317
|
format?: "text" | "html";
|
|
279
318
|
}
|
|
280
319
|
export interface InboundMessage {
|
|
320
|
+
/** Trusted adapter facts, absent for bots and unknown actor identity. */
|
|
321
|
+
humanOrigin?: import("../human-delivery-receipts.js").HumanOrigin;
|
|
322
|
+
humanOriginalBody?: string;
|
|
281
323
|
source: string;
|
|
282
324
|
adapterId: string;
|
|
283
325
|
chatId: string;
|