@@ -33,7 +33,7 @@ def create_agent(self, session_id, session_agent):
33
33
if agent_id in self .agents .get (session_id , {}):
34
34
raise SessionException (f"Agent { agent_id } already exists in session { session_id } " )
35
35
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 , {} )
37
37
return session_agent
38
38
39
39
def read_agent (self , session_id , agent_id ):
@@ -53,37 +53,34 @@ def update_agent(self, session_id, session_agent):
53
53
54
54
def create_message (self , session_id , agent_id , session_message ):
55
55
"""Create a message."""
56
+ message_id = session_message .message_id
56
57
if session_id not in self .sessions :
57
58
raise SessionException (f"Session { session_id } does not exist" )
58
59
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
61
64
62
65
def read_message (self , session_id , agent_id , message_id ):
63
66
"""Read a message."""
64
67
if session_id not in self .sessions :
65
68
return None
66
69
if agent_id not in self .agents .get (session_id , {}):
67
70
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 )
72
72
73
73
def update_message (self , session_id , agent_id , session_message ):
74
74
"""Update a message."""
75
+
75
76
message_id = session_message .message_id
76
77
if session_id not in self .sessions :
77
78
raise SessionException (f"Session { session_id } does not exist" )
78
79
if agent_id not in self .agents .get (session_id , {}):
79
80
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
87
84
88
85
def list_messages (self , session_id , agent_id , limit = None , offset = 0 ):
89
86
"""List messages."""
@@ -92,7 +89,9 @@ def list_messages(self, session_id, agent_id, limit=None, offset=0):
92
89
if agent_id not in self .agents .get (session_id , {}):
93
90
return []
94
91
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
+
96
95
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