@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 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 { getPublicClient, getAddress } from "../client.js";
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
- // Get the match ID from nextMatchId
27
- const client = getPublicClient();
28
- const nextId = (await client.readContract({
29
- address: CONTRACTS.Escrow,
30
- abi: escrowAbi,
31
- functionName: "nextMatchId",
32
- }));
33
- const matchId = Number(nextId) - 1;
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,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,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,GAAG,MAAM,MAAM,CAAC;QAC1B,EAAE,EAAE,SAAS,CAAC,MAAM;QACpB,IAAI;QACJ,KAAK,EAAE,QAAQ;KAClB,CAAC,CAAC;IAEH,oCAAoC;IACpC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC;QACtC,OAAO,EAAE,SAAS,CAAC,MAAM;QACzB,GAAG,EAAE,SAAS;QACd,YAAY,EAAE,aAAa;KAC9B,CAAC,CAAkB,CAAC;IACrB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAEnC,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
+ {"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, pokerGameAbi, auctionGameAbi } from "../contracts.js";
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.PokerGame, abi: pokerGameAbi },
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,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC3E,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,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE;QAC1D,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"}
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, pokerGameAbi, auctionGameAbi, } from "../contracts.js";
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: pokerGameAbi,
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,YAAY,EACZ,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,YAAY;IACnB,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
+ {"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, pokerGameAbi, auctionGameAbi } from "../contracts.js";
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.PokerGame,
42
- abi: pokerGameAbi,
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
- pot: formatEther(game.pot),
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
- p1HandValue: Number(game.p1HandValue),
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":"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"}
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 with LLM-chosen action.
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, returns result
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 { pokerGameAbi } from "../contracts.js";
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; // Reduced from 6s — WS transport avoids rate limits
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.PokerGame;
70
+ const addr = CONTRACTS.PokerGameV2;
66
71
  // Read game state
67
- const game = await retry(() => client.readContract({ address: addr, abi: pokerGameAbi, functionName: "getGame", args: [gid] }), "getGame");
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
- const saltKey = `pokerstep-${gameId}-${myAddress}`;
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: pokerGameAbi, functionName: "commitHand", args: [gid, hash] }) }), "commit");
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: pokerGameAbi, functionName: "getGame", args: [gid] }), "poll-commit");
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: `Both committed. Betting round 1 started. ${isMyTurn ? "Your turn — choose check, bet, raise, call, or fold." : "Opponent's turn."}`,
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: pokerGameAbi, functionName: "takeAction", args: [gid, actionNum] }),
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 showdown)
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: pokerGameAbi, functionName: "getGame", args: [gid] }), "poll-betting");
191
+ const g = await retry(() => client.readContract({ address: addr, abi: pokerGameV2Abi, functionName: "getGame", args: [gid] }), "poll-betting");
168
192
  if (g.settled) {
169
- ok({ gameId: Number(gid), gameComplete: true, message: "Game settled (opponent folded?)." });
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
- const saltKey = `pokerstep-${gameId}-${myAddress}`;
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: pokerGameAbi, functionName: "revealHand", args: [gid, handValue, entry.salt] }),
259
+ data: encodeFunctionData({ abi: pokerGameV2Abi, functionName: "revealHand", args: [gid, handValue, entry.salt] }),
207
260
  }), "reveal");
208
- // Only delete salt after successful reveal TX
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: pokerGameAbi, functionName: "getGame", args: [gid] }), "poll-showdown");
275
+ const g = await retry(() => client.readContract({ address: addr, abi: pokerGameV2Abi, functionName: "getGame", args: [gid] }), "poll-showdown");
223
276
  if (g.settled) {
224
- const myHand = isPlayer1 ? Number(g.p1HandValue) : Number(g.p2HandValue);
225
- const oppHand = isPlayer1 ? Number(g.p2HandValue) : Number(g.p1HandValue);
226
- const result = myHand > oppHand ? "win" : myHand < oppHand ? "loss" : "draw";
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
- yourHandValue: myHand,
230
- opponentHandValue: oppHand,
231
- pot: formatEther(g.pot),
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! Your hand: ${myHand}, Opponent: ${oppHand}. Result: ${result}!`,
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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"}