36f2aa76b3
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G796GsLCvJQKVN7hwV2cDx
20 lines
1.4 KiB
Python
20 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
# Single source of truth for poker logging operations. The REST API, Lyra's LLM
|
|
# tool specs, the human UI, and (later) an MCP wrapper all derive from this.
|
|
# `required` MUST match the `required` list in the matching tools.py spec.
|
|
# `rest` PATH MUST match the FastAPI route template verbatim.
|
|
CONTRACT_VERSION = 1
|
|
|
|
OPERATIONS: dict[str, dict] = {
|
|
"start_session": {"required": (), "llm_tool": "start_session", "rest": ("POST", "/session")},
|
|
"update_session": {"required": (), "llm_tool": "update_session", "rest": ("PATCH", "/session/{session_id}")},
|
|
"end_session": {"required": ("cash_out",), "llm_tool": "end_session", "rest": None},
|
|
"log_stack": {"required": ("amount",), "llm_tool": "log_stack", "rest": ("POST", "/session/stack")},
|
|
"add_buyin": {"required": ("amount",), "llm_tool": "add_buyin", "rest": ("POST", "/session/buyin")},
|
|
"log_hand": {"required": (), "llm_tool": "log_hand", "rest": ("POST", "/session/hand")},
|
|
"update_hand": {"required": ("id",), "llm_tool": None, "rest": ("PATCH", "/hand/{hand_id}")},
|
|
"add_read": {"required": ("note",), "llm_tool": "add_read", "rest": ("POST", "/session/read")},
|
|
"update_player": {"required": ("id",), "llm_tool": None, "rest": ("PATCH", "/player/{player_id}")},
|
|
}
|