Commit Graph

2219 Commits

Author SHA1 Message Date
Peter Steinberger 70f84286c9 fix(telegram): preserve inbound quote attribution
Preserve native Telegram quote attribution in agent-visible input and terminate quotes before following ordinary text.

Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-06 21:11:02 +05:30
Peter Steinberger 913b53ad80 fix(channels): preserve bundled delivery contracts
Preserves pending Telegram replies, Discord webhook preview policy, forwarded Slack file context, and QQBot target recognition.
2026-08-06 18:44:15 +05:30
Peter Steinberger 4d91d44d00 fix(telegram): preserve callback action ownership
Keep Telegram native and typed callback routes under their owning handlers. Expired or malformed typed buttons now clear their controls and return visible unavailable feedback while legacy raw plugin callbacks remain compatible.
2026-08-06 17:23:32 +05:30
Lu Wang 5a8c27ca41 fix(telegram): verify provider topic delivery
Verify Telegram accepted-message topics before follow-up sends, preserving partial-delivery evidence instead of trusting requested routing.

Co-authored-by: Lu Wang <7668944+wangwllu@users.noreply.github.com>
2026-08-06 15:06:39 +05:30
Jerry-Xin b8f6086411 fix(tts): deliver Telegram final speech without text churn
Defer Telegram final-mode text until speech settles, then deliver one captioned voice note or a proven-safe text fallback.

Co-authored-by: Jerry-Xin <jerryxin0@gmail.com>
2026-08-06 10:41:40 +05:30
Peter Steinberger 89014305f1 fix(telegram): reject retired native button input
Prevent stale top-level buttons arguments from silently sending text-only Telegram messages. Point model guidance and docs to typed presentation actions, and reject retired input before delivery.
2026-08-05 21:57:36 +05:30
Val Alexander 4663244170 fix(telegram): bind Mini App auth to dashboard launches
Require a short-lived, owner-bound launch ticket before minting a Control UI bootstrap token.

