@@ -178,3 +178,104 @@ class SuggestionRequest(BaseRequest):
178178 user_id : str = Field (..., description = "User ID" )
179179 language : Literal ["zh" , "en" ] = Field ("zh" , description = "Language for suggestions" )
180180 message : list [MessageDict ] | None = Field (None , description = "List of messages to store." )
181+
182+
183+ # ─── MemOS Client Response Models ──────────────────────────────────────────────
184+
185+
186+ class MessageDetail (BaseModel ):
187+ """Individual message detail model based on actual API response."""
188+
189+ role : str = Field (..., description = "Message role (user/assistant)" )
190+ content : str = Field (..., description = "Message content" )
191+ create_time : int | None = Field (
192+ None , alias = "createTime" , description = "Message creation timestamp"
193+ )
194+ update_time : int | None = Field (
195+ None , alias = "updateTime" , description = "Message update timestamp"
196+ )
197+
198+
199+ class MemoryDetail (BaseModel ):
200+ """Individual memory detail model based on actual API response."""
201+
202+ id : str = Field (..., description = "Memory ID" )
203+ memory_key : str = Field (..., alias = "memoryKey" , description = "Memory key/title" )
204+ memory_value : str = Field (..., alias = "memoryValue" , description = "Memory content" )
205+ memory_type : str = Field (
206+ ..., alias = "memoryType" , description = "Memory type (e.g., WorkingMemory)"
207+ )
208+ memory_time : int | None = Field (None , alias = "memoryTime" , description = "Memory timestamp" )
209+ conversation_id : str = Field (..., alias = "conversationId" , description = "Conversation ID" )
210+ status : str = Field (..., description = "Memory status (e.g., activated)" )
211+ confidence : float = Field (..., description = "Memory confidence score" )
212+ tags : list [str ] = Field (default_factory = list , description = "Memory tags" )
213+ update_time : int = Field (..., alias = "updateTime" , description = "Last update timestamp" )
214+ relativity : float = Field (..., description = "Memory relativity/similarity score" )
215+
216+
217+ class GetMessagesData (BaseModel ):
218+ """Data model for get messages response based on actual API."""
219+
220+ message_detail_list : list [MessageDetail ] = Field (
221+ default_factory = list , alias = "messageDetailList" , description = "List of message details"
222+ )
223+
224+
225+ class SearchMemoryData (BaseModel ):
226+ """Data model for search memory response based on actual API."""
227+
228+ memory_detail_list : list [MemoryDetail ] = Field (
229+ default_factory = list , alias = "memoryDetailList" , description = "List of memory details"
230+ )
231+ message_detail_list : list [MessageDetail ] | None = Field (
232+ None , alias = "messageDetailList" , description = "List of message details (usually None)"
233+ )
234+
235+
236+ class AddMessageData (BaseModel ):
237+ """Data model for add message response based on actual API."""
238+
239+ success : bool = Field (..., description = "Operation success status" )
240+
241+
242+ # ─── MemOS Response Models (Similar to OpenAI ChatCompletion) ──────────────────
243+
244+
245+ class MemOSGetMessagesResponse (BaseModel ):
246+ """Response model for get messages operation based on actual API."""
247+
248+ code : int = Field (..., description = "Response status code" )
249+ message : str = Field (..., description = "Response message" )
250+ data : GetMessagesData = Field (..., description = "Messages data" )
251+
252+ @property
253+ def messages (self ) -> list [MessageDetail ]:
254+ """Convenient access to message list."""
255+ return self .data .message_detail_list
256+
257+
258+ class MemOSSearchResponse (BaseModel ):
259+ """Response model for search memory operation based on actual API."""
260+
261+ code : int = Field (..., description = "Response status code" )
262+ message : str = Field (..., description = "Response message" )
263+ data : SearchMemoryData = Field (..., description = "Search results data" )
264+
265+ @property
266+ def memories (self ) -> list [MemoryDetail ]:
267+ """Convenient access to memory list."""
268+ return self .data .memory_detail_list
269+
270+
271+ class MemOSAddResponse (BaseModel ):
272+ """Response model for add message operation based on actual API."""
273+
274+ code : int = Field (..., description = "Response status code" )
275+ message : str = Field (..., description = "Response message" )
276+ data : AddMessageData = Field (..., description = "Add operation data" )
277+
278+ @property
279+ def success (self ) -> bool :
280+ """Convenient access to success status."""
281+ return self .data .success
0 commit comments