Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Oct 29, 2024

Note: This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
@slack/bolt (source) ^3.13.2 -> ^4.0.0 age confidence

Release Notes

slackapi/bolt-js (@​slack/bolt)

v4.6.0

Compare Source

📚 Changelog

What's Changed

👾 Enhancements
🐛 Bug fixes
📚 Documentation
🤖 Dependencies
🧰 Maintenance

Milestone: https://github.com/slackapi/bolt-js/milestone/60?closed=1
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/[email protected]...@​slack/[email protected]
Package: https://www.npmjs.com/package/@​slack/bolt/v/4.6.0

v4.5.0

Compare Source

AI-Enabled Features: Loading States, Text Streaming, and Feedback Buttons

🍿 Preview
2025-10-06-loading-state-text-streaming-feedback.mov
📚 Changelog
⚡ Getting Started

Try the AI Agent Sample app to explore the AI-enabled features and existing Assistant helper:

### Create a new AI Agent app
$ slack create slack-ai-agent-app --template slack-samples/bolt-js-assistant-template
$ cd slack-ai-agent-app/

### Add your OPENAI_API_KEY
$ export OPENAI_API_KEY=sk-proj-ahM...

### Run the local dev server
$ slack run

After the app starts, send a message to the "slack-ai-agent-app" bot for a unique response.

⌛ Loading States

Loading states allows you to not only set the status (e.g. "My app is typing...") but also sprinkle some personality by cycling through a collection of loading messages:

Web Client SDK:
app.event('message', async ({ client, context, event, logger }) => {
    // ...
    await client.assistant.threads.setStatus({
        channel_id: channelId,
        thread_ts: threadTs,
        status: 'thinking...',
        loading_messages: [
            'Teaching the hamsters to type faster…',
            'Untangling the internet cables…',
            'Consulting the office goldfish…',
            'Polishing up the response just for you…',
            'Convincing the AI to stop overthinking…',
        ],
    });

    // Start a new message stream
});
Assistant Class:
const assistant = new Assistant({
    threadStarted: assistantThreadStarted,
    threadContextChanged: assistantThreadContextChanged,
    userMessage: async ({ client, context, logger, message, getThreadContext, say, setTitle, setStatus }) => {
        await setStatus({
            status: 'thinking...',
            loading_messages: [
                'Teaching the hamsters to type faster…',
                'Untangling the internet cables…',
                'Consulting the office goldfish…',
                'Polishing up the response just for you…',
                'Convincing the AI to stop overthinking…',
            ],
        });
    },
});
🔮 Text Streaming Helper

The client.chatStream() helper utility can be used to streamline calling the 3 text streaming methods:

app.event('message', async ({ client, context, event, logger }) => {
    // ...

    // Start a new message stream
    const streamer = client.chatStream({
        channel: channelId,
        recipient_team_id: teamId,
        recipient_user_id: userId,
        thread_ts: threadTs,
    });

    // Loop over OpenAI response stream
    // https://platform.openai.com/docs/api-reference/responses/create
    for await (const chunk of llmResponse) {
        if (chunk.type === 'response.output_text.delta') {
            await streamer.append({
                markdown_text: chunk.delta,
            });
        }
    }

    // Stop the stream and attach feedback buttons
    await streamer.stop({ blocks: [feedbackBlock] });
});
🔠 Text Streaming Methods

Alternative to the Text Streaming Helper is to call the individual methods.

1) client.chat.startStream

First, start a chat text stream to stream a response to any message:

app.event('message', async ({ client, context, event, logger }) => {
    // ...
    const streamResponse = await client.chat.startStream({
        channel: channelId,
        recipient_team_id: teamId,
        recipient_user_id: userId,
        thread_ts: threadTs,
    });

    const streamTs = streamResponse.ts
2) client.chat.appendStream

After starting a chat text stream, you can then append text to it in chunks (often from your favourite LLM SDK) to convey a streaming effect:

for await (const chunk of llmResponse) {
    if (chunk.type === 'response.output_text.delta') {
        await client.chat.appendSteam({
            channel: channelId,
            markdown_text: chunk.delta,
            ts: streamTs,
        });
    }
}
3) client.chat.stopStream

Lastly, you can stop the chat text stream to finalize your message:

await client.chat.stopStream({
    blocks: [feedbackBlock],
    channel: channelId,
    ts: streamTs,
});
👍🏻 Feedback Buttons

