Spaces:
Running
Running
| """์ธ๋ฌผ ์ ์ฒด์ฑ YAML ์คํค๋ง (ENOS) โ content/characters.yaml. | |
| kb_query ํญ๋ชฉ์ pre_kb ์ํ(status: pending)๋ก ํต๊ณผ์ํจ๋ค. | |
| """ | |
| from __future__ import annotations | |
| from typing import Optional | |
| from pydantic import BaseModel, ConfigDict, Field | |
| class KnowledgeItem(BaseModel): | |
| model_config = ConfigDict(extra="forbid") | |
| value: Optional[str] = None | |
| source: str = "static" # static | kb_query | |
| query: str = "" | |
| status: str = "" # kb_query๋ฉด "pending" (pre_kb) | |
| class Role(BaseModel): | |
| model_config = ConfigDict(extra="forbid") | |
| type: str = "" | |
| description: str = "" | |
| player_controlled: bool = False | |
| perspective: str = "" | |
| class Personality(BaseModel): | |
| model_config = ConfigDict(extra="forbid") | |
| traits: list[str] = Field(default_factory=list) | |
| strengths: list[str] = Field(default_factory=list) | |
| weaknesses: list[str] = Field(default_factory=list) | |
| class Speech(BaseModel): | |
| model_config = ConfigDict(extra="forbid") | |
| style: list[str] = Field(default_factory=list) | |
| tone: list[str] = Field(default_factory=list) | |
| pacing: list[str] = Field(default_factory=list) | |
| class CharacterSheet(BaseModel): | |
| # ์๋ณธ YAML์ ๋ถ๊ฐ ํ๋๊ฐ ์์ด๋ ์ฝํ ์ธ ๋ฅผ ์์ ํ์ง ์๊ณ ๋ฐ์๋ค์ธ๋ค (์ฝ๊ธฐ ์ ์ฉ ์์น) | |
| model_config = ConfigDict(extra="allow") | |
| id: str | |
| display_name: str | |
| aliases: list[str] = Field(default_factory=list) | |
| role: Role = Field(default_factory=Role) | |
| description: str = "" | |
| personality: Personality = Field(default_factory=Personality) | |
| speech: Speech = Field(default_factory=Speech) | |
| permanent_knowledge: list[KnowledgeItem] = Field(default_factory=list) | |
| immutable_constraints: list[KnowledgeItem] = Field(default_factory=list) | |
| class CharactersFile(BaseModel): | |
| model_config = ConfigDict(extra="allow") | |
| characters: list[CharacterSheet] | |