rockyaaos's picture
ChemGraph Loop: guarded real-agent API (EMT/TBLite single-point energy)
c509967 verified
Raw
History Blame Contribute Delete
1.64 kB
"""
Pydantic schemas for ChemGraph session memory.
"""
from datetime import datetime
from typing import Optional
from pydantic import BaseModel, Field
class SessionMessage(BaseModel):
"""A single message in a session conversation."""
role: str = Field(description="Message role: 'human', 'ai', or 'tool'")
content: str = Field(description="Message content text")
tool_name: Optional[str] = Field(
default=None, description="Tool name if role is 'tool'"
)
timestamp: datetime = Field(default_factory=datetime.now)
class Session(BaseModel):
"""Full session record with messages and metadata."""
session_id: str = Field(description="Unique session identifier (UUID)")
title: str = Field(
default="", description="Human-readable session title (auto-generated)"
)
model_name: str = Field(description="LLM model used")
workflow_type: str = Field(description="Workflow type used")
created_at: datetime = Field(default_factory=datetime.now)
updated_at: datetime = Field(default_factory=datetime.now)
messages: list[SessionMessage] = Field(
default_factory=list, description="Conversation messages"
)
log_dir: Optional[str] = Field(
default=None, description="Path to session log directory"
)
query_count: int = Field(default=0, description="Number of user queries")
class SessionSummary(BaseModel):
"""Lightweight session summary for listing sessions."""
session_id: str
title: str
model_name: str
workflow_type: str
created_at: datetime
updated_at: datetime
query_count: int
message_count: int