diff --git a/client/index.html b/client/index.html
index 0e2df1e..8e38945 100644
--- a/client/index.html
+++ b/client/index.html
@@ -347,32 +347,55 @@
const Card = ({ card, isBack = false }) => {
if (isBack || !card) {
return React.createElement('div', {
- className: 'card back'
+ className: 'card back',
+ style: {
+ backgroundColor: '#1e40af',
+ color: 'white',
+ fontSize: '24px',
+ fontWeight: 'bold'
+ }
}, '🂠');
}
- // Convert card notation to display format
- const convertCard = (cardStr) => {
+ const parseCard = (cardStr) => {
if (!cardStr || cardStr.length < 2) return cardStr;
const rank = cardStr.slice(0, -1);
- const suit = cardStr.slice(-1).toLowerCase();
+ const suit = cardStr.slice(-1);
const suitSymbols = {
- 's': 'â™ ',
- 'h': '♥',
- 'd': '♦',
- 'c': '♣'
+ 'h': '♥', // hearts
+ 'd': '♦', // diamonds
+ 'c': '♣', // clubs
+ 's': 'â™ ' // spades
};
- return rank + (suitSymbols[suit] || suit);
+ const rankSymbols = {
+ 'A': 'A', 'K': 'K', 'Q': 'Q', 'J': 'J',
+ 'T': '10', '9': '9', '8': '8', '7': '7', '6': '6'
+ };
+
+ return (rankSymbols[rank] || rank) + (suitSymbols[suit] || suit);
};
- const displayCard = convertCard(card);
- const isRed = displayCard.includes('♥') || displayCard.includes('♦');
+ const displayCard = parseCard(card);
+ const suit = card.slice(-1);
+ const isRed = suit === 'h' || suit === 'd';
return React.createElement('div', {
- className: `card ${isRed ? 'red' : ''}`
+ className: `card ${isRed ? 'red' : ''}`,
+ style: {
+ backgroundColor: 'white',
+ color: isRed ? '#dc2626' : '#1f2937',
+ fontSize: '14px',
+ fontWeight: 'bold',
+ border: '2px solid #374151',
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'center',
+ minHeight: '84px',
+ minWidth: '60px'
+ }
}, displayCard);
};
@@ -382,13 +405,14 @@
const safeState = state || 'WAITING';
const safeCards = Array.isArray(cards) ? cards : [];
- if (isCurrentPlayer) {
- console.log('Debug - Current player cards:', cards);
- console.log('Debug - Safe cards:', safeCards);
- console.log('Debug - Cards length:', safeCards.length);
- console.log('Debug - isCurrentPlayer:', isCurrentPlayer);
- console.log('Debug - Will show cards:', isCurrentPlayer && safeCards.length > 0);
- }
+ console.log(`PlayerSeat Debug - Player ${index}:`, {
+ player,
+ index,
+ isCurrentPlayer,
+ cardsLength: safeCards.length,
+ cards: safeCards,
+ willShowCards: isCurrentPlayer && safeCards.length > 0
+ });
return React.createElement('div', {
className: `player-seat bg-gray-800 rounded-lg p-4 text-white relative ${isCurrentTurn ? 'active' : ''} ${safeState !== 'ACTIVE' && safeState !== 'active' ? 'opacity-50' : ''}`
@@ -407,9 +431,28 @@
React.createElement('div', {
className: 'flex gap-1 justify-center mb-2'
},
- isCurrentPlayer && safeCards.length > 0
- ? safeCards.map((card, idx) => React.createElement(Card, { key: idx, card }))
- : [React.createElement(Card, { key: 0, isBack: true }), React.createElement(Card, { key: 1, isBack: true })]
+ (() => {
+ console.log(`Cards Render Debug - Player ${index}:`, {
+ isCurrentPlayer,
+ safeCardsLength: safeCards.length,
+ safeCards,
+ shouldShowCards: isCurrentPlayer && safeCards.length > 0
+ });
+
+ if (isCurrentPlayer && safeCards.length > 0) {
+ console.log(`Cards Render Debug - Player ${index} - Showing actual cards:`, safeCards);
+ return safeCards.map((card, idx) => {
+ console.log(`Cards Render Debug - Player ${index} - Creating card ${idx}: "${card}"`);
+ return React.createElement(Card, { key: idx, card });
+ });
+ } else {
+ console.log(`Cards Render Debug - Player ${index} - Showing card backs (isCurrentPlayer: ${isCurrentPlayer}, cardCount: ${safeCards.length})`);
+ return [
+ React.createElement(Card, { key: 0, isBack: true }),
+ React.createElement(Card, { key: 1, isBack: true })
+ ];
+ }
+ })()
),
// Stack and Bet Info
@@ -726,9 +769,14 @@
currentBet: (gameState.currentPot && gameState.currentPot[index]) || 0,
state: (gameState.playerStates && gameState.playerStates[index]) || 'WAITING',
cards: index === gameState.playerId ? (() => {
- console.log('PlayersList Debug - gameState.playerCards:', gameState.playerCards);
- console.log('PlayersList Debug - index:', index, 'playerId:', gameState.playerId);
- return gameState.playerCards || [];
+ console.log('PlayersLayout Debug - gameState.playerCards:', gameState.playerCards);
+ console.log('PlayersLayout Debug - index:', index, 'playerId:', gameState.playerId);
+ console.log('PlayersLayout Debug - playerCards type:', typeof gameState.playerCards);
+ console.log('PlayersLayout Debug - playerCards isArray:', Array.isArray(gameState.playerCards));
+ console.log('PlayersLayout Debug - playerCards JSON:', JSON.stringify(gameState.playerCards));
+ const cards = gameState.playerCards || [];
+ console.log('PlayersLayout Debug - Passing cards:', cards);
+ return cards;
})() : []
})
)
diff --git a/shortdeck_arena/__pycache__/hand_ranking.cpython-313.pyc b/shortdeck_arena/__pycache__/hand_ranking.cpython-313.pyc
index 885a8ac..67f6235 100644
Binary files a/shortdeck_arena/__pycache__/hand_ranking.cpython-313.pyc and b/shortdeck_arena/__pycache__/hand_ranking.cpython-313.pyc differ
diff --git a/shortdeck_arena/__pycache__/simulation.cpython-313.pyc b/shortdeck_arena/__pycache__/simulation.cpython-313.pyc
index e710493..283c399 100644
Binary files a/shortdeck_arena/__pycache__/simulation.cpython-313.pyc and b/shortdeck_arena/__pycache__/simulation.cpython-313.pyc differ
diff --git a/shortdeck_arena_history.jsonl b/shortdeck_arena_history.jsonl
index 1b4ab7b..5c4d9d7 100644
--- a/shortdeck_arena_history.jsonl
+++ b/shortdeck_arena_history.jsonl
@@ -122,3 +122,11 @@
{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["8dQc", "JsQd"], "board": "TsTcJdAdKh"}
{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["6dQd", "Jd6c"], "board": "AdJhThQs8s"}
{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["KsQs", "7sTh"], "board": "9c9dQh6sJs"}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["TsKd", "7s8h"], "board": "Qs9cAs7c8d"}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["Jc7c", "Ts9d"], "board": "KhKc6cTc7s"}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["KcJd", "JcAs"], "board": "Kd8h7h9s6s"}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "raise", "amount": 3}], "players": ["Agent0", "Agent1"], "player_cards": ["8cKd", "6d6h"], "board": "QsJsAd7cQh"}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["ThAd", "9cQs"], "board": "9h7d6c7hKs"}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 229}], "players": ["Agent0", "Agent1"], "player_cards": ["KdQc", "7cKh"], "board": "AsAdTd9s7d"}
+{"history": [{"pid": 2, "action": "small_blind", "amount": 1}, {"pid": 3, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "fold", "amount": 0}], "players": ["Agent0", "Agent1", "Agent2", "Agent3"], "player_cards": ["AdAh", "QdJh", "KsKd", "9s8s"], "board": "7hAs9hKcTc"}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["Td6d", "JhTs"], "board": "9hKd9cQhJd"}
diff --git a/shortdeck_server/__pycache__/main.cpython-313.pyc b/shortdeck_server/__pycache__/main.cpython-313.pyc
index 0311354..5cc3aae 100644
Binary files a/shortdeck_server/__pycache__/main.cpython-313.pyc and b/shortdeck_server/__pycache__/main.cpython-313.pyc differ
diff --git a/shortdeck_server/data/1efcf3d0-9d36-4816-9993-b764af3dc99d.jsonl b/shortdeck_server/data/1efcf3d0-9d36-4816-9993-b764af3dc99d.jsonl
new file mode 100644
index 0000000..5b11261
--- /dev/null
+++ b/shortdeck_server/data/1efcf3d0-9d36-4816-9993-b764af3dc99d.jsonl
@@ -0,0 +1,3 @@
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 2, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 2}]}
+{"history": [{"pid": 2, "action": "small_blind", "amount": 1}, {"pid": 3, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "fold", "amount": 0}]}
diff --git a/shortdeck_server/data/43b861da-49a5-442e-973a-4356990983b1.jsonl b/shortdeck_server/data/43b861da-49a5-442e-973a-4356990983b1.jsonl
new file mode 100644
index 0000000..32e3637
--- /dev/null
+++ b/shortdeck_server/data/43b861da-49a5-442e-973a-4356990983b1.jsonl
@@ -0,0 +1,7 @@
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 0, "action": "bet", "amount": 144}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 0, "action": "bet", "amount": 144}, {"pid": 1, "action": "call", "amount": 144}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 0, "action": "bet", "amount": 144}, {"pid": 1, "action": "call", "amount": 144}, {"pid": 0, "action": "bet", "amount": 237}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 0, "action": "bet", "amount": 144}, {"pid": 1, "action": "call", "amount": 144}, {"pid": 0, "action": "bet", "amount": 237}, {"pid": 1, "action": "call", "amount": 237}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 0, "action": "bet", "amount": 144}, {"pid": 1, "action": "call", "amount": 144}, {"pid": 0, "action": "bet", "amount": 237}, {"pid": 1, "action": "call", "amount": 237}, {"pid": 0, "action": "bet", "amount": 383}]}
diff --git a/shortdeck_server/data/7114e881-eaad-4351-bf62-beff2c9ba184.jsonl b/shortdeck_server/data/7114e881-eaad-4351-bf62-beff2c9ba184.jsonl
new file mode 100644
index 0000000..b67e596
--- /dev/null
+++ b/shortdeck_server/data/7114e881-eaad-4351-bf62-beff2c9ba184.jsonl
@@ -0,0 +1,24 @@
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "check", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "bet", "amount": 145}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "bet", "amount": 145}, {"pid": 1, "action": "call", "amount": 145}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "bet", "amount": 145}, {"pid": 1, "action": "call", "amount": 145}, {"pid": 1, "action": "bet", "amount": 290}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "bet", "amount": 145}, {"pid": 1, "action": "call", "amount": 145}, {"pid": 1, "action": "bet", "amount": 290}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "bet", "amount": 145}, {"pid": 1, "action": "call", "amount": 145}, {"pid": 1, "action": "bet", "amount": 290}, {"pid": 0, "action": "call", "amount": 290}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "bet", "amount": 145}, {"pid": 1, "action": "call", "amount": 145}, {"pid": 1, "action": "bet", "amount": 290}, {"pid": 0, "action": "call", "amount": 290}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "bet", "amount": 145}, {"pid": 1, "action": "call", "amount": 145}, {"pid": 1, "action": "bet", "amount": 290}, {"pid": 0, "action": "call", "amount": 290}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "raise", "amount": 3}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "raise", "amount": 3}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "bet", "amount": 3}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "bet", "amount": 3}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 229}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 229}, {"pid": 1, "action": "call", "amount": 228}]}
+{"history": [{"pid": 2, "action": "small_blind", "amount": 1}, {"pid": 3, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "fold", "amount": 0}]}
diff --git a/shortdeck_server/data/7315a6e2-5014-438f-b152-d927797f0bb8.jsonl b/shortdeck_server/data/7315a6e2-5014-438f-b152-d927797f0bb8.jsonl
new file mode 100644
index 0000000..9be0ea4
--- /dev/null
+++ b/shortdeck_server/data/7315a6e2-5014-438f-b152-d927797f0bb8.jsonl
@@ -0,0 +1,55 @@
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 233}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 233}, {"pid": 1, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 27}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 27}, {"pid": 1, "action": "raise", "amount": 219}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 27}, {"pid": 1, "action": "raise", "amount": 219}, {"pid": 0, "action": "call", "amount": 193}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 27}, {"pid": 1, "action": "raise", "amount": 219}, {"pid": 0, "action": "call", "amount": 193}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 27}, {"pid": 1, "action": "raise", "amount": 219}, {"pid": 0, "action": "call", "amount": 193}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 27}, {"pid": 1, "action": "raise", "amount": 219}, {"pid": 0, "action": "call", "amount": 193}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "bet", "amount": 281}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 27}, {"pid": 1, "action": "raise", "amount": 219}, {"pid": 0, "action": "call", "amount": 193}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "bet", "amount": 281}, {"pid": 0, "action": "call", "amount": 281}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 0, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 0, "action": "check", "amount": 0}, {"pid": 0, "action": "bet", "amount": 217}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 0, "action": "check", "amount": 0}, {"pid": 0, "action": "bet", "amount": 217}, {"pid": 1, "action": "call", "amount": 217}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 0, "action": "check", "amount": 0}, {"pid": 0, "action": "bet", "amount": 217}, {"pid": 1, "action": "call", "amount": 217}, {"pid": 0, "action": "bet", "amount": 219}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 0, "action": "check", "amount": 0}, {"pid": 0, "action": "bet", "amount": 217}, {"pid": 1, "action": "call", "amount": 217}, {"pid": 0, "action": "bet", "amount": 219}, {"pid": 1, "action": "call", "amount": 219}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "bet", "amount": 5}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "bet", "amount": 5}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "bet", "amount": 11}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "bet", "amount": 11}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "bet", "amount": 18}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "bet", "amount": 18}, {"pid": 1, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "raise", "amount": 24}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "raise", "amount": 24}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 2, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "bet", "amount": 4}]}
+{"history": [{"pid": 2, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "bet", "amount": 4}, {"pid": 2, "action": "call", "amount": 3}]}
+{"history": [{"pid": 2, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "bet", "amount": 4}, {"pid": 2, "action": "call", "amount": 3}, {"pid": 0, "action": "raise", "amount": 459}]}
+{"history": [{"pid": 2, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "bet", "amount": 4}, {"pid": 2, "action": "call", "amount": 3}, {"pid": 0, "action": "raise", "amount": 459}]}
+{"history": [{"pid": 2, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "bet", "amount": 4}, {"pid": 2, "action": "call", "amount": 3}, {"pid": 0, "action": "raise", "amount": 459}, {"pid": 1, "action": "call", "amount": 457}]}
+{"history": [{"pid": 2, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "bet", "amount": 4}, {"pid": 2, "action": "call", "amount": 3}, {"pid": 0, "action": "raise", "amount": 459}, {"pid": 1, "action": "call", "amount": 457}, {"pid": 2, "action": "call", "amount": 457}]}
+{"history": [{"pid": 2, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "bet", "amount": 4}, {"pid": 2, "action": "call", "amount": 3}, {"pid": 0, "action": "raise", "amount": 459}, {"pid": 1, "action": "call", "amount": 457}, {"pid": 2, "action": "call", "amount": 457}, {"pid": 0, "action": "bet", "amount": 461}]}
+{"history": [{"pid": 2, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "bet", "amount": 4}, {"pid": 2, "action": "call", "amount": 3}, {"pid": 0, "action": "raise", "amount": 459}, {"pid": 1, "action": "call", "amount": 457}, {"pid": 2, "action": "call", "amount": 457}, {"pid": 0, "action": "bet", "amount": 461}, {"pid": 1, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 2, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "bet", "amount": 4}, {"pid": 2, "action": "call", "amount": 3}, {"pid": 0, "action": "raise", "amount": 459}, {"pid": 1, "action": "call", "amount": 457}, {"pid": 2, "action": "call", "amount": 457}, {"pid": 0, "action": "bet", "amount": 461}, {"pid": 1, "action": "fold", "amount": 0}, {"pid": 2, "action": "call", "amount": 461}]}
+{"history": [{"pid": 2, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "bet", "amount": 4}, {"pid": 2, "action": "call", "amount": 3}, {"pid": 0, "action": "raise", "amount": 459}, {"pid": 1, "action": "call", "amount": 457}, {"pid": 2, "action": "call", "amount": 457}, {"pid": 0, "action": "bet", "amount": 461}, {"pid": 1, "action": "fold", "amount": 0}, {"pid": 2, "action": "call", "amount": 461}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 2, "action": "call", "amount": 2}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 2, "action": "call", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 2, "action": "call", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "fold", "amount": 0}]}
diff --git a/shortdeck_server/data/a60922bc-f045-4301-83fa-984ba0d306cd.jsonl b/shortdeck_server/data/a60922bc-f045-4301-83fa-984ba0d306cd.jsonl
new file mode 100644
index 0000000..0749d93
--- /dev/null
+++ b/shortdeck_server/data/a60922bc-f045-4301-83fa-984ba0d306cd.jsonl
@@ -0,0 +1,12 @@
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "allin", "amount": 998}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "allin", "amount": 998}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "check", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "bet", "amount": 347}]}
diff --git a/shortdeck_server/data/f4a96359-0f28-4eb6-9cac-706eab72d5fa.jsonl b/shortdeck_server/data/f4a96359-0f28-4eb6-9cac-706eab72d5fa.jsonl
new file mode 100644
index 0000000..da62715
--- /dev/null
+++ b/shortdeck_server/data/f4a96359-0f28-4eb6-9cac-706eab72d5fa.jsonl
@@ -0,0 +1,33 @@
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 271}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 271}, {"pid": 1, "action": "call", "amount": 270}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 271}, {"pid": 1, "action": "call", "amount": 270}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 271}, {"pid": 1, "action": "call", "amount": 270}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "bet", "amount": 541}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 271}, {"pid": 1, "action": "call", "amount": 270}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "bet", "amount": 541}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "check", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "check", "amount": 0}, {"pid": 0, "action": "bet", "amount": 79}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "check", "amount": 0}, {"pid": 0, "action": "bet", "amount": 79}, {"pid": 1, "action": "call", "amount": 79}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "check", "amount": 0}, {"pid": 0, "action": "bet", "amount": 79}, {"pid": 1, "action": "call", "amount": 79}, {"pid": 0, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "bet", "amount": 254}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "bet", "amount": 254}, {"pid": 1, "action": "allin", "amount": 1190}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "bet", "amount": 254}, {"pid": 1, "action": "allin", "amount": 1190}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}]}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 0, "action": "bet", "amount": 52}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 0, "action": "bet", "amount": 52}, {"pid": 1, "action": "raise", "amount": 104}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 0, "action": "bet", "amount": 52}, {"pid": 1, "action": "raise", "amount": 104}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 0, "action": "bet", "amount": 52}, {"pid": 1, "action": "raise", "amount": 104}, {"pid": 0, "action": "fold", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 83}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 83}, {"pid": 1, "action": "call", "amount": 82}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 83}, {"pid": 1, "action": "call", "amount": 82}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 83}, {"pid": 1, "action": "call", "amount": 82}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}]}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 83}, {"pid": 1, "action": "call", "amount": 82}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}, {"pid": 1, "action": "check", "amount": 0}]}
diff --git a/shortdeck_server/main.py b/shortdeck_server/main.py
index 5aaa0e9..e54f06b 100644
--- a/shortdeck_server/main.py
+++ b/shortdeck_server/main.py
@@ -114,6 +114,15 @@ def get_game_state(player_id):
return state
+@app.get("/info/{player_id}", response_model=Dict[str, Any])
+def get_info(player_id: int):
+ try:
+ state = GAME.info(player_id)
+ return state
+ except Exception as e:
+ raise HTTPException(status_code=500, detail=str(e)) from e
+
+
@app.post("/apply_action", response_model=Dict[str, Any])
def apply_action(req: ActionRequest):
try:
diff --git a/shortdeck_server/shortdeck_arena_history.jsonl b/shortdeck_server/shortdeck_arena_history.jsonl
new file mode 100644
index 0000000..a5ef8b4
--- /dev/null
+++ b/shortdeck_server/shortdeck_arena_history.jsonl
@@ -0,0 +1,25 @@
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["AsQd", "6s9h"], "board": "QcJd9sTsKc"}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 2, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 2}], "players": ["Agent0", "Agent1", "Agent2"], "player_cards": ["6cAd", "Ah7s", "QcKs"], "board": "TsAsKc6h6d"}
+{"history": [{"pid": 2, "action": "small_blind", "amount": 1}, {"pid": 3, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "fold", "amount": 0}], "players": ["Agent0", "Agent1", "Agent2", "Agent3"], "player_cards": ["KcTh", "AhQh", "7s7h", "KhJd"], "board": "QcJh6c8d7d"}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["6cJc", "9hKd"], "board": "Qh7sQc9sAd"}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["KhJc", "9sKc"], "board": "8dJh6sQs6h"}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["6hJd", "Tc7h"], "board": "JcAd8hJhTd"}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 233}], "players": ["Agent0", "Agent1"], "player_cards": ["9h9d", "9sKs"], "board": "7dJc8s7h7c"}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 27}], "players": ["Agent0", "Agent1"], "player_cards": ["AdKc", "TcJd"], "board": "Qh6hJsQs9c"}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["KdAd", "Qs6h"], "board": "KcJhKh9sAs"}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["AcKh", "9c7h"], "board": "QsJhQdAh6s"}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["Kd7d", "8dJc"], "board": "AsTsJhKsAh"}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["TdKs", "Qh8d"], "board": "8c7d9dAdTh"}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["7dQd", "Ah8s"], "board": "8d6cJhQsAd"}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["6d9d", "Jh7c"], "board": "KhTh6sAh9h"}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "raise", "amount": 24}], "players": ["Agent0", "Agent1"], "player_cards": ["JsAh", "7c8c"], "board": "8h6dJh6cTs"}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["Td8s", "8dKs"], "board": "9c9dQs7sJs"}
+{"history": [{"pid": 2, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "bet", "amount": 4}], "players": ["Agent0", "Agent1", "Agent2"], "player_cards": ["8dAc", "8sAh", "Js7c"], "board": "7dJhTsQcAs"}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 2, "action": "call", "amount": 2}], "players": ["Agent0", "Agent1", "Agent2"], "player_cards": ["6c9d", "8sQh", "7d7s"], "board": "JhKdJd9c9s"}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 271}], "players": ["Agent0", "Agent1"], "player_cards": ["QcTd", "KsKd"], "board": "7d7cJdJc7h"}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["Qh6s", "7sKd"], "board": "TdJcAc7c9s"}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["Kh7d", "JhTc"], "board": "7sQd7hJs9s"}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["ThQc", "9s8d"], "board": "TsKd9cKs7h"}
+{"history": [{"pid": 1, "action": "small_blind", "amount": 1}, {"pid": 0, "action": "big_blind", "amount": 2}, {"pid": 1, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["AsTh", "7dTs"], "board": "Kc9hQsTcTd"}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "call", "amount": 1}], "players": ["Agent0", "Agent1"], "player_cards": ["7hQh", "QsJd"], "board": "6h7c9dTs6c"}
+{"history": [{"pid": 0, "action": "small_blind", "amount": 1}, {"pid": 1, "action": "big_blind", "amount": 2}, {"pid": 0, "action": "raise", "amount": 83}], "players": ["Agent0", "Agent1"], "player_cards": ["7c6d", "8sAc"], "board": "Th6sJhJdKd"}