Packages

chat

4.43.0 · 19 Oct 2026MIT2.1M / weekRepositoryHomepagenpmAtom feed

88 stable releases, newest first, by release line. Notes are quoted as the maintainers published them.

  1. 4.43.0

    19 Oct 2026
    • 115cd39: Add @chat-adapter/gitlab for merge request and issue comment threads on GitLab.com, GitLab Self-Managed, and GitLab Dedicated. It verifies webhooks with a signing token or secret token, replies inside each comment's discussion, handles emoji reactions, uploads files, and resolves message.subject to the parent merge request or issue. Registers the adapter in @chat-adapter/catalog and the create-chat-sdk CLI scaffold, and adds GitLab emoji platform support.

    • a32470e: Keep literal tildes, asterisks, underscores, and backslashes as written in outgoing WhatsApp messages. A backslash escape is kept only where the text would otherwise turn into WhatsApp formatting, such as \_word\_ or a line starting with \>. Render bold, italic, and strikethrough from their AST nodes so formatting markers inside inline and fenced code stay unchanged, and send hard breaks as plain newlines. Add a handlers option to stringifyMarkdown for platform-specific serialization.

    • 228b30d: Pass the current message ID to Adapter.startTyping as TypingOptions.messageId.

  2. 4.42.0

    14 Oct 2026
    • daaa0ac: Add @chat-adapter/catalog, a zero-dependency catalog of every adapter on chat-sdk.dev. It lists official, vendor-official, and community adapters with their npm package, maintainer, README, and capability support, plus the factory export, peer dependencies, and environment variables for official and vendor-official adapters. New helpers include listAdapters(), getCatalogEntry(), and getFeatureSupport().

      The chat/adapters subpath is now deprecated. It re-exports the original API from @chat-adapter/catalog, so existing imports keep working. Its ADAPTERS keeps alphabetical key order, and its CatalogAdapter type accepts objects without the new features and readme fields. In @chat-adapter/catalog, ADAPTERS follows chat-sdk.dev listing order and CatalogAdapter requires both fields. create-chat-sdk reads adapter metadata from @chat-adapter/catalog.

      getAdapter() and listEnvVars() now return undefined and `` for inherited object keys such as "toString", instead of returning Object.prototype members.

    • fd291b8: feat(teams): let a card carry a text input

      TextInput, which modals already use, is now also a CardChild, so a user can type a reply on the card instead of opening a dialog. Teams renders it as an Adaptive Card Input.Text with the same mapping the modal converter uses, and the @chat-adapter/teams/cards subpath emits the same element. Slack, Google Chat, Discord, GitHub, and Linear show its label as text. WhatsApp, Messenger, Twilio, and X omit it, so don't make an input the only content on a card that reaches them.

      ActionEvent gains values?: Record<string, string>, the card's own input values keyed by input ID. It has the same shape as ModalSubmitEvent.values. The Teams adapter fills it from the Action.Submit payload, and it is absent on platforms with no card inputs. A button's callbackUrl POST now carries values too, so a webhook-driven flow with no onAction handler still receives what was typed.

      An input is required unless optional is set, and Teams validates every input on the card before it lets a button through, so mark it optional unless the buttons beside it should be blocked until it is filled. That validation is client-side, so treat values as user input and validate it in the handler. A Teams button with actionType: "modal" now renders with associatedInputs: "none", so it opens its dialog without waiting on the card's inputs and doesn't send them.

      Teams merges card inputs into the button's own submit data, so a card TextInput with the ID actionId, value, or msteams throws a ValidationError when the card is rendered, and the @chat-adapter/teams/cards subpath throws an Error. Modal inputs can still use actionId and value.

      CardChild gained a member, so an adapter outside this repo that exhausts the union with a never check needs a text_input case. Every in-repo converter reaches it through a default: branch instead, so none needed changing.

    • 19c7aa2: Add a handler-only onNewMessage(handler) overload for messages that reach pattern routing, including attachment-only messages without text. Invalid onNewMessage arguments now throw a ChatError at registration.

  3. 4.41.1

    28 Sep 2026
    • 6f17495: preserve streaming settings and runtime ownership when restoring threads and channels

  4. 4.41.0

    18 Sep 2026
    • ad90432: Add opt-in selection change events for Select and RadioSelect inputs in Slack modals

    • dc2a777: Add TanStack AI support. thread.post(), thread.reply(), and channel.post() accept the stream returned by TanStack's chat(), and the new chat/ai/tanstack subpath provides toTanStackMessages for thread history and createTanStackTools for the Chat SDK toolset. Neither adds a runtime dependency on @tanstack/ai; the tools require zod 4.2 or newer.

    • 139d337: Support Vercel Connect in the Teams adapter with lazy app identity resolution and custom webhook verification. Ensure custom Bot Framework and Graph token factories take precedence over client-secret environment variables.

      Add Teams to create-chat-sdk --connect and interactive Connect scaffolding, including the helper, connector environment variable, and setup documentation.

  5. 4.40.0

    5 Sep 2026
    • 4a0b5c0: Add tooltip to Button and LinkButton, and a width hint to Card. The Teams adapter and the @chat-adapter/teams/cards subpath render them as the Adaptive Card action tooltip and the msteams full-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 a callbackUrl keep their tooltip and other fields when the URL is swapped for a callback token.

    • 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.

  6. 4.39.0

    28 Aug 2026
    • 2ce2be0: Add Slack Agent Sessions lifecycle support, native stop cancellation through thread.signal, automatic session titles, and session stop/title-change events while preserving the legacy assistant_view compatibility path.

    • 169788b: Introduce the unified History API (bot.history) with user, thread, and channel scopes.

      bot.history.user replaces bot.transcripts for cross-platform per-user message persistence. The API surface is identical — migrate by changing the transcripts config key to history.user and updating call sites from bot.transcripts.* to bot.history.user.*. bot.transcripts remains available as a deprecated alias.

      bot.history.thread and bot.history.channel expose promise-based helpers for per-thread and per-channel message access, aligned with the existing thread.messages and channel.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 toPromptEntries helper converts history.user.list() entries into { role, content } messages ready for LLM prompts.

      The TranscriptEntry type is deprecated in favour of HistoryEntry. Both are exported from chat.

    • 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 new concurrency.maxLockLifetimeMs option (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.

  7. 4.38.1

    17 Aug 2026
    • 6cb933e: isolate queued and debounced messages by thread when using channel-scoped locks

    • 764e475: toPlainText keeps empty table cells so tab-separated columns stay aligned, and drops table rows with no content (such as placeholder header rows)

  8. 4.38.0

    14 Aug 2026
    • 0f24cc3: Preserve normalized replied-to message context and populate it from Telegram replies.

    • bdeb2bf: Add a workflow-safe chat/serialization entrypoint 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, with create-chat-sdk --connect scaffolding for Discord bots.

  9. 4.37.0

    7 Aug 2026
    • 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/notion for Notion page and block comment discussions: webhook HMAC verification, Post+Edit streaming, conversation history, message.subject page metadata, plain-text @userName/@botUserId mention detection, and File Uploads (up to 3 native attachments). Registers the adapter in the chat/adapters catalog and create-chat-sdk CLI scaffold, and adds Notion emoji platform support.

  10. 4.36.0

    1 Aug 2026
    • c5d86b1: confine built-in agent read tools to the conversation being handled, with an optional scope override

    • 0153a39: Add DateInput and NumberInput modal children. The Slack adapter renders them as a datepicker and a number_input, the Teams adapter as Input.Date and Input.Number, and both submitted values arrive in event.values as strings.

      Teams submit values that arrive as JSON numbers are now stringified into event.values instead of being dropped. This fixes Input.Number, but applies to any numeric value a Teams dialog submits — a key that was previously absent from event.values will now be present as a string.

    • 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.

  11. 4.35.0

    24 Jul 2026
    • 4cb7e5d: Add a chat/workflow subpath with requestApproval(): 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 the buildApprovalCard and buildResolvedCard builders. Requires the new optional workflow peer 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.

    • 80def3a: Add optional isSystem field to the normalized message Author type to distinguish platform-generated messages from humans and bots. The Slack adapter now sets isSystem: true for messages authored by Slack's reserved USLACK user (e.g. "@user archived the channel" notifications in DMs), so consumers no longer need to hard-code Slack-specific user IDs.

  12. 4.34.0

    13 Jul 2026

    Reading the note…

  13. 4.33.0

    7 Jul 2026

    Reading the note…

  14. 4.32.0

    1 Jul 2026

    Reading the note…

  15. 4.31.0

    16 Jun 2026

    Reading the note…

  16. 4.30.0

    2 Jun 2026

    Reading the note…

  17. 4.29.0

    18 May 2026

    Reading the note…

  18. 4.28.1

    8 May 2026

    Reading the note…

  19. 4.27.0

    30 Apr 2026

    Reading the note…

  20. 4.26.0

    14 Apr 2026

    Reading the note…

  21. 4.25.0

    11 Apr 2026

    Reading the note…

  22. 4.24.0

    7 Apr 2026

    Reading the note…

  23. 4.23.0

    26 Mar 2026

    Reading the note…

  24. 4.22.0

    24 Mar 2026

    Reading the note…

  25. 4.21.0

    23 Mar 2026

    Reading the note…

  26. 4.20.2

    16 Mar 2026

    Reading the note…

  27. 4.20.1

    12 Mar 2026

    Reading the note…

  28. 4.20.0

    11 Mar 2026

    Reading the note…

  29. 4.19.0

    10 Mar 2026

    Reading the note…

  30. 4.18.0

    7 Mar 2026

    Reading the note…

  31. 4.17.0

    6 Mar 2026

    Reading the note…

  32. 4.16.1

    4 Mar 2026

    Reading the note…

  33. 4.16.0

    4 Mar 2026

    Reading the note…

  34. 4.15.0

    26 Feb 2026

    Reading the note…

  35. 4.14.0

    24 Feb 2026

    Reading the note…

  36. 4.13.4

    24 Feb 2026

    Reading the note…

  37. 4.13.3

    23 Feb 2026

    Reading the note…

  38. 4.13.2

    23 Feb 2026

    Reading the note…

  39. 4.13.1

    20 Feb 2026

    Reading the note…

  40. 4.13.0

    20 Feb 2026

    Reading the note…

  41. 4.12.0

    18 Feb 2026

    Reading the note…

  42. 4.11.0

    16 Feb 2026

    Reading the note…

  43. 4.10.1

    15 Feb 2026

    Reading the note…

  44. 4.10.0

    15 Feb 2026

    Reading the note…

  45. 4.9.1

    12 Feb 2026

    Reading the note…

  46. 4.9.0

    10 Feb 2026

    Reading the note…

  47. 4.8.0

    6 Feb 2026

    Reading the note…

  48. 4.7.2

    6 Feb 2026

    Reading the note…

  49. 4.7.1

    24 Jan 2026

    Reading the note…

  50. 4.7.0

    23 Jan 2026

    Reading the note…