Add feedback buttons to the bottom of a message, after stopping a text stream, to gather user feedback:

const feedbackBlock = {
    type: 'context_actions',
    elements: [{
        type: 'feedback_buttons',
        action_id: 'feedback',
        positive_button: {
            text: { type: 'plain_text', text: 'Good Response' },
            accessibility_label: 'Submit positive feedback on this response',
            value: 'good-feedback',
        },
        negative_button: {
            text: { type: 'plain_text', text: 'Bad Response' },
            accessibility_label: 'Submit negative feedback on this response',
            value: 'bad-feedback',
        },
    }],
};

// Using the Text Streaming Helper
await streamer.stop({ blocks: [feedbackBlock] });
// Or, using the Text Streaming Method
await client.chat.stopStream({
    blocks: [feedbackBlock],
    channel: channelId,
    ts: streamTs,
});

What's Changed

👾 Enhancements
  • feat: add ai-enabled features text streaming methods, feedback blocks, and loading state in #​2674 - Thanks @​zimeg!
🐛 Bug fixes
  • Fix: allows Assistant say function to properly pass metadata in #​2569 - Thanks @​jamessimone!
  • refactor: check payload type before extracting assistant thread info in #​2603 - Thanks @​zimeg!
  • fix: better ES module support for App class in #​2632 - Thanks @​malewis5!
  • fix(typescript): accept empty list of suggested prompts for the assistant class in #​2650 - Thanks @​zimeg!
📚 Documentation
🤖 Dependencies
🧰 Maintaince

New Contributors 🎉

Milestone: https://github.com/slackapi/bolt-js/milestone/59?closed=1
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/[email protected]...@​slack/[email protected]
Package: https://www.npmjs.com/package/@​slack/bolt/v/4.5.0

v4.4.0

Compare Source

What's Changed

🚀 Features
🐛 Fixes
🧰 Maintenance
🤖 Dependencies

Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/[email protected]...@​slack/[email protected]
Milstone: https://github.com/slackapi/bolt-js/milestone/58?closed=1

v4.3.0

Compare Source

What's Changed

🐛 Fixes

📚 Documentation

🧰 Maintenance

  • ci: label updates to example app dependencies with an 'area:examples' label by @​zimeg in #​2485
  • ci: increase updated versions to depend on the latest releases by @​zimeg in #​2468

🤖 Dependencies

Thank you to all our lovely contributors ✨

Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/[email protected]...@​slack/[email protected]

v4.2.1

Compare Source

What's Changed

🐛 Fixes

📚 Documentation

🧰 Maintenance

🤖 Dependencies


Configuration

📅 Schedule: Branch creation - "after 7am and before 11am every weekday" in timezone Europe/London, Automerge - At any time (no schedule defined).

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


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@hmcts-platform-operations
Copy link

hmcts-platform-operations commented Aug 10, 2025

Plan Result (924: sds_ptl - TerraformPlanApply)

⚠️ Resource Deletion will happen

This plan contains resource delete operation. Please check the plan result very carefully!

Plan: 1 to add, 3 to change, 1 to destroy.
  • Update
    • azurerm_monitor_action_group.action_group
    • azurerm_user_assigned_identity.this
    • azurerm_windows_function_app.this
  • Replace
    • module.application_insights.azurerm_monitor_activity_log_alert.main[0]
