Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
3bc6cbd
docs: define game server and package v1 contracts
NWYLZW Sep 8, 2026
a3a0312
docs: define cross-component game platform acceptance
NWYLZW Sep 8, 2026
155e43a
Implement scoped Agent dispatch lifecycle and seat transport
NWYLZW Sep 8, 2026
c11331d
feat: implement isolated authoritative game server and scoped seats
NWYLZW Sep 8, 2026
39fe530
Merge commit '155e43af73ca6f051c921d3bb119e19581dbf8bc' into codex/ga…
NWYLZW Sep 8, 2026
0245334
Merge commit 'c11331de6003aec36e259c387063d01c895c4a13' into codex/ga…
NWYLZW Sep 8, 2026
093fbfd
fix: isolate package installs and reconcile expired escrow
NWYLZW Sep 8, 2026
049611a
feat(games): add authoritative Gomoku and Holdem packages with build …
NWYLZW Sep 8, 2026
c6ddc66
Merge remote-tracking branch 'origin/codex/game-server' into codex/ga…
NWYLZW Sep 8, 2026
fcd1390
Merge remote-tracking branch 'origin/codex/game-packages' into codex/…
NWYLZW Sep 8, 2026
a32355a
test: integrate game escrow and multi-seat match lifecycle
NWYLZW Sep 8, 2026
35f3b43
feat(client): scaffold Host-owned game lobby and bounded adapters
NWYLZW Sep 8, 2026
bf8e89b
docs: index game packages and format integration checks
NWYLZW Sep 8, 2026
a0eeaf7
Merge remote-tracking branch 'origin/codex/game-client' into codex/ga…
NWYLZW Sep 8, 2026
9b2af8c
test(games): verify exact side pots and reproducible packages
NWYLZW Sep 8, 2026
56f537e
Connect public AgentLoop control and verify multi-seat recovery
NWYLZW Sep 8, 2026
b7ec79d
fix(games): clear private cards and actions while awaiting next match
NWYLZW Sep 8, 2026
7542986
Merge remote-tracking branch 'origin/codex/game-agents' into codex/ga…
NWYLZW Sep 8, 2026
cabd48f
docs: introduce component development and self-hosting entry points
NWYLZW Sep 8, 2026
0f6df86
build(games): retain MIT notices in distributable packages
NWYLZW Sep 8, 2026
03a1c0b
Verify Agent dispatch through published Gomoku and Holdem games
NWYLZW Sep 8, 2026
06e2e00
feat: harden escrow recovery and deliver self-hosted runtime gates
NWYLZW Sep 8, 2026
5cb9773
Merge commit '06e2e001d108e16d5dac9dad4d6b6e5615c45807' into codex/ga…
NWYLZW Sep 8, 2026
0df2522
Make exported Agent source dependencies portable to clean clients
NWYLZW Sep 8, 2026
385a0c3
Merge commit '0df25226eb747bc8dc3f735d0c629003b544c4ac' into codex/ga…
NWYLZW Sep 8, 2026
88155a8
feat: render game UI in isolated guests as bounded declarative scenes
NWYLZW Sep 8, 2026
5700c9f
Merge commit '88155a87cfd55949796714fa9a2f8138d1425cbb' into codex/ga…
NWYLZW Sep 8, 2026
d113e45
test: exercise isolated scene rendering across escrow matches
NWYLZW Sep 8, 2026
981c1c9
test: exercise compiled guests inside constrained server container
NWYLZW Sep 8, 2026
38b2d97
ci: run pinned cross-service economic integration
NWYLZW Sep 8, 2026
dbaf502
Merge commit '981c1c985aab91aad5bb4b71757706c0f2083395' into codex/ga…
NWYLZW Sep 8, 2026
409324d
Use public controlled Agent creation in Host game working directories
NWYLZW Sep 8, 2026
87699cd
feat(games): generate trusted scenes in isolated UI guests
NWYLZW Sep 8, 2026
ad91a4e
Merge commit '87699cd0bf3e777ece8769a0f20d6b1c9bf239e3' into codex/ga…
NWYLZW Sep 8, 2026
5c791cc
Validate Agent dispatch against fixed scene-v1 game packages
NWYLZW Sep 8, 2026
1b902b3
Merge commit '5c791cc8cd748a0e8a8a723bf40af5aa419f099a' into codex/ga…
NWYLZW Sep 8, 2026
ee25a58
Verify work-ledger game exclusion before Agent inference
NWYLZW Sep 8, 2026
4f23484
Keep ordinary Agent dispatch independent of reward plugins
NWYLZW Sep 8, 2026
8543db4
Merge commit '4f23484d4ef1b47db4c6617f5daf0b63849a539b' into codex/ga…
NWYLZW Sep 8, 2026
81b6303
Merge commit '4f23484d4ef1b47db4c6617f5daf0b63849a539b' into codex/ga…
NWYLZW Sep 8, 2026
66adc01
fix: abort and refund matches when seat UI projection fails
NWYLZW Sep 8, 2026
b3a27c6
Merge commit '66adc014ff790d2e204236a6c049c3720d249f82' into codex/ga…
NWYLZW Sep 8, 2026
d55f8f7
Merge commit '66adc014ff790d2e204236a6c049c3720d249f82' of /Users/yij…
NWYLZW Sep 8, 2026
9f606a9
feat(client): integrate secure game scenes, agents and wallet funding
NWYLZW Sep 8, 2026
709db77
test: verify funded UI failures refund through real economy
NWYLZW Sep 8, 2026
a92e4e8
Merge commit '9f606a9e6b68f9616cbb46ebd79983b1044f22de' of /Users/yij…
NWYLZW Sep 8, 2026
09941c9
ci: exercise shipped games and scoped agents against server
NWYLZW Sep 8, 2026
4a5538a
fix(client): bound discovery streams and clear stale action recovery
NWYLZW Sep 8, 2026
835a856
Merge branch 'codex/game-client' of /Users/yijie/.codex/worktrees/a50…
NWYLZW Sep 8, 2026
f6ea90a
test(client): verify streaming response limits and cancellation
NWYLZW Sep 8, 2026
0790724
Merge branch 'codex/game-client' of /Users/yijie/.codex/worktrees/a50…
NWYLZW Sep 8, 2026
d7e1f99
test: settle shipped Gomoku and Holdem with shared Token ledger
NWYLZW Sep 8, 2026
53e4108
docs(games): pin final experimental scene contract reference
NWYLZW Sep 8, 2026
f0076b6
docs(agents): record portable Host SDK checkpoint
NWYLZW Sep 8, 2026
b63b0ac
Merge branch 'codex/game-packages' of /Users/yijie/.codex/worktrees/6…
NWYLZW Sep 8, 2026
cca3ab8
Merge branch 'codex/game-agents' of /Users/yijie/.codex/worktrees/402…
NWYLZW Sep 8, 2026
38e2e16
build(client): pin the reproducible complete Host SDK
NWYLZW Sep 8, 2026
d96760f
ci: verify clean client builds against real server
NWYLZW Sep 8, 2026
53f400a
docs(agents): verify shared Protocol SDK consumer
NWYLZW Sep 8, 2026
9afb92f
build(client): share the corrected Protocol identity across SDK consu…
NWYLZW Sep 8, 2026
e70eeaa
Merge branch 'codex/game-client' of /Users/yijie/.codex/worktrees/a50…
NWYLZW Sep 8, 2026
fa3c77f
Merge branch 'codex/game-agents' of /Users/yijie/.codex/worktrees/402…
NWYLZW Sep 8, 2026
25b94f8
ci: assemble unified economy and client SDK candidates
NWYLZW Sep 8, 2026
99cabea
docs(agents): track isolated SDK toolchain candidate
NWYLZW Sep 8, 2026
759c4a3
docs(agents): verify final SDK smoke consumer
NWYLZW Sep 8, 2026
f3d24a0
build(client): pin SDK with isolated plugin compiler tools
NWYLZW Sep 8, 2026
e5894ab
Merge branch 'codex/game-client' of /Users/yijie/.codex/worktrees/a50…
NWYLZW Sep 8, 2026
9458b69
Merge branch 'codex/game-agents' of /Users/yijie/.codex/worktrees/402…
NWYLZW Sep 8, 2026
cbcd07c
ci: consume isolated SDK toolchain candidate across integrations
NWYLZW Sep 8, 2026
4795cf8
feat: provide persistent local demo with a disclosed practice opponent
NWYLZW Sep 9, 2026
5039ecd
fix(client): open live game rooms in a standalone main page
NWYLZW Sep 9, 2026
e41bc0f
Merge persistent local game preview and practice opponent
NWYLZW Sep 9, 2026
afda61e
Merge standalone live lobby and interaction fixes
NWYLZW Sep 9, 2026
70e1e8f
fix(client): declare native Host render permissions
NWYLZW Sep 9, 2026
94041a2
fix(client): adapt game navigation to narrow native panes
NWYLZW Sep 9, 2026
6f53520
fix(client): trust configured public origins
NWYLZW Sep 9, 2026
0108d09
build(client): pin development permission SDK
NWYLZW Sep 9, 2026
dfb71c5
Merge remote-tracking branch 'origin/codex/game-client' into codex/ga…
NWYLZW Sep 9, 2026
92c7c7e
fix(client): refine native game lobby layout
NWYLZW Sep 9, 2026
594a3e5
Merge remote-tracking branch 'origin/codex/game-client' into codex/ga…
NWYLZW Sep 9, 2026
771dd31
fix(client): tune lobby density
NWYLZW Sep 9, 2026
edd8d35
Merge remote-tracking branch 'origin/codex/game-client' into codex/ga…
NWYLZW Sep 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
.git
node_modules
dist
.data
.env
.env.*
*.sqlite
*.sqlite-*
client
agents
games
61 changes: 61 additions & 0 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Cross-service integration
on:
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: integration-${{ github.ref }}
cancel-in-progress: true
jobs:
client:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24.14.1
- run: npm ci --ignore-scripts && npm run build
- run: node scripts/prepare-sdk.mjs
working-directory: client
- run: npm ci --ignore-scripts && npm run check && npm run dev:dry-run && npm run check:artifact
working-directory: client
env:
GAME_ROOM_SERVER_MODULE: ${{ github.workspace }}/dist/server/http.js
games-and-agents:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24.14.1
- run: npm ci --ignore-scripts && npm run build
- run: npm ci --ignore-scripts && npm run check
working-directory: games
- run: npm ci --ignore-scripts && npm run check && npm run check:consumer
working-directory: agents
env:
GAME_ROOM_SERVER_SOURCE: ${{ github.workspace }}
GAME_ROOM_PACKAGES: ${{ github.workspace }}/games/dist
economy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
path: game
- uses: actions/checkout@v4
with:
repository: cordisx/plugin-economy
ref: ce058c9ed530277897b7c0bcaa7c9d433f946908
path: economy
- uses: actions/setup-node@v4
with:
node-version: 24.14.1
- run: npm ci --ignore-scripts && npm run build
working-directory: economy
- run: npm ci --ignore-scripts && npm run build
working-directory: game
- run: node --test integration/economy.test.mjs
working-directory: game
env:
ECONOMY_REPOSITORY: ${{ github.workspace }}/economy
29 changes: 29 additions & 0 deletions .github/workflows/server.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Game server
on:
pull_request:
paths: ['server/**', 'sdk/**', 'tests/server/**', 'deploy/**', 'docs/server*.md', 'package*.json', 'tsconfig.json', 'dprint.json', 'eslint.config.mjs', '.github/workflows/server.yml']
push:
branches: [main, codex/game-server]
permissions:
contents: read
jobs:
check:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version: '24.14.1'
cache: npm
- run: npm ci
- run: npm run check
- run: docker compose -f deploy/compose.yaml config --quiet
- run: docker build -f deploy/Dockerfile -t game-room-ci .
- name: Run constrained container smoke
run: >-
docker run --rm --read-only --tmpfs /tmp:rw,nosuid
--tmpfs /data:rw,uid=1000,gid=1000 --cap-drop ALL
--security-opt no-new-privileges
--mount type=bind,source="$PWD/deploy/container-smoke.mjs",target=/app/container-smoke.mjs,readonly
--entrypoint node game-room-ci /app/container-smoke.mjs
7 changes: 2 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
node_modules/
dist/
.env
.env.*
!.env.example
*.sqlite*
*.sqlite
*.sqlite-*
.data/
coverage/
.development/
53 changes: 49 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,52 @@
# plugin-game-room
# CordisX Game Room

