1818from agent_chat_cli .utils .logger import log_json
1919
2020if TYPE_CHECKING :
21- from textual .app import App
21+ from agent_chat_cli .app import AgentChatCLIApp
2222
2323
2424class MessageBus :
25- def __init__ (self , app : "App " ) -> None :
25+ def __init__ (self , app : "AgentChatCLIApp " ) -> None :
2626 self .app = app
2727 self .current_agent_message : AgentMessageWidget | None = None
2828 self .current_response_text = ""
@@ -38,6 +38,9 @@ async def handle_agent_message(self, message: AgentMessage) -> None:
3838 case AgentMessageType .SYSTEM :
3939 await self ._handle_system (message )
4040
41+ case AgentMessageType .USER :
42+ await self ._handle_user (message )
43+
4144 case AgentMessageType .TOOL_PERMISSION_REQUEST :
4245 await self ._handle_tool_permission_request (message )
4346
@@ -109,6 +112,15 @@ async def _handle_system(self, message: AgentMessage) -> None:
109112
110113 await self ._scroll_to_bottom ()
111114
115+ async def _handle_user (self , message : AgentMessage ) -> None :
116+ user_content = (
117+ message .data if isinstance (message .data , str ) else str (message .data )
118+ )
119+
120+ self .app .post_message (MessagePosted (Message .user (user_content )))
121+
122+ await self ._scroll_to_bottom ()
123+
112124 async def _handle_tool_permission_request (self , message : AgentMessage ) -> None :
113125 log_json (
114126 {
@@ -131,6 +143,11 @@ async def _handle_tool_permission_request(self, message: AgentMessage) -> None:
131143 await self ._scroll_to_bottom ()
132144
133145 async def _handle_result (self ) -> None :
146+ # Check if there's a queued message (e.g., from custom permission response)
147+ if not self .app .agent_loop .query_queue .empty ():
148+ # Don't turn off thinking - there's more work to do
149+ return
150+
134151 thinking_indicator = self .app .query_one (ThinkingIndicator )
135152 thinking_indicator .is_thinking = False
136153
0 commit comments