Change Result (Click me)
  # data.azurerm_function_app_host_keys.host_keys will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "azurerm_function_app_host_keys" "host_keys" {
      + blobs_extension_key             = (sensitive value)
      + default_function_key            = (sensitive value)
      + durabletask_extension_key       = (sensitive value)
      + event_grid_extension_config_key = (sensitive value)
      + event_grid_extension_key        = (sensitive value)
      + id                              = (known after apply)
      + name                            = "sds-alerts-slack-ptl"
      + primary_key                     = (sensitive value)
      + resource_group_name             = "sds-alerts-slack-ptl"
      + signalr_extension_key           = (sensitive value)
      + webpubsub_extension_key         = (sensitive value)
    }

  # azurerm_monitor_action_group.action_group will be updated in-place
  ~ resource "azurerm_monitor_action_group" "action_group" {
        id                  = "/subscriptions/6c4d2513-a873-41b4-afdd-b05a33206631/resourceGroups/sds-alerts-slack-ptl/providers/Microsoft.Insights/actionGroups/sds-alerts-slack-warning-alerts"
        name                = "sds-alerts-slack-warning-alerts"
        tags                = {
            "application"  = "core"
            "builtFrom"    = "hmcts/azure-alert-to-slack-function"
            "businessArea" = "Cross-Cutting"
            "criticality"  = "High"
            "environment"  = "production"
        }
        # (4 unchanged attributes hidden)

      ~ azure_function_receiver {
          ~ http_trigger_url         = (sensitive value)
            name                     = "slack-alerts"
            # (3 unchanged attributes hidden)
        }
    }

  # azurerm_user_assigned_identity.this will be updated in-place
  ~ resource "azurerm_user_assigned_identity" "this" {
        id                  = "/subscriptions/6c4d2513-a873-41b4-afdd-b05a33206631/resourceGroups/sds-alerts-slack-ptl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sds-alerts-slack-ptl"
        name                = "sds-alerts-slack-ptl"
      ~ tags                = {
          - "application"  = "core" -> null
          - "builtFrom"    = "hmcts/azure-alert-to-slack-function" -> null
          - "businessArea" = "Cross-Cutting" -> null
          - "environment"  = "production" -> null
        }
        # (5 unchanged attributes hidden)
    }

  # azurerm_windows_function_app.this will be updated in-place
  ~ resource "azurerm_windows_function_app" "this" {
      # Warning: this attribute value will no longer be marked as sensitive
      # after applying this change. The value is unchanged.
      ~ app_settings                                   = (sensitive value)
        id                                             = "/subscriptions/6c4d2513-a873-41b4-afdd-b05a33206631/resourceGroups/sds-alerts-slack-ptl/providers/Microsoft.Web/sites/sds-alerts-slack-ptl"
        name                                           = "sds-alerts-slack-ptl"
        tags                                           = {
            "application"  = "core"
            "builtFrom"    = "hmcts/azure-alert-to-slack-function"
            "businessArea" = "Cross-Cutting"
            "criticality"  = "High"
            "environment"  = "production"
        }
        # (33 unchanged attributes hidden)

        # (3 unchanged blocks hidden)
    }

  # module.application_insights.azurerm_monitor_activity_log_alert.main[0] must be replaced
-/+ resource "azurerm_monitor_activity_log_alert" "main" {
      ~ id                  = "/subscriptions/6c4d2513-a873-41b4-afdd-b05a33206631/resourceGroups/sds-alerts-slack-ptl/providers/Microsoft.Insights/activityLogAlerts/Application Insights daily cap reached - sds-alerts-ptl" -> (known after apply)
      ~ name                = "Application Insights daily cap reached - sds-alerts-ptl" -> "Application-Insights-daily-cap-reached-sds-alerts-ptl" # forces replacement
        tags                = {
            "application"  = "core"
            "builtFrom"    = "hmcts/azure-alert-to-slack-function"
            "businessArea" = "Cross-Cutting"
            "criticality"  = "High"
            "environment"  = "production"
        }
        # (5 unchanged attributes hidden)

      ~ criteria {
          - levels                  = [] -> null
          - resource_groups         = [] -> null
          - resource_ids            = [] -> null
          - resource_providers      = [] -> null
          - resource_types          = [] -> null
          - statuses                = [] -> null
          - sub_statuses            = [] -> null
            # (13 unchanged attributes hidden)

          ~ resource_health (known after apply)

          ~ service_health (known after apply)
        }

        # (1 unchanged block hidden)
    }

Plan: 1 to add, 3 to change, 1 to destroy.

@hmcts-platform-operations
Copy link

hmcts-platform-operations commented Aug 10, 2025

Plan Result (924: cft_ptl - TerraformPlanApply)

⚠️ Resource Deletion will happen

This plan contains resource delete operation. Please check the plan result very carefully!

Plan: 1 to add, 3 to change, 1 to destroy.
  • Update
    • azurerm_monitor_action_group.action_group
    • azurerm_user_assigned_identity.this
    • azurerm_windows_function_app.this
  • Replace
    • module.application_insights.azurerm_monitor_activity_log_alert.main[0]
