mirror of
https://github.com/czl9707/build-your-own-openclaw.git
synced 2026-08-14 00:47:59 +00:00
38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
"""Session state container with persistence helpers."""
|
|
|
|
from dataclasses import dataclass
|
|
from typing import TYPE_CHECKING
|
|
|
|
from litellm.types.completion import ChatCompletionMessageParam as Message
|
|
|
|
from mybot.core.history import HistoryMessage
|
|
|
|
if TYPE_CHECKING:
|
|
from mybot.core.agent import Agent
|
|
from mybot.core.context import SharedContext
|
|
from mybot.core.events import EventSource
|
|
|
|
|
|
@dataclass
|
|
class SessionState:
|
|
"""Pure conversation state + persistence."""
|
|
|
|
session_id: str
|
|
agent: "Agent"
|
|
messages: list[Message]
|
|
source: "EventSource"
|
|
shared_context: "SharedContext"
|
|
|
|
def add_message(self, message: Message) -> None:
|
|
"""Add message to in-memory list + persist."""
|
|
self.messages.append(message)
|
|
history_msg = HistoryMessage.from_message(message)
|
|
self.shared_context.history_store.save_message(self.session_id, history_msg)
|
|
|
|
def build_messages(self) -> list[Message]:
|
|
"""Build messages list with system prompt."""
|
|
system_prompt = self.agent.agent_def.agent_md
|
|
messages: list[Message] = [{"role": "system", "content": system_prompt}]
|
|
messages.extend(self.messages)
|
|
return messages
|