Packages

@chat-adapter/slack

4.43.0 · 19 Oct 2026MIT672.1k / weekRepositoryHomepagenpmAtom feed

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

  1. 4.43.0

    19 Oct 2026
    • 7881071: Stop treating a bot reference as a mention when the rendered message shows it only as text. Slack sends an app_mention event for the bot's <@U…> token anywhere in a message's text field, including inside inline code or a code block, even when the message shows no mention. The adapter now reports isMention: false for these messages, so they no longer reach onNewMention.

      When an app_mention doesn't reference the bot's known user ID, the adapter treats it as a mention only if the rendered message shows a mention of some user outside code. This covers the W… IDs that Enterprise Grid workspaces can use for the bot. The same rule now applies when the bot user ID hasn't been resolved yet, where the adapter previously treated every app_mention as a mention.

      For messages whose blocks are Block Kit rather than rich_text, such as a header or section posted by an integration, the adapter now reads a bot token in text outside code as a mention when the blocks don't show the bot. This applies to both app_mention and message events, so the two events for the same message are classified the same way.

    • 48bb905: Read the body of a Block Kit message from its blocks. When a message carries blocks, Slack renders them and uses text only as the notification fallback, so message.text and message.formatted could miss content an app or workflow placed in the blocks, including the request in a mention that reached onNewMention. When every block is a section, header, context, image, divider, actions, or table block, the text in those blocks now forms the body in block order, with tables in place and links from mrkdwn text in message.links. Messages with any other block type, including the rich_text blocks a Slack client sends, keep using text, so content the adapter can't render still reaches the message.

  2. 4.42.0

    14 Oct 2026
    • 7b7d73c: Add a visibleTo option to Button and LinkButton that lists the user IDs allowed to see the button. The Slack adapter renders it as visible_to_user_ids. Other adapters ignore it and show the button to everyone. It only hides the button, so action handlers still need to check who clicked.

    • c70379b: Return every message ID from SlackAdapter.stream(). When a long reply rotates into several messages, the result now includes messageIds, which lists the messages of the reply in order. Its last entry is id. The new SlackStreamResult type describes the result.

    • f923b1c: Add a blocks option to uploadSlackFiles so the message that shares the uploaded files can carry Block Kit blocks. Slack renders the files below the blocks. Passing both blocks and initialComment throws a TypeError, since Slack would silently ignore blocks.

  3. 4.41.1

    28 Sep 2026
    • 44423bd: Convert Slack special mentions (<!here>, <!channel>, <!everyone>) and user group mentions (<!subteam^ID|@handle>) to readable text in inbound messages.

  4. 4.41.0

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

    • 6adca36: Support Slack egress proxies across Socket Mode, response URLs, webhook forwarding, and guarded file downloads with adapter-scoped transport options.

    • 683eadc: Read the bot's mention from the message content instead of trusting the app_mention event type.

      Slack can deliver app_mention for a message whose bot-id reference only appears inside code, where it renders literally and is not an invocation. The adapter now classifies the content the way Slack renders it: a user element for the bot, or a <@U…> token in mrkdwn content, is a mention. Inline code (style.code), preformatted elements, rich-text text elements, link labels, and raw_text table cells render literally and are not mentions.

      When a message carries blocks, they model its body and the flattened text field is not consulted, because it loses the code/literal distinction. A message whose content was inspected and holds no mention reports isMention: false, even when the bot's display name appears as plain text. The synchronous parseMessage path classifies the same way, so the pre-edit snapshot of an edited message agrees with the edited message.

      An app_mention event whose content never shows the known bot id is still trusted, because Slack saw a mention under an id the adapter does not know (for example the W… id an Enterprise Grid workspace emits). When the adapter cannot identify the bot at all (botUserId unresolved), app_mention is trusted the same way and other messages stay undetermined.

      raw_text table cells now render literally, matching how they are classified: Slack reserves mentions and links for rich_text cells, so a <@U…> token in a raw_text cell no longer resolves to a display name.

  5. 4.40.0

    5 Sep 2026
    • 51322dd: Decode the bot's own mention in incoming Slack messages. The adapter now resolves <@U_BOT> to the bot's display name (@<DisplayName>) the same way it resolves every other user mention, instead of leaving the raw user-ID markup in place, and sets isMention on the parsed message by detecting the bot's ID in the raw event text. This keeps message.text self-describing for downstream consumers (LLM prompts, classifiers) while preserving mention detection, which previously depended on the raw ID markup surviving in the text.

    • d4a1f03: Rotate long-running native Slack streams before Slack expires them. Once a stream segment passes streamSegmentMaxAgeMs (default four minutes) the adapter finalizes it at the next paragraph break and continues the reply in a new message, closing and reopening code fences, repeating table headers, replaying open task cards and the plan title, and keeping the agent session in processing. A segment Slack already expired during an idle gap is recovered the same way instead of failing the reply.

    • 2cc8cc3: Surface custom status text in the Agent messaging experience. startTyping and setAssistantStatus with a custom status now call the legacy assistant.threads.setStatus endpoint, whose compatibility bridge renders the text in the agent-session loading UX — instead of silently dropping the text and showing the generic "Working…" indicator. Clearing (empty status) still transitions the session to active via the Agent Sessions lifecycle.

  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.

    • 864d922: Keep alert attachment content on normalized Slack messages. Attachments that aren't link unfurls now contribute their pretext, title (linked to title_link when present, with the URL also surfaced in message.links), text, and fields instead of being dropped; fallback fills in when nothing else on the attachment carries content. Matching how Slack renders these fields, they are treated as plain text unless listed in the attachment's mrkdwn_in array, so literal *, _, and backticks in alert text survive normalization. Tables inside attachment blocks now stay adjacent to their attachment's text.

      Because attachment content is part of message.text, mention detection and onMessage pattern handlers see it too: an attachment that quotes the bot's mention routes to onNewMention, and patterns match alert text. Handlers that should ignore other integrations' alerts can check message.author.isBot.

    • 7c26965: prevent attachment downloads from sending credentials to untrusted hosts

  7. 4.38.1

    17 Aug 2026
    • 764e475: preserve pasted Slack tables in parsed message content: table and data_table blocks become structured table nodes in message.formatted and tab-separated text in message.text. Table cells render mentions, channels, and links through the same mrkdwn converter as body text, unfurl and app attachments are excluded, date cells without a fallback are formatted from their timestamp, and tables pasted above the message text stay above it. Headerless pasted tables get an empty header row so GFM re-serialization doesn't promote the first data row to a header. SlackEvent.blocks is now typed with the exported SlackMessageBlock interface.

  8. 4.38.0

    14 Aug 2026

    Only updates dependencies:chat 4.38.0@chat-adapter/shared 4.38.0

  9. 4.37.0

    7 Aug 2026
    • 4ac0455: Add message update and delete lifecycle callbacks, with Slack message_changed and message_deleted dispatch support.

    • 6f0d2f0: Resolve outgoing @name mentions on the Slack native streaming path so streamed responses mention users consistently with the post-and-edit fallback. Committed renderer text is resolved incrementally, keeping fenced code literal and preserving the existing ambiguity semantics.

    • 4cc3445: Bound the length of bracketed URLs parsed from message text in the link-unfurl fallback, avoiding a quadratic scan on adversarial input. Valid links are unaffected.

  10. 4.36.0

    1 Aug 2026
    • 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.

  11. 4.35.0

    24 Jul 2026
    • bb7cd12: Expose sender email addresses on normalized incoming Slack message authors. message.author.email is populated from the same cached users.info lookup used for display names and requires the users:read.email scope; without it the field stays undefined.

    • 907450d: Enterprise Grid fixes:

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