forked from admin/VolcanicAgenticCore
fix(telegram): address review findings
- /resume discards the inbox once the id names one conversation, before any await - /stop discards input still waiting in the window - a forwarded message is never a command or a pending answer - ChatInbox.DrainAsync is an internal test helper - tests: /resume and /stop drop buffered text, forwarded /new is content, a failing flush doesn't stop later batches; no wall-clock sleep in the drain test - spec and user docs: timestamp exception for extension commands, command ordering, InputDebounce=0 wording
This commit is contained in:
@@ -31,7 +31,7 @@ Environment variables, or the `Telegram` section of `appsettings.json` (`Telegra
|
||||
| `Telegram:WorkspaceRoot` | `~/.volcanic/telegram-workspaces` | Chat `<id>` works in `<root>/<id>`; put `AGENTS.md`, `PERSONA.md`, `MEMORY.md` there |
|
||||
| `Telegram:Model` | `claude-code/claude-opus-5-5` | Any `provider/model` the Claude Code provider serves |
|
||||
| `Telegram:EditInterval` | `00:00:01.5` | Minimum time between edits of the "Working..." status message |
|
||||
| `Telegram:InputDebounce` | `00:00:00.6` | How long the bot waits after a message for more before sending them to the agent as one request. `0` sends each message on its own. Must not be negative |
|
||||
| `Telegram:InputDebounce` | `00:00:00.6` | How long the bot waits after a message for more before sending them to the agent as one request. `0` disables the wait; messages still being read together (e.g. a photo still downloading and a text after it) are still sent as one request. Must not be negative |
|
||||
| `Telegram:ReconnectInitialDelay` / `ReconnectMaxDelay` | `1 s` / `60 s` | Backoff after lost connection |
|
||||
| `PROCESS_ENV_ALLOW` | — | Comma-separated names or globs let through to `bash`, scheduled scripts and MCP servers despite the deny-list (e.g. `GH_TOKEN` for `gh`). Added to `ProcessEnvironment:Allow` |
|
||||
| `ProcessEnvironment:Deny` / `ProcessEnvironment:Allow` | built-in deny-list | Added to the defaults (`*_API_KEY`, `*_TOKEN`, `*_SECRET`, `*_PASSWORD`, their `Section__Key` forms and the named provider credentials), never replacing them. Allowing a name that is denied by name stops startup |
|
||||
@@ -66,7 +66,9 @@ Along with your text, the agent sees:
|
||||
`[Sat 2026-09-26 14:03 Europe/Berlin]`, once per request.
|
||||
|
||||
Messages sent within about 0.6 s of each other (`Telegram:InputDebounce`), such as a forward with your comment or
|
||||
an album, reach the agent as one request. Every message waits that long before it's sent.
|
||||
an album, reach the agent as one request. Every message waits that long before it's sent. Commands that an extension
|
||||
handles (for example `/claude-code-doctor`) are sent at once, as typed, with no time header. `/new`, `/stop` and
|
||||
`/resume` drop a message that is still waiting. A forwarded message is never taken as a command.
|
||||
|
||||
After a start the bot sends `🟢 Online.` to the owner (the first id in `AllowedUserIds`), once. If the owner never
|
||||
started a chat with the bot, Telegram refuses the message; the bot logs that and carries on.
|
||||
|
||||
Reference in New Issue
Block a user