Peter Steinberger
464f0645a8
fix: stabilize telegram media tests ( #664 ) (thanks @azade-c)
2026-01-10 18:06:05 +01:00
Peter Steinberger
81f9093c3c
fix(pairing): accept positional provider args
2026-01-10 16:36:43 +01:00
Peter Steinberger
0f409cb99d
test(telegram): force real timers for media groups
2026-01-10 03:44:21 +00:00
Peter Steinberger
241bc737cf
test(telegram): deflake media groups on windows
2026-01-10 04:43:04 +01:00
Peter Steinberger
056c4ae622
test(telegram): harden media tests
2026-01-10 04:18:05 +01:00
Peter Steinberger
2cfed7952e
test(telegram): relax media group timeouts on Windows
2026-01-10 02:32:03 +00:00
Peter Steinberger
f28a4a34ad
refactor: unify inline directives and media fetch
2026-01-10 03:01:04 +01:00
Peter Steinberger
4075895c4c
refactor: consolidate reply/media helpers
2026-01-10 02:41:16 +01:00
Peter Steinberger
8f8caa8d89
test(telegram): relax media group test timeouts
2026-01-10 02:37:59 +01:00
Peter Steinberger
38e2362be6
fix: remove ack reactions after reply ( #633 ) (thanks @levifig)
2026-01-10 02:14:14 +01:00
Levi Figueira
b5858c0148
feat: add removeAckAfterReply option for Discord, Slack, and Telegram
...
Add `messages.removeAckAfterReply` config option to automatically remove
acknowledgment reactions after the bot sends a reply, reducing visual
clutter while still providing immediate feedback.
Platforms: Discord, Slack, Telegram
Implementation:
- Added removeAckAfterReply boolean field to MessagesConfig (default: false)
- Track ack reaction state in all three platform handlers
- Remove ack reaction after successful reply delivery
- Graceful error handling with verbose logging
Platform-specific:
- Discord: uses removeReactionDiscord()
- Slack: uses removeSlackReaction()
- Telegram: uses setMessageReaction() with empty array
Closes #627
2026-01-10 02:13:46 +01:00
Jarvis
5fedfd8d15
chore: format audioAsVoice updates
...
Co-authored-by: Manuel Hettich <17690367+ManuelHettich@users.noreply.github.com>
2026-01-10 01:44:57 +01:00
Jarvis
9a7f050568
refactor(telegram): centralize voice decisions
...
- Share voice compatibility decision logic across send + bot flows
- Keep voice fallback logging consistent
- Simplify voice handling in the audio send path
2026-01-10 01:43:23 +01:00
Jarvis
ce786762db
fix(telegram): guard voice note sends
2026-01-10 01:43:01 +01:00
Jarvis
2f036f7173
fix(audio): preserve audioAsVoice propagation
...
- Keep audioAsVoice-only payloads from being filtered out
- Allow empty payloads through when they carry the flag
- Remove temporary debug logs around audioAsVoice buffering
Co-authored-by: Manuel Hettich <17690367+ManuelHettich@users.noreply.github.com>
2026-01-10 01:42:09 +01:00
Jarvis
05a99aa49b
feat(telegram): buffer audio blocks for [[audio_as_voice]] tag support
...
- Add [[audio_as_voice]] detection to splitMediaFromOutput()
- Pass audioAsVoice through onBlockReply callback chain
- Buffer audio blocks during streaming, flush at end with correct flag
- Non-audio media still streams immediately
- Fix: emit payloads with audioAsVoice flag even if text is empty
Co-authored-by: Manuel Hettich <17690367+ManuelHettich@users.noreply.github.com>
2026-01-10 01:41:18 +01:00
Peter Steinberger
1fd7a6e310
fix: keep telegram streamMode draft-only ( #619 ) (thanks @rubyrunsstuff)
2026-01-10 01:14:40 +01:00
Ruby
b4fbf2fe0d
fix: enable block streaming for Telegram when streamMode is 'block'
...
- Fix disableBlockStreaming logic in telegram/bot.ts to properly enable
block streaming when telegram.streamMode is 'block' regardless of
blockStreamingDefault setting
- Set minChars default to 1 for Telegram block mode so chunks send
immediately on newlines/sentences instead of waiting for 800 chars
- Skip coalescing for Telegram block mode when not explicitly configured
to reduce chunk batching delays
- Fix newline preference to wait for actual newlines instead of breaking
on any whitespace when buffer is under maxChars
Fixes issue where all Telegram messages were batched into one message
at the end instead of streaming as separate messages during generation.
2026-01-10 01:11:41 +01:00
Peter Steinberger
e73b812236
fix: dedupe telegram updates
2026-01-09 21:06:06 +01:00
Peter Steinberger
6d378ee608
feat(telegram): inline keyboard buttons ( #491 )
...
Co-authored-by: Azade <azade@hey.com>
2026-01-09 20:47:03 +01:00
Peter Steinberger
fd15704c77
fix(auto-reply): coalesce block replies and document streaming toggles ( #536 ) (thanks @mcinteerj)
2026-01-09 18:19:55 +00:00
Jake
a05916bee8
Config: add support for per-provider blockStreaming override
2026-01-09 18:11:27 +00:00
Peter Steinberger
36bdec0f2c
refactor(messages): centralize per-agent prefixes
2026-01-09 16:54:54 +01:00
Peter Steinberger
66bbb723c5
fix: derive prefixes from routed identity ( #578 ) (thanks @p6l-richard)
2026-01-09 16:39:32 +01:00
Peter Steinberger
407a3c2c10
fix: quiet telegram getUpdates errors
2026-01-09 15:35:39 +01:00
Peter Steinberger
f6f178ddee
style(telegram): format bot init
2026-01-09 13:57:06 +01:00
Peter Steinberger
7b81d97ec2
feat: wire multi-agent config and routing
...
Co-authored-by: Mark Pors <1078320+pors@users.noreply.github.com>
2026-01-09 12:48:42 +00:00
Peter Steinberger
ac922e83d3
Merge branch 'main' into tobias-sync
2026-01-09 13:42:34 +01:00
Peter Steinberger
dc6f22c2c5
fix: add hosted minimax onboarding ( #495 , thanks @tobiasbischoff)
2026-01-09 13:40:01 +01:00
Tobias Bischoff
897685a2de
Telegram: cast fetch to grammy client type
2026-01-09 13:39:28 +01:00
Onur
2ab5890eab
wip
2026-01-09 11:06:49 +01:00
Peter Steinberger
3a99ac7e9a
fix: honor mention-bypass for group commands
2026-01-09 02:52:44 +01:00
Peter Steinberger
4e92ccc0dd
style: format
2026-01-09 00:33:09 +01:00
Peter Steinberger
71309c064a
fix: drop redundant telegram audit union
2026-01-09 00:33:09 +01:00
Peter Steinberger
490bbd10fc
feat(telegram): show user id in pairing
2026-01-09 00:01:23 +01:00
Peter Steinberger
69f8af530d
feat(providers): improve doctor + status probes
2026-01-08 23:48:37 +01:00
Peter Steinberger
014667e00b
fix: tighten group elevated targeting
2026-01-08 22:57:18 +01:00
Peter Steinberger
0373574f0b
refactor(telegram): centralize target parsing
2026-01-08 21:38:59 +01:00
Tobias Bischoff
634f1389a4
Merge branch 'main' into main
2026-01-08 21:15:06 +01:00
Peter Steinberger
31fb5867e8
refactor(outbound): centralize telegram account defaults
2026-01-08 21:05:01 +01:00
Peter Steinberger
bf67b29a0e
fix(telegram): resolve grammY fetch type mismatch ( #512 )
...
Co-authored-by: Yuri Chukhlib <yuri.v.chu@gmail.com>
2026-01-08 20:18:17 +01:00
Tobias Bischoff
3149d6d331
Telegram: cast fetch to grammy client type
2026-01-08 15:16:53 +01:00
Peter Steinberger
959a19d8ae
fix: clean lint issues
2026-01-08 11:07:11 +00:00
Peter Steinberger
63ff5819b1
fix: retry telegram poll conflicts
2026-01-08 12:04:21 +01:00
Peter Steinberger
af2accf5e3
test: force bun fetch path in telegram send
2026-01-08 10:37:29 +01:00
Peter Steinberger
e6f8e1e531
fix(telegram): restrict native fetch to bun
2026-01-08 10:31:16 +01:00
Peter Steinberger
bfd3eb46c7
docs: drop legacy telegram pairing mention
2026-01-08 09:57:03 +01:00
Peter Steinberger
908a7e4fcb
chore: sync ci tasks and relax telegram test timeouts
2026-01-08 09:09:33 +01:00
Peter Steinberger
2450af26ec
test: fix telegram fetch expectation
2026-01-08 07:51:58 +00:00
Peter Steinberger
8930ec32cb
feat: add slack multi-account routing
2026-01-08 08:49:16 +01:00
Peter Steinberger
00c1403f5c
fix: unblock ci
2026-01-08 07:41:39 +00:00
Peter Steinberger
1b2957d050
style: lint cleanup
2026-01-08 08:40:02 +01:00
Peter Steinberger
9a11325cc9
fix: daemon status guidance and telegram fetch
2026-01-08 08:39:55 +01:00
Peter Steinberger
97cb469faf
chore(telegram): fix bun comment
2026-01-08 08:26:40 +01:00
Peter Steinberger
c241cb25bd
fix(telegram): gate native fetch to bun
2026-01-08 08:26:40 +01:00
Peter Steinberger
367ee8ea7b
fix: stabilize telegram media group tests
2026-01-08 05:48:25 +00:00
Peter Steinberger
ab98ffe9fe
fix: force telegram native fetch under bun
2026-01-08 05:20:38 +01:00
Peter Steinberger
15379dedf0
fix(telegram): voice-note tag defaults ( #188 , thanks @manmal)
2026-01-08 03:15:08 +00:00
Manuel Maly
2972fce02c
fix: flip audio default to file (backward compat)
...
- Default: sendAudio (file with metadata) - preserves old behavior
- Opt-in: [[audio_as_voice]] tag for voice bubble
This is non-breaking - existing integrations keep working.
2026-01-08 03:15:08 +00:00
Manuel Maly
5e1b91b32c
feat(telegram): wire audioAsVoice through bot.ts
...
- Add audioAsVoice option to ReplyPayload type
- Update bot.ts to use sendVoice by default for audio (voice bubble)
- When audioAsVoice is false, use sendAudio (file with metadata)
This allows agents to control voice vs file mode via ReplyPayload.
2026-01-08 03:15:08 +00:00
Manuel Maly
20fd9f7f67
feat(telegram): use sendVoice for audio with opt-out
...
Use Telegram's sendVoice API for audio files by default, displaying them
as round playable voice bubbles instead of file attachments.
Changes:
- Add asVoice option to TelegramSendOpts (defaults to true)
- When asVoice is true (default): use api.sendVoice() for voice bubbles
- When asVoice is false: use api.sendAudio() for traditional audio files
This gives callers control: voice messages for TTS/quick responses,
audio files for music/podcasts with metadata display.
2026-01-08 03:15:08 +00:00
Peter Steinberger
2140caaf67
fix: telegram html formatting ( #435 , thanks @RandyVentures)
2026-01-08 02:34:32 +01:00
Peter Steinberger
05b8679c8b
feat: add providers CLI and multi-account onboarding
2026-01-08 01:55:59 +01:00
mneves75
33e2d53be3
feat(telegram): wire replyToMode config, add forum topic support, fix messaging tool duplicates
...
Changes:
- Default replyToMode from "off" to "first" for better threading UX
- Add messageThreadId and replyToMessageId params for forum topic support
- Add messaging tool duplicate detection to suppress redundant block replies
- Add sendMessage action to telegram tool schema
- Add @grammyjs/types devDependency for proper TypeScript typing
- Remove @ts-nocheck and fix all type errors in send.ts
- Add comprehensive docs/telegram.md documentation
- Add PR-326-REVIEW.md with John Carmack-level code review
Test coverage:
- normalizeTextForComparison: 5 cases
- isMessagingToolDuplicate: 7 cases
- sendMessageTelegram thread params: 5 cases
- handleTelegramAction sendMessage: 4 cases
- Forum topic isolation: 4 cases
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 00:50:47 +00:00
Peter Steinberger
322c5dd936
refactor(telegram): extract runner config and key helper
2026-01-07 22:22:21 +01:00
Peter Steinberger
068b1872fa
fix(telegram): sequence runner updates and cap concurrency
2026-01-07 22:08:20 +01:00
Muhammed Mukhthar CM
ee99311130
test(telegram): mock grammyjs/runner for fast tests
2026-01-07 22:08:20 +01:00
Muhammed Mukhthar CM
1a41fecf67
feat(telegram): use grammyjs/runner for concurrent update processing
...
Previously, grammY's default bot.start() processed updates sequentially,
blocking all Telegram messages while one was being handled. This made
maxConcurrent settings ineffective for Telegram.
Now uses @grammyjs/runner which processes updates concurrently, matching
the behavior of Discord (Promise.all) and WhatsApp (fire-and-forget).
Benefits:
- Ack reactions (👀 ) appear immediately, not after queue clears
- Multiple chats can be processed in parallel
- maxConcurrent setting now works correctly for Telegram
- Long-running tool calls no longer block other conversations
2026-01-07 22:08:20 +01:00
Peter Steinberger
de55f4e111
fix: add provider retry policy
2026-01-07 17:48:19 +00:00
Peter Steinberger
53c037a197
style(telegram): format activation log
2026-01-07 11:21:12 +00:00
Peter Steinberger
4bd7ca305a
fix(telegram): honor session activation overrides
2026-01-07 11:19:09 +00:00
Peter Steinberger
3cbced01fa
test(telegram): cover routed activation
2026-01-07 11:17:12 +00:00
Julian Engel
45dc4ef3cf
fix(telegram): make /activation command work by checking session state
...
The /activation command now properly controls group activation mode:
- Loads session state before filtering messages
- Checks groupActivation field (from /activation command)
- Falls back to config telegram.groups requireMention setting
Previously, the bot only checked config and ignored session state,
making the /activation command appear to work but have no effect.
Changes:
- Add resolveGroupActivation() to check session before config
- Import loadSessionStore to read session state early
- Pass messageThreadId to support forum topics correctly
2026-01-07 11:16:35 +00:00
Peter Steinberger
1011640a13
refactor: drop autoReply, add topic requireMention
...
Co-authored-by: kitze <kristijan.mkd@gmail.com>
2026-01-07 12:07:15 +01:00
Peter Steinberger
43c6bb7595
feat: add channel/topic overrides for skills + auto-reply
2026-01-07 11:44:37 +01:00
Peter Steinberger
a700f9896d
feat: telegram draft streaming
2026-01-07 11:08:32 +01:00
Peter Steinberger
3668388912
fix(routing): harden originating reply routing
2026-01-07 05:02:34 +00:00
Josh Lehman
9d50ebad7d
feat(routing): route replies to originating channel
...
Implement reply routing based on OriginatingChannel/OriginatingTo fields.
This ensures replies go back to the provider where the message originated
instead of using the session's lastChannel.
Changes:
- Add OriginatingChannel/OriginatingTo fields to MsgContext (templating.ts)
- Add originatingChannel/originatingTo fields to FollowupRun (queue.ts)
- Create route-reply.ts with provider-agnostic router
- Update all providers (Telegram, Slack, Discord, Signal, iMessage)
to pass originating channel info
- Update reply.ts to pass originating channel to followupRun
- Update followup-runner.ts to use route-reply for originating channels
This addresses the issue where messages from one provider (e.g., Slack)
would receive replies on a different provider (e.g., Telegram) because
the queue used the last active dispatcher instead of the originating one.
2026-01-07 04:51:33 +00:00
Peter Steinberger
42ae2341aa
fix: harden pairing flow
2026-01-07 05:06:04 +01:00
Peter Steinberger
3afef2d504
feat: unify provider reaction tools
2026-01-07 04:16:39 +01:00
Peter Steinberger
4bf5f37a44
refactor: streamline outbound payload handling
2026-01-07 02:30:42 +00:00
Peter Steinberger
59502552ae
fix(telegram): import native reply helper
2026-01-07 02:19:42 +00:00
Peter Steinberger
d7bc5b58fc
refactor(telegram): polish topic threading
2026-01-07 02:19:42 +00:00
Peter Steinberger
80112433a5
fix(telegram): support forum topics
...
Co-authored-by: Daniel Griesser <HazAT@users.noreply.github.com>
Co-authored-by: Nacho Iacovino <nachoiacovino@users.noreply.github.com>
Co-authored-by: Randy Ventures <RandyVentures@users.noreply.github.com>
2026-01-07 02:19:42 +00:00
Peter Steinberger
e0efcda77f
fix(commands): wire /stop across chat commands
2026-01-06 23:11:57 +00:00
Nacho Iacovino
0df7c3addf
feat(telegram): add /stop command to abort running agent
...
Adds a /stop command that:
- Can interrupt a running agent session mid-execution
- Works in both DMs and group chats (including forum topics)
- Uses grammy's bot.command() to run before the main message handler
- Returns status: stopped, stop requested, or nothing running
Also fixes session key lookup in pi-embedded-runner to use sessionKey
instead of sessionId, ensuring /stop finds the correct active run.
2026-01-06 23:11:57 +00:00
Peter Steinberger
79f813e18e
style: format lint offenders
2026-01-07 00:04:44 +01:00
Peter Steinberger
5939363eed
fix: include telegram group sender in envelope headers
2026-01-06 22:34:02 +00:00
Peter Steinberger
84c8209158
fix(slack): clear assistant thread status after replies
2026-01-06 21:41:30 +01:00
Shadow
9b22e1f6e9
feat(commands): unify chat commands ( #275 )
...
* Chat commands: registry, access groups, Carbon
* Chat commands: clear native commands on disable
* fix(commands): align command surface typing
* docs(changelog): note commands registry (PR #275 )
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-06 20:17:56 +00:00
Peter Steinberger
67bda21811
fix: preserve markdown fences when chunking
2026-01-06 20:23:41 +01:00
Peter Steinberger
dbfa316d19
feat: multi-agent routing + multi-account providers
2026-01-06 18:33:37 +00:00
Peter Steinberger
967cef80bc
fix(security): lock down inbound DMs by default
2026-01-06 17:51:56 +01:00
Manuel Hettich
aae5926db9
fix(telegram): notify user when media exceeds size limit
...
When a file exceeds mediaMaxMb, send a friendly error message
instead of silently dropping the upload.
---
🤖 Authored by Jarvis (AI assistant)
2026-01-06 08:45:07 +00:00
Peter Steinberger
dbb51006cd
feat: unify group policy allowlists
2026-01-06 06:40:42 +00:00
Peter Steinberger
b759cb6f37
feat(providers): normalize location parsing
2026-01-06 06:31:09 +01:00
Nacho Iacovino
255e77f530
feat(telegram): parse location and venue messages
...
- Add TelegramLocation, TelegramVenue, and TelegramMessageWithLocation types
- Add formatLocationMessage() to convert location/venue shares to text
- Add extractLocationData() for structured location access in ctxPayload
- Handle both raw location pins and venue shares (places with names)
- Include location in reply-to context for quoted messages
Location messages now appear as:
- [Location: lat, lon ±accuracy] for raw pins
- [Venue: Name - Address (lat, lon)] for places
ctxPayload includes LocationLat, LocationLon, LocationAccuracy,
VenueName, and VenueAddress fields for programmatic access.
2026-01-06 06:31:09 +01:00
Peter Steinberger
35a2140e48
fix: clean up poll merge
2026-01-06 04:51:05 +00:00
Marcus Neves
9ab0b88ac6
feat(whatsapp,telegram): add groupPolicy config option ( #216 )
...
Co-authored-by: Marcus Neves <conhecendo.contato@gmail.com>
Co-authored-by: Shadow <hi@shadowing.dev>
2026-01-05 22:41:19 -06:00
Ayaan Zaidi
bd735182b6
feat(telegram): support media groups (multi-image messages) ( #220 )
2026-01-05 22:04:33 -06:00
Peter Steinberger
13eb9c9ee9
refactor: centralize reply dispatch
2026-01-06 04:55:00 +01:00
Peter Steinberger
1a4f7d3388
feat: add ack reaction defaults
2026-01-06 03:28:47 +00:00
Peter Steinberger
ca8f66f844
refactor: unify group allowlist policy
2026-01-06 04:27:51 +01:00
Ayaan Zaidi
b1bb3ff6a6
feat: add reaction to acknowledge message in createTelegramBot
2026-01-06 03:21:56 +00:00
Peter Steinberger
9d656f4269
style: satisfy lint
2026-01-06 03:11:42 +00:00
Peter Steinberger
d5f088978a
fix: stop typing after dispatcher idle
2026-01-06 03:09:49 +00:00
Peter Steinberger
9b5610aa45
style: format telegram bot test
2026-01-06 03:43:05 +01:00
Peter Steinberger
cc0ef4d012
fix(telegram): improve gif handling
2026-01-06 02:22:19 +00:00
Peter Steinberger
d813e14950
chore: update mention gating docs and tests
2026-01-06 01:38:36 +01:00
Peter Steinberger
811ec8b78b
fix: unify mention gating across providers
2026-01-06 01:32:17 +01:00
Peter Steinberger
ac3dedaa1b
feat: standardize timestamps to UTC
2026-01-05 23:03:59 +00:00
Peter Steinberger
c75b2a7067
refactor: unify reply dispatch across providers
2026-01-05 19:43:54 +01:00
Peter Steinberger
995f5959af
fix: stage sandbox media for inbound attachments
2026-01-05 06:18:11 +01:00
Peter Steinberger
1bad96aa2b
style: tidy auto-reply imports and formatting
2026-01-05 01:46:16 +01:00
Peter Steinberger
852f947b44
fix: unify control command handling
2026-01-05 01:31:36 +01:00
Peter Steinberger
246adaa119
chore: rename project to clawdbot
2026-01-04 14:38:51 +00:00
Peter Steinberger
bb54e60179
fix(logging): decouple file logs from console verbose
2026-01-03 12:32:14 +00:00
Muhammed Mukhthar CM
4d42811ecf
fix(telegram): add textLimit to block reply chunking
...
Block streaming replies were missing the textLimit parameter in
deliverReplies(), causing long messages to fail with 'message is too
long' error instead of being chunked properly.
The final reply path already included textLimit, but the onBlockReply
callback path did not.
2026-01-03 11:12:15 +01:00
Peter Steinberger
5684e2d658
feat: configurable outbound text chunk limits
2026-01-03 01:49:27 +01:00
Peter Steinberger
9616f4b2b1
feat: stream reply blocks immediately
2026-01-03 00:28:33 +01:00
Peter Steinberger
fc54e905c0
chore: upgrade pi-mono deps to 0.31.1
2026-01-02 23:37:08 +01:00
Peter Steinberger
d1b76cb1b2
test: cover replyToMode behavior
2026-01-02 23:20:52 +01:00
Peter Steinberger
2c92ccd66e
feat: add reply tags and replyToMode
2026-01-02 23:18:41 +01:00
Peter Steinberger
a9ff03acaf
feat: unify group mention defaults
2026-01-02 22:50:58 +01:00
Peter Steinberger
5cf1a9535e
feat: move group mention gating to provider groups
2026-01-02 22:24:26 +01:00
Peter Steinberger
9adbf47773
refactor: normalize group session keys
2026-01-02 10:14:58 +01:00
Peter Steinberger
4ec020a86d
fix(logging): trim provider log prefixes
2026-01-02 00:15:01 +00:00
Peter Steinberger
c7364de2f0
fix: align telegram token resolution
2026-01-01 21:22:59 +01:00
Peter Steinberger
59443d7ec6
style: format reply changes
2025-12-24 23:06:20 +01:00
Peter Steinberger
cf8d1cf0e7
fix: avoid threaded replies for agent output
2025-12-24 22:36:42 +01:00
Peter Steinberger
e76d1b899b
fix: clean telegram parse error logging
2025-12-24 00:53:27 +00:00
Peter Steinberger
93af424ce5
refactor: move inbound config
2025-12-24 00:22:52 +00:00
Peter Steinberger
67a3dda53a
fix: inject reply context into body
2025-12-23 02:44:38 +01:00
Peter Steinberger
ffe75f3e20
🤖 codex: add telegram reply context
...
# Conflicts:
# src/telegram/bot.ts
2025-12-23 02:30:21 +01:00
Peter Steinberger
918cbdcf03
refactor: lint cleanups and helpers
2025-12-23 00:28:55 +00:00
Peter Steinberger
817abd8b5f
feat(gateway): add models.list
2025-12-20 23:43:27 +01:00
Peter Steinberger
50e817f193
fix: use local timestamps in agent envelope
2025-12-20 19:40:48 +01:00
Peter Steinberger
36c85a617a
fix: use file-type for mime sniffing
2025-12-20 19:13:50 +01:00
Peter Steinberger
6ca897e055
fix(telegram): normalize chat ids and improve errors
2025-12-20 14:21:49 +00:00
Peter Steinberger
fece42ce0a
feat: embed pi agent runtime
2025-12-17 11:29:04 +01:00
Peter Steinberger
5d6cc8125b
test(telegram): cover inbound media download
2025-12-13 16:18:48 +00:00
Peter Steinberger
237933069e
fix(telegram): download inbound media via file_path
2025-12-13 16:18:44 +00:00
Peter Steinberger
a524b9ae9b
feat(voicewake): route replies to last channel
2025-12-12 16:22:30 +00:00
Peter Steinberger
47a1f757a9
lint: format and stabilize gateway health
2025-12-10 18:00:33 +00:00
Peter Steinberger
51d77aea2e
fix(auto-reply): acknowledge reset triggers
2025-12-10 15:55:20 +00:00
Peter Steinberger
f6a86e5527
telegram: fix verbose log ordering
2025-12-10 14:33:09 +00:00
Peter Steinberger
1dd5c97ae0
feat: add ws chat attachments
2025-12-09 23:16:57 +01:00
Peter Steinberger
8489907cf5
feat(telegram): add typing cue
2025-12-09 21:14:10 +00:00
Peter Steinberger
0de944be28
telegram: show name and id in envelope
2025-12-09 19:56:18 +00:00
Peter Steinberger
ffc930b871
surface: envelope inbound messages for agent
2025-12-09 18:43:21 +00:00
Peter Steinberger
a3bf2bdd8c
chore: rename relay to gateway
2025-12-09 18:00:01 +00:00
Peter Steinberger
d04f7fc6e9
msg: retry web/telegram sends and add regression tests
2025-12-09 17:23:04 +00:00
Peter Steinberger
dc22661744
webchat: move serving to relay loopback and tunnel from mac app
2025-12-08 11:54:30 +01:00
Peter Steinberger
22ed7ea3f2
build: silence grammy type errors for mac packaging
2025-12-08 11:04:17 +01:00
Peter Steinberger
f65702a8a8
chore(ci): fix lint and swiftformat failures
2025-12-08 01:48:53 +01:00
Peter Steinberger
5f5846a08b
Telegram: enable grammY throttler and webhook tests
2025-12-07 22:52:57 +01:00
Peter Steinberger
4d3d9cca2a
Add Bun bundle docs and Telegram grammY support
2025-12-07 22:47:05 +01:00