Repository navigation
fix(bot): messaging follow-ups — Host appUrl, resume delivery, keep Linked notice (#1066 #1067 #1068) - #1069
Merged
Merged
Conversation
A messaging adapter's send now throws MessagingSendError with what it sent (parts and message ids) when a later part fails. The core keeps that progress on the Message's parts (sentOn), and the channel.deliver retry passes it back as the Message's resume, so the adapter sends only the remaining parts and reports every id, buttons included. Telegram and the fake messaging adapter (which now splits text and files into parts) both resume. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t's listener (#1068) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…1066) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…y piece (#1067) Code-review fixes. The kept progress carries a digest of what was sent, so a retry whose Message changed since (a file now linked instead) resends it whole rather than skipping the wrong parts. Telegram resumes a part it was resending as plain text after the pieces already sent (SendProgress.pieces), and throws the platform's own error when nothing was sent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three follow-ups from spec #1044 (Messaging Channels 1, Telegram):
<appUrl>/bots/<botId>links. New Host optioncreateBotSdk({ appUrl }), resolved once inappUrlOf(packages/botsdk/bot/src/bot/channels.ts): the Host'sappUrl, else the email or push adapter's, with trailing slashes stripped.MessagingSendError(withSendProgress) andOutboundMessage.resume. The core keeps the progress as asentOnkey inmessage.partsjsonb, with no new column. Telegram and the fake adapter both skip parts already sent.needs_attentionand stops its listener, through a sharedrejected()inchannel-listeners.ts.How it was tested
pnpm check-typespassed after each ticket's last commit.Decisions I made
createBotSdk({ appUrl }). The owner chose it after the first cut usedchannelAppUrl, because Hosts never buildchannel()themselves. It affects messaging links only; email and push still use their adapter's ownappUrl.message.partsjsonb (sentOn: platform, chat, body digest and progress), not in a new column. A retry resumes only when platform, chat and body digest all match; otherwise it resends the whole Message. The fake adapter now splits a Message into parts, so a Message with text and files reports one id per part.Risk
resumeand a new error type. Only Telegram exists today.sentOnisn't cleared after a full success. A rerun after a full success already resent everything before this change.Closes #1066
Closes #1067
Closes #1068
🤖 Generated with Claude Code