44context management, and question suggestions.
55"""
66
7- from datetime import datetime
7+ from datetime import UTC , datetime
88from enum import Enum
99from typing import Any
1010from uuid import uuid4
@@ -132,9 +132,9 @@ def to_output( # pylint: disable=too-many-arguments,too-many-positional-argumen
132132 ) -> "ConversationSessionOutput" :
133133 """Convert input to output schema using Pydantic 2+ model validation."""
134134 if created_at is None :
135- created_at = datetime .utcnow ( )
135+ created_at = datetime .now ( UTC )
136136 if updated_at is None :
137- updated_at = datetime .utcnow ( )
137+ updated_at = datetime .now ( UTC )
138138
139139 # Use model_dump() to get all input data, then update with additional fields
140140 data = self .model_dump ()
@@ -163,8 +163,8 @@ class ConversationSessionOutput(BaseModel):
163163 max_messages : int = Field (..., description = "Maximum number of messages" )
164164 is_archived : bool = Field (default = False , description = "Whether the session is archived" )
165165 is_pinned : bool = Field (default = False , description = "Whether the session is pinned" )
166- created_at : datetime = Field (default_factory = datetime .utcnow , description = "Creation timestamp" )
167- updated_at : datetime = Field (default_factory = datetime .utcnow , description = "Last update timestamp" )
166+ created_at : datetime = Field (default_factory = lambda : datetime .now ( UTC ) , description = "Creation timestamp" )
167+ updated_at : datetime = Field (default_factory = lambda : datetime .now ( UTC ) , description = "Last update timestamp" )
168168 metadata : dict [str , Any ] = Field (default_factory = dict , description = "Additional metadata" )
169169 message_count : int = Field (default = 0 , description = "Number of messages in the session" )
170170
@@ -234,7 +234,7 @@ class ConversationMessageInput(BaseModel):
234234 """Input schema for conversation messages."""
235235
236236 session_id : UUID4 = Field (..., description = "ID of the session" )
237- content : str = Field (..., min_length = 1 , max_length = 10000 , description = "Message content" )
237+ content : str = Field (..., min_length = 1 , max_length = 100000 , description = "Message content" )
238238 role : MessageRole = Field (..., description = "Role of the message sender" )
239239 message_type : MessageType = Field (..., description = "Type of message" )
240240 metadata : MessageMetadata | dict [str , Any ] | None = Field (default = None , description = "Message metadata" )
@@ -246,7 +246,7 @@ class ConversationMessageInput(BaseModel):
246246 def to_output (self , message_id : UUID4 , created_at : datetime | None = None ) -> "ConversationMessageOutput" :
247247 """Convert input to output schema using Pydantic 2+ model validation."""
248248 if created_at is None :
249- created_at = datetime .utcnow ( )
249+ created_at = datetime .now ( UTC )
250250
251251 # Use model_dump() to get all input data, then update with additional fields
252252 data = self .model_dump ()
@@ -263,7 +263,7 @@ class ConversationMessageOutput(BaseModel):
263263 content : str = Field (..., description = "Message content" )
264264 role : MessageRole = Field (..., description = "Role of the message sender" )
265265 message_type : MessageType = Field (..., description = "Type of message" )
266- created_at : datetime = Field (default_factory = datetime .utcnow , description = "Creation timestamp" )
266+ created_at : datetime = Field (default_factory = lambda : datetime .now ( UTC ) , description = "Creation timestamp" )
267267 metadata : MessageMetadata | None = Field (default = None , description = "Message metadata" )
268268 token_count : int | None = Field (default = None , description = "Token count for this message" )
269269 execution_time : float | None = Field (default = None , description = "Execution time in seconds" )
@@ -406,7 +406,7 @@ class ExportOutput(BaseModel):
406406 session_data : ConversationSessionOutput = Field (..., description = "Session information" )
407407 messages : list [ConversationMessageOutput ] = Field (..., description = "All messages in session" )
408408 export_format : ExportFormat = Field (..., description = "Format of the export" )
409- export_timestamp : datetime = Field (default_factory = datetime .utcnow , description = "Export timestamp" )
409+ export_timestamp : datetime = Field (default_factory = lambda : datetime .now ( UTC ) , description = "Export timestamp" )
410410 metadata : dict [str , Any ] = Field (default_factory = dict , description = "Export metadata" )
411411
412412
@@ -463,7 +463,7 @@ class ConversationSummaryOutput(BaseModel):
463463 important_decisions : list [str ] = Field (default_factory = list , description = "Important decisions made" )
464464 unresolved_questions : list [str ] = Field (default_factory = list , description = "Questions still unresolved" )
465465 summary_strategy : SummarizationStrategy = Field (..., description = "Strategy used for summarization" )
466- created_at : datetime = Field (default_factory = datetime .utcnow , description = "Summary creation timestamp" )
466+ created_at : datetime = Field (default_factory = lambda : datetime .now ( UTC ) , description = "Summary creation timestamp" )
467467 metadata : dict [str , Any ] = Field (default_factory = dict , description = "Additional summary metadata" )
468468
469469 @classmethod
@@ -609,7 +609,7 @@ class ConversationExportOutput(BaseModel):
609609 messages : list [ConversationMessageOutput ] = Field (..., description = "Exported messages" )
610610 summaries : list [ConversationSummaryOutput ] = Field (default_factory = list , description = "Conversation summaries" )
611611 export_format : ExportFormat = Field (..., description = "Format of the export" )
612- export_timestamp : datetime = Field (default_factory = datetime .utcnow , description = "Export timestamp" )
612+ export_timestamp : datetime = Field (default_factory = lambda : datetime .now ( UTC ) , description = "Export timestamp" )
613613 total_messages : int = Field (..., ge = 0 , description = "Total number of messages exported" )
614614 total_tokens : int = Field (default = 0 , ge = 0 , description = "Total tokens in exported content" )
615615 file_size_bytes : int = Field (default = 0 , ge = 0 , description = "Size of exported file in bytes" )
0 commit comments