- Add OpenAI-compatible LLM integration for agent dialogue - Enhance survival mechanics with energy decay and feeding system - Update frontend debug client with improved UI - Add .gitignore rules for Unity and Serena 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
"""
|
|
Pydantic models for the JSON protocol.
|
|
Defines standardized structures for game events and messages.
|
|
"""
|
|
|
|
from enum import Enum
|
|
from typing import Any
|
|
from pydantic import BaseModel, Field
|
|
import time
|
|
|
|
|
|
class EventType(str, Enum):
|
|
"""Enumeration of all possible game event types."""
|
|
COMMENT = "comment"
|
|
TICK = "tick"
|
|
SYSTEM = "system"
|
|
ERROR = "error"
|
|
# Island survival events
|
|
AGENTS_UPDATE = "agents_update" # All agents status broadcast
|
|
AGENT_DIED = "agent_died" # An agent has died
|
|
AGENT_SPEAK = "agent_speak" # Agent says something (LLM response)
|
|
FEED = "feed" # User fed an agent
|
|
USER_UPDATE = "user_update" # User gold/status update
|
|
WORLD_UPDATE = "world_update" # World state update
|
|
CHECK = "check" # Status check response
|
|
|
|
|
|
class GameEvent(BaseModel):
|
|
"""
|
|
Standardized game event structure for WebSocket communication.
|
|
|
|
Attributes:
|
|
event_type: The type of event (comment, agent_response, tick, etc.)
|
|
timestamp: Unix timestamp when the event was created
|
|
data: Arbitrary payload data for the event
|
|
"""
|
|
event_type: str = Field(..., description="Type of the game event")
|
|
timestamp: float = Field(default_factory=time.time, description="Unix timestamp")
|
|
data: dict[str, Any] = Field(default_factory=dict, description="Event payload")
|
|
|
|
class Config:
|
|
json_schema_extra = {
|
|
"example": {
|
|
"event_type": "comment",
|
|
"timestamp": 1704067200.0,
|
|
"data": {"user": "User123", "message": "Attack!"}
|
|
}
|
|
}
|
|
|
|
|
|
class ClientMessage(BaseModel):
|
|
"""
|
|
Message structure for client-to-server communication.
|
|
|
|
Attributes:
|
|
action: The action the client wants to perform
|
|
payload: Data associated with the action
|
|
"""
|
|
action: str = Field(..., description="Action to perform")
|
|
payload: dict[str, Any] = Field(default_factory=dict, description="Action payload")
|