Skip to content

Commit 23f83a9

Browse files
authored
feat: use BoltAgent for chat_stream in all implementations (#16)
* feat: use BoltAgent for chat_stream in all implementations * style: fix ruff lint and format issues
1 parent 46c3b7c commit 23f83a9

9 files changed

Lines changed: 60 additions & 43 deletions

File tree

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

Lines changed: 4 additions & 2 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.async_context import AsyncBoltContext
67
from slack_bolt.context.say.async_say import AsyncSay
78
from slack_sdk.web.async_client import AsyncWebClient
@@ -24,6 +25,7 @@
2425

2526
async def handle_app_mentioned(
2627
client: AsyncWebClient,
28+
agent: AsyncBoltAgent,
2729
context: AsyncBoltContext,
2830
event: dict,
2931
logger: Logger,
@@ -78,9 +80,9 @@ async def handle_app_mentioned(
7880
)
7981

8082
# Stream response in thread with feedback buttons
81-
streamer = await client.chat_stream(
83+
streamer = await agent.chat_stream(
8284
channel=channel_id,
83-
recipient_team_id=team_id,
85+
recipient_team_id=team_id, # chat_stream helper cannot infer event["team"] from client
8486
recipient_user_id=user_id,
8587
thread_ts=thread_ts,
8688
)

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.async_context import AsyncBoltContext
56
from slack_bolt.context.say.async_say import AsyncSay
67
from slack_sdk.web.async_client import AsyncWebClient
@@ -23,6 +24,7 @@
2324

2425
async def handle_message(
2526
client: AsyncWebClient,
27+
agent: AsyncBoltAgent,
2628
context: AsyncBoltContext,
2729
event: dict,
2830
logger: Logger,
@@ -39,10 +41,8 @@ async def handle_message(
3941

4042
try:
4143
channel_id = context.channel_id
42-
team_id = context.team_id
4344
text = event.get("text", "")
4445
thread_ts = event.get("thread_ts") or event["ts"]
45-
user_id = context.user_id
4646

4747
# Get session ID for conversation context
4848
existing_session_id = session_store.get_session(channel_id, thread_ts)
@@ -75,12 +75,7 @@ async def handle_message(
7575
)
7676

7777
# Stream response in thread with feedback buttons
78-
streamer = await client.chat_stream(
79-
channel=channel_id,
80-
recipient_team_id=team_id,
81-
recipient_user_id=user_id,
82-
thread_ts=thread_ts,
83-
)
78+
streamer = await agent.chat_stream()
8479
await streamer.append(markdown_text=response_text)
8580
feedback_blocks = create_feedback_block()
8681
await streamer.stop(blocks=feedback_blocks)

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

Lines changed: 3 additions & 1 deletion
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_bolt.context.async_context import AsyncBoltContext
56
from slack_sdk.web.async_client import AsyncWebClient
67

@@ -11,6 +12,7 @@
1112

1213
async def handle_issue_submission(
1314
ack: Ack,
15+
agent: AsyncBoltAgent,
1416
body: dict,
1517
client: AsyncWebClient,
1618
context: AsyncBoltContext,
@@ -65,7 +67,7 @@ async def handle_issue_submission(
6567
response_text, new_session_id = await run_casey_agent(user_message)
6668

6769
# Stream the response in thread with feedback buttons
68-
streamer = await client.chat_stream(
70+
streamer = await agent.chat_stream(
6971
channel=channel_id,
7072
recipient_team_id=team_id,
7173
recipient_user_id=user_id,

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

Lines changed: 9 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 BoltContext, Say
6+
from slack_bolt import BoltAgent, BoltContext, Say
77
from slack_sdk import WebClient
88

99
from agent import CaseyDeps, casey_agent
@@ -23,7 +23,12 @@
2323

2424

2525
def handle_app_mentioned(
26-
client: WebClient, context: BoltContext, event: dict, logger: Logger, say: Say
26+
agent: BoltAgent,
27+
client: WebClient,
28+
context: BoltContext,
29+
event: dict,
30+
logger: Logger,
31+
say: Say,
2732
):
2833
"""Handle @Casey mentions in channels."""
2934
try:
@@ -83,9 +88,9 @@ def handle_app_mentioned(
8388
result = Runner.run_sync(casey_agent, input=input_items, context=deps)
8489

8590
# Stream response in thread with feedback buttons
86-
streamer = client.chat_stream(
91+
streamer = agent.chat_stream(
8792
channel=channel_id,
88-
recipient_team_id=team_id,
93+
recipient_team_id=team_id, # chat_stream helper cannot infer event["team"] from client
8994
recipient_user_id=user_id,
9095
thread_ts=thread_ts,
9196
)

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

Lines changed: 8 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 BoltContext, Say
5+
from slack_bolt import BoltAgent, BoltContext, Say
66
from slack_sdk import WebClient
77

88
from agent import CaseyDeps, casey_agent
@@ -22,7 +22,12 @@
2222

2323

2424
def handle_message(
25-
client: WebClient, context: BoltContext, event: dict, logger: Logger, say: Say
25+
agent: BoltAgent,
26+
client: WebClient,
27+
context: BoltContext,
28+
event: dict,
29+
logger: Logger,
30+
say: Say,
2631
):
2732
"""Handle direct messages sent to Casey."""
2833
# Skip bot messages and message subtypes (edits, deletes, etc.)
@@ -35,7 +40,6 @@ def handle_message(
3540

3641
try:
3742
channel_id = context.channel_id
38-
team_id = context.team_id
3943
text = event.get("text", "")
4044
thread_ts = event.get("thread_ts") or event["ts"]
4145
user_id = context.user_id
@@ -81,12 +85,7 @@ def handle_message(
8185
result = Runner.run_sync(casey_agent, input=input_items, context=deps)
8286

8387
# Stream response in thread with feedback buttons
84-
streamer = client.chat_stream(
85-
channel=channel_id,
86-
recipient_team_id=team_id,
87-
recipient_user_id=user_id,
88-
thread_ts=thread_ts,
89-
)
88+
streamer = agent.chat_stream()
9089
streamer.append(markdown_text=result.final_output)
9190
feedback_blocks = create_feedback_block()
9291
streamer.stop(blocks=feedback_blocks)

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

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

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

77
from agent import CaseyDeps, casey_agent
@@ -10,7 +10,12 @@
1010

1111

1212
def handle_issue_submission(
13-
ack: Ack, body: dict, client: WebClient, context: BoltContext, logger: Logger
13+
ack: Ack,
14+
agent: BoltAgent,
15+
body: dict,
16+
client: WebClient,
17+
context: BoltContext,
18+
logger: Logger,
1419
):
1520
"""Handle modal submission: open DM, post issue, and run Casey agent."""
1621
ack()
@@ -67,7 +72,7 @@ def handle_issue_submission(
6772
result = Runner.run_sync(casey_agent, input=user_message, context=deps)
6873

6974
# Stream the response in thread with feedback buttons
70-
streamer = client.chat_stream(
75+
streamer = agent.chat_stream(
7176
channel=channel_id,
7277
recipient_team_id=team_id,
7378
recipient_user_id=user_id,

pydantic-ai/listeners/events/app_mentioned.py

Lines changed: 9 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 BoltContext, Say
5+
from slack_bolt import BoltAgent, BoltContext, Say
66
from slack_sdk import WebClient
77

88
from agent import DEFAULT_MODEL, CaseyDeps, casey_agent
@@ -22,7 +22,12 @@
2222

2323

2424
def handle_app_mentioned(
25-
client: WebClient, context: BoltContext, event: dict, logger: Logger, say: Say
25+
agent: BoltAgent,
26+
client: WebClient,
27+
context: BoltContext,
28+
event: dict,
29+
logger: Logger,
30+
say: Say,
2631
):
2732
"""Handle @Casey mentions in channels."""
2833
try:
@@ -82,9 +87,9 @@ def handle_app_mentioned(
8287
)
8388

8489
# Stream response in thread with feedback buttons
85-
streamer = client.chat_stream(
90+
streamer = agent.chat_stream(
8691
channel=channel_id,
87-
recipient_team_id=team_id,
92+
recipient_team_id=team_id, # chat_stream helper cannot infer event["team"] from client
8893
recipient_user_id=user_id,
8994
thread_ts=thread_ts,
9095
)

pydantic-ai/listeners/events/message.py

Lines changed: 8 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 BoltContext, Say
4+
from slack_bolt import BoltAgent, BoltContext, Say
55
from slack_sdk import WebClient
66

77
from agent import DEFAULT_MODEL, CaseyDeps, casey_agent
@@ -21,7 +21,12 @@
2121

2222

2323
def handle_message(
24-
client: WebClient, context: BoltContext, event: dict, logger: Logger, say: Say
24+
agent: BoltAgent,
25+
client: WebClient,
26+
context: BoltContext,
27+
event: dict,
28+
logger: Logger,
29+
say: Say,
2530
):
2631
"""Handle direct messages sent to Casey."""
2732
# Skip bot messages and message subtypes (edits, deletes, etc.)
@@ -34,7 +39,6 @@ def handle_message(
3439

3540
try:
3641
channel_id = context.channel_id
37-
team_id = context.team_id
3842
text = event.get("text", "")
3943
thread_ts = event.get("thread_ts") or event["ts"]
4044
user_id = context.user_id
@@ -79,12 +83,7 @@ def handle_message(
7983
)
8084

8185
# 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-
)
86+
streamer = agent.chat_stream()
8887
streamer.append(markdown_text=result.output)
8988
feedback_blocks = create_feedback_block()
9089
streamer.stop(blocks=feedback_blocks)

pydantic-ai/listeners/views/issue_modal.py

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

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

66
from agent import DEFAULT_MODEL, CaseyDeps, casey_agent
@@ -9,7 +9,12 @@
99

1010

1111
def handle_issue_submission(
12-
ack: Ack, body: dict, client: WebClient, context: BoltContext, logger: Logger
12+
ack: Ack,
13+
agent: BoltAgent,
14+
body: dict,
15+
client: WebClient,
16+
context: BoltContext,
17+
logger: Logger,
1318
):
1419
"""Handle modal submission: open DM, post issue, and run Casey agent."""
1520
ack()
@@ -66,7 +71,7 @@ def handle_issue_submission(
6671
result = casey_agent.run_sync(user_message, model=DEFAULT_MODEL, deps=deps)
6772

6873
# Stream the response in thread with feedback buttons
69-
streamer = client.chat_stream(
74+
streamer = agent.chat_stream(
7075
channel=channel_id,
7176
recipient_team_id=team_id,
7277
recipient_user_id=user_id,

0 commit comments

Comments
 (0)