releases.shpreview

v3.40.0

$npx -y @buildinternet/releases show rel_M9FAJbNiJt40Cfljalw0j
<!-- Release notes generated using configuration in .github/release.yml at main -->

Agent Thinking Steps: Display Tasks/Tools, Plans, and Markdown Text

đŸŋ Preview: Display as Plan

https://github.com/user-attachments/assets/85219072-66ac-4d86-a18b-dd92689036ea

đŸŋ Preview: Display as Timeline

https://github.com/user-attachments/assets/4cb0bb5f-c70f-4304-b875-4dc262640a67

đŸ“ē Chat Stream with 2 Display Mode

  • Plan Display Mode
  • Timeline Display Mode

👾 Chat Stream Structured Content

Now, you can display a mixture of structured content called "chunks":

  • 🔠 Markdown Text Block to format your text with standard markdown
  • â˜‘ī¸ Task Card Block to display a single task, representing an AI Tool Call or general action
  • đŸ—’ī¸ Plan Block to display a collection of related tasks
  • 📚 URL Sources Element to display references within a task card block

Available in:

  • 🔌 API Methods: chat_startStream, chat_appendStream, and chat_stopStream
  • 🛟 Chat Stream Helper: streamer = client.chat_stream(...), streamer.append(...)

📖 Documentation

đŸŋ Getting Started

$ slack create

# → AI Agent App
#     Bolt for JavaScript
#   → Bolt for Python

đŸ•šī¸ Example

streamer = client.chat_stream(
    channel=channel_id,
    recipient_team_id=team_id,
    recipient_user_id=user_id,
    thread_ts=thread_ts,
    task_display_mode="plan",
)

streamer.append(
    chunks=[
        MarkdownTextChunk(
            text="Hello.\nI have received the task. ",
        ),
        MarkdownTextChunk(
            text="This task appears manageable.\nThat is good.",
        ),
        TaskUpdateChunk(
            id="001",
            title="Understanding the task...",
            status="in_progress",
            details="- Identifying the goal\n- Identifying constraints",
        ),
        TaskUpdateChunk(
            id="002",
            title="Performing acrobatics...",
            status="pending",
        ),
    ],
)

time.sleep(4)

streamer.append(
    chunks=[
        PlanUpdateChunk(
            title="Adding the final pieces...",
        ),
        TaskUpdateChunk(
            id="001",
            title="Understanding the task...",
            status="complete",
            details="\n- Pretending this was obvious",
            output="We'll continue to ramble now",
        ),
        TaskUpdateChunk(
            id="002",
            title="Performing acrobatics...",
            status="in_progress",
        ),
    ],
)

time.sleep(4)

streamer.stop(
    chunks=[
        PlanUpdateChunk(
            title="Decided to put on a show",
        ),
        TaskUpdateChunk(
            id="002",
            title="Performing acrobatics...",
            status="complete",
            details="- Jumped atop ropes\n- Juggled bowling pins\n- Rode a single wheel too",
        ),
        MarkdownTextChunk(
            text="The crowd appears to be astounded and applauds :popcorn:"
        ),
    ],
    blocks=create_feedback_block(),
)

What's Changed

🚀 Enhancements

🐛 Bug Fixes

📚 Documentation

đŸ“Ļ Dependencies

🧰 Maintenance

Full Changelog: https://github.com/slackapi/python-slack-sdk/compare/v3.39.0...v3.40.0 Milestone: https://github.com/slackapi/python-slack-sdk/milestone/115

Fetched April 3, 2026