Commit Graph

2176 Commits

Author SHA1 Message Date
Peter Steinberger
efd58ce6e6 test(gateway): avoid real OpenAI in mock test 2026-01-10 03:25:45 +00:00
Peter Steinberger
02d65d015c test(telegram): harden media tests 2026-01-10 04:18:05 +01:00
Peter Steinberger
c2fefb087d fix(tools): keep canonical tool names for oauth 2026-01-10 04:18:00 +01:00
Peter Steinberger
3d03e7acb4 test: stabilize gateway mock + lint 2026-01-10 03:14:13 +00:00
Peter Steinberger
25ed17cc68 feat: improve tui status output 2026-01-10 04:07:15 +01:00
Peter Steinberger
896b5de93c test(gateway): add offline tool-calling regression 2026-01-10 03:06:02 +00:00
Peter Steinberger
609f8e0900 fix(tools): harden schemas and oauth tool names 2026-01-10 03:05:56 +00:00
Peter Steinberger
234a828ec1 fix: relax fetch typing for Bun 2026-01-10 04:01:06 +01:00
Peter Steinberger
ddd346604d fix: restore Anthropic OAuth tool dispatch 2026-01-10 04:01:00 +01:00
Peter Steinberger
d4c5aafdc1 feat: improve tui status line 2026-01-10 03:53:32 +01:00
Peter Steinberger
37a7dabdeb test(telegram): relax media group timeouts on Windows 2026-01-10 02:32:03 +00:00
Peter Steinberger
2b2039112d test(live): probe Read tool via gateway 2026-01-10 02:25:24 +00:00
Peter Steinberger
b8090afda0 fix(auto-reply): default audioAsVoice to false 2026-01-10 02:25:19 +00:00
Peter Steinberger
e09e44266a fix(msteams): download image attachments reliably 2026-01-10 02:25:14 +00:00
Peter Steinberger
d25b4de7d4 style: fix biome formatting 2026-01-10 02:11:43 +00:00
Peter Steinberger
6c6f38ebb0 feat: show effective config in /debug 2026-01-10 03:10:14 +01:00
Peter Steinberger
dcc6dc4792 docs: add /config get alias 2026-01-10 03:10:14 +01:00
Peter Steinberger
4f56ed368e feat: auto-start sandbox browser 2026-01-10 02:06:21 +00:00
Peter Steinberger
83f111839c feat: add /config chat config updates 2026-01-10 03:01:27 +01:00
Peter Steinberger
be51d30a49 feat(cli): colorize gateway health + daemon output 2026-01-10 03:01:27 +01:00
Peter Steinberger
a5cb1a71b1 refactor: unify inline directives and media fetch 2026-01-10 03:01:04 +01:00
Peter Steinberger
97afcc1c2c refactor: consolidate reply/media helpers 2026-01-10 02:41:16 +01:00
Peter Steinberger
579598a1ee refactor: centralize WhatsApp target normalization 2026-01-10 02:39:52 +01:00
Peter Steinberger
04be6b7cf1 test(telegram): relax media group test timeouts 2026-01-10 02:37:59 +01:00
Peter Steinberger
0be43feb12 Merge pull request #631 from imfing/fix-normalize
fix(whatsapp): normalize targets for groups and E.164
2026-01-10 01:27:33 +00:00
Peter Steinberger
7ddb8375fb fix: hide tui reasoning label when off 2026-01-10 01:25:15 +00:00
Peter Steinberger
d5755c9687 fix: signal own reactions match uuid + phone (#632) (thanks @neist)
Co-authored-by: neist <1029724+neist@users.noreply.github.com>
2026-01-10 02:24:57 +01:00
Xin
97a216b77a fix: normalize WhatsApp targets for groups and E.164 (#631) (thanks @imfing) 2026-01-10 02:22:13 +01:00
Peter Steinberger
43ca0e19b3 fix: remove ack reactions after reply (#633) (thanks @levifig) 2026-01-10 02:14:14 +01:00
Levi Figueira
d4b6af8d71 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
Peter Steinberger
59007a144b test(live): gateway smoke across profile-key models 2026-01-10 01:09:41 +00:00
Peter Steinberger
959daf24c4 refactor: centralize session agent resolution 2026-01-10 01:57:54 +01:00
Peter Steinberger
f142bc229c Merge pull request #490 from jarvis-medmatic/feat/audio-as-voice-tag
feat(telegram): `[[audio_as_voice]]` tag support
2026-01-10 00:52:02 +00:00
Peter Steinberger
eb20a7a476 fix: honor audio_as_voice streaming + parse tests (#490) (thanks @jarvis-medmatic) 2026-01-10 01:50:33 +01:00
Peter Steinberger
4fb4184cea fix(openai): avoid invalid reasoning replay 2026-01-10 00:45:10 +00:00
Jarvis
6899918bfa chore: format audioAsVoice updates
Co-authored-by: Manuel Hettich <17690367+ManuelHettich@users.noreply.github.com>
2026-01-10 01:44:57 +01:00
Jarvis
f954db76fa fix(pi): preserve audio_as_voice tag
- Allow flag-only chunks so audio_as_voice propagates
- Keep reply item scan aware of empty audio tag blocks

Co-authored-by: Manuel Hettich <17690367+ManuelHettich@users.noreply.github.com>
2026-01-10 01:43:51 +01:00
Jarvis
e037a86921 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
b6171c881c fix(telegram): guard voice note sends 2026-01-10 01:43:01 +01:00
Jarvis
972e18996b 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
4341a6870e 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
0fee5b5aed fix: gate heartbeat prompt to default agent sessions (#630) (thanks @adam91holt) 2026-01-10 01:32:58 +01:00
Adam Holt
829fe0630d fix: only inject heartbeat prompt for default agent
The heartbeat prompt from agents.defaults.heartbeat.prompt was being
injected into the system prompt for ALL agents, causing non-default
agents to read the default agent's identity files and adopt its persona.

Now the heartbeat prompt is only included when the session's agent ID
matches the configured default agent. Other agents receive no heartbeat
section in their system prompt.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 01:32:30 +01:00
Peter Steinberger
27838f6865 fix: abort runs between tool calls 2026-01-10 01:26:25 +01:00
Peter Steinberger
af7b8542af refactor: centralize failover error parsing 2026-01-10 01:26:06 +01:00
Peter Steinberger
52ab884fe7 fix(web): show all WhatsApp shared contacts 2026-01-10 00:22:31 +00:00
Peter Steinberger
8ec51b6291 fix(agents): require raw for gateway config.apply (#566) (thanks @sircrumpet) 2026-01-10 00:21:15 +00:00
Peter Steinberger
0c132f1103 Merge pull request #619 from rubyrunsstuff/fix/telegram-block-streaming
fix: enable block streaming for Telegram when streamMode is 'block'
2026-01-10 00:16:04 +00:00
Peter Steinberger
c468f539c3 fix: keep telegram streamMode draft-only (#619) (thanks @rubyrunsstuff) 2026-01-10 01:14:40 +01:00
Peter Steinberger
498f5bb040 Merge pull request #544 from jeffersonwarrior/fix/cloud-code-assist-api-errors
Fix Cloud Code Assist API errors (429/400)
2026-01-10 00:13:46 +00:00