Fixed SD RPG

This commit is contained in:
2026-06-04 08:05:06 +03:00
parent d4cd8f02f4
commit 6189a5fb74
62 changed files with 6969 additions and 552 deletions
+54
View File
@@ -0,0 +1,54 @@
from services.memory import narrator_message_content, parse_narrator_message
from routers.chat import messages_for_llm
from services.rpg_state import format_narrator_outcome_for_llm
def test_messages_for_llm_includes_narrator_ruling_not_original_only():
resolution = (
"Luna's attempt backfires; people roll their eyes and an elderly man pats her head."
)
narrator_json = narrator_message_content(
{
"roll": 5,
"outcome": "failure",
"text": resolution,
"original_intent": "bulldoze through the line",
}
)
history = [
{"role": "system", "content": "static"},
{
"role": "user",
"content": "Луна влезла без очереди, распугивая всех",
"action_resolution": {
"intent_text": "Луна влезла без очереди",
"roll": 5,
"outcome": "failure",
"resolution_text": resolution,
},
},
{"role": "narrator", "content": narrator_json},
]
llm = messages_for_llm(history, "system+runtime")
user_msgs = [m for m in llm if m["role"] == "user"]
assert len(user_msgs) == 2
assert "canonical outcome" in user_msgs[0]["content"].lower()
assert "Луна влезла" in user_msgs[0]["content"]
assert "MANDATORY" in user_msgs[1]["content"]
assert "backfires" in user_msgs[1]["content"]
assert "Do NOT write a success version" in user_msgs[1]["content"]
def test_format_narrator_failure_wording():
text = format_narrator_outcome_for_llm(
{"roll": 5, "outcome": "failure", "text": "It failed."}
)
assert "FAILED" in text
assert "Do NOT write a success version" in text
def test_parse_narrator_message_roundtrip():
raw = narrator_message_content({"roll": 12, "outcome": "success", "text": "OK"})
data = parse_narrator_message(raw)
assert data["roll"] == 12
assert data["text"] == "OK"