@molteee/arena-tools 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/CLAUDE.md +11 -0
- package/dist/commands/challenge.js +12 -10
- package/dist/commands/challenge.js.map +1 -1
- package/dist/commands/claim-timeout.js +2 -2
- package/dist/commands/claim-timeout.js.map +1 -1
- package/dist/commands/find-game.js +2 -2
- package/dist/commands/find-game.js.map +1 -1
- package/dist/commands/get-game.js +19 -9
- package/dist/commands/get-game.js.map +1 -1
- package/dist/commands/poker-step.js +111 -40
- package/dist/commands/poker-step.js.map +1 -1
- package/dist/commands/poker.js +16 -16
- package/dist/commands/poker.js.map +1 -1
- package/dist/commands/respond.js +60 -28
- package/dist/commands/respond.js.map +1 -1
- package/dist/config.js +4 -2
- package/dist/config.js.map +1 -1
- package/dist/contracts.d.ts +198 -0
- package/dist/contracts.js +115 -0
- package/dist/contracts.js.map +1 -1
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/bin/CLAUDE.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<claude-mem-context>
|
|
2
|
+
# Recent Activity
|
|
3
|
+
|
|
4
|
+
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
|
|
5
|
+
|
|
6
|
+
### Feb 12, 2026
|
|
7
|
+
|
|
8
|
+
| ID | Time | T | Title | Read |
|
|
9
|
+
|----|------|---|-------|------|
|
|
10
|
+
| #3457 | 8:25 PM | 🔵 | Arena Tools Binary Entry Point Configuration | ~280 |
|
|
11
|
+
</claude-mem-context>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { encodeFunctionData, parseEther, getAddress as checksumAddress } from "viem";
|
|
3
3
|
import { CONTRACTS, GAME_CONTRACTS, GAME_TYPES } from "../config.js";
|
|
4
4
|
import { escrowAbi } from "../contracts.js";
|
|
5
|
-
import {
|
|
5
|
+
import { getAddress } from "../client.js";
|
|
6
6
|
import { sendTx } from "../utils/tx.js";
|
|
7
7
|
import { ok, fail } from "../utils/output.js";
|
|
8
8
|
export async function challengeCommand(opponent, wager, gameType) {
|
|
@@ -18,19 +18,21 @@ export async function challengeCommand(opponent, wager, gameType) {
|
|
|
18
18
|
functionName: "createMatch",
|
|
19
19
|
args: [checksumAddress(opponent), gameContract],
|
|
20
20
|
});
|
|
21
|
-
const { hash } = await sendTx({
|
|
21
|
+
const { hash, logs } = await sendTx({
|
|
22
22
|
to: CONTRACTS.Escrow,
|
|
23
23
|
data,
|
|
24
24
|
value: wagerWei,
|
|
25
25
|
});
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
26
|
+
// Parse matchId from the MatchCreated event in tx logs (topics[1]).
|
|
27
|
+
// This is race-safe — reads directly from our own tx receipt, not from global state.
|
|
28
|
+
let matchId = -1;
|
|
29
|
+
for (const log of logs) {
|
|
30
|
+
if (log.address.toLowerCase() === CONTRACTS.Escrow.toLowerCase() && log.topics.length > 1) {
|
|
31
|
+
// First indexed param in MatchCreated event is the matchId
|
|
32
|
+
matchId = Number(BigInt(log.topics[1]));
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
34
36
|
ok({
|
|
35
37
|
action: "challenge",
|
|
36
38
|
matchId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"challenge.js","sourceRoot":"","sources":["../../src/commands/challenge.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,MAAM,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"challenge.js","sourceRoot":"","sources":["../../src/commands/challenge.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,MAAM,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB,EAAE,KAAa,EAAE,QAAgB;IACpF,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAClC,IAAI,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,sBAAsB,QAAQ,mCAAmC,EAAE,mBAAmB,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,YAAY,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,MAAM,IAAI,GAAG,kBAAkB,CAAC;QAC5B,GAAG,EAAE,SAAS;QACd,YAAY,EAAE,aAAa;QAC3B,IAAI,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;KAClD,CAAC,CAAC;IAEH,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC;QAChC,EAAE,EAAE,SAAS,CAAC,MAAM;QACpB,IAAI;QACJ,KAAK,EAAE,QAAQ;KAClB,CAAC,CAAC;IAEH,oEAAoE;IACpE,qFAAqF;IACrF,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;IACjB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxF,2DAA2D;YAC3D,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;YACzC,MAAM;QACV,CAAC;IACL,CAAC;IAED,EAAE,CAAC;QACC,MAAM,EAAE,WAAW;QACnB,OAAO;QACP,UAAU,EAAE,OAAO;QACnB,QAAQ;QACR,QAAQ,EAAE,EAAE;QACZ,KAAK;QACL,MAAM,EAAE,IAAI;KACf,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// arena-tools claim-timeout — claim a timeout win for any game type
|
|
2
2
|
import { encodeFunctionData } from "viem";
|
|
3
3
|
import { CONTRACTS, GAME_TYPES } from "../config.js";
|
|
4
|
-
import { rpsGameAbi,
|
|
4
|
+
import { rpsGameAbi, pokerGameV2Abi, auctionGameAbi } from "../contracts.js";
|
|
5
5
|
import { sendTx } from "../utils/tx.js";
|
|
6
6
|
import { ok, fail } from "../utils/output.js";
|
|
7
7
|
export async function claimTimeoutCommand(gameType, gameId) {
|
|
@@ -11,7 +11,7 @@ export async function claimTimeoutCommand(gameType, gameId) {
|
|
|
11
11
|
}
|
|
12
12
|
const contractMap = {
|
|
13
13
|
rps: { address: CONTRACTS.RPSGame, abi: rpsGameAbi },
|
|
14
|
-
poker: { address: CONTRACTS.
|
|
14
|
+
poker: { address: CONTRACTS.PokerGameV2, abi: pokerGameV2Abi },
|
|
15
15
|
auction: { address: CONTRACTS.AuctionGame, abi: auctionGameAbi },
|
|
16
16
|
};
|
|
17
17
|
const { address, abi } = contractMap[gt];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claim-timeout.js","sourceRoot":"","sources":["../../src/commands/claim-timeout.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"claim-timeout.js","sourceRoot":"","sources":["../../src/commands/claim-timeout.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAgB,EAAE,MAAc;IACtE,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAClC,IAAI,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,sBAAsB,QAAQ,mCAAmC,EAAE,mBAAmB,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,WAAW,GAAyD;QACtE,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE;QACpD,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE;QAC9D,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE;KACnE,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAEzC,MAAM,IAAI,GAAG,kBAAkB,CAAC;QAC5B,GAAG;QACH,YAAY,EAAE,cAAc;QAC5B,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACzB,CAAC,CAAC;IAEH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC;QAC1B,EAAE,EAAE,OAAO;QACX,IAAI;KACP,CAAC,CAAC;IAEH,EAAE,CAAC;QACC,MAAM,EAAE,eAAe;QACvB,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;QACxB,MAAM,EAAE,IAAI;KACf,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// This is a read-only command (no PRIVATE_KEY needed).
|
|
4
4
|
import { CONTRACTS, GAME_CONTRACTS } from "../config.js";
|
|
5
5
|
import { getPublicClient } from "../client.js";
|
|
6
|
-
import { escrowAbi, rpsGameAbi,
|
|
6
|
+
import { escrowAbi, rpsGameAbi, pokerGameV2Abi, auctionGameAbi, } from "../contracts.js";
|
|
7
7
|
import { ok, fail } from "../utils/output.js";
|
|
8
8
|
// Map contract address (lowercased) -> game type name
|
|
9
9
|
const CONTRACT_TO_TYPE = Object.fromEntries(Object.entries(GAME_CONTRACTS).map(([name, addr]) => [
|
|
@@ -13,7 +13,7 @@ const CONTRACT_TO_TYPE = Object.fromEntries(Object.entries(GAME_CONTRACTS).map((
|
|
|
13
13
|
// Map game type -> ABI
|
|
14
14
|
const TYPE_TO_ABI = {
|
|
15
15
|
rps: rpsGameAbi,
|
|
16
|
-
poker:
|
|
16
|
+
poker: pokerGameV2Abi,
|
|
17
17
|
auction: auctionGameAbi,
|
|
18
18
|
};
|
|
19
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-game.js","sourceRoot":"","sources":["../../src/commands/find-game.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,2EAA2E;AAC3E,uDAAuD;AACvD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACH,SAAS,EACT,UAAU,EACV,
|
|
1
|
+
{"version":3,"file":"find-game.js","sourceRoot":"","sources":["../../src/commands/find-game.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,2EAA2E;AAC3E,uDAAuD;AACvD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACH,SAAS,EACT,UAAU,EACV,cAAc,EACd,cAAc,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE9C,sDAAsD;AACtD,MAAM,gBAAgB,GAA2B,MAAM,CAAC,WAAW,CAC/D,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;IACjD,IAAI,CAAC,WAAW,EAAE;IAClB,IAAI;CACP,CAAC,CACL,CAAC;AAEF,uBAAuB;AACvB,MAAM,WAAW,GAAwB;IACrC,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,cAAc;IACrB,OAAO,EAAE,cAAc;CAC1B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe;IACjD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAE5B,qDAAqD;IACrD,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC;QACrC,OAAO,EAAE,SAAS,CAAC,MAAM;QACzB,GAAG,EAAE,SAAS;QACd,YAAY,EAAE,UAAU;QACxB,IAAI,EAAE,CAAC,GAAG,CAAC;KACd,CAAC,CAAQ,CAAC;IAEX,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IAClD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,uEAAuE;QACvE,IAAI,CACA,iCAAiC,OAAO,kDAAkD,EAC1F,aAAa,CAChB,CAAC;QACF,OAAO;IACX,CAAC;IAED,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAElC,yEAAyE;IACzE,sDAAsD;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC;gBACpC,OAAO,EAAE,YAAY;gBACrB,GAAG;gBACH,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACpB,CAAC,CAAQ,CAAC;YAEX,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjD,EAAE,CAAC;oBACC,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;oBACxB,QAAQ;oBACR,MAAM,EAAE,CAAC;oBACT,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;oBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;iBACxB,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;QACL,CAAC;QACD,MAAM,CAAC;YACH,0DAA0D;YAC1D,MAAM;QACV,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,IAAI,CACA,2BAA2B,OAAO,iFAAiF,EACnH,gBAAgB,CACnB,CAAC;AACN,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// arena-tools get-game — get game state for RPS, Poker, or Auction
|
|
1
|
+
// arena-tools get-game — get game state for RPS, Poker (Budget V2), or Auction
|
|
2
2
|
import { formatEther } from "viem";
|
|
3
3
|
import { getPublicClient } from "../client.js";
|
|
4
4
|
import { CONTRACTS } from "../config.js";
|
|
5
|
-
import { rpsGameAbi,
|
|
5
|
+
import { rpsGameAbi, pokerGameV2Abi, auctionGameAbi } from "../contracts.js";
|
|
6
6
|
import { ok, fail } from "../utils/output.js";
|
|
7
7
|
// RPS + Auction phases: Commit=0, Reveal=1, Complete=2
|
|
8
8
|
const PHASE_NAMES = ["Commit", "Reveal", "Complete"];
|
|
@@ -38,32 +38,42 @@ export async function getGameCommand(gameType, gameId) {
|
|
|
38
38
|
}
|
|
39
39
|
else if (gt === "poker") {
|
|
40
40
|
const game = (await client.readContract({
|
|
41
|
-
address: CONTRACTS.
|
|
42
|
-
abi:
|
|
41
|
+
address: CONTRACTS.PokerGameV2,
|
|
42
|
+
abi: pokerGameV2Abi,
|
|
43
43
|
functionName: "getGame",
|
|
44
44
|
args: [id],
|
|
45
45
|
}));
|
|
46
46
|
ok({
|
|
47
47
|
gameType: "poker",
|
|
48
|
+
version: "v2-budget",
|
|
48
49
|
gameId: Number(id),
|
|
49
50
|
matchId: Number(game.escrowMatchId),
|
|
50
51
|
player1: game.player1,
|
|
51
52
|
player2: game.player2,
|
|
52
|
-
|
|
53
|
+
// Round tracking
|
|
54
|
+
totalRounds: Number(game.totalRounds),
|
|
55
|
+
currentRound: Number(game.currentRound),
|
|
56
|
+
p1Score: Number(game.p1Score),
|
|
57
|
+
p2Score: Number(game.p2Score),
|
|
58
|
+
// Budget tracking
|
|
59
|
+
startingBudget: Number(game.startingBudget),
|
|
60
|
+
p1Budget: Number(game.p1Budget),
|
|
61
|
+
p2Budget: Number(game.p2Budget),
|
|
62
|
+
// Betting
|
|
53
63
|
currentBet: formatEther(game.currentBet),
|
|
54
64
|
currentTurn: game.currentTurn,
|
|
65
|
+
p1ExtraBets: formatEther(game.p1ExtraBets),
|
|
66
|
+
p2ExtraBets: formatEther(game.p2ExtraBets),
|
|
67
|
+
// Phase
|
|
55
68
|
phase: POKER_PHASE_NAMES[game.phase] || `Unknown(${game.phase})`,
|
|
56
69
|
phaseCode: Number(game.phase),
|
|
57
70
|
phaseDeadline: Number(game.phaseDeadline),
|
|
58
71
|
settled: game.settled,
|
|
59
|
-
|
|
60
|
-
p2HandValue: Number(game.p2HandValue),
|
|
72
|
+
// Current round commit/reveal status
|
|
61
73
|
p1Committed: game.p1Committed,
|
|
62
74
|
p2Committed: game.p2Committed,
|
|
63
75
|
p1Revealed: game.p1Revealed,
|
|
64
76
|
p2Revealed: game.p2Revealed,
|
|
65
|
-
p1ExtraBets: formatEther(game.p1ExtraBets),
|
|
66
|
-
p2ExtraBets: formatEther(game.p2ExtraBets),
|
|
67
77
|
});
|
|
68
78
|
}
|
|
69
79
|
else if (gt === "auction") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-game.js","sourceRoot":"","sources":["../../src/commands/get-game.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"get-game.js","sourceRoot":"","sources":["../../src/commands/get-game.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
// arena-tools poker-step — play one step of a Poker game
|
|
1
|
+
// arena-tools poker-step — play one step of a Budget Poker game (V2).
|
|
2
2
|
// Reads the current phase and acts accordingly:
|
|
3
3
|
// - Commit phase: commits hand value, waits for opponent
|
|
4
4
|
// - Betting phase: takes action (check/bet/raise/call/fold), waits for opponent or phase change
|
|
5
|
-
// - Showdown: reveals hand, waits for opponent
|
|
5
|
+
// - Showdown: reveals hand, waits for opponent or next round
|
|
6
|
+
//
|
|
7
|
+
// Budget Poker specifics:
|
|
8
|
+
// - 3 rounds, 150-point hand budget
|
|
9
|
+
// - Budget deducted on reveal only (fold = no deduction)
|
|
10
|
+
// - After showdown, game may advance to next round or settle
|
|
6
11
|
//
|
|
7
12
|
// Usage:
|
|
8
13
|
// npx arena-tools poker-step <game_id> <hand_value> (commit phase)
|
|
@@ -10,23 +15,23 @@
|
|
|
10
15
|
// npx arena-tools poker-step <game_id> reveal (showdown)
|
|
11
16
|
import { encodeFunctionData, parseEther, formatEther } from "viem";
|
|
12
17
|
import { CONTRACTS } from "../config.js";
|
|
13
|
-
import {
|
|
18
|
+
import { pokerGameV2Abi } from "../contracts.js";
|
|
14
19
|
import { getPublicClient, getAddress } from "../client.js";
|
|
15
20
|
import { sendTx } from "../utils/tx.js";
|
|
16
21
|
import { generateSalt, saveSalt, loadSalt, deleteSalt, commitHash } from "../utils/commit-reveal.js";
|
|
17
22
|
import { ok, fail, event } from "../utils/output.js";
|
|
18
23
|
// ─── Constants ──────────────────────────────────────────────────────────────
|
|
19
|
-
const POLL_INTERVAL_MS = 2_000;
|
|
24
|
+
const POLL_INTERVAL_MS = 2_000;
|
|
20
25
|
const MAX_WAIT_MS = 300_000;
|
|
21
26
|
const MAX_RETRIES = 8;
|
|
22
27
|
const RETRY_BASE_MS = 1_500;
|
|
23
|
-
// Poker phases (match Solidity)
|
|
28
|
+
// Poker V2 phases (match Solidity)
|
|
24
29
|
const PHASE_COMMIT = 0;
|
|
25
30
|
const POKER_BETTING1 = 1;
|
|
26
31
|
const POKER_BETTING2 = 2;
|
|
27
32
|
const POKER_SHOWDOWN = 3;
|
|
28
33
|
const PHASE_NAMES = {
|
|
29
|
-
0: "commit", 1: "betting1", 2: "betting2", 3: "showdown",
|
|
34
|
+
0: "commit", 1: "betting1", 2: "betting2", 3: "showdown", 4: "complete",
|
|
30
35
|
};
|
|
31
36
|
// Poker actions (match Solidity enum)
|
|
32
37
|
const ACTION_MAP = {
|
|
@@ -62,13 +67,15 @@ export async function pokerStepCommand(gameId, decision, opts) {
|
|
|
62
67
|
const client = getPublicClient();
|
|
63
68
|
const myAddress = getAddress();
|
|
64
69
|
const gid = BigInt(gameId);
|
|
65
|
-
const addr = CONTRACTS.
|
|
70
|
+
const addr = CONTRACTS.PokerGameV2;
|
|
66
71
|
// Read game state
|
|
67
|
-
const game = await retry(() => client.readContract({ address: addr, abi:
|
|
72
|
+
const game = await retry(() => client.readContract({ address: addr, abi: pokerGameV2Abi, functionName: "getGame", args: [gid] }), "getGame");
|
|
68
73
|
if (game.settled) {
|
|
69
74
|
ok({
|
|
70
75
|
gameId: Number(gid),
|
|
71
76
|
gameComplete: true,
|
|
77
|
+
p1Score: Number(game.p1Score),
|
|
78
|
+
p2Score: Number(game.p2Score),
|
|
72
79
|
message: "Game is already settled.",
|
|
73
80
|
});
|
|
74
81
|
return;
|
|
@@ -76,6 +83,9 @@ export async function pokerStepCommand(gameId, decision, opts) {
|
|
|
76
83
|
const isPlayer1 = game.player1.toLowerCase() === myAddress.toLowerCase();
|
|
77
84
|
const phase = Number(game.phase);
|
|
78
85
|
const phaseName = PHASE_NAMES[phase] || `unknown(${phase})`;
|
|
86
|
+
const currentRound = Number(game.currentRound);
|
|
87
|
+
const myBudget = isPlayer1 ? Number(game.p1Budget) : Number(game.p2Budget);
|
|
88
|
+
const oppBudget = isPlayer1 ? Number(game.p2Budget) : Number(game.p1Budget);
|
|
79
89
|
// ── COMMIT PHASE ─────────────────────────────────────────────────────
|
|
80
90
|
if (phase === PHASE_COMMIT) {
|
|
81
91
|
const myCommitted = isPlayer1 ? game.p1Committed : game.p2Committed;
|
|
@@ -86,15 +96,24 @@ export async function pokerStepCommand(gameId, decision, opts) {
|
|
|
86
96
|
fail(`During commit phase, provide a hand value 1-100. Got: ${decision}`, "INVALID_HAND");
|
|
87
97
|
return;
|
|
88
98
|
}
|
|
99
|
+
// Client-side budget check (contract enforces on reveal, but warn early)
|
|
100
|
+
const totalRounds = Number(game.totalRounds);
|
|
101
|
+
const roundsAfter = totalRounds - currentRound - 1;
|
|
102
|
+
const maxHand = myBudget - roundsAfter;
|
|
103
|
+
if (handValue > maxHand) {
|
|
104
|
+
fail(`Hand value ${handValue} exceeds budget. You have ${myBudget} points, need to reserve ${roundsAfter} for future rounds (max: ${maxHand}).`, "EXCEEDS_BUDGET");
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
89
107
|
const salt = generateSalt();
|
|
90
108
|
const hash = commitHash(handValue, salt);
|
|
91
|
-
|
|
109
|
+
// Salt key includes round number to support multi-round
|
|
110
|
+
const saltKey = `pokerstep-${gameId}-${currentRound}-${myAddress}`;
|
|
92
111
|
saveSalt(saltKey, salt, JSON.stringify({ handValue }), "poker-step");
|
|
93
|
-
const { hash: txHash } = await retry(() => sendTx({ to: addr, data: encodeFunctionData({ abi:
|
|
94
|
-
event({ event: "committed", handValue, txHash });
|
|
112
|
+
const { hash: txHash } = await retry(() => sendTx({ to: addr, data: encodeFunctionData({ abi: pokerGameV2Abi, functionName: "commitHand", args: [gid, hash] }) }), "commit");
|
|
113
|
+
event({ event: "committed", round: currentRound, handValue, budget: myBudget, txHash });
|
|
95
114
|
}
|
|
96
115
|
else {
|
|
97
|
-
event({ event: "already_committed" });
|
|
116
|
+
event({ event: "already_committed", round: currentRound });
|
|
98
117
|
}
|
|
99
118
|
// Wait for opponent to commit (phase transitions to betting1)
|
|
100
119
|
const start = Date.now();
|
|
@@ -103,25 +122,30 @@ export async function pokerStepCommand(gameId, decision, opts) {
|
|
|
103
122
|
fail("Timeout waiting for opponent to commit.", "OPPONENT_TIMEOUT");
|
|
104
123
|
return;
|
|
105
124
|
}
|
|
106
|
-
const g = await retry(() => client.readContract({ address: addr, abi:
|
|
125
|
+
const g = await retry(() => client.readContract({ address: addr, abi: pokerGameV2Abi, functionName: "getGame", args: [gid] }), "poll-commit");
|
|
107
126
|
if (g.settled) {
|
|
108
|
-
ok({ gameId: Number(gid), gameComplete: true, message: "Game settled." });
|
|
127
|
+
ok({ gameId: Number(gid), gameComplete: true, p1Score: Number(g.p1Score), p2Score: Number(g.p2Score), message: "Game settled." });
|
|
109
128
|
return;
|
|
110
129
|
}
|
|
111
130
|
if (Number(g.phase) !== PHASE_COMMIT) {
|
|
112
131
|
const isMyTurn = g.currentTurn.toLowerCase() === myAddress.toLowerCase();
|
|
113
132
|
ok({
|
|
114
133
|
gameId: Number(gid),
|
|
134
|
+
round: Number(g.currentRound),
|
|
135
|
+
totalRounds: Number(g.totalRounds),
|
|
136
|
+
p1Score: Number(g.p1Score),
|
|
137
|
+
p2Score: Number(g.p2Score),
|
|
138
|
+
p1Budget: Number(g.p1Budget),
|
|
139
|
+
p2Budget: Number(g.p2Budget),
|
|
115
140
|
phase: PHASE_NAMES[Number(g.phase)],
|
|
116
141
|
isYourTurn: isMyTurn,
|
|
117
|
-
pot: formatEther(g.pot),
|
|
118
142
|
currentBet: formatEther(g.currentBet),
|
|
119
143
|
gameComplete: false,
|
|
120
|
-
message: `
|
|
144
|
+
message: `Round ${Number(g.currentRound) + 1}/3 — Betting started. ${isMyTurn ? "Your turn." : "Opponent's turn."}`,
|
|
121
145
|
});
|
|
122
146
|
return;
|
|
123
147
|
}
|
|
124
|
-
event({ event: "waiting", phase: "commit", message: "Waiting for opponent to commit..." });
|
|
148
|
+
event({ event: "waiting", phase: "commit", round: currentRound, message: "Waiting for opponent to commit..." });
|
|
125
149
|
await sleep(POLL_INTERVAL_MS);
|
|
126
150
|
}
|
|
127
151
|
}
|
|
@@ -148,15 +172,15 @@ export async function pokerStepCommand(gameId, decision, opts) {
|
|
|
148
172
|
}
|
|
149
173
|
const { hash: txHash } = await retry(() => sendTx({
|
|
150
174
|
to: addr,
|
|
151
|
-
data: encodeFunctionData({ abi:
|
|
175
|
+
data: encodeFunctionData({ abi: pokerGameV2Abi, functionName: "takeAction", args: [gid, actionNum] }),
|
|
152
176
|
value,
|
|
153
177
|
}), `poker-${decision}`);
|
|
154
|
-
event({ event: "action", action: decision.toLowerCase(), bettingRound: phase, txHash });
|
|
178
|
+
event({ event: "action", action: decision.toLowerCase(), round: currentRound, bettingRound: phase, txHash });
|
|
155
179
|
}
|
|
156
180
|
else {
|
|
157
|
-
event({ event: "not_your_turn", message: "Waiting for opponent..." });
|
|
181
|
+
event({ event: "not_your_turn", round: currentRound, message: "Waiting for opponent..." });
|
|
158
182
|
}
|
|
159
|
-
// Wait for state change (opponent's turn, next betting round, or
|
|
183
|
+
// Wait for state change (opponent's turn, next betting round, showdown, or fold settlement)
|
|
160
184
|
const start = Date.now();
|
|
161
185
|
const prevPhase = phase;
|
|
162
186
|
while (true) {
|
|
@@ -164,20 +188,48 @@ export async function pokerStepCommand(gameId, decision, opts) {
|
|
|
164
188
|
fail("Timeout waiting for opponent.", "OPPONENT_TIMEOUT");
|
|
165
189
|
return;
|
|
166
190
|
}
|
|
167
|
-
const g = await retry(() => client.readContract({ address: addr, abi:
|
|
191
|
+
const g = await retry(() => client.readContract({ address: addr, abi: pokerGameV2Abi, functionName: "getGame", args: [gid] }), "poll-betting");
|
|
168
192
|
if (g.settled) {
|
|
169
|
-
ok({
|
|
193
|
+
ok({
|
|
194
|
+
gameId: Number(gid),
|
|
195
|
+
gameComplete: true,
|
|
196
|
+
p1Score: Number(g.p1Score),
|
|
197
|
+
p2Score: Number(g.p2Score),
|
|
198
|
+
message: "Game settled (fold or timeout).",
|
|
199
|
+
});
|
|
170
200
|
return;
|
|
171
201
|
}
|
|
172
202
|
const newPhase = Number(g.phase);
|
|
203
|
+
const newRound = Number(g.currentRound);
|
|
173
204
|
const nowMyTurn = g.currentTurn.toLowerCase() === myAddress.toLowerCase();
|
|
205
|
+
// Fold can advance rounds — check if round changed
|
|
206
|
+
if (newRound !== currentRound) {
|
|
207
|
+
ok({
|
|
208
|
+
gameId: Number(gid),
|
|
209
|
+
round: newRound,
|
|
210
|
+
totalRounds: Number(g.totalRounds),
|
|
211
|
+
p1Score: Number(g.p1Score),
|
|
212
|
+
p2Score: Number(g.p2Score),
|
|
213
|
+
p1Budget: Number(g.p1Budget),
|
|
214
|
+
p2Budget: Number(g.p2Budget),
|
|
215
|
+
phase: PHASE_NAMES[newPhase],
|
|
216
|
+
gameComplete: false,
|
|
217
|
+
message: `Round ${newRound + 1}/3 started. Score: ${Number(g.p1Score)}-${Number(g.p2Score)}.`,
|
|
218
|
+
});
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
174
221
|
// Phase changed or it's our turn again
|
|
175
222
|
if (newPhase !== prevPhase || nowMyTurn) {
|
|
176
223
|
ok({
|
|
177
224
|
gameId: Number(gid),
|
|
225
|
+
round: currentRound,
|
|
226
|
+
totalRounds: Number(g.totalRounds),
|
|
227
|
+
p1Score: Number(g.p1Score),
|
|
228
|
+
p2Score: Number(g.p2Score),
|
|
229
|
+
p1Budget: Number(g.p1Budget),
|
|
230
|
+
p2Budget: Number(g.p2Budget),
|
|
178
231
|
phase: PHASE_NAMES[newPhase],
|
|
179
232
|
isYourTurn: nowMyTurn,
|
|
180
|
-
pot: formatEther(g.pot),
|
|
181
233
|
currentBet: formatEther(g.currentBet),
|
|
182
234
|
gameComplete: false,
|
|
183
235
|
message: newPhase === POKER_SHOWDOWN
|
|
@@ -186,7 +238,7 @@ export async function pokerStepCommand(gameId, decision, opts) {
|
|
|
186
238
|
});
|
|
187
239
|
return;
|
|
188
240
|
}
|
|
189
|
-
event({ event: "waiting", phase: phaseName, message: "Waiting for opponent..." });
|
|
241
|
+
event({ event: "waiting", phase: phaseName, round: currentRound, message: "Waiting for opponent..." });
|
|
190
242
|
await sleep(POLL_INTERVAL_MS);
|
|
191
243
|
}
|
|
192
244
|
}
|
|
@@ -194,7 +246,8 @@ export async function pokerStepCommand(gameId, decision, opts) {
|
|
|
194
246
|
if (phase === POKER_SHOWDOWN) {
|
|
195
247
|
const myRevealed = isPlayer1 ? game.p1Revealed : game.p2Revealed;
|
|
196
248
|
if (!myRevealed) {
|
|
197
|
-
|
|
249
|
+
// Salt key includes round number
|
|
250
|
+
const saltKey = `pokerstep-${gameId}-${currentRound}-${myAddress}`;
|
|
198
251
|
const entry = loadSalt(saltKey);
|
|
199
252
|
if (!entry) {
|
|
200
253
|
fail("Salt not found for poker reveal.", "SALT_LOST");
|
|
@@ -203,39 +256,57 @@ export async function pokerStepCommand(gameId, decision, opts) {
|
|
|
203
256
|
const { handValue } = JSON.parse(entry.value);
|
|
204
257
|
const { hash: txHash } = await retry(() => sendTx({
|
|
205
258
|
to: addr,
|
|
206
|
-
data: encodeFunctionData({ abi:
|
|
259
|
+
data: encodeFunctionData({ abi: pokerGameV2Abi, functionName: "revealHand", args: [gid, handValue, entry.salt] }),
|
|
207
260
|
}), "reveal");
|
|
208
|
-
// Only delete salt after successful reveal
|
|
261
|
+
// Only delete salt after successful reveal
|
|
209
262
|
deleteSalt(saltKey);
|
|
210
|
-
event({ event: "revealed", handValue, txHash });
|
|
263
|
+
event({ event: "revealed", round: currentRound, handValue, budget: myBudget - handValue, txHash });
|
|
211
264
|
}
|
|
212
265
|
else {
|
|
213
|
-
event({ event: "already_revealed" });
|
|
266
|
+
event({ event: "already_revealed", round: currentRound });
|
|
214
267
|
}
|
|
215
|
-
// Wait for game to settle
|
|
268
|
+
// Wait for game to settle or advance to next round
|
|
216
269
|
const start = Date.now();
|
|
217
270
|
while (true) {
|
|
218
271
|
if (Date.now() - start > MAX_WAIT_MS) {
|
|
219
272
|
fail("Timeout waiting for opponent to reveal.", "OPPONENT_TIMEOUT");
|
|
220
273
|
return;
|
|
221
274
|
}
|
|
222
|
-
const g = await retry(() => client.readContract({ address: addr, abi:
|
|
275
|
+
const g = await retry(() => client.readContract({ address: addr, abi: pokerGameV2Abi, functionName: "getGame", args: [gid] }), "poll-showdown");
|
|
223
276
|
if (g.settled) {
|
|
224
|
-
const
|
|
225
|
-
const
|
|
226
|
-
const result =
|
|
277
|
+
const myScore = isPlayer1 ? Number(g.p1Score) : Number(g.p2Score);
|
|
278
|
+
const oppScore = isPlayer1 ? Number(g.p2Score) : Number(g.p1Score);
|
|
279
|
+
const result = myScore > oppScore ? "win" : myScore < oppScore ? "loss" : "draw";
|
|
227
280
|
ok({
|
|
228
281
|
gameId: Number(gid),
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
282
|
+
p1Score: Number(g.p1Score),
|
|
283
|
+
p2Score: Number(g.p2Score),
|
|
284
|
+
p1Budget: Number(g.p1Budget),
|
|
285
|
+
p2Budget: Number(g.p2Budget),
|
|
232
286
|
gameComplete: true,
|
|
233
287
|
gameResult: result,
|
|
234
|
-
message: `Game over!
|
|
288
|
+
message: `Game over! Score: ${Number(g.p1Score)}-${Number(g.p2Score)}. Result: ${result}!`,
|
|
289
|
+
});
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
// Check if round advanced (means this round resolved, game continues)
|
|
293
|
+
const newRound = Number(g.currentRound);
|
|
294
|
+
if (newRound !== currentRound) {
|
|
295
|
+
ok({
|
|
296
|
+
gameId: Number(gid),
|
|
297
|
+
round: newRound,
|
|
298
|
+
totalRounds: Number(g.totalRounds),
|
|
299
|
+
p1Score: Number(g.p1Score),
|
|
300
|
+
p2Score: Number(g.p2Score),
|
|
301
|
+
p1Budget: Number(g.p1Budget),
|
|
302
|
+
p2Budget: Number(g.p2Budget),
|
|
303
|
+
phase: PHASE_NAMES[Number(g.phase)],
|
|
304
|
+
gameComplete: false,
|
|
305
|
+
message: `Round ${currentRound + 1} resolved. Score: ${Number(g.p1Score)}-${Number(g.p2Score)}. Round ${newRound + 1}/3 starting.`,
|
|
235
306
|
});
|
|
236
307
|
return;
|
|
237
308
|
}
|
|
238
|
-
event({ event: "waiting", phase: "showdown", message: "Waiting for opponent to reveal..." });
|
|
309
|
+
event({ event: "waiting", phase: "showdown", round: currentRound, message: "Waiting for opponent to reveal..." });
|
|
239
310
|
await sleep(POLL_INTERVAL_MS);
|
|
240
311
|
}
|
|
241
312
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poker-step.js","sourceRoot":"","sources":["../../src/commands/poker-step.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"poker-step.js","sourceRoot":"","sources":["../../src/commands/poker-step.ts"],"names":[],"mappings":"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"}
|