From ea5bf35af0d380ff9b6d275dbfd64f19770234cd Mon Sep 17 00:00:00 2001 From: Seenu K Date: Tue, 11 Aug 2026 12:56:55 +0530 Subject: [PATCH 1/8] Simplify quick start --- docs/getting-started/quickstart.md | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/docs/getting-started/quickstart.md b/docs/getting-started/quickstart.md index 1eeb812..780ea9d 100644 --- a/docs/getting-started/quickstart.md +++ b/docs/getting-started/quickstart.md @@ -73,18 +73,16 @@ rules and fixture tests need nothing more than this. ## Setup the Firebase Project -Scaffolding already wrote the values it could know: `FIREBASE_PROJECT_ID` in -`server/wrangler.jsonc`, and `API_BASE_URL` plus `GOOGLE_WEB_CLIENT_ID` in -`app/app-config.json`. Two are left, and neither is available to any CLI. +**1. Turn on Google sign-in.** Firebase Console → Security → Authentication → +Sign-in method → Get Started → Google → Enable. -**1. Turn on Google sign-in.** Firebase Console → Authentication → Sign-in -method → Google. Then add `localhost` under Settings → Authorized domains. +**2. Populate `GOOGLE_WEB_CLIENT_ID`** If `GOOGLE_WEB_CLIENT_ID` in +`app/app-config.json` is empty, the provider was off when you scaffolded, so +there was no OAuth client to copy. Enabling it creates one; take the value from +**Web SDK configuration** under Firebase Console → Authentication → Sign-in +method → Google -If `GOOGLE_WEB_CLIENT_ID` in `app/app-config.json` is empty, the provider was -off when you scaffolded, so there was no OAuth client to copy. Enabling it -creates one; take the value from **Web SDK configuration** on that same page. - -**2. Get the Web Push key.** Firebase Console → Project settings → **Cloud +**3. Get the Web Push key.** Firebase Console → Settings → General → **Cloud Messaging** → Web configuration, **Generate key pair** if the list is empty. Paste it into `FIREBASE_VAPID_KEY` in `app/app-config.json`. The web app will not start without it. @@ -123,7 +121,11 @@ and Android and web builds fail without them. Optional: push and account deletion locally Copy `server/.dev.vars.example` to `server/.dev.vars` and fill it from Firebase -Console → Project settings → Service accounts → **Generate new private key**. +Console → Settings → Service accounts → **Generate new private key**. + +The downloaded JSON file contains the client email and the private key. Paste +the entire private key string with the quotes as the `FIREBASE_PRIVATE_KEY` +variable. Those two features are all it powers. Token verification uses `FIREBASE_PROJECT_ID` alone, so ordinary local play needs none of this. From a9f1974fa45455904377f216147fef91ebfeb103 Mon Sep 17 00:00:00 2001 From: Seenu K Date: Tue, 11 Aug 2026 13:20:44 +0530 Subject: [PATCH 2/8] Make admin creds non optional --- docs/getting-started/quickstart.md | 36 +++++++++++++----------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/docs/getting-started/quickstart.md b/docs/getting-started/quickstart.md index 780ea9d..09a2e9e 100644 --- a/docs/getting-started/quickstart.md +++ b/docs/getting-started/quickstart.md @@ -87,7 +87,19 @@ Messaging** → Web configuration, **Generate key pair** if the list is empty. Paste it into `FIREBASE_VAPID_KEY` in `app/app-config.json`. The web app will not start without it. -Both are public values compiled into the app, not secrets. +**4. Get the Admin service-account key.** Firebase Console → Settings → +**Service accounts** → **Generate new private key**. Copy +`server/.dev.vars.example` to `server/.dev.vars` and fill +`FIREBASE_CLIENT_EMAIL` and `FIREBASE_PRIVATE_KEY` from the downloaded JSON, +pasting the private key with its quotes intact. That pair is what push +notifications and account deletion run on; token verification uses +`FIREBASE_PROJECT_ID` alone, so the Worker starts either way, and the two +features fail only when exercised. `wrangler dev` reads `.dev.vars` at startup, +so restart `pnpm dev` afterwards. + +Steps 2 and 3 are public values compiled into the app. Step 4 is not: +`.dev.vars` is a real credential, is git-ignored, and must stay that way. Delete +the downloaded JSON once you have copied the two fields out of it. [Configuration](../ship-it/configure.md) is the full reference for every value on both sides, and what changes when they stop pointing at localhost. @@ -106,8 +118,9 @@ pnpm firebase:configure It configures Android and web with FlutterFire, writes the service worker's Firebase configuration, and fills in `FIREBASE_PROJECT_ID` and `GOOGLE_WEB_CLIENT_ID` exactly as scaffolding would have. It ends by naming the -project, both app IDs, and each value it set, so you can see which of the two -steps above are still owed. +project, both app IDs, and each value it set, so you can see which of the steps +above are still owed. It does not touch steps 3 and 4, which are console values +no CLI can produce. **Commit everything it writes**: `app/firebase.json`, `app/android/app/google-services.json`, `app/lib/firebase_options.dart`, @@ -117,23 +130,6 @@ and Android and web builds fail without them. -
-Optional: push and account deletion locally - -Copy `server/.dev.vars.example` to `server/.dev.vars` and fill it from Firebase -Console → Settings → Service accounts → **Generate new private key**. - -The downloaded JSON file contains the client email and the private key. Paste -the entire private key string with the quotes as the `FIREBASE_PRIVATE_KEY` -variable. - -Those two features are all it powers. Token verification uses -`FIREBASE_PROJECT_ID` alone, so ordinary local play needs none of this. -`.dev.vars` is git-ignored and must stay that way: unlike everything else on -this page, it is a real credential. - -
- ## Run the app ```bash From c2eab77254e3f6840c92d1e05e4a194aba36dfb3 Mon Sep 17 00:00:00 2001 From: Seenu K Date: Tue, 11 Aug 2026 17:50:27 +0530 Subject: [PATCH 3/8] Update agent skills links --- docs/build-a-game/with-an-agent.md | 71 ++++++++++++++++-------------- 1 file changed, 38 insertions(+), 33 deletions(-) diff --git a/docs/build-a-game/with-an-agent.md b/docs/build-a-game/with-an-agent.md index f89a3d2..b077b6f 100644 --- a/docs/build-a-game/with-an-agent.md +++ b/docs/build-a-game/with-an-agent.md @@ -22,11 +22,10 @@ The engine repository is a plugin marketplace. Install it once: ``` That adds the `building-a-game` skill, which loads when the work is writing or -reviewing an EigenInteractive game: implementing rules, adding a schema -version, writing a -bot brain, or debugging a rejected move. It carries the parts of this contract -that are easy to get wrong and expensive to discover late: the four invariants, -what the engine has already validated before your hook runs, the +reviewing an EigenInteractive game: implementing rules, adding a schema version, +writing a bot brain, or debugging a rejected move. It carries the parts of this +contract that are easy to get wrong and expensive to discover late: the four +invariants, what the engine has already validated before your hook runs, the `computeObservation` projection rule, and a review checklist. It ships from the engine repository, so it moves with the engine rather than @@ -34,21 +33,28 @@ drifting behind it. ## The two platforms underneath -The skill above covers the contract and nothing else, deliberately, because -the two halves it sits between are ordinary Cloudflare Workers and ordinary -Flutter, and both platforms publish their own official skills. Installing them -alongside is what makes an agent useful on the other 90% of a game repository: -a D1 migration that will not apply, a Durable Object alarm, a widget that -rebuilds too often. +The skill above covers the contract and nothing else, deliberately, because the +two halves it sits between are ordinary Cloudflare Workers and ordinary Flutter, +and both platforms publish their own official skills. Installing them alongside +is what makes an agent useful on the other 90% of a game repository: a D1 +migration that will not apply, a Durable Object alarm, a widget that rebuilds +too often. ```text -/plugin install cloudflare@claude-plugins-official +/plugin marketplace add cloudflare/skills +/plugin install cloudflare@cloudflare ``` Cloudflare's covers Workers, Durable Objects, Wrangler and the Agents SDK, and brings MCP servers that search Cloudflare's live documentation, which matters -here for the same reason the retrieval surface below does. It is listed in the -marketplace Claude Code already knows about, so there is nothing to add first. +here for the same reason the retrieval surface below does. Those two lines are +the ones [`cloudflare/skills`](https://github.com/cloudflare/skills) itself +documents, and they track that repository. + +The same plugin is also mirrored in the marketplace Claude Code already knows +about, so `/plugin install cloudflare@claude-plugins-official` works with +nothing to add first. It is the same skills, entered at a pinned commit rather +than at whatever Cloudflare has just merged. ```text /plugin marketplace add flutter/agent-plugins @@ -66,14 +72,14 @@ working because an optional convenience was missing. ## The retrieval surface Every page on this site is also machine-readable, which is what lets an agent -work from what the engine does *now*: +work from what the engine does _now_: -| What | Where | -|---|---| -| Index of every page | [`/llms.txt`](pathname:///llms.txt) | +| What | Where | +| ---------------------- | --------------------------------------------- | +| Index of every page | [`/llms.txt`](pathname:///llms.txt) | | Everything in one file | [`/llms-full.txt`](pathname:///llms-full.txt) | -| Any page as Markdown | append `.md` to its URL | -| The HTTP contract | [`/openapi.json`](pathname:///openapi.json) | +| Any page as Markdown | append `.md` to its URL | +| The HTTP contract | [`/openapi.json`](pathname:///openapi.json) | The generated HTTP reference is deliberately excluded from the `llms` bundles: those pages are component trees, and the raw spec is the better input. @@ -88,22 +94,21 @@ plausible code against an API that was never real. These are the mistakes worth reviewing for specifically, because each one produces code that looks correct and passes a casual read: -- **Re-validating what the engine already enforced.** Turn order, version, - seat ownership and the deadline are checked before `applyAction` is called. - A hand-written `if (playerIndex !== state.turn)` is not a safety net; it is a +- **Re-validating what the engine already enforced.** Turn order, version, seat + ownership and the deadline are checked before `applyAction` is called. A + hand-written `if (playerIndex !== state.turn)` is not a safety net; it is a second, divergent source of truth. See [The hooks](./hooks.md). - **Reaching for wall-clock time or `Math.random()`.** Determinism is not a - style preference here; replay, reconnection and optimistic preview all - depend on it. Randomness comes from the injected `rng`, drawn in a fixed - order. + style preference here; replay, reconnection and optimistic preview all depend + on it. Randomness comes from the injected `rng`, drawn in a fixed order. - **Branching on `schemaVersion` inside a hook.** The engine resolves the version before calling anything, so a version check in a hook body is always wrong. See [Evolving your game](./versions.md). - **Projecting the state instead of the seat's view.** The commonest and most damaging: `computeObservation` returning the full state, or stripping the hidden field while leaving `pendingPlayers` truthful enough to reveal that an - opponent has already committed. See [Hidden - information](./hidden-information.md). + opponent has already committed. See + [Hidden information](./hidden-information.md). - **Putting engine-owned facts in your state.** Whose turn it is, the deadline and the result belong to the engine. State that carries its own `winner` will disagree with the engine's eventually. @@ -121,8 +126,8 @@ pnpm test # in server/, the TypeScript half flutter test # in app/, the Dart half, on the same fixtures ``` -Ask for fixtures alongside rules, not after them: at minimum one legal move -with its expected observation, one illegal move, one game-ending move, and a -case for each `ratingPool` and `botSeatable` branch. A generated hook with no -fixture is the part of the diff to read closely; a generated hook with a fixture -that fails is simply a fix. +Ask for fixtures alongside rules, not after them: at minimum one legal move with +its expected observation, one illegal move, one game-ending move, and a case for +each `ratingPool` and `botSeatable` branch. A generated hook with no fixture is +the part of the diff to read closely; a generated hook with a fixture that fails +is simply a fix. From 64011cd7594b37efc2a81aec50bda01007209d86 Mon Sep 17 00:00:00 2001 From: Seenu K Date: Tue, 11 Aug 2026 18:25:50 +0530 Subject: [PATCH 4/8] Add fixture watch in docs for manual setup --- docs/getting-started/manual-setup.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/getting-started/manual-setup.md b/docs/getting-started/manual-setup.md index 3fe6f47..c1de079 100644 --- a/docs/getting-started/manual-setup.md +++ b/docs/getting-started/manual-setup.md @@ -44,9 +44,26 @@ server/ ├── test/twin.spec.ts ├── package.json ├── tsconfig.json +├── vitest.config.mts └── wrangler.jsonc ``` +`vitest.config.mts` exists for one option. The fixture runner reads its JSON with +`readFileSync`, so those files are not in Vite's module graph, and `test:watch` +would otherwise ignore a fixture-only edit: + +```ts +import { configDefaults, defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + forceRerunTriggers: [...configDefaults.forceRerunTriggers, "**/src/module/fixtures/**/*.json"], + }, +}); +``` + +Spread the defaults rather than replacing them; that merge is shallow. + Default-export the module from `src/module/index.ts`: ```ts From 16b3e1b46689724831c2279c55702c703c7987ea Mon Sep 17 00:00:00 2001 From: Seenu K Date: Tue, 11 Aug 2026 22:02:20 +0530 Subject: [PATCH 5/8] Add debugging docs --- docs/build-a-game/debugging.md | 216 +++++++++++++++++++++++++++++ docs/build-a-game/recipes.md | 2 +- docs/build-a-game/versions.md | 2 +- docs/build-a-game/with-an-agent.md | 2 +- docs/how-it-works/storage.md | 4 + sidebars.ts | 1 + 6 files changed, 224 insertions(+), 3 deletions(-) create mode 100644 docs/build-a-game/debugging.md diff --git a/docs/build-a-game/debugging.md b/docs/build-a-game/debugging.md new file mode 100644 index 0000000..e48139c --- /dev/null +++ b/docs/build-a-game/debugging.md @@ -0,0 +1,216 @@ +--- +sidebar_position: 10 +title: Debugging a live game +description: How to look inside a running game's two stores, the D1 index and its own Durable Object, with eigen-inspect, Wrangler's local explorer, raw SQLite and Drizzle Studio. +--- + +# Debugging a live game + +A game you are developing has state in two places, and knowing which one to +trust is most of debugging it. + +- **D1 is the index.** One row per game, plus participants, users, bots, + ratings and friendships. It answers "which games exist", so it backs + discovery, history and profiles. +- **The game's Durable Object is the session.** One SQLite database per game, + holding the authoritative status, the roster, and the append-only transition + log. It answers "what is happening in this game". + +The DO is the authority. Its D1 row is a **display mirror**, written after the +commit and off the response path, so a lost mirror write leaves D1 stale while +the game plays on correctly. [Storage](../how-it-works/storage.md) covers why +the split is shaped that way. + +That is the whole reason a game-shaped reader exists: "the lobby filled and +nothing happened" is not a question either store answers alone. + +## `eigen-inspect` + +A scaffolded game ships it wired up. It reads the local `.wrangler` state +directly, so it needs no dev server, no browser and no Cloudflare account, and +every database is opened read-only, so it is safe to run while your Worker is +running. + +```bash +cd server +pnpm inspect games # the index, newest first +pnpm inspect game ABC123 # one game, everywhere, with its timeline +pnpm inspect do # every local Durable Object, by game id +``` + +`game` takes a full id, a short code, or an id prefix. It is the one to reach +for: + +```text +Game 14eabf11-df25-4337-b6e1-be2984c8f2a5 CHNTAE + +D1 index status=ready access=private rated=no schema=v1 + seats 2-2 untimed created 2h ago updated 2h ago +config {"target":10} +participants 0:inbox.seenu 1:dev.seenuk + +Durable Object 8fede5b00a07… .wrangler/state/v3/do/my-game-GameDO/8fede5b0….sqlite +DO meta status=ready seats 2-2 createdBy=nth6vOqG… rngSeed=(unset, so no start has committed) +roster 0:inbox.seenu 1:dev.seenuk +alarm none armed +commands 1 recorded + +Timeline + (no transitions: the game has not started, so there is no v0) + +Diagnosis ready and not started: 2/2 seats filled. Nothing happens until the + CREATOR calls POST /api/engine/games/{id}/start. A start is explicit + and creator-only; filling the lobby does not start a game. +``` + +Reading that top to bottom: + +| Line | What it tells you | +|---|---| +| `D1 index` | What discovery and history will show. Absent means the create never landed. | +| `Durable Object` | Whether a session exists at all. A created-but-untouched lobby has none: the DO is created lazily by the first command or socket. | +| `DO meta` | The authoritative status. An unset `rngSeed` proves no start has committed, whatever D1 says. | +| `alarm` | The armed turn deadline. `none armed` is correct for an untimed game and a bug for a timed one mid-turn. | +| `Timeline` | Every committed version with its cause, state, pending seats and which seats hold a stored frame. `(compacted)` frames are normal on a finished game, which re-projects for replay. | +| `Diagnosis` | The next event the game is waiting for. | +| `Mirror drift` | Present only when the two stores disagree, naming the DO as authoritative. | + +Two lines are worth recognising on sight. **`Mirror drift`** means a mirror +write was lost: the game is fine, the lists are stale. +**`outbox N UNAPPLIED finish row(s)`** on a finished game means the D1 finish +apply has not succeeded, so outcomes and ratings are not published yet. + +The rest of the commands cover what the report does not model: + +```bash +pnpm inspect players # local users and bots, by id +pnpm inspect tables --game ABC123 # tables and row counts +pnpm inspect sql "select * from participants" # ad-hoc, against D1 +pnpm inspect sql "select * from transitions" --game ABC123 # against one game's DO +pnpm inspect game ABC123 --json # for a script or an agent +``` + +`--dir ` starts the search for `.wrangler/state` somewhere other than the +current directory; otherwise it walks up, so any directory inside your game +repository works. + +### In a test + +The same reader is a library, which is the honest way to assert on state a +test cannot reach through the API: + +```ts +import { LocalStore } from "@eigeninteractive/testkit/local-state"; + +const store = LocalStore.open(); +try { + const game = store.game(gameId); + expect(game?.meta?.status).toBe("active"); + expect(game?.transitions.at(-1)?.pending).toEqual([1]); + expect(game?.diagnosis.mirrorDrift).toEqual([]); +} finally { + store.close(); +} +``` + +:::note[No install] + +The reader uses Node's built-in `node:sqlite`, so it adds no dependency and +needs no native build. It comes with the testkit, which is already a +`devDependency` of your game, and nothing new reaches your Worker's runtime +dependencies. Node 24 or newer, which the engine already requires. + +::: + +## Wrangler's local explorer + +For browsing tables rather than asking about a game, Wrangler has a first-party +UI over the same files. With `wrangler dev` running, press **`e`**, or open +`/cdn-cgi/explorer` on the dev server. It covers every local binding, D1 and +Durable Object storage included, and is the better tool for poking at a table +you do not have a query for yet. + +## SQL, local and deployed + +The binding name works as the database name, so nothing has to be configured: + +```bash +wrangler d1 execute GAME_DB --local --command "select id, status from games" +wrangler d1 execute GAME_DB --remote --command "select id, status from games" +``` + +`--remote` is how you inspect a **deployed** game's index; the Cloudflare +dashboard has a console over the same database. + +A deployed game's **Durable Object** has no such console. Your options there are +`wrangler tail` for the logs the DO writes as it commits, and adding a read-only +method to your own `GameDO` subclass if you need more. Locally the session is a +file, which is why local debugging is worth the setup. + +## The raw files + +Everything above reads these, and there is no reason not to open them yourself. +Under your Worker directory: + +```text +.wrangler/state/v3/d1/miniflare-D1DatabaseObject/.sqlite the index +.wrangler/state/v3/do/-GameDO/.sqlite one game each +.wrangler/state/v3/do/-GameDO/metadata.sqlite armed alarms +``` + +The Durable Object filename is the object's id, which is +`idFromName(gameId)` **hashed**, so it is not the game id and cannot be turned +back into one by computation. Miniflare records the name it was addressed by in +each database, and that row is the only local file-to-game map there is: + +```bash +sqlite3 .wrangler/state/v3/do/my-game-GameDO/.sqlite \ + "select name from __miniflare_do_name" +``` + +`pnpm inspect do` prints that mapping for every game at once. + +## Drizzle Studio + +The engine's schemas are Drizzle, so a browsable UI over a local file is a +config away. Point `schema` at the store you want and `url` at the file: + +```ts title="drizzle.studio.config.ts" +import { defineConfig } from "drizzle-kit"; + +export default defineConfig({ + dialect: "sqlite", + // For one game's session, use .../server/src/do/schema.ts and a DO file. + schema: "node_modules/@eigeninteractive/server/src/d1/schema.ts", + dbCredentials: { url: "file:.wrangler/state/v3/d1/miniflare-D1DatabaseObject/.sqlite" }, +}); +``` + +```bash +pnpm exec drizzle-kit studio --config drizzle.studio.config.ts +``` + +:::warning[Install the driver outside your game's workspace] + +Drizzle Studio needs a SQLite driver, `better-sqlite3` or `@libsql/client`, and +**both are optional peer dependencies of `drizzle-orm`**. Adding either one to +your game re-resolves `drizzle-orm`'s peer set for every package that imports +it, which changes the types your Worker compiles against. It is a real way to +break a build that was fine, and the failure looks nothing like its cause. + +Install `drizzle-kit` and the driver in a scratch directory outside your +repository and run Studio from there, pointing `url` at an absolute path into +your `.wrangler` state. Nothing about your game needs to change. + +::: + +## What to check when + +| Symptom | Where to look | +|---|---| +| A game will not start | `pnpm inspect game `: read `DO meta` status and `Diagnosis`. A start is explicit and creator-only. | +| A game vanished from a list | The index. A private game is never in the public lobby; check `access` and `status`, then look for `Mirror drift`. | +| A turn never times out | `alarm`. No alarm and a non-null `deadline` on the newest transition is the bug; an untimed game arms nothing by design. | +| A finished game shows no ratings | `outbox`. Surviving rows mean the D1 apply has not landed. | +| A move was refused | `commands`, which records each `commandId` with the response that was replayed. | +| Seats look wrong | Compare `roster` (authoritative) against `participants` (mirror). | diff --git a/docs/build-a-game/recipes.md b/docs/build-a-game/recipes.md index 0d85b27..3cb0f4c 100644 --- a/docs/build-a-game/recipes.md +++ b/docs/build-a-game/recipes.md @@ -1,5 +1,5 @@ --- -sidebar_position: 11 +sidebar_position: 12 title: Recipes for common game shapes description: Sequential, simultaneous, team, elimination and phased games, all expressed through pendingPlayers and computeObservation. --- diff --git a/docs/build-a-game/versions.md b/docs/build-a-game/versions.md index 204e0c5..2504ab5 100644 --- a/docs/build-a-game/versions.md +++ b/docs/build-a-game/versions.md @@ -1,5 +1,5 @@ --- -sidebar_position: 10 +sidebar_position: 11 title: Changing a shipped game description: What to do when the rules change after players are using them. A new unit on both sides, why draining and replay retire at different times, and the checklist. --- diff --git a/docs/build-a-game/with-an-agent.md b/docs/build-a-game/with-an-agent.md index b077b6f..0f5892c 100644 --- a/docs/build-a-game/with-an-agent.md +++ b/docs/build-a-game/with-an-agent.md @@ -1,5 +1,5 @@ --- -sidebar_position: 12 +sidebar_position: 13 title: Working with an agent description: The Claude Code skill for writing EigenInteractive games, the retrieval surface behind these docs, and the mistakes an agent makes on this contract that a reviewer should look for. --- diff --git a/docs/how-it-works/storage.md b/docs/how-it-works/storage.md index 9ac1066..0d7f512 100644 --- a/docs/how-it-works/storage.md +++ b/docs/how-it-works/storage.md @@ -38,6 +38,10 @@ batch; see [Account lifecycle](./account-lifecycle.md)). This is deliberate: it keeps every multi-table effect visible in application code rather than hidden in schema triggers. +Because `games` and `participants` are mirrors written after the DO's own commit, +they can lag it. To read both stores at once and see any disagreement between +them, see [Debugging a live game](../build-a-game/debugging.md). + ## Ratings & the concurrency-safe CAS Ratings are OpenSkill, computed **at finish, in D1**, because they depend on diff --git a/sidebars.ts b/sidebars.ts index c9326bb..1729fab 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -46,6 +46,7 @@ const sidebars: SidebarsConfig = { "build-a-game/bots", "build-a-game/creation-ui", "build-a-game/testing", + "build-a-game/debugging", "build-a-game/versions", "build-a-game/recipes", "build-a-game/with-an-agent", From 8acec9d4483bb5ce0ebdc205c6bb79d15ad4aac3 Mon Sep 17 00:00:00 2001 From: Seenu K Date: Wed, 12 Aug 2026 00:49:05 +0530 Subject: [PATCH 6/8] Update single ws stream --- api/openapi.json | 407 +++++++++------ docs/build-a-game/rendering.md | 39 +- docs/build-a-game/the-contract.md | 4 +- docs/how-it-works/game-sessions.md | 2 +- docs/how-it-works/lifecycle.md | 12 +- docs/how-it-works/transport.md | 122 +++-- .../http-api/add-bot.StatusCodes.json | 2 +- docs/reference/http-api/add-bot.api.mdx | 2 +- .../http-api/cancel-game.StatusCodes.json | 2 +- docs/reference/http-api/cancel-game.api.mdx | 2 +- .../create-solo-game.StatusCodes.json | 2 +- .../http-api/create-solo-game.api.mdx | 2 +- .../http-api/forfeit-game.StatusCodes.json | 2 +- docs/reference/http-api/forfeit-game.api.mdx | 2 +- .../http-api/get-frames.StatusCodes.json | 2 +- docs/reference/http-api/get-frames.api.mdx | 2 +- .../get-game-session.ParamsDetails.json | 1 + .../get-game-session.RequestSchema.json | 1 + .../get-game-session.StatusCodes.json | 1 + .../http-api/get-game-session.api.mdx | 69 +++ .../join-game-by-code.StatusCodes.json | 2 +- .../http-api/join-game-by-code.api.mdx | 2 +- .../http-api/join-game.StatusCodes.json | 2 +- docs/reference/http-api/join-game.api.mdx | 2 +- .../http-api/leave-game.StatusCodes.json | 2 +- docs/reference/http-api/leave-game.api.mdx | 2 +- docs/reference/http-api/sidebar.ts | 6 + .../http-api/start-game.StatusCodes.json | 2 +- docs/reference/http-api/start-game.api.mdx | 2 +- .../http-api/submit-action.StatusCodes.json | 2 +- docs/reference/http-api/submit-action.api.mdx | 2 +- docs/reference/http-surface.md | 3 +- docs/reference/typescript/kernel.md | 196 +++---- docs/reference/typescript/rules.md | 178 +++---- docs/reference/typescript/server-testing.md | 24 +- docs/reference/typescript/server.md | 479 ++++++++++++------ docs/reference/typescript/testkit.md | 130 ++--- static/openapi.json | 407 +++++++++------ 38 files changed, 1347 insertions(+), 774 deletions(-) create mode 100644 docs/reference/http-api/get-game-session.ParamsDetails.json create mode 100644 docs/reference/http-api/get-game-session.RequestSchema.json create mode 100644 docs/reference/http-api/get-game-session.StatusCodes.json create mode 100644 docs/reference/http-api/get-game-session.api.mdx diff --git a/api/openapi.json b/api/openapi.json index f31b2c1..742c02b 100644 --- a/api/openapi.json +++ b/api/openapi.json @@ -420,6 +420,178 @@ "games" ] }, + "Session": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "session" + ] + }, + "seq": { + "type": "integer" + }, + "gameId": { + "type": "string" + }, + "shortCode": { + "type": "string" + }, + "access": { + "$ref": "#/components/schemas/GameAccess" + }, + "schemaVersion": { + "type": "integer" + }, + "config": { + "type": "object" + }, + "turnSeconds": { + "type": [ + "integer", + "null" + ] + }, + "budgetSeconds": { + "type": [ + "integer", + "null" + ] + }, + "incrementSeconds": { + "type": [ + "integer", + "null" + ] + }, + "rated": { + "type": "boolean" + }, + "ratingPool": { + "type": [ + "string", + "null" + ] + }, + "minPlayers": { + "type": "integer" + }, + "maxPlayers": { + "type": "integer" + }, + "createdBy": { + "type": [ + "string", + "null" + ] + }, + "status": { + "$ref": "#/components/schemas/GameStatus" + }, + "players": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Seat" + } + }, + "version": { + "type": [ + "integer", + "null" + ] + }, + "frame": { + "anyOf": [ + { + "$ref": "#/components/schemas/Frame" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "type", + "seq", + "gameId", + "shortCode", + "access", + "schemaVersion", + "config", + "turnSeconds", + "budgetSeconds", + "incrementSeconds", + "rated", + "ratingPool", + "minPlayers", + "maxPlayers", + "createdBy", + "status", + "players", + "version", + "frame" + ] + }, + "Frame": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "frame" + ] + }, + "version": { + "type": "integer" + }, + "data": { + "type": "object" + }, + "pendingPlayers": { + "type": "array", + "items": { + "type": "integer" + } + }, + "deadline": { + "type": [ + "integer", + "null" + ] + }, + "playerTimes": { + "type": [ + "array", + "null" + ], + "items": { + "type": "integer" + } + }, + "outcomes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Outcome" + } + }, + "ratings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RatingDelta" + } + } + }, + "required": [ + "type", + "version", + "data", + "pendingPlayers", + "deadline", + "playerTimes" + ] + }, "Players": { "type": "object", "properties": { @@ -715,85 +887,12 @@ "SoloStarted": { "type": "object", "properties": { - "gameId": { - "type": "string" - }, - "shortCode": { - "type": "string" - }, - "version": { - "type": "integer" - }, - "frame": { - "$ref": "#/components/schemas/Frame" + "session": { + "$ref": "#/components/schemas/Session" } }, "required": [ - "gameId", - "shortCode", - "version", - "frame" - ] - }, - "Frame": { - "type": [ - "object", - "null" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "frame" - ] - }, - "version": { - "type": "integer" - }, - "data": { - "type": "object" - }, - "pendingPlayers": { - "type": "array", - "items": { - "type": "integer" - } - }, - "deadline": { - "type": [ - "integer", - "null" - ] - }, - "playerTimes": { - "type": [ - "array", - "null" - ], - "items": { - "type": "integer" - } - }, - "outcomes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Outcome" - } - }, - "ratings": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RatingDelta" - } - } - }, - "required": [ - "type", - "version", - "data", - "pendingPlayers", - "deadline", - "playerTimes" + "session" ] }, "CreateSolo": { @@ -856,44 +955,15 @@ "botIds" ] }, - "Joined": { - "type": "object", - "properties": { - "gameId": { - "type": "string" - }, - "roster": { - "$ref": "#/components/schemas/Roster" - } - }, - "required": [ - "gameId", - "roster" - ] - }, - "Roster": { + "CommandAccepted": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "roster" - ] - }, - "status": { - "$ref": "#/components/schemas/GameStatus" - }, - "players": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Seat" - } + "session": { + "$ref": "#/components/schemas/Session" } }, "required": [ - "type", - "status", - "players" + "session" ] }, "Join": { @@ -931,17 +1001,6 @@ } ] }, - "LobbyAccepted": { - "type": "object", - "properties": { - "roster": { - "$ref": "#/components/schemas/Roster" - } - }, - "required": [ - "roster" - ] - }, "LobbyCommand": { "type": "object", "properties": { @@ -968,21 +1027,6 @@ "botId" ] }, - "CommandAccepted": { - "type": "object", - "properties": { - "version": { - "type": "integer" - }, - "frame": { - "$ref": "#/components/schemas/Frame" - } - }, - "required": [ - "version", - "frame" - ] - }, "Action": { "type": "object", "properties": { @@ -1573,6 +1617,77 @@ } } }, + "/api/engine/games/{gameId}/session": { + "get": { + "operationId": "getGameSession", + "tags": [ + "Games" + ], + "parameters": [ + { + "schema": { + "type": "string", + "minLength": 1 + }, + "required": true, + "name": "gameId", + "in": "path" + } + ], + "responses": { + "200": { + "description": "The caller's current session snapshot", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Session" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Missing or invalid token", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Not allowed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, "/api/engine/players": { "get": { "operationId": "getPlayers", @@ -2309,11 +2424,11 @@ }, "responses": { "200": { - "description": "Seated: the game's id and the post-join roster", + "description": "Seated: the post-join session", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Joined" + "$ref": "#/components/schemas/CommandAccepted" } } } @@ -2399,11 +2514,11 @@ }, "responses": { "200": { - "description": "Seated: the game's id and the post-join roster", + "description": "Seated: the post-join session", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Joined" + "$ref": "#/components/schemas/CommandAccepted" } } } @@ -2500,11 +2615,11 @@ }, "responses": { "200": { - "description": "Left: the post-leave roster", + "description": "Left: the post-leave session", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LobbyAccepted" + "$ref": "#/components/schemas/CommandAccepted" } } } @@ -2605,7 +2720,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LobbyAccepted" + "$ref": "#/components/schemas/CommandAccepted" } } } @@ -2702,11 +2817,11 @@ }, "responses": { "200": { - "description": "Bot seated: the new roster", + "description": "Bot seated: the post-commit session", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LobbyAccepted" + "$ref": "#/components/schemas/CommandAccepted" } } } @@ -2803,7 +2918,7 @@ }, "responses": { "200": { - "description": "Started: version 0 committed", + "description": "Started: the session at version 0", "content": { "application/json": { "schema": { @@ -2904,7 +3019,7 @@ }, "responses": { "200": { - "description": "Committed: the acting seat's frame", + "description": "Committed: the acting seat's session", "content": { "application/json": { "schema": { diff --git a/docs/build-a-game/rendering.md b/docs/build-a-game/rendering.md index 3e1191e..fada57a 100644 --- a/docs/build-a-game/rendering.md +++ b/docs/build-a-game/rendering.md @@ -30,6 +30,7 @@ breaks every game's signature. All JSON parsing is already done. |---|---| | `config` | The parsed config, immutable for the whole game. Cast to your type. | | `frame` | The per-event snapshot: `observation`, `pendingPlayers`, `version`, `timing`. | +| `transition` | The step into `frame` (`from`, `to`), or **null when there is nothing to animate**. | | `gameStatus`, `outcomes` | Lifecycle status; per-seat results (empty until finished). | | `actionPending` | True while a submit awaits its confirming frame; disable input on it. | | `onAction(json)` | Submits a move; returns `Future`. Never throws, because the engine has already surfaced any error. | @@ -62,11 +63,39 @@ that sound: cannot recover causality: a hidden move leaves no visible footprint, two different causes can leave the same one, and a composite resolution collapses into a single diff. -3. **Animate a cue only when you rendered its predecessor.** On a cold load or a - stale rejoin you get a frame whose predecessor you never drew. Show the cue as - static "last move" information, not an animation. Keep the last rendered - `version` in widget state and play the entrance animation only when the - incoming frame is its direct successor. +3. **Animate only when `transition` is non-null.** It is the step into the + current frame, and it is null exactly when animating would be wrong: a cold + load, a stale rejoin, or the opening frame, where the cue is history rather + than an event. Show it statically then. You do not have to track the last + rendered version yourself; the engine already knows whether the player saw the + predecessor. + +```dart +if (ctx.transition case final step?) { + // The player watched this happen: animate from step.from to step.to. +} else { + // Nothing to animate from. Render ctx.frame as the current position. +} +``` + +**Correctness never depends on animating.** The newest frame is always +sufficient on its own, so skipping intermediate frames is never wrong, only less +pretty. That matters in practice: a bot can commit faster than a 600ms deal +animation, the turn clock does not stop while a card is in flight, and a slow +device falls behind. Treat your animations as interruptible and jump to the end +state when a newer frame lands. + +### Several beats in one frame + +One version can hold more than one visual event: a round resolving may reveal +both commits, score them, and deal again. The frame is the atomic unit of +*truth*, but it is the **script** for several animation steps, so embed an +ordered `events` list in the observation and sequence it locally. + +The rule that keeps this honest: **the list is presentation order, never a second +source of state.** The position after the last beat must equal what the rest of +the observation already says, so a client that skips the animation entirely is +still correct. ### The server side of a cue diff --git a/docs/build-a-game/the-contract.md b/docs/build-a-game/the-contract.md index 08ef5e4..5c47c5f 100644 --- a/docs/build-a-game/the-contract.md +++ b/docs/build-a-game/the-contract.md @@ -177,8 +177,8 @@ out of your namespace: input gate, versioning, idempotent retries. - **The waiting room**: create, join (by id or code), leave, cancel, add-bot, start; short codes; guest and friends-access gating. -- **Sockets & reconnection**: one socket per game, pre-game roster snapshots, - versioned frames, gap recovery by range fetch. +- **Sockets & reconnection**: one socket per game carrying one message kind, + the per-seat session snapshot; gap recovery by range fetch. - **Timing**: deadlines, the chess-clock bank, the grace window, the durable alarm. - **Ratings**: OpenSkill, the concurrency-safe CAS, pools, history. You only diff --git a/docs/how-it-works/game-sessions.md b/docs/how-it-works/game-sessions.md index 9e80983..a3771b0 100644 --- a/docs/how-it-works/game-sessions.md +++ b/docs/how-it-works/game-sessions.md @@ -15,7 +15,7 @@ The DO's own SQLite database is the game. Six tables: | Table | Lifetime | Purpose | |---|---|---| -| `meta` | permanent | The single game row (id, status, access, schema_version, config, timing, rated, pool, roster bounds, creator, rng seed). Copied once from D1 at lazy-init, then DO-owned. | +| `meta` | permanent | The single game row (id, short code, status, access, schema_version, config, timing, rated, pool, roster bounds, creator, rng seed, final outcomes, and `seq`). Copied once from D1 at lazy-init, then DO-owned. `seq` is the monotonic session counter every commit advances, which is what totally orders the snapshots the socket pushes; `outcomes` is retained rather than drained so a cold open of a finished game is answerable from the DO alone. | | `roster` | permanent | One row per seat (`player_index`, `user_id`/`bot_id`, `type`). The **authoritative** roster; D1's copy is a display mirror. | | `transitions` | permanent | **Append-only, immutable.** One row per version: the opaque `state`, the `action` that produced it, the pending set, deadline, per-player clocks. This table *is* the game's history. | | `frames` | live-only | Per-seat projected observations, for socket gap-recovery and the same-view compare. Drained by the finish compaction (replay re-projects instead). | diff --git a/docs/how-it-works/lifecycle.md b/docs/how-it-works/lifecycle.md index 27fccf2..04e34ac 100644 --- a/docs/how-it-works/lifecycle.md +++ b/docs/how-it-works/lifecycle.md @@ -43,11 +43,13 @@ rules). Highlights: - **Start** is creator-only, commits version 0 via the kernel, and arms the first deadline. -The client opens its WebSocket *before* start. Pre-game, the DO pushes -unversioned, idempotent **roster snapshots** on every change (a reconnect just -gets the current one); versioned frames begin at v0. D1's participants copy is -updated post-commit and is allowed to be briefly stale, and a stale lobby just means -a join can fail cleanly at the DO. +The client opens its WebSocket *before* start. The DO pushes a complete +**session snapshot** on open and after every change, lobby or state, so the +creator's waiting room learns that the roster filled and every seat learns that +the game started without asking. Pre-game a snapshot has no `version` and no +`frame`; both begin at v0. D1's participants copy is updated post-commit and is +allowed to be briefly stale, and a stale lobby just means a join can fail cleanly +at the DO. **create-solo** (`POST /api/engine/games/solo`) collapses "create a private game seated with me + bots, and start it" into one call, returning the caller's diff --git a/docs/how-it-works/transport.md b/docs/how-it-works/transport.md index f892e96..eeb2542 100644 --- a/docs/how-it-works/transport.md +++ b/docs/how-it-works/transport.md @@ -55,45 +55,93 @@ None of it is game code; a game never opens a socket or resolves an identity. one place. The `?v=` cache-buster means `cached_network_image` refreshes on re-upload with no manual invalidation. -## The frame stream +## The session stream A game has **one WebSocket for its whole lifetime** -(`/api/engine/games/{id}/socket`), opened before the game starts. Over it the -client receives: - -- **Roster snapshots** pre-game: unversioned and idempotent, pushed on every - lobby change. A reconnect just gets the current one. -- **A `sync`** on a mid-game open: `{ version }`, the newest committed version - at the moment the socket opened. From v0 the roster is frozen, so this is what - moves; it is what lets a client reconcile in one step instead of guessing. -- **Versioned frames** from v0: each is one seat's projected observation at one - state version (`{ version, data, pendingPlayers, deadline, playerTimes, - outcomes?, ratings? }`). - -Frames are **strictly serial with no gaps**. The client tracks the last version -it holds and reconciles against the `sync`, which costs a request only when it -has to: - -- **Nothing held yet** (a cold open, mid-game): fetch just that one version. A - cold load snaps to the present rather than replaying the game. -- **Already current**: no request at all. This is the common reconnect on a - flaky connection, and is why the server states its version rather than leaving - the client to poll. -- **Behind**: fetch exactly the missing span via - **`GET /games/{id}/frames?from=&to=`** and emit it in order *before* the frame - that revealed the gap, so the game animates through every transition it missed. - -The same range-fetch endpoint serves finished-game **replay** (the server -re-projects from its immutable log), so replay is just the whole range rather than -a missing slice. Reconnection is therefore always sound: reconcile against the -server's stated version, never guess. - -A command's own frame also rides its HTTP response (`CommandAccepted.frame`) and -is fed into the same version-deduped pipeline, so whichever copy arrives second -is dropped. That matters less for latency than it looks, since the socket -terminates at the same Durable Object and is written first, but it is what makes the -socket-less paths work: a freshly created solo game has no socket yet, and a -move submitted while the socket is mid-reconnect would otherwise render nothing. +(`/api/engine/games/{id}/socket`), opened before the game starts, and it carries +exactly one kind of message: a **session snapshot**, the complete live truth +about the game as the receiving seat sees it. + +```jsonc +{ + "type": "session", + "seq": 7, // monotonic per game, incremented by every commit + "gameId": "...", "shortCode": "ABC123", "access": "private", + "schemaVersion": 1, "config": { ... }, + "turnSeconds": null, "budgetSeconds": null, "incrementSeconds": null, + "rated": false, "ratingPool": null, + "minPlayers": 2, "maxPlayers": 2, "createdBy": "...", + "status": "active", // what moves + "players": [ ... ], + "version": 3, // null in the lobby + "frame": { ... } // THIS seat's observation, null in the lobby +} +``` + +Three properties follow, and they are the whole design: + +- **It is sent on open, at every status.** A client never has to guess where a + game is, and never holds a frame without the status it belongs to. A reconnect + needs no announcement: its first message is the current snapshot. +- **It is complete, so it is idempotent.** A client that applies the newest one + it has seen is correct however many it missed. There is nothing to + reconstruct and no second channel to correlate against. +- **It is projected per seat before sending.** `frame` is only ever the + receiving principal's own seat's view, resolved against the roster at send + time, so hidden information cannot leak. A client holding no seat gets the + envelope with `frame: null`, which is how a viewer still learns the game + started. + +It carries the immutable header as well as the moving parts on purpose: a game +screen must not need a second source. The D1 game summary +(`GET /games/{id}`) is the **index**, which backs lists and discovery and is a +mirror written after the game's own commit. A screen bound to one game reads the +session; a list reads the index. Never the other way around, and in particular a +list must never subscribe to a session, which would open one socket per row. + +**Ordering is by `seq`, not `version`**, because a lobby change has no version. +A client applies a snapshot when `seq` exceeds the one it holds, which is what +resolves a command response racing its own socket push, a duplicate delivery, and +a reconnect that missed nothing. One exception, and it is a property of the state +machine rather than a special case: a `finished` or `aborted` snapshot is applied +whatever its `seq`, because those statuses are absorbing and the abort teardown +drops the storage the counter lived in. + +### Gaps still animate + +Frames are append-only server-side, one per seat per version, so a version jump +means the client missed transitions it would rather show than skip. It fetches +exactly the missing span with **`GET /games/{id}/frames?from=&to=`** and plays it +through first, one emission per version, **each carrying the previous envelope**. +Only the real snapshot may move `status`, `players` and `seq`, so a client that +missed a finish animates the moves and *then* shows the outcome, rather than +displaying a finished game while mid-game moves play. + +A cold open does not animate: with no predecessor rendered there is nothing to +animate from, so it snaps to the present. The same range endpoint serves +finished-game **replay** (the server re-projects from its immutable log), so +replay is the whole range rather than a missing slice. + +### Commands answer with the same value + +Every accepted command, from `join` to a move, answers with the caller's own +post-commit session, so the client feeds HTTP responses and socket pushes into +one path and drops whichever arrives second by `seq`. That is what makes the +socket-less paths work: a freshly created solo game has no socket yet, and a move +submitted while the socket is mid-reconnect would otherwise render nothing. + +**`GET /games/{id}/session`** returns the same snapshot over HTTP, for the paths +with no socket at all. + +:::note[Commands are HTTP, deliberately] + +The socket is one-way. A command's outcome is an HTTP status, not something to +correlate against a later broadcast, which is what keeps "the server said no" +distinguishable from "the outcome is unknown". External bots post the same +command shape to `/bot/action` with no socket at all, and `createGame`, +`createSolo` and `joinByCode` all run before a client has one. + +::: ## Player identity diff --git a/docs/reference/http-api/add-bot.StatusCodes.json b/docs/reference/http-api/add-bot.StatusCodes.json index 2d8d449..5529b76 100644 --- a/docs/reference/http-api/add-bot.StatusCodes.json +++ b/docs/reference/http-api/add-bot.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"Bot seated: the new roster","content":{"application/json":{"schema":{"type":"object","properties":{"roster":{"type":"object","properties":{"type":{"type":"string","enum":["roster"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}}},"required":["type","status","players"],"title":"Roster"}},"required":["roster"],"title":"LobbyAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"Bot seated: the post-commit session","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/add-bot.api.mdx b/docs/reference/http-api/add-bot.api.mdx index f346cd2..06438ea 100644 --- a/docs/reference/http-api/add-bot.api.mdx +++ b/docs/reference/http-api/add-bot.api.mdx @@ -5,7 +5,7 @@ description: "addBot" sidebar_label: "addBot" hide_title: true hide_table_of_contents: true -api: eJztmV9v2zYQwL8KwZclg2K3WTdsatfBydLWXdoGcYo+BEZ9ls4SG4lUyZMdzfB3H46UHMfO2pciT85LLPJ4vD+/OzmXpTQVWiBl9DCVsYQ0PTEkI0mQORlfy9dQopPjSFZgoURCy8tL6ZIcS5DxUlJToYylI6t0JiNZKn2OOqNcxk9XkbT4tVYWUxmTrTGSGkoWz6DEYSojqbSMZQWUy9U4SKOjE5M2rHv7cGI0oSbegqoqVOIt739xRvPajlFm+gUTdqey7CcpdLw7NcTebtu+4gvKEnT60O59zyJZwu366fj31T1Xr9srxpEkRQVrGYTIrlZB0lVGu2DN8ZMn/CtFl1hVsUMylieGhEMgTGNBOQqNC2GNI7Tyh4Wh1fddubC7Gw/Udcm+tnrGq0g6Aqrdt4QXoCisWIS0kZGEhNQcZSRnSiuXI1MBU2MJ7wWQSRwF9atIVgU0nsX1TWAtsDpFWLrvOxUUDHWKtxvCShNmaPmG2qHd5OD6zhddF4V3dwukh0S+F7y8LkFLr0qOtynaNHJtUXdtq3sjRCMET9h9JV5qnZq70G0cvAwZ3D7ZJfZO8NxMp80gSbDi7ASYnz3E71DPoVCpaAv6x0GL1hr7P7WbfjPS2tCgQ00bumzxw9vK++sXL1Cn4RSHCz9WKZegb1PenwtoCgN+oSgwg+Kd8fpqfaPNQjOjQdFbozRMC37iVveKcYgkFB563lzfCJZUoirQFBZOLQIZX+bh0ylobegcwd8U4vRRu7qqQo0EMLivtkHfWLmCG2S6ZlahTt0HXTS+8jLlKLT9yy7fkVQlZHhlzDnYLDi1vmTotwJIFgjPVana+ryf94FwxH6LEpJcaRScFaFS1KRmjdKZWOSNgI4LMQNVYNqTd4idcYJPOZfbOIbUj7dEL9teuqbx6S6N75RzfLexok2kIBMis8dyj+WjYPnLLpbvDQkoCrPwfu5J3JP4KCQ+e5jEman1nsM9h4/G4R+7HPIXfDZFzwqV0HNh0TU6EaD5myTZZo/nHs9HwvP4eBfPgXNMkNGiVK4ESvI9kHsgHwPI1bY960ldiZQbnt1Vxv+d7WdpsexDpfqoM6Wxz4ly/WWYua36kKZHU3/WYVJbRY0f6c2UxSk4nmOMeRbXbY44MYHRO5E1jTlR1WWPn6cI1g+pwodXxpZAMpZvP13J3Zi+ahWK4d/hL7JIONQkwInJoKbcWPWvz2YsTrw+8cKLvZyIA2PF5C//9OdEGC0+4XRkkhskUVeZhRTdYU+GIc2bEpLNUVGl/sGmGz7mCKm3uB1NnqkM9dFIZRqotrhrtRZ4S4xhIaaGfnLizbvBqXDdAWHmaP3QDm8hoTURU5M2kZjytyxBxgtMePZl9ESkpgSleyLEWkzmT6MXHJffnr2cPPeiFVpOmrjBRignJnznwcmHq8+j4ev3w/evP4/OTi/PrvgCGqaHk564Ygs8AN42JxZwg04sFOVeo4MSRXBeKO2XDOVoRaosert6nlRuZJd3c9mzWyirAjfmqHcdaWN8utG/lJ4ZH/2Obg7wUBPaMPoTZ8HKwcVQRnKO1oVAP+kd937dCT+75dDO0R5BIITAa2G8O4cHF8OeOC0Us2RNTejEwWSzJH6eHIq2BAXsYvi8zV9Isw/8Aqe5MTednqmhfpu9Q04I58MbxA0h4ebq4eOi5AFfvOzwgjQVoXLv+bWGk/CW+lUBSvsppC38tNIX9TWT6xs/+9B2YB7pxetxelfb40jm3A/ia7lcsmsfbbFa8fLXGi0X/DiSc7DK93Iu/1Q5/pzKeAaFwx3z1q85edC11kPRDSG3ze4KTXOVzaGo+UlG8gabu+H/iuejbfWxBWHzNNxz1Dbl7vDOq3UVdSfCPPKbsuONPnnxYXTlh6jhfwylf7tKCwv/ClgEQ433O4zJeW0pC9BZDRnLBp388x86msyZ +api: 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 sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/cancel-game.StatusCodes.json b/docs/reference/http-api/cancel-game.StatusCodes.json index 713aed8..48080fe 100644 --- a/docs/reference/http-api/cancel-game.StatusCodes.json +++ b/docs/reference/http-api/cancel-game.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"Cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"roster":{"type":"object","properties":{"type":{"type":"string","enum":["roster"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}}},"required":["type","status","players"],"title":"Roster"}},"required":["roster"],"title":"LobbyAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"Cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/cancel-game.api.mdx b/docs/reference/http-api/cancel-game.api.mdx index d2f8088..60fa02b 100644 --- a/docs/reference/http-api/cancel-game.api.mdx +++ b/docs/reference/http-api/cancel-game.api.mdx @@ -5,7 +5,7 @@ description: "cancelGame" sidebar_label: "cancelGame" hide_title: true hide_table_of_contents: true -api: eJztmV9v2zYQwL8KwZclg2K3WTdsbtfB9dLWXdoGcYo+BEZ9ls4SF4lUyZMdzdB3H46UHMcukpeiT85LLPJ4vD+/OzmXtTQlWiBl9DiRAxmDjjF/AwXKSBKkTg6uJT86OY1kCRYKJLS8vJYuzrAAOVhLqkuUA+nIKp3KSBZKn6NOKZODp00kLX6tlMVEDshWGEnN+gcyhQLHiYyk0nIgS6BMNtMgjY5emaRm3buHY6MJNfEWlGWuYm99/19nNK/tGWXm/2JMMpKlZV9JoePd2BQF6IS9ftj+SBZwu3k6/b1pIkmKcj5wbubzehQ0yaZpvK+uNNqFS06fPOFfCbrYqpLtlAM58jHOkT3/Ts5Y4wjt43Jhd99f1FXBmW71TJtIOgKq3EPCK1AUVixCUstIQkxqyeQslFYu8x7C3FjChPHposY8TYL6JpJlDrUnanMTWAusThEW7nGngoKxTvB2S1hpwhQt31A5tNt5vr7zRVd57t2dG3pM5LHgZVUBWnpVctrcw/76npEbi7prW91bIZogkGx2lXipTWruQrd18DJkcPdkl9gddIdxjCVnJ7D77Fu4jvUScpWItiy/H7RorbH7AW34guTBSGtDww41beiyxQ9vS++vX7xAnYRTHC78VCZAGJqN9+cC6tyAX8hzTCF/b7y+St9os9JtC9SG3hmlYZ7zEzes14xDJCH30PPm5kawpGJVgqawMLIIZCxHLHwagdaGzhH8TSFOn7SryjLUSACDu2Mb9K2VK7hBpmthFerEfdR57SsvVY5CA7/s8h1JVUCKV8acg02DU5tLxn4rgGSB8FwVqq3P+3kfCkfstyggzpRGwVkRKkFNalErnYpVVgvouBALUDkmPXmH2BkneMS53MUxpH66I3rZts4NjU/3aXyvnOO7jRVtIgWZEJkDlgcsfwiWv+xj+cGQgDw3q+/5Vj+QeCDxYRKffZvEhan0gcMDhz+Mwz/2OeQv+GyKXuQqpufCoqt1LEDzN0my9QHPA54/CM/T0308h84xQUaLQrkCKM4OQB6A/BFANrv23Ju5FUiZ4Ulcafzf2n4qNpB9KFUfdao09jlZrr8O07OmH45z2DGurKLaz+YWyuIcHI8ypjxU6zYnnJuA6Z3IBsiMqOwSyM9zBIuc5/DhtbEFkBzId5+v5H5YX7cKxfjv8EdZJBxqEuDEbFhRZqz6zyd0IF55feKFF3s5E0fGitlf/unPmTBafMb5xMQ3SKIqUwsJuuOeDHOatwXE29OiUv2DdTdFzBASb3E7YzxTKeqTiUo1UGVx32ot8JaYxFzMDf3kxNv3w5Fw3QFhlmgFZSjwFmLaQDE3SR2JOX/REmS8wIzHX0bPRGIKULonQqzFbPk0esFx+e3Zy9lzL1qiPZkbEjdYC+XEjO88evXx6stk/ObD+MObL5Oz0eXZFV9A4+R41hNXbIHPv7fNiRXcoBMrRZnX6KBAEZwXSvslQxlakSiL3q6eh5V72eXdgPXsFooyx52B6FbHUnphfLA7njmeY01ow7BPnAWjhhdjGcklWhfi+qR32vt1L9rshUO7RHsCAQgCr4Vh7vwbXox7YpQrRseaitCJo9l2Afw8OxZt0QnYp+55m66QVR/nFc4zY246PXND/TZZxxx/Dr83iFtAzO3Us8YlyCO9wbqjKdSaaGv1nm8bHglvqV/moLSfPdrczyh9GV8zrL7dsx9t3+VB3mAzCm+reRrJjBvA4Fqu1+zdJ5s3DS9/rdByiU8juQSrfAPngk+U48+JHCwgd7hn3ebdJo+6fnosusnjrtVdaWmuqyXkFT/JSN5gfTe3b3go2tYbWxA2R+Gek7YTd4f33qdN1J0IQ8gHZadbjfHi4+TKT07DvwcK/0qVFla+76+Cocb7HWbjvLaWOei0gpRlg07++R/K/rhL +api: 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 sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/create-solo-game.StatusCodes.json b/docs/reference/http-api/create-solo-game.StatusCodes.json index c8bcfe5..073cbef 100644 --- a/docs/reference/http-api/create-solo-game.StatusCodes.json +++ b/docs/reference/http-api/create-solo-game.StatusCodes.json @@ -1 +1 @@ -{"responses":{"201":{"description":"The created-and-started solo game","content":{"application/json":{"schema":{"type":"object","properties":{"gameId":{"type":"string"},"shortCode":{"type":"string"},"version":{"type":"integer"},"frame":{"type":["object","null"],"properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"}},"required":["gameId","shortCode","version","frame"],"title":"SoloStarted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"201":{"description":"The created-and-started solo game","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"SoloStarted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/create-solo-game.api.mdx b/docs/reference/http-api/create-solo-game.api.mdx index 83dd16f..7c0ab71 100644 --- a/docs/reference/http-api/create-solo-game.api.mdx +++ b/docs/reference/http-api/create-solo-game.api.mdx @@ -5,7 +5,7 @@ description: "createSoloGame" sidebar_label: "createSoloGame" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/forfeit-game.StatusCodes.json b/docs/reference/http-api/forfeit-game.StatusCodes.json index da46222..cea0106 100644 --- a/docs/reference/http-api/forfeit-game.StatusCodes.json +++ b/docs/reference/http-api/forfeit-game.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"Forfeit committed","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer"},"frame":{"type":["object","null"],"properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"}},"required":["version","frame"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"Forfeit committed","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/forfeit-game.api.mdx b/docs/reference/http-api/forfeit-game.api.mdx index da6b31c..814d1ee 100644 --- a/docs/reference/http-api/forfeit-game.api.mdx +++ b/docs/reference/http-api/forfeit-game.api.mdx @@ -5,7 +5,7 @@ description: "forfeitGame" sidebar_label: "forfeitGame" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/get-frames.StatusCodes.json b/docs/reference/http-api/get-frames.StatusCodes.json index ca48d43..adfe4bd 100644 --- a/docs/reference/http-api/get-frames.StatusCodes.json +++ b/docs/reference/http-api/get-frames.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"The projected frames, version-ascending","content":{"application/json":{"schema":{"type":"object","properties":{"frames":{"type":"array","items":{"type":["object","null"],"properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"}}},"required":["frames"],"title":"Frames"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"The projected frames, version-ascending","content":{"application/json":{"schema":{"type":"object","properties":{"frames":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"}}},"required":["frames"],"title":"Frames"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/get-frames.api.mdx b/docs/reference/http-api/get-frames.api.mdx index d832682..2acbd27 100644 --- a/docs/reference/http-api/get-frames.api.mdx +++ b/docs/reference/http-api/get-frames.api.mdx @@ -5,7 +5,7 @@ description: "getFrames" sidebar_label: "getFrames" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "get api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/get-game-session.ParamsDetails.json b/docs/reference/http-api/get-game-session.ParamsDetails.json new file mode 100644 index 0000000..5c4016a --- /dev/null +++ b/docs/reference/http-api/get-game-session.ParamsDetails.json @@ -0,0 +1 @@ +{"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"gameId","in":"path"}]} \ No newline at end of file diff --git a/docs/reference/http-api/get-game-session.RequestSchema.json b/docs/reference/http-api/get-game-session.RequestSchema.json new file mode 100644 index 0000000..c96bced --- /dev/null +++ b/docs/reference/http-api/get-game-session.RequestSchema.json @@ -0,0 +1 @@ +{"title":"Body"} \ No newline at end of file diff --git a/docs/reference/http-api/get-game-session.StatusCodes.json b/docs/reference/http-api/get-game-session.StatusCodes.json new file mode 100644 index 0000000..5d20ab9 --- /dev/null +++ b/docs/reference/http-api/get-game-session.StatusCodes.json @@ -0,0 +1 @@ +{"responses":{"200":{"description":"The caller's current session snapshot","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/get-game-session.api.mdx b/docs/reference/http-api/get-game-session.api.mdx new file mode 100644 index 0000000..e576e9b --- /dev/null +++ b/docs/reference/http-api/get-game-session.api.mdx @@ -0,0 +1,69 @@ +--- +id: get-game-session +title: "getGameSession" +description: "getGameSession" +sidebar_label: "getGameSession" +hide_title: true +hide_table_of_contents: true +api: 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 +sidebar_class_name: "get api-method" +info_path: docs/reference/http-api/eigeninteractive-engine-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; +import Translate from "@docusaurus/Translate"; + + + + + + + + + + +getGameSession + + + Request + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/reference/http-api/join-game-by-code.StatusCodes.json b/docs/reference/http-api/join-game-by-code.StatusCodes.json index c4c4a2a..9273bb5 100644 --- a/docs/reference/http-api/join-game-by-code.StatusCodes.json +++ b/docs/reference/http-api/join-game-by-code.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"Seated: the game's id and the post-join roster","content":{"application/json":{"schema":{"type":"object","properties":{"gameId":{"type":"string"},"roster":{"type":"object","properties":{"type":{"type":"string","enum":["roster"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}}},"required":["type","status","players"],"title":"Roster"}},"required":["gameId","roster"],"title":"Joined"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"Seated: the post-join session","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/join-game-by-code.api.mdx b/docs/reference/http-api/join-game-by-code.api.mdx index 7df0e73..395aee4 100644 --- a/docs/reference/http-api/join-game-by-code.api.mdx +++ b/docs/reference/http-api/join-game-by-code.api.mdx @@ -5,7 +5,7 @@ description: "joinGameByCode" sidebar_label: "joinGameByCode" hide_title: true hide_table_of_contents: true -api: eJztmd1z2kYQwP+Vm3tJ3BHYcdNOS9J0MHUcWif2GNI8eJiwSIt0sXSn3K3Aqof/vbN3AmMg8XSm4yf8YnQf+/nblVnfSVOiBVJG9xPZkV+M0mdQ4EndMwnKSBKkTnauJS86OYqkxa8VOjoxSS07d/5RWUxkh2yFkYyNJtTEW1CWuYq97MMvzmhec3GGBfjdPL+Yys71naS6RNmRZvIFY5KRLC3bRAodn4tzhZoG/t7faJ0KgppLShOmaOWCNRcF6ITdWG07skqnMpKF0ueoU8pk50UkC7hdPR3/slhEa25c79Q4iiQpylnmn0ZpuYges9tlxpIP4iPmbKq/vzhabKhtsrJYhDuuNNoFbcdHR/wrQRdbVZIPkhwgECYdQRmKFAp85oRKBOjEr5TGUYvzLaxxhFb+h+R933XWtSsNbHRQ9aiIsLsdONRVwUFq5IwWkXQEVLnvHZ6DorBiEZJaRhJiUjPGe6q0chkmvDYxljBZTzVDPwjiF5Esc6jRrmsCa4HFKcLCPe5UENDXCd7uRrhyaNcDd33vi67y3Ls7MfTYkceCl1UFaOlFydEmfutGrixaqm1kr4WIGZOLTSH+1Co196Fbu3gVMrh5s2FnRcpGBWDS0P9yF/B9PYNcJaLpUf8f0WitsTuBjr9R4ctYa0PdJWza0FUDIN6W3mO/eIk6Cbc4YPixTLhumavgzyXUuQG/kOeYQv7eeHmVvtFm7vt1EMQRgknOTxzHtwxEJCH32DfhCxrBkopVCZrCQs8ikPE9IHzqgdaGzhG8phCnj9pVZRmqJKChOVvByLWVIdwg8zW1CnXiLnRe+9pLlaPwrrlaZjySqoAUh8acg02DUyslfb8VULJAeK4K1VTow7x3hSP2WxQQZ0qj4KwIlaAmNa2VTsU8qwUsuRBTUDkmbXnP1iknuGmuD4EMqR9tHL1qmu+KxhfbNL5XzrFuY0WTSEEmRGaP5R7LJ8Hyx20sPxgSkOdm7v3ck7gn8UlIfLmbxKmp9J7DPYdPxuGvO74ncTJFbPQ0VzG9EhZdrWP/Rcki2XqP5x7PJ8Lz+Hgbz65zTJDRolCuAIqzPZB7IJ8CyMWmPVvjwQIpMzw45GkS0wU805KHUKpD1KnSeMgJc4d8szWpW3G45zCurKLaDwCnyuIEHE8z/MhruelHcIHT+yMrIjOicplBfp4gWD/FCh/eGlsA8djg01Bux/VtI1D0/wjfyiLhUJMAJ8bdijJj1T8+ox1x4uWJ1/7Ym7F4bqwY/+6ffhsLo8UnnAxMfIMkqjK1kKA7aMswqnlXQLw+MCrVX+gnRmxFhpB4i5ktToBKUbcGKtVAlcVtq7XAW2IUczEx9MyJd++7PeGWF4SZofWzPbyFmFZUTExSR2LCf2kJMv7AmCdgRo9FYgpQui1CrMV49iJ6zXH5+eWb8aswJ0TbmhgSN1gL5cSYdT4/uRh+HvTPPvQ/nH0enPauToesgPrJwbgthmyBT763zYk53KATc0WZl+igQBGcF0r7JUMZWpEoi96utqeVm9nV/bj59BaKMsdvDoWPHsyA7zvW2iR2rb8pPTU+M0v6Ofh9TWjDcFCcBg+6l30ZydlSiTxqH7d/2koNu+zQztC2INBD4KUw/ctgdC/7bdHzpgtrKkInno/XS+WH8YFoSlTANqKvmtwGBHxS5jjJjLlZypkYOmwye8DJ4lx5g7hhxNx8PZhcrDwC7Nwt0fNzYK5scVKLprYfeLhCmPCWDssc/BBcVjb3k01f9tfMt39FsDdNr+bx34PiH0Uy42bRuZZ3d+zfR5svFrz8tULLHWEUyRlY5Rs+t4RoWSncLG6wlh3ZC6+/VtNEZ5BXob42XoU8pw83unGMJX337Gitn11eDIZ+7Bn+zVEEfCzMfcuey46UkTQ+OL5B+bU7mYNOK0h9SL1M/vkXYOPelA== +api: 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 sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/join-game.StatusCodes.json b/docs/reference/http-api/join-game.StatusCodes.json index c4c4a2a..9273bb5 100644 --- a/docs/reference/http-api/join-game.StatusCodes.json +++ b/docs/reference/http-api/join-game.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"Seated: the game's id and the post-join roster","content":{"application/json":{"schema":{"type":"object","properties":{"gameId":{"type":"string"},"roster":{"type":"object","properties":{"type":{"type":"string","enum":["roster"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}}},"required":["type","status","players"],"title":"Roster"}},"required":["gameId","roster"],"title":"Joined"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"Seated: the post-join session","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/join-game.api.mdx b/docs/reference/http-api/join-game.api.mdx index 0ff07ff..c762f24 100644 --- a/docs/reference/http-api/join-game.api.mdx +++ b/docs/reference/http-api/join-game.api.mdx @@ -5,7 +5,7 @@ description: "joinGame" sidebar_label: "joinGame" hide_title: true hide_table_of_contents: true -api: eJztmU1z2zYQhv8KBpfaHVpy3LTTKmk6iuskap3EYznNwaOJVuSKREwCDLCUxGr03zsLkLIsufYl45N8sQgCi/14sBRfLaUp0QIpoweJ7MmvRum3UKCMJEHqZO9a8qWTo0iWYKFAQsvDS+niDAuQvaWkukTZk46s0qmMZKH0OeqUMtl7toqkxW+VspjIHtkKI6nZfk+mUOAgkZFUWvZkCZTJ1SjMRkevTVKz7e3FsdGEmvgWlGWuYu9796szmsd2nDKTrxiTjGRpOVJS6PhunCvUNPSz/0HrVFjeLFKaMEUrV7xfUYBOODkPBxrJAhbrq5NfV3civ753x1EkSVHONv8ySsvVKqxypdEuOHpyfMz/EnSxVSV5P+UQgTDpCcpQcBp/cEIlAnTiR0rj6IgLKaxxhFZ+t6w1JdvJBDsdtnrURLi7m0rUVcFpauyMVpF0BFS5hybPQVEYsQhJLSMJMakZ0ztVWrkMmS+YGEuYbGabmR4G86tIljnUnur1TmAtsDlFWLjHgwoGBjrBxf0UVQ7tZuKub2PRVZ77cCeGHpvyWPKyqgAtvSk52gZw08m1R+22je2NFDFjcrVtxM9al+Y2dRsLL0MFt1euj3tb4bvsY9LQ//w+4Ad6BrlKRNMcvh/RaK2x9wIdm+TBXGtD/RY2beiyARAXpY/YD16gTsIqThh+KhM+t77l+XguoM4N+IE8xxTy98bbq/SNNvO2EWtDnCGY5HzFeXzDQEQSco99k76wI1hSsSpBUxg4tQhkfA8In05Ba0PnCH6nkKdP2lVlGU5JQIN7dJP0jZEruEHma2oV6sR91Hntz16qHIWHyGVb8UiqAlK8MuYcbBqCWm8y8LcCShYIz1WhmhN6t+594YjjFgXEmdIouCpCJahJTWulUzHPagEtF2IKKsekI2/ZOuMCn3Itt4EMpR9tTb1smu+axme7NL5XzvHexoqmkIJMyMweyz2WT4LlT7tYfjAkIM/N3Me5J3FP4pOQ+Px+Eqem0nsO9xw+GYe/3fOexMUUsdHTXMX0Qlh0tY79i5JFsvUezz2eT4Tnyckunn3nmCCjRaFcARRneyD3QD4FkKttfzZ0vwIpM6wFso7EXLEy15NdKFUXdao0drlUrrsMr/SrLi/mlGNcWUW1VwenyuIEHAsZI5b12pteAAuI3k5Zw5gRlW3x+HqCYL2AFT68MbYAYsXg85XcTembxqAY/BleyCLhUJMAJ8b9ijJj1b++mD3x2tsTL/20V2NxYKwY/+Gvfh8Lo8VnnAxNfIMkqjK1kKA77Mig0rwrIN7Uikr1N9atjpkhJN7jRuU8Uynqo6FKNVBlcddrLXBBTGEuJoZ+cOLd+/6pcO0CYWZovayHC4hpDcTEJHUkJvwlS5DxE8Ysfhk9FokpQOmOCLkW49mz6CXn5Zfnr8YvgkSI9mhiSNxgLZQTY97z4PXHqy/DwdsPgw9vvwzPTi/PrngDGiSH4464Yg989b1vTszhBp2YK8q8RQcFihC8UNoPGcrQikRZ9H51PKjcxy5vJd6zBRRljv8ryR7fUWA3upjSU+OL0DLOeR5oQhskQHEWnO1fDGQkZ609edw56fy8UwWOzqGdoT2CAAqBt8KIt3H3LwYdceq9FNZUhE4cjDePxY/jQ9EcRAG7NL5oyhiq7fM/x0lmzE1rZ2Ko2xTxkOvCZfEOcVuIucV6BvlgstDXW7aUebW3Ob93IltTSrigbpkDq8yRrGzudUt/tK8ZYf8A4CiaTsziXm+t2fkTPopkxi2hdy2XS47sk81XKx7+VqHlYz+K5Ays8g2dm0CiHH9OZG8KucMd39bPOnnQ9tdD0WqR2z63x03zWZtBXvGVjOQN1re/JqxYJm3OIHsQbp6GfY6aztwu3nm+rqJ2RT+OsaQH5442WuXFx+GV11LDjxaFf8RKC3P/HJgHR42P27c+P7aUOei0gtRX0Nvkv/8AfAzrnQ== +api: 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 sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/leave-game.StatusCodes.json b/docs/reference/http-api/leave-game.StatusCodes.json index e2aa6fc..7837e00 100644 --- a/docs/reference/http-api/leave-game.StatusCodes.json +++ b/docs/reference/http-api/leave-game.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"Left: the post-leave roster","content":{"application/json":{"schema":{"type":"object","properties":{"roster":{"type":"object","properties":{"type":{"type":"string","enum":["roster"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}}},"required":["type","status","players"],"title":"Roster"}},"required":["roster"],"title":"LobbyAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"Left: the post-leave session","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/leave-game.api.mdx b/docs/reference/http-api/leave-game.api.mdx index 35c0b86..f8875ab 100644 --- a/docs/reference/http-api/leave-game.api.mdx +++ b/docs/reference/http-api/leave-game.api.mdx @@ -5,7 +5,7 @@ description: "leaveGame" sidebar_label: "leaveGame" hide_title: true hide_table_of_contents: true -api: eJztmd9v2zYQx/8Vgi9LBsVus27Y1K6D66Wtu7QN4hR9CIz6LJ0lLhKpkic7nqH/fThSchy7SF+KPLkvtSjyeD8+d3a/XUtToQVSRo9SGcsCYYFvoEQZSYLMyfha8qOTk0hWYKFEQsvLa+mSHEuQ8VrSqkIZS0dW6UxGslT6HHVGuYyfNpG0+LVWFlMZk60xkprtxzKDEkepjKTSMpYVUC6bSdiNjl6ZdMW2dw8nRhNq4ldQVYVKvPP9f53RvLbnlJn9iwnJSFaWQyWFjt8mpixBpxz0w/5HsoTbzdPp700TSVJU8IFzM5uthsGSbJrGx+oqo1245PTJE/4rRZdYVbGffAjnFAvKUVTG0YnPuLDGEVr5w8Jr7X13X3i7nwHUdcm1b+1Mmkg6AqrdQ5uXoCisWIR0JSMJCakFszRXWrkcudowM5YwZaC6PDJh42C+iWRVwMoztrkJrAU2pwhL9/2ggoGRTvF2a7PShBlavqF2aLcrf30Xi66Lwoc7M/S9Ld9LXl6XoKU3JSfNvUa4vufkxqPu2tb2VorGCCSbXSN+16Y0d6nbOngZKrh7sivsDsyDJMGKqxNofvYtgEd6AYVKRduoPw5atNbY/YQ2fEH6YKa1oUGHmjZ02eKHt5WP1y9eoE7DKU4XfqpSIAzjx8dzAavCgF8oCsygeG+8vVrfaLPU7VDUht4ZpWFW8BOPsNeMQySh8NDzy82NYEklqgJNYWFoEcj4Ng+fhqC1oXMeAeyXz9Mn7eqqCj0SwOB52SZ9a+UKbpDpmluFOnUfdbHynZcpR2GiX3b1jqQqIcMrY87BZiGozSUj/yqAZIHwXJWq7c/7dR8IRxy3KCHJlUbBVREqRU1qvlI6E8t8JaDjQsxBFZj25B1iZ1zgIddyF8dQ+snO1st2mG5ofLpP43vlHN9trGgLKciEzBywPGD5KFj+so/lB0MCisIsfZwHEg8kPgqJz75N4tzU+sDhgcNH4/CPfQ75Bz67oueFSui5sOhWOhGg+Zck2dUBzwOej4Tn6ek+ngPnmCCjRalcCZTkByAPQD4GkM2uP9siXImUG1bmWCxisFgmi2UfKtVHnSmNfa6V66+DnNb0iy7pmNRW0cprdXNlcQaOhYwJi2zdyzFXJkB6t2WDY05UdeXj5xmC9SpV+PDa2BJIxvLd5yu5n9TXrUEx+jv8kywSDjUJcGI6qCk3Vv3nyxmLV96eeOG3vZyKI2PF9C//9OdUGC0+42xskhskUVeZhRTdcU8GleZtCcm2VlSpf3DVqYo5Quo9bjXHM5WhPhmrTAPVFve91gJviTksxMzQT068fT8YCtcdEGaB1ot3eAsJbZCYmXQViRn/zBJk/IYpi19GT0VqSlC6J0KuxXTxNHrBefnt2cvp8yAEoj2ZGRI3uBLKiSnfefTq49WX8ejNh9GHN1/GZ8PLsyu+gEbp8bQnrtgDX37vmxNLuEEnlopyb9FBiSIEL5T2S4ZytCJVFr1fPY8qT7LLO8H17BbKqsAdgXRrXik9Nz7ZHc2cz5EmtEHqE2fBqcHFSEZygdaFvD7pnfZ+3cs2R+HQLtCeQACCwFthlrv4BhejnhgWitGxpiZ04mi6zf/P02PRtpyAfeqet+UKVfV5XuIsN+amszMz1G+Ldcz55/R7h3gAJDxMPWvcgSzoxeuOpqDdtp16L7QNjoS31K8KUNoLj7bwAqVv4mtm1c96DqMduqzixRtlPPTyJJI5d398Lddrju2TLZqGl7/WaLnBJ5FcgFV+eHO7p8rx51TGcygc7jm3+V6TR90sPRad6rjrdNdYmrtqAUXNTzKSN7i6U/EbFkTbbmMPwsthuOekncLd4b3v0ibqTgQB8sG9k62pePFxfOVV0/CfBaX/OpUWln7mL4OjxscddHFeW8sCdFZDxnuDTf7zPyb0vRg= +api: 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 sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/sidebar.ts b/docs/reference/http-api/sidebar.ts index 1540c59..b2ef819 100644 --- a/docs/reference/http-api/sidebar.ts +++ b/docs/reference/http-api/sidebar.ts @@ -32,6 +32,12 @@ const sidebar: SidebarsConfig = { label: "getGame", className: "api-method get", }, + { + type: "doc", + id: "reference/http-api/get-game-session", + label: "getGameSession", + className: "api-method get", + }, { type: "doc", id: "reference/http-api/create-game", diff --git a/docs/reference/http-api/start-game.StatusCodes.json b/docs/reference/http-api/start-game.StatusCodes.json index 5ce2da7..2c3b4c1 100644 --- a/docs/reference/http-api/start-game.StatusCodes.json +++ b/docs/reference/http-api/start-game.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"Started: version 0 committed","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer"},"frame":{"type":["object","null"],"properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"}},"required":["version","frame"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"Started: the session at version 0","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/start-game.api.mdx b/docs/reference/http-api/start-game.api.mdx index 0110c9c..4ca3134 100644 --- a/docs/reference/http-api/start-game.api.mdx +++ b/docs/reference/http-api/start-game.api.mdx @@ -5,7 +5,7 @@ description: "startGame" sidebar_label: "startGame" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/submit-action.StatusCodes.json b/docs/reference/http-api/submit-action.StatusCodes.json index c704f28..df8da83 100644 --- a/docs/reference/http-api/submit-action.StatusCodes.json +++ b/docs/reference/http-api/submit-action.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"Committed: the acting seat's frame","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer"},"frame":{"type":["object","null"],"properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"}},"required":["version","frame"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"Committed: the acting seat's session","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/submit-action.api.mdx b/docs/reference/http-api/submit-action.api.mdx index 109af13..75e8276 100644 --- a/docs/reference/http-api/submit-action.api.mdx +++ b/docs/reference/http-api/submit-action.api.mdx @@ -5,7 +5,7 @@ description: "submitAction" sidebar_label: "submitAction" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-surface.md b/docs/reference/http-surface.md index 371a3dd..922d4f7 100644 --- a/docs/reference/http-surface.md +++ b/docs/reference/http-surface.md @@ -38,7 +38,8 @@ the [`openapi.json`](pathname:///openapi.json) spec directly. | `POST /games/{id}/join` · `POST /games/join-by-code` | Join | | `POST /games/{id}/leave` · `/cancel` · `/add-bot` · `/start` | Waiting-room commands | | `POST /games/{id}/action` · `/forfeit` | Active play (carry the caller's `seat`) | -| `GET /games/{id}/socket` | WebSocket upgrade (`?token=` auth); frames + roster snapshots | +| `GET /games/{id}/session` | The caller's current session snapshot, from the game's own Durable Object | +| `GET /games/{id}/socket` | WebSocket upgrade (`?token=` auth); per-seat session snapshots | **Profile / account / devices / social writes:** diff --git a/docs/reference/typescript/kernel.md b/docs/reference/typescript/kernel.md index 4b93bc0..b5cf8cc 100644 --- a/docs/reference/typescript/kernel.md +++ b/docs/reference/typescript/kernel.md @@ -10,7 +10,7 @@ its inputs alone. ### GameBugError -Defined in: [eigen-server/packages/kernel/src/errors.ts:15](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/errors.ts#L15) +Defined in: [eigen-server/packages/kernel/src/errors.ts:15](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/errors.ts#L15) A broken game/engine invariant: a bug, not a rejection. @@ -73,7 +73,7 @@ Error.constructor ### CommitInput -Defined in: [eigen-server/packages/kernel/src/commit.ts:96](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L96) +Defined in: [eigen-server/packages/kernel/src/commit.ts:96](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L96) #### Properties @@ -83,7 +83,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:96](https://github.com/e game: GameRow; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:97](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L97) +Defined in: [eigen-server/packages/kernel/src/commit.ts:97](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L97) ##### intent @@ -91,7 +91,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:97](https://github.com/e intent: Intent; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:102](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L102) +Defined in: [eigen-server/packages/kernel/src/commit.ts:102](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L102) ##### now @@ -99,7 +99,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:102](https://github.com/ now: number; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:105](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L105) +Defined in: [eigen-server/packages/kernel/src/commit.ts:105](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L105) The commit instant (epoch ms), sampled once by the host and never read here. @@ -110,7 +110,7 @@ here. roster: Seat[]; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:101](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L101) +Defined in: [eigen-server/packages/kernel/src/commit.ts:101](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L101) ##### rules @@ -118,7 +118,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:101](https://github.com/ rules: GameRules; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:108](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L108) +Defined in: [eigen-server/packages/kernel/src/commit.ts:108](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L108) The version unit for the game's `schemaVersion`, already resolved by the host from the `GameModule.versions` map. @@ -132,7 +132,7 @@ optional staleViews?: { }; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:116](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L116) +Defined in: [eigen-server/packages/kernel/src/commit.ts:116](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L116) Same-view material for a stale game action: the acting seat's stored frames at `expectedVersion` and at the current version. Only consulted @@ -158,7 +158,7 @@ expected: SeatView | null; state: StateRow | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:100](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L100) +Defined in: [eigen-server/packages/kernel/src/commit.ts:100](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L100) The latest transition, or null before v0 (only a `start` intent is meaningful then). @@ -167,7 +167,7 @@ meaningful then). ### CommitPlan -Defined in: [eigen-server/packages/kernel/src/commit.ts:139](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L139) +Defined in: [eigen-server/packages/kernel/src/commit.ts:139](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L139) #### Properties @@ -177,7 +177,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:139](https://github.com/ action: TransitionAction | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:142](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L142) +Defined in: [eigen-server/packages/kernel/src/commit.ts:142](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L142) ##### alarm @@ -185,7 +185,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:142](https://github.com/ alarm: number | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:155](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L155) +Defined in: [eigen-server/packages/kernel/src/commit.ts:155](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L155) The instant the DO must arm its alarm at, the true deadline plus the grace window, or null to clear it. @@ -196,7 +196,7 @@ grace window, or null to clear it. effects: Effect[]; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:156](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L156) +Defined in: [eigen-server/packages/kernel/src/commit.ts:156](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L156) ##### frames @@ -204,7 +204,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:156](https://github.com/ frames: ObservationFrame[]; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:145](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L145) +Defined in: [eigen-server/packages/kernel/src/commit.ts:145](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L145) Per-seat projected frames (identified seats only), persisted with the transition, fanned out over sockets. No raw state escapes the kernel. @@ -215,7 +215,7 @@ transition, fanned out over sockets. No raw state escapes the kernel. nextState: StateRow; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:141](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L141) +Defined in: [eigen-server/packages/kernel/src/commit.ts:141](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L141) The next transition row, already versioned (`v+1`, or 0 for start). @@ -225,7 +225,7 @@ The next transition row, already versioned (`v+1`, or 0 for start). outcomes: OutcomeEntry[] | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:152](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L152) +Defined in: [eigen-server/packages/kernel/src/commit.ts:152](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L152) Per-seat results when this transition ends the game, else null. @@ -238,7 +238,7 @@ the host delivers them as a follow-up versioned ratings transition. ### GameRow -Defined in: [eigen-server/packages/kernel/src/commit.ts:32](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L32) +Defined in: [eigen-server/packages/kernel/src/commit.ts:32](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L32) The game's standing configuration: the DO `meta` snapshot. @@ -250,7 +250,7 @@ The game's standing configuration: the DO `meta` snapshot. budgetSeconds: number | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:39](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L39) +Defined in: [eigen-server/packages/kernel/src/commit.ts:39](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L39) ##### config @@ -258,7 +258,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:39](https://github.com/e config: JsonObject; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:37](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L37) +Defined in: [eigen-server/packages/kernel/src/commit.ts:37](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L37) Stored creation config; parsed against the version unit's config schema before any hook sees it. @@ -269,7 +269,7 @@ before any hook sees it. incrementSeconds: number | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:40](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L40) +Defined in: [eigen-server/packages/kernel/src/commit.ts:40](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L40) ##### rated @@ -277,7 +277,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:40](https://github.com/e rated: boolean; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:41](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L41) +Defined in: [eigen-server/packages/kernel/src/commit.ts:41](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L41) ##### ratingPool @@ -285,7 +285,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:41](https://github.com/e ratingPool: string | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:42](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L42) +Defined in: [eigen-server/packages/kernel/src/commit.ts:42](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L42) ##### schemaVersion @@ -293,7 +293,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:42](https://github.com/e schemaVersion: number; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:34](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L34) +Defined in: [eigen-server/packages/kernel/src/commit.ts:34](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L34) ##### status @@ -301,7 +301,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:34](https://github.com/e status: GameStatus; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:33](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L33) +Defined in: [eigen-server/packages/kernel/src/commit.ts:33](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L33) ##### turnSeconds @@ -309,13 +309,13 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:33](https://github.com/e turnSeconds: number | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:38](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L38) +Defined in: [eigen-server/packages/kernel/src/commit.ts:38](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L38) *** ### NextDeadline -Defined in: [eigen-server/packages/kernel/src/timing.ts:48](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/timing.ts#L48) +Defined in: [eigen-server/packages/kernel/src/timing.ts:48](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/timing.ts#L48) #### Properties @@ -325,7 +325,7 @@ Defined in: [eigen-server/packages/kernel/src/timing.ts:48](https://github.com/e deadline: number | null; ``` -Defined in: [eigen-server/packages/kernel/src/timing.ts:49](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/timing.ts#L49) +Defined in: [eigen-server/packages/kernel/src/timing.ts:49](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/timing.ts#L49) ##### turnStartedAt @@ -333,13 +333,13 @@ Defined in: [eigen-server/packages/kernel/src/timing.ts:49](https://github.com/e turnStartedAt: number | null; ``` -Defined in: [eigen-server/packages/kernel/src/timing.ts:50](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/timing.ts#L50) +Defined in: [eigen-server/packages/kernel/src/timing.ts:50](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/timing.ts#L50) *** ### ObservationFrame -Defined in: [eigen-server/packages/kernel/src/observe.ts:12](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/observe.ts#L12) +Defined in: [eigen-server/packages/kernel/src/observe.ts:12](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/observe.ts#L12) One seat's projected frame, tagged with its seat. The host stamps version/timing when it persists and fans these out. @@ -352,7 +352,7 @@ version/timing when it persists and fans these out. data: JsonObject; ``` -Defined in: [eigen-server/packages/kernel/src/observe.ts:14](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/observe.ts#L14) +Defined in: [eigen-server/packages/kernel/src/observe.ts:14](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/observe.ts#L14) ##### pendingPlayers @@ -360,7 +360,7 @@ Defined in: [eigen-server/packages/kernel/src/observe.ts:14](https://github.com/ pendingPlayers: number[]; ``` -Defined in: [eigen-server/packages/kernel/src/observe.ts:15](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/observe.ts#L15) +Defined in: [eigen-server/packages/kernel/src/observe.ts:15](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/observe.ts#L15) ##### playerIndex @@ -368,13 +368,13 @@ Defined in: [eigen-server/packages/kernel/src/observe.ts:15](https://github.com/ playerIndex: number; ``` -Defined in: [eigen-server/packages/kernel/src/observe.ts:13](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/observe.ts#L13) +Defined in: [eigen-server/packages/kernel/src/observe.ts:13](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/observe.ts#L13) *** ### PlayerInput -Defined in: [eigen-server/packages/kernel/src/ratings.ts:26](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L26) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:26](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L26) A player seat to be rated. Self-contained: each seat's current `mu`/`sigma` is bundled, so this module never reads a store. @@ -393,7 +393,7 @@ A player seat to be rated. Self-contained: each seat's current botId: string | null; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:29](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L29) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:29](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L29) ##### placement @@ -401,7 +401,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:29](https://github.com/ placement: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:31](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L31) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:31](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L31) Ordinal finish rank (1 = best); ties share the same value. @@ -411,7 +411,7 @@ Ordinal finish rank (1 = best); ties share the same value. playerIndex: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:27](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L27) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:27](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L27) ##### teamIndex @@ -419,7 +419,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:27](https://github.com/ teamIndex: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:34](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L34) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:34](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L34) Players sharing a teamIndex are rated as one team. For individual games this equals playerIndex. @@ -430,13 +430,13 @@ games this equals playerIndex. userId: string | null; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:28](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L28) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:28](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L28) *** ### RatingDelta -Defined in: [eigen-server/packages/kernel/src/ratings.ts:54](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L54) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:54](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L54) One rated identity's before → after, exactly the rating_history row minus store keys. Computed by the D1 applier inside the rating CAS and delivered @@ -450,7 +450,7 @@ on the post-finish ratings transition (the `kind: "ratings"` action). displayAfter: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:62](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L62) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:62](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L62) ##### displayBefore @@ -458,7 +458,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:62](https://github.com/ displayBefore: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:59](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L59) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:59](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L59) ##### displayChange @@ -466,7 +466,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:59](https://github.com/ displayChange: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:63](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L63) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:63](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L63) ##### identity @@ -474,7 +474,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:63](https://github.com/ identity: RatingIdentity; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:55](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L55) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:55](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L55) ##### muAfter @@ -482,7 +482,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:55](https://github.com/ muAfter: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:60](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L60) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:60](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L60) ##### muBefore @@ -490,7 +490,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:60](https://github.com/ muBefore: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:57](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L57) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:57](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L57) ##### pool @@ -498,7 +498,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:57](https://github.com/ pool: string; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:56](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L56) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:56](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L56) ##### sigmaAfter @@ -506,7 +506,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:56](https://github.com/ sigmaAfter: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:61](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L61) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:61](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L61) ##### sigmaBefore @@ -514,13 +514,13 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:61](https://github.com/ sigmaBefore: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:58](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L58) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:58](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L58) *** ### RatingResult -Defined in: [eigen-server/packages/kernel/src/ratings.ts:47](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L47) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:47](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L47) One identity's newly computed rating: the pure OpenSkill posterior, before the store-owned CAS revision is attached by the applier. @@ -537,13 +537,13 @@ before the store-owned CAS revision is attached by the applier. identity: RatingIdentity; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:48](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L48) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:48](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L48) *** ### Rejected -Defined in: [eigen-server/packages/kernel/src/errors.ts:42](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/errors.ts#L42) +Defined in: [eigen-server/packages/kernel/src/errors.ts:42](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/errors.ts#L42) An intent the kernel refused. A value, not a throw: rejections are part of the normal protocol. @@ -556,7 +556,7 @@ of the normal protocol. code: RejectCode; ``` -Defined in: [eigen-server/packages/kernel/src/errors.ts:44](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/errors.ts#L44) +Defined in: [eigen-server/packages/kernel/src/errors.ts:44](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/errors.ts#L44) ##### message @@ -564,7 +564,7 @@ Defined in: [eigen-server/packages/kernel/src/errors.ts:44](https://github.com/e message: string; ``` -Defined in: [eigen-server/packages/kernel/src/errors.ts:45](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/errors.ts#L45) +Defined in: [eigen-server/packages/kernel/src/errors.ts:45](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/errors.ts#L45) ##### rejected @@ -572,13 +572,13 @@ Defined in: [eigen-server/packages/kernel/src/errors.ts:45](https://github.com/e rejected: true; ``` -Defined in: [eigen-server/packages/kernel/src/errors.ts:43](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/errors.ts#L43) +Defined in: [eigen-server/packages/kernel/src/errors.ts:43](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/errors.ts#L43) *** ### Seat -Defined in: [eigen-server/packages/kernel/src/commit.ts:47](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L47) +Defined in: [eigen-server/packages/kernel/src/commit.ts:47](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L47) One seat of the roster. Both ids null ⇒ the account was purged mid-game (the seat plays on as "Deleted User" for display, but can never act). @@ -591,7 +591,7 @@ One seat of the roster. Both ids null ⇒ the account was purged mid-game botId: string | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:50](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L50) +Defined in: [eigen-server/packages/kernel/src/commit.ts:50](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L50) ##### playerIndex @@ -599,7 +599,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:50](https://github.com/e playerIndex: number; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:48](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L48) +Defined in: [eigen-server/packages/kernel/src/commit.ts:48](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L48) ##### type @@ -607,7 +607,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:48](https://github.com/e type: "bot" | "human"; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:51](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L51) +Defined in: [eigen-server/packages/kernel/src/commit.ts:51](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L51) ##### userId @@ -615,13 +615,13 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:51](https://github.com/e userId: string | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:49](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L49) +Defined in: [eigen-server/packages/kernel/src/commit.ts:49](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L49) *** ### SeatView -Defined in: [eigen-server/packages/kernel/src/guards.ts:86](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L86) +Defined in: [eigen-server/packages/kernel/src/guards.ts:86](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L86) A seat's stored projection at one version: what the same-view compare runs on (and what the DO persists per transition as `frames[]`). @@ -634,7 +634,7 @@ runs on (and what the DO persists per transition as `frames[]`). data: JsonObject; ``` -Defined in: [eigen-server/packages/kernel/src/guards.ts:87](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L87) +Defined in: [eigen-server/packages/kernel/src/guards.ts:87](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L87) ##### pendingPlayers @@ -642,13 +642,13 @@ Defined in: [eigen-server/packages/kernel/src/guards.ts:87](https://github.com/e pendingPlayers: number[]; ``` -Defined in: [eigen-server/packages/kernel/src/guards.ts:88](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L88) +Defined in: [eigen-server/packages/kernel/src/guards.ts:88](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L88) *** ### StateRow -Defined in: [eigen-server/packages/kernel/src/commit.ts:56](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L56) +Defined in: [eigen-server/packages/kernel/src/commit.ts:56](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L56) The latest committed transition: state plus the engine-owned clocks. All instants are epoch milliseconds. @@ -661,7 +661,7 @@ instants are epoch milliseconds. deadline: number | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:63](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L63) +Defined in: [eigen-server/packages/kernel/src/commit.ts:63](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L63) The true turn deadline shown to clients; the alarm arms at `deadline + grace`. @@ -672,7 +672,7 @@ The true turn deadline shown to clients; the alarm arms at pending: number[]; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:59](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L59) +Defined in: [eigen-server/packages/kernel/src/commit.ts:59](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L59) ##### playerTimes @@ -680,7 +680,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:59](https://github.com/e playerTimes: number[] | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:65](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L65) +Defined in: [eigen-server/packages/kernel/src/commit.ts:65](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L65) Per-seat budget banks (ms), budget mode only. @@ -690,7 +690,7 @@ Per-seat budget banks (ms), budget mode only. rngSeed: string; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:60](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L60) +Defined in: [eigen-server/packages/kernel/src/commit.ts:60](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L60) ##### state @@ -698,7 +698,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:60](https://github.com/e state: JsonObject; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:58](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L58) +Defined in: [eigen-server/packages/kernel/src/commit.ts:58](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L58) ##### turnStartedAt @@ -706,7 +706,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:58](https://github.com/e turnStartedAt: number | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:66](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L66) +Defined in: [eigen-server/packages/kernel/src/commit.ts:66](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L66) ##### version @@ -714,7 +714,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:66](https://github.com/e version: number; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:57](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L57) +Defined in: [eigen-server/packages/kernel/src/commit.ts:57](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L57) ## Type Aliases @@ -738,7 +738,7 @@ type Effect = }; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:137](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L137) +Defined in: [eigen-server/packages/kernel/src/commit.ts:137](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L137) A push/wake the host should attempt post-commit (single attempt + error log, with no retry machinery in v1). The kernel names seats; the host resolves @@ -752,7 +752,7 @@ delivery (FCM targets, bot webhook vs local bot). type GameStatus = "waiting" | "ready" | "active" | "finished" | "aborted"; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:29](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L29) +Defined in: [eigen-server/packages/kernel/src/commit.ts:29](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L29) *** @@ -782,7 +782,7 @@ type Intent = }; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:73](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L73) +Defined in: [eigen-server/packages/kernel/src/commit.ts:73](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L73) What the host asks the kernel to do: the kernel-facing half of a `Command` (authorization already happened at the edge; dedupe at the DO). @@ -905,7 +905,7 @@ type ParseResult = }; ``` -Defined in: [eigen-server/packages/kernel/src/schema.ts:13](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/schema.ts#L13) +Defined in: [eigen-server/packages/kernel/src/schema.ts:13](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/schema.ts#L13) A client payload parse: refusal is the caller's fault, so failure comes back as a value for `commit()` to turn into a rejection. @@ -932,7 +932,7 @@ type RejectCode = | "abstain"; ``` -Defined in: [eigen-server/packages/kernel/src/errors.ts:20](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/errors.ts#L20) +Defined in: [eigen-server/packages/kernel/src/errors.ts:20](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/errors.ts#L20) Why an intent was refused. Stable machine codes: the host's transport mapping and the client's retry policy key on these, so treat renames as @@ -966,7 +966,7 @@ type TransitionAction = }; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:132](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L132) +Defined in: [eigen-server/packages/kernel/src/commit.ts:132](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L132) The action-log entry for a transition. Null only for the start transition (v0), which no action produced. `playerIndex` is the performer's seat, and @@ -985,7 +985,7 @@ engine's, not the game's opaque payload. const DEADLINE_GRACE_MS: 750 = 750; ``` -Defined in: [eigen-server/packages/kernel/src/timing.ts:25](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/timing.ts#L25) +Defined in: [eigen-server/packages/kernel/src/timing.ts:25](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/timing.ts#L25) Grace window (ms) added to every deadline comparison so a player who submits on time is not rejected because network latency carried the request @@ -1003,7 +1003,7 @@ function assertBudgetPending( schemaVersion): void; ``` -Defined in: [eigen-server/packages/kernel/src/guards.ts:26](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L26) +Defined in: [eigen-server/packages/kernel/src/guards.ts:26](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L26) Enforce budget mode's sequential-pending rule at the source: an accumulated clock only meters individual thinking time when at most one @@ -1035,7 +1035,7 @@ function assertForfeitPending( schemaVersion): void; ``` -Defined in: [eigen-server/packages/kernel/src/guards.ts:36](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L36) +Defined in: [eigen-server/packages/kernel/src/guards.ts:36](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L36) Enforce that a forfeit actually removes the forfeited seat: a hook that leaves `targetSeat` in the pending set is a game bug. Left uncaught, the @@ -1065,7 +1065,7 @@ function assertHookPayload( what): asserts value is T; ``` -Defined in: [eigen-server/packages/kernel/src/schema.ts:63](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/schema.ts#L63) +Defined in: [eigen-server/packages/kernel/src/schema.ts:63](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/schema.ts#L63) Validate a payload produced by a game hook. Unlike client parsing, a failure is always a game bug. Validate-only: callers retain the hook's @@ -1101,7 +1101,7 @@ function assertHookState( schemaVersion): void; ``` -Defined in: [eigen-server/packages/kernel/src/guards.ts:16](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L16) +Defined in: [eigen-server/packages/kernel/src/guards.ts:16](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L16) Validate the state a hook returned against the game's version schema before it is committed, catching a hook that wrote a malformed or @@ -1131,7 +1131,7 @@ function assertPendingIdentified( schemaVersion): void; ``` -Defined in: [eigen-server/packages/kernel/src/guards.ts:48](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L48) +Defined in: [eigen-server/packages/kernel/src/guards.ts:48](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L48) Enforce that every pending seat has someone behind it: a seat whose account was purged mid-game (both ids null) can never act, so a hook that @@ -1160,7 +1160,7 @@ catches any later hook resurrecting the seat. function canonicalJson(value): string; ``` -Defined in: [eigen-server/packages/kernel/src/guards.ts:69](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L69) +Defined in: [eigen-server/packages/kernel/src/guards.ts:69](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L69) Canonical JSON: deterministic serialization with object keys sorted and `undefined` object values treated as absent, so two structurally equal @@ -1184,7 +1184,7 @@ views compare byte-identical regardless of construction order. function commit(input): CommitPlan | Rejected; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:166](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L166) +Defined in: [eigen-server/packages/kernel/src/commit.ts:166](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L166) #### Parameters @@ -1204,7 +1204,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:166](https://github.com/ function computeNextDeadline(input): NextDeadline; ``` -Defined in: [eigen-server/packages/kernel/src/timing.ts:67](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/timing.ts#L67) +Defined in: [eigen-server/packages/kernel/src/timing.ts:67](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/timing.ts#L67) Computes the deadline and `turnStartedAt` for the next action: the precedence chain used by start and every commit mode. Pass @@ -1245,7 +1245,7 @@ graceful-degradation safeguard should a multi-pending state arrive anyway. function computeRatings(players): RatingResult[]; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:196](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L196) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:196](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L196) Compute every identity's new rating for one finished game. @@ -1280,7 +1280,7 @@ row left to update. function deadlineExpired(deadline, now): boolean; ``` -Defined in: [eigen-server/packages/kernel/src/timing.ts:30](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/timing.ts#L30) +Defined in: [eigen-server/packages/kernel/src/timing.ts:30](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/timing.ts#L30) TRUE once a turn deadline (plus the grace window) has genuinely passed, measured against the injected `now`. A null deadline (untimed turn) is @@ -1310,7 +1310,7 @@ function deductBank( incrementSeconds): number[]; ``` -Defined in: [eigen-server/packages/kernel/src/timing.ts:38](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/timing.ts#L38) +Defined in: [eigen-server/packages/kernel/src/timing.ts:38](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/timing.ts#L38) Deducts the acting player's elapsed thinking time from their budget bank and applies the Fischer increment. Returns a new `playerTimes` array (ms @@ -1339,7 +1339,7 @@ at 0, not negative. function defaultRating(): Rating; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:73](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L73) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:73](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L73) The OpenSkill prior for a never-rated identity. @@ -1355,7 +1355,7 @@ The OpenSkill prior for a never-rated identity. function deriveRng(seed, version): Rng; ``` -Defined in: [eigen-server/packages/kernel/src/rng.ts:29](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/rng.ts#L29) +Defined in: [eigen-server/packages/kernel/src/rng.ts:29](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/rng.ts#L29) The deterministic RNG for one transition: rand-seed's sfc32 keyed by the game's base seed and the state version the envelope will commit as. The @@ -1383,7 +1383,7 @@ derivation is fixed, so recorded games stay replayable. function displayRating(mu, sigma): number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:68](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L68) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:68](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L68) max(0, round((mu − 3σ) · 40)): the one server-side home of the display formula (the client mirrors it for optimistic display only). @@ -1407,7 +1407,7 @@ formula (the client mirrors it for optimistic display only). function fanOutObservations(rules, args): ObservationFrame[]; ``` -Defined in: [eigen-server/packages/kernel/src/observe.ts:25](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/observe.ts#L25) +Defined in: [eigen-server/packages/kernel/src/observe.ts:25](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/observe.ts#L25) Project the new state into one slice per seat: the eager fan-out the host persists per transition (frames serve live delivery and the same-view @@ -1436,7 +1436,7 @@ decision here. function isRejected(result): result is Rejected; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:160](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L160) +Defined in: [eigen-server/packages/kernel/src/commit.ts:160](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L160) Type guard: did `commit()` refuse the intent? @@ -1461,7 +1461,7 @@ function parseClientPayload( what): ParseResult; ``` -Defined in: [eigen-server/packages/kernel/src/schema.ts:40](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/schema.ts#L40) +Defined in: [eigen-server/packages/kernel/src/schema.ts:40](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/schema.ts#L40) Parse a client-submitted payload (an action's `data`, a create request's `config`) through its schema. Failure is the caller's fault. Returns the @@ -1499,7 +1499,7 @@ function parseStoredPayload( schemaVersion): T; ``` -Defined in: [eigen-server/packages/kernel/src/schema.ts:51](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/schema.ts#L51) +Defined in: [eigen-server/packages/kernel/src/schema.ts:51](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/schema.ts#L51) Parse a stored payload (a state row, the game's config) through its schema. Failure means corrupted data or a schema that no longer matches @@ -1532,7 +1532,7 @@ what this version historically wrote: an engine-side bug, thrown. function randomSeed(): string; ``` -Defined in: [eigen-server/packages/kernel/src/rng.ts:18](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/rng.ts#L18) +Defined in: [eigen-server/packages/kernel/src/rng.ts:18](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/rng.ts#L18) A fresh base seed for a new game: 128 random bits, hex-encoded. Stored on the game's v0 state row and copied onto every later row (server-only, @@ -1550,7 +1550,7 @@ never expose it: the whole randomness of the game is derivable from it). function reject(code, message): Rejected; ``` -Defined in: [eigen-server/packages/kernel/src/errors.ts:48](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/errors.ts#L48) +Defined in: [eigen-server/packages/kernel/src/errors.ts:48](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/errors.ts#L48) #### Parameters @@ -1571,7 +1571,7 @@ Defined in: [eigen-server/packages/kernel/src/errors.ts:48](https://github.com/e function sameView(a, b): boolean; ``` -Defined in: [eigen-server/packages/kernel/src/guards.ts:100](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L100) +Defined in: [eigen-server/packages/kernel/src/guards.ts:100](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L100) The same-view rule: a stale-`expectedVersion` action is accepted iff the acting seat's own projected observation (slice `data` plus the diff --git a/docs/reference/typescript/rules.md b/docs/reference/typescript/rules.md index 5558f1d..2e09f5e 100644 --- a/docs/reference/typescript/rules.md +++ b/docs/reference/typescript/rules.md @@ -9,7 +9,7 @@ helpers: it has no runtime dependencies and pulls in no engine code. ### IllegalMoveError -Defined in: [eigen-server/packages/rules/src/helpers.ts:14](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/helpers.ts#L14) +Defined in: [eigen-server/packages/rules/src/helpers.ts:14](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/helpers.ts#L14) Thrown by a game's `applyAction` to reject a move that breaks the rules. the *expected* failure of the hook (a mis-tap, a client bug), rendered to @@ -76,7 +76,7 @@ Error.constructor ### ApplyActionArgs -Defined in: [eigen-server/packages/rules/src/contract.ts:122](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L122) +Defined in: [eigen-server/packages/rules/src/contract.ts:122](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L122) #### Extends @@ -98,7 +98,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:122](https://github.com config: TConfig; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L113) +Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L113) ###### Inherited from @@ -112,7 +112,7 @@ HookContext.config data: TAction; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:125](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L125) +Defined in: [eigen-server/packages/rules/src/contract.ts:125](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L125) ##### pending @@ -120,7 +120,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:125](https://github.com pending: number[]; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:124](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L124) +Defined in: [eigen-server/packages/rules/src/contract.ts:124](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L124) ##### playerIndex @@ -128,7 +128,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:124](https://github.com playerIndex: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:126](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L126) +Defined in: [eigen-server/packages/rules/src/contract.ts:126](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L126) ##### rng @@ -136,7 +136,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:126](https://github.com rng: Rng; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:128](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L128) +Defined in: [eigen-server/packages/rules/src/contract.ts:128](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L128) Deterministic per-transition RNG. See [Rng](#rng-4). @@ -146,13 +146,13 @@ Deterministic per-transition RNG. See [Rng](#rng-4). state: TState; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:123](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L123) +Defined in: [eigen-server/packages/rules/src/contract.ts:123](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L123) *** ### ApplyLifecycleArgs -Defined in: [eigen-server/packages/rules/src/contract.ts:140](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L140) +Defined in: [eigen-server/packages/rules/src/contract.ts:140](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L140) #### Extends @@ -173,7 +173,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:140](https://github.com config: TConfig; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L113) +Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L113) ###### Inherited from @@ -187,7 +187,7 @@ HookContext.config data: LifecycleAction; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:149](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L149) +Defined in: [eigen-server/packages/rules/src/contract.ts:149](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L149) ##### pending @@ -195,7 +195,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:149](https://github.com pending: number[]; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:146](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L146) +Defined in: [eigen-server/packages/rules/src/contract.ts:146](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L146) Seats awaiting an action. For `timeout` these are exactly the seats that ran out of time, so resolve the whole set in one envelope (you may declare a @@ -208,7 +208,7 @@ draw). For `forfeit`/`autoForfeit`, the target seat is in rng: Rng; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:151](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L151) +Defined in: [eigen-server/packages/rules/src/contract.ts:151](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L151) Deterministic per-transition RNG. See [Rng](#rng-4). @@ -218,7 +218,7 @@ Deterministic per-transition RNG. See [Rng](#rng-4). state: TState; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:141](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L141) +Defined in: [eigen-server/packages/rules/src/contract.ts:141](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L141) ##### type @@ -226,7 +226,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:141](https://github.com type: LifecycleType; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:148](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L148) +Defined in: [eigen-server/packages/rules/src/contract.ts:148](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L148) The trigger, always equal to `data.type`. @@ -234,7 +234,7 @@ The trigger, always equal to `data.type`. ### BotActionArgs -Defined in: [eigen-server/packages/rules/src/contract.ts:221](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L221) +Defined in: [eigen-server/packages/rules/src/contract.ts:221](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L221) A seated engine bot's turn to move, passed to the matching entry in [GameRules.botActions](#botactions). The brain runs inside the game's Durable @@ -266,7 +266,7 @@ pure (replay uses the recorded action, never re-runs the brain). botConfig: JsonObject; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:223](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L223) +Defined in: [eigen-server/packages/rules/src/contract.ts:223](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L223) ##### config @@ -274,7 +274,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:223](https://github.com config: TConfig; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L113) +Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L113) ###### Inherited from @@ -288,7 +288,7 @@ HookContext.config observation: ObservationSlice; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:222](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L222) +Defined in: [eigen-server/packages/rules/src/contract.ts:222](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L222) ##### playerIndex @@ -296,7 +296,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:222](https://github.com playerIndex: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:224](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L224) +Defined in: [eigen-server/packages/rules/src/contract.ts:224](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L224) ##### rng @@ -304,13 +304,13 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:224](https://github.com rng: Rng; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:225](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L225) +Defined in: [eigen-server/packages/rules/src/contract.ts:225](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L225) *** ### BotSeatableArgs -Defined in: [eigen-server/packages/rules/src/contract.ts:206](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L206) +Defined in: [eigen-server/packages/rules/src/contract.ts:206](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L206) A candidate bot seating, passed to [GameRules.botSeatable](#botseatable). `gameConfig` is parsed against the game's version schema; `botConfig` is the @@ -331,7 +331,7 @@ schemas, so it stays opaque. botConfig: JsonObject; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:208](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L208) +Defined in: [eigen-server/packages/rules/src/contract.ts:208](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L208) ##### gameConfig @@ -339,13 +339,13 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:208](https://github.com gameConfig: TConfig; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:207](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L207) +Defined in: [eigen-server/packages/rules/src/contract.ts:207](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L207) *** ### ComputeObservationArgs -Defined in: [eigen-server/packages/rules/src/contract.ts:170](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L170) +Defined in: [eigen-server/packages/rules/src/contract.ts:170](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L170) #### Extends @@ -367,7 +367,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:170](https://github.com cause: TransitionCause; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:182](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L182) +Defined in: [eigen-server/packages/rules/src/contract.ts:182](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L182) What produced `state`. See [TransitionCause](#transitioncause). Shared across the per-seat fan-out; per-seat filtering of what it reveals is this hook's @@ -379,7 +379,7 @@ job. config: TConfig; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L113) +Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L113) ###### Inherited from @@ -393,7 +393,7 @@ HookContext.config isReplay: boolean; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:185](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L185) +Defined in: [eigen-server/packages/rules/src/contract.ts:185](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L185) TRUE only when projecting a finished game for replay, where hidden-info games may reveal opponent state. @@ -404,7 +404,7 @@ may reveal opponent state. participantCount: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:178](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L178) +Defined in: [eigen-server/packages/rules/src/contract.ts:178](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L178) ##### pending @@ -412,7 +412,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:178](https://github.com pending: number[]; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:172](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L172) +Defined in: [eigen-server/packages/rules/src/contract.ts:172](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L172) ##### playerIndex @@ -420,7 +420,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:172](https://github.com playerIndex: number | null; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:177](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L177) +Defined in: [eigen-server/packages/rules/src/contract.ts:177](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L177) The seat this projection is for, or `null` for a viewer (a non-participant replaying a public game). A viewer projection only ever occurs with @@ -433,13 +433,13 @@ full post-game view for it. state: TState; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:171](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L171) +Defined in: [eigen-server/packages/rules/src/contract.ts:171](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L171) *** ### Envelope -Defined in: [eigen-server/packages/rules/src/contract.ts:81](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L81) +Defined in: [eigen-server/packages/rules/src/contract.ts:81](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L81) The result of advancing the game by one transition: the return of `initialState`, `applyAction`, and `applyLifecycle`. @@ -458,7 +458,7 @@ The result of advancing the game by one transition: the return of optional outcome?: OutcomeEntry[]; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:89](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L89) +Defined in: [eigen-server/packages/rules/src/contract.ts:89](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L89) Present **only** when the game ends. Absent/undefined means ongoing. @@ -468,7 +468,7 @@ Present **only** when the game ends. Absent/undefined means ongoing. pendingPlayers: number[]; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:87](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L87) +Defined in: [eigen-server/packages/rules/src/contract.ts:87](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L87) 0-based seats that may act next. Empty ⇒ game over. @@ -478,7 +478,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:87](https://github.com/ state: TState; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:85](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L85) +Defined in: [eigen-server/packages/rules/src/contract.ts:85](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L85) New pure game payload (board, deck, fog…). Never carries whose-turn or winner info; those are engine-owned fields. Must match the game's @@ -490,7 +490,7 @@ winner info; those are engine-owned fields. Must match the game's optional turnSeconds?: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:92](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L92) +Defined in: [eigen-server/packages/rules/src/contract.ts:92](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L92) Optional per-action deadline override for *this action only* (does not touch any player's bank). Omit to use the game's configured timing. @@ -499,7 +499,7 @@ touch any player's bank). Omit to use the game's configured timing. ### GameModule -Defined in: [eigen-server/packages/rules/src/contract.ts:348](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L348) +Defined in: [eigen-server/packages/rules/src/contract.ts:348](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L348) The complete game-specific surface: the same-named twin of the Dart `GameModule` (whose extras are client-only creation/about UI). Implement @@ -516,7 +516,7 @@ branches on version. versions: Record; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:356](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L356) +Defined in: [eigen-server/packages/rules/src/contract.ts:356](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L356) The [GameRules](#gamerules) units keyed by `schemaVersion`: exactly the versions this build ships. Sparse on purpose: game creation rejects a @@ -530,7 +530,7 @@ each payload with the same entry's schemas before invoking its hooks. ### GameRules -Defined in: [eigen-server/packages/rules/src/contract.ts:264](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L264) +Defined in: [eigen-server/packages/rules/src/contract.ts:264](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L264) Everything one `schemaVersion` of a game needs: the payload contracts plus all six hooks, narrowly typed to that version's shapes. @@ -560,7 +560,7 @@ change incompatibly, ship a new `GameRules` under the next version key optional botActions?: Record>; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:319](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L319) +Defined in: [eigen-server/packages/rules/src/contract.ts:319](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L319) Optional: the in-DO bot brains, **keyed by bot username**. When a seated `engine`-type bot's turn starts, the engine resolves its registry @@ -580,7 +580,7 @@ rejected exactly like a human's, so a buggy brain fails that seat's turn schemas: GameSchemas; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:266](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L266) +Defined in: [eigen-server/packages/rules/src/contract.ts:266](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L266) The payload contracts for this version. @@ -592,7 +592,7 @@ The payload contracts for this version. applyAction(args): Envelope; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:277](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L277) +Defined in: [eigen-server/packages/rules/src/contract.ts:277](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L277) Apply a player's move. The engine has already confirmed it is this seat's turn at the expected version, so do not re-check turn order. Only @@ -616,7 +616,7 @@ bug and surfaces as a server error. applyLifecycle(args): Envelope; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:284](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L284) +Defined in: [eigen-server/packages/rules/src/contract.ts:284](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L284) Resolve a lifecycle action (`forfeit`/`timeout`) into an envelope. Lifecycle actions operate on the game from outside its rules. They may @@ -640,7 +640,7 @@ it cannot be "illegal"; it always resolves. botSeatable(args): boolean; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:306](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L306) +Defined in: [eigen-server/packages/rules/src/contract.ts:306](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L306) Decide whether a bot's declared capabilities (`botConfig`) support a game with `gameConfig`. The engine gates seating on this before @@ -663,7 +663,7 @@ Return `true` to allow. computeObservation(args): ObservationSlice; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:292](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L292) +Defined in: [eigen-server/packages/rules/src/contract.ts:292](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L292) Project the state into one seat's view, including what that seat may see of the transition that produced it (`args.cause`), so the client can @@ -688,7 +688,7 @@ the acting seat's projected view is unchanged (the same-view rule). initialState(args): Envelope; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:270](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L270) +Defined in: [eigen-server/packages/rules/src/contract.ts:270](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L270) Starting envelope. Draw any setup randomness (deck shuffle, first player…) from `args.rng`. @@ -709,7 +709,7 @@ player…) from `args.rng`. ratingPool(args): string | null; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:300](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L300) +Defined in: [eigen-server/packages/rules/src/contract.ts:300](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L300) Decide whether, and in which pool, a game with these settings is rated. Return the pool name (e.g. `'rapid'`) or `null` for unrated. The @@ -732,7 +732,7 @@ the Rated/Casual toggle and send the same value. ### GameSchemas -Defined in: [eigen-server/packages/rules/src/contract.ts:241](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L241) +Defined in: [eigen-server/packages/rules/src/contract.ts:241](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L241) The declarative payload contracts for one `schemaVersion`: the Standard Schemas the engine uses to parse (and validate) every game payload crossing @@ -759,7 +759,7 @@ bug. action: GamePayloadSchema; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:247](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L247) +Defined in: [eigen-server/packages/rules/src/contract.ts:247](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L247) A player move's `data`, as submitted by clients and bots. @@ -769,7 +769,7 @@ A player move's `data`, as submitted by clients and bots. config: GamePayloadSchema; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:249](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L249) +Defined in: [eigen-server/packages/rules/src/contract.ts:249](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L249) The per-instance creation config stored on the game. @@ -779,7 +779,7 @@ The per-instance creation config stored on the game. observation: GamePayloadSchema; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:245](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L245) +Defined in: [eigen-server/packages/rules/src/contract.ts:245](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L245) One participant's projected view, as returned by `computeObservation`. @@ -789,7 +789,7 @@ One participant's projected view, as returned by `computeObservation`. state: GamePayloadSchema; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:243](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L243) +Defined in: [eigen-server/packages/rules/src/contract.ts:243](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L243) The pure game payload stored per transition. @@ -797,7 +797,7 @@ The pure game payload stored per transition. ### InitialStateArgs -Defined in: [eigen-server/packages/rules/src/contract.ts:116](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L116) +Defined in: [eigen-server/packages/rules/src/contract.ts:116](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L116) #### Extends @@ -817,7 +817,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:116](https://github.com config: TConfig; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L113) +Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L113) ###### Inherited from @@ -831,7 +831,7 @@ HookContext.config playerCount: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:119](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L119) +Defined in: [eigen-server/packages/rules/src/contract.ts:119](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L119) ##### rng @@ -839,7 +839,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:119](https://github.com rng: Rng; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:118](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L118) +Defined in: [eigen-server/packages/rules/src/contract.ts:118](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L118) Deterministic RNG for this transition. See [Rng](#rng-4). @@ -847,7 +847,7 @@ Deterministic RNG for this transition. See [Rng](#rng-4). ### JsonObject -Defined in: [eigen-server/packages/rules/src/json.ts:23](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/json.ts#L23) +Defined in: [eigen-server/packages/rules/src/json.ts:23](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/json.ts#L23) A JSON object: the shape of `state`, `config`, `data`, and observation slices, and the constraint every game payload type must satisfy. An @@ -866,7 +866,7 @@ implicit index signature this constraint relies on. ### ObservationSlice -Defined in: [eigen-server/packages/rules/src/contract.ts:96](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L96) +Defined in: [eigen-server/packages/rules/src/contract.ts:96](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L96) One participant's view of the state, produced by `computeObservation`. @@ -884,7 +884,7 @@ One participant's view of the state, produced by `computeObservation`. data: TObservation; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:98](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L98) +Defined in: [eigen-server/packages/rules/src/contract.ts:98](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L98) What this seat is permitted to see. @@ -894,7 +894,7 @@ What this seat is permitted to see. pendingPlayers: number[]; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:103](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L103) +Defined in: [eigen-server/packages/rules/src/contract.ts:103](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L103) Pending set as this seat sees it. May be narrowed from the true set for hidden-info games (e.g. a Nope window, or a simultaneous-commit round @@ -905,7 +905,7 @@ stay truthful about the seat *itself*, which the engine enforces. ### RatingPoolArgs -Defined in: [eigen-server/packages/rules/src/contract.ts:192](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L192) +Defined in: [eigen-server/packages/rules/src/contract.ts:192](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L192) The chosen game settings, passed to [GameRules.ratingPool](#ratingpool) at creation so the game can decide its rating pool (or that the game is @@ -926,7 +926,7 @@ schema. access: GameAccess; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:193](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L193) +Defined in: [eigen-server/packages/rules/src/contract.ts:193](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L193) ##### budgetSeconds @@ -934,7 +934,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:193](https://github.com budgetSeconds: number | null; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:195](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L195) +Defined in: [eigen-server/packages/rules/src/contract.ts:195](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L195) ##### config @@ -942,7 +942,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:195](https://github.com config: TConfig; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:199](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L199) +Defined in: [eigen-server/packages/rules/src/contract.ts:199](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L199) ##### incrementSeconds @@ -950,7 +950,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:199](https://github.com incrementSeconds: number | null; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:196](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L196) +Defined in: [eigen-server/packages/rules/src/contract.ts:196](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L196) ##### maxPlayers @@ -958,7 +958,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:196](https://github.com maxPlayers: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:198](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L198) +Defined in: [eigen-server/packages/rules/src/contract.ts:198](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L198) ##### minPlayers @@ -966,7 +966,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:198](https://github.com minPlayers: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:197](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L197) +Defined in: [eigen-server/packages/rules/src/contract.ts:197](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L197) ##### turnSeconds @@ -974,13 +974,13 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:197](https://github.com turnSeconds: number | null; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:194](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L194) +Defined in: [eigen-server/packages/rules/src/contract.ts:194](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L194) *** ### Rng -Defined in: [eigen-server/packages/rules/src/contract.ts:53](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L53) +Defined in: [eigen-server/packages/rules/src/contract.ts:53](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L53) Deterministic per-transition random source, derived by the engine from the game's stored base seed and the state version the envelope commits as. Draw @@ -997,7 +997,7 @@ in deterministic code order. next(): number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:54](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L54) +Defined in: [eigen-server/packages/rules/src/contract.ts:54](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L54) ###### Returns @@ -1011,7 +1011,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:54](https://github.com/ type ActionKind = "game" | "lifecycle"; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:43](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L43) +Defined in: [eigen-server/packages/rules/src/contract.ts:43](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L43) Which species a logged action is. Everything that transitions state is an *action*; the two species differ by contract: a `game` action is @@ -1029,7 +1029,7 @@ the log structurally, never by payload shape. type ActionType = "user" | "bot" | "system"; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:34](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L34) +Defined in: [eigen-server/packages/rules/src/contract.ts:34](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L34) Who performed a logged action. @@ -1041,7 +1041,7 @@ Who performed a logged action. type AnyGameRules = GameRules; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:338](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L338) +Defined in: [eigen-server/packages/rules/src/contract.ts:338](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L338) A [GameRules](#gamerules) unit with its payload types erased: the type of a rules entry once it is stored in a [GameModule.versions](#versions) registry that holds @@ -1065,7 +1065,7 @@ with no `as`-cast, because `any` disables the variance check at this seam. type BotAction = (args) => TAction; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:230](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L230) +Defined in: [eigen-server/packages/rules/src/contract.ts:230](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L230) One engine bot's move function: the value type in [GameRules.botActions](#botactions). @@ -1096,7 +1096,7 @@ One engine bot's move function: the value type in type GameAccess = "public" | "private" | "friends"; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:31](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L31) +Defined in: [eigen-server/packages/rules/src/contract.ts:31](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L31) Game visibility. @@ -1108,7 +1108,7 @@ Game visibility. type GamePayloadSchema = StandardSchemaV1 & StandardJSONSchemaV1; ``` -Defined in: [eigen-server/packages/rules/src/standard-json-schema.ts:8](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/standard-json-schema.ts#L8) +Defined in: [eigen-server/packages/rules/src/standard-json-schema.ts:8](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/standard-json-schema.ts#L8) One game payload declaration: runtime validation plus portable schema emission from the same transform-free object. Input and output deliberately @@ -1128,7 +1128,7 @@ share one type: what parses is what persists and what Dart generates. type GameResult = "win" | "loss" | "draw" | "eliminated"; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:28](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L28) +Defined in: [eigen-server/packages/rules/src/contract.ts:28](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L28) Per-player result of a finished game. @@ -1140,7 +1140,7 @@ Per-player result of a finished game. type Json = string | number | boolean | null | JsonArray | JsonObject; ``` -Defined in: [eigen-server/packages/rules/src/json.ts:10](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/json.ts#L10) +Defined in: [eigen-server/packages/rules/src/json.ts:10](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/json.ts#L10) Any JSON value. `undefined` is allowed inside objects (treated as an absent key, matching how schema libraries model optional fields); it never @@ -1161,7 +1161,7 @@ type LifecycleAction = }; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:138](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L138) +Defined in: [eigen-server/packages/rules/src/contract.ts:138](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L138) The engine-constructed payload of a lifecycle action, recorded verbatim in the action log (with `kind = 'lifecycle'`). Engine-owned and @@ -1179,7 +1179,7 @@ purge); `timeout` carries no seat, and the affected seats are type LifecycleType = "timeout" | "forfeit" | "autoForfeit"; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:25](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L25) +Defined in: [eigen-server/packages/rules/src/contract.ts:25](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L25) The trigger of a lifecycle action, resolved by the game's `applyLifecycle` hook. `forfeit` is a voluntary resign; `autoForfeit` the engine-driven @@ -1203,7 +1203,7 @@ type OutcomeEntry = { }; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:68](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L68) +Defined in: [eigen-server/packages/rules/src/contract.ts:68](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L68) One participant's result, recorded when the game ends. `placement` (1 = best, ties share a value) feeds OpenSkill directly; `teamIndex` @@ -1221,7 +1221,7 @@ implicit index signature that makes it assignable to `Json`. placement: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:71](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L71) +Defined in: [eigen-server/packages/rules/src/contract.ts:71](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L71) ##### playerIndex @@ -1229,7 +1229,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:71](https://github.com/ playerIndex: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:69](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L69) +Defined in: [eigen-server/packages/rules/src/contract.ts:69](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L69) ##### result @@ -1237,7 +1237,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:69](https://github.com/ result: GameResult; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:70](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L70) +Defined in: [eigen-server/packages/rules/src/contract.ts:70](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L70) ##### score? @@ -1245,7 +1245,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:70](https://github.com/ optional score?: number | null; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:74](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L74) +Defined in: [eigen-server/packages/rules/src/contract.ts:74](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L74) Optional raw game score, for display or score-based variants. @@ -1255,7 +1255,7 @@ Optional raw game score, for display or score-based variants. teamIndex: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:72](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L72) +Defined in: [eigen-server/packages/rules/src/contract.ts:72](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L72) *** @@ -1275,7 +1275,7 @@ type TransitionCause = | null; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:168](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L168) +Defined in: [eigen-server/packages/rules/src/contract.ts:168](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L168) The action that produced the state being projected: a `game` action (`applyAction`), a `lifecycle` action (`applyLifecycle`), or `null` for @@ -1304,7 +1304,7 @@ them as animation only when it has the frame's predecessor, and as static function passthroughObservation(args): ObservationSlice; ``` -Defined in: [eigen-server/packages/rules/src/helpers.ts:24](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/helpers.ts#L24) +Defined in: [eigen-server/packages/rules/src/helpers.ts:24](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/helpers.ts#L24) Default `computeObservation` for perfect-information games: every seat sees the full state and the true pending set. Ignores `args.cause`, since a diff --git a/docs/reference/typescript/server-testing.md b/docs/reference/typescript/server-testing.md index 276612e..56f6365 100644 --- a/docs/reference/typescript/server-testing.md +++ b/docs/reference/typescript/server-testing.md @@ -31,7 +31,7 @@ production config: pass `testing` ONLY in test workers. ### TestTokenOptions -Defined in: [eigen-server/packages/server/src/testing.ts:70](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L70) +Defined in: [eigen-server/packages/server/src/testing.ts:70](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L70) #### Properties @@ -41,7 +41,7 @@ Defined in: [eigen-server/packages/server/src/testing.ts:70](https://github.com/ optional anonymous?: boolean; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:72](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L72) +Defined in: [eigen-server/packages/server/src/testing.ts:72](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L72) ##### claims? @@ -49,7 +49,7 @@ Defined in: [eigen-server/packages/server/src/testing.ts:72](https://github.com/ optional claims?: Record; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:77](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L77) +Defined in: [eigen-server/packages/server/src/testing.ts:77](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L77) Override any registered claim (e.g. an expired `exp`, a wrong `aud`). @@ -59,7 +59,7 @@ Override any registered claim (e.g. an expired `exp`, a wrong `aud`). optional email?: string; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:73](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L73) +Defined in: [eigen-server/packages/server/src/testing.ts:73](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L73) ##### name? @@ -67,7 +67,7 @@ Defined in: [eigen-server/packages/server/src/testing.ts:73](https://github.com/ optional name?: string; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:74](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L74) +Defined in: [eigen-server/packages/server/src/testing.ts:74](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L74) ##### picture? @@ -75,7 +75,7 @@ Defined in: [eigen-server/packages/server/src/testing.ts:74](https://github.com/ optional picture?: string; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:75](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L75) +Defined in: [eigen-server/packages/server/src/testing.ts:75](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L75) ##### uid @@ -83,7 +83,7 @@ Defined in: [eigen-server/packages/server/src/testing.ts:75](https://github.com/ uid: string; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:71](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L71) +Defined in: [eigen-server/packages/server/src/testing.ts:71](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L71) ## Variables @@ -93,7 +93,7 @@ Defined in: [eigen-server/packages/server/src/testing.ts:71](https://github.com/ const TEST_PROJECT_ID: "eigen-test" = "eigen-test"; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:36](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L36) +Defined in: [eigen-server/packages/server/src/testing.ts:36](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L36) *** @@ -103,7 +103,7 @@ Defined in: [eigen-server/packages/server/src/testing.ts:36](https://github.com/ const testFirebaseAdmin: FirebaseAdminEffects; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:60](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L60) +Defined in: [eigen-server/packages/server/src/testing.ts:60](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L60) No-op Firebase Admin effects for test workers and test Durable Objects. @@ -115,7 +115,7 @@ No-op Firebase Admin effects for test workers and test Durable Objects. function mintTestToken(opts): Promise; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:80](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L80) +Defined in: [eigen-server/packages/server/src/testing.ts:80](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L80) #### Parameters @@ -135,7 +135,7 @@ Defined in: [eigen-server/packages/server/src/testing.ts:80](https://github.com/ function testBearer(opts): Promise>; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:99](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L99) +Defined in: [eigen-server/packages/server/src/testing.ts:99](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L99) Authorization header for a minted token. @@ -157,7 +157,7 @@ Authorization header for a minted token. function testVerifier(): TokenVerifier; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:66](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L66) +Defined in: [eigen-server/packages/server/src/testing.ts:66](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L66) The verifier a test worker passes under `createEngine({ testing })`. diff --git a/docs/reference/typescript/server.md b/docs/reference/typescript/server.md index f3acf06..cac5b79 100644 --- a/docs/reference/typescript/server.md +++ b/docs/reference/typescript/server.md @@ -13,7 +13,7 @@ drizzle tables would turn a private layout into a compatibility surface. ### AuthError -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:12](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L12) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:12](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L12) Verification failure, always the caller's fault; the app maps it to 401. @@ -76,7 +76,7 @@ Error.constructor ### `abstract` BaseGameDO -Defined in: [eigen-server/packages/server/src/do/game-do.ts:104](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L104) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:104](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L104) Durable Object base class that owns one authoritative game session. @@ -118,7 +118,7 @@ export class GameDO extends BaseGameDO { new BaseGameDO(ctx, env): BaseGameDO; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:118](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L118) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:118](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L118) ###### Parameters @@ -145,7 +145,7 @@ DurableObject.constructor abstract protected readonly gameModule: GameModule; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:106](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L106) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:106](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L106) The implementor's game: the `versions` map the engine dispatches on. @@ -157,7 +157,7 @@ The implementor's game: the `versions` map the engine dispatches on. abort(gameId): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:262](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L262) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:271](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L271) Unconditional teardown (cron reap): mark the game aborted in D1 and drop the DO's storage: no creator gate, no init requirement. A @@ -187,7 +187,7 @@ GameStub.abort alarm(): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:708](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L708) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:729](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L729) ###### Returns @@ -199,7 +199,7 @@ Defined in: [eigen-server/packages/server/src/do/game-do.ts:708](https://github. abstract protected d1(env): D1Database; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:109](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L109) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:109](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L109) The EngineConfig seam: the engine never assumes binding names, so the subclass picks the D1 database off its own Env. @@ -220,14 +220,14 @@ subclass picks the D1 database off its own Env. fetch(request): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:732](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L732) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:753](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L753) The worker routes the upgrade here after authenticating; the principal header is worker-set (never client-supplied; the worker strips inbound -headers when forwarding). One socket serves the game's whole lifetime: -unversioned roster snapshots pre-game, versioned frames from v0. -A not-yet-seated user's socket simply receives no frames until the -roster contains them. +headers when forwarding). One socket serves the game's whole lifetime and +carries one message kind, the per-seat [SessionSnapshot](#sessionsnapshot). A +not-yet-seated user's socket receives the envelope with no frame until the +roster contains them, which is how it learns the game started at all. ###### Parameters @@ -251,7 +251,7 @@ GameStub.fetch protected firebaseAdmin(env): FirebaseAdminEffects; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:112](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L112) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:112](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L112) Required Firebase Admin effects. Tests override this with the explicit fake exported by `@eigeninteractive/server/testing`. @@ -272,7 +272,7 @@ fake exported by `@eigeninteractive/server/testing`. frames(args): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:832](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L832) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:932](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L932) Project a version range for one seat (null = public viewer, replay only). Live rows serve the stored frame; compacted/ratings rows @@ -304,7 +304,7 @@ GameStub.frames handle(cmd): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:131](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L131) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:131](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L131) ###### Parameters @@ -328,7 +328,7 @@ GameStub.handle repokeFinish(): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:696](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L696) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:717](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L717) The gated admin re-poke (step 4): re-runs the D1 apply for a finish whose effects never landed. Idempotent end to end: finish_id @@ -345,13 +345,40 @@ hasn't been committed. Returns false when there is nothing to do. GameStub.repokeFinish ``` +##### session() + +```ts +session(gameId, userId): Promise; +``` + +Defined in: [eigen-server/packages/server/src/do/game-do.ts:776](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L776) + +The snapshot over RPC, for the HTTP paths that have no socket. + +###### Parameters + +| Parameter | Type | +| ------ | ------ | +| `gameId` | `string` | +| `userId` | `string` \| `null` | + +###### Returns + +`Promise`\<[`SessionSnapshot`](#sessionsnapshot) \| `null`\> + +###### Implementation of + +```ts +GameStub.session +``` + ##### webSocketClose() ```ts webSocketClose(): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:766](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L766) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:786](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L786) ###### Returns @@ -363,7 +390,7 @@ Defined in: [eigen-server/packages/server/src/do/game-do.ts:766](https://github. webSocketError(_ws, error): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:772](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L772) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:792](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L792) ###### Parameters @@ -382,7 +409,7 @@ Defined in: [eigen-server/packages/server/src/do/game-do.ts:772](https://github. webSocketMessage(): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:761](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L761) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:781](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L781) ###### Returns @@ -392,7 +419,7 @@ Defined in: [eigen-server/packages/server/src/do/game-do.ts:761](https://github. ### HttpError -Defined in: [eigen-server/packages/server/src/http.ts:38](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/http.ts#L38) +Defined in: [eigen-server/packages/server/src/http.ts:38](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/http.ts#L38) #### Extends @@ -410,7 +437,7 @@ new HttpError( retryAfterSeconds?): HttpError; ``` -Defined in: [eigen-server/packages/server/src/http.ts:46](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/http.ts#L46) +Defined in: [eigen-server/packages/server/src/http.ts:46](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/http.ts#L46) ###### Parameters @@ -439,7 +466,7 @@ Error.constructor readonly code: ErrorCode | undefined; ``` -Defined in: [eigen-server/packages/server/src/http.ts:40](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/http.ts#L40) +Defined in: [eigen-server/packages/server/src/http.ts:40](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/http.ts#L40) ##### retryAfterSeconds @@ -447,7 +474,7 @@ Defined in: [eigen-server/packages/server/src/http.ts:40](https://github.com/eig readonly retryAfterSeconds: number | undefined; ``` -Defined in: [eigen-server/packages/server/src/http.ts:44](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/http.ts#L44) +Defined in: [eigen-server/packages/server/src/http.ts:44](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/http.ts#L44) Seconds the caller should wait before retrying, rendered as the `Retry-After` header. Set only on a 429 (see `ErrorCode.rateLimited`); @@ -459,13 +486,13 @@ Seconds the caller should wait before retrying, rendered as the readonly status: 400 | 401 | 403 | 404 | 409 | 413 | 415 | 422 | 429 | 500 | 502; ``` -Defined in: [eigen-server/packages/server/src/http.ts:39](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/http.ts#L39) +Defined in: [eigen-server/packages/server/src/http.ts:39](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/http.ts#L39) ## Interfaces ### AuthClaims -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:18](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L18) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:18](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L18) What a verified ID token asserts. `isAnonymous` (the `firebase.sign_in_provider === 'anonymous'` claim) drives every guest gate; @@ -480,7 +507,7 @@ Apple usually only email, guests none). email: string | null; ``` -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:21](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L21) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:21](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L21) ##### isAnonymous @@ -488,7 +515,7 @@ Defined in: [eigen-server/packages/server/src/auth/firebase.ts:21](https://githu isAnonymous: boolean; ``` -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:20](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L20) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:20](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L20) ##### name @@ -496,7 +523,7 @@ Defined in: [eigen-server/packages/server/src/auth/firebase.ts:20](https://githu name: string | null; ``` -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:22](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L22) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:22](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L22) ##### picture @@ -504,7 +531,7 @@ Defined in: [eigen-server/packages/server/src/auth/firebase.ts:22](https://githu picture: string | null; ``` -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:23](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L23) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:23](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L23) ##### uid @@ -512,13 +539,13 @@ Defined in: [eigen-server/packages/server/src/auth/firebase.ts:23](https://githu uid: string; ``` -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:19](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L19) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:19](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L19) *** ### CreateGameInput -Defined in: [eigen-server/packages/server/src/d1/apply.ts:292](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L292) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:292](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L292) The worker-direct create, engine-owned so implementors never touch the D1 schema: seats already validated by worker policy. @@ -531,7 +558,7 @@ the D1 schema: seats already validated by worker policy. access: GameAccess; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:296](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L296) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:296](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L296) ##### budgetSeconds @@ -539,7 +566,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:296](https://github.co budgetSeconds: number | null; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:300](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L300) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:300](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L300) ##### config @@ -547,7 +574,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:300](https://github.co config: JsonObject; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:298](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L298) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:298](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L298) ##### createdBy @@ -555,7 +582,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:298](https://github.co createdBy: string | null; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:294](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L294) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:294](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L294) ##### gameId @@ -563,7 +590,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:294](https://github.co gameId: string; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:293](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L293) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:293](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L293) ##### incrementSeconds @@ -571,7 +598,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:293](https://github.co incrementSeconds: number | null; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:301](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L301) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:301](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L301) ##### maxPlayers @@ -579,7 +606,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:301](https://github.co maxPlayers: number; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:305](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L305) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:305](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L305) ##### minPlayers @@ -587,7 +614,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:305](https://github.co minPlayers: number; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:304](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L304) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:304](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L304) ##### now @@ -595,7 +622,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:304](https://github.co now: number; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:308](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L308) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:308](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L308) ##### rated @@ -603,7 +630,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:308](https://github.co rated: boolean; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:302](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L302) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:302](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L302) ##### ratingPool @@ -611,7 +638,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:302](https://github.co ratingPool: string | null; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:303](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L303) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:303](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L303) ##### schemaVersion @@ -619,7 +646,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:303](https://github.co schemaVersion: number; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:297](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L297) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:297](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L297) ##### seats @@ -627,7 +654,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:297](https://github.co seats: Seat[]; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:307](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L307) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:307](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L307) ##### shortCode @@ -635,7 +662,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:307](https://github.co shortCode: string; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:306](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L306) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:306](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L306) ##### status @@ -643,7 +670,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:306](https://github.co status: "waiting" | "ready"; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:295](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L295) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:295](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L295) ##### turnSeconds @@ -651,13 +678,13 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:295](https://github.co turnSeconds: number | null; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:299](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L299) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:299](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L299) *** ### EngineConfig -Defined in: [eigen-server/packages/server/src/engine.ts:99](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L99) +Defined in: [eigen-server/packages/server/src/engine.ts:99](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L99) The EngineConfig seam: the engine never assumes binding names, so the implementor picks bindings off their own Env. Annotate the accessors' `env` @@ -678,7 +705,7 @@ parameter and both type arguments infer. appName: string; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:106](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L106) +Defined in: [eigen-server/packages/server/src/engine.ts:106](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L106) The whitelabel app's display name, the single source of truth for the engine's own identity (share metadata and public-page titles today; @@ -692,7 +719,7 @@ feature blocks are enabled. optional avatars?: AvatarsConfig; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:128](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L128) +Defined in: [eigen-server/packages/server/src/engine.ts:128](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L128) Opt-in avatar uploads. Omit → not mounted. @@ -702,7 +729,7 @@ Opt-in avatar uploads. Omit → not mounted. optional clientOrigins?: readonly string[] | ((env) => readonly string[]); ``` -Defined in: [eigen-server/packages/server/src/engine.ts:124](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L124) +Defined in: [eigen-server/packages/server/src/engine.ts:124](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L124) Browser origins allowed to call the engine from a different origin. @@ -721,7 +748,7 @@ Set an empty list to disable the `WEB_APP_ORIGIN` default. optional deepLink?: DeepLinkConfig; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:126](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L126) +Defined in: [eigen-server/packages/server/src/engine.ts:126](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L126) Native deep-link verification and store links. Omit for web-only. @@ -731,7 +758,7 @@ Native deep-link verification and store links. Omit for web-only. gameModule: GameModule; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:100](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L100) +Defined in: [eigen-server/packages/server/src/engine.ts:100](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L100) ##### lifecycle? @@ -739,7 +766,7 @@ Defined in: [eigen-server/packages/server/src/engine.ts:100](https://github.com/ optional lifecycle?: LifecycleOptions; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:135](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L135) +Defined in: [eigen-server/packages/server/src/engine.ts:135](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L135) Cron-backstop tuning: guest-purge/reap windows and batch caps. Omit for the defaults (`LIFECYCLE_DEFAULTS`); set any subset to @@ -751,7 +778,7 @@ override just those. optional site?: SiteConfig; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:131](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L131) +Defined in: [eigen-server/packages/server/src/engine.ts:131](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L131) The public web surface: download page, legal documents, crawler files. Omit → not mounted (the worker is API-only). @@ -765,7 +792,7 @@ optional testing?: { }; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:140](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L140) +Defined in: [eigen-server/packages/server/src/engine.ts:140](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L140) Explicit test-only replacements for Firebase verification and Admin effects. Supplying them together prevents a fake verifier from @@ -802,7 +829,7 @@ firebaseAdmin(env): FirebaseAdminEffects; d1(env): D1Database; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:108](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L108) +Defined in: [eigen-server/packages/server/src/engine.ts:108](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L108) The engine's D1 database (engine-private). @@ -822,7 +849,7 @@ The engine's D1 database (engine-private). optional firebaseProjectId(env): string; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:113](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L113) +Defined in: [eigen-server/packages/server/src/engine.ts:113](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L113) Firebase project id for token verification; defaults to the `FIREBASE_PROJECT_ID` var (the only secret verification needs). @@ -843,7 +870,7 @@ Firebase project id for token verification; defaults to the gameDO(env): DurableObjectNamespace; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:110](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L110) +Defined in: [eigen-server/packages/server/src/engine.ts:110](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L110) The GameDO namespace binding. @@ -861,7 +888,7 @@ The GameDO namespace binding. ### FinishApplyInput -Defined in: [eigen-server/packages/server/src/d1/apply.ts:30](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L30) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:30](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L30) #### Properties @@ -871,7 +898,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:30](https://github.com finishId: string; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:34](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L34) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:34](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L34) The DO-minted idempotency key. The apply is a no-op replay when the games row already carries it. @@ -882,7 +909,7 @@ the games row already carries it. gameId: string; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:31](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L31) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:31](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L31) ##### now @@ -890,7 +917,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:31](https://github.com now: number; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:39](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L39) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:39](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L39) ##### outcomes @@ -898,7 +925,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:39](https://github.com outcomes: OutcomeEntry[]; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:35](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L35) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:35](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L35) ##### rated @@ -906,7 +933,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:35](https://github.com rated: boolean; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:37](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L37) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:37](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L37) ##### ratingPool @@ -914,7 +941,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:37](https://github.com ratingPool: string | null; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:38](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L38) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:38](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L38) ##### roster @@ -922,13 +949,13 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:38](https://github.com roster: Seat[]; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:36](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L36) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:36](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L36) *** ### FirebaseAdminEffects -Defined in: [eigen-server/packages/server/src/firebase/admin-effects.ts:15](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/firebase/admin-effects.ts#L15) +Defined in: [eigen-server/packages/server/src/firebase/admin-effects.ts:15](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/firebase/admin-effects.ts#L15) The Firebase Admin effects used by authenticated engine paths. @@ -940,7 +967,7 @@ The Firebase Admin effects used by authenticated engine paths. deleteAccount(userId): Promise; ``` -Defined in: [eigen-server/packages/server/src/firebase/admin-effects.ts:19](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/firebase/admin-effects.ts#L19) +Defined in: [eigen-server/packages/server/src/firebase/admin-effects.ts:19](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/firebase/admin-effects.ts#L19) Permanently delete one Firebase Authentication account. @@ -963,7 +990,7 @@ notifyUser( message): Promise; ``` -Defined in: [eigen-server/packages/server/src/firebase/admin-effects.ts:17](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/firebase/admin-effects.ts#L17) +Defined in: [eigen-server/packages/server/src/firebase/admin-effects.ts:17](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/firebase/admin-effects.ts#L17) Send one notification through the engine's registered-device store. @@ -983,7 +1010,7 @@ Send one notification through the engine's registered-device store. ### FrameMessage -Defined in: [eigen-server/packages/server/src/protocol.ts:91](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L91) +Defined in: [eigen-server/packages/server/src/protocol.ts:137](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L137) One seat's versioned frame on the wire: the socket fan-out payload, and (for the acting seat) the command-response ride-along. `ratings` appears @@ -997,7 +1024,7 @@ only on the post-finish ratings transition. data: JsonObject; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:94](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L94) +Defined in: [eigen-server/packages/server/src/protocol.ts:140](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L140) ##### deadline @@ -1005,7 +1032,7 @@ Defined in: [eigen-server/packages/server/src/protocol.ts:94](https://github.com deadline: number | null; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:97](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L97) +Defined in: [eigen-server/packages/server/src/protocol.ts:143](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L143) The true client-facing deadline (grace is display-only there). @@ -1015,7 +1042,7 @@ The true client-facing deadline (grace is display-only there). optional outcomes?: OutcomeEntry[]; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:99](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L99) +Defined in: [eigen-server/packages/server/src/protocol.ts:145](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L145) ##### pendingPlayers @@ -1023,7 +1050,7 @@ Defined in: [eigen-server/packages/server/src/protocol.ts:99](https://github.com pendingPlayers: number[]; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:95](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L95) +Defined in: [eigen-server/packages/server/src/protocol.ts:141](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L141) ##### playerTimes @@ -1031,7 +1058,7 @@ Defined in: [eigen-server/packages/server/src/protocol.ts:95](https://github.com playerTimes: number[] | null; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:98](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L98) +Defined in: [eigen-server/packages/server/src/protocol.ts:144](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L144) ##### ratings? @@ -1039,7 +1066,7 @@ Defined in: [eigen-server/packages/server/src/protocol.ts:98](https://github.com optional ratings?: RatingDelta[]; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:100](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L100) +Defined in: [eigen-server/packages/server/src/protocol.ts:146](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L146) ##### type @@ -1047,7 +1074,7 @@ Defined in: [eigen-server/packages/server/src/protocol.ts:100](https://github.co type: "frame"; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:92](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L92) +Defined in: [eigen-server/packages/server/src/protocol.ts:138](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L138) ##### version @@ -1055,13 +1082,13 @@ Defined in: [eigen-server/packages/server/src/protocol.ts:92](https://github.com version: number; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:93](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L93) +Defined in: [eigen-server/packages/server/src/protocol.ts:139](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L139) *** ### LegalConfig -Defined in: [eigen-server/packages/server/src/site/config.ts:29](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L29) +Defined in: [eigen-server/packages/server/src/site/config.ts:29](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L29) Legal document overrides. Each is an HTML **fragment**: body content only, no document wrapper; the engine supplies the shell, styling and footer. @@ -1080,7 +1107,7 @@ what a template's tokens used to stand in for. optional deleteAccount?: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:32](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L32) +Defined in: [eigen-server/packages/server/src/site/config.ts:32](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L32) ##### privacy? @@ -1088,7 +1115,7 @@ Defined in: [eigen-server/packages/server/src/site/config.ts:32](https://github. optional privacy?: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:31](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L31) +Defined in: [eigen-server/packages/server/src/site/config.ts:31](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L31) ##### terms? @@ -1096,13 +1123,13 @@ Defined in: [eigen-server/packages/server/src/site/config.ts:31](https://github. optional terms?: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:30](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L30) +Defined in: [eigen-server/packages/server/src/site/config.ts:30](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L30) *** ### OperatorConfig -Defined in: [eigen-server/packages/server/src/site/config.ts:9](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L9) +Defined in: [eigen-server/packages/server/src/site/config.ts:9](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L9) The legal entity publishing the game. Required whenever `site` is present: the default legal documents take it as a prop and cannot render without it. @@ -1115,7 +1142,7 @@ the default legal documents take it as a prop and cannot render without it. contactEmail: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:15](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L15) +Defined in: [eigen-server/packages/server/src/site/config.ts:15](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L15) Support and privacy contact address. @@ -1125,7 +1152,7 @@ Support and privacy contact address. effectiveDate: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:18](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L18) +Defined in: [eigen-server/packages/server/src/site/config.ts:18](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L18) Effective date of the legal documents, as displayed. A plain string, not a Date, since it is prose and its format is the operator's choice. @@ -1136,7 +1163,7 @@ Date, since it is prose and its format is the operator's choice. jurisdiction: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:13](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L13) +Defined in: [eigen-server/packages/server/src/site/config.ts:13](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L13) Governing jurisdiction, e.g. `India`. @@ -1146,7 +1173,7 @@ Governing jurisdiction, e.g. `India`. name: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:11](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L11) +Defined in: [eigen-server/packages/server/src/site/config.ts:11](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L11) Legal entity name. Also the page footers' copyright holder. @@ -1154,7 +1181,7 @@ Legal entity name. Also the page footers' copyright holder. ### Principal -Defined in: [eigen-server/packages/server/src/protocol.ts:16](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L16) +Defined in: [eigen-server/packages/server/src/protocol.ts:16](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L16) Who a command acts as, resolved at the edge. Exactly one id is set. @@ -1166,7 +1193,7 @@ Who a command acts as, resolved at the edge. Exactly one id is set. botId: string | null; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:18](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L18) +Defined in: [eigen-server/packages/server/src/protocol.ts:18](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L18) ##### userId @@ -1174,7 +1201,7 @@ Defined in: [eigen-server/packages/server/src/protocol.ts:18](https://github.com userId: string | null; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:17](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L17) +Defined in: [eigen-server/packages/server/src/protocol.ts:17](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L17) *** @@ -1264,7 +1291,7 @@ Defined in: eigen-server/packages/kernel/dist/index.d.ts:175 ### RetryOptions -Defined in: [eigen-server/packages/server/src/d1/retry.ts:59](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L59) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:59](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L59) #### Properties @@ -1274,7 +1301,7 @@ Defined in: [eigen-server/packages/server/src/d1/retry.ts:59](https://github.com optional attempts?: number; ``` -Defined in: [eigen-server/packages/server/src/d1/retry.ts:61](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L61) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:61](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L61) Total attempts including the first. Default 4. @@ -1284,7 +1311,7 @@ Total attempts including the first. Default 4. optional baseDelayMs?: number; ``` -Defined in: [eigen-server/packages/server/src/d1/retry.ts:63](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L63) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:63](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L63) First backoff, doubling each retry. Default 50ms. @@ -1294,7 +1321,7 @@ First backoff, doubling each retry. Default 50ms. optional maxDelayMs?: number; ``` -Defined in: [eigen-server/packages/server/src/d1/retry.ts:65](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L65) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:65](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L65) Backoff ceiling. Default 2000ms. @@ -1304,7 +1331,7 @@ Backoff ceiling. Default 2000ms. optional onRetry?: (error, attempt) => void; ``` -Defined in: [eigen-server/packages/server/src/d1/retry.ts:69](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L69) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:69](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L69) Observe each retry (logging); never throws into the loop. @@ -1325,7 +1352,7 @@ Observe each retry (logging); never throws into the loop. optional shouldRetry?: (error) => boolean; ``` -Defined in: [eigen-server/packages/server/src/d1/retry.ts:67](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L67) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:67](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L67) Which failures are worth retrying. Default [isTransientD1Error](#istransientd1error). @@ -1345,7 +1372,7 @@ Which failures are worth retrying. Default [isTransientD1Error](#istransientd1er optional sleep?: (ms) => Promise; ``` -Defined in: [eigen-server/packages/server/src/d1/retry.ts:71](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L71) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:71](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L71) Delay primitive, injectable so tests run without real timers. @@ -1361,23 +1388,162 @@ Delay primitive, injectable so tests run without real timers. *** -### RosterSnapshot +### SessionSnapshot + +Defined in: [eigen-server/packages/server/src/protocol.ts:98](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L98) + +The complete live truth about one game, as ONE SEAT sees it: the only message +the socket carries, and the body of every accepted command. + +Sent on socket open whatever the status, and after every committed change, +lobby or state. Self-describing and idempotent: a client that applies the +newest one it has seen is correct, having missed any number of earlier ones, +so there is no state for it to reconstruct and no channel for it to correlate +against another. -Defined in: [eigen-server/packages/server/src/protocol.ts:82](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L82) +It carries the immutable header as well as the moving parts because a game +screen must not need a second source. That is what the old split cost: status +lived only in a D1 read nothing re-issued, so a client could observe a frame +without the status it belonged to, and never learned a game had started. -The unversioned pre-game snapshot: pushed to every socket on any -roster change, idempotent, so a reconnect just gets the current one. Also the -response body of an accepted waiting-room command. +Hidden information is safe by construction: the envelope is projected per seat +before it is sent, and `frame` is only ever the receiving principal's own +seat's view. #### Properties +##### access + +```ts +access: GameAccess; +``` + +Defined in: [eigen-server/packages/server/src/protocol.ts:111](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L111) + +##### budgetSeconds + +```ts +budgetSeconds: number | null; +``` + +Defined in: [eigen-server/packages/server/src/protocol.ts:115](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L115) + +##### config + +```ts +config: JsonObject; +``` + +Defined in: [eigen-server/packages/server/src/protocol.ts:113](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L113) + +##### createdBy + +```ts +createdBy: string | null; +``` + +Defined in: [eigen-server/packages/server/src/protocol.ts:121](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L121) + +##### frame + +```ts +frame: FrameMessage | null; +``` + +Defined in: [eigen-server/packages/server/src/protocol.ts:131](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L131) + +The receiving seat's observation at `version`. Null in the lobby, and null +for a principal holding no seat, which is how an unseated client still +learns that the game started. + +##### gameId + +```ts +gameId: string; +``` + +Defined in: [eigen-server/packages/server/src/protocol.ts:109](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L109) + +Fixed at creation; carried so this is sufficient on its own. + +##### incrementSeconds + +```ts +incrementSeconds: number | null; +``` + +Defined in: [eigen-server/packages/server/src/protocol.ts:116](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L116) + +##### maxPlayers + +```ts +maxPlayers: number; +``` + +Defined in: [eigen-server/packages/server/src/protocol.ts:120](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L120) + +##### minPlayers + +```ts +minPlayers: number; +``` + +Defined in: [eigen-server/packages/server/src/protocol.ts:119](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L119) + ##### players ```ts players: Seat[]; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:85](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L85) +Defined in: [eigen-server/packages/server/src/protocol.ts:125](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L125) + +##### rated + +```ts +rated: boolean; +``` + +Defined in: [eigen-server/packages/server/src/protocol.ts:117](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L117) + +##### ratingPool + +```ts +ratingPool: string | null; +``` + +Defined in: [eigen-server/packages/server/src/protocol.ts:118](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L118) + +##### schemaVersion + +```ts +schemaVersion: number; +``` + +Defined in: [eigen-server/packages/server/src/protocol.ts:112](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L112) + +##### seq + +```ts +seq: number; +``` + +Defined in: [eigen-server/packages/server/src/protocol.ts:106](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L106) + +Monotonic per game, incremented by every commit. Totally orders snapshots +across every path they arrive by, which `version` cannot do because a lobby +change has none. Apply a snapshot when `seq` exceeds the held one, OR when +it reports a terminal status the held state does not: `finished` and +`aborted` are absorbing, so they need no ordering, and the abort teardown +drops the storage `seq` lived in. + +##### shortCode + +```ts +shortCode: string; +``` + +Defined in: [eigen-server/packages/server/src/protocol.ts:110](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L110) ##### status @@ -1385,21 +1551,41 @@ Defined in: [eigen-server/packages/server/src/protocol.ts:85](https://github.com status: GameStatus; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:84](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L84) +Defined in: [eigen-server/packages/server/src/protocol.ts:124](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L124) + +What moves. + +##### turnSeconds + +```ts +turnSeconds: number | null; +``` + +Defined in: [eigen-server/packages/server/src/protocol.ts:114](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L114) ##### type ```ts -type: "roster"; +type: "session"; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:83](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L83) +Defined in: [eigen-server/packages/server/src/protocol.ts:99](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L99) + +##### version + +```ts +version: number | null; +``` + +Defined in: [eigen-server/packages/server/src/protocol.ts:127](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L127) + +The newest committed version, or null while the game is in the lobby. *** ### SiteConfig -Defined in: [eigen-server/packages/server/src/site/config.ts:53](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L53) +Defined in: [eigen-server/packages/server/src/site/config.ts:53](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L53) The public web surface a deployed game serves on its own host: download page, legal documents, and the crawler files. Absent → none of it is mounted and @@ -1416,7 +1602,7 @@ The scaffold reserves these paths for the Worker with Static Assets' optional description?: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:59](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L59) +Defined in: [eigen-server/packages/server/src/site/config.ts:59](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L59) Longer download-page prose. Defaults to `tagline`. @@ -1426,7 +1612,7 @@ Longer download-page prose. Defaults to `tagline`. optional legal?: LegalConfig; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:73](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L73) +Defined in: [eigen-server/packages/server/src/site/config.ts:73](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L73) ##### madeByCredit? @@ -1434,7 +1620,7 @@ Defined in: [eigen-server/packages/server/src/site/config.ts:73](https://github. optional madeByCredit?: string | null; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:71](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L71) +Defined in: [eigen-server/packages/server/src/site/config.ts:71](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L71) Footer credit line. Defaults to [DEFAULT\_CREDIT](#default_credit); `null` removes it. @@ -1444,7 +1630,7 @@ Footer credit line. Defaults to [DEFAULT\_CREDIT](#default_credit); `null` remov optional name?: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:55](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L55) +Defined in: [eigen-server/packages/server/src/site/config.ts:55](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L55) Public game name in titles and OG tags. Defaults to `appName`. @@ -1454,7 +1640,7 @@ Public game name in titles and OG tags. Defaults to `appName`. optional ogImage?: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:69](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L69) +Defined in: [eigen-server/packages/server/src/site/config.ts:69](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L69) Path under `public/` to the 1200x630 OG image. Defaults to `/og-image.png`, the name the @@ -1468,7 +1654,7 @@ surfaces. The engine never generates images. operator: OperatorConfig; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:72](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L72) +Defined in: [eigen-server/packages/server/src/site/config.ts:72](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L72) ##### primaryColor @@ -1476,7 +1662,7 @@ Defined in: [eigen-server/packages/server/src/site/config.ts:72](https://github. primaryColor: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:61](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L61) +Defined in: [eigen-server/packages/server/src/site/config.ts:61](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L61) Hex accent colour, e.g. `#1a237e`. Also the `theme-color`. @@ -1486,7 +1672,7 @@ Hex accent colour, e.g. `#1a237e`. Also the `theme-color`. optional screenshots?: string[]; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:63](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L63) +Defined in: [eigen-server/packages/server/src/site/config.ts:63](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L63) Filenames under `public/screenshots/`, shown as a scrolling strip. @@ -1496,7 +1682,7 @@ Filenames under `public/screenshots/`, shown as a scrolling strip. tagline: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:57](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L57) +Defined in: [eigen-server/packages/server/src/site/config.ts:57](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L57) One-sentence hook. The meta description and OG description. @@ -1504,7 +1690,7 @@ One-sentence hook. The meta description and OG description. ### TokenVerifier -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:29](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L29) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:29](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L29) The seam `createEngine` consumes. Production is [createFirebaseVerifier](#createfirebaseverifier) with the default remote JWKS; tests inject a @@ -1518,7 +1704,7 @@ local JWKS and mint their own RS256 tokens. verify(token): Promise; ``` -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:31](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L31) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:31](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L31) Resolve a bearer token to claims, or throw [AuthError](#autherror). @@ -1582,7 +1768,7 @@ type Command = }; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:23](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L23) +Defined in: [eigen-server/packages/server/src/protocol.ts:23](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L23) Everything that crosses the worker → DO boundary after creation ( create itself is a worker-direct D1 write; the DO does not exist yet). @@ -1771,13 +1957,8 @@ type: LifecycleType; ```ts type CommandResult = | { - frame: FrameMessage | null; ok: true; - version: number; -} - | { - ok: true; - roster: RosterSnapshot; + session: SessionSnapshot; } | { code: | RejectCode @@ -1787,13 +1968,17 @@ type CommandResult = }; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:124](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L124) +Defined in: [eigen-server/packages/server/src/protocol.ts:158](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L158) + +What `GameDO.handle()` returns: one accepted shape for every command kind, +the caller's own post-commit [SessionSnapshot](#sessionsnapshot), so a lobby command and a +move answer with the same value and the client feeds both into one path. -What `GameDO.handle()` returns; accepted results are stored for commandId -dedupe and replayed verbatim to a retry. Rejections are computed -fresh each time, since re-evaluating one is always sound. State-transitioning -commands answer with a version (+ the acting seat's frame); waiting-room -commands answer with the post-commit roster snapshot. +Accepted results are stored for commandId dedupe and replayed verbatim to a +retry, which means a retry receives the snapshot as it was at first execution. +That is harmless rather than stale: `seq` orders it against whatever the +client now holds, so an older one is simply discarded. Rejections are computed +fresh each time, since re-evaluating one is always sound. *** @@ -1810,7 +1995,7 @@ type LobbyRejectCode = | "creatorCannotLeave"; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:62](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L62) +Defined in: [eigen-server/packages/server/src/protocol.ts:62](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L62) Why the DO refused a waiting-room command: the integrity column. These are *expected* refusals (accepted lobby staleness: the lobby may show @@ -1826,7 +2011,7 @@ rejections; the worker maps them to HTTP. Genuine protocol violations type UserRow = typeof users.$inferSelect; ``` -Defined in: [eigen-server/packages/server/src/auth/provision.ts:19](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/provision.ts#L19) +Defined in: [eigen-server/packages/server/src/auth/provision.ts:19](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/provision.ts#L19) ## Variables @@ -1851,7 +2036,7 @@ windows. The client's display-only `kServerDeadlineGrace` mirrors this. const DEFAULT_CREDIT: "Built with EigenInteractive" = "Built with EigenInteractive"; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:41](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L41) +Defined in: [eigen-server/packages/server/src/site/config.ts:41](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L41) The credit line in every page footer. Set `site.madeByCredit` to your own string, or to `null` to drop it. @@ -1868,7 +2053,7 @@ renders as plain text rather than pointing somewhere it never mentioned. function applyFinish(d1, input): Promise; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:48](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L48) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:48](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L48) Apply one finished game to D1. Returns the rated deltas (null for an unrated game) for the DO to deliver as the ratings transition. Throws on @@ -1894,7 +2079,7 @@ the call site; the internal loop only absorbs CAS conflicts). function createEngine(cfg): ExportedHandler; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:418](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L418) +Defined in: [eigen-server/packages/server/src/engine.ts:418](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L418) Creates the complete Cloudflare Worker for one game deployment. @@ -1941,7 +2126,7 @@ export default createEngine({ function createFirebaseVerifier(projectId, getKey?): TokenVerifier; ``` -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:46](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L46) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:46](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L46) #### Parameters @@ -1962,7 +2147,7 @@ Defined in: [eigen-server/packages/server/src/auth/firebase.ts:46](https://githu function createGame(d1, input): Promise; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:314](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L314) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:314](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L314) Write the games row + one participants row per seat, atomically. The DO lazy-inits from exactly these rows on first contact. Callers own the @@ -1987,7 +2172,7 @@ shortCode retry: a duplicate trips the UNIQUE index and throws. function deriveBotKey(masterSecret, botId): Promise; ``` -Defined in: [eigen-server/packages/server/src/bot/bot-auth.ts:60](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/bot/bot-auth.ts#L60) +Defined in: [eigen-server/packages/server/src/bot/bot-auth.ts:60](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/bot/bot-auth.ts#L60) The per-bot signing key as base64, **the operator utility**. This is the one value an external bot's owner is given, and the only one they need: it @@ -2061,7 +2246,7 @@ function ensureUser( }>; ``` -Defined in: [eigen-server/packages/server/src/auth/provision.ts:51](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/provision.ts#L51) +Defined in: [eigen-server/packages/server/src/auth/provision.ts:51](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/provision.ts#L51) Load the caller's row, creating or backfilling it as the token demands. One read on the hot path; writes only on first sight and on guest → @@ -2096,7 +2281,7 @@ permanent conversion. function isTransientD1Error(error): boolean; ``` -Defined in: [eigen-server/packages/server/src/d1/retry.ts:55](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L55) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:55](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L55) True for the D1 failures worth retrying: a network blip, a storage or Durable-Object reset, a code-update restart, or a transient routing failure. @@ -2128,7 +2313,7 @@ This is the default predicate for [withRetry](#withretry); pass function mirrorRoster(d1, args): Promise; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:280](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L280) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:280](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L280) The roster mirror after a committed waiting-room command. The DO's roster is the integrity copy; this rewrites the D1 display copy wholesale @@ -2159,7 +2344,7 @@ single attempt. function openApiDocument(version): OpenAPIObject; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:494](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L494) +Defined in: [eigen-server/packages/server/src/engine.ts:494](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L494) Build the API document from an inert app: route handlers never run, so the context can refuse everything. `appName` is an unused placeholder here: @@ -2216,7 +2401,7 @@ function readGameRow(d1, gameId): Promise< | undefined>; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:341](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L341) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:341](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L341) Lazy-init read: the D1 game + participants rows the DO copies into its `meta`/`roster` on first contact, in one batched round trip. @@ -2266,7 +2451,7 @@ its `meta`/`roster` on first contact, in one batched round trip. function updateSummary(d1, args): Promise; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:262](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L262) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:262](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L262) The display upsert after a non-finishing transition: fire-and-forget post-commit (the DO leaves it unawaited; no `waitUntil`), single attempt, @@ -2296,7 +2481,7 @@ re-derivable from the DO at any time. function withRetry(op, options?): Promise; ``` -Defined in: [eigen-server/packages/server/src/d1/retry.ts:88](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L88) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:88](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L88) Run `op`, retrying a *retryable* failure with jittered exponential backoff up to `attempts`. A non-retryable failure, or the last attempt, throws. diff --git a/docs/reference/typescript/testkit.md b/docs/reference/typescript/testkit.md index 0b33d85..6062639 100644 --- a/docs/reference/typescript/testkit.md +++ b/docs/reference/typescript/testkit.md @@ -8,7 +8,7 @@ assert on the resulting transitions and per-seat observations. ### ActionCase -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:82](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L82) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:82](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L82) A game-action case: exercises schemas, `applyAction`, and (through `expected.observation`) `computeObservation` for the acting seat. @@ -21,7 +21,7 @@ A game-action case: exercises schemas, `applyAction`, and (through action: JsonObject; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:93](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L93) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:93](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L93) ##### config @@ -29,7 +29,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:93](https://gith config: JsonObject; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:85](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L85) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:85](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L85) ##### expected @@ -43,7 +43,7 @@ expected: { }; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:94](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L94) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:94](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L94) ###### observation? @@ -81,7 +81,7 @@ valid: boolean; kind: "action"; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:83](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L83) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:83](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L83) ##### name @@ -89,7 +89,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:83](https://gith name: string; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:84](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L84) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:84](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L84) ##### obs? @@ -97,7 +97,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:84](https://gith optional obs?: JsonObject; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:88](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L88) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:88](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L88) Dart-side observation payload; unused here (defaults to `state`). @@ -107,7 +107,7 @@ Dart-side observation payload; unused here (defaults to `state`). optional participantCount?: number; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:91](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L91) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:91](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L91) ##### pending @@ -115,7 +115,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:91](https://gith pending: number[]; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:89](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L89) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:89](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L89) ##### playerIndex @@ -123,7 +123,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:89](https://gith playerIndex: number; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:90](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L90) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:90](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L90) ##### rngSeed? @@ -131,7 +131,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:90](https://gith optional rngSeed?: string; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:92](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L92) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:92](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L92) ##### state @@ -139,13 +139,13 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:92](https://gith state: JsonObject; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:86](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L86) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:86](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L86) *** ### BotSeatableCase -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:118](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L118) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:118](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L118) A `botSeatable` predicate case. @@ -157,7 +157,7 @@ A `botSeatable` predicate case. botConfig: JsonObject; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:122](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L122) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:122](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L122) ##### expected @@ -165,7 +165,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:122](https://git expected: boolean; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:123](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L123) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:123](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L123) ##### gameConfig @@ -173,7 +173,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:123](https://git gameConfig: JsonObject; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:121](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L121) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:121](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L121) ##### kind @@ -181,7 +181,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:121](https://git kind: "botSeatable"; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:119](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L119) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:119](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L119) ##### name @@ -189,13 +189,13 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:119](https://git name: string; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:120](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L120) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:120](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L120) *** ### BuildGameContractOptions -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:45](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L45) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:45](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L45) Inputs for building a [GameContract](#gamecontract) without writing it. @@ -211,7 +211,7 @@ Inputs for building a [GameContract](#gamecontract) without writing it. optional fixturesRoot?: any; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:51](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L51) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:51](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L51) Root containing `v/*.json` twin fixtures. @@ -221,7 +221,7 @@ Root containing `v/*.json` twin fixtures. game: string; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:47](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L47) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:47](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L47) Stable display name used as the generated Dart type prefix. @@ -231,7 +231,7 @@ Stable display name used as the generated Dart type prefix. gameModule: GameModule; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:49](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L49) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:49](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L49) Authoritative TypeScript rules registry. @@ -404,7 +404,7 @@ the host delivers them as a follow-up versioned ratings transition. ### EmitGameContractOptions -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:55](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L55) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:55](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L55) Inputs for emitting or checking a [GameContract](#gamecontract) file. @@ -420,7 +420,7 @@ Inputs for emitting or checking a [GameContract](#gamecontract) file. optional fixturesRoot?: any; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:51](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L51) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:51](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L51) Root containing `v/*.json` twin fixtures. @@ -434,7 +434,7 @@ Root containing `v/*.json` twin fixtures. game: string; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:47](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L47) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:47](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L47) Stable display name used as the generated Dart type prefix. @@ -448,7 +448,7 @@ Stable display name used as the generated Dart type prefix. gameModule: GameModule; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:49](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L49) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:49](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L49) Authoritative TypeScript rules registry. @@ -462,7 +462,7 @@ Authoritative TypeScript rules registry. output: any; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:57](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L57) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:57](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L57) Destination `game-contract.json` path. @@ -470,7 +470,7 @@ Destination `game-contract.json` path. ### GameContract -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:37](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L37) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:37](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L37) Language-neutral schemas and fixtures shared by a game's Worker and app. @@ -482,7 +482,7 @@ Language-neutral schemas and fixtures shared by a game's Worker and app. fixtures: GameContractFixture[]; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:41](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L41) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:41](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L41) ##### formatVersion @@ -490,7 +490,7 @@ Defined in: [eigen-server/packages/testkit/src/game-contract.ts:41](https://gith formatVersion: 1; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:38](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L38) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:38](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L38) ##### game @@ -498,7 +498,7 @@ Defined in: [eigen-server/packages/testkit/src/game-contract.ts:38](https://gith game: string; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:39](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L39) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:39](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L39) ##### versions @@ -506,13 +506,13 @@ Defined in: [eigen-server/packages/testkit/src/game-contract.ts:39](https://gith versions: Record; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:40](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L40) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:40](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L40) *** ### GameContractFixture -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:19](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L19) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:19](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L19) One validated twin-fixture document embedded in a [GameContract](#gamecontract). @@ -524,7 +524,7 @@ One validated twin-fixture document embedded in a [GameContract](#gamecontract). document: unknown; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:23](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L23) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:23](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L23) Validated fixture document, retained in its original JSON shape. @@ -534,7 +534,7 @@ Validated fixture document, retained in its original JSON shape. path: string; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:21](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L21) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:21](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L21) POSIX-style path relative to the supplied fixtures root. @@ -542,7 +542,7 @@ POSIX-style path relative to the supplied fixtures root. ### GameContractVersion -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:27](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L27) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:27](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L27) The four JSON Schemas emitted for one game `schemaVersion`. @@ -559,7 +559,7 @@ schemas: { }; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:28](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L28) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:28](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L28) ###### action @@ -701,7 +701,7 @@ Defined in: eigen-server/packages/kernel/dist/index.d.ts:116 ### RatingPoolCase -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:104](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L104) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:104](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L104) A `ratingPool` predicate case. Omitted timing fields mean null. @@ -713,7 +713,7 @@ A `ratingPool` predicate case. Omitted timing fields mean null. access: GameAccess; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:107](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L107) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:107](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L107) ##### budgetSeconds? @@ -721,7 +721,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:107](https://git optional budgetSeconds?: number | null; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:109](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L109) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:109](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L109) ##### config @@ -729,7 +729,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:109](https://git config: JsonObject; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:113](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L113) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:113](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L113) ##### expected @@ -737,7 +737,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:113](https://git expected: string | null; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:114](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L114) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:114](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L114) ##### incrementSeconds? @@ -745,7 +745,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:114](https://git optional incrementSeconds?: number | null; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:110](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L110) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:110](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L110) ##### kind @@ -753,7 +753,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:110](https://git kind: "ratingPool"; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:105](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L105) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:105](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L105) ##### maxPlayers @@ -761,7 +761,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:105](https://git maxPlayers: number; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:112](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L112) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:112](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L112) ##### minPlayers @@ -769,7 +769,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:112](https://git minPlayers: number; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:111](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L111) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:111](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L111) ##### name @@ -777,7 +777,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:111](https://git name: string; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:106](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L106) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:106](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L106) ##### turnSeconds? @@ -785,7 +785,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:106](https://git optional turnSeconds?: number | null; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:108](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L108) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:108](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L108) *** @@ -968,7 +968,7 @@ Defined in: eigen-server/packages/kernel/dist/index.d.ts:246 ### TwinFixtureFile -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:75](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L75) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:75](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L75) One fixture file: cases targeting one `schemaVersion` unit. @@ -980,7 +980,7 @@ One fixture file: cases targeting one `schemaVersion` unit. cases: TwinFixtureCase[]; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:77](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L77) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:77](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L77) ##### schemaVersion @@ -988,7 +988,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:77](https://gith schemaVersion: number; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:76](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L76) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:76](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L76) ## Type Aliases @@ -1186,7 +1186,7 @@ type TwinFixtureCase = | BotSeatableCase; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:126](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L126) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:126](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L126) ## Variables @@ -1196,7 +1196,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:126](https://git const GAME_CONTRACT_FORMAT_VERSION: 1 = 1; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:16](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L16) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:16](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L16) Current format of the language-neutral contract consumed by EigenInteractive's Dart generator. @@ -1208,7 +1208,7 @@ Current format of the language-neutral contract consumed by EigenInteractive's D function buildGameContract(options): GameContract; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:121](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L121) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:121](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L121) Build a deterministic in-memory contract without touching the filesystem. @@ -1230,7 +1230,7 @@ Build a deterministic in-memory contract without touching the filesystem. function checkConfiguredGameContract(root?): Promise; ``` -Defined in: [eigen-server/packages/testkit/src/contract-command.ts:76](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/contract-command.ts#L76) +Defined in: [eigen-server/packages/testkit/src/contract-command.ts:76](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/contract-command.ts#L76) Fails when the conventionally configured contract is absent or stale. @@ -1254,7 +1254,7 @@ Use this in CI through `eigen-contract --check`. function checkGameContract(options): void; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:165](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L165) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:165](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L165) Fail when an emitted contract is missing or differs from its inputs. @@ -1296,7 +1296,7 @@ Defined in: eigen-server/packages/kernel/dist/index.d.ts:372 function deepEquals(a, b): boolean; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:480](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L480) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:480](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L480) Structural JSON equality. Object keys with `undefined` values count as absent (matching how schema libraries model optional fields); array order @@ -1349,7 +1349,7 @@ derivation is fixed, so recorded games stay replayable. function emitConfiguredGameContract(root?): Promise; ``` -Defined in: [eigen-server/packages/testkit/src/contract-command.ts:67](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/contract-command.ts#L67) +Defined in: [eigen-server/packages/testkit/src/contract-command.ts:67](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/contract-command.ts#L67) Emits `game-contract.json` from an EigenInteractive package's conventional layout. @@ -1374,7 +1374,7 @@ games should invoke the executable through their package script. function emitGameContract(options): void; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:159](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L159) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:159](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L159) Emit one deterministic, newline-terminated `game-contract.json`. @@ -1396,7 +1396,7 @@ Emit one deterministic, newline-terminated `game-contract.json`. function evaluateTwinCase(rules, kase): string[]; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:274](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L274) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:274](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L274) Run one fixture case against a rules unit, returning failure descriptions (empty ⇒ the case passes). Pure; the file-reading test registrar is @@ -1421,7 +1421,7 @@ Run one fixture case against a rules unit, returning failure descriptions function gameContractFilename(game): string; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:173](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L173) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:173](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L173) A useful default filename for scripts that accept an output directory. @@ -1443,7 +1443,7 @@ A useful default filename for scripts that accept an output directory. function gameContractJson(options): string; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:154](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L154) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:154](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L154) Render one deterministic, newline-terminated contract document. @@ -1487,7 +1487,7 @@ Type guard: did `commit()` refuse the intent? function parseTwinFixtureFile(path, json): TwinFixtureFile; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:247](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L247) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:247](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L247) Validate one fixture file's parsed JSON, or throw naming the offending file, case, and field. Exported so a repo can lint its fixtures without @@ -1512,7 +1512,7 @@ running them. function projectView(rules, args): SeatView; ``` -Defined in: [eigen-server/packages/testkit/src/kernel-scenarios.ts:39](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/kernel-scenarios.ts#L39) +Defined in: [eigen-server/packages/testkit/src/kernel-scenarios.ts:39](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/kernel-scenarios.ts#L39) Project one seat's view of a state: the stored-frame shape the same-view rule compares (`commit()`'s `staleViews` input). Convenience for scenario @@ -1562,7 +1562,7 @@ never expose it: the whole randomness of the game is derivable from it). function twinFixtureTests(gameModule, fixturesRoot): void; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:290](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L290) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:290](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L290) Register one vitest test per fixture case found under `fixturesRoot` (layout: `/v/*.json`). Call at the top level of a test module diff --git a/static/openapi.json b/static/openapi.json index f31b2c1..742c02b 100644 --- a/static/openapi.json +++ b/static/openapi.json @@ -420,6 +420,178 @@ "games" ] }, + "Session": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "session" + ] + }, + "seq": { + "type": "integer" + }, + "gameId": { + "type": "string" + }, + "shortCode": { + "type": "string" + }, + "access": { + "$ref": "#/components/schemas/GameAccess" + }, + "schemaVersion": { + "type": "integer" + }, + "config": { + "type": "object" + }, + "turnSeconds": { + "type": [ + "integer", + "null" + ] + }, + "budgetSeconds": { + "type": [ + "integer", + "null" + ] + }, + "incrementSeconds": { + "type": [ + "integer", + "null" + ] + }, + "rated": { + "type": "boolean" + }, + "ratingPool": { + "type": [ + "string", + "null" + ] + }, + "minPlayers": { + "type": "integer" + }, + "maxPlayers": { + "type": "integer" + }, + "createdBy": { + "type": [ + "string", + "null" + ] + }, + "status": { + "$ref": "#/components/schemas/GameStatus" + }, + "players": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Seat" + } + }, + "version": { + "type": [ + "integer", + "null" + ] + }, + "frame": { + "anyOf": [ + { + "$ref": "#/components/schemas/Frame" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "type", + "seq", + "gameId", + "shortCode", + "access", + "schemaVersion", + "config", + "turnSeconds", + "budgetSeconds", + "incrementSeconds", + "rated", + "ratingPool", + "minPlayers", + "maxPlayers", + "createdBy", + "status", + "players", + "version", + "frame" + ] + }, + "Frame": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "frame" + ] + }, + "version": { + "type": "integer" + }, + "data": { + "type": "object" + }, + "pendingPlayers": { + "type": "array", + "items": { + "type": "integer" + } + }, + "deadline": { + "type": [ + "integer", + "null" + ] + }, + "playerTimes": { + "type": [ + "array", + "null" + ], + "items": { + "type": "integer" + } + }, + "outcomes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Outcome" + } + }, + "ratings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RatingDelta" + } + } + }, + "required": [ + "type", + "version", + "data", + "pendingPlayers", + "deadline", + "playerTimes" + ] + }, "Players": { "type": "object", "properties": { @@ -715,85 +887,12 @@ "SoloStarted": { "type": "object", "properties": { - "gameId": { - "type": "string" - }, - "shortCode": { - "type": "string" - }, - "version": { - "type": "integer" - }, - "frame": { - "$ref": "#/components/schemas/Frame" + "session": { + "$ref": "#/components/schemas/Session" } }, "required": [ - "gameId", - "shortCode", - "version", - "frame" - ] - }, - "Frame": { - "type": [ - "object", - "null" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "frame" - ] - }, - "version": { - "type": "integer" - }, - "data": { - "type": "object" - }, - "pendingPlayers": { - "type": "array", - "items": { - "type": "integer" - } - }, - "deadline": { - "type": [ - "integer", - "null" - ] - }, - "playerTimes": { - "type": [ - "array", - "null" - ], - "items": { - "type": "integer" - } - }, - "outcomes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Outcome" - } - }, - "ratings": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RatingDelta" - } - } - }, - "required": [ - "type", - "version", - "data", - "pendingPlayers", - "deadline", - "playerTimes" + "session" ] }, "CreateSolo": { @@ -856,44 +955,15 @@ "botIds" ] }, - "Joined": { - "type": "object", - "properties": { - "gameId": { - "type": "string" - }, - "roster": { - "$ref": "#/components/schemas/Roster" - } - }, - "required": [ - "gameId", - "roster" - ] - }, - "Roster": { + "CommandAccepted": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "roster" - ] - }, - "status": { - "$ref": "#/components/schemas/GameStatus" - }, - "players": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Seat" - } + "session": { + "$ref": "#/components/schemas/Session" } }, "required": [ - "type", - "status", - "players" + "session" ] }, "Join": { @@ -931,17 +1001,6 @@ } ] }, - "LobbyAccepted": { - "type": "object", - "properties": { - "roster": { - "$ref": "#/components/schemas/Roster" - } - }, - "required": [ - "roster" - ] - }, "LobbyCommand": { "type": "object", "properties": { @@ -968,21 +1027,6 @@ "botId" ] }, - "CommandAccepted": { - "type": "object", - "properties": { - "version": { - "type": "integer" - }, - "frame": { - "$ref": "#/components/schemas/Frame" - } - }, - "required": [ - "version", - "frame" - ] - }, "Action": { "type": "object", "properties": { @@ -1573,6 +1617,77 @@ } } }, + "/api/engine/games/{gameId}/session": { + "get": { + "operationId": "getGameSession", + "tags": [ + "Games" + ], + "parameters": [ + { + "schema": { + "type": "string", + "minLength": 1 + }, + "required": true, + "name": "gameId", + "in": "path" + } + ], + "responses": { + "200": { + "description": "The caller's current session snapshot", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Session" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "401": { + "description": "Missing or invalid token", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "Not allowed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, "/api/engine/players": { "get": { "operationId": "getPlayers", @@ -2309,11 +2424,11 @@ }, "responses": { "200": { - "description": "Seated: the game's id and the post-join roster", + "description": "Seated: the post-join session", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Joined" + "$ref": "#/components/schemas/CommandAccepted" } } } @@ -2399,11 +2514,11 @@ }, "responses": { "200": { - "description": "Seated: the game's id and the post-join roster", + "description": "Seated: the post-join session", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Joined" + "$ref": "#/components/schemas/CommandAccepted" } } } @@ -2500,11 +2615,11 @@ }, "responses": { "200": { - "description": "Left: the post-leave roster", + "description": "Left: the post-leave session", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LobbyAccepted" + "$ref": "#/components/schemas/CommandAccepted" } } } @@ -2605,7 +2720,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LobbyAccepted" + "$ref": "#/components/schemas/CommandAccepted" } } } @@ -2702,11 +2817,11 @@ }, "responses": { "200": { - "description": "Bot seated: the new roster", + "description": "Bot seated: the post-commit session", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LobbyAccepted" + "$ref": "#/components/schemas/CommandAccepted" } } } @@ -2803,7 +2918,7 @@ }, "responses": { "200": { - "description": "Started: version 0 committed", + "description": "Started: the session at version 0", "content": { "application/json": { "schema": { @@ -2904,7 +3019,7 @@ }, "responses": { "200": { - "description": "Committed: the acting seat's frame", + "description": "Committed: the acting seat's session", "content": { "application/json": { "schema": { From 37a7a565d882c0215d1e1b52dd6d8da6a2ac6887 Mon Sep 17 00:00:00 2001 From: Seenu K Date: Wed, 12 Aug 2026 00:56:20 +0530 Subject: [PATCH 7/8] Update transport docs --- docs/how-it-works/transport.md | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/docs/how-it-works/transport.md b/docs/how-it-works/transport.md index eeb2542..0c6370b 100644 --- a/docs/how-it-works/transport.md +++ b/docs/how-it-works/transport.md @@ -135,11 +135,32 @@ with no socket at all. :::note[Commands are HTTP, deliberately] -The socket is one-way. A command's outcome is an HTTP status, not something to -correlate against a later broadcast, which is what keeps "the server said no" -distinguishable from "the outcome is unknown". External bots post the same -command shape to `/bot/action` with no socket at all, and `createGame`, -`createSolo` and `joinByCode` all run before a client has one. +The socket is one-way, and sending moves over it was considered and rejected. +Four reasons, none of which is "a socket cannot do it": + +- **There is no latency to win.** A WebSocket to a Durable Object is established + through the client's nearest colo and proxied to the object's colo; an HTTP + command lands at the same colo and is proxied to the same object. Same two + hops. What a socket send saves is one token verification and one Worker + invocation, at a cadence of one move every few seconds. +- **Bots have no socket.** An external bot posts to `/bot/action` with an HMAC + signature, and the Worker mints the *same* command a human's move mints, with + the same `expectedVersion` and the same seat verification. That is why there is + one action path rather than two. +- **Some commands precede any socket.** `createGame` runs before the Durable + Object exists, `createSolo` starts a game that never had one, and + `joinByCode` is how a client learns the id it would need to open one. +- **Auth stays fresh.** Every command presents a current ID token, verified per + request, so expiry and revocation take effect on the next command. A socket's + principal is resolved once at upgrade and outlives that token. + +It also keeps a command's outcome unambiguous: it is an HTTP status, not +something to correlate against a later broadcast, which is what keeps "the server +said no" distinguishable from "the outcome is unknown". + +If a game ever needs input faster than about one message per second per seat, or +continuous input such as dragging, this is worth reopening. It would be additive: +the socket already carries the authoritative session. ::: From 43b3db47e21bc4b0ccd3a669593053eb61f5e9cd Mon Sep 17 00:00:00 2001 From: Seenu K Date: Wed, 12 Aug 2026 01:42:11 +0530 Subject: [PATCH 8/8] Leave the generated reference to the sync pull request The generated TypeScript and HTTP reference was regenerated locally while the prose was being written, which is what the "Generated reference is not hand-edited" gate exists to catch. It is not a false positive: the local run built TypeDoc permalinks from a working checkout, so the output describes an engine SHA rather than the published release, and it landed here through a pull request nobody would review a TypeDoc diff on. Reverted to the base commit's reference. The real refresh is already open as the sync pull request, generated from eigen-server@main after it published, so this branch carries only authored prose. The prose therefore describes GET /games/{id}/session one merge before the generated page for it exists. Nothing links to that page directly, so the build is clean; the reference catches up when the sync lands. Co-Authored-By: Claude Opus 5 --- api/openapi.json | 407 ++++++--------- .../http-api/add-bot.StatusCodes.json | 2 +- docs/reference/http-api/add-bot.api.mdx | 2 +- .../http-api/cancel-game.StatusCodes.json | 2 +- docs/reference/http-api/cancel-game.api.mdx | 2 +- .../create-solo-game.StatusCodes.json | 2 +- .../http-api/create-solo-game.api.mdx | 2 +- .../http-api/forfeit-game.StatusCodes.json | 2 +- docs/reference/http-api/forfeit-game.api.mdx | 2 +- .../http-api/get-frames.StatusCodes.json | 2 +- docs/reference/http-api/get-frames.api.mdx | 2 +- .../get-game-session.ParamsDetails.json | 1 - .../get-game-session.RequestSchema.json | 1 - .../get-game-session.StatusCodes.json | 1 - .../http-api/get-game-session.api.mdx | 69 --- .../join-game-by-code.StatusCodes.json | 2 +- .../http-api/join-game-by-code.api.mdx | 2 +- .../http-api/join-game.StatusCodes.json | 2 +- docs/reference/http-api/join-game.api.mdx | 2 +- .../http-api/leave-game.StatusCodes.json | 2 +- docs/reference/http-api/leave-game.api.mdx | 2 +- docs/reference/http-api/sidebar.ts | 6 - .../http-api/start-game.StatusCodes.json | 2 +- docs/reference/http-api/start-game.api.mdx | 2 +- .../http-api/submit-action.StatusCodes.json | 2 +- docs/reference/http-api/submit-action.api.mdx | 2 +- docs/reference/typescript/kernel.md | 196 +++---- docs/reference/typescript/rules.md | 178 +++---- docs/reference/typescript/server-testing.md | 24 +- docs/reference/typescript/server.md | 479 ++++++------------ docs/reference/typescript/testkit.md | 130 ++--- static/openapi.json | 407 ++++++--------- 32 files changed, 723 insertions(+), 1216 deletions(-) delete mode 100644 docs/reference/http-api/get-game-session.ParamsDetails.json delete mode 100644 docs/reference/http-api/get-game-session.RequestSchema.json delete mode 100644 docs/reference/http-api/get-game-session.StatusCodes.json delete mode 100644 docs/reference/http-api/get-game-session.api.mdx diff --git a/api/openapi.json b/api/openapi.json index 742c02b..f31b2c1 100644 --- a/api/openapi.json +++ b/api/openapi.json @@ -420,178 +420,6 @@ "games" ] }, - "Session": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "session" - ] - }, - "seq": { - "type": "integer" - }, - "gameId": { - "type": "string" - }, - "shortCode": { - "type": "string" - }, - "access": { - "$ref": "#/components/schemas/GameAccess" - }, - "schemaVersion": { - "type": "integer" - }, - "config": { - "type": "object" - }, - "turnSeconds": { - "type": [ - "integer", - "null" - ] - }, - "budgetSeconds": { - "type": [ - "integer", - "null" - ] - }, - "incrementSeconds": { - "type": [ - "integer", - "null" - ] - }, - "rated": { - "type": "boolean" - }, - "ratingPool": { - "type": [ - "string", - "null" - ] - }, - "minPlayers": { - "type": "integer" - }, - "maxPlayers": { - "type": "integer" - }, - "createdBy": { - "type": [ - "string", - "null" - ] - }, - "status": { - "$ref": "#/components/schemas/GameStatus" - }, - "players": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Seat" - } - }, - "version": { - "type": [ - "integer", - "null" - ] - }, - "frame": { - "anyOf": [ - { - "$ref": "#/components/schemas/Frame" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "type", - "seq", - "gameId", - "shortCode", - "access", - "schemaVersion", - "config", - "turnSeconds", - "budgetSeconds", - "incrementSeconds", - "rated", - "ratingPool", - "minPlayers", - "maxPlayers", - "createdBy", - "status", - "players", - "version", - "frame" - ] - }, - "Frame": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "frame" - ] - }, - "version": { - "type": "integer" - }, - "data": { - "type": "object" - }, - "pendingPlayers": { - "type": "array", - "items": { - "type": "integer" - } - }, - "deadline": { - "type": [ - "integer", - "null" - ] - }, - "playerTimes": { - "type": [ - "array", - "null" - ], - "items": { - "type": "integer" - } - }, - "outcomes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Outcome" - } - }, - "ratings": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RatingDelta" - } - } - }, - "required": [ - "type", - "version", - "data", - "pendingPlayers", - "deadline", - "playerTimes" - ] - }, "Players": { "type": "object", "properties": { @@ -887,12 +715,85 @@ "SoloStarted": { "type": "object", "properties": { - "session": { - "$ref": "#/components/schemas/Session" + "gameId": { + "type": "string" + }, + "shortCode": { + "type": "string" + }, + "version": { + "type": "integer" + }, + "frame": { + "$ref": "#/components/schemas/Frame" } }, "required": [ - "session" + "gameId", + "shortCode", + "version", + "frame" + ] + }, + "Frame": { + "type": [ + "object", + "null" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "frame" + ] + }, + "version": { + "type": "integer" + }, + "data": { + "type": "object" + }, + "pendingPlayers": { + "type": "array", + "items": { + "type": "integer" + } + }, + "deadline": { + "type": [ + "integer", + "null" + ] + }, + "playerTimes": { + "type": [ + "array", + "null" + ], + "items": { + "type": "integer" + } + }, + "outcomes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Outcome" + } + }, + "ratings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RatingDelta" + } + } + }, + "required": [ + "type", + "version", + "data", + "pendingPlayers", + "deadline", + "playerTimes" ] }, "CreateSolo": { @@ -955,15 +856,44 @@ "botIds" ] }, - "CommandAccepted": { + "Joined": { + "type": "object", + "properties": { + "gameId": { + "type": "string" + }, + "roster": { + "$ref": "#/components/schemas/Roster" + } + }, + "required": [ + "gameId", + "roster" + ] + }, + "Roster": { "type": "object", "properties": { - "session": { - "$ref": "#/components/schemas/Session" + "type": { + "type": "string", + "enum": [ + "roster" + ] + }, + "status": { + "$ref": "#/components/schemas/GameStatus" + }, + "players": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Seat" + } } }, "required": [ - "session" + "type", + "status", + "players" ] }, "Join": { @@ -1001,6 +931,17 @@ } ] }, + "LobbyAccepted": { + "type": "object", + "properties": { + "roster": { + "$ref": "#/components/schemas/Roster" + } + }, + "required": [ + "roster" + ] + }, "LobbyCommand": { "type": "object", "properties": { @@ -1027,6 +968,21 @@ "botId" ] }, + "CommandAccepted": { + "type": "object", + "properties": { + "version": { + "type": "integer" + }, + "frame": { + "$ref": "#/components/schemas/Frame" + } + }, + "required": [ + "version", + "frame" + ] + }, "Action": { "type": "object", "properties": { @@ -1617,77 +1573,6 @@ } } }, - "/api/engine/games/{gameId}/session": { - "get": { - "operationId": "getGameSession", - "tags": [ - "Games" - ], - "parameters": [ - { - "schema": { - "type": "string", - "minLength": 1 - }, - "required": true, - "name": "gameId", - "in": "path" - } - ], - "responses": { - "200": { - "description": "The caller's current session snapshot", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Session" - } - } - } - }, - "400": { - "description": "Invalid request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Missing or invalid token", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Not allowed", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "404": { - "description": "Not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, "/api/engine/players": { "get": { "operationId": "getPlayers", @@ -2424,11 +2309,11 @@ }, "responses": { "200": { - "description": "Seated: the post-join session", + "description": "Seated: the game's id and the post-join roster", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CommandAccepted" + "$ref": "#/components/schemas/Joined" } } } @@ -2514,11 +2399,11 @@ }, "responses": { "200": { - "description": "Seated: the post-join session", + "description": "Seated: the game's id and the post-join roster", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CommandAccepted" + "$ref": "#/components/schemas/Joined" } } } @@ -2615,11 +2500,11 @@ }, "responses": { "200": { - "description": "Left: the post-leave session", + "description": "Left: the post-leave roster", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CommandAccepted" + "$ref": "#/components/schemas/LobbyAccepted" } } } @@ -2720,7 +2605,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CommandAccepted" + "$ref": "#/components/schemas/LobbyAccepted" } } } @@ -2817,11 +2702,11 @@ }, "responses": { "200": { - "description": "Bot seated: the post-commit session", + "description": "Bot seated: the new roster", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CommandAccepted" + "$ref": "#/components/schemas/LobbyAccepted" } } } @@ -2918,7 +2803,7 @@ }, "responses": { "200": { - "description": "Started: the session at version 0", + "description": "Started: version 0 committed", "content": { "application/json": { "schema": { @@ -3019,7 +2904,7 @@ }, "responses": { "200": { - "description": "Committed: the acting seat's session", + "description": "Committed: the acting seat's frame", "content": { "application/json": { "schema": { diff --git a/docs/reference/http-api/add-bot.StatusCodes.json b/docs/reference/http-api/add-bot.StatusCodes.json index 5529b76..2d8d449 100644 --- a/docs/reference/http-api/add-bot.StatusCodes.json +++ b/docs/reference/http-api/add-bot.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"Bot seated: the post-commit session","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"Bot seated: the new roster","content":{"application/json":{"schema":{"type":"object","properties":{"roster":{"type":"object","properties":{"type":{"type":"string","enum":["roster"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}}},"required":["type","status","players"],"title":"Roster"}},"required":["roster"],"title":"LobbyAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/add-bot.api.mdx b/docs/reference/http-api/add-bot.api.mdx index 06438ea..f346cd2 100644 --- a/docs/reference/http-api/add-bot.api.mdx +++ b/docs/reference/http-api/add-bot.api.mdx @@ -5,7 +5,7 @@ description: "addBot" sidebar_label: "addBot" hide_title: true hide_table_of_contents: true -api: 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 +api: eJztmV9v2zYQwL8KwZclg2K3WTdsatfBydLWXdoGcYo+BEZ9ls4SG4lUyZMdzfB3H46UHMfO2pciT85LLPJ4vD+/OzmXpTQVWiBl9DCVsYQ0PTEkI0mQORlfy9dQopPjSFZgoURCy8tL6ZIcS5DxUlJToYylI6t0JiNZKn2OOqNcxk9XkbT4tVYWUxmTrTGSGkoWz6DEYSojqbSMZQWUy9U4SKOjE5M2rHv7cGI0oSbegqoqVOIt739xRvPajlFm+gUTdqey7CcpdLw7NcTebtu+4gvKEnT60O59zyJZwu366fj31T1Xr9srxpEkRQVrGYTIrlZB0lVGu2DN8ZMn/CtFl1hVsUMylieGhEMgTGNBOQqNC2GNI7Tyh4Wh1fddubC7Gw/Udcm+tnrGq0g6Aqrdt4QXoCisWIS0kZGEhNQcZSRnSiuXI1MBU2MJ7wWQSRwF9atIVgU0nsX1TWAtsDpFWLrvOxUUDHWKtxvCShNmaPmG2qHd5OD6zhddF4V3dwukh0S+F7y8LkFLr0qOtynaNHJtUXdtq3sjRCMET9h9JV5qnZq70G0cvAwZ3D7ZJfZO8NxMp80gSbDi7ASYnz3E71DPoVCpaAv6x0GL1hr7P7WbfjPS2tCgQ00bumzxw9vK++sXL1Cn4RSHCz9WKZegb1PenwtoCgN+oSgwg+Kd8fpqfaPNQjOjQdFbozRMC37iVveKcYgkFB563lzfCJZUoirQFBZOLQIZX+bh0ylobegcwd8U4vRRu7qqQo0EMLivtkHfWLmCG2S6ZlahTt0HXTS+8jLlKLT9yy7fkVQlZHhlzDnYLDi1vmTotwJIFgjPVana+ryf94FwxH6LEpJcaRScFaFS1KRmjdKZWOSNgI4LMQNVYNqTd4idcYJPOZfbOIbUj7dEL9teuqbx6S6N75RzfLexok2kIBMis8dyj+WjYPnLLpbvDQkoCrPwfu5J3JP4KCQ+e5jEman1nsM9h4/G4R+7HPIXfDZFzwqV0HNh0TU6EaD5myTZZo/nHs9HwvP4eBfPgXNMkNGiVK4ESvI9kHsgHwPI1bY960ldiZQbnt1Vxv+d7WdpsexDpfqoM6Wxz4ly/WWYua36kKZHU3/WYVJbRY0f6c2UxSk4nmOMeRbXbY44MYHRO5E1jTlR1WWPn6cI1g+pwodXxpZAMpZvP13J3Zi+ahWK4d/hL7JIONQkwInJoKbcWPWvz2YsTrw+8cKLvZyIA2PF5C//9OdEGC0+4XRkkhskUVeZhRTdYU+GIc2bEpLNUVGl/sGmGz7mCKm3uB1NnqkM9dFIZRqotrhrtRZ4S4xhIaaGfnLizbvBqXDdAWHmaP3QDm8hoTURU5M2kZjytyxBxgtMePZl9ESkpgSleyLEWkzmT6MXHJffnr2cPPeiFVpOmrjBRignJnznwcmHq8+j4ev3w/evP4/OTi/PrvgCGqaHk564Ygs8AN42JxZwg04sFOVeo4MSRXBeKO2XDOVoRaosert6nlRuZJd3c9mzWyirAjfmqHcdaWN8utG/lJ4ZH/2Obg7wUBPaMPoTZ8HKwcVQRnKO1oVAP+kd937dCT+75dDO0R5BIITAa2G8O4cHF8OeOC0Us2RNTejEwWSzJH6eHIq2BAXsYvi8zV9Isw/8Aqe5MTednqmhfpu9Q04I58MbxA0h4ebq4eOi5AFfvOzwgjQVoXLv+bWGk/CW+lUBSvsppC38tNIX9TWT6xs/+9B2YB7pxetxelfb40jm3A/ia7lcsmsfbbFa8fLXGi0X/DiSc7DK93Iu/1Q5/pzKeAaFwx3z1q85edC11kPRDSG3ze4KTXOVzaGo+UlG8gabu+H/iuejbfWxBWHzNNxz1Dbl7vDOq3UVdSfCPPKbsuONPnnxYXTlh6jhfwylf7tKCwv/ClgEQ433O4zJeW0pC9BZDRnLBp388x86msyZ sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/cancel-game.StatusCodes.json b/docs/reference/http-api/cancel-game.StatusCodes.json index 48080fe..713aed8 100644 --- a/docs/reference/http-api/cancel-game.StatusCodes.json +++ b/docs/reference/http-api/cancel-game.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"Cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"Cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"roster":{"type":"object","properties":{"type":{"type":"string","enum":["roster"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}}},"required":["type","status","players"],"title":"Roster"}},"required":["roster"],"title":"LobbyAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/cancel-game.api.mdx b/docs/reference/http-api/cancel-game.api.mdx index 60fa02b..d2f8088 100644 --- a/docs/reference/http-api/cancel-game.api.mdx +++ b/docs/reference/http-api/cancel-game.api.mdx @@ -5,7 +5,7 @@ description: "cancelGame" sidebar_label: "cancelGame" hide_title: true hide_table_of_contents: true -api: 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 +api: eJztmV9v2zYQwL8KwZclg2K3WTdsbtfB9dLWXdoGcYo+BEZ9ls4SF4lUyZMdzdB3H46UHMcukpeiT85LLPJ4vD+/OzmXtTQlWiBl9DiRAxmDjjF/AwXKSBKkTg6uJT86OY1kCRYKJLS8vJYuzrAAOVhLqkuUA+nIKp3KSBZKn6NOKZODp00kLX6tlMVEDshWGEnN+gcyhQLHiYyk0nIgS6BMNtMgjY5emaRm3buHY6MJNfEWlGWuYm99/19nNK/tGWXm/2JMMpKlZV9JoePd2BQF6IS9ftj+SBZwu3k6/b1pIkmKcj5wbubzehQ0yaZpvK+uNNqFS06fPOFfCbrYqpLtlAM58jHOkT3/Ts5Y4wjt43Jhd99f1FXBmW71TJtIOgKq3EPCK1AUVixCUstIQkxqyeQslFYu8x7C3FjChPHposY8TYL6JpJlDrUnanMTWAusThEW7nGngoKxTvB2S1hpwhQt31A5tNt5vr7zRVd57t2dG3pM5LHgZVUBWnpVctrcw/76npEbi7prW91bIZogkGx2lXipTWruQrd18DJkcPdkl9gddIdxjCVnJ7D77Fu4jvUScpWItiy/H7RorbH7AW34guTBSGtDww41beiyxQ9vS++vX7xAnYRTHC78VCZAGJqN9+cC6tyAX8hzTCF/b7y+St9os9JtC9SG3hmlYZ7zEzes14xDJCH30PPm5kawpGJVgqawMLIIZCxHLHwagdaGzhH8TSFOn7SryjLUSACDu2Mb9K2VK7hBpmthFerEfdR57SsvVY5CA7/s8h1JVUCKV8acg02DU5tLxn4rgGSB8FwVqq3P+3kfCkfstyggzpRGwVkRKkFNalErnYpVVgvouBALUDkmPXmH2BkneMS53MUxpH66I3rZts4NjU/3aXyvnOO7jRVtIgWZEJkDlgcsfwiWv+xj+cGQgDw3q+/5Vj+QeCDxYRKffZvEhan0gcMDhz+Mwz/2OeQv+GyKXuQqpufCoqt1LEDzN0my9QHPA54/CM/T0308h84xQUaLQrkCKM4OQB6A/BFANrv23Ju5FUiZ4Ulcafzf2n4qNpB9KFUfdao09jlZrr8O07OmH45z2DGurKLaz+YWyuIcHI8ypjxU6zYnnJuA6Z3IBsiMqOwSyM9zBIuc5/DhtbEFkBzId5+v5H5YX7cKxfjv8EdZJBxqEuDEbFhRZqz6zyd0IF55feKFF3s5E0fGitlf/unPmTBafMb5xMQ3SKIqUwsJuuOeDHOatwXE29OiUv2DdTdFzBASb3E7YzxTKeqTiUo1UGVx32ot8JaYxFzMDf3kxNv3w5Fw3QFhlmgFZSjwFmLaQDE3SR2JOX/REmS8wIzHX0bPRGIKULonQqzFbPk0esFx+e3Zy9lzL1qiPZkbEjdYC+XEjO88evXx6stk/ObD+MObL5Oz0eXZFV9A4+R41hNXbIHPv7fNiRXcoBMrRZnX6KBAEZwXSvslQxlakSiL3q6eh5V72eXdgPXsFooyx52B6FbHUnphfLA7njmeY01ow7BPnAWjhhdjGcklWhfi+qR32vt1L9rshUO7RHsCAQgCr4Vh7vwbXox7YpQrRseaitCJo9l2Afw8OxZt0QnYp+55m66QVR/nFc4zY246PXND/TZZxxx/Dr83iFtAzO3Us8YlyCO9wbqjKdSaaGv1nm8bHglvqV/moLSfPdrczyh9GV8zrL7dsx9t3+VB3mAzCm+reRrJjBvA4Fqu1+zdJ5s3DS9/rdByiU8juQSrfAPngk+U48+JHCwgd7hn3ebdJo+6fnosusnjrtVdaWmuqyXkFT/JSN5gfTe3b3go2tYbWxA2R+Gek7YTd4f33qdN1J0IQ8gHZadbjfHi4+TKT07DvwcK/0qVFla+76+Cocb7HWbjvLaWOei0gpRlg07++R/K/rhL sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/create-solo-game.StatusCodes.json b/docs/reference/http-api/create-solo-game.StatusCodes.json index 073cbef..c8bcfe5 100644 --- a/docs/reference/http-api/create-solo-game.StatusCodes.json +++ b/docs/reference/http-api/create-solo-game.StatusCodes.json @@ -1 +1 @@ -{"responses":{"201":{"description":"The created-and-started solo game","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"SoloStarted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"201":{"description":"The created-and-started solo game","content":{"application/json":{"schema":{"type":"object","properties":{"gameId":{"type":"string"},"shortCode":{"type":"string"},"version":{"type":"integer"},"frame":{"type":["object","null"],"properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"}},"required":["gameId","shortCode","version","frame"],"title":"SoloStarted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/create-solo-game.api.mdx b/docs/reference/http-api/create-solo-game.api.mdx index 7c0ab71..83dd16f 100644 --- a/docs/reference/http-api/create-solo-game.api.mdx +++ b/docs/reference/http-api/create-solo-game.api.mdx @@ -5,7 +5,7 @@ description: "createSoloGame" sidebar_label: "createSoloGame" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/forfeit-game.StatusCodes.json b/docs/reference/http-api/forfeit-game.StatusCodes.json index cea0106..da46222 100644 --- a/docs/reference/http-api/forfeit-game.StatusCodes.json +++ b/docs/reference/http-api/forfeit-game.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"Forfeit committed","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"Forfeit committed","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer"},"frame":{"type":["object","null"],"properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"}},"required":["version","frame"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/forfeit-game.api.mdx b/docs/reference/http-api/forfeit-game.api.mdx index 814d1ee..da6b31c 100644 --- a/docs/reference/http-api/forfeit-game.api.mdx +++ b/docs/reference/http-api/forfeit-game.api.mdx @@ -5,7 +5,7 @@ description: "forfeitGame" sidebar_label: "forfeitGame" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/get-frames.StatusCodes.json b/docs/reference/http-api/get-frames.StatusCodes.json index adfe4bd..ca48d43 100644 --- a/docs/reference/http-api/get-frames.StatusCodes.json +++ b/docs/reference/http-api/get-frames.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"The projected frames, version-ascending","content":{"application/json":{"schema":{"type":"object","properties":{"frames":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"}}},"required":["frames"],"title":"Frames"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"The projected frames, version-ascending","content":{"application/json":{"schema":{"type":"object","properties":{"frames":{"type":"array","items":{"type":["object","null"],"properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"}}},"required":["frames"],"title":"Frames"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/get-frames.api.mdx b/docs/reference/http-api/get-frames.api.mdx index 2acbd27..d832682 100644 --- a/docs/reference/http-api/get-frames.api.mdx +++ b/docs/reference/http-api/get-frames.api.mdx @@ -5,7 +5,7 @@ description: "getFrames" sidebar_label: "getFrames" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "get api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/get-game-session.ParamsDetails.json b/docs/reference/http-api/get-game-session.ParamsDetails.json deleted file mode 100644 index 5c4016a..0000000 --- a/docs/reference/http-api/get-game-session.ParamsDetails.json +++ /dev/null @@ -1 +0,0 @@ -{"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"gameId","in":"path"}]} \ No newline at end of file diff --git a/docs/reference/http-api/get-game-session.RequestSchema.json b/docs/reference/http-api/get-game-session.RequestSchema.json deleted file mode 100644 index c96bced..0000000 --- a/docs/reference/http-api/get-game-session.RequestSchema.json +++ /dev/null @@ -1 +0,0 @@ -{"title":"Body"} \ No newline at end of file diff --git a/docs/reference/http-api/get-game-session.StatusCodes.json b/docs/reference/http-api/get-game-session.StatusCodes.json deleted file mode 100644 index 5d20ab9..0000000 --- a/docs/reference/http-api/get-game-session.StatusCodes.json +++ /dev/null @@ -1 +0,0 @@ -{"responses":{"200":{"description":"The caller's current session snapshot","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/get-game-session.api.mdx b/docs/reference/http-api/get-game-session.api.mdx deleted file mode 100644 index e576e9b..0000000 --- a/docs/reference/http-api/get-game-session.api.mdx +++ /dev/null @@ -1,69 +0,0 @@ ---- -id: get-game-session -title: "getGameSession" -description: "getGameSession" -sidebar_label: "getGameSession" -hide_title: true -hide_table_of_contents: true -api: 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 -sidebar_class_name: "get api-method" -info_path: docs/reference/http-api/eigeninteractive-engine-api -custom_edit_url: null ---- - -import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; -import ParamsDetails from "@theme/ParamsDetails"; -import RequestSchema from "@theme/RequestSchema"; -import StatusCodes from "@theme/StatusCodes"; -import OperationTabs from "@theme/OperationTabs"; -import TabItem from "@theme/TabItem"; -import Heading from "@theme/Heading"; -import Translate from "@docusaurus/Translate"; - - - - - - - - - - -getGameSession - - - Request - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/reference/http-api/join-game-by-code.StatusCodes.json b/docs/reference/http-api/join-game-by-code.StatusCodes.json index 9273bb5..c4c4a2a 100644 --- a/docs/reference/http-api/join-game-by-code.StatusCodes.json +++ b/docs/reference/http-api/join-game-by-code.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"Seated: the post-join session","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"Seated: the game's id and the post-join roster","content":{"application/json":{"schema":{"type":"object","properties":{"gameId":{"type":"string"},"roster":{"type":"object","properties":{"type":{"type":"string","enum":["roster"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}}},"required":["type","status","players"],"title":"Roster"}},"required":["gameId","roster"],"title":"Joined"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/join-game-by-code.api.mdx b/docs/reference/http-api/join-game-by-code.api.mdx index 395aee4..7df0e73 100644 --- a/docs/reference/http-api/join-game-by-code.api.mdx +++ b/docs/reference/http-api/join-game-by-code.api.mdx @@ -5,7 +5,7 @@ description: "joinGameByCode" sidebar_label: "joinGameByCode" hide_title: true hide_table_of_contents: true -api: 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 +api: eJztmd1z2kYQwP+Vm3tJ3BHYcdNOS9J0MHUcWif2GNI8eJiwSIt0sXSn3K3Aqof/vbN3AmMg8XSm4yf8YnQf+/nblVnfSVOiBVJG9xPZkV+M0mdQ4EndMwnKSBKkTnauJS86OYqkxa8VOjoxSS07d/5RWUxkh2yFkYyNJtTEW1CWuYq97MMvzmhec3GGBfjdPL+Yys71naS6RNmRZvIFY5KRLC3bRAodn4tzhZoG/t7faJ0KgppLShOmaOWCNRcF6ITdWG07skqnMpKF0ueoU8pk50UkC7hdPR3/slhEa25c79Q4iiQpylnmn0ZpuYges9tlxpIP4iPmbKq/vzhabKhtsrJYhDuuNNoFbcdHR/wrQRdbVZIPkhwgECYdQRmKFAp85oRKBOjEr5TGUYvzLaxxhFb+h+R933XWtSsNbHRQ9aiIsLsdONRVwUFq5IwWkXQEVLnvHZ6DorBiEZJaRhJiUjPGe6q0chkmvDYxljBZTzVDPwjiF5Esc6jRrmsCa4HFKcLCPe5UENDXCd7uRrhyaNcDd33vi67y3Ls7MfTYkceCl1UFaOlFydEmfutGrixaqm1kr4WIGZOLTSH+1Co196Fbu3gVMrh5s2FnRcpGBWDS0P9yF/B9PYNcJaLpUf8f0WitsTuBjr9R4ctYa0PdJWza0FUDIN6W3mO/eIk6Cbc4YPixTLhumavgzyXUuQG/kOeYQv7eeHmVvtFm7vt1EMQRgknOTxzHtwxEJCH32DfhCxrBkopVCZrCQs8ikPE9IHzqgdaGzhG8phCnj9pVZRmqJKChOVvByLWVIdwg8zW1CnXiLnRe+9pLlaPwrrlaZjySqoAUh8acg02DUyslfb8VULJAeK4K1VTow7x3hSP2WxQQZ0qj4KwIlaAmNa2VTsU8qwUsuRBTUDkmbXnP1iknuGmuD4EMqR9tHL1qmu+KxhfbNL5XzrFuY0WTSEEmRGaP5R7LJ8Hyx20sPxgSkOdm7v3ck7gn8UlIfLmbxKmp9J7DPYdPxuGvO74ncTJFbPQ0VzG9EhZdrWP/Rcki2XqP5x7PJ8Lz+Hgbz65zTJDRolCuAIqzPZB7IJ8CyMWmPVvjwQIpMzw45GkS0wU805KHUKpD1KnSeMgJc4d8szWpW3G45zCurKLaDwCnyuIEHE8z/MhruelHcIHT+yMrIjOicplBfp4gWD/FCh/eGlsA8djg01Bux/VtI1D0/wjfyiLhUJMAJ8bdijJj1T8+ox1x4uWJ1/7Ym7F4bqwY/+6ffhsLo8UnnAxMfIMkqjK1kKA7aMswqnlXQLw+MCrVX+gnRmxFhpB4i5ktToBKUbcGKtVAlcVtq7XAW2IUczEx9MyJd++7PeGWF4SZofWzPbyFmFZUTExSR2LCf2kJMv7AmCdgRo9FYgpQui1CrMV49iJ6zXH5+eWb8aswJ0TbmhgSN1gL5cSYdT4/uRh+HvTPPvQ/nH0enPauToesgPrJwbgthmyBT763zYk53KATc0WZl+igQBGcF0r7JUMZWpEoi96utqeVm9nV/bj59BaKMsdvDoWPHsyA7zvW2iR2rb8pPTU+M0v6Ofh9TWjDcFCcBg+6l30ZydlSiTxqH7d/2koNu+zQztC2INBD4KUw/ctgdC/7bdHzpgtrKkInno/XS+WH8YFoSlTANqKvmtwGBHxS5jjJjLlZypkYOmwye8DJ4lx5g7hhxNx8PZhcrDwC7Nwt0fNzYK5scVKLprYfeLhCmPCWDssc/BBcVjb3k01f9tfMt39FsDdNr+bx34PiH0Uy42bRuZZ3d+zfR5svFrz8tULLHWEUyRlY5Rs+t4RoWSncLG6wlh3ZC6+/VtNEZ5BXob42XoU8pw83unGMJX337Gitn11eDIZ+7Bn+zVEEfCzMfcuey46UkTQ+OL5B+bU7mYNOK0h9SL1M/vkXYOPelA== sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/join-game.StatusCodes.json b/docs/reference/http-api/join-game.StatusCodes.json index 9273bb5..c4c4a2a 100644 --- a/docs/reference/http-api/join-game.StatusCodes.json +++ b/docs/reference/http-api/join-game.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"Seated: the post-join session","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"Seated: the game's id and the post-join roster","content":{"application/json":{"schema":{"type":"object","properties":{"gameId":{"type":"string"},"roster":{"type":"object","properties":{"type":{"type":"string","enum":["roster"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}}},"required":["type","status","players"],"title":"Roster"}},"required":["gameId","roster"],"title":"Joined"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/join-game.api.mdx b/docs/reference/http-api/join-game.api.mdx index c762f24..0ff07ff 100644 --- a/docs/reference/http-api/join-game.api.mdx +++ b/docs/reference/http-api/join-game.api.mdx @@ -5,7 +5,7 @@ description: "joinGame" sidebar_label: "joinGame" hide_title: true hide_table_of_contents: true -api: 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 +api: eJztmU1z2zYQhv8KBpfaHVpy3LTTKmk6iuskap3EYznNwaOJVuSKREwCDLCUxGr03zsLkLIsufYl45N8sQgCi/14sBRfLaUp0QIpoweJ7MmvRum3UKCMJEHqZO9a8qWTo0iWYKFAQsvDS+niDAuQvaWkukTZk46s0qmMZKH0OeqUMtl7toqkxW+VspjIHtkKI6nZfk+mUOAgkZFUWvZkCZTJ1SjMRkevTVKz7e3FsdGEmvgWlGWuYu9796szmsd2nDKTrxiTjGRpOVJS6PhunCvUNPSz/0HrVFjeLFKaMEUrV7xfUYBOODkPBxrJAhbrq5NfV3civ753x1EkSVHONv8ySsvVKqxypdEuOHpyfMz/EnSxVSV5P+UQgTDpCcpQcBp/cEIlAnTiR0rj6IgLKaxxhFZ+t6w1JdvJBDsdtnrURLi7m0rUVcFpauyMVpF0BFS5hybPQVEYsQhJLSMJMakZ0ztVWrkMmS+YGEuYbGabmR4G86tIljnUnur1TmAtsDlFWLjHgwoGBjrBxf0UVQ7tZuKub2PRVZ77cCeGHpvyWPKyqgAtvSk52gZw08m1R+22je2NFDFjcrVtxM9al+Y2dRsLL0MFt1euj3tb4bvsY9LQ//w+4Ad6BrlKRNMcvh/RaK2x9wIdm+TBXGtD/RY2beiyARAXpY/YD16gTsIqThh+KhM+t77l+XguoM4N+IE8xxTy98bbq/SNNvO2EWtDnCGY5HzFeXzDQEQSco99k76wI1hSsSpBUxg4tQhkfA8In05Ba0PnCH6nkKdP2lVlGU5JQIN7dJP0jZEruEHma2oV6sR91Hntz16qHIWHyGVb8UiqAlK8MuYcbBqCWm8y8LcCShYIz1WhmhN6t+594YjjFgXEmdIouCpCJahJTWulUzHPagEtF2IKKsekI2/ZOuMCn3Itt4EMpR9tTb1smu+axme7NL5XzvHexoqmkIJMyMweyz2WT4LlT7tYfjAkIM/N3Me5J3FP4pOQ+Px+Eqem0nsO9xw+GYe/3fOexMUUsdHTXMX0Qlh0tY79i5JFsvUezz2eT4Tnyckunn3nmCCjRaFcARRneyD3QD4FkKttfzZ0vwIpM6wFso7EXLEy15NdKFUXdao0drlUrrsMr/SrLi/mlGNcWUW1VwenyuIEHAsZI5b12pteAAuI3k5Zw5gRlW3x+HqCYL2AFT68MbYAYsXg85XcTembxqAY/BleyCLhUJMAJ8b9ijJj1b++mD3x2tsTL/20V2NxYKwY/+Gvfh8Lo8VnnAxNfIMkqjK1kKA77Mig0rwrIN7Uikr1N9atjpkhJN7jRuU8Uynqo6FKNVBlcddrLXBBTGEuJoZ+cOLd+/6pcO0CYWZovayHC4hpDcTEJHUkJvwlS5DxE8Ysfhk9FokpQOmOCLkW49mz6CXn5Zfnr8YvgkSI9mhiSNxgLZQTY97z4PXHqy/DwdsPgw9vvwzPTi/PrngDGiSH4464Yg989b1vTszhBp2YK8q8RQcFihC8UNoPGcrQikRZ9H51PKjcxy5vJd6zBRRljv8ryR7fUWA3upjSU+OL0DLOeR5oQhskQHEWnO1fDGQkZ609edw56fy8UwWOzqGdoT2CAAqBt8KIt3H3LwYdceq9FNZUhE4cjDePxY/jQ9EcRAG7NL5oyhiq7fM/x0lmzE1rZ2Ko2xTxkOvCZfEOcVuIucV6BvlgstDXW7aUebW3Ob93IltTSrigbpkDq8yRrGzudUt/tK8ZYf8A4CiaTsziXm+t2fkTPopkxi2hdy2XS47sk81XKx7+VqHlYz+K5Ays8g2dm0CiHH9OZG8KucMd39bPOnnQ9tdD0WqR2z63x03zWZtBXvGVjOQN1re/JqxYJm3OIHsQbp6GfY6aztwu3nm+rqJ2RT+OsaQH5442WuXFx+GV11LDjxaFf8RKC3P/HJgHR42P27c+P7aUOei0gtRX0Nvkv/8AfAzrnQ== sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/leave-game.StatusCodes.json b/docs/reference/http-api/leave-game.StatusCodes.json index 7837e00..e2aa6fc 100644 --- a/docs/reference/http-api/leave-game.StatusCodes.json +++ b/docs/reference/http-api/leave-game.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"Left: the post-leave session","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"Left: the post-leave roster","content":{"application/json":{"schema":{"type":"object","properties":{"roster":{"type":"object","properties":{"type":{"type":"string","enum":["roster"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}}},"required":["type","status","players"],"title":"Roster"}},"required":["roster"],"title":"LobbyAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/leave-game.api.mdx b/docs/reference/http-api/leave-game.api.mdx index f8875ab..35c0b86 100644 --- a/docs/reference/http-api/leave-game.api.mdx +++ b/docs/reference/http-api/leave-game.api.mdx @@ -5,7 +5,7 @@ description: "leaveGame" sidebar_label: "leaveGame" hide_title: true hide_table_of_contents: true -api: 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 +api: eJztmd9v2zYQx/8Vgi9LBsVus27Y1K6D66Wtu7QN4hR9CIz6LJ0lLhKpkic7nqH/fThSchy7SF+KPLkvtSjyeD8+d3a/XUtToQVSRo9SGcsCYYFvoEQZSYLMyfha8qOTk0hWYKFEQsvLa+mSHEuQ8VrSqkIZS0dW6UxGslT6HHVGuYyfNpG0+LVWFlMZk60xkprtxzKDEkepjKTSMpYVUC6bSdiNjl6ZdMW2dw8nRhNq4ldQVYVKvPP9f53RvLbnlJn9iwnJSFaWQyWFjt8mpixBpxz0w/5HsoTbzdPp700TSVJU8IFzM5uthsGSbJrGx+oqo1245PTJE/4rRZdYVbGffAjnFAvKUVTG0YnPuLDGEVr5w8Jr7X13X3i7nwHUdcm1b+1Mmkg6AqrdQ5uXoCisWIR0JSMJCakFszRXWrkcudowM5YwZaC6PDJh42C+iWRVwMoztrkJrAU2pwhL9/2ggoGRTvF2a7PShBlavqF2aLcrf30Xi66Lwoc7M/S9Ld9LXl6XoKU3JSfNvUa4vufkxqPu2tb2VorGCCSbXSN+16Y0d6nbOngZKrh7sivsDsyDJMGKqxNofvYtgEd6AYVKRduoPw5atNbY/YQ2fEH6YKa1oUGHmjZ02eKHt5WP1y9eoE7DKU4XfqpSIAzjx8dzAavCgF8oCsygeG+8vVrfaLPU7VDUht4ZpWFW8BOPsNeMQySh8NDzy82NYEklqgJNYWFoEcj4Ng+fhqC1oXMeAeyXz9Mn7eqqCj0SwOB52SZ9a+UKbpDpmluFOnUfdbHynZcpR2GiX3b1jqQqIcMrY87BZiGozSUj/yqAZIHwXJWq7c/7dR8IRxy3KCHJlUbBVREqRU1qvlI6E8t8JaDjQsxBFZj25B1iZ1zgIddyF8dQ+snO1st2mG5ofLpP43vlHN9trGgLKciEzBywPGD5KFj+so/lB0MCisIsfZwHEg8kPgqJz75N4tzU+sDhgcNH4/CPfQ75Bz67oueFSui5sOhWOhGg+Zck2dUBzwOej4Tn6ek+ngPnmCCjRalcCZTkByAPQD4GkM2uP9siXImUG1bmWCxisFgmi2UfKtVHnSmNfa6V66+DnNb0iy7pmNRW0cprdXNlcQaOhYwJi2zdyzFXJkB6t2WDY05UdeXj5xmC9SpV+PDa2BJIxvLd5yu5n9TXrUEx+jv8kywSDjUJcGI6qCk3Vv3nyxmLV96eeOG3vZyKI2PF9C//9OdUGC0+42xskhskUVeZhRTdcU8GleZtCcm2VlSpf3DVqYo5Quo9bjXHM5WhPhmrTAPVFve91gJviTksxMzQT068fT8YCtcdEGaB1ot3eAsJbZCYmXQViRn/zBJk/IYpi19GT0VqSlC6J0KuxXTxNHrBefnt2cvp8yAEoj2ZGRI3uBLKiSnfefTq49WX8ejNh9GHN1/GZ8PLsyu+gEbp8bQnrtgDX37vmxNLuEEnlopyb9FBiSIEL5T2S4ZytCJVFr1fPY8qT7LLO8H17BbKqsAdgXRrXik9Nz7ZHc2cz5EmtEHqE2fBqcHFSEZygdaFvD7pnfZ+3cs2R+HQLtCeQACCwFthlrv4BhejnhgWitGxpiZ04mi6zf/P02PRtpyAfeqet+UKVfV5XuIsN+amszMz1G+Ldcz55/R7h3gAJDxMPWvcgSzoxeuOpqDdtp16L7QNjoS31K8KUNoLj7bwAqVv4mtm1c96DqMduqzixRtlPPTyJJI5d398Lddrju2TLZqGl7/WaLnBJ5FcgFV+eHO7p8rx51TGcygc7jm3+V6TR90sPRad6rjrdNdYmrtqAUXNTzKSN7i6U/EbFkTbbmMPwsthuOekncLd4b3v0ibqTgQB8sG9k62pePFxfOVV0/CfBaX/OpUWln7mL4OjxscddHFeW8sCdFZDxnuDTf7zPyb0vRg= sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/sidebar.ts b/docs/reference/http-api/sidebar.ts index b2ef819..1540c59 100644 --- a/docs/reference/http-api/sidebar.ts +++ b/docs/reference/http-api/sidebar.ts @@ -32,12 +32,6 @@ const sidebar: SidebarsConfig = { label: "getGame", className: "api-method get", }, - { - type: "doc", - id: "reference/http-api/get-game-session", - label: "getGameSession", - className: "api-method get", - }, { type: "doc", id: "reference/http-api/create-game", diff --git a/docs/reference/http-api/start-game.StatusCodes.json b/docs/reference/http-api/start-game.StatusCodes.json index 2c3b4c1..5ce2da7 100644 --- a/docs/reference/http-api/start-game.StatusCodes.json +++ b/docs/reference/http-api/start-game.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"Started: the session at version 0","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"Started: version 0 committed","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer"},"frame":{"type":["object","null"],"properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"}},"required":["version","frame"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/start-game.api.mdx b/docs/reference/http-api/start-game.api.mdx index 4ca3134..0110c9c 100644 --- a/docs/reference/http-api/start-game.api.mdx +++ b/docs/reference/http-api/start-game.api.mdx @@ -5,7 +5,7 @@ description: "startGame" sidebar_label: "startGame" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/http-api/submit-action.StatusCodes.json b/docs/reference/http-api/submit-action.StatusCodes.json index df8da83..c704f28 100644 --- a/docs/reference/http-api/submit-action.StatusCodes.json +++ b/docs/reference/http-api/submit-action.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"description":"Committed: the acting seat's session","content":{"application/json":{"schema":{"type":"object","properties":{"session":{"type":"object","properties":{"type":{"type":"string","enum":["session"]},"seq":{"type":"integer"},"gameId":{"type":"string"},"shortCode":{"type":"string"},"access":{"type":"string","enum":["public","private","friends"],"title":"GameAccess"},"schemaVersion":{"type":"integer"},"config":{"type":"object"},"turnSeconds":{"type":["integer","null"]},"budgetSeconds":{"type":["integer","null"]},"incrementSeconds":{"type":["integer","null"]},"rated":{"type":"boolean"},"ratingPool":{"type":["string","null"]},"minPlayers":{"type":"integer"},"maxPlayers":{"type":"integer"},"createdBy":{"type":["string","null"]},"status":{"type":"string","enum":["waiting","ready","active","finished","aborted"],"title":"GameStatus"},"players":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"userId":{"type":["string","null"]},"botId":{"type":["string","null"]},"type":{"type":"string","enum":["human","bot"]}},"required":["playerIndex","userId","botId","type"],"title":"Seat"}},"version":{"type":["integer","null"]},"frame":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"},{"type":"null"}]}},"required":["type","seq","gameId","shortCode","access","schemaVersion","config","turnSeconds","budgetSeconds","incrementSeconds","rated","ratingPool","minPlayers","maxPlayers","createdBy","status","players","version","frame"],"title":"Session"}},"required":["session"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file +{"responses":{"200":{"description":"Committed: the acting seat's frame","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"integer"},"frame":{"type":["object","null"],"properties":{"type":{"type":"string","enum":["frame"]},"version":{"type":"integer"},"data":{"type":"object"},"pendingPlayers":{"type":"array","items":{"type":"integer"}},"deadline":{"type":["integer","null"]},"playerTimes":{"type":["array","null"],"items":{"type":"integer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"playerIndex":{"type":"integer"},"result":{"type":"string","enum":["win","loss","draw","eliminated"]},"placement":{"type":"integer"},"teamIndex":{"type":"integer"},"score":{"type":["number","null"]}},"required":["playerIndex","result","placement","teamIndex"],"title":"Outcome"}},"ratings":{"type":"array","items":{"type":"object","properties":{"identity":{"type":"object","properties":{"userId":{"type":["string","null"]},"botId":{"type":["string","null"]}},"required":["userId","botId"],"title":"RatingIdentity"},"pool":{"type":"string"},"muBefore":{"type":"number"},"sigmaBefore":{"type":"number"},"displayBefore":{"type":"integer"},"muAfter":{"type":"number"},"sigmaAfter":{"type":"number"},"displayAfter":{"type":"integer"},"displayChange":{"type":"integer"}},"required":["identity","pool","muBefore","sigmaBefore","displayBefore","muAfter","sigmaAfter","displayAfter","displayChange"],"title":"RatingDelta"}}},"required":["type","version","data","pendingPlayers","deadline","playerTimes"],"title":"Frame"}},"required":["version","frame"],"title":"CommandAccepted"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"401":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"403":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"409":{"description":"State conflict; resync and retry","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}},"422":{"description":"Assertion mismatch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["notActive","notReady","expired","notPending","stateUpdated","invalidPayload","illegalMove","unknownGame","notJoinable","gameFull","alreadyJoined","notParticipant","notCreator","creatorCannotLeave","schemaUnsupported","usernameInvalid","usernameTaken","friendsOnly","registrationRequired","imageTooLarge","unsupportedImageType","rateLimited"],"description":"A stable machine code identifying why a request failed.","title":"ErrorCode"}},"required":["error"],"title":"ErrorResponse"}}}}}} \ No newline at end of file diff --git a/docs/reference/http-api/submit-action.api.mdx b/docs/reference/http-api/submit-action.api.mdx index 75e8276..109af13 100644 --- a/docs/reference/http-api/submit-action.api.mdx +++ b/docs/reference/http-api/submit-action.api.mdx @@ -5,7 +5,7 @@ description: "submitAction" sidebar_label: "submitAction" hide_title: true hide_table_of_contents: true -api: eJztWl9z2zYS/yoYvDS+YWzHTTt3Sq83tuqkapPYYzvXB4+mWpErEjUBMABoW6fhd79ZgKQoUpEz04yf5AdbIhb797eLJdYrrgs04IRWk4SPuC3nUrjTmB7wiDtILR/d8ncg0fJpxAswINGhoccrbuMMJfDRirtlgbTfGaFSHnEp1HtUqcv46FUVcYOfS2Ew4SNnSoy4AknkKUicJDziQvERL8BlvJoGarTuTCdL4t3fHGvlUDlagqLIRez1P/rLakXPBkrp+V8YOx7xwpC1TqD1dAiuQyWUwxRN0F3IUvLRcRXxBBzxqiKOjwXGDpP/orEiiNq9NdZSgkrIsbsdFHEJj+23k39WGx67DZoOFZhG3AmXE9s6YlUVttpCKxusPDk+pj8J2tiIwlON+FhLKZzDZMRchgxiJ1TKSMx3llm0NoT/mzna9hz2BcKwOvQVKnLpbctoWkXc4uctEaiiBlMDNrQn08aNdbJFSBVxiGO0dpf8opznIvZqi3twyCO+MAJVYruxoGQ5DbxIpnfSlzHjcaIWIh26p4q4K426xliTiHb9tgM4Vea598e8TFJ0X0crVGxQovpKcgMOuw6da50jKB6WhEovtc67PFrHtSykUJc5LH3d2OYCCY8712ODpMTZcrcY68CVO0P4AMKFJwYhWXIKuxP3PpRCCZshlSOYa0M296J6HdhXES8GyoIxQOyEQ2mfhnpgMFEJPm63uLRoujDeZu5cu6dInkqprJRAqT7Xjk/7daerZKtRI7bm3XHRNZUp4nHfR/tWWC2MPwRWHNTyYuHPk79XHgLD6TYFup6tK/ow2QpUCaH5q2PbMiWuCEkuFD5hdHDpjZC4kXWNhEC3W5IuXaw39n9z8Bm0Ze525pEg1OTaWh7xxMADreVCCuWLRW1q7KvMdhkOQe5QwcbabDhTlXLe9eVOrNYGdJXoSuyA9iJ403s2VLO/4ViRoHLCLZ+m/Cbp3XNBL0E7Rl55wyaNdhScjZLdOQVleYaLDdc3nqegiFTCjvVEWIrDgKJb6cvThUPzZfZfXq659wm6qR0oxhmodKv8nsfaeNUO6Zi/aWzftLUdG1r3dOwrNIjIL5g74FVfLa/1uorVJWtQoDpFZ7OwdOS89TWxijruzHNeDbBTi6SuKlq35euGqW2P+h1N275sNiv9hmRL09E0FhtdxEarsNEXdJuA9qRfn8Rdd9UHQfdkCo3jsLG2/U56HJp2auAK0i601K+3ddETdQ+5SFj9uvLtGmY0Rput2RlvbV7XZVlp//Lm+xml3VXd4+Bj4U32Dy8Dimon4qciqcMggj2XsMw1+Ad5jinkH7TnV6o7pR8UNUKB0W9aKJjnWCPmLSEr4pD7zooWW4lgnIhFAb4MK+3GFEltmphqMwaltHuP4CUFP31StiyK0IiF7oPeGmund57cwB2qdSt+ofKlPwFSYV14tb1qQh5xISHFG63fg0mDUa2QiV8KeUDIfC+kqJvAzbifMuvIbiYhzoRCRlFhoZYslvQm9ZAtGTS4YAsQOSaHfA2ycwqwz6s+IkPopz3Sq/qNrkXjqyEaPwhrSbY2rA4kczp4Zg/LPSyfBZbfD2H5UTsGea4fvJ17JO6R+CxIfL0diQtdqj0O9zh8Nhz+a4hDukUiVdQiF7F7wwzapYoZKOoknVnu4bmH5zPB8+RkCM9TawlBWjEprAQXZ3tA7gH5HICs+vr0ppESXaZpSllo/7bt54UjfgSFOEKVCoVHFC57tAoXGNURNFstxqXxF3O3K74QBudg6UptSuPGZvGaohOAuiZpIZk5VzQh9FMQBOPveMKHt9pImify3/644UPHvq0Zsskv4bUsYhaVY2DZ7LR0mTbifz6kI3bm+bGfPNnPM/ZCGzb7j//27xnTiv2B82sd36FjZZEaSNAeHPJwX/irhLh7fVmI33HZzFczhCTcoIbp67lIUb28FqkCV4ZLrk2tFcNHR1jM2VzTaPDXD6djZpsNTN+j8QNEfITYtbCY62QZsTm1WsxpTzALkZixREsQ6pAFX7PZ/avoJ/LLj69/nr3xpAWal3Pt2B0umbBsRjJfnF3c/Hk9efdx8vHdn9fn46vzGxLgJsnB7JDdkAY+/l43yx7gDi17EC7zHC1IZMF4JpR/pF2GhiXCoNfr0MOVqtnVevR8/giyyHE9Kj7eOQ0+3hj4dkqbUAvtY9IAn9w+UQ5NGD2x86D76eWkc4s14seHJ4c/DIJCxlo092heQsCNA8+FMN+44fRycsjGuSCEGV06tOzFrJsn/5gdsDo7GQzB+aaOagi+D8cDzjOt7xo+c+3q7JodUJgoSl4hqhUx1d3DcM1sHQ2YRqsGdCGnWZvUG9a1wHX46I6KHISfMpbG31WHfL8lVPuTIQ03nz7necRH7bVlnfbTiGdUKUa3fLUi+z6ZvKro8ecSDdWCacTvwQhf66kyJMLS54SPFpBbHGjXHoP8RVN6D1gzCetr3eSgogS8h7ykbzzid7hc/+tDRRf9dWKSBmFxHOS8rIt2s3lw9NK9btgR7it30k47FfTy4vrGDwrCf1hIf/ryMMah315R7e329dA/W/EcVFoCXa3zwJN+/g8ZXOfv +api: eJztWUtz47gR/isoXDJOcWSPM5tKNJtNabSeWW3m4bI92YNKtWqRLQprAuACTduKi/891QApUaKtHLLlk3ywJaDRr+9DA248SluiA1LWTDI5lL5aaEWjlAdkIglyL4dT+RE0ejlLZAkONBI6Hn6UPl2hBjl8lLQukdeTUyaXidTKfEKT00oO39SJdPh7pRxmckiuwkQa0Cyeg8ZJJhOpjBzKEmgl61mURk/vbbZm3fuLU2sIDfEUlGWh0uD/6W/eGh7rOWUXv2FKMpGl42hJoQ9yCNSRUoYwRxd9V7rScnhWJzIDYl11IvGhxJQw+zc6r6Kpw0tTqzWYjBN7OEGJ1PCw+Xb+t3onY9Poad+BWSJJUcFqG8TqOi71pTU+Rnl+dsZ/MvSpU2WQGsqx1VoRYTYUtEIBKSmTCzbzJy+WDLH8w9J892y66kRGW5up6VaJqYoiMG5HWRTrZxMNJ33a6JvVyWGzDah7nteJLNFkyuSXBawDxzci4BysmaiE2j+llLUiZIUyO/FsqREDYhtB+Y3S3ZCmGwtt4Ics2YpSu7P+WQefQSU6MTEZPjydIoe+KuhQru8Vl4jCei8TmTm457lCaWWAMGtDTVE3JOrbIAR9wAWfWreTTFPpRTeXe9ukG9MmgK4TXYudzfM1ZjNklmuhyf+PxKoMDSla/2/JyqPr1obpNsUbriwsHRbZS0Gjs13YCfIqBDZpvWNwrC36+NaJ1NV7XO6kvs08g6JyDQfmM+UZh55EB1ddjZaE7nn1z0832vcFuls7SoxXYPIn7e9lbINXk5BO+LvB7oe2jWPH6z0f9x3qIfIjFgSy3ncreL2tYk3J6hWoTtHZLSwdOx9CTdw3sNXc1MztgnE8t0ZpiiXv5HiqvH3qIJmYOyhUJpoT+487NdA5655kZ2qzg0eAseH+cscZMZauELJ1PDxD6GHwMmaRkSMg/FZmoWTxPSTEcwnrwkIYKArMofhsg77K3Bp7bz7GA9JY+tkqA4uCv/Fd5gNvykRC4dgqT24sgiOVqhJCGTKWxg6BLBMkjZ/GYIylTwjBUszTN+OrsrQuOsebmy9OTdI7IzdwixFKhSbzX02xDhUwV57i7e6qhT6RSkOON9Z+ApfHoDZGJmEqUs8B4SelVajlyR7uI+GJ4xYa0pUyKBgVEffScs2XifvVWkDLC7EEVWA2kFuSXTDAY8Zyn5kR+tme6FVzqdmw8U2fjZ+V92zbOtEAKcjGzBxpeaTli9DyL31afrEkoCjsfYjzyMQjE1+EiW+fZuLSVubIwyMPX4yHf+/z8JrBFKk1y0Kl9E449GuTCjB8kyS3PtLzSM8Xouf5eZ+eI++ZQdYIrbwGSldHQh4J+RKErPf92WvIa6SV5UZ9acN/26FlPpSnUKpTNLkyeMpw+dPH2FqvT6Fd6jGtXGhMTR/lUjlcgOeW0ow77u3kNaMTiboV2VByRVS2EPL3BYILPY744YN1mlvq8udfbmQ/sR8ahWLyY/y3LBEeDQnwYj6qaGWd+k+AdCjeB33i+yD2w1y8sk7M/xm+/WMurBG/4OLaprdIoipzBxn6k4GM/bKfNKTd9l2p/oXr9olhhZDFDmJ8gLhQOZrX1yo3QFVs8ux6bQQ+EHOxEAvL3fGfPo/GwrcLhL1DF3ro+AApbWixsNk6EQu+agmyQWAekZiLzGpQZiBirsX87k3yPeflr29/mL8LoiW61wtL4hbXQnkxZ5uv3n+9+fV68vHL5MvHX68vxlcXN2yAJtnJfCBu2IOAf/DNi3u4RS/uFa2CRg8aRQxeKBOGLK3QiUw5DH4NAl25ml1tX18uHkCXBW5fS84OPoic7bx5dEqbMksbMGmJz2mfGEIHoaKJi+j76HLSaXoN5dngfPBdDxQO1qO7Q/caIm8IghbmfJuG0eVkIMaFYoY5WxF68Wre3Sd/np+IZncK6JPzXYNqBD/AcY+LlbW3rZ6FpWZ3zU8YJkYpOMS1IuW6O4htVk8awhnRkC7uabHZ1DvRbYhL+ECnZQHKsJbKhV5t3O9TZnU4GfLY+Qt7XiZyuHlQa7b9LJErrhTDqXx85Pi+uaKuefj3Ch3Xglki78CpUOu5MmTK8+dMDpdQeOx5tzkG5au29J4ILn9Ped3uQcMb8A6Kir/JRN7ievv6V3Oju9mY7EGcHEc7r5ui3S7uHb110q6I/cqDsrNOBb38en0TGuXxkVGH01fGZwz+HRy1Ie5QD8PYoyzA5BVwa1lGnfzzX1hRNAc= sidebar_class_name: "post api-method" info_path: docs/reference/http-api/eigeninteractive-engine-api custom_edit_url: null diff --git a/docs/reference/typescript/kernel.md b/docs/reference/typescript/kernel.md index b5cf8cc..4b93bc0 100644 --- a/docs/reference/typescript/kernel.md +++ b/docs/reference/typescript/kernel.md @@ -10,7 +10,7 @@ its inputs alone. ### GameBugError -Defined in: [eigen-server/packages/kernel/src/errors.ts:15](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/errors.ts#L15) +Defined in: [eigen-server/packages/kernel/src/errors.ts:15](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/errors.ts#L15) A broken game/engine invariant: a bug, not a rejection. @@ -73,7 +73,7 @@ Error.constructor ### CommitInput -Defined in: [eigen-server/packages/kernel/src/commit.ts:96](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L96) +Defined in: [eigen-server/packages/kernel/src/commit.ts:96](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L96) #### Properties @@ -83,7 +83,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:96](https://github.com/e game: GameRow; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:97](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L97) +Defined in: [eigen-server/packages/kernel/src/commit.ts:97](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L97) ##### intent @@ -91,7 +91,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:97](https://github.com/e intent: Intent; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:102](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L102) +Defined in: [eigen-server/packages/kernel/src/commit.ts:102](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L102) ##### now @@ -99,7 +99,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:102](https://github.com/ now: number; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:105](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L105) +Defined in: [eigen-server/packages/kernel/src/commit.ts:105](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L105) The commit instant (epoch ms), sampled once by the host and never read here. @@ -110,7 +110,7 @@ here. roster: Seat[]; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:101](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L101) +Defined in: [eigen-server/packages/kernel/src/commit.ts:101](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L101) ##### rules @@ -118,7 +118,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:101](https://github.com/ rules: GameRules; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:108](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L108) +Defined in: [eigen-server/packages/kernel/src/commit.ts:108](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L108) The version unit for the game's `schemaVersion`, already resolved by the host from the `GameModule.versions` map. @@ -132,7 +132,7 @@ optional staleViews?: { }; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:116](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L116) +Defined in: [eigen-server/packages/kernel/src/commit.ts:116](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L116) Same-view material for a stale game action: the acting seat's stored frames at `expectedVersion` and at the current version. Only consulted @@ -158,7 +158,7 @@ expected: SeatView | null; state: StateRow | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:100](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L100) +Defined in: [eigen-server/packages/kernel/src/commit.ts:100](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L100) The latest transition, or null before v0 (only a `start` intent is meaningful then). @@ -167,7 +167,7 @@ meaningful then). ### CommitPlan -Defined in: [eigen-server/packages/kernel/src/commit.ts:139](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L139) +Defined in: [eigen-server/packages/kernel/src/commit.ts:139](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L139) #### Properties @@ -177,7 +177,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:139](https://github.com/ action: TransitionAction | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:142](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L142) +Defined in: [eigen-server/packages/kernel/src/commit.ts:142](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L142) ##### alarm @@ -185,7 +185,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:142](https://github.com/ alarm: number | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:155](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L155) +Defined in: [eigen-server/packages/kernel/src/commit.ts:155](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L155) The instant the DO must arm its alarm at, the true deadline plus the grace window, or null to clear it. @@ -196,7 +196,7 @@ grace window, or null to clear it. effects: Effect[]; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:156](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L156) +Defined in: [eigen-server/packages/kernel/src/commit.ts:156](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L156) ##### frames @@ -204,7 +204,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:156](https://github.com/ frames: ObservationFrame[]; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:145](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L145) +Defined in: [eigen-server/packages/kernel/src/commit.ts:145](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L145) Per-seat projected frames (identified seats only), persisted with the transition, fanned out over sockets. No raw state escapes the kernel. @@ -215,7 +215,7 @@ transition, fanned out over sockets. No raw state escapes the kernel. nextState: StateRow; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:141](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L141) +Defined in: [eigen-server/packages/kernel/src/commit.ts:141](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L141) The next transition row, already versioned (`v+1`, or 0 for start). @@ -225,7 +225,7 @@ The next transition row, already versioned (`v+1`, or 0 for start). outcomes: OutcomeEntry[] | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:152](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L152) +Defined in: [eigen-server/packages/kernel/src/commit.ts:152](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L152) Per-seat results when this transition ends the game, else null. @@ -238,7 +238,7 @@ the host delivers them as a follow-up versioned ratings transition. ### GameRow -Defined in: [eigen-server/packages/kernel/src/commit.ts:32](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L32) +Defined in: [eigen-server/packages/kernel/src/commit.ts:32](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L32) The game's standing configuration: the DO `meta` snapshot. @@ -250,7 +250,7 @@ The game's standing configuration: the DO `meta` snapshot. budgetSeconds: number | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:39](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L39) +Defined in: [eigen-server/packages/kernel/src/commit.ts:39](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L39) ##### config @@ -258,7 +258,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:39](https://github.com/e config: JsonObject; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:37](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L37) +Defined in: [eigen-server/packages/kernel/src/commit.ts:37](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L37) Stored creation config; parsed against the version unit's config schema before any hook sees it. @@ -269,7 +269,7 @@ before any hook sees it. incrementSeconds: number | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:40](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L40) +Defined in: [eigen-server/packages/kernel/src/commit.ts:40](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L40) ##### rated @@ -277,7 +277,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:40](https://github.com/e rated: boolean; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:41](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L41) +Defined in: [eigen-server/packages/kernel/src/commit.ts:41](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L41) ##### ratingPool @@ -285,7 +285,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:41](https://github.com/e ratingPool: string | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:42](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L42) +Defined in: [eigen-server/packages/kernel/src/commit.ts:42](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L42) ##### schemaVersion @@ -293,7 +293,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:42](https://github.com/e schemaVersion: number; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:34](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L34) +Defined in: [eigen-server/packages/kernel/src/commit.ts:34](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L34) ##### status @@ -301,7 +301,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:34](https://github.com/e status: GameStatus; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:33](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L33) +Defined in: [eigen-server/packages/kernel/src/commit.ts:33](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L33) ##### turnSeconds @@ -309,13 +309,13 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:33](https://github.com/e turnSeconds: number | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:38](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L38) +Defined in: [eigen-server/packages/kernel/src/commit.ts:38](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L38) *** ### NextDeadline -Defined in: [eigen-server/packages/kernel/src/timing.ts:48](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/timing.ts#L48) +Defined in: [eigen-server/packages/kernel/src/timing.ts:48](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/timing.ts#L48) #### Properties @@ -325,7 +325,7 @@ Defined in: [eigen-server/packages/kernel/src/timing.ts:48](https://github.com/e deadline: number | null; ``` -Defined in: [eigen-server/packages/kernel/src/timing.ts:49](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/timing.ts#L49) +Defined in: [eigen-server/packages/kernel/src/timing.ts:49](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/timing.ts#L49) ##### turnStartedAt @@ -333,13 +333,13 @@ Defined in: [eigen-server/packages/kernel/src/timing.ts:49](https://github.com/e turnStartedAt: number | null; ``` -Defined in: [eigen-server/packages/kernel/src/timing.ts:50](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/timing.ts#L50) +Defined in: [eigen-server/packages/kernel/src/timing.ts:50](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/timing.ts#L50) *** ### ObservationFrame -Defined in: [eigen-server/packages/kernel/src/observe.ts:12](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/observe.ts#L12) +Defined in: [eigen-server/packages/kernel/src/observe.ts:12](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/observe.ts#L12) One seat's projected frame, tagged with its seat. The host stamps version/timing when it persists and fans these out. @@ -352,7 +352,7 @@ version/timing when it persists and fans these out. data: JsonObject; ``` -Defined in: [eigen-server/packages/kernel/src/observe.ts:14](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/observe.ts#L14) +Defined in: [eigen-server/packages/kernel/src/observe.ts:14](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/observe.ts#L14) ##### pendingPlayers @@ -360,7 +360,7 @@ Defined in: [eigen-server/packages/kernel/src/observe.ts:14](https://github.com/ pendingPlayers: number[]; ``` -Defined in: [eigen-server/packages/kernel/src/observe.ts:15](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/observe.ts#L15) +Defined in: [eigen-server/packages/kernel/src/observe.ts:15](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/observe.ts#L15) ##### playerIndex @@ -368,13 +368,13 @@ Defined in: [eigen-server/packages/kernel/src/observe.ts:15](https://github.com/ playerIndex: number; ``` -Defined in: [eigen-server/packages/kernel/src/observe.ts:13](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/observe.ts#L13) +Defined in: [eigen-server/packages/kernel/src/observe.ts:13](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/observe.ts#L13) *** ### PlayerInput -Defined in: [eigen-server/packages/kernel/src/ratings.ts:26](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L26) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:26](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L26) A player seat to be rated. Self-contained: each seat's current `mu`/`sigma` is bundled, so this module never reads a store. @@ -393,7 +393,7 @@ A player seat to be rated. Self-contained: each seat's current botId: string | null; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:29](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L29) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:29](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L29) ##### placement @@ -401,7 +401,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:29](https://github.com/ placement: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:31](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L31) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:31](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L31) Ordinal finish rank (1 = best); ties share the same value. @@ -411,7 +411,7 @@ Ordinal finish rank (1 = best); ties share the same value. playerIndex: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:27](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L27) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:27](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L27) ##### teamIndex @@ -419,7 +419,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:27](https://github.com/ teamIndex: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:34](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L34) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:34](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L34) Players sharing a teamIndex are rated as one team. For individual games this equals playerIndex. @@ -430,13 +430,13 @@ games this equals playerIndex. userId: string | null; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:28](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L28) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:28](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L28) *** ### RatingDelta -Defined in: [eigen-server/packages/kernel/src/ratings.ts:54](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L54) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:54](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L54) One rated identity's before → after, exactly the rating_history row minus store keys. Computed by the D1 applier inside the rating CAS and delivered @@ -450,7 +450,7 @@ on the post-finish ratings transition (the `kind: "ratings"` action). displayAfter: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:62](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L62) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:62](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L62) ##### displayBefore @@ -458,7 +458,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:62](https://github.com/ displayBefore: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:59](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L59) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:59](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L59) ##### displayChange @@ -466,7 +466,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:59](https://github.com/ displayChange: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:63](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L63) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:63](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L63) ##### identity @@ -474,7 +474,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:63](https://github.com/ identity: RatingIdentity; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:55](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L55) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:55](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L55) ##### muAfter @@ -482,7 +482,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:55](https://github.com/ muAfter: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:60](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L60) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:60](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L60) ##### muBefore @@ -490,7 +490,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:60](https://github.com/ muBefore: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:57](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L57) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:57](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L57) ##### pool @@ -498,7 +498,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:57](https://github.com/ pool: string; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:56](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L56) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:56](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L56) ##### sigmaAfter @@ -506,7 +506,7 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:56](https://github.com/ sigmaAfter: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:61](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L61) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:61](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L61) ##### sigmaBefore @@ -514,13 +514,13 @@ Defined in: [eigen-server/packages/kernel/src/ratings.ts:61](https://github.com/ sigmaBefore: number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:58](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L58) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:58](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L58) *** ### RatingResult -Defined in: [eigen-server/packages/kernel/src/ratings.ts:47](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L47) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:47](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L47) One identity's newly computed rating: the pure OpenSkill posterior, before the store-owned CAS revision is attached by the applier. @@ -537,13 +537,13 @@ before the store-owned CAS revision is attached by the applier. identity: RatingIdentity; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:48](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L48) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:48](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L48) *** ### Rejected -Defined in: [eigen-server/packages/kernel/src/errors.ts:42](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/errors.ts#L42) +Defined in: [eigen-server/packages/kernel/src/errors.ts:42](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/errors.ts#L42) An intent the kernel refused. A value, not a throw: rejections are part of the normal protocol. @@ -556,7 +556,7 @@ of the normal protocol. code: RejectCode; ``` -Defined in: [eigen-server/packages/kernel/src/errors.ts:44](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/errors.ts#L44) +Defined in: [eigen-server/packages/kernel/src/errors.ts:44](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/errors.ts#L44) ##### message @@ -564,7 +564,7 @@ Defined in: [eigen-server/packages/kernel/src/errors.ts:44](https://github.com/e message: string; ``` -Defined in: [eigen-server/packages/kernel/src/errors.ts:45](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/errors.ts#L45) +Defined in: [eigen-server/packages/kernel/src/errors.ts:45](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/errors.ts#L45) ##### rejected @@ -572,13 +572,13 @@ Defined in: [eigen-server/packages/kernel/src/errors.ts:45](https://github.com/e rejected: true; ``` -Defined in: [eigen-server/packages/kernel/src/errors.ts:43](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/errors.ts#L43) +Defined in: [eigen-server/packages/kernel/src/errors.ts:43](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/errors.ts#L43) *** ### Seat -Defined in: [eigen-server/packages/kernel/src/commit.ts:47](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L47) +Defined in: [eigen-server/packages/kernel/src/commit.ts:47](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L47) One seat of the roster. Both ids null ⇒ the account was purged mid-game (the seat plays on as "Deleted User" for display, but can never act). @@ -591,7 +591,7 @@ One seat of the roster. Both ids null ⇒ the account was purged mid-game botId: string | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:50](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L50) +Defined in: [eigen-server/packages/kernel/src/commit.ts:50](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L50) ##### playerIndex @@ -599,7 +599,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:50](https://github.com/e playerIndex: number; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:48](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L48) +Defined in: [eigen-server/packages/kernel/src/commit.ts:48](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L48) ##### type @@ -607,7 +607,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:48](https://github.com/e type: "bot" | "human"; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:51](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L51) +Defined in: [eigen-server/packages/kernel/src/commit.ts:51](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L51) ##### userId @@ -615,13 +615,13 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:51](https://github.com/e userId: string | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:49](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L49) +Defined in: [eigen-server/packages/kernel/src/commit.ts:49](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L49) *** ### SeatView -Defined in: [eigen-server/packages/kernel/src/guards.ts:86](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L86) +Defined in: [eigen-server/packages/kernel/src/guards.ts:86](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L86) A seat's stored projection at one version: what the same-view compare runs on (and what the DO persists per transition as `frames[]`). @@ -634,7 +634,7 @@ runs on (and what the DO persists per transition as `frames[]`). data: JsonObject; ``` -Defined in: [eigen-server/packages/kernel/src/guards.ts:87](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L87) +Defined in: [eigen-server/packages/kernel/src/guards.ts:87](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L87) ##### pendingPlayers @@ -642,13 +642,13 @@ Defined in: [eigen-server/packages/kernel/src/guards.ts:87](https://github.com/e pendingPlayers: number[]; ``` -Defined in: [eigen-server/packages/kernel/src/guards.ts:88](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L88) +Defined in: [eigen-server/packages/kernel/src/guards.ts:88](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L88) *** ### StateRow -Defined in: [eigen-server/packages/kernel/src/commit.ts:56](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L56) +Defined in: [eigen-server/packages/kernel/src/commit.ts:56](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L56) The latest committed transition: state plus the engine-owned clocks. All instants are epoch milliseconds. @@ -661,7 +661,7 @@ instants are epoch milliseconds. deadline: number | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:63](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L63) +Defined in: [eigen-server/packages/kernel/src/commit.ts:63](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L63) The true turn deadline shown to clients; the alarm arms at `deadline + grace`. @@ -672,7 +672,7 @@ The true turn deadline shown to clients; the alarm arms at pending: number[]; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:59](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L59) +Defined in: [eigen-server/packages/kernel/src/commit.ts:59](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L59) ##### playerTimes @@ -680,7 +680,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:59](https://github.com/e playerTimes: number[] | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:65](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L65) +Defined in: [eigen-server/packages/kernel/src/commit.ts:65](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L65) Per-seat budget banks (ms), budget mode only. @@ -690,7 +690,7 @@ Per-seat budget banks (ms), budget mode only. rngSeed: string; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:60](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L60) +Defined in: [eigen-server/packages/kernel/src/commit.ts:60](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L60) ##### state @@ -698,7 +698,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:60](https://github.com/e state: JsonObject; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:58](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L58) +Defined in: [eigen-server/packages/kernel/src/commit.ts:58](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L58) ##### turnStartedAt @@ -706,7 +706,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:58](https://github.com/e turnStartedAt: number | null; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:66](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L66) +Defined in: [eigen-server/packages/kernel/src/commit.ts:66](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L66) ##### version @@ -714,7 +714,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:66](https://github.com/e version: number; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:57](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L57) +Defined in: [eigen-server/packages/kernel/src/commit.ts:57](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L57) ## Type Aliases @@ -738,7 +738,7 @@ type Effect = }; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:137](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L137) +Defined in: [eigen-server/packages/kernel/src/commit.ts:137](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L137) A push/wake the host should attempt post-commit (single attempt + error log, with no retry machinery in v1). The kernel names seats; the host resolves @@ -752,7 +752,7 @@ delivery (FCM targets, bot webhook vs local bot). type GameStatus = "waiting" | "ready" | "active" | "finished" | "aborted"; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:29](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L29) +Defined in: [eigen-server/packages/kernel/src/commit.ts:29](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L29) *** @@ -782,7 +782,7 @@ type Intent = }; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:73](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L73) +Defined in: [eigen-server/packages/kernel/src/commit.ts:73](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L73) What the host asks the kernel to do: the kernel-facing half of a `Command` (authorization already happened at the edge; dedupe at the DO). @@ -905,7 +905,7 @@ type ParseResult = }; ``` -Defined in: [eigen-server/packages/kernel/src/schema.ts:13](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/schema.ts#L13) +Defined in: [eigen-server/packages/kernel/src/schema.ts:13](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/schema.ts#L13) A client payload parse: refusal is the caller's fault, so failure comes back as a value for `commit()` to turn into a rejection. @@ -932,7 +932,7 @@ type RejectCode = | "abstain"; ``` -Defined in: [eigen-server/packages/kernel/src/errors.ts:20](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/errors.ts#L20) +Defined in: [eigen-server/packages/kernel/src/errors.ts:20](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/errors.ts#L20) Why an intent was refused. Stable machine codes: the host's transport mapping and the client's retry policy key on these, so treat renames as @@ -966,7 +966,7 @@ type TransitionAction = }; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:132](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L132) +Defined in: [eigen-server/packages/kernel/src/commit.ts:132](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L132) The action-log entry for a transition. Null only for the start transition (v0), which no action produced. `playerIndex` is the performer's seat, and @@ -985,7 +985,7 @@ engine's, not the game's opaque payload. const DEADLINE_GRACE_MS: 750 = 750; ``` -Defined in: [eigen-server/packages/kernel/src/timing.ts:25](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/timing.ts#L25) +Defined in: [eigen-server/packages/kernel/src/timing.ts:25](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/timing.ts#L25) Grace window (ms) added to every deadline comparison so a player who submits on time is not rejected because network latency carried the request @@ -1003,7 +1003,7 @@ function assertBudgetPending( schemaVersion): void; ``` -Defined in: [eigen-server/packages/kernel/src/guards.ts:26](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L26) +Defined in: [eigen-server/packages/kernel/src/guards.ts:26](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L26) Enforce budget mode's sequential-pending rule at the source: an accumulated clock only meters individual thinking time when at most one @@ -1035,7 +1035,7 @@ function assertForfeitPending( schemaVersion): void; ``` -Defined in: [eigen-server/packages/kernel/src/guards.ts:36](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L36) +Defined in: [eigen-server/packages/kernel/src/guards.ts:36](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L36) Enforce that a forfeit actually removes the forfeited seat: a hook that leaves `targetSeat` in the pending set is a game bug. Left uncaught, the @@ -1065,7 +1065,7 @@ function assertHookPayload( what): asserts value is T; ``` -Defined in: [eigen-server/packages/kernel/src/schema.ts:63](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/schema.ts#L63) +Defined in: [eigen-server/packages/kernel/src/schema.ts:63](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/schema.ts#L63) Validate a payload produced by a game hook. Unlike client parsing, a failure is always a game bug. Validate-only: callers retain the hook's @@ -1101,7 +1101,7 @@ function assertHookState( schemaVersion): void; ``` -Defined in: [eigen-server/packages/kernel/src/guards.ts:16](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L16) +Defined in: [eigen-server/packages/kernel/src/guards.ts:16](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L16) Validate the state a hook returned against the game's version schema before it is committed, catching a hook that wrote a malformed or @@ -1131,7 +1131,7 @@ function assertPendingIdentified( schemaVersion): void; ``` -Defined in: [eigen-server/packages/kernel/src/guards.ts:48](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L48) +Defined in: [eigen-server/packages/kernel/src/guards.ts:48](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L48) Enforce that every pending seat has someone behind it: a seat whose account was purged mid-game (both ids null) can never act, so a hook that @@ -1160,7 +1160,7 @@ catches any later hook resurrecting the seat. function canonicalJson(value): string; ``` -Defined in: [eigen-server/packages/kernel/src/guards.ts:69](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L69) +Defined in: [eigen-server/packages/kernel/src/guards.ts:69](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L69) Canonical JSON: deterministic serialization with object keys sorted and `undefined` object values treated as absent, so two structurally equal @@ -1184,7 +1184,7 @@ views compare byte-identical regardless of construction order. function commit(input): CommitPlan | Rejected; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:166](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L166) +Defined in: [eigen-server/packages/kernel/src/commit.ts:166](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L166) #### Parameters @@ -1204,7 +1204,7 @@ Defined in: [eigen-server/packages/kernel/src/commit.ts:166](https://github.com/ function computeNextDeadline(input): NextDeadline; ``` -Defined in: [eigen-server/packages/kernel/src/timing.ts:67](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/timing.ts#L67) +Defined in: [eigen-server/packages/kernel/src/timing.ts:67](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/timing.ts#L67) Computes the deadline and `turnStartedAt` for the next action: the precedence chain used by start and every commit mode. Pass @@ -1245,7 +1245,7 @@ graceful-degradation safeguard should a multi-pending state arrive anyway. function computeRatings(players): RatingResult[]; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:196](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L196) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:196](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L196) Compute every identity's new rating for one finished game. @@ -1280,7 +1280,7 @@ row left to update. function deadlineExpired(deadline, now): boolean; ``` -Defined in: [eigen-server/packages/kernel/src/timing.ts:30](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/timing.ts#L30) +Defined in: [eigen-server/packages/kernel/src/timing.ts:30](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/timing.ts#L30) TRUE once a turn deadline (plus the grace window) has genuinely passed, measured against the injected `now`. A null deadline (untimed turn) is @@ -1310,7 +1310,7 @@ function deductBank( incrementSeconds): number[]; ``` -Defined in: [eigen-server/packages/kernel/src/timing.ts:38](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/timing.ts#L38) +Defined in: [eigen-server/packages/kernel/src/timing.ts:38](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/timing.ts#L38) Deducts the acting player's elapsed thinking time from their budget bank and applies the Fischer increment. Returns a new `playerTimes` array (ms @@ -1339,7 +1339,7 @@ at 0, not negative. function defaultRating(): Rating; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:73](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L73) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:73](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L73) The OpenSkill prior for a never-rated identity. @@ -1355,7 +1355,7 @@ The OpenSkill prior for a never-rated identity. function deriveRng(seed, version): Rng; ``` -Defined in: [eigen-server/packages/kernel/src/rng.ts:29](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/rng.ts#L29) +Defined in: [eigen-server/packages/kernel/src/rng.ts:29](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/rng.ts#L29) The deterministic RNG for one transition: rand-seed's sfc32 keyed by the game's base seed and the state version the envelope will commit as. The @@ -1383,7 +1383,7 @@ derivation is fixed, so recorded games stay replayable. function displayRating(mu, sigma): number; ``` -Defined in: [eigen-server/packages/kernel/src/ratings.ts:68](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/ratings.ts#L68) +Defined in: [eigen-server/packages/kernel/src/ratings.ts:68](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/ratings.ts#L68) max(0, round((mu − 3σ) · 40)): the one server-side home of the display formula (the client mirrors it for optimistic display only). @@ -1407,7 +1407,7 @@ formula (the client mirrors it for optimistic display only). function fanOutObservations(rules, args): ObservationFrame[]; ``` -Defined in: [eigen-server/packages/kernel/src/observe.ts:25](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/observe.ts#L25) +Defined in: [eigen-server/packages/kernel/src/observe.ts:25](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/observe.ts#L25) Project the new state into one slice per seat: the eager fan-out the host persists per transition (frames serve live delivery and the same-view @@ -1436,7 +1436,7 @@ decision here. function isRejected(result): result is Rejected; ``` -Defined in: [eigen-server/packages/kernel/src/commit.ts:160](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/commit.ts#L160) +Defined in: [eigen-server/packages/kernel/src/commit.ts:160](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/commit.ts#L160) Type guard: did `commit()` refuse the intent? @@ -1461,7 +1461,7 @@ function parseClientPayload( what): ParseResult; ``` -Defined in: [eigen-server/packages/kernel/src/schema.ts:40](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/schema.ts#L40) +Defined in: [eigen-server/packages/kernel/src/schema.ts:40](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/schema.ts#L40) Parse a client-submitted payload (an action's `data`, a create request's `config`) through its schema. Failure is the caller's fault. Returns the @@ -1499,7 +1499,7 @@ function parseStoredPayload( schemaVersion): T; ``` -Defined in: [eigen-server/packages/kernel/src/schema.ts:51](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/schema.ts#L51) +Defined in: [eigen-server/packages/kernel/src/schema.ts:51](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/schema.ts#L51) Parse a stored payload (a state row, the game's config) through its schema. Failure means corrupted data or a schema that no longer matches @@ -1532,7 +1532,7 @@ what this version historically wrote: an engine-side bug, thrown. function randomSeed(): string; ``` -Defined in: [eigen-server/packages/kernel/src/rng.ts:18](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/rng.ts#L18) +Defined in: [eigen-server/packages/kernel/src/rng.ts:18](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/rng.ts#L18) A fresh base seed for a new game: 128 random bits, hex-encoded. Stored on the game's v0 state row and copied onto every later row (server-only, @@ -1550,7 +1550,7 @@ never expose it: the whole randomness of the game is derivable from it). function reject(code, message): Rejected; ``` -Defined in: [eigen-server/packages/kernel/src/errors.ts:48](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/errors.ts#L48) +Defined in: [eigen-server/packages/kernel/src/errors.ts:48](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/errors.ts#L48) #### Parameters @@ -1571,7 +1571,7 @@ Defined in: [eigen-server/packages/kernel/src/errors.ts:48](https://github.com/e function sameView(a, b): boolean; ``` -Defined in: [eigen-server/packages/kernel/src/guards.ts:100](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/kernel/src/guards.ts#L100) +Defined in: [eigen-server/packages/kernel/src/guards.ts:100](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/kernel/src/guards.ts#L100) The same-view rule: a stale-`expectedVersion` action is accepted iff the acting seat's own projected observation (slice `data` plus the diff --git a/docs/reference/typescript/rules.md b/docs/reference/typescript/rules.md index 2e09f5e..5558f1d 100644 --- a/docs/reference/typescript/rules.md +++ b/docs/reference/typescript/rules.md @@ -9,7 +9,7 @@ helpers: it has no runtime dependencies and pulls in no engine code. ### IllegalMoveError -Defined in: [eigen-server/packages/rules/src/helpers.ts:14](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/helpers.ts#L14) +Defined in: [eigen-server/packages/rules/src/helpers.ts:14](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/helpers.ts#L14) Thrown by a game's `applyAction` to reject a move that breaks the rules. the *expected* failure of the hook (a mis-tap, a client bug), rendered to @@ -76,7 +76,7 @@ Error.constructor ### ApplyActionArgs -Defined in: [eigen-server/packages/rules/src/contract.ts:122](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L122) +Defined in: [eigen-server/packages/rules/src/contract.ts:122](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L122) #### Extends @@ -98,7 +98,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:122](https://github.com config: TConfig; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L113) +Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L113) ###### Inherited from @@ -112,7 +112,7 @@ HookContext.config data: TAction; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:125](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L125) +Defined in: [eigen-server/packages/rules/src/contract.ts:125](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L125) ##### pending @@ -120,7 +120,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:125](https://github.com pending: number[]; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:124](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L124) +Defined in: [eigen-server/packages/rules/src/contract.ts:124](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L124) ##### playerIndex @@ -128,7 +128,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:124](https://github.com playerIndex: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:126](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L126) +Defined in: [eigen-server/packages/rules/src/contract.ts:126](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L126) ##### rng @@ -136,7 +136,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:126](https://github.com rng: Rng; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:128](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L128) +Defined in: [eigen-server/packages/rules/src/contract.ts:128](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L128) Deterministic per-transition RNG. See [Rng](#rng-4). @@ -146,13 +146,13 @@ Deterministic per-transition RNG. See [Rng](#rng-4). state: TState; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:123](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L123) +Defined in: [eigen-server/packages/rules/src/contract.ts:123](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L123) *** ### ApplyLifecycleArgs -Defined in: [eigen-server/packages/rules/src/contract.ts:140](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L140) +Defined in: [eigen-server/packages/rules/src/contract.ts:140](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L140) #### Extends @@ -173,7 +173,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:140](https://github.com config: TConfig; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L113) +Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L113) ###### Inherited from @@ -187,7 +187,7 @@ HookContext.config data: LifecycleAction; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:149](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L149) +Defined in: [eigen-server/packages/rules/src/contract.ts:149](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L149) ##### pending @@ -195,7 +195,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:149](https://github.com pending: number[]; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:146](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L146) +Defined in: [eigen-server/packages/rules/src/contract.ts:146](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L146) Seats awaiting an action. For `timeout` these are exactly the seats that ran out of time, so resolve the whole set in one envelope (you may declare a @@ -208,7 +208,7 @@ draw). For `forfeit`/`autoForfeit`, the target seat is in rng: Rng; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:151](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L151) +Defined in: [eigen-server/packages/rules/src/contract.ts:151](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L151) Deterministic per-transition RNG. See [Rng](#rng-4). @@ -218,7 +218,7 @@ Deterministic per-transition RNG. See [Rng](#rng-4). state: TState; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:141](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L141) +Defined in: [eigen-server/packages/rules/src/contract.ts:141](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L141) ##### type @@ -226,7 +226,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:141](https://github.com type: LifecycleType; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:148](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L148) +Defined in: [eigen-server/packages/rules/src/contract.ts:148](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L148) The trigger, always equal to `data.type`. @@ -234,7 +234,7 @@ The trigger, always equal to `data.type`. ### BotActionArgs -Defined in: [eigen-server/packages/rules/src/contract.ts:221](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L221) +Defined in: [eigen-server/packages/rules/src/contract.ts:221](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L221) A seated engine bot's turn to move, passed to the matching entry in [GameRules.botActions](#botactions). The brain runs inside the game's Durable @@ -266,7 +266,7 @@ pure (replay uses the recorded action, never re-runs the brain). botConfig: JsonObject; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:223](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L223) +Defined in: [eigen-server/packages/rules/src/contract.ts:223](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L223) ##### config @@ -274,7 +274,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:223](https://github.com config: TConfig; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L113) +Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L113) ###### Inherited from @@ -288,7 +288,7 @@ HookContext.config observation: ObservationSlice; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:222](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L222) +Defined in: [eigen-server/packages/rules/src/contract.ts:222](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L222) ##### playerIndex @@ -296,7 +296,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:222](https://github.com playerIndex: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:224](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L224) +Defined in: [eigen-server/packages/rules/src/contract.ts:224](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L224) ##### rng @@ -304,13 +304,13 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:224](https://github.com rng: Rng; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:225](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L225) +Defined in: [eigen-server/packages/rules/src/contract.ts:225](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L225) *** ### BotSeatableArgs -Defined in: [eigen-server/packages/rules/src/contract.ts:206](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L206) +Defined in: [eigen-server/packages/rules/src/contract.ts:206](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L206) A candidate bot seating, passed to [GameRules.botSeatable](#botseatable). `gameConfig` is parsed against the game's version schema; `botConfig` is the @@ -331,7 +331,7 @@ schemas, so it stays opaque. botConfig: JsonObject; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:208](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L208) +Defined in: [eigen-server/packages/rules/src/contract.ts:208](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L208) ##### gameConfig @@ -339,13 +339,13 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:208](https://github.com gameConfig: TConfig; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:207](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L207) +Defined in: [eigen-server/packages/rules/src/contract.ts:207](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L207) *** ### ComputeObservationArgs -Defined in: [eigen-server/packages/rules/src/contract.ts:170](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L170) +Defined in: [eigen-server/packages/rules/src/contract.ts:170](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L170) #### Extends @@ -367,7 +367,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:170](https://github.com cause: TransitionCause; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:182](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L182) +Defined in: [eigen-server/packages/rules/src/contract.ts:182](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L182) What produced `state`. See [TransitionCause](#transitioncause). Shared across the per-seat fan-out; per-seat filtering of what it reveals is this hook's @@ -379,7 +379,7 @@ job. config: TConfig; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L113) +Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L113) ###### Inherited from @@ -393,7 +393,7 @@ HookContext.config isReplay: boolean; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:185](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L185) +Defined in: [eigen-server/packages/rules/src/contract.ts:185](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L185) TRUE only when projecting a finished game for replay, where hidden-info games may reveal opponent state. @@ -404,7 +404,7 @@ may reveal opponent state. participantCount: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:178](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L178) +Defined in: [eigen-server/packages/rules/src/contract.ts:178](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L178) ##### pending @@ -412,7 +412,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:178](https://github.com pending: number[]; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:172](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L172) +Defined in: [eigen-server/packages/rules/src/contract.ts:172](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L172) ##### playerIndex @@ -420,7 +420,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:172](https://github.com playerIndex: number | null; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:177](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L177) +Defined in: [eigen-server/packages/rules/src/contract.ts:177](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L177) The seat this projection is for, or `null` for a viewer (a non-participant replaying a public game). A viewer projection only ever occurs with @@ -433,13 +433,13 @@ full post-game view for it. state: TState; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:171](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L171) +Defined in: [eigen-server/packages/rules/src/contract.ts:171](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L171) *** ### Envelope -Defined in: [eigen-server/packages/rules/src/contract.ts:81](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L81) +Defined in: [eigen-server/packages/rules/src/contract.ts:81](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L81) The result of advancing the game by one transition: the return of `initialState`, `applyAction`, and `applyLifecycle`. @@ -458,7 +458,7 @@ The result of advancing the game by one transition: the return of optional outcome?: OutcomeEntry[]; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:89](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L89) +Defined in: [eigen-server/packages/rules/src/contract.ts:89](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L89) Present **only** when the game ends. Absent/undefined means ongoing. @@ -468,7 +468,7 @@ Present **only** when the game ends. Absent/undefined means ongoing. pendingPlayers: number[]; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:87](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L87) +Defined in: [eigen-server/packages/rules/src/contract.ts:87](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L87) 0-based seats that may act next. Empty ⇒ game over. @@ -478,7 +478,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:87](https://github.com/ state: TState; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:85](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L85) +Defined in: [eigen-server/packages/rules/src/contract.ts:85](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L85) New pure game payload (board, deck, fog…). Never carries whose-turn or winner info; those are engine-owned fields. Must match the game's @@ -490,7 +490,7 @@ winner info; those are engine-owned fields. Must match the game's optional turnSeconds?: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:92](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L92) +Defined in: [eigen-server/packages/rules/src/contract.ts:92](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L92) Optional per-action deadline override for *this action only* (does not touch any player's bank). Omit to use the game's configured timing. @@ -499,7 +499,7 @@ touch any player's bank). Omit to use the game's configured timing. ### GameModule -Defined in: [eigen-server/packages/rules/src/contract.ts:348](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L348) +Defined in: [eigen-server/packages/rules/src/contract.ts:348](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L348) The complete game-specific surface: the same-named twin of the Dart `GameModule` (whose extras are client-only creation/about UI). Implement @@ -516,7 +516,7 @@ branches on version. versions: Record; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:356](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L356) +Defined in: [eigen-server/packages/rules/src/contract.ts:356](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L356) The [GameRules](#gamerules) units keyed by `schemaVersion`: exactly the versions this build ships. Sparse on purpose: game creation rejects a @@ -530,7 +530,7 @@ each payload with the same entry's schemas before invoking its hooks. ### GameRules -Defined in: [eigen-server/packages/rules/src/contract.ts:264](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L264) +Defined in: [eigen-server/packages/rules/src/contract.ts:264](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L264) Everything one `schemaVersion` of a game needs: the payload contracts plus all six hooks, narrowly typed to that version's shapes. @@ -560,7 +560,7 @@ change incompatibly, ship a new `GameRules` under the next version key optional botActions?: Record>; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:319](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L319) +Defined in: [eigen-server/packages/rules/src/contract.ts:319](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L319) Optional: the in-DO bot brains, **keyed by bot username**. When a seated `engine`-type bot's turn starts, the engine resolves its registry @@ -580,7 +580,7 @@ rejected exactly like a human's, so a buggy brain fails that seat's turn schemas: GameSchemas; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:266](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L266) +Defined in: [eigen-server/packages/rules/src/contract.ts:266](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L266) The payload contracts for this version. @@ -592,7 +592,7 @@ The payload contracts for this version. applyAction(args): Envelope; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:277](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L277) +Defined in: [eigen-server/packages/rules/src/contract.ts:277](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L277) Apply a player's move. The engine has already confirmed it is this seat's turn at the expected version, so do not re-check turn order. Only @@ -616,7 +616,7 @@ bug and surfaces as a server error. applyLifecycle(args): Envelope; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:284](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L284) +Defined in: [eigen-server/packages/rules/src/contract.ts:284](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L284) Resolve a lifecycle action (`forfeit`/`timeout`) into an envelope. Lifecycle actions operate on the game from outside its rules. They may @@ -640,7 +640,7 @@ it cannot be "illegal"; it always resolves. botSeatable(args): boolean; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:306](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L306) +Defined in: [eigen-server/packages/rules/src/contract.ts:306](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L306) Decide whether a bot's declared capabilities (`botConfig`) support a game with `gameConfig`. The engine gates seating on this before @@ -663,7 +663,7 @@ Return `true` to allow. computeObservation(args): ObservationSlice; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:292](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L292) +Defined in: [eigen-server/packages/rules/src/contract.ts:292](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L292) Project the state into one seat's view, including what that seat may see of the transition that produced it (`args.cause`), so the client can @@ -688,7 +688,7 @@ the acting seat's projected view is unchanged (the same-view rule). initialState(args): Envelope; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:270](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L270) +Defined in: [eigen-server/packages/rules/src/contract.ts:270](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L270) Starting envelope. Draw any setup randomness (deck shuffle, first player…) from `args.rng`. @@ -709,7 +709,7 @@ player…) from `args.rng`. ratingPool(args): string | null; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:300](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L300) +Defined in: [eigen-server/packages/rules/src/contract.ts:300](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L300) Decide whether, and in which pool, a game with these settings is rated. Return the pool name (e.g. `'rapid'`) or `null` for unrated. The @@ -732,7 +732,7 @@ the Rated/Casual toggle and send the same value. ### GameSchemas -Defined in: [eigen-server/packages/rules/src/contract.ts:241](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L241) +Defined in: [eigen-server/packages/rules/src/contract.ts:241](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L241) The declarative payload contracts for one `schemaVersion`: the Standard Schemas the engine uses to parse (and validate) every game payload crossing @@ -759,7 +759,7 @@ bug. action: GamePayloadSchema; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:247](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L247) +Defined in: [eigen-server/packages/rules/src/contract.ts:247](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L247) A player move's `data`, as submitted by clients and bots. @@ -769,7 +769,7 @@ A player move's `data`, as submitted by clients and bots. config: GamePayloadSchema; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:249](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L249) +Defined in: [eigen-server/packages/rules/src/contract.ts:249](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L249) The per-instance creation config stored on the game. @@ -779,7 +779,7 @@ The per-instance creation config stored on the game. observation: GamePayloadSchema; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:245](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L245) +Defined in: [eigen-server/packages/rules/src/contract.ts:245](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L245) One participant's projected view, as returned by `computeObservation`. @@ -789,7 +789,7 @@ One participant's projected view, as returned by `computeObservation`. state: GamePayloadSchema; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:243](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L243) +Defined in: [eigen-server/packages/rules/src/contract.ts:243](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L243) The pure game payload stored per transition. @@ -797,7 +797,7 @@ The pure game payload stored per transition. ### InitialStateArgs -Defined in: [eigen-server/packages/rules/src/contract.ts:116](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L116) +Defined in: [eigen-server/packages/rules/src/contract.ts:116](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L116) #### Extends @@ -817,7 +817,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:116](https://github.com config: TConfig; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L113) +Defined in: [eigen-server/packages/rules/src/contract.ts:113](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L113) ###### Inherited from @@ -831,7 +831,7 @@ HookContext.config playerCount: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:119](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L119) +Defined in: [eigen-server/packages/rules/src/contract.ts:119](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L119) ##### rng @@ -839,7 +839,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:119](https://github.com rng: Rng; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:118](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L118) +Defined in: [eigen-server/packages/rules/src/contract.ts:118](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L118) Deterministic RNG for this transition. See [Rng](#rng-4). @@ -847,7 +847,7 @@ Deterministic RNG for this transition. See [Rng](#rng-4). ### JsonObject -Defined in: [eigen-server/packages/rules/src/json.ts:23](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/json.ts#L23) +Defined in: [eigen-server/packages/rules/src/json.ts:23](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/json.ts#L23) A JSON object: the shape of `state`, `config`, `data`, and observation slices, and the constraint every game payload type must satisfy. An @@ -866,7 +866,7 @@ implicit index signature this constraint relies on. ### ObservationSlice -Defined in: [eigen-server/packages/rules/src/contract.ts:96](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L96) +Defined in: [eigen-server/packages/rules/src/contract.ts:96](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L96) One participant's view of the state, produced by `computeObservation`. @@ -884,7 +884,7 @@ One participant's view of the state, produced by `computeObservation`. data: TObservation; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:98](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L98) +Defined in: [eigen-server/packages/rules/src/contract.ts:98](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L98) What this seat is permitted to see. @@ -894,7 +894,7 @@ What this seat is permitted to see. pendingPlayers: number[]; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:103](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L103) +Defined in: [eigen-server/packages/rules/src/contract.ts:103](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L103) Pending set as this seat sees it. May be narrowed from the true set for hidden-info games (e.g. a Nope window, or a simultaneous-commit round @@ -905,7 +905,7 @@ stay truthful about the seat *itself*, which the engine enforces. ### RatingPoolArgs -Defined in: [eigen-server/packages/rules/src/contract.ts:192](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L192) +Defined in: [eigen-server/packages/rules/src/contract.ts:192](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L192) The chosen game settings, passed to [GameRules.ratingPool](#ratingpool) at creation so the game can decide its rating pool (or that the game is @@ -926,7 +926,7 @@ schema. access: GameAccess; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:193](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L193) +Defined in: [eigen-server/packages/rules/src/contract.ts:193](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L193) ##### budgetSeconds @@ -934,7 +934,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:193](https://github.com budgetSeconds: number | null; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:195](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L195) +Defined in: [eigen-server/packages/rules/src/contract.ts:195](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L195) ##### config @@ -942,7 +942,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:195](https://github.com config: TConfig; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:199](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L199) +Defined in: [eigen-server/packages/rules/src/contract.ts:199](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L199) ##### incrementSeconds @@ -950,7 +950,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:199](https://github.com incrementSeconds: number | null; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:196](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L196) +Defined in: [eigen-server/packages/rules/src/contract.ts:196](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L196) ##### maxPlayers @@ -958,7 +958,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:196](https://github.com maxPlayers: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:198](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L198) +Defined in: [eigen-server/packages/rules/src/contract.ts:198](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L198) ##### minPlayers @@ -966,7 +966,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:198](https://github.com minPlayers: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:197](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L197) +Defined in: [eigen-server/packages/rules/src/contract.ts:197](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L197) ##### turnSeconds @@ -974,13 +974,13 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:197](https://github.com turnSeconds: number | null; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:194](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L194) +Defined in: [eigen-server/packages/rules/src/contract.ts:194](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L194) *** ### Rng -Defined in: [eigen-server/packages/rules/src/contract.ts:53](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L53) +Defined in: [eigen-server/packages/rules/src/contract.ts:53](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L53) Deterministic per-transition random source, derived by the engine from the game's stored base seed and the state version the envelope commits as. Draw @@ -997,7 +997,7 @@ in deterministic code order. next(): number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:54](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L54) +Defined in: [eigen-server/packages/rules/src/contract.ts:54](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L54) ###### Returns @@ -1011,7 +1011,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:54](https://github.com/ type ActionKind = "game" | "lifecycle"; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:43](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L43) +Defined in: [eigen-server/packages/rules/src/contract.ts:43](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L43) Which species a logged action is. Everything that transitions state is an *action*; the two species differ by contract: a `game` action is @@ -1029,7 +1029,7 @@ the log structurally, never by payload shape. type ActionType = "user" | "bot" | "system"; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:34](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L34) +Defined in: [eigen-server/packages/rules/src/contract.ts:34](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L34) Who performed a logged action. @@ -1041,7 +1041,7 @@ Who performed a logged action. type AnyGameRules = GameRules; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:338](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L338) +Defined in: [eigen-server/packages/rules/src/contract.ts:338](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L338) A [GameRules](#gamerules) unit with its payload types erased: the type of a rules entry once it is stored in a [GameModule.versions](#versions) registry that holds @@ -1065,7 +1065,7 @@ with no `as`-cast, because `any` disables the variance check at this seam. type BotAction = (args) => TAction; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:230](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L230) +Defined in: [eigen-server/packages/rules/src/contract.ts:230](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L230) One engine bot's move function: the value type in [GameRules.botActions](#botactions). @@ -1096,7 +1096,7 @@ One engine bot's move function: the value type in type GameAccess = "public" | "private" | "friends"; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:31](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L31) +Defined in: [eigen-server/packages/rules/src/contract.ts:31](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L31) Game visibility. @@ -1108,7 +1108,7 @@ Game visibility. type GamePayloadSchema = StandardSchemaV1 & StandardJSONSchemaV1; ``` -Defined in: [eigen-server/packages/rules/src/standard-json-schema.ts:8](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/standard-json-schema.ts#L8) +Defined in: [eigen-server/packages/rules/src/standard-json-schema.ts:8](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/standard-json-schema.ts#L8) One game payload declaration: runtime validation plus portable schema emission from the same transform-free object. Input and output deliberately @@ -1128,7 +1128,7 @@ share one type: what parses is what persists and what Dart generates. type GameResult = "win" | "loss" | "draw" | "eliminated"; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:28](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L28) +Defined in: [eigen-server/packages/rules/src/contract.ts:28](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L28) Per-player result of a finished game. @@ -1140,7 +1140,7 @@ Per-player result of a finished game. type Json = string | number | boolean | null | JsonArray | JsonObject; ``` -Defined in: [eigen-server/packages/rules/src/json.ts:10](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/json.ts#L10) +Defined in: [eigen-server/packages/rules/src/json.ts:10](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/json.ts#L10) Any JSON value. `undefined` is allowed inside objects (treated as an absent key, matching how schema libraries model optional fields); it never @@ -1161,7 +1161,7 @@ type LifecycleAction = }; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:138](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L138) +Defined in: [eigen-server/packages/rules/src/contract.ts:138](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L138) The engine-constructed payload of a lifecycle action, recorded verbatim in the action log (with `kind = 'lifecycle'`). Engine-owned and @@ -1179,7 +1179,7 @@ purge); `timeout` carries no seat, and the affected seats are type LifecycleType = "timeout" | "forfeit" | "autoForfeit"; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:25](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L25) +Defined in: [eigen-server/packages/rules/src/contract.ts:25](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L25) The trigger of a lifecycle action, resolved by the game's `applyLifecycle` hook. `forfeit` is a voluntary resign; `autoForfeit` the engine-driven @@ -1203,7 +1203,7 @@ type OutcomeEntry = { }; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:68](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L68) +Defined in: [eigen-server/packages/rules/src/contract.ts:68](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L68) One participant's result, recorded when the game ends. `placement` (1 = best, ties share a value) feeds OpenSkill directly; `teamIndex` @@ -1221,7 +1221,7 @@ implicit index signature that makes it assignable to `Json`. placement: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:71](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L71) +Defined in: [eigen-server/packages/rules/src/contract.ts:71](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L71) ##### playerIndex @@ -1229,7 +1229,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:71](https://github.com/ playerIndex: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:69](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L69) +Defined in: [eigen-server/packages/rules/src/contract.ts:69](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L69) ##### result @@ -1237,7 +1237,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:69](https://github.com/ result: GameResult; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:70](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L70) +Defined in: [eigen-server/packages/rules/src/contract.ts:70](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L70) ##### score? @@ -1245,7 +1245,7 @@ Defined in: [eigen-server/packages/rules/src/contract.ts:70](https://github.com/ optional score?: number | null; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:74](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L74) +Defined in: [eigen-server/packages/rules/src/contract.ts:74](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L74) Optional raw game score, for display or score-based variants. @@ -1255,7 +1255,7 @@ Optional raw game score, for display or score-based variants. teamIndex: number; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:72](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L72) +Defined in: [eigen-server/packages/rules/src/contract.ts:72](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L72) *** @@ -1275,7 +1275,7 @@ type TransitionCause = | null; ``` -Defined in: [eigen-server/packages/rules/src/contract.ts:168](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/contract.ts#L168) +Defined in: [eigen-server/packages/rules/src/contract.ts:168](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/contract.ts#L168) The action that produced the state being projected: a `game` action (`applyAction`), a `lifecycle` action (`applyLifecycle`), or `null` for @@ -1304,7 +1304,7 @@ them as animation only when it has the frame's predecessor, and as static function passthroughObservation(args): ObservationSlice; ``` -Defined in: [eigen-server/packages/rules/src/helpers.ts:24](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/rules/src/helpers.ts#L24) +Defined in: [eigen-server/packages/rules/src/helpers.ts:24](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/rules/src/helpers.ts#L24) Default `computeObservation` for perfect-information games: every seat sees the full state and the true pending set. Ignores `args.cause`, since a diff --git a/docs/reference/typescript/server-testing.md b/docs/reference/typescript/server-testing.md index 56f6365..276612e 100644 --- a/docs/reference/typescript/server-testing.md +++ b/docs/reference/typescript/server-testing.md @@ -31,7 +31,7 @@ production config: pass `testing` ONLY in test workers. ### TestTokenOptions -Defined in: [eigen-server/packages/server/src/testing.ts:70](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L70) +Defined in: [eigen-server/packages/server/src/testing.ts:70](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L70) #### Properties @@ -41,7 +41,7 @@ Defined in: [eigen-server/packages/server/src/testing.ts:70](https://github.com/ optional anonymous?: boolean; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:72](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L72) +Defined in: [eigen-server/packages/server/src/testing.ts:72](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L72) ##### claims? @@ -49,7 +49,7 @@ Defined in: [eigen-server/packages/server/src/testing.ts:72](https://github.com/ optional claims?: Record; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:77](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L77) +Defined in: [eigen-server/packages/server/src/testing.ts:77](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L77) Override any registered claim (e.g. an expired `exp`, a wrong `aud`). @@ -59,7 +59,7 @@ Override any registered claim (e.g. an expired `exp`, a wrong `aud`). optional email?: string; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:73](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L73) +Defined in: [eigen-server/packages/server/src/testing.ts:73](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L73) ##### name? @@ -67,7 +67,7 @@ Defined in: [eigen-server/packages/server/src/testing.ts:73](https://github.com/ optional name?: string; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:74](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L74) +Defined in: [eigen-server/packages/server/src/testing.ts:74](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L74) ##### picture? @@ -75,7 +75,7 @@ Defined in: [eigen-server/packages/server/src/testing.ts:74](https://github.com/ optional picture?: string; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:75](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L75) +Defined in: [eigen-server/packages/server/src/testing.ts:75](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L75) ##### uid @@ -83,7 +83,7 @@ Defined in: [eigen-server/packages/server/src/testing.ts:75](https://github.com/ uid: string; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:71](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L71) +Defined in: [eigen-server/packages/server/src/testing.ts:71](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L71) ## Variables @@ -93,7 +93,7 @@ Defined in: [eigen-server/packages/server/src/testing.ts:71](https://github.com/ const TEST_PROJECT_ID: "eigen-test" = "eigen-test"; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:36](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L36) +Defined in: [eigen-server/packages/server/src/testing.ts:36](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L36) *** @@ -103,7 +103,7 @@ Defined in: [eigen-server/packages/server/src/testing.ts:36](https://github.com/ const testFirebaseAdmin: FirebaseAdminEffects; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:60](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L60) +Defined in: [eigen-server/packages/server/src/testing.ts:60](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L60) No-op Firebase Admin effects for test workers and test Durable Objects. @@ -115,7 +115,7 @@ No-op Firebase Admin effects for test workers and test Durable Objects. function mintTestToken(opts): Promise; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:80](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L80) +Defined in: [eigen-server/packages/server/src/testing.ts:80](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L80) #### Parameters @@ -135,7 +135,7 @@ Defined in: [eigen-server/packages/server/src/testing.ts:80](https://github.com/ function testBearer(opts): Promise>; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:99](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L99) +Defined in: [eigen-server/packages/server/src/testing.ts:99](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L99) Authorization header for a minted token. @@ -157,7 +157,7 @@ Authorization header for a minted token. function testVerifier(): TokenVerifier; ``` -Defined in: [eigen-server/packages/server/src/testing.ts:66](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/testing.ts#L66) +Defined in: [eigen-server/packages/server/src/testing.ts:66](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/testing.ts#L66) The verifier a test worker passes under `createEngine({ testing })`. diff --git a/docs/reference/typescript/server.md b/docs/reference/typescript/server.md index cac5b79..f3acf06 100644 --- a/docs/reference/typescript/server.md +++ b/docs/reference/typescript/server.md @@ -13,7 +13,7 @@ drizzle tables would turn a private layout into a compatibility surface. ### AuthError -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:12](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L12) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:12](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L12) Verification failure, always the caller's fault; the app maps it to 401. @@ -76,7 +76,7 @@ Error.constructor ### `abstract` BaseGameDO -Defined in: [eigen-server/packages/server/src/do/game-do.ts:104](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L104) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:104](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L104) Durable Object base class that owns one authoritative game session. @@ -118,7 +118,7 @@ export class GameDO extends BaseGameDO { new BaseGameDO(ctx, env): BaseGameDO; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:118](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L118) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:118](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L118) ###### Parameters @@ -145,7 +145,7 @@ DurableObject.constructor abstract protected readonly gameModule: GameModule; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:106](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L106) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:106](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L106) The implementor's game: the `versions` map the engine dispatches on. @@ -157,7 +157,7 @@ The implementor's game: the `versions` map the engine dispatches on. abort(gameId): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:271](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L271) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:262](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L262) Unconditional teardown (cron reap): mark the game aborted in D1 and drop the DO's storage: no creator gate, no init requirement. A @@ -187,7 +187,7 @@ GameStub.abort alarm(): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:729](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L729) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:708](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L708) ###### Returns @@ -199,7 +199,7 @@ Defined in: [eigen-server/packages/server/src/do/game-do.ts:729](https://github. abstract protected d1(env): D1Database; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:109](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L109) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:109](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L109) The EngineConfig seam: the engine never assumes binding names, so the subclass picks the D1 database off its own Env. @@ -220,14 +220,14 @@ subclass picks the D1 database off its own Env. fetch(request): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:753](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L753) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:732](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L732) The worker routes the upgrade here after authenticating; the principal header is worker-set (never client-supplied; the worker strips inbound -headers when forwarding). One socket serves the game's whole lifetime and -carries one message kind, the per-seat [SessionSnapshot](#sessionsnapshot). A -not-yet-seated user's socket receives the envelope with no frame until the -roster contains them, which is how it learns the game started at all. +headers when forwarding). One socket serves the game's whole lifetime: +unversioned roster snapshots pre-game, versioned frames from v0. +A not-yet-seated user's socket simply receives no frames until the +roster contains them. ###### Parameters @@ -251,7 +251,7 @@ GameStub.fetch protected firebaseAdmin(env): FirebaseAdminEffects; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:112](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L112) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:112](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L112) Required Firebase Admin effects. Tests override this with the explicit fake exported by `@eigeninteractive/server/testing`. @@ -272,7 +272,7 @@ fake exported by `@eigeninteractive/server/testing`. frames(args): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:932](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L932) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:832](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L832) Project a version range for one seat (null = public viewer, replay only). Live rows serve the stored frame; compacted/ratings rows @@ -304,7 +304,7 @@ GameStub.frames handle(cmd): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:131](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L131) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:131](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L131) ###### Parameters @@ -328,7 +328,7 @@ GameStub.handle repokeFinish(): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:717](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L717) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:696](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L696) The gated admin re-poke (step 4): re-runs the D1 apply for a finish whose effects never landed. Idempotent end to end: finish_id @@ -345,40 +345,13 @@ hasn't been committed. Returns false when there is nothing to do. GameStub.repokeFinish ``` -##### session() - -```ts -session(gameId, userId): Promise; -``` - -Defined in: [eigen-server/packages/server/src/do/game-do.ts:776](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L776) - -The snapshot over RPC, for the HTTP paths that have no socket. - -###### Parameters - -| Parameter | Type | -| ------ | ------ | -| `gameId` | `string` | -| `userId` | `string` \| `null` | - -###### Returns - -`Promise`\<[`SessionSnapshot`](#sessionsnapshot) \| `null`\> - -###### Implementation of - -```ts -GameStub.session -``` - ##### webSocketClose() ```ts webSocketClose(): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:786](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L786) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:766](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L766) ###### Returns @@ -390,7 +363,7 @@ Defined in: [eigen-server/packages/server/src/do/game-do.ts:786](https://github. webSocketError(_ws, error): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:792](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L792) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:772](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L772) ###### Parameters @@ -409,7 +382,7 @@ Defined in: [eigen-server/packages/server/src/do/game-do.ts:792](https://github. webSocketMessage(): Promise; ``` -Defined in: [eigen-server/packages/server/src/do/game-do.ts:781](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/do/game-do.ts#L781) +Defined in: [eigen-server/packages/server/src/do/game-do.ts:761](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/do/game-do.ts#L761) ###### Returns @@ -419,7 +392,7 @@ Defined in: [eigen-server/packages/server/src/do/game-do.ts:781](https://github. ### HttpError -Defined in: [eigen-server/packages/server/src/http.ts:38](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/http.ts#L38) +Defined in: [eigen-server/packages/server/src/http.ts:38](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/http.ts#L38) #### Extends @@ -437,7 +410,7 @@ new HttpError( retryAfterSeconds?): HttpError; ``` -Defined in: [eigen-server/packages/server/src/http.ts:46](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/http.ts#L46) +Defined in: [eigen-server/packages/server/src/http.ts:46](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/http.ts#L46) ###### Parameters @@ -466,7 +439,7 @@ Error.constructor readonly code: ErrorCode | undefined; ``` -Defined in: [eigen-server/packages/server/src/http.ts:40](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/http.ts#L40) +Defined in: [eigen-server/packages/server/src/http.ts:40](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/http.ts#L40) ##### retryAfterSeconds @@ -474,7 +447,7 @@ Defined in: [eigen-server/packages/server/src/http.ts:40](https://github.com/eig readonly retryAfterSeconds: number | undefined; ``` -Defined in: [eigen-server/packages/server/src/http.ts:44](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/http.ts#L44) +Defined in: [eigen-server/packages/server/src/http.ts:44](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/http.ts#L44) Seconds the caller should wait before retrying, rendered as the `Retry-After` header. Set only on a 429 (see `ErrorCode.rateLimited`); @@ -486,13 +459,13 @@ Seconds the caller should wait before retrying, rendered as the readonly status: 400 | 401 | 403 | 404 | 409 | 413 | 415 | 422 | 429 | 500 | 502; ``` -Defined in: [eigen-server/packages/server/src/http.ts:39](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/http.ts#L39) +Defined in: [eigen-server/packages/server/src/http.ts:39](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/http.ts#L39) ## Interfaces ### AuthClaims -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:18](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L18) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:18](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L18) What a verified ID token asserts. `isAnonymous` (the `firebase.sign_in_provider === 'anonymous'` claim) drives every guest gate; @@ -507,7 +480,7 @@ Apple usually only email, guests none). email: string | null; ``` -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:21](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L21) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:21](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L21) ##### isAnonymous @@ -515,7 +488,7 @@ Defined in: [eigen-server/packages/server/src/auth/firebase.ts:21](https://githu isAnonymous: boolean; ``` -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:20](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L20) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:20](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L20) ##### name @@ -523,7 +496,7 @@ Defined in: [eigen-server/packages/server/src/auth/firebase.ts:20](https://githu name: string | null; ``` -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:22](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L22) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:22](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L22) ##### picture @@ -531,7 +504,7 @@ Defined in: [eigen-server/packages/server/src/auth/firebase.ts:22](https://githu picture: string | null; ``` -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:23](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L23) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:23](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L23) ##### uid @@ -539,13 +512,13 @@ Defined in: [eigen-server/packages/server/src/auth/firebase.ts:23](https://githu uid: string; ``` -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:19](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L19) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:19](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L19) *** ### CreateGameInput -Defined in: [eigen-server/packages/server/src/d1/apply.ts:292](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L292) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:292](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L292) The worker-direct create, engine-owned so implementors never touch the D1 schema: seats already validated by worker policy. @@ -558,7 +531,7 @@ the D1 schema: seats already validated by worker policy. access: GameAccess; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:296](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L296) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:296](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L296) ##### budgetSeconds @@ -566,7 +539,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:296](https://github.co budgetSeconds: number | null; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:300](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L300) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:300](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L300) ##### config @@ -574,7 +547,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:300](https://github.co config: JsonObject; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:298](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L298) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:298](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L298) ##### createdBy @@ -582,7 +555,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:298](https://github.co createdBy: string | null; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:294](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L294) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:294](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L294) ##### gameId @@ -590,7 +563,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:294](https://github.co gameId: string; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:293](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L293) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:293](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L293) ##### incrementSeconds @@ -598,7 +571,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:293](https://github.co incrementSeconds: number | null; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:301](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L301) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:301](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L301) ##### maxPlayers @@ -606,7 +579,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:301](https://github.co maxPlayers: number; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:305](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L305) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:305](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L305) ##### minPlayers @@ -614,7 +587,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:305](https://github.co minPlayers: number; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:304](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L304) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:304](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L304) ##### now @@ -622,7 +595,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:304](https://github.co now: number; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:308](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L308) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:308](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L308) ##### rated @@ -630,7 +603,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:308](https://github.co rated: boolean; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:302](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L302) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:302](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L302) ##### ratingPool @@ -638,7 +611,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:302](https://github.co ratingPool: string | null; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:303](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L303) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:303](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L303) ##### schemaVersion @@ -646,7 +619,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:303](https://github.co schemaVersion: number; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:297](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L297) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:297](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L297) ##### seats @@ -654,7 +627,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:297](https://github.co seats: Seat[]; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:307](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L307) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:307](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L307) ##### shortCode @@ -662,7 +635,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:307](https://github.co shortCode: string; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:306](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L306) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:306](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L306) ##### status @@ -670,7 +643,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:306](https://github.co status: "waiting" | "ready"; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:295](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L295) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:295](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L295) ##### turnSeconds @@ -678,13 +651,13 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:295](https://github.co turnSeconds: number | null; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:299](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L299) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:299](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L299) *** ### EngineConfig -Defined in: [eigen-server/packages/server/src/engine.ts:99](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L99) +Defined in: [eigen-server/packages/server/src/engine.ts:99](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L99) The EngineConfig seam: the engine never assumes binding names, so the implementor picks bindings off their own Env. Annotate the accessors' `env` @@ -705,7 +678,7 @@ parameter and both type arguments infer. appName: string; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:106](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L106) +Defined in: [eigen-server/packages/server/src/engine.ts:106](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L106) The whitelabel app's display name, the single source of truth for the engine's own identity (share metadata and public-page titles today; @@ -719,7 +692,7 @@ feature blocks are enabled. optional avatars?: AvatarsConfig; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:128](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L128) +Defined in: [eigen-server/packages/server/src/engine.ts:128](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L128) Opt-in avatar uploads. Omit → not mounted. @@ -729,7 +702,7 @@ Opt-in avatar uploads. Omit → not mounted. optional clientOrigins?: readonly string[] | ((env) => readonly string[]); ``` -Defined in: [eigen-server/packages/server/src/engine.ts:124](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L124) +Defined in: [eigen-server/packages/server/src/engine.ts:124](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L124) Browser origins allowed to call the engine from a different origin. @@ -748,7 +721,7 @@ Set an empty list to disable the `WEB_APP_ORIGIN` default. optional deepLink?: DeepLinkConfig; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:126](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L126) +Defined in: [eigen-server/packages/server/src/engine.ts:126](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L126) Native deep-link verification and store links. Omit for web-only. @@ -758,7 +731,7 @@ Native deep-link verification and store links. Omit for web-only. gameModule: GameModule; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:100](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L100) +Defined in: [eigen-server/packages/server/src/engine.ts:100](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L100) ##### lifecycle? @@ -766,7 +739,7 @@ Defined in: [eigen-server/packages/server/src/engine.ts:100](https://github.com/ optional lifecycle?: LifecycleOptions; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:135](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L135) +Defined in: [eigen-server/packages/server/src/engine.ts:135](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L135) Cron-backstop tuning: guest-purge/reap windows and batch caps. Omit for the defaults (`LIFECYCLE_DEFAULTS`); set any subset to @@ -778,7 +751,7 @@ override just those. optional site?: SiteConfig; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:131](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L131) +Defined in: [eigen-server/packages/server/src/engine.ts:131](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L131) The public web surface: download page, legal documents, crawler files. Omit → not mounted (the worker is API-only). @@ -792,7 +765,7 @@ optional testing?: { }; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:140](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L140) +Defined in: [eigen-server/packages/server/src/engine.ts:140](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L140) Explicit test-only replacements for Firebase verification and Admin effects. Supplying them together prevents a fake verifier from @@ -829,7 +802,7 @@ firebaseAdmin(env): FirebaseAdminEffects; d1(env): D1Database; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:108](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L108) +Defined in: [eigen-server/packages/server/src/engine.ts:108](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L108) The engine's D1 database (engine-private). @@ -849,7 +822,7 @@ The engine's D1 database (engine-private). optional firebaseProjectId(env): string; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:113](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L113) +Defined in: [eigen-server/packages/server/src/engine.ts:113](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L113) Firebase project id for token verification; defaults to the `FIREBASE_PROJECT_ID` var (the only secret verification needs). @@ -870,7 +843,7 @@ Firebase project id for token verification; defaults to the gameDO(env): DurableObjectNamespace; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:110](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L110) +Defined in: [eigen-server/packages/server/src/engine.ts:110](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L110) The GameDO namespace binding. @@ -888,7 +861,7 @@ The GameDO namespace binding. ### FinishApplyInput -Defined in: [eigen-server/packages/server/src/d1/apply.ts:30](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L30) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:30](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L30) #### Properties @@ -898,7 +871,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:30](https://github.com finishId: string; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:34](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L34) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:34](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L34) The DO-minted idempotency key. The apply is a no-op replay when the games row already carries it. @@ -909,7 +882,7 @@ the games row already carries it. gameId: string; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:31](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L31) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:31](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L31) ##### now @@ -917,7 +890,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:31](https://github.com now: number; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:39](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L39) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:39](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L39) ##### outcomes @@ -925,7 +898,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:39](https://github.com outcomes: OutcomeEntry[]; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:35](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L35) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:35](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L35) ##### rated @@ -933,7 +906,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:35](https://github.com rated: boolean; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:37](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L37) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:37](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L37) ##### ratingPool @@ -941,7 +914,7 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:37](https://github.com ratingPool: string | null; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:38](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L38) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:38](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L38) ##### roster @@ -949,13 +922,13 @@ Defined in: [eigen-server/packages/server/src/d1/apply.ts:38](https://github.com roster: Seat[]; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:36](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L36) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:36](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L36) *** ### FirebaseAdminEffects -Defined in: [eigen-server/packages/server/src/firebase/admin-effects.ts:15](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/firebase/admin-effects.ts#L15) +Defined in: [eigen-server/packages/server/src/firebase/admin-effects.ts:15](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/firebase/admin-effects.ts#L15) The Firebase Admin effects used by authenticated engine paths. @@ -967,7 +940,7 @@ The Firebase Admin effects used by authenticated engine paths. deleteAccount(userId): Promise; ``` -Defined in: [eigen-server/packages/server/src/firebase/admin-effects.ts:19](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/firebase/admin-effects.ts#L19) +Defined in: [eigen-server/packages/server/src/firebase/admin-effects.ts:19](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/firebase/admin-effects.ts#L19) Permanently delete one Firebase Authentication account. @@ -990,7 +963,7 @@ notifyUser( message): Promise; ``` -Defined in: [eigen-server/packages/server/src/firebase/admin-effects.ts:17](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/firebase/admin-effects.ts#L17) +Defined in: [eigen-server/packages/server/src/firebase/admin-effects.ts:17](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/firebase/admin-effects.ts#L17) Send one notification through the engine's registered-device store. @@ -1010,7 +983,7 @@ Send one notification through the engine's registered-device store. ### FrameMessage -Defined in: [eigen-server/packages/server/src/protocol.ts:137](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L137) +Defined in: [eigen-server/packages/server/src/protocol.ts:91](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L91) One seat's versioned frame on the wire: the socket fan-out payload, and (for the acting seat) the command-response ride-along. `ratings` appears @@ -1024,7 +997,7 @@ only on the post-finish ratings transition. data: JsonObject; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:140](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L140) +Defined in: [eigen-server/packages/server/src/protocol.ts:94](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L94) ##### deadline @@ -1032,7 +1005,7 @@ Defined in: [eigen-server/packages/server/src/protocol.ts:140](https://github.co deadline: number | null; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:143](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L143) +Defined in: [eigen-server/packages/server/src/protocol.ts:97](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L97) The true client-facing deadline (grace is display-only there). @@ -1042,7 +1015,7 @@ The true client-facing deadline (grace is display-only there). optional outcomes?: OutcomeEntry[]; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:145](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L145) +Defined in: [eigen-server/packages/server/src/protocol.ts:99](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L99) ##### pendingPlayers @@ -1050,7 +1023,7 @@ Defined in: [eigen-server/packages/server/src/protocol.ts:145](https://github.co pendingPlayers: number[]; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:141](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L141) +Defined in: [eigen-server/packages/server/src/protocol.ts:95](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L95) ##### playerTimes @@ -1058,7 +1031,7 @@ Defined in: [eigen-server/packages/server/src/protocol.ts:141](https://github.co playerTimes: number[] | null; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:144](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L144) +Defined in: [eigen-server/packages/server/src/protocol.ts:98](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L98) ##### ratings? @@ -1066,7 +1039,7 @@ Defined in: [eigen-server/packages/server/src/protocol.ts:144](https://github.co optional ratings?: RatingDelta[]; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:146](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L146) +Defined in: [eigen-server/packages/server/src/protocol.ts:100](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L100) ##### type @@ -1074,7 +1047,7 @@ Defined in: [eigen-server/packages/server/src/protocol.ts:146](https://github.co type: "frame"; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:138](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L138) +Defined in: [eigen-server/packages/server/src/protocol.ts:92](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L92) ##### version @@ -1082,13 +1055,13 @@ Defined in: [eigen-server/packages/server/src/protocol.ts:138](https://github.co version: number; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:139](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L139) +Defined in: [eigen-server/packages/server/src/protocol.ts:93](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L93) *** ### LegalConfig -Defined in: [eigen-server/packages/server/src/site/config.ts:29](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L29) +Defined in: [eigen-server/packages/server/src/site/config.ts:29](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L29) Legal document overrides. Each is an HTML **fragment**: body content only, no document wrapper; the engine supplies the shell, styling and footer. @@ -1107,7 +1080,7 @@ what a template's tokens used to stand in for. optional deleteAccount?: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:32](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L32) +Defined in: [eigen-server/packages/server/src/site/config.ts:32](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L32) ##### privacy? @@ -1115,7 +1088,7 @@ Defined in: [eigen-server/packages/server/src/site/config.ts:32](https://github. optional privacy?: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:31](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L31) +Defined in: [eigen-server/packages/server/src/site/config.ts:31](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L31) ##### terms? @@ -1123,13 +1096,13 @@ Defined in: [eigen-server/packages/server/src/site/config.ts:31](https://github. optional terms?: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:30](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L30) +Defined in: [eigen-server/packages/server/src/site/config.ts:30](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L30) *** ### OperatorConfig -Defined in: [eigen-server/packages/server/src/site/config.ts:9](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L9) +Defined in: [eigen-server/packages/server/src/site/config.ts:9](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L9) The legal entity publishing the game. Required whenever `site` is present: the default legal documents take it as a prop and cannot render without it. @@ -1142,7 +1115,7 @@ the default legal documents take it as a prop and cannot render without it. contactEmail: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:15](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L15) +Defined in: [eigen-server/packages/server/src/site/config.ts:15](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L15) Support and privacy contact address. @@ -1152,7 +1125,7 @@ Support and privacy contact address. effectiveDate: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:18](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L18) +Defined in: [eigen-server/packages/server/src/site/config.ts:18](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L18) Effective date of the legal documents, as displayed. A plain string, not a Date, since it is prose and its format is the operator's choice. @@ -1163,7 +1136,7 @@ Date, since it is prose and its format is the operator's choice. jurisdiction: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:13](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L13) +Defined in: [eigen-server/packages/server/src/site/config.ts:13](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L13) Governing jurisdiction, e.g. `India`. @@ -1173,7 +1146,7 @@ Governing jurisdiction, e.g. `India`. name: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:11](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L11) +Defined in: [eigen-server/packages/server/src/site/config.ts:11](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L11) Legal entity name. Also the page footers' copyright holder. @@ -1181,7 +1154,7 @@ Legal entity name. Also the page footers' copyright holder. ### Principal -Defined in: [eigen-server/packages/server/src/protocol.ts:16](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L16) +Defined in: [eigen-server/packages/server/src/protocol.ts:16](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L16) Who a command acts as, resolved at the edge. Exactly one id is set. @@ -1193,7 +1166,7 @@ Who a command acts as, resolved at the edge. Exactly one id is set. botId: string | null; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:18](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L18) +Defined in: [eigen-server/packages/server/src/protocol.ts:18](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L18) ##### userId @@ -1201,7 +1174,7 @@ Defined in: [eigen-server/packages/server/src/protocol.ts:18](https://github.com userId: string | null; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:17](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L17) +Defined in: [eigen-server/packages/server/src/protocol.ts:17](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L17) *** @@ -1291,7 +1264,7 @@ Defined in: eigen-server/packages/kernel/dist/index.d.ts:175 ### RetryOptions -Defined in: [eigen-server/packages/server/src/d1/retry.ts:59](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L59) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:59](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L59) #### Properties @@ -1301,7 +1274,7 @@ Defined in: [eigen-server/packages/server/src/d1/retry.ts:59](https://github.com optional attempts?: number; ``` -Defined in: [eigen-server/packages/server/src/d1/retry.ts:61](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L61) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:61](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L61) Total attempts including the first. Default 4. @@ -1311,7 +1284,7 @@ Total attempts including the first. Default 4. optional baseDelayMs?: number; ``` -Defined in: [eigen-server/packages/server/src/d1/retry.ts:63](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L63) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:63](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L63) First backoff, doubling each retry. Default 50ms. @@ -1321,7 +1294,7 @@ First backoff, doubling each retry. Default 50ms. optional maxDelayMs?: number; ``` -Defined in: [eigen-server/packages/server/src/d1/retry.ts:65](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L65) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:65](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L65) Backoff ceiling. Default 2000ms. @@ -1331,7 +1304,7 @@ Backoff ceiling. Default 2000ms. optional onRetry?: (error, attempt) => void; ``` -Defined in: [eigen-server/packages/server/src/d1/retry.ts:69](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L69) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:69](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L69) Observe each retry (logging); never throws into the loop. @@ -1352,7 +1325,7 @@ Observe each retry (logging); never throws into the loop. optional shouldRetry?: (error) => boolean; ``` -Defined in: [eigen-server/packages/server/src/d1/retry.ts:67](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L67) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:67](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L67) Which failures are worth retrying. Default [isTransientD1Error](#istransientd1error). @@ -1372,7 +1345,7 @@ Which failures are worth retrying. Default [isTransientD1Error](#istransientd1er optional sleep?: (ms) => Promise; ``` -Defined in: [eigen-server/packages/server/src/d1/retry.ts:71](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L71) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:71](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L71) Delay primitive, injectable so tests run without real timers. @@ -1388,162 +1361,23 @@ Delay primitive, injectable so tests run without real timers. *** -### SessionSnapshot - -Defined in: [eigen-server/packages/server/src/protocol.ts:98](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L98) - -The complete live truth about one game, as ONE SEAT sees it: the only message -the socket carries, and the body of every accepted command. - -Sent on socket open whatever the status, and after every committed change, -lobby or state. Self-describing and idempotent: a client that applies the -newest one it has seen is correct, having missed any number of earlier ones, -so there is no state for it to reconstruct and no channel for it to correlate -against another. +### RosterSnapshot -It carries the immutable header as well as the moving parts because a game -screen must not need a second source. That is what the old split cost: status -lived only in a D1 read nothing re-issued, so a client could observe a frame -without the status it belonged to, and never learned a game had started. +Defined in: [eigen-server/packages/server/src/protocol.ts:82](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L82) -Hidden information is safe by construction: the envelope is projected per seat -before it is sent, and `frame` is only ever the receiving principal's own -seat's view. +The unversioned pre-game snapshot: pushed to every socket on any +roster change, idempotent, so a reconnect just gets the current one. Also the +response body of an accepted waiting-room command. #### Properties -##### access - -```ts -access: GameAccess; -``` - -Defined in: [eigen-server/packages/server/src/protocol.ts:111](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L111) - -##### budgetSeconds - -```ts -budgetSeconds: number | null; -``` - -Defined in: [eigen-server/packages/server/src/protocol.ts:115](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L115) - -##### config - -```ts -config: JsonObject; -``` - -Defined in: [eigen-server/packages/server/src/protocol.ts:113](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L113) - -##### createdBy - -```ts -createdBy: string | null; -``` - -Defined in: [eigen-server/packages/server/src/protocol.ts:121](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L121) - -##### frame - -```ts -frame: FrameMessage | null; -``` - -Defined in: [eigen-server/packages/server/src/protocol.ts:131](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L131) - -The receiving seat's observation at `version`. Null in the lobby, and null -for a principal holding no seat, which is how an unseated client still -learns that the game started. - -##### gameId - -```ts -gameId: string; -``` - -Defined in: [eigen-server/packages/server/src/protocol.ts:109](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L109) - -Fixed at creation; carried so this is sufficient on its own. - -##### incrementSeconds - -```ts -incrementSeconds: number | null; -``` - -Defined in: [eigen-server/packages/server/src/protocol.ts:116](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L116) - -##### maxPlayers - -```ts -maxPlayers: number; -``` - -Defined in: [eigen-server/packages/server/src/protocol.ts:120](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L120) - -##### minPlayers - -```ts -minPlayers: number; -``` - -Defined in: [eigen-server/packages/server/src/protocol.ts:119](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L119) - ##### players ```ts players: Seat[]; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:125](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L125) - -##### rated - -```ts -rated: boolean; -``` - -Defined in: [eigen-server/packages/server/src/protocol.ts:117](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L117) - -##### ratingPool - -```ts -ratingPool: string | null; -``` - -Defined in: [eigen-server/packages/server/src/protocol.ts:118](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L118) - -##### schemaVersion - -```ts -schemaVersion: number; -``` - -Defined in: [eigen-server/packages/server/src/protocol.ts:112](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L112) - -##### seq - -```ts -seq: number; -``` - -Defined in: [eigen-server/packages/server/src/protocol.ts:106](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L106) - -Monotonic per game, incremented by every commit. Totally orders snapshots -across every path they arrive by, which `version` cannot do because a lobby -change has none. Apply a snapshot when `seq` exceeds the held one, OR when -it reports a terminal status the held state does not: `finished` and -`aborted` are absorbing, so they need no ordering, and the abort teardown -drops the storage `seq` lived in. - -##### shortCode - -```ts -shortCode: string; -``` - -Defined in: [eigen-server/packages/server/src/protocol.ts:110](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L110) +Defined in: [eigen-server/packages/server/src/protocol.ts:85](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L85) ##### status @@ -1551,41 +1385,21 @@ Defined in: [eigen-server/packages/server/src/protocol.ts:110](https://github.co status: GameStatus; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:124](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L124) - -What moves. - -##### turnSeconds - -```ts -turnSeconds: number | null; -``` - -Defined in: [eigen-server/packages/server/src/protocol.ts:114](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L114) +Defined in: [eigen-server/packages/server/src/protocol.ts:84](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L84) ##### type ```ts -type: "session"; +type: "roster"; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:99](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L99) - -##### version - -```ts -version: number | null; -``` - -Defined in: [eigen-server/packages/server/src/protocol.ts:127](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L127) - -The newest committed version, or null while the game is in the lobby. +Defined in: [eigen-server/packages/server/src/protocol.ts:83](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L83) *** ### SiteConfig -Defined in: [eigen-server/packages/server/src/site/config.ts:53](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L53) +Defined in: [eigen-server/packages/server/src/site/config.ts:53](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L53) The public web surface a deployed game serves on its own host: download page, legal documents, and the crawler files. Absent → none of it is mounted and @@ -1602,7 +1416,7 @@ The scaffold reserves these paths for the Worker with Static Assets' optional description?: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:59](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L59) +Defined in: [eigen-server/packages/server/src/site/config.ts:59](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L59) Longer download-page prose. Defaults to `tagline`. @@ -1612,7 +1426,7 @@ Longer download-page prose. Defaults to `tagline`. optional legal?: LegalConfig; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:73](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L73) +Defined in: [eigen-server/packages/server/src/site/config.ts:73](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L73) ##### madeByCredit? @@ -1620,7 +1434,7 @@ Defined in: [eigen-server/packages/server/src/site/config.ts:73](https://github. optional madeByCredit?: string | null; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:71](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L71) +Defined in: [eigen-server/packages/server/src/site/config.ts:71](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L71) Footer credit line. Defaults to [DEFAULT\_CREDIT](#default_credit); `null` removes it. @@ -1630,7 +1444,7 @@ Footer credit line. Defaults to [DEFAULT\_CREDIT](#default_credit); `null` remov optional name?: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:55](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L55) +Defined in: [eigen-server/packages/server/src/site/config.ts:55](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L55) Public game name in titles and OG tags. Defaults to `appName`. @@ -1640,7 +1454,7 @@ Public game name in titles and OG tags. Defaults to `appName`. optional ogImage?: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:69](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L69) +Defined in: [eigen-server/packages/server/src/site/config.ts:69](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L69) Path under `public/` to the 1200x630 OG image. Defaults to `/og-image.png`, the name the @@ -1654,7 +1468,7 @@ surfaces. The engine never generates images. operator: OperatorConfig; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:72](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L72) +Defined in: [eigen-server/packages/server/src/site/config.ts:72](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L72) ##### primaryColor @@ -1662,7 +1476,7 @@ Defined in: [eigen-server/packages/server/src/site/config.ts:72](https://github. primaryColor: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:61](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L61) +Defined in: [eigen-server/packages/server/src/site/config.ts:61](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L61) Hex accent colour, e.g. `#1a237e`. Also the `theme-color`. @@ -1672,7 +1486,7 @@ Hex accent colour, e.g. `#1a237e`. Also the `theme-color`. optional screenshots?: string[]; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:63](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L63) +Defined in: [eigen-server/packages/server/src/site/config.ts:63](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L63) Filenames under `public/screenshots/`, shown as a scrolling strip. @@ -1682,7 +1496,7 @@ Filenames under `public/screenshots/`, shown as a scrolling strip. tagline: string; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:57](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L57) +Defined in: [eigen-server/packages/server/src/site/config.ts:57](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L57) One-sentence hook. The meta description and OG description. @@ -1690,7 +1504,7 @@ One-sentence hook. The meta description and OG description. ### TokenVerifier -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:29](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L29) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:29](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L29) The seam `createEngine` consumes. Production is [createFirebaseVerifier](#createfirebaseverifier) with the default remote JWKS; tests inject a @@ -1704,7 +1518,7 @@ local JWKS and mint their own RS256 tokens. verify(token): Promise; ``` -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:31](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L31) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:31](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L31) Resolve a bearer token to claims, or throw [AuthError](#autherror). @@ -1768,7 +1582,7 @@ type Command = }; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:23](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L23) +Defined in: [eigen-server/packages/server/src/protocol.ts:23](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L23) Everything that crosses the worker → DO boundary after creation ( create itself is a worker-direct D1 write; the DO does not exist yet). @@ -1957,8 +1771,13 @@ type: LifecycleType; ```ts type CommandResult = | { + frame: FrameMessage | null; ok: true; - session: SessionSnapshot; + version: number; +} + | { + ok: true; + roster: RosterSnapshot; } | { code: | RejectCode @@ -1968,17 +1787,13 @@ type CommandResult = }; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:158](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L158) - -What `GameDO.handle()` returns: one accepted shape for every command kind, -the caller's own post-commit [SessionSnapshot](#sessionsnapshot), so a lobby command and a -move answer with the same value and the client feeds both into one path. +Defined in: [eigen-server/packages/server/src/protocol.ts:124](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L124) -Accepted results are stored for commandId dedupe and replayed verbatim to a -retry, which means a retry receives the snapshot as it was at first execution. -That is harmless rather than stale: `seq` orders it against whatever the -client now holds, so an older one is simply discarded. Rejections are computed -fresh each time, since re-evaluating one is always sound. +What `GameDO.handle()` returns; accepted results are stored for commandId +dedupe and replayed verbatim to a retry. Rejections are computed +fresh each time, since re-evaluating one is always sound. State-transitioning +commands answer with a version (+ the acting seat's frame); waiting-room +commands answer with the post-commit roster snapshot. *** @@ -1995,7 +1810,7 @@ type LobbyRejectCode = | "creatorCannotLeave"; ``` -Defined in: [eigen-server/packages/server/src/protocol.ts:62](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/protocol.ts#L62) +Defined in: [eigen-server/packages/server/src/protocol.ts:62](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/protocol.ts#L62) Why the DO refused a waiting-room command: the integrity column. These are *expected* refusals (accepted lobby staleness: the lobby may show @@ -2011,7 +1826,7 @@ rejections; the worker maps them to HTTP. Genuine protocol violations type UserRow = typeof users.$inferSelect; ``` -Defined in: [eigen-server/packages/server/src/auth/provision.ts:19](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/provision.ts#L19) +Defined in: [eigen-server/packages/server/src/auth/provision.ts:19](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/provision.ts#L19) ## Variables @@ -2036,7 +1851,7 @@ windows. The client's display-only `kServerDeadlineGrace` mirrors this. const DEFAULT_CREDIT: "Built with EigenInteractive" = "Built with EigenInteractive"; ``` -Defined in: [eigen-server/packages/server/src/site/config.ts:41](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/site/config.ts#L41) +Defined in: [eigen-server/packages/server/src/site/config.ts:41](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/site/config.ts#L41) The credit line in every page footer. Set `site.madeByCredit` to your own string, or to `null` to drop it. @@ -2053,7 +1868,7 @@ renders as plain text rather than pointing somewhere it never mentioned. function applyFinish(d1, input): Promise; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:48](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L48) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:48](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L48) Apply one finished game to D1. Returns the rated deltas (null for an unrated game) for the DO to deliver as the ratings transition. Throws on @@ -2079,7 +1894,7 @@ the call site; the internal loop only absorbs CAS conflicts). function createEngine(cfg): ExportedHandler; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:418](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L418) +Defined in: [eigen-server/packages/server/src/engine.ts:418](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L418) Creates the complete Cloudflare Worker for one game deployment. @@ -2126,7 +1941,7 @@ export default createEngine({ function createFirebaseVerifier(projectId, getKey?): TokenVerifier; ``` -Defined in: [eigen-server/packages/server/src/auth/firebase.ts:46](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/firebase.ts#L46) +Defined in: [eigen-server/packages/server/src/auth/firebase.ts:46](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/firebase.ts#L46) #### Parameters @@ -2147,7 +1962,7 @@ Defined in: [eigen-server/packages/server/src/auth/firebase.ts:46](https://githu function createGame(d1, input): Promise; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:314](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L314) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:314](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L314) Write the games row + one participants row per seat, atomically. The DO lazy-inits from exactly these rows on first contact. Callers own the @@ -2172,7 +1987,7 @@ shortCode retry: a duplicate trips the UNIQUE index and throws. function deriveBotKey(masterSecret, botId): Promise; ``` -Defined in: [eigen-server/packages/server/src/bot/bot-auth.ts:60](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/bot/bot-auth.ts#L60) +Defined in: [eigen-server/packages/server/src/bot/bot-auth.ts:60](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/bot/bot-auth.ts#L60) The per-bot signing key as base64, **the operator utility**. This is the one value an external bot's owner is given, and the only one they need: it @@ -2246,7 +2061,7 @@ function ensureUser( }>; ``` -Defined in: [eigen-server/packages/server/src/auth/provision.ts:51](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/auth/provision.ts#L51) +Defined in: [eigen-server/packages/server/src/auth/provision.ts:51](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/auth/provision.ts#L51) Load the caller's row, creating or backfilling it as the token demands. One read on the hot path; writes only on first sight and on guest → @@ -2281,7 +2096,7 @@ permanent conversion. function isTransientD1Error(error): boolean; ``` -Defined in: [eigen-server/packages/server/src/d1/retry.ts:55](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L55) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:55](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L55) True for the D1 failures worth retrying: a network blip, a storage or Durable-Object reset, a code-update restart, or a transient routing failure. @@ -2313,7 +2128,7 @@ This is the default predicate for [withRetry](#withretry); pass function mirrorRoster(d1, args): Promise; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:280](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L280) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:280](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L280) The roster mirror after a committed waiting-room command. The DO's roster is the integrity copy; this rewrites the D1 display copy wholesale @@ -2344,7 +2159,7 @@ single attempt. function openApiDocument(version): OpenAPIObject; ``` -Defined in: [eigen-server/packages/server/src/engine.ts:494](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/engine.ts#L494) +Defined in: [eigen-server/packages/server/src/engine.ts:494](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/engine.ts#L494) Build the API document from an inert app: route handlers never run, so the context can refuse everything. `appName` is an unused placeholder here: @@ -2401,7 +2216,7 @@ function readGameRow(d1, gameId): Promise< | undefined>; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:341](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L341) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:341](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L341) Lazy-init read: the D1 game + participants rows the DO copies into its `meta`/`roster` on first contact, in one batched round trip. @@ -2451,7 +2266,7 @@ its `meta`/`roster` on first contact, in one batched round trip. function updateSummary(d1, args): Promise; ``` -Defined in: [eigen-server/packages/server/src/d1/apply.ts:262](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/apply.ts#L262) +Defined in: [eigen-server/packages/server/src/d1/apply.ts:262](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/apply.ts#L262) The display upsert after a non-finishing transition: fire-and-forget post-commit (the DO leaves it unawaited; no `waitUntil`), single attempt, @@ -2481,7 +2296,7 @@ re-derivable from the DO at any time. function withRetry(op, options?): Promise; ``` -Defined in: [eigen-server/packages/server/src/d1/retry.ts:88](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/server/src/d1/retry.ts#L88) +Defined in: [eigen-server/packages/server/src/d1/retry.ts:88](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/server/src/d1/retry.ts#L88) Run `op`, retrying a *retryable* failure with jittered exponential backoff up to `attempts`. A non-retryable failure, or the last attempt, throws. diff --git a/docs/reference/typescript/testkit.md b/docs/reference/typescript/testkit.md index 6062639..0b33d85 100644 --- a/docs/reference/typescript/testkit.md +++ b/docs/reference/typescript/testkit.md @@ -8,7 +8,7 @@ assert on the resulting transitions and per-seat observations. ### ActionCase -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:82](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L82) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:82](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L82) A game-action case: exercises schemas, `applyAction`, and (through `expected.observation`) `computeObservation` for the acting seat. @@ -21,7 +21,7 @@ A game-action case: exercises schemas, `applyAction`, and (through action: JsonObject; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:93](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L93) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:93](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L93) ##### config @@ -29,7 +29,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:93](https://gith config: JsonObject; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:85](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L85) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:85](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L85) ##### expected @@ -43,7 +43,7 @@ expected: { }; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:94](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L94) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:94](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L94) ###### observation? @@ -81,7 +81,7 @@ valid: boolean; kind: "action"; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:83](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L83) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:83](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L83) ##### name @@ -89,7 +89,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:83](https://gith name: string; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:84](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L84) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:84](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L84) ##### obs? @@ -97,7 +97,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:84](https://gith optional obs?: JsonObject; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:88](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L88) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:88](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L88) Dart-side observation payload; unused here (defaults to `state`). @@ -107,7 +107,7 @@ Dart-side observation payload; unused here (defaults to `state`). optional participantCount?: number; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:91](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L91) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:91](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L91) ##### pending @@ -115,7 +115,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:91](https://gith pending: number[]; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:89](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L89) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:89](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L89) ##### playerIndex @@ -123,7 +123,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:89](https://gith playerIndex: number; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:90](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L90) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:90](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L90) ##### rngSeed? @@ -131,7 +131,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:90](https://gith optional rngSeed?: string; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:92](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L92) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:92](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L92) ##### state @@ -139,13 +139,13 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:92](https://gith state: JsonObject; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:86](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L86) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:86](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L86) *** ### BotSeatableCase -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:118](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L118) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:118](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L118) A `botSeatable` predicate case. @@ -157,7 +157,7 @@ A `botSeatable` predicate case. botConfig: JsonObject; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:122](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L122) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:122](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L122) ##### expected @@ -165,7 +165,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:122](https://git expected: boolean; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:123](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L123) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:123](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L123) ##### gameConfig @@ -173,7 +173,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:123](https://git gameConfig: JsonObject; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:121](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L121) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:121](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L121) ##### kind @@ -181,7 +181,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:121](https://git kind: "botSeatable"; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:119](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L119) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:119](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L119) ##### name @@ -189,13 +189,13 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:119](https://git name: string; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:120](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L120) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:120](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L120) *** ### BuildGameContractOptions -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:45](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L45) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:45](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L45) Inputs for building a [GameContract](#gamecontract) without writing it. @@ -211,7 +211,7 @@ Inputs for building a [GameContract](#gamecontract) without writing it. optional fixturesRoot?: any; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:51](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L51) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:51](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L51) Root containing `v/*.json` twin fixtures. @@ -221,7 +221,7 @@ Root containing `v/*.json` twin fixtures. game: string; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:47](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L47) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:47](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L47) Stable display name used as the generated Dart type prefix. @@ -231,7 +231,7 @@ Stable display name used as the generated Dart type prefix. gameModule: GameModule; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:49](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L49) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:49](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L49) Authoritative TypeScript rules registry. @@ -404,7 +404,7 @@ the host delivers them as a follow-up versioned ratings transition. ### EmitGameContractOptions -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:55](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L55) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:55](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L55) Inputs for emitting or checking a [GameContract](#gamecontract) file. @@ -420,7 +420,7 @@ Inputs for emitting or checking a [GameContract](#gamecontract) file. optional fixturesRoot?: any; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:51](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L51) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:51](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L51) Root containing `v/*.json` twin fixtures. @@ -434,7 +434,7 @@ Root containing `v/*.json` twin fixtures. game: string; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:47](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L47) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:47](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L47) Stable display name used as the generated Dart type prefix. @@ -448,7 +448,7 @@ Stable display name used as the generated Dart type prefix. gameModule: GameModule; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:49](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L49) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:49](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L49) Authoritative TypeScript rules registry. @@ -462,7 +462,7 @@ Authoritative TypeScript rules registry. output: any; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:57](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L57) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:57](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L57) Destination `game-contract.json` path. @@ -470,7 +470,7 @@ Destination `game-contract.json` path. ### GameContract -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:37](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L37) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:37](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L37) Language-neutral schemas and fixtures shared by a game's Worker and app. @@ -482,7 +482,7 @@ Language-neutral schemas and fixtures shared by a game's Worker and app. fixtures: GameContractFixture[]; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:41](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L41) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:41](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L41) ##### formatVersion @@ -490,7 +490,7 @@ Defined in: [eigen-server/packages/testkit/src/game-contract.ts:41](https://gith formatVersion: 1; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:38](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L38) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:38](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L38) ##### game @@ -498,7 +498,7 @@ Defined in: [eigen-server/packages/testkit/src/game-contract.ts:38](https://gith game: string; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:39](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L39) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:39](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L39) ##### versions @@ -506,13 +506,13 @@ Defined in: [eigen-server/packages/testkit/src/game-contract.ts:39](https://gith versions: Record; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:40](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L40) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:40](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L40) *** ### GameContractFixture -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:19](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L19) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:19](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L19) One validated twin-fixture document embedded in a [GameContract](#gamecontract). @@ -524,7 +524,7 @@ One validated twin-fixture document embedded in a [GameContract](#gamecontract). document: unknown; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:23](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L23) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:23](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L23) Validated fixture document, retained in its original JSON shape. @@ -534,7 +534,7 @@ Validated fixture document, retained in its original JSON shape. path: string; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:21](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L21) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:21](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L21) POSIX-style path relative to the supplied fixtures root. @@ -542,7 +542,7 @@ POSIX-style path relative to the supplied fixtures root. ### GameContractVersion -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:27](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L27) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:27](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L27) The four JSON Schemas emitted for one game `schemaVersion`. @@ -559,7 +559,7 @@ schemas: { }; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:28](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L28) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:28](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L28) ###### action @@ -701,7 +701,7 @@ Defined in: eigen-server/packages/kernel/dist/index.d.ts:116 ### RatingPoolCase -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:104](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L104) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:104](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L104) A `ratingPool` predicate case. Omitted timing fields mean null. @@ -713,7 +713,7 @@ A `ratingPool` predicate case. Omitted timing fields mean null. access: GameAccess; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:107](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L107) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:107](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L107) ##### budgetSeconds? @@ -721,7 +721,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:107](https://git optional budgetSeconds?: number | null; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:109](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L109) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:109](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L109) ##### config @@ -729,7 +729,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:109](https://git config: JsonObject; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:113](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L113) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:113](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L113) ##### expected @@ -737,7 +737,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:113](https://git expected: string | null; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:114](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L114) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:114](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L114) ##### incrementSeconds? @@ -745,7 +745,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:114](https://git optional incrementSeconds?: number | null; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:110](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L110) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:110](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L110) ##### kind @@ -753,7 +753,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:110](https://git kind: "ratingPool"; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:105](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L105) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:105](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L105) ##### maxPlayers @@ -761,7 +761,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:105](https://git maxPlayers: number; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:112](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L112) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:112](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L112) ##### minPlayers @@ -769,7 +769,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:112](https://git minPlayers: number; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:111](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L111) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:111](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L111) ##### name @@ -777,7 +777,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:111](https://git name: string; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:106](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L106) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:106](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L106) ##### turnSeconds? @@ -785,7 +785,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:106](https://git optional turnSeconds?: number | null; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:108](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L108) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:108](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L108) *** @@ -968,7 +968,7 @@ Defined in: eigen-server/packages/kernel/dist/index.d.ts:246 ### TwinFixtureFile -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:75](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L75) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:75](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L75) One fixture file: cases targeting one `schemaVersion` unit. @@ -980,7 +980,7 @@ One fixture file: cases targeting one `schemaVersion` unit. cases: TwinFixtureCase[]; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:77](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L77) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:77](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L77) ##### schemaVersion @@ -988,7 +988,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:77](https://gith schemaVersion: number; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:76](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L76) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:76](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L76) ## Type Aliases @@ -1186,7 +1186,7 @@ type TwinFixtureCase = | BotSeatableCase; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:126](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L126) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:126](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L126) ## Variables @@ -1196,7 +1196,7 @@ Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:126](https://git const GAME_CONTRACT_FORMAT_VERSION: 1 = 1; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:16](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L16) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:16](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L16) Current format of the language-neutral contract consumed by EigenInteractive's Dart generator. @@ -1208,7 +1208,7 @@ Current format of the language-neutral contract consumed by EigenInteractive's D function buildGameContract(options): GameContract; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:121](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L121) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:121](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L121) Build a deterministic in-memory contract without touching the filesystem. @@ -1230,7 +1230,7 @@ Build a deterministic in-memory contract without touching the filesystem. function checkConfiguredGameContract(root?): Promise; ``` -Defined in: [eigen-server/packages/testkit/src/contract-command.ts:76](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/contract-command.ts#L76) +Defined in: [eigen-server/packages/testkit/src/contract-command.ts:76](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/contract-command.ts#L76) Fails when the conventionally configured contract is absent or stale. @@ -1254,7 +1254,7 @@ Use this in CI through `eigen-contract --check`. function checkGameContract(options): void; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:165](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L165) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:165](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L165) Fail when an emitted contract is missing or differs from its inputs. @@ -1296,7 +1296,7 @@ Defined in: eigen-server/packages/kernel/dist/index.d.ts:372 function deepEquals(a, b): boolean; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:480](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L480) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:480](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L480) Structural JSON equality. Object keys with `undefined` values count as absent (matching how schema libraries model optional fields); array order @@ -1349,7 +1349,7 @@ derivation is fixed, so recorded games stay replayable. function emitConfiguredGameContract(root?): Promise; ``` -Defined in: [eigen-server/packages/testkit/src/contract-command.ts:67](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/contract-command.ts#L67) +Defined in: [eigen-server/packages/testkit/src/contract-command.ts:67](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/contract-command.ts#L67) Emits `game-contract.json` from an EigenInteractive package's conventional layout. @@ -1374,7 +1374,7 @@ games should invoke the executable through their package script. function emitGameContract(options): void; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:159](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L159) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:159](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L159) Emit one deterministic, newline-terminated `game-contract.json`. @@ -1396,7 +1396,7 @@ Emit one deterministic, newline-terminated `game-contract.json`. function evaluateTwinCase(rules, kase): string[]; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:274](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L274) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:274](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L274) Run one fixture case against a rules unit, returning failure descriptions (empty ⇒ the case passes). Pure; the file-reading test registrar is @@ -1421,7 +1421,7 @@ Run one fixture case against a rules unit, returning failure descriptions function gameContractFilename(game): string; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:173](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L173) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:173](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L173) A useful default filename for scripts that accept an output directory. @@ -1443,7 +1443,7 @@ A useful default filename for scripts that accept an output directory. function gameContractJson(options): string; ``` -Defined in: [eigen-server/packages/testkit/src/game-contract.ts:154](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/game-contract.ts#L154) +Defined in: [eigen-server/packages/testkit/src/game-contract.ts:154](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/game-contract.ts#L154) Render one deterministic, newline-terminated contract document. @@ -1487,7 +1487,7 @@ Type guard: did `commit()` refuse the intent? function parseTwinFixtureFile(path, json): TwinFixtureFile; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:247](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L247) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:247](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L247) Validate one fixture file's parsed JSON, or throw naming the offending file, case, and field. Exported so a repo can lint its fixtures without @@ -1512,7 +1512,7 @@ running them. function projectView(rules, args): SeatView; ``` -Defined in: [eigen-server/packages/testkit/src/kernel-scenarios.ts:39](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/kernel-scenarios.ts#L39) +Defined in: [eigen-server/packages/testkit/src/kernel-scenarios.ts:39](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/kernel-scenarios.ts#L39) Project one seat's view of a state: the stored-frame shape the same-view rule compares (`commit()`'s `staleViews` input). Convenience for scenario @@ -1562,7 +1562,7 @@ never expose it: the whole randomness of the game is derivable from it). function twinFixtureTests(gameModule, fixturesRoot): void; ``` -Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:290](https://github.com/eigeninteractive/eigen-server/blob/e140da5ee5f916a4a763b17c9dc338cb836484b6/packages/testkit/src/twin-fixtures.ts#L290) +Defined in: [eigen-server/packages/testkit/src/twin-fixtures.ts:290](https://github.com/eigeninteractive/eigen-server/blob/9516295cfda7a65c832f8bfca4371965d368d1ff/packages/testkit/src/twin-fixtures.ts#L290) Register one vitest test per fixture case found under `fixturesRoot` (layout: `/v/*.json`). Call at the top level of a test module diff --git a/static/openapi.json b/static/openapi.json index 742c02b..f31b2c1 100644 --- a/static/openapi.json +++ b/static/openapi.json @@ -420,178 +420,6 @@ "games" ] }, - "Session": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "session" - ] - }, - "seq": { - "type": "integer" - }, - "gameId": { - "type": "string" - }, - "shortCode": { - "type": "string" - }, - "access": { - "$ref": "#/components/schemas/GameAccess" - }, - "schemaVersion": { - "type": "integer" - }, - "config": { - "type": "object" - }, - "turnSeconds": { - "type": [ - "integer", - "null" - ] - }, - "budgetSeconds": { - "type": [ - "integer", - "null" - ] - }, - "incrementSeconds": { - "type": [ - "integer", - "null" - ] - }, - "rated": { - "type": "boolean" - }, - "ratingPool": { - "type": [ - "string", - "null" - ] - }, - "minPlayers": { - "type": "integer" - }, - "maxPlayers": { - "type": "integer" - }, - "createdBy": { - "type": [ - "string", - "null" - ] - }, - "status": { - "$ref": "#/components/schemas/GameStatus" - }, - "players": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Seat" - } - }, - "version": { - "type": [ - "integer", - "null" - ] - }, - "frame": { - "anyOf": [ - { - "$ref": "#/components/schemas/Frame" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "type", - "seq", - "gameId", - "shortCode", - "access", - "schemaVersion", - "config", - "turnSeconds", - "budgetSeconds", - "incrementSeconds", - "rated", - "ratingPool", - "minPlayers", - "maxPlayers", - "createdBy", - "status", - "players", - "version", - "frame" - ] - }, - "Frame": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "frame" - ] - }, - "version": { - "type": "integer" - }, - "data": { - "type": "object" - }, - "pendingPlayers": { - "type": "array", - "items": { - "type": "integer" - } - }, - "deadline": { - "type": [ - "integer", - "null" - ] - }, - "playerTimes": { - "type": [ - "array", - "null" - ], - "items": { - "type": "integer" - } - }, - "outcomes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Outcome" - } - }, - "ratings": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RatingDelta" - } - } - }, - "required": [ - "type", - "version", - "data", - "pendingPlayers", - "deadline", - "playerTimes" - ] - }, "Players": { "type": "object", "properties": { @@ -887,12 +715,85 @@ "SoloStarted": { "type": "object", "properties": { - "session": { - "$ref": "#/components/schemas/Session" + "gameId": { + "type": "string" + }, + "shortCode": { + "type": "string" + }, + "version": { + "type": "integer" + }, + "frame": { + "$ref": "#/components/schemas/Frame" } }, "required": [ - "session" + "gameId", + "shortCode", + "version", + "frame" + ] + }, + "Frame": { + "type": [ + "object", + "null" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "frame" + ] + }, + "version": { + "type": "integer" + }, + "data": { + "type": "object" + }, + "pendingPlayers": { + "type": "array", + "items": { + "type": "integer" + } + }, + "deadline": { + "type": [ + "integer", + "null" + ] + }, + "playerTimes": { + "type": [ + "array", + "null" + ], + "items": { + "type": "integer" + } + }, + "outcomes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Outcome" + } + }, + "ratings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RatingDelta" + } + } + }, + "required": [ + "type", + "version", + "data", + "pendingPlayers", + "deadline", + "playerTimes" ] }, "CreateSolo": { @@ -955,15 +856,44 @@ "botIds" ] }, - "CommandAccepted": { + "Joined": { + "type": "object", + "properties": { + "gameId": { + "type": "string" + }, + "roster": { + "$ref": "#/components/schemas/Roster" + } + }, + "required": [ + "gameId", + "roster" + ] + }, + "Roster": { "type": "object", "properties": { - "session": { - "$ref": "#/components/schemas/Session" + "type": { + "type": "string", + "enum": [ + "roster" + ] + }, + "status": { + "$ref": "#/components/schemas/GameStatus" + }, + "players": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Seat" + } } }, "required": [ - "session" + "type", + "status", + "players" ] }, "Join": { @@ -1001,6 +931,17 @@ } ] }, + "LobbyAccepted": { + "type": "object", + "properties": { + "roster": { + "$ref": "#/components/schemas/Roster" + } + }, + "required": [ + "roster" + ] + }, "LobbyCommand": { "type": "object", "properties": { @@ -1027,6 +968,21 @@ "botId" ] }, + "CommandAccepted": { + "type": "object", + "properties": { + "version": { + "type": "integer" + }, + "frame": { + "$ref": "#/components/schemas/Frame" + } + }, + "required": [ + "version", + "frame" + ] + }, "Action": { "type": "object", "properties": { @@ -1617,77 +1573,6 @@ } } }, - "/api/engine/games/{gameId}/session": { - "get": { - "operationId": "getGameSession", - "tags": [ - "Games" - ], - "parameters": [ - { - "schema": { - "type": "string", - "minLength": 1 - }, - "required": true, - "name": "gameId", - "in": "path" - } - ], - "responses": { - "200": { - "description": "The caller's current session snapshot", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Session" - } - } - } - }, - "400": { - "description": "Invalid request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "401": { - "description": "Missing or invalid token", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "403": { - "description": "Not allowed", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - }, - "404": { - "description": "Not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - } - }, "/api/engine/players": { "get": { "operationId": "getPlayers", @@ -2424,11 +2309,11 @@ }, "responses": { "200": { - "description": "Seated: the post-join session", + "description": "Seated: the game's id and the post-join roster", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CommandAccepted" + "$ref": "#/components/schemas/Joined" } } } @@ -2514,11 +2399,11 @@ }, "responses": { "200": { - "description": "Seated: the post-join session", + "description": "Seated: the game's id and the post-join roster", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CommandAccepted" + "$ref": "#/components/schemas/Joined" } } } @@ -2615,11 +2500,11 @@ }, "responses": { "200": { - "description": "Left: the post-leave session", + "description": "Left: the post-leave roster", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CommandAccepted" + "$ref": "#/components/schemas/LobbyAccepted" } } } @@ -2720,7 +2605,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CommandAccepted" + "$ref": "#/components/schemas/LobbyAccepted" } } } @@ -2817,11 +2702,11 @@ }, "responses": { "200": { - "description": "Bot seated: the post-commit session", + "description": "Bot seated: the new roster", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CommandAccepted" + "$ref": "#/components/schemas/LobbyAccepted" } } } @@ -2918,7 +2803,7 @@ }, "responses": { "200": { - "description": "Started: the session at version 0", + "description": "Started: version 0 committed", "content": { "application/json": { "schema": { @@ -3019,7 +2904,7 @@ }, "responses": { "200": { - "description": "Committed: the acting seat's session", + "description": "Committed: the acting seat's frame", "content": { "application/json": { "schema": {