story_event_schema.py 644 B

1234567891011121314151617181920212223242526
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from __future__ import annotations
  4. from typing import Any, Dict, Literal
  5. from pydantic import BaseModel, Field
  6. class StoryEvent(BaseModel):
  7. event_id: str
  8. chapter: int = Field(ge=1)
  9. event_type: Literal[
  10. "character_state_changed",
  11. "relationship_changed",
  12. "world_rule_revealed",
  13. "world_rule_broken",
  14. "power_breakthrough",
  15. "artifact_obtained",
  16. "promise_created",
  17. "promise_paid_off",
  18. "open_loop_created",
  19. "open_loop_closed",
  20. ]
  21. subject: str
  22. payload: Dict[str, Any] = Field(default_factory=dict)