@@ -33,7 +33,7 @@ def create_agent(self, session_id, session_agent):
3333 if agent_id in self .agents .get (session_id , {}):
3434 raise SessionException (f"Agent { agent_id } already exists in session { session_id } " )
3535 self .agents .setdefault (session_id , {})[agent_id ] = session_agent
36- self .messages .setdefault (session_id , {}).setdefault (agent_id , [] )
36+ self .messages .setdefault (session_id , {}).setdefault (agent_id , {} )
3737 return session_agent
3838
3939 def read_agent (self , session_id , agent_id ):
@@ -53,37 +53,34 @@ def update_agent(self, session_id, session_agent):
5353
5454 def create_message (self , session_id , agent_id , session_message ):
5555 """Create a message."""
56+ message_id = session_message .message_id
5657 if session_id not in self .sessions :
5758 raise SessionException (f"Session { session_id } does not exist" )
5859 if agent_id not in self .agents .get (session_id , {}):
59- raise SessionException (f"Agent { agent_id } does not exist in session { session_id } " )
60- self .messages .setdefault (session_id , {}).setdefault (agent_id , []).append (session_message )
60+ raise SessionException (f"Agent { agent_id } does not exists in session { session_id } " )
61+ if message_id in self .messages .get (session_id , {}).get (agent_id , {}):
62+ raise SessionException (f"Message { message_id } already exists in agent { agent_id } in session { session_id } " )
63+ self .messages .setdefault (session_id , {}).setdefault (agent_id , {})[message_id ] = session_message
6164
6265 def read_message (self , session_id , agent_id , message_id ):
6366 """Read a message."""
6467 if session_id not in self .sessions :
6568 return None
6669 if agent_id not in self .agents .get (session_id , {}):
6770 return None
68- for message in self .messages .get (session_id , {}).get (agent_id , []):
69- if message .message_id == message_id :
70- return message
71- return None
71+ return self .messages .get (session_id , {}).get (agent_id , {}).get (message_id )
7272
7373 def update_message (self , session_id , agent_id , session_message ):
7474 """Update a message."""
75+
7576 message_id = session_message .message_id
7677 if session_id not in self .sessions :
7778 raise SessionException (f"Session { session_id } does not exist" )
7879 if agent_id not in self .agents .get (session_id , {}):
7980 raise SessionException (f"Agent { agent_id } does not exist in session { session_id } " )
80-
81- for i , message in enumerate (self .messages .get (session_id , {}).get (agent_id , [])):
82- if message .message_id == message_id :
83- self .messages [session_id ][agent_id ][i ] = session_message
84- return
85-
86- raise SessionException (f"Message { message_id } does not exist" )
81+ if message_id not in self .messages .get (session_id , {}).get (agent_id , {}):
82+ raise SessionException (f"Message { message_id } does not exist in session { session_id } " )
83+ self .messages [session_id ][agent_id ][message_id ] = session_message
8784
8885 def list_messages (self , session_id , agent_id , limit = None , offset = 0 ):
8986 """List messages."""
@@ -92,7 +89,9 @@ def list_messages(self, session_id, agent_id, limit=None, offset=0):
9289 if agent_id not in self .agents .get (session_id , {}):
9390 return []
9491
95- messages = self .messages .get (session_id , {}).get (agent_id , [])
92+ messages = self .messages .get (session_id , {}).get (agent_id , {})
93+ sorted_messages = [messages [key ] for key in sorted (messages .keys ())]
94+
9695 if limit is not None :
97- return messages [offset : offset + limit ]
98- return messages [offset :]
96+ return sorted_messages [offset : offset + limit ]
97+ return sorted_messages [offset :]
0 commit comments