chore(deps): update dependency chat to v4.40.0 - #20
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
March 31, 2026 08:54
13e9789 to
467fbdf
Compare
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
April 15, 2026 12:49
467fbdf to
c203864
Compare
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
May 1, 2026 11:14
c203864 to
e94ac93
Compare
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
May 8, 2026 23:04
e94ac93 to
f1c9d2a
Compare
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
May 23, 2026 08:13
f1c9d2a to
f849746
Compare
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
May 30, 2026 20:00
f849746 to
f3fd5db
Compare
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
June 5, 2026 19:58
f3fd5db to
1cc676b
Compare
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
June 21, 2026 03:14
1cc676b to
134867d
Compare
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
July 4, 2026 03:03
134867d to
5b24afa
Compare
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
July 11, 2026 20:14
5b24afa to
32e5a0a
Compare
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
July 18, 2026 03:40
32e5a0a to
de186a3
Compare
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
July 25, 2026 19:08
de186a3 to
5e5571c
Compare
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
August 1, 2026 04:21
5e5571c to
dfe7c2b
Compare
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
4 times, most recently
from
August 13, 2026 14:27
eceb070 to
684470d
Compare
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
August 14, 2026 21:50
684470d to
332b2fb
Compare
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
August 17, 2026 23:27
332b2fb to
b057928
Compare
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
August 28, 2026 19:08
b057928 to
b96ccc1
Compare
renovate
Bot
force-pushed
the
renovate/chat-4.x
branch
from
September 5, 2026 07:02
b96ccc1 to
5e0fed3
Compare
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.
This PR contains the following updates:
4.20.0→4.40.0Release Notes
vercel/chat (chat)
v4.40.0Compare Source
Minor Changes
4a0b5c0: AddtooltiptoButtonandLinkButton, and awidthhint toCard. The Teams adapter and the@chat-adapter/teams/cardssubpath render them as the Adaptive Card actiontooltipand themsteamsfull-width card property; other adapters ignore them. Emitted Adaptive Cards now declare schema version 1.5, which is the version that introduced action tooltips. Buttons with acallbackUrlkeep theirtooltipand other fields when the URL is swapped for a callback token.Patch Changes
f485255: Harden webhook tenant isolation, require explicit Google Chat bot identity for reliable mention handling, use native Google Chat pagination, isolate Slack caches, and bound recording storage.b7c9316: Tighten AI tool and queued-message scoping, isolate direct-message conversations, preserve ephemeral follow-ups, consume callback tokens once, and mark external link metadata as untrusted.v4.39.0Compare Source
Minor Changes
2ce2be0: Add Slack Agent Sessions lifecycle support, native stop cancellation throughthread.signal, automatic session titles, and session stop/title-change events while preserving the legacyassistant_viewcompatibility path.169788b: Introduce the unified History API (bot.history) with user, thread, and channel scopes.bot.history.userreplacesbot.transcriptsfor cross-platform per-user message persistence. The API surface is identical — migrate by changing thetranscriptsconfig key tohistory.userand updating call sites frombot.transcripts.*tobot.history.user.*.bot.transcriptsremains available as a deprecated alias.bot.history.threadandbot.history.channelexpose promise-based helpers for per-thread and per-channel message access, aligned with the existingthread.messagesandchannel.threads()iterators. Reads delegate to the adapter; adapters that persist history in the SDK-side store (persistThreadHistory: true) are served from that cache. An unregistered adapter prefix or an unsupported capability throws instead of returning an empty result.The new
toPromptEntrieshelper convertshistory.user.list()entries into{ role, content }messages ready for LLM prompts.The
TranscriptEntrytype is deprecated in favour ofHistoryEntry. Both are exported fromchat.5b538f6: Keep thread locks alive while message handlers run so queue, burst, and debounce strategies remain serialized beyond the lock TTL. Renewal is capped by the newconcurrency.maxLockLifetimeMsoption (default 10 minutes) so a hung handler cannot block a thread forever. When the heartbeat detects that lock ownership was lost, the queue drain and debounce loops stop instead of competing with the new lock holder, and the debounce loop now keeps draining messages that arrive while a handler is running instead of stranding them until the next webhook.Patch Changes
16ea171: preserve adapter-returned thread ids when editing channel messageseddcd7e: Return Telegram file downloads as portable ArrayBuffer data while preserving Buffer support in the shared attachment contract.929878b: Allow JSX link buttons to include an explicit action ID.500b7e6: enforce the conversation scope on write tools and stop trusting client-supplied message history in the web adaptercreateChatToolsnow runs the same scope guard on write tools that read tools already used, so a thread or channel id the model supplies that resolves outside the scoped conversation is rejected before the write executes.sendDirectMessagetargets a user id rather than a conversation and stays gated by approval alone.The web adapter no longer treats the request body's
messagesarray as a source of conversation state. Only the latest user message is consumed, and tool parts are stripped from it so a browser cannot inject forged tool-call or approval state. Text, file, and custom data parts pass through unchanged; a message left with no parts after stripping is rejected with HTTP 400. Prior turns come from the state adapter whenpersistMessageHistoryis enabled.v4.38.1Compare Source
Patch Changes
6cb933e: isolate queued and debounced messages by thread when using channel-scoped locks764e475:toPlainTextkeeps empty table cells so tab-separated columns stay aligned, and drops table rows with no content (such as placeholder header rows)v4.38.0Compare Source
Minor Changes
0f24cc3: Preserve normalized replied-to message context and populate it from Telegram replies.bdeb2bf: Add a workflow-safechat/serializationentrypoint and isolate automatic Chat class serializers from Node-only runtime dependencies.a0cba02: Add Vercel Connect credential resolvers and custom webhook verification to the Discord adapter, withcreate-chat-sdk --connectscaffolding for Discord bots.83ede7e: add native message replies with WhatsApp contextual reply support18d4a23: Add a shared thread API for marking messages as read across WhatsApp, Messenger, and XChat.Note for anyone calling
XchatAdapter.markAsRead()directly: it now rejects when a receipt fails instead of logging a warning and resolving. Automatic read receipts are unaffected, since the adapter still catches and logs those internally. If you call the method yourself without awaiting it, add a.catch()so a failed receipt does not surface as an unhandled rejection.v4.37.0Compare Source
Minor Changes
2a2b2c5: Add a native Instagram Direct Messages adapter with signed webhooks, media, quick replies, story context, reactions, and typed Meta API errors.4ac0455: Add message update and delete lifecycle callbacks, with Slack message_changed and message_deleted dispatch support.0ec6a73: Add@chat-adapter/notionfor Notion page and block comment discussions: webhook HMAC verification, Post+Edit streaming, conversation history,message.subjectpage metadata, plain-text@userName/@botUserIdmention detection, and File Uploads (up to 3 native attachments). Registers the adapter in thechat/adapterscatalog andcreate-chat-sdkCLI scaffold, and adds Notion emoji platform support.85e3d22: Close residual gaps in agent read-tool scoping.createChatTools's read guard now wraps modal, assistant-thread, assistant-context, app-home, app-context, and member-joined dispatch so tools built in those handlers inherit the active conversation, and it logs a warning (instead of failing open silently) when a read runs with no resolvable scope. Scoping stays channel-level by default, so a thread scope still permits sibling threads in its channel. Pass the newstrictScope: trueto confine a thread scope to that thread alone, rejecting both sibling threads and the parent channel, which matters on platforms where a channel is the widest read available (a GitHub channel is an entire repo).Note that reads inside those newly wrapped handlers were previously unscoped. An agent built in an
onModalSubmit,onAppHomeOpened, oronMemberJoinedChannelhandler that reads another channel will now be rejected. Pass an explicitscope, orscope: falsefor intentionally workspace-wide reads.v4.36.0Compare Source
Minor Changes
c5d86b1: confine built-in agent read tools to the conversation being handled, with an optional scope override0153a39: AddDateInputandNumberInputmodal children. The Slack adapter renders them as adatepickerand anumber_input, the Teams adapter asInput.DateandInput.Number, and both submitted values arrive inevent.valuesas strings.Teams submit values that arrive as JSON numbers are now stringified into
event.valuesinstead of being dropped. This fixesInput.Number, but applies to any numeric value a Teams dialog submits — a key that was previously absent fromevent.valueswill now be present as a string.Patch Changes
257a32d: Route Teams personal and group conversations using their explicit conversation type so group chats use buffered fallback even when their IDs resemble direct messages.b547f45: Stop treating email addresses as bot mentions. A message containingjane@acme.comno longer triggers a bot namedacme, because the@indetectMentionmust not follow a word character. Real mentions are unaffected, including at the start of a message, after punctuation, and suffixed names such as GitHub'smybot[bot].caa6325: Add XChat support to@chat-adapter/x, shipped from the new@chat-adapter/x/chatsubpath so it sits alongside the existing X adapter. The XChat crypto stack (@xdevplatform/chat-xdk,@xdevplatform/xdk,juicebox-sdk) is an optional peer dependency, so existing@chat-adapter/xusers are unaffected. All cryptography is handled inside the adapter via@xdevplatform/chat-xdk(wasm) and all REST goes through the typed@xdevplatform/xdkclient. Only a bot token and a Juicebox PIN are required: the bot's identity (user id and @handle) is resolved fromGET /2/users/meat startup.x-twitter-webhooks-signature, which X sends on every delivery. SetconsumerSecret(orX_CONSUMER_SECRET) to receive webhooks, ordisableWebhookVerificationwhen an upstream layer already verifies them. Polling deployments are unaffected@handlefallback; group replies sent as quoted repliesopenDM(userId)starts (or reuses) an encrypted 1:1, running a full key exchange when needed so the bot can message firsteditSafetyDelayMs(default 5000ms) so receiving clients have stored the originalsendReadReceipts, default on), typing keep-alive, configurable group welcome messagechat-sdk-xchat/<version>User-Agent product token so Chat SDK traffic is identifiable in X API request logs (a User-Agent set viaapiHeaderstakes precedence)chat/adapterscatalog and thecreate-chat-sdkCLI scaffold, with a new optionalimportPathcatalog field for adapters that ship on a subpathv4.35.0Compare Source
Minor Changes
4cb7e5d: Add achat/workflowsubpath withrequestApproval(): durable human-in-the-loop approvals built on Workflow SDK. It posts an approval card with Approve/Deny buttons, suspends the workflow until a user decides (or an optional timeout elapses), validates approvers, finalizes the card with the outcome, and returns{ approved, timedOut, user }. Also exports thebuildApprovalCardandbuildResolvedCardbuilders. Requires the new optionalworkflowpeer dependency.46681f5: Expose Microsoft Graph email addresses on normalized incoming Teams message authors. Resolved user profiles are cached in the state adapter (1 hour, failed lookups 5 minutes) so the lookup doesn't add a Graph call per message.Patch Changes
80def3a: Add optionalisSystemfield to the normalized messageAuthortype to distinguish platform-generated messages from humans and bots. The Slack adapter now setsisSystem: truefor messages authored by Slack's reservedUSLACKuser (e.g. "@user archived the channel" notifications in DMs), so consumers no longer need to hard-code Slack-specific user IDs.93a58af: Show explicitly configured progress as a native Teams DM status while preserving native streaming.25f3099:toAiMessagesno longer drops messages that have no text. A message with an empty text body is now kept when it has links or attachments the converter can include: images and text files (text/*, JSON, XML, YAML, etc.) with a workingfetchData(). Messages whose only attachments are unsupported (video, audio, other file types, or attachments withoutfetchData()) are still skipped, andonUnsupportedAttachmentnow fires for video/audio attachments on these previously filtered messages.Note: multipart
contentno longer always starts with a text part. When a kept message had no text, itscontentarray contains only attachment parts.v4.34.0Compare Source
Minor Changes
1721fa0: Add support for Slack's Agent messaging experience (agent_view).onAppContextChangedwith a normalizedAppContextEntity[]describing the user's active view (channel / canvas / list / message / unknown).AppHomeOpenedEventnow carries the folded active-view context asentitiesand the openedtab(Slack:"home"/"messages"), so handlers can tell a Home-tab open from the DM-open signal underagent_view.agentViewconfig flag (underagent_view,app_home_openedis the DM-open signal regardless of tab and folded context is surfaced), routing for theapp_context_changedevent, and agetAppContext(message)helper to read the folded context on DM messages.setSuggestedPromptsnow accepts an optional thread reference (agent_view lets prompts sit at the top of the agent conversation).agentView, DM (Messages-tab) messages are threaded per new Slack's model — each user message is a thread root (thread_ts ?? ts). Conversation-scoped threads returned byopenDM()keep working: when that thread is subscribed, incoming top-level DM messages route to it.createSlackAdapterenv auth fallback (SLACK_BOT_TOKEN/SLACK_CLIENT_ID/SLACK_CLIENT_SECRET) is now disabled only when an auth or verification field (botToken,clientId,clientSecret,installationProvider,signingSecret,webhookVerifier) is passed explicitly, instead of by any config object — socreateSlackAdapter({ agentView: true })still picks up env credentials, while explicit-secret configs stay immune to ambient env vars.@slack/web-apito^7.18.0(adds the optionalthread_tstyping forsetSuggestedPrompts).4717a38: Add chart support and richer table rendering, with native Slack data table and data visualization blocks.ChartElementandChart()builder (JSX supported) with pie, bar, area, and line charts, mirroring Slack's data visualization model: pie charts takesegments, series charts take namedseriesplotted against sharedcategorieswith optionalxLabel/yLabel.TableElement/Table()gain optionalcaption(accessible table description) andpageSize(rows per page) fields.chartElementToFallbackTexthelper).@chat-adapter/slack/blockssubpath gets the same treatment:SlackChartElementtypes,chartcard children, data table rendering, and matching limits.postMessagenow surfaces Slack's per-block validation details when the API rejects blocks (invalid_blocks), instead of the bare "An API error occurred" message.6714efc: Support AI SDK v7 as a peer dependency.chatnow acceptsai@^6.0.182 || ^7.0.0(chat/aitools work with both majors).@chat-adapter/webnow acceptsai@^6 || ^7,@ai-sdk/react@^3 || ^4,@ai-sdk/svelte@^4 || ^5, and@ai-sdk/vue@^3 || ^4.chat/aitool factories now declare explicitTool<Input, Output>return types instead of relying on inference, so the published declarations no longer depend onaiinternals that changed in v7. The public type surface is unchanged.Patch Changes
5c926f1: Preserve markdown structural whitespace when extracting normalized message text.2531a42: FixdetectMention(and the Telegram adapter'sisBotMentioned) falsely matching@botwhen@bot-devis mentioned.\b(word boundary) matches between a word character and a hyphen, so/@bot\b/incorrectly matches@bot-dev. Replaced with(?![\w-])to exclude hyphens.v4.33.0Compare Source
Minor Changes
ef2542c: add X (Twitter) adapter: reply to public mentions, send and receive direct messages, post and edit from the bot account, and like posts, using the X API v2 with OAuth 2.0 and managed token refreshPatch Changes
3abdc69: docs(adapters): add Cloudflare Agents as a vendor-official state adapter (agents/chat-sdk) to the catalog and docs listing. It is hidden from the create-chat-sdk CLI (Worker/Durable Objects runtime), and the interactive state picker now filters out CLI-incompatible state adapters.0b63791: Raise the default message dedupe TTL from 5 to 10 minutes so it outlives the longest platform redelivery window. Slack's Events API retries up to ~5 minutes after the original delivery — exactly at the old TTL boundary, where a retried event could miss the expired dedupe entry from its first processing and be handled twice. Configurable behavior is unchanged (dedupeTtlMsstill overrides).0c761f1: docs(adapters): add Dial as a vendor-official adapter (@getdial/chat-sdk-adapter) to the catalog, docs listing, and CLI scaffold spec24a04d5: docs(adapters): add Photon as a vendor-official adapter (@photon-ai/chat-adapter-imessage) to the catalog, docs listing, and CLI scaffold spec076fe5d: preserve skipped mention routing for debounce and message patternsv4.32.0Compare Source
Minor Changes
2e47351: AddautoCompletePreviousoption toPlan.addTask(). Defaults totrueso sequential workflows keep auto-completing existing in-progress tasks; passfalseto keep multiple tasks in progress for parallel execution.Patch Changes
eccc6b9: detect bot mentions in skipped queue and burst messages438f551: Fix lightweight thread handles so streaming posts without an incoming message context no longer crash.d034b8b: docs(adapters): add Linq as a vendor-official adapter (@linqapp/chat-sdk-adapter) to the catalog, docs listing, and CLI scaffold spec06af3e1: docs(adapters): add Novu as a vendor-official adapter (@novu/chat-sdk-adapter) to the catalog, docs listing, and CLI scaffold specefa9610: Sync bundled KB resources from Edge Config: add four new guides (Vercel Connect, the Slack Vercel Connect bot, AI Gateway + AI SDK, and the daily digest bot), refresh existing guide bodies, and regenerateresources/templates.json. Thesync-resourcesscript now fetches and validates all guides before writing (so a failed fetch leaves the tree untouched), validates the source config shape, rejects duplicate slugs, retries transient fetches, and mirrorsSKILL.mdto all four committed copies.v4.31.0Compare Source
Minor Changes
778ae69: Add a zero-dependencychat/adapterscatalog subpath for official and vendor-official adapter metadata, environment specs, and setup helpers.171657a: Adding support for stable IDs to link button action handlersv4.30.0Compare Source
Minor Changes
5461ea9: Add native Telegram private chat draft streaming with fallback streaming elsewhere.v4.29.0Minor Changes
ac8a207: Addchat/aisubpath as the home for AI utilities, includingcreateChatToolsfor the Vercel AI SDK andtoAiMessagesfor converting chat history into AI SDK prompts.createChatToolsexposes Chat SDK operations as ready-to-use AI SDK tools so an agent can read messages, post replies, send DMs, react, edit, delete, and manage thread subscriptions across every adapter the suppliedChatinstance has registered. Write operations require user approval by default and can be toggled globally or per-tool viarequireApproval. Three presets (reader,messenger,moderator) scope the toolset, and tools can also be cherry-picked from the same subpath.toAiMessages(and theAiMessage/AiMessagePart/ToAiMessagesOptionstypes) now ship fromchat/aialongside the tools — keeping the optionalaiandzodpeer dependencies out of bundles that don't use them. The previouschatre-exports continue to work, but are marked@deprecatedso editors surface a hint pointing atchat/ai; existing code keeps compiling, and migrating is a single import-path change.b75eedb: add burst concurrency strategyPatch Changes
e60bc8c: chore: set supported Node versions in enginesv4.28.1Patch Changes
0cc3d06: fix StreamEvent type from step-finish to finish-stepv4.27.0Minor Changes
1e7c551: restore attachment fetchData after queue/debounce serializationb0ab804: Bundle guide markdown and a templates manifest with the package so AI agents can discover Chat SDK resources without fetching at runtime. Guides are written toresources/guides/*.mdand templates toresources/templates.jsonby the root-levelpnpm sync-resourcesscript.b9a1961: Switch Telegram adapter's outboundparse_modefrom legacyMarkdowntoMarkdownV2, and replace the standard-markdown passthrough renderer with a proper AST → MarkdownV2 renderer. Standard markdown (**bold**) and legacyMarkdown(*bold*) use different syntaxes and have no shared escape rules, so any message containing.,!,(,),-,_in regular text — which is virtually every LLM-generated message — was being rejected withcan't parse entities. The new renderer walks the mdast tree and emits MarkdownV2 with context-aware escaping (normal text vs. code blocks vs. link URLs), uniformly applies MarkdownV2parse_modeto every format-converter output (including AST messages, which previously shipped withoutparse_modeand rendered asterisks literally), and escapes card fallback text.Also fix silent message truncation that the MarkdownV2 migration widened from a rare bug into a reliable 400. The previous truncator sliced messages at 4096/1024 chars and appended literal
..., but in MarkdownV2.is a reserved character that must be escaped, the slice can leave an orphan trailing\, and it can cut through a paired entity (*bold*,`code`) leaving it unclosed — all of which causecan't parse entities. The two truncate methods are unified intotruncateForTelegram(text, limit, parseMode), which appends an escaped\.\.\.for MarkdownV2 and walks back past unbalanced entity delimiters or orphan backslashes before appending. Plain-text messages keep literal....Internal typing hardening:
renderMarkdownV2is now typed exhaustively on mdast'sNodesunion with aneverassertion, so new mdast node types fail the build rather than silently falling through. IntroduceTelegramParseMode = "MarkdownV2" | "plain"replacing the previousstring | undefinedat call sites, withtoBotApiParseModemapping to the Bot API wire format at the boundary. Thechatpackage gains a re-export of mdast'sNodesunion so adapters can build exhaustively typed renderers without importing mdast directly.a520797: Addchat.getUser()method andUserInfotype for cross-platform user lookups. ImplementgetUseron Slack, Discord, Google Chat, GitHub, Linear, and Telegram adapters.70281dc: add initialOption and option_groups support for ExternalSelect9093292: add streaming options to thread.post() with platform-specific namespacing7e90d9c: Add Socket Mode support for environments behind firewalls that can't expose public HTTP endpoints, and add{ action: "clear" }modal response to close the entire modal view stackbca4792: Allowtask_updatestreaming chunks to include optionaldetailstext for Slack task cards37dbb4a: Addthread.getParticipants()to get unique human participants in a thread608d5f0: Addchat.thread(threadId)method to create Thread handles outside of webhook contextsa179b29: Implement external_select block kit for Slacka8f2aab: Allowplan.updateTask()to target a specific task by ID via{ id: taskId }instead of always updating the last in_progress taskPatch Changes
8a0c7b3: Fix Slack structured streaming whenthread.post(stream)is called from a handler created by an interactive (block_actions) payload.The team ID is now resolved from
team.idin addition toteam_id/team.d630e6c: fix(chat): honorconcurrency.maxConcurrentin theconcurrentstrategy. The cap was documented but never applied, so handlers dispatched unbounded. Also warns whenmaxConcurrentis paired with a non-concurrentstrategy (previously ignored silently) and throws onmaxConcurrent < 1to prevent a deadlock.v4.26.0Compare Source
Minor Changes
2235c16: export standalone reviver for workflow-safe deserialization without adapter dependenciesPatch Changes
ddb084b: guard fallback streaming against empty post and edit callsv4.25.0Compare Source
Minor Changes
2700ce8: Allow Slack native streaming to send markdown tables without wrapping them in code fences, while preserving the previous append-only table fallback for other consumers.v4.24.0Compare Source
Minor Changes
4f5d200: Add Teams dialog (task module) support withactionType: "modal"on buttons andonOpenModalwebhook hookPatch Changes
8d89274: fix: disable source maps in published packages27b34e1: Use adapter to parse channel id forthread.channelIdv4.23.0Compare Source
Minor Changes
4166e09: AddchannelVisibilityenum to distinguish private, workspace, external, and unknown channel scopes. ImplementsgetChannelVisibility()on the Adapter interface and Slack adapter, replacing the previousisExternalChannelboolean.v4.22.0Compare Source
Minor Changes
f2d8957: Implement new concurrency strategies for overlapping messagesv4.21.0Compare Source
Minor Changes
e45a67f: Add optionaldisconnect()hook to the Adapter interface, called duringchat.shutdown()for resource cleanupPatch Changes
13ba1c7: FixfromFullStream()step separator detection for AI SDK v5+: renamestep-finishevent check tofinish-step95fd8ce: Add missingtoJSON()method declarations toThreadandChannelinterfaces to match their implementations.v4.20.2Compare Source
v4.20.1Compare Source
Patch Changes
e206371: new toAiMessages API for history-to-AI-SDK transformation. And introduces LinkPreview object on Message8d88b8c: Fix GitHub adapter streaming: accumulate text and post once instead of using the fallbackStream post+edit loop, which caused 422 errors from empty body edits during TTFT. Also log fallbackStream edit failures via the Logger instead of silently swallowing them.Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.