Extensible multiplayer games for CordisX: plugin, authoritative server and game SDK.
A multiplayer game platform with a CordisX client, self-hosted authoritative
server, uploadable game packages and personal Agent dispatch.

Status: initial development, not a released or verified product.
The lobby brings rooms from multiple servers together. A room pins its author's
game package: the server executes its rules and players receive their own seat's
view. Gomoku and Texas Hold'em are the first example packages; new games use the
same publishing and room APIs.

See [development scope](docs/architecture.md).
This repository is under active development. Server and economic integration
have executable checks; the complete native client and uploaded UI runtime are
still being integrated. See the [integration evidence](docs/integration.md) for
the distinction between component tests and a complete application.

## Run a server

With Node.js 24.14 or newer:

```sh
npm ci
npm run build
npm run dev:server
```

The default address is `http://127.0.0.1:8787`. Follow
[self-hosting](docs/server-development.md) for persistent storage, deployment
configuration, TLS and recovery. Each deployment is an independent data source.

Score-only and match-local chips work without an economic service. Shared
entertainment Token coins use the separate
[Economy service](https://github.com/cordisx/plugin-economy), with explicit
stake consent and conserved settlement. These are virtual game coins.

## Develop and extend

| Component | Guide |
| --- | --- |
| CordisX client | [Client development](docs/client.md) |
| HTTP and rule runtime | [Server API and GamePackage v1](docs/server-api.md) |
| Gomoku and Hold'em | [Example games](docs/games.md) |
| Your own game | [Authoring and publishing](docs/games-authoring.md) |
| Personal Agent seats | [Dispatch service](docs/agents.md) |
| Cross-service verification | [Integration checks](docs/integration.md) |

The server, `client/`, `games/` and `agents/` have independent package locks.
Install and build each component from its own directory. The server never
imports uploaded rules as trusted Node modules; resource isolation and game
fairness are separate properties. An author's review status is displayed and
does not prove the rules are fair.

Licensed under [MIT](LICENSE).
3 changes: 3 additions & 0 deletions agents/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules/
dist/
*.tsbuildinfo
Loading
Loading