Skip to content

Commit 322e438

Browse files
committed
feat: add session_id support
1 parent 4afef6f commit 322e438

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

src/agent_chat_cli/utils/agent_loop.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@
66
ClaudeAgentOptions,
77
ClaudeSDKClient,
88
)
9-
from claude_agent_sdk.types import AssistantMessage, TextBlock, ToolUseBlock
9+
from claude_agent_sdk.types import (
10+
AssistantMessage,
11+
SystemMessage,
12+
TextBlock,
13+
ToolUseBlock,
14+
)
1015

1116
from agent_chat_cli.utils.config import load_config
1217
from agent_chat_cli.utils.enums import AgentMessageType, ContentType
@@ -22,12 +27,16 @@ class AgentLoop:
2227
def __init__(
2328
self,
2429
on_message: Callable[[AgentMessage], Awaitable[None]],
30+
session_id: str | None = None,
2531
) -> None:
2632
self.config = load_config()
33+
self.session_id = session_id
34+
35+
config_dict = self.config.model_dump()
36+
if session_id:
37+
config_dict["resume"] = session_id
2738

28-
self.client = ClaudeSDKClient(
29-
options=ClaudeAgentOptions(**self.config.model_dump())
30-
)
39+
self.client = ClaudeSDKClient(options=ClaudeAgentOptions(**config_dict))
3140

3241
self.on_message = on_message
3342
self.query_queue: asyncio.Queue[str] = asyncio.Queue()
@@ -49,6 +58,12 @@ async def start(self) -> None:
4958
await self.on_message(AgentMessage(type=AgentMessageType.RESULT, data=None))
5059

5160
async def _handle_message(self, message: Any) -> None:
61+
if isinstance(message, SystemMessage):
62+
if message.subtype == AgentMessageType.INIT.value and message.data.get(
63+
"session_id"
64+
):
65+
self.session_id = message.data["session_id"]
66+
5267
if hasattr(message, "event"):
5368
event = message.event # type: ignore[attr-defined]
5469

0 commit comments

Comments
 (0)