Skip to content

Commit f7122e5

Browse files
committed
feat: use BoltAgent for chat_stream in all implementations
1 parent ca610f7 commit f7122e5

9 files changed

Lines changed: 30 additions & 45 deletions

File tree

claude-agent-sdk/listeners/events/app_mentioned.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import re
33
from logging import Logger
44

5+
from slack_bolt.agent.async_agent import AsyncBoltAgent
56
from slack_bolt.context.say.async_say import AsyncSay
67
from slack_sdk.web.async_client import AsyncWebClient
78

@@ -22,7 +23,7 @@
2223

2324

2425
async def handle_app_mentioned(
25-
client: AsyncWebClient, event: dict, logger: Logger, say: AsyncSay
26+
client: AsyncWebClient, event: dict, agent: AsyncBoltAgent, logger: Logger, say: AsyncSay
2627
):
2728
"""Handle @Casey mentions in channels."""
2829
try:
@@ -73,9 +74,9 @@ async def handle_app_mentioned(
7374
)
7475

7576
# Stream response in thread with feedback buttons
76-
streamer = await client.chat_stream(
77+
streamer = await agent.chat_stream(
7778
channel=channel_id,
78-
recipient_team_id=team_id,
79+
recipient_team_id=team_id, # chat_stream helper cannot infer event["team"] from client
7980
recipient_user_id=user_id,
8081
thread_ts=thread_ts,
8182
)

claude-agent-sdk/listeners/events/message.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import random
22
from logging import Logger
33

4+
from slack_bolt.agent.async_agent import AsyncBoltAgent
45
from slack_bolt.context.say.async_say import AsyncSay
56
from slack_sdk.web.async_client import AsyncWebClient
67

@@ -21,7 +22,7 @@
2122

2223

2324
async def handle_message(
24-
client: AsyncWebClient, event: dict, logger: Logger, say: AsyncSay
25+
client: AsyncWebClient, event: dict, agent: AsyncBoltAgent, logger: Logger, say: AsyncSay
2526
):
2627
"""Handle direct messages sent to Casey."""
2728
# Skip bot messages and message subtypes (edits, deletes, etc.)
@@ -34,7 +35,6 @@ async def handle_message(
3435

3536
try:
3637
channel_id = event["channel"]
37-
team_id = event.get("team")
3838
text = event.get("text", "")
3939
thread_ts = event.get("thread_ts") or event["ts"]
4040
user_id = event.get("user")
@@ -70,12 +70,7 @@ async def handle_message(
7070
)
7171

7272
# Stream response in thread with feedback buttons
73-
streamer = await client.chat_stream(
74-
channel=channel_id,
75-
recipient_team_id=team_id,
76-
recipient_user_id=user_id,
77-
thread_ts=thread_ts,
78-
)
73+
streamer = await agent.chat_stream()
7974
await streamer.append(markdown_text=response_text)
8075
feedback_blocks = create_feedback_block()
8176
await streamer.stop(blocks=feedback_blocks)

claude-agent-sdk/listeners/views/issue_modal.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from logging import Logger
22

33
from slack_bolt import Ack
4+
from slack_bolt.agent.async_agent import AsyncBoltAgent
45
from slack_sdk.web.async_client import AsyncWebClient
56

67
from agent import run_casey_agent
@@ -9,7 +10,7 @@
910

1011

1112
async def handle_issue_submission(
12-
ack: Ack, body: dict, client: AsyncWebClient, logger: Logger
13+
ack: Ack, body: dict, client: AsyncWebClient, agent: AsyncBoltAgent, logger: Logger
1314
):
1415
"""Handle modal submission: open DM, post issue, and run Casey agent."""
1516
await ack()
@@ -60,7 +61,7 @@ async def handle_issue_submission(
6061
response_text, new_session_id = await run_casey_agent(user_message)
6162

6263
# Stream the response in thread with feedback buttons
63-
streamer = await client.chat_stream(
64+
streamer = await agent.chat_stream(
6465
channel=channel_id,
6566
recipient_team_id=team_id,
6667
recipient_user_id=user_id,

openai-agents-sdk/listeners/events/app_mentioned.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from logging import Logger
44

55
from agents import Runner
6-
from slack_bolt import Say
6+
from slack_bolt import BoltAgent, Say
77
from slack_sdk import WebClient
88

99
from agent import CaseyDeps, casey_agent
@@ -22,7 +22,7 @@
2222
CONTEXTUAL_EMOJIS = ["+1", "raised_hands", "rocket", "tada", "bulb", "fire"]
2323

2424

25-
def handle_app_mentioned(client: WebClient, event: dict, logger: Logger, say: Say):
25+
def handle_app_mentioned(client: WebClient, event: dict, agent: BoltAgent, logger: Logger, say: Say):
2626
"""Handle @Casey mentions in channels."""
2727
try:
2828
channel_id = event["channel"]
@@ -81,9 +81,9 @@ def handle_app_mentioned(client: WebClient, event: dict, logger: Logger, say: Sa
8181
result = Runner.run_sync(casey_agent, input=input_items, context=deps)
8282

8383
# Stream response in thread with feedback buttons
84-
streamer = client.chat_stream(
84+
streamer = agent.chat_stream(
8585
channel=channel_id,
86-
recipient_team_id=team_id,
86+
recipient_team_id=team_id, # chat_stream helper cannot infer event["team"] from client
8787
recipient_user_id=user_id,
8888
thread_ts=thread_ts,
8989
)

openai-agents-sdk/listeners/events/message.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from logging import Logger
33

44
from agents import Runner
5-
from slack_bolt import Say
5+
from slack_bolt import BoltAgent, Say
66
from slack_sdk import WebClient
77

88
from agent import CaseyDeps, casey_agent
@@ -21,7 +21,7 @@
2121
CONTEXTUAL_EMOJIS = ["+1", "raised_hands", "rocket", "tada", "bulb", "fire"]
2222

2323

24-
def handle_message(client: WebClient, event: dict, logger: Logger, say: Say):
24+
def handle_message(client: WebClient, event: dict, agent: BoltAgent, logger: Logger, say: Say):
2525
"""Handle direct messages sent to Casey."""
2626
# Skip bot messages and message subtypes (edits, deletes, etc.)
2727
if event.get("bot_id") or event.get("subtype"):
@@ -33,7 +33,6 @@ def handle_message(client: WebClient, event: dict, logger: Logger, say: Say):
3333

3434
try:
3535
channel_id = event["channel"]
36-
team_id = event.get("team")
3736
text = event.get("text", "")
3837
thread_ts = event.get("thread_ts") or event["ts"]
3938
user_id = event["user"]
@@ -79,12 +78,7 @@ def handle_message(client: WebClient, event: dict, logger: Logger, say: Say):
7978
result = Runner.run_sync(casey_agent, input=input_items, context=deps)
8079

8180
# Stream response in thread with feedback buttons
82-
streamer = client.chat_stream(
83-
channel=channel_id,
84-
recipient_team_id=team_id,
85-
recipient_user_id=user_id,
86-
thread_ts=thread_ts,
87-
)
81+
streamer = agent.chat_stream()
8882
streamer.append(markdown_text=result.final_output)
8983
feedback_blocks = create_feedback_block()
9084
streamer.stop(blocks=feedback_blocks)

openai-agents-sdk/listeners/views/issue_modal.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
from logging import Logger
22

33
from agents import Runner
4-
from slack_bolt import Ack
4+
from slack_bolt import Ack, BoltAgent
55
from slack_sdk import WebClient
66

77
from agent import CaseyDeps, casey_agent
88
from conversation import conversation_store
99
from listeners.views.feedback_block import create_feedback_block
1010

1111

12-
def handle_issue_submission(ack: Ack, body: dict, client: WebClient, logger: Logger):
12+
def handle_issue_submission(ack: Ack, body: dict, client: WebClient, agent: BoltAgent, logger: Logger):
1313
"""Handle modal submission: open DM, post issue, and run Casey agent."""
1414
ack()
1515

@@ -65,7 +65,7 @@ def handle_issue_submission(ack: Ack, body: dict, client: WebClient, logger: Log
6565
result = Runner.run_sync(casey_agent, input=user_message, context=deps)
6666

6767
# Stream the response in thread with feedback buttons
68-
streamer = client.chat_stream(
68+
streamer = agent.chat_stream(
6969
channel=channel_id,
7070
recipient_team_id=team_id,
7171
recipient_user_id=user_id,

pydantic-ai/listeners/events/app_mentioned.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import re
33
from logging import Logger
44

5-
from slack_bolt import Say
5+
from slack_bolt import BoltAgent, Say
66
from slack_sdk import WebClient
77

88
from agent import DEFAULT_MODEL, CaseyDeps, casey_agent
@@ -21,7 +21,7 @@
2121
CONTEXTUAL_EMOJIS = ["+1", "raised_hands", "rocket", "tada", "bulb", "fire"]
2222

2323

24-
def handle_app_mentioned(client: WebClient, event: dict, logger: Logger, say: Say):
24+
def handle_app_mentioned(client: WebClient, event: dict, agent: BoltAgent, logger: Logger, say: Say):
2525
"""Handle @Casey mentions in channels."""
2626
try:
2727
channel_id = event["channel"]
@@ -80,9 +80,9 @@ def handle_app_mentioned(client: WebClient, event: dict, logger: Logger, say: Sa
8080
)
8181

8282
# Stream response in thread with feedback buttons
83-
streamer = client.chat_stream(
83+
streamer = agent.chat_stream(
8484
channel=channel_id,
85-
recipient_team_id=team_id,
85+
recipient_team_id=team_id, # chat_stream helper cannot infer event["team"] from client
8686
recipient_user_id=user_id,
8787
thread_ts=thread_ts,
8888
)

pydantic-ai/listeners/events/message.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import random
22
from logging import Logger
33

4-
from slack_bolt import Say
4+
from slack_bolt import BoltAgent, Say
55
from slack_sdk import WebClient
66

77
from agent import DEFAULT_MODEL, CaseyDeps, casey_agent
@@ -20,7 +20,7 @@
2020
CONTEXTUAL_EMOJIS = ["+1", "raised_hands", "rocket", "tada", "bulb", "fire"]
2121

2222

23-
def handle_message(client: WebClient, event: dict, logger: Logger, say: Say):
23+
def handle_message(client: WebClient, event: dict, agent: BoltAgent, logger: Logger, say: Say):
2424
"""Handle direct messages sent to Casey."""
2525
# Skip bot messages and message subtypes (edits, deletes, etc.)
2626
if event.get("bot_id") or event.get("subtype"):
@@ -32,7 +32,6 @@ def handle_message(client: WebClient, event: dict, logger: Logger, say: Say):
3232

3333
try:
3434
channel_id = event["channel"]
35-
team_id = event.get("team")
3635
text = event.get("text", "")
3736
thread_ts = event.get("thread_ts") or event["ts"]
3837
user_id = event["user"]
@@ -77,12 +76,7 @@ def handle_message(client: WebClient, event: dict, logger: Logger, say: Say):
7776
)
7877

7978
# Stream response in thread with feedback buttons
80-
streamer = client.chat_stream(
81-
channel=channel_id,
82-
recipient_team_id=team_id,
83-
recipient_user_id=user_id,
84-
thread_ts=thread_ts,
85-
)
79+
streamer = agent.chat_stream()
8680
streamer.append(markdown_text=result.output)
8781
feedback_blocks = create_feedback_block()
8882
streamer.stop(blocks=feedback_blocks)

pydantic-ai/listeners/views/issue_modal.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
from logging import Logger
22

3-
from slack_bolt import Ack
3+
from slack_bolt import Ack, BoltAgent
44
from slack_sdk import WebClient
55

66
from agent import DEFAULT_MODEL, CaseyDeps, casey_agent
77
from conversation import conversation_store
88
from listeners.views.feedback_block import create_feedback_block
99

1010

11-
def handle_issue_submission(ack: Ack, body: dict, client: WebClient, logger: Logger):
11+
def handle_issue_submission(ack: Ack, body: dict, client: WebClient, agent: BoltAgent, logger: Logger):
1212
"""Handle modal submission: open DM, post issue, and run Casey agent."""
1313
ack()
1414

@@ -64,7 +64,7 @@ def handle_issue_submission(ack: Ack, body: dict, client: WebClient, logger: Log
6464
result = casey_agent.run_sync(user_message, model=DEFAULT_MODEL, deps=deps)
6565

6666
# Stream the response in thread with feedback buttons
67-
streamer = client.chat_stream(
67+
streamer = agent.chat_stream(
6868
channel=channel_id,
6969
recipient_team_id=team_id,
7070
recipient_user_id=user_id,

0 commit comments

Comments
 (0)