Co-authored-by: Val Alexander <68980965+BunsDev@users.noreply.github.com>
2026-08-05 20:24:34 +05:30
amittell d85920c03e fix(telegram): preserve truthful empty-content delivery (#88810)
* fix(telegram): skip empty rendered text deliveries
* fix(telegram): preserve empty delivery outcomes

---------

Co-authored-by: amittell <1388680+amittell@users.noreply.github.com>
2026-08-05 18:41:38 +05:30
Peter Lee f68ecec40c fix(telegram): preserve slash-command failure outcomes
Track final delivery outcomes at the Telegram native-command owner so failed finals produce a visible fallback without overriding intentional suppression or partial delivery.
2026-08-05 16:18:50 +05:30
clawSean c02e39345b fix(telegram): route poll answers into agent turns
Route public poll votes through Telegram’s authorized inbound turn path while preserving chat/topic origin and durable ordering. Surface unsupported routing without duplicating sent polls.

Co-authored-by: clawSean <260045960+clawSean@users.noreply.github.com>
2026-08-05 14:42:51 +05:30
qingminlong 76ac472f56 fix(telegram): reject malformed table spans (#109962)
* fix(telegram): reject malformed table spans

* fix(telegram): preserve spaced fallback colspans

* fix(telegram): simplify strict table-span parsing

Preserve the original contributor fix while reusing the existing strict numeric owner, enforcing complete-decimal span attributes on both Telegram paths, and strengthening sibling regressions. Production LOC remains net zero.

Co-authored-by: qingminlong <0668001063@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-04 23:13:46 -07:00
Syu b316c9cacf fix(channels): honor explicit preview streaming settings
Explicit Telegram and Discord preview modes now override inherited block streaming while explicit channel block settings remain authoritative.

Co-authored-by: Syu <zhuqimo@gmail.com>
2026-08-05 09:04:49 +05:30
Peter Steinberger ad37e91fbb refactor(telegram): consolidate outbound contracts and targets (#119438) 2026-08-04 20:33:45 -07:00
Dinesh H Suthar 50c7444edf fix(sessions): preserve compatible auth profiles on model changes (#117550)
* fix(model-picker): preserve compatible auth profiles
* chore(plugin-sdk): refresh API baseline
* fix(model-picker): keep profile policy core-owned
* fix(model-picker): preserve profiles across auth aliases
* chore(plugin-sdk): update public surface budgets
* fix(model-picker): honor explicit profile clearing
* fix: preserve compatible auth profiles on model changes
* perf: reuse prepared auth profile metadata
* docs(plugin-sdk): document direct model persistence fallback
* test: expose auth snapshot in directive mock

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
Co-authored-by: Dinesh Suthar <dineshsld20@gmail.com>
2026-08-05 07:40:00 +05:30
Arthur Lacoste f207e14d92 fix(telegram): keep commands responsive during Codex login
Release Telegram’s chat lane after structured Codex device-code delivery while account-owned authentication completes safely in the background.

Co-authored-by: Arthur Lacoste <arthurlacoste@users.noreply.github.com>
2026-08-05 05:59:13 +05:30
Peter Steinberger 7a0a4c5f2a fix(telegram): correlate deliveries to explicit topics
Use the explicit topic selected by Telegram sends when recording delivery correlation, preventing successful message, poll, and sticker actions from leaving the matching inbound event falsely undelivered.
2026-08-04 22:51:32 +05:30
Guoji-XYDT 47bd1bb194 fix(telegram): report degraded inline controls
Preserve readable fallbacks and tell the model when Telegram drops unencodable controls, including recovery guidance.\n\nCo-authored-by: Guoji-XYDT <li.guoji@xydigit.com>
2026-08-04 21:50:45 +05:30
vovapetry b5876a1086 fix(telegram): route reactions to their originating forum topics
Recover Telegram forum reaction topics from provider-observed message context before authorization, and drop unknown topics instead of routing them to General. Serialize each forum message with its reaction update to avoid cache races. Thanks @vovapetry.
2026-08-04 18:49:57 +05:30
YangManBOBO c6c7d7d9de fix(telegram): retry update offset persistence
Keep accepted and committed Telegram update offsets separate, retry transient state-store failures, and preserve classic plus isolated restart dedupe.

Co-authored-by: 潘晓波0668000512 <pan.xiaobo@xydigit.com>
2026-08-04 17:37:56 +05:30
alfredjbclaw b6a445c393 fix(telegram): preserve later chunks after rejected sends
Prevent Telegram long replies from silently losing their tail after definite per-chunk rejections. Preserve accepted message IDs and explicit partial-delivery state across durable, rich fallback, and streamed replies.

Co-authored-by: alfredjbclaw <alfredjbclaw@users.noreply.github.com>
2026-08-04 14:06:18 +05:30
Galin Iliev 1b58ecb5af fix(telegram): use monotonic polling liveness
Measure Telegram polling deadlines with a monotonic clock so wall-clock corrections cannot trigger false restarts or negative durations. Preserve the worker deadline and continued-stall recovery.

Co-authored-by: Galin Iliev <Galin.Iliev@microsoft.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-04 12:49:13 +05:30
Peter Steinberger 84cfc43684 fix(telegram): keep request deadlines through response bodies
Keep Telegram Bot API deadlines and cancellation active until grammY finishes consuming each response body. Cancel discarded HTTP 421 bodies before retry and cover the stalled group-dispatch boundary with typed socket and live Telegram proof.
2026-08-04 11:40:41 +05:30
tangtaizong666 2ea3b0da98 fix(telegram): record automatic delivery message ids
Record every accepted Telegram automatic delivery in the scoped sent-message ledger, including finalized streaming previews. This restores bot-owned reaction checks and removes the per-send full-ledger expiry scan.
2026-08-04 10:45:00 +05:30
Peter Steinberger f9d9d1225a refactor(channels): own the lifecycle status contract in SDK patch factories (#118795)
* refactor(sdk): add channel lifecycle patch factories

* refactor(channels): adopt lifecycle patches in a-m

* refactor(channels): adopt lifecycle patches in n-z

* refactor(runtime): lifecycle-own ambient registries

* test(slack): assert lifecycle factory fields

* fix(sdk): preserve lifecycle patch extras types

* test(zalouser): widen lifecycle status sink

* test(irc): avoid shadowed status patch

* fix(zalo): reuse account-agnostic media route

* fix(gateway): accept explicit channel ready recovery

* test(qa): assert terminal Slack block fact

* test(qa): restore Slack blocked lifecycle scenario

* test(gateway): lock explicit lifecycle recovery contract
2026-08-03 12:39:48 -07:00
Dinesh H Suthar 430fca67ff fix(reply): preserve streamed Telegram replies on failure
Preserve already-visible Telegram partial replies when a later run failure occurs. Finalize the same draft with the terminal notice while keeping the reply operation in run_failed state.

Co-authored-by: Dinesh Suthar <dineshsld20@gmail.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-04 01:38:59 +09:00
Peter Steinberger ed8881c308 fix(channels): deny unauthorized Discord and Telegram binding access (#118704)
* fix(channels): deny unauthorized Discord and Telegram binding access

* test(discord): remove retired access-group config key
2026-08-03 08:37:00 -07:00
Peter Steinberger 8e35fb4963 test(channels): consolidate remaining channel scaffolding (#118493)
* test(channels): consolidate channel scaffolding

* test(channels): fix helper typings
2026-08-02 23:03:54 -07:00
Peter Steinberger 97034f3d95 fix(telegram): recover directed turns after empty model replies (#118305)
* fix(telegram): recover empty directed replies

* test: fix empty-reply assertions

* test: restore result assertions

---------

Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-02 19:53:43 -07:00
Peter Steinberger f0d8cd3603 test(telegram): deduplicate dispatch fixtures (#118319) 2026-08-02 19:05:18 -07:00
Vincent Koc d93d07ac02 fix(telegram): prevent durable ingress lane spins (#118357)
* fix(channels): prevent ingress lane reconciliation spins

* fix(ui): restore composer lint budget
2026-08-03 09:58:19 +08:00
Peter Steinberger c965909a30 perf(channels): defer partial text sanitization (#118349) 2026-08-02 18:19:21 -07:00
Ayaan Zaidi 5aae66f4e3 fix(telegram): preserve pre-tool text during CLI tool calls
Preserve Claude CLI commentary outside Telegram’s disposable progress stream so tool-summary collapse cannot erase user-visible pre-tool text.

Validated with real-user Telegram E2E and focused regression coverage.
2026-08-03 08:21:56 +09:00
Peter Steinberger 474c4e671e fix(telegram): preserve tables across legacy message delivery (#118257)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-02 15:32:46 -07:00
Peter Steinberger 0c32879d45 feat(channels): publish recorded lifecycle from bundled channel transitions (#118110)
* feat(channels): publish recorded lifecycle from bundled channel transitions

* chore: remove lifecycle changelog entry
2026-08-02 13:04:49 -07:00
Peter Steinberger 999f14392b fix(telegram): preserve question choices across button rows (#118049)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-02 11:49:35 -07:00
Vincent Koc b84e14f222 fix(telegram): ignore commands for other bots (#118024) 2026-08-03 00:25:50 +08:00
Burakagent d310ca3e0c fix(telegram): honor zero DM history while preserving replies (#116985)
* fix(telegram): honor zero DM history while preserving replies

* fix(telegram): apply effective DM history limit end to end

* fix(telegram): keep DM history default private

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-02 18:01:46 +08:00
Peter Steinberger ac28f4d558 fix: release channel delivery resources reliably (#117855)
* fix(channels): consolidate delivery lifecycle ownership

* test(msteams): match release mock contract

* test(plugin-sdk): satisfy promise executor lint

* chore(plugin-sdk): regenerate API baseline for delivery-correlation + fetch-runtime exports
2026-08-02 00:24:47 -07:00
Peter Steinberger 7068bc2ffe fix(telegram): serialize approval ingress sessions (#117861)
* fix(telegram): serialize approval ingress sessions

* fix(telegram): narrow approval session tuples

* fix(ingress): return lane reconciliation result

---------

Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-01 23:57:31 -07:00
Peter Steinberger 523907b5ec fix(telegram): retain every message in multipart delivery receipts (#117863) 2026-08-01 23:37:41 -07:00
Peter Steinberger d1372b9abd test(telegram): consolidate inbound cache fixtures (#117844) 2026-08-01 23:07:53 -07:00
Peter Steinberger a9662914b0 fix(telegram): reject unauthorized command media before any download (#117821)
* fix(telegram): reject unauthorized command media before download

* fix(telegram): reject all unauthorized command media before download
2026-08-01 23:00:25 -07:00
Peter Steinberger 59a6abd065 test: consolidate embedded agent and channel suites (#117826)
* test: consolidate embedded agent and channel suites

* test: type reply reconciliation table rows

* test: preserve raw telegram config fixture
2026-08-01 22:14:32 -07:00
Peter Steinberger 846bef946d fix(channels): tighten probe and delivery lifecycles (#117812)
* fix(channels): tighten probe and delivery lifecycles

* test(zalo): type probe fetch mocks
2026-08-01 22:12:24 -07:00
Peter Steinberger ceb8a8b3a1 fix(telegram): preserve transient getFile responses when retrying media (#117798)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-01 22:11:26 -07:00
Peter Steinberger e98fdeefdf refactor(errors): consolidate message formatting (#117818) 2026-08-01 22:05:49 -07:00
Peter Steinberger aadbb00f2c fix(telegram): apply group media policy before inbound downloads (#117537)
* fix(telegram): apply group media policy before inbound downloads

* test(telegram): consolidate inbound media owner regression matrix

* fix(telegram): format media group ingest

* test(telegram): restore media group policy coverage

---------

Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-01 20:31:21 -07:00
Vincent Koc 5327965541 perf(telegram): isolate migration persistence metadata (#117759) 2026-08-02 11:19:07 +08:00
Peter Steinberger 28e681c92f fix(channels): preserve workspace media access in gateway sends (#117711) 2026-08-01 18:09:17 -07:00
Peter Steinberger 568ea29d2e refactor(plugins): inherit shared package boundary settings (#117474) 2026-08-01 09:11:09 -07:00