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
1116from agent_chat_cli .utils .config import load_config
1217from 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