Commit Graph

2902 Commits

Author SHA1 Message Date
Robin Waslander 4d6c8edd74
fix(telegram): skip empty text replies instead of crashing with GrammyError 400 (#56620)
Filter whitespace-only text chunks at the bot delivery fan-in before
they reach sendTelegramText(). Covers normal text replies, follow-up
text, and voice fallback text paths.

Media-only replies are unaffected. message_sent hook still fires with
success: false for suppressed empty replies.

Fixes #37278
2026-03-28 22:27:56 +01:00
Robin Waslander ab2ef7bbfc
fix(telegram): split long messages at word boundaries instead of mid-word (#56595)
Replace proportional text estimate with binary search for the largest
text prefix whose rendered Telegram HTML fits the character limit, then
split at the last whitespace boundary within that verified prefix.

Single words longer than the limit still hard-split (unavoidable).
Markdown formatting stays balanced across split points.

Fixes #36644
2026-03-28 21:24:59 +01:00
Robin Waslander 865160e572
fix(telegram): validate replyToMessageId before sending to Telegram API (#56587)
Add shared normalizeTelegramReplyToMessageId() that rejects non-numeric,
NaN, and mixed-content strings before they reach the Telegram Bot API.
Apply at all four API sinks: direct send, bot delivery, draft stream,
and bot helpers.

Prevents GrammyError 400 when non-numeric values from session metadata
slip through typed boundaries.

Fixes #37222
2026-03-28 20:47:10 +01:00
Robin Waslander e69ea1acb3
fix(bluebubbles): guard debounce flush against null text (#56573)
Sanitize message text at the debounce enqueue boundary and add an
independent guard in combineDebounceEntries(). Prevents TypeError when
a queued entry has null text that reaches .trim() during flush.

Add regression test: enqueue null-text entry alongside valid message,
verify flush completes without error and valid message is delivered.

Fixes #35777
2026-03-28 20:22:05 +01:00
Robin Waslander d1b0f8e8e2
fix(google): resolve Gemini 3.1 models for all Google provider aliases (#56567)
The forward-compat resolver hardcoded 'google' as the provider ID for
template lookup, so alias providers (google-vertex, google-gemini-cli)
could not find matching templates. Pass the actual provider ID from the
runtime context and add a templateProviderId fallback for cross-provider
template resolution.

Also fix flash-lite prefix ordering — check 'gemini-3.1-flash-lite'
before 'gemini-3.1-flash' to prevent misclassification.

Add regression tests for pro, flash, and flash-lite across provider
aliases.

Fixes #36111
2026-03-28 19:59:14 +01:00
Peter Steinberger 02d4c1f2c3 refactor: derive channel metadata from plugin manifests 2026-03-28 17:17:10 +00:00
Frank Yang c14b169a1b
fix(acp): repair stale bindings after runtime exits (#56476)
* fix(acp): repair stale bindings after runtime exits

* fix(acp): narrow stale binding recovery

* fix(acp): preserve policy gating for stale sessions

* fix(acp): handle signal exits and canonical unbinds

* fix(acp): harden canonical stale-session recovery
2026-03-29 01:15:16 +08:00
Saurabh Mishra 90e82fabb3
fix: display model name instead of ID in Telegram model selector (#56165) (#56175)
* fix: display model name instead of ID in Telegram model selector (#56165)

* fix(telegram): scope model display names by provider

Signed-off-by: sallyom <somalley@redhat.com>

---------

Signed-off-by: sallyom <somalley@redhat.com>
Co-authored-by: sallyom <somalley@redhat.com>
2026-03-28 09:23:09 -04:00
Peter Steinberger bccbfdebfe fix: hydrate lazy tts provider config from source config 2026-03-28 12:56:27 +00:00
Peter Steinberger 3bb199aa43 refactor: lazy-load matrix setup bootstrap surfaces 2026-03-28 12:46:54 +00:00
Peter Steinberger 1c5a4d2a2b fix: stabilize implicit provider discovery merges 2026-03-28 11:40:40 +00:00
Peter Steinberger 85b3c1db30 fix: defer tts provider resolution until needed 2026-03-28 11:35:33 +00:00
Peter Steinberger 86dba6d906 fix: skip speech provider discovery on tts off path 2026-03-28 11:35:33 +00:00
Ayaan Zaidi 0ebd7df9dc
test(feishu): stabilize bot-menu lifecycle replay 2026-03-28 16:46:21 +05:30
Ayaan Zaidi 8ea5c22985
fix(matrix): avoid heavy jiti runtime barrels 2026-03-28 15:35:05 +05:30
Ayaan Zaidi a628d5d78b
fix(irc): pin runtime barrel exports for jiti 2026-03-28 15:23:22 +05:30
Ayaan Zaidi 20aba8c518
fix(ci): restore extension test runtime deps and update voice-call expectations 2026-03-28 15:04:33 +05:30
Kenny Xie cb5afdf108
fix: prevent matrix-js-sdk plugin load crash (#56273) (thanks @aquaright1)
* Fix matrix-js-sdk multiple entrypoint crash on plugin load

* test(matrix): cover runtime bundle import regression

* fix: prevent matrix-js-sdk plugin load crash (#56273) (thanks @aquaright1)

* fix: widen matrix-js-sdk bundle import guard (#56273) (thanks @aquaright1)

---------

Co-authored-by: Kenny Xie <kennyxie@Mac-mini-von-Kenny.local>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-28 14:27:54 +05:30
Ayaan Zaidi 5f82741d0f
test: align telegram thread binding seam coverage 2026-03-28 14:17:09 +05:30
Lakshya Agarwal 4dfd2cd60c
feat: add support for extra headers in Tavily API requests (#55335)
* feat: add support for extra headers in Tavily API requests

* test(tavily-client): add unit tests for X-Client-Source header in API calls

* fix(tavily): add client source attribution (#55335) (thanks @lakshyaag-tavily)

---------

Co-authored-by: Nimrod Gutman <nimrod.gutman@gmail.com>
2026-03-28 11:36:59 +03:00
Ayaan Zaidi 8366c74ccd
test: mock telegram conversation route seam 2026-03-28 13:17:57 +05:30
Peter Steinberger 71a3ad153a fix(ci): stabilize bundled capability contract loading 2026-03-28 07:33:19 +00:00
Peter Steinberger 30bf4dd1ce test: isolate nextcloud talk from bundled channel imports 2026-03-28 07:18:07 +00:00
Peter Steinberger 2fd1a5274a fix: add getChat to telegram media test harness 2026-03-28 07:14:48 +00:00
Peter Steinberger f4cd06cb1a refactor: finish test cleanup off infra runtime 2026-03-28 06:59:32 +00:00
Peter Steinberger 5802d112da refactor: narrow telegram test mocks off infra runtime 2026-03-28 06:56:41 +00:00
Peter Steinberger df4c9c5bd8 refactor: narrow test mocks off infra runtime 2026-03-28 06:54:03 +00:00
Peter Steinberger 61936938e9 refactor: move test harnesses off infra runtime 2026-03-28 06:52:06 +00:00
Peter Steinberger 7db10d2103 refactor: route discord channel through outbound runtime 2026-03-28 06:45:20 +00:00
Peter Steinberger c65ec46490 refactor: trim remaining infra runtime residue 2026-03-28 06:41:56 +00:00
Peter Steinberger 922c90e9fa refactor: add approval runtime sdk seam 2026-03-28 06:33:07 +00:00
Peter Steinberger 0d98ce1065 refactor: add diagnostic and error runtime sdk seams 2026-03-28 06:26:38 +00:00
Peter Steinberger 70c2458861 refactor: add host and collection runtime sdk seams 2026-03-28 06:19:16 +00:00
Peter Steinberger d042192c7c
refactor(plugins): move provider policy hooks into plugins 2026-03-28 06:11:13 +00:00
Peter Steinberger 1db1c75a98 refactor: trim state persistence runtime seams 2026-03-28 06:08:18 +00:00
Peter Steinberger c222a44e6f refactor: add retry runtime sdk seam 2026-03-28 05:59:07 +00:00
Peter Steinberger e246efb288
fix(runtime): align channel runtime api seams 2026-03-28 05:53:32 +00:00
Peter Steinberger 83135c31c9
refactor(acp): extract generic current conversation binding store 2026-03-28 05:53:07 +00:00
Gustavo Madeira Santana 1e4241c34a
Matrix: fix directory auth and credentials fallback 2026-03-28 01:52:55 -04:00
Peter Steinberger e7a61d13f0 fix: route signal runtime barrel off denied subpath 2026-03-28 05:44:33 +00:00
Peter Steinberger a126d23f0d refactor: add fetch runtime sdk seam 2026-03-28 05:44:33 +00:00
Peter Steinberger b236f39104
refactor(agents): generalize tool schema compat cleanup 2026-03-28 05:42:46 +00:00
Peter Steinberger c7883fe892
refactor(plugins): register provider model id hooks 2026-03-28 05:42:46 +00:00
Peter Steinberger 49f693d06a refactor: widen webhook request guard sdk seam 2026-03-28 05:28:10 +00:00
Peter Steinberger d5841f6412
refactor: centralize plugin API assembly 2026-03-28 05:24:25 +00:00
Peter Steinberger 838013c87a refactor: expose webhook request guard sdk seam 2026-03-28 05:17:19 +00:00
Peter Steinberger 38c65b4096 refactor: route slack prepare events through channel runtime 2026-03-28 05:06:20 +00:00
Peter Steinberger f01f2ddc6d test(matrix): restore sdk mock ordering 2026-03-28 05:04:07 +00:00
Peter Steinberger ccf54f263a refactor: route slack interactions through channel runtime 2026-03-28 05:03:22 +00:00
Peter Steinberger ab2bd34b66
refactor(xai): split provider compat facades
Co-authored-by: Harold Hunt <harold@pwrdrvr.com>
2026-03-28 05:02:41 +00:00