No description
- T21: place-piece — calls engine.spawnPiece on resolved square - T22: destroy-piece — retracts piece facts; enqueues on-captured - T23: move-piece — updates Position + HasMoved; enqueues on-move + on-moved-onto-square - T24: swap-pieces — atomic Position swap; enqueues 2 on-move events - T25: convert-piece-type — changes PieceType; enqueues on-promotion (with previous-equality short-circuit) - T26: set-piece-attr — generic attr insert (parity descriptors use heavily); lifetime field accepted but ignored in V1 - T27: cancel-capture — sets CaptureCancelled flag on GAME_ENTITY; rejects outside on-captured context T20 test fix: synthetic suppressTriggers test moved from 'swap-pieces' kind (T24 took it) to 'spawn-marker-pair' (Wave 6 / T29 territory). Registry: 26 -> 33 primitives. Tests: 2120 -> 2225 (+105). bun run check exit 0. |
||
|---|---|---|
| .github/workflows | ||
| .sisyphus | ||
| docs | ||
| packages | ||
| scripts | ||
| .gitignore | ||
| eslint.config.js | ||
| lefthook.yml | ||
| LICENSE | ||
| package.json | ||
| playwright.config.ts | ||
| README.md | ||
| tsconfig.base.json | ||
| tsconfig.json | ||
| vitest.workspace.ts | ||
@paratype
A Doorenbos-style Rete II rules engine for TypeScript games, with an authoritative WebSocket chess demo.
Packages
packages/rete— Rete II engine corepackages/chess— Browser chess demo (React + Vite)packages/server— Authoritative Bun WebSocket server
Docs
- SPEC.md — Engine specification
- PHASES.md — Development phases & perf budgets
- RULES.md — Chess rule presets
- PROTOCOL.md — WebSocket message protocol
Getting Started
bun install && bun run check