Change Result (Click me)
  # data.azurerm_function_app_host_keys.host_keys will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "azurerm_function_app_host_keys" "host_keys" {
      + blobs_extension_key             = (sensitive value)
      + default_function_key            = (sensitive value)
      + durabletask_extension_key       = (sensitive value)
      + event_grid_extension_config_key = (sensitive value)
      + event_grid_extension_key        = (sensitive value)
      + id                              = (known after apply)
      + name                            = "cft-alerts-slack-ptl"
      + primary_key                     = (sensitive value)
      + resource_group_name             = "cft-alerts-slack-ptl"
      + signalr_extension_key           = (sensitive value)
      + webpubsub_extension_key         = (sensitive value)
    }

  # azurerm_monitor_action_group.action_group will be updated in-place
  ~ resource "azurerm_monitor_action_group" "action_group" {
        id                  = "/subscriptions/1baf5470-1c3e-40d3-a6f7-74bfbce4b348/resourceGroups/cft-alerts-slack-ptl/providers/Microsoft.Insights/actionGroups/cft-alerts-slack-warning-alerts"
        name                = "cft-alerts-slack-warning-alerts"
        tags                = {
            "application"  = "core"
            "builtFrom"    = "hmcts/azure-alert-to-slack-function"
            "businessArea" = "CFT"
            "criticality"  = "High"
            "environment"  = "production"
        }
        # (4 unchanged attributes hidden)

      ~ azure_function_receiver {
          ~ http_trigger_url         = (sensitive value)
            name                     = "slack-alerts"
            # (3 unchanged attributes hidden)
        }
    }

  # azurerm_user_assigned_identity.this will be updated in-place
  ~ resource "azurerm_user_assigned_identity" "this" {
        id                  = "/subscriptions/1baf5470-1c3e-40d3-a6f7-74bfbce4b348/resourceGroups/cft-alerts-slack-ptl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cft-alerts-slack-ptl"
        name                = "cft-alerts-slack-ptl"
      ~ tags                = {
          - "application"  = "core" -> null
          - "builtFrom"    = "hmcts/azure-alert-to-slack-function" -> null
          - "businessArea" = "CFT" -> null
          - "environment"  = "production" -> null
        }
        # (5 unchanged attributes hidden)
    }

  # azurerm_windows_function_app.this will be updated in-place
  ~ resource "azurerm_windows_function_app" "this" {
      # Warning: this attribute value will no longer be marked as sensitive
      # after applying this change. The value is unchanged.
      ~ app_settings                                   = (sensitive value)
        id                                             = "/subscriptions/1baf5470-1c3e-40d3-a6f7-74bfbce4b348/resourceGroups/cft-alerts-slack-ptl/providers/Microsoft.Web/sites/cft-alerts-slack-ptl"
        name                                           = "cft-alerts-slack-ptl"
        tags                                           = {
            "application"  = "core"
            "builtFrom"    = "hmcts/azure-alert-to-slack-function"
            "businessArea" = "CFT"
            "criticality"  = "High"
            "environment"  = "production"
        }
        # (33 unchanged attributes hidden)

        # (3 unchanged blocks hidden)
    }

  # module.application_insights.azurerm_monitor_activity_log_alert.main[0] must be replaced
-/+ resource "azurerm_monitor_activity_log_alert" "main" {
      ~ id                  = "/subscriptions/1baf5470-1c3e-40d3-a6f7-74bfbce4b348/resourceGroups/cft-alerts-slack-ptl/providers/Microsoft.Insights/activityLogAlerts/Application Insights daily cap reached - cft-alerts-ptl" -> (known after apply)
      ~ name                = "Application Insights daily cap reached - cft-alerts-ptl" -> "Application-Insights-daily-cap-reached-cft-alerts-ptl" # forces replacement
        tags                = {
            "application"  = "core"
            "builtFrom"    = "hmcts/azure-alert-to-slack-function"
            "businessArea" = "CFT"
            "criticality"  = "High"
            "environment"  = "production"
        }
        # (5 unchanged attributes hidden)

      ~ criteria {
          - levels                  = [] -> null
          - resource_groups         = [] -> null
          - resource_ids            = [] -> null
          - resource_providers      = [] -> null
          - resource_types          = [] -> null
          - statuses                = [] -> null
          - sub_statuses            = [] -> null
            # (13 unchanged attributes hidden)

          ~ resource_health (known after apply)

          ~ service_health (known after apply)
        }

        # (1 unchanged block hidden)
    }

Plan: 1 to add, 3 to change, 1 to destroy.

@renovate renovate bot force-pushed the renovate/slack-bolt-4.x branch from 8aafcce to 6b68982 Compare December 3, 2025 18:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant