Skip to content

Commit db52bd1

Browse files
committed
refactor: cleanup naming
1 parent 248cd12 commit db52bd1

File tree

13 files changed

+158
-177
lines changed

13 files changed

+158
-177
lines changed

src/agent_chat_cli/components/chat_history.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from agent_chat_cli.components.messages import (
55
AgentMessage,
66
Message,
7-
MessageType,
7+
RoleType,
88
SystemMessage,
99
ToolMessage,
1010
UserMessage,
@@ -20,22 +20,22 @@ def _create_message_widget(
2020
self, message: Message
2121
) -> SystemMessage | UserMessage | AgentMessage | ToolMessage:
2222
match message.type:
23-
case MessageType.SYSTEM:
23+
case RoleType.SYSTEM:
2424
system_widget = SystemMessage()
2525
system_widget.message = message.content
2626
return system_widget
2727

28-
case MessageType.USER:
28+
case RoleType.USER:
2929
user_widget = UserMessage()
3030
user_widget.message = message.content
3131
return user_widget
3232

33-
case MessageType.AGENT:
33+
case RoleType.AGENT:
3434
agent_widget = AgentMessage()
3535
agent_widget.message = message.content
3636
return agent_widget
3737

38-
case MessageType.TOOL:
38+
case RoleType.TOOL:
3939
tool_widget = ToolMessage()
4040

4141
if message.metadata and "tool_name" in message.metadata:

src/agent_chat_cli/components/messages.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from agent_chat_cli.utils import get_tool_info, format_tool_input
1111

1212

13-
class MessageType(Enum):
13+
class RoleType(Enum):
1414
SYSTEM = "system"
1515
USER = "user"
1616
AGENT = "agent"
@@ -19,26 +19,26 @@ class MessageType(Enum):
1919

2020
@dataclass
2121
class Message:
22-
type: MessageType
22+
type: RoleType
2323
content: str
2424
metadata: dict[str, Any] | None = None
2525

2626
@classmethod
2727
def system(cls, content: str) -> "Message":
28-
return cls(type=MessageType.SYSTEM, content=content)
28+
return cls(type=RoleType.SYSTEM, content=content)
2929

3030
@classmethod
3131
def user(cls, content: str) -> "Message":
32-
return cls(type=MessageType.USER, content=content)
32+
return cls(type=RoleType.USER, content=content)
3333

3434
@classmethod
3535
def agent(cls, content: str) -> "Message":
36-
return cls(type=MessageType.AGENT, content=content)
36+
return cls(type=RoleType.AGENT, content=content)
3737

3838
@classmethod
3939
def tool(cls, tool_name: str, content: str) -> "Message":
4040
return cls(
41-
type=MessageType.TOOL, content=content, metadata={"tool_name": tool_name}
41+
type=RoleType.TOOL, content=content, metadata={"tool_name": tool_name}
4242
)
4343

4444

src/agent_chat_cli/core/actions.py

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from agent_chat_cli.utils.enums import ControlCommand
44
from agent_chat_cli.components.chat_history import ChatHistory
5-
from agent_chat_cli.components.messages import Message, MessageType
5+
from agent_chat_cli.components.messages import RoleType
66
from agent_chat_cli.components.tool_permission_prompt import ToolPermissionPrompt
77
from agent_chat_cli.utils.logger import log_json
88

@@ -17,34 +17,15 @@ def __init__(self, app: "AgentChatCLIApp") -> None:
1717
def quit(self) -> None:
1818
self.app.exit()
1919

20-
async def add_message_to_chat_history(
21-
self, type: MessageType, content: str
22-
) -> None:
23-
match type:
24-
case MessageType.USER:
25-
message = Message.user(content)
26-
case MessageType.SYSTEM:
27-
message = Message.system(content)
28-
case MessageType.AGENT:
29-
message = Message.agent(content)
30-
case _:
31-
raise ValueError(f"Unsupported message type: {type}")
32-
33-
chat_history = self.app.query_one(ChatHistory)
34-
chat_history.add_message(message)
35-
3620
async def submit_user_message(self, message: str) -> None:
37-
chat_history = self.app.query_one(ChatHistory)
38-
chat_history.add_message(Message.user(message))
39-
self.app.ui_state.start_thinking()
40-
await self.app.ui_state.scroll_to_bottom()
21+
await self.app.renderer.add_message(RoleType.USER, message)
4122
await self._query(message)
4223

4324
async def post_system_message(self, message: str) -> None:
44-
await self.add_message_to_chat_history(MessageType.SYSTEM, message)
25+
await self.app.renderer.add_message(RoleType.SYSTEM, message)
4526

46-
async def render_message(self, message) -> None:
47-
await self.app.renderer.render_message(message)
27+
async def handle_app_event(self, event) -> None:
28+
await self.app.renderer.handle_app_event(event)
4829

4930
async def interrupt(self) -> None:
5031
permission_prompt = self.app.query_one(ToolPermissionPrompt)

src/agent_chat_cli/core/agent_loop.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
get_available_servers,
2525
get_sdk_config,
2626
)
27-
from agent_chat_cli.utils.enums import AgentMessageType, ContentType, ControlCommand
27+
from agent_chat_cli.utils.enums import AppEventType, ContentType, ControlCommand
2828
from agent_chat_cli.utils.logger import log_json
2929
from agent_chat_cli.utils.mcp_server_status import MCPServerStatus
3030

@@ -33,8 +33,8 @@
3333

3434

3535
@dataclass
36-
class AgentMessage:
37-
type: AgentMessageType
36+
class AppEvent:
37+
type: AppEventType
3838
data: Any
3939

4040

@@ -93,8 +93,8 @@ async def start(self) -> None:
9393

9494
await self._handle_message(message)
9595

96-
await self.app.actions.render_message(
97-
AgentMessage(type=AgentMessageType.RESULT, data=None)
96+
await self.app.actions.handle_app_event(
97+
AppEvent(type=AppEventType.RESULT, data=None)
9898
)
9999

100100
async def _initialize_client(self, mcp_servers: dict) -> None:
@@ -115,7 +115,7 @@ async def _handle_message(self, message: Message) -> None:
115115
if isinstance(message, SystemMessage):
116116
log_json(message.data)
117117

118-
if message.subtype == AgentMessageType.INIT.value and message.data.get(
118+
if message.subtype == AppEventType.INIT.value and message.data.get(
119119
"session_id"
120120
):
121121
# When initializing the chat, we store the session_id for later
@@ -136,9 +136,9 @@ async def _handle_message(self, message: Message) -> None:
136136
text_chunk = delta.get("text", "")
137137

138138
if text_chunk:
139-
await self.app.actions.render_message(
140-
AgentMessage(
141-
type=AgentMessageType.STREAM_EVENT,
139+
await self.app.actions.handle_app_event(
140+
AppEvent(
141+
type=AppEventType.STREAM_EVENT,
142142
data={"text": text_chunk},
143143
)
144144
)
@@ -164,9 +164,9 @@ async def _handle_message(self, message: Message) -> None:
164164
)
165165

166166
# Finally, post the agent assistant response
167-
await self.app.actions.render_message(
168-
AgentMessage(
169-
type=AgentMessageType.ASSISTANT,
167+
await self.app.actions.handle_app_event(
168+
AppEvent(
169+
type=AppEventType.ASSISTANT,
170170
data={"content": content},
171171
)
172172
)
@@ -181,9 +181,9 @@ async def _can_use_tool(
181181

182182
# Handle permission request queue sequentially
183183
async with self.permission_lock:
184-
await self.app.actions.render_message(
185-
AgentMessage(
186-
type=AgentMessageType.TOOL_PERMISSION_REQUEST,
184+
await self.app.actions.handle_app_event(
185+
AppEvent(
186+
type=AppEventType.TOOL_PERMISSION_REQUEST,
187187
data={
188188
"tool_name": tool_name,
189189
"tool_input": tool_input,

src/agent_chat_cli/core/renderer.py

Lines changed: 49 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66
from agent_chat_cli.components.chat_history import ChatHistory
77
from agent_chat_cli.components.messages import (
88
AgentMessage as AgentMessageWidget,
9-
MessageType,
9+
Message,
10+
RoleType,
1011
ToolMessage,
1112
)
12-
from agent_chat_cli.core.agent_loop import AgentMessage
13-
from agent_chat_cli.utils.enums import AgentMessageType, ContentType
13+
from agent_chat_cli.core.agent_loop import AppEvent
14+
from agent_chat_cli.utils.enums import AppEventType, ContentType
1415
from agent_chat_cli.utils.logger import log_json
1516

1617
if TYPE_CHECKING:
@@ -32,31 +33,48 @@ def __init__(self, app: "AgentChatCLIApp") -> None:
3233
self.app = app
3334
self._stream = StreamBuffer()
3435

35-
async def render_message(self, message: AgentMessage) -> None:
36-
match message.type:
37-
case AgentMessageType.STREAM_EVENT:
38-
await self._render_stream_event(message)
36+
async def handle_app_event(self, event: AppEvent) -> None:
37+
match event.type:
38+
case AppEventType.STREAM_EVENT:
39+
await self._render_stream_event(event)
3940

40-
case AgentMessageType.ASSISTANT:
41-
await self._render_assistant_message(message)
41+
case AppEventType.ASSISTANT:
42+
await self._render_assistant_message(event)
4243

43-
case AgentMessageType.SYSTEM:
44-
await self._render_system_message(message)
44+
case AppEventType.SYSTEM:
45+
await self._render_system_message(event)
4546

46-
case AgentMessageType.USER:
47-
await self._render_user_message(message)
47+
case AppEventType.USER:
48+
await self._render_user_message(event)
4849

49-
case AgentMessageType.TOOL_PERMISSION_REQUEST:
50-
await self._render_tool_permission_request(message)
50+
case AppEventType.TOOL_PERMISSION_REQUEST:
51+
await self._render_tool_permission_request(event)
5152

52-
case AgentMessageType.RESULT:
53+
case AppEventType.RESULT:
5354
await self._on_complete()
5455

55-
if message.type is not AgentMessageType.RESULT:
56+
if event.type is not AppEventType.RESULT:
5657
await self.app.ui_state.scroll_to_bottom()
5758

58-
async def _render_stream_event(self, message: AgentMessage) -> None:
59-
text_chunk = message.data.get("text", "")
59+
async def add_message(self, type: RoleType, content: str) -> None:
60+
match type:
61+
case RoleType.USER:
62+
message = Message.user(content)
63+
case RoleType.SYSTEM:
64+
message = Message.system(content)
65+
case RoleType.AGENT:
66+
message = Message.agent(content)
67+
case _:
68+
raise ValueError(f"Unsupported message type: {type}")
69+
70+
chat_history = self.app.query_one(ChatHistory)
71+
chat_history.add_message(message)
72+
73+
self.app.ui_state.start_thinking()
74+
await self.app.ui_state.scroll_to_bottom()
75+
76+
async def _render_stream_event(self, event: AppEvent) -> None:
77+
text_chunk = event.data.get("text", "")
6078

6179
if not text_chunk:
6280
return
@@ -77,8 +95,8 @@ async def _render_stream_event(self, message: AgentMessage) -> None:
7795
markdown = self._stream.widget.query_one(Markdown)
7896
markdown.update(self._stream.text)
7997

80-
async def _render_assistant_message(self, message: AgentMessage) -> None:
81-
content_blocks = message.data.get("content", [])
98+
async def _render_assistant_message(self, event: AppEvent) -> None:
99+
content_blocks = event.data.get("content", [])
82100
chat_history = self.app.query_one(ChatHistory)
83101

84102
for block in content_blocks:
@@ -97,35 +115,27 @@ async def _render_assistant_message(self, message: AgentMessage) -> None:
97115

98116
await chat_history.mount(tool_msg)
99117

100-
async def _render_system_message(self, message: AgentMessage) -> None:
101-
system_content = (
102-
message.data if isinstance(message.data, str) else str(message.data)
103-
)
118+
async def _render_system_message(self, event: AppEvent) -> None:
119+
system_content = event.data if isinstance(event.data, str) else str(event.data)
104120

105-
await self.app.actions.add_message_to_chat_history(
106-
MessageType.SYSTEM, system_content
107-
)
121+
await self.add_message(RoleType.SYSTEM, system_content)
108122

109-
async def _render_user_message(self, message: AgentMessage) -> None:
110-
user_content = (
111-
message.data if isinstance(message.data, str) else str(message.data)
112-
)
123+
async def _render_user_message(self, event: AppEvent) -> None:
124+
user_content = event.data if isinstance(event.data, str) else str(event.data)
113125

114-
await self.app.actions.add_message_to_chat_history(
115-
MessageType.USER, user_content
116-
)
126+
await self.add_message(RoleType.USER, user_content)
117127

118-
async def _render_tool_permission_request(self, message: AgentMessage) -> None:
128+
async def _render_tool_permission_request(self, event: AppEvent) -> None:
119129
log_json(
120130
{
121131
"event": "showing_permission_prompt",
122-
"tool_name": message.data.get("tool_name", ""),
132+
"tool_name": event.data.get("tool_name", ""),
123133
}
124134
)
125135

126136
self.app.ui_state.show_permission_prompt(
127-
tool_name=message.data.get("tool_name", ""),
128-
tool_input=message.data.get("tool_input", {}),
137+
tool_name=event.data.get("tool_name", ""),
138+
tool_input=event.data.get("tool_input", {}),
129139
)
130140

131141
async def _on_complete(self) -> None:

0 commit comments

Comments
 (0)