pokertools-arena 0.8.0 → 0.13.0

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/.env.example CHANGED
@@ -5,4 +5,4 @@ OPENAI_PLAYER1=google/gemma-4-26b-a4b-it
5
5
  OPENAI_PLAYER2=qwen/qwen3.8-flash
6
6
  OPENAI_PLAYER3=typesafe/jev-1.13
7
7
  # OPENAI_PLAYER4=...
8
- OPENAI_STARTING_STACK=10000
8
+ OPENAI_STARTING_STACK=3000
package/README.md CHANGED
@@ -17,7 +17,7 @@
17
17
  | **Package** | `npx pokertools-arena` |
18
18
  | **Runtime** | Node.js ≥ 24 for tooling; any modern browser for the app |
19
19
 
20
- > **Current release: 0.8.0.** The tab-audio recording release: table recordings now capture the current tab's own audio from `getDisplayMedia()` and rebuild video frames through a timestamp-preserving `MediaStreamTrackProcessor` → `VideoFrame` pipeline, so the exported WebM keeps audio and picture on the same capture clock at up to 2560×1440.
20
+ > **Current release: 0.13.0.** Recordings now keep table event audio and the winner pot payout visible, with a two-second winner-review hold between hands.
21
21
 
22
22
  ---
23
23
 
@@ -107,6 +107,8 @@ The table **is** the player editor. A fresh launch shows empty seats around the
107
107
  3. Configure **Settings → Connections** (base URLs and keys) and **Settings → Tournament** (stack, blinds, clock, benchmark mode, architecture, representation).
108
108
  4. Press **Start**. Only configured seats enter the tournament, and seat editing locks while it runs.
109
109
 
110
+ Defaults and validation limits live in [`src/config/arena-config.js`](./src/config/arena-config.js). A host page may override any value before loading `app.js` by assigning a partial object to `window.__POKERTOOLS_ARENA_CONFIG__`; the arena deep-merges it with the documented defaults.
111
+
110
112
  ## `.env` bootstrap
111
113
 
112
114
  The launcher reads `.env` from the current working directory (falling back to the package root) and injects only supported fields into page memory. Disable with `--no-env`. A real user `.env` is never moved, printed or archived.
@@ -117,7 +119,7 @@ OPENAI_API_KEY="sk-or-v1-..."
117
119
  OPENAI_PLAYER1=google/gemma-4-26b-a4b-it
118
120
  OPENAI_PLAYER2=qwen/qwen3.8-flash
119
121
  OPENAI_PLAYER3=typesafe/jev-1.13
120
- OPENAI_STARTING_STACK=10000
122
+ OPENAI_STARTING_STACK=3000
121
123
  ```
122
124
 
123
125
  | Variable | Notes |
@@ -125,7 +127,7 @@ OPENAI_STARTING_STACK=10000
125
127
  | `OPENAI_BASE_URL` | Defaults to `https://api.openai.com/v1`; OpenRouter URLs are auto-detected. |
126
128
  | `OPENAI_API_KEY` | Optional for local/unauthenticated endpoints. |
127
129
  | `OPENAI_PLAYER1` … `OPENAI_PLAYER10` | Each value seats one model; Jev models auto-route to Decisions on OpenRouter. |
128
- | `OPENAI_STARTING_STACK` | Chip stack per seat (minimum 100, default 10000). |
130
+ | `OPENAI_STARTING_STACK` | Chip stack per seat (minimum 100, default 3000). |
129
131
 
130
132
  See [`.env.example`](./.env.example).
131
133
 
@@ -186,6 +188,7 @@ pokertools-arena/
186
188
  ├── bin/pokertools-arena.mjs local static launcher + .env bootstrap
187
189
  ├── src/ browser application source
188
190
  │ ├── index.html · app.js · styles.css
191
+ │ ├── config/arena-config.js defaults, limits, presets, host overrides
189
192
  │ ├── lib/decision-core.js canonical DOM-free decision core
190
193
  │ ├── benchmark/scenarios.js in-app sanity scenarios
191
194
  │ ├── env/arena-env.js .env placeholder injected by the launcher
@@ -79,7 +79,7 @@ function envBootstrap(values, overrides = {}) {
79
79
  };
80
80
  const autostart = truthy(flagOrEnv('OPENAI_AUTOSTART'));
81
81
  const maxDecisions = Math.max(0, Math.round(Number(flagOrEnv('OPENAI_MAX_DECISIONS') || 0) || 0));
82
- const startingStack = Math.max(100, Math.round(Number(flagOrEnv('OPENAI_STARTING_STACK') || 10_000) || 10_000));
82
+ const startingStack = Math.max(100, Math.round(Number(flagOrEnv('OPENAI_STARTING_STACK') || 3_000) || 3_000));
83
83
  return {
84
84
  source: '.env',
85
85
  settings: {