No description
Marker primitives: - T28: spawn-marker — wraps engine.spawnMarker (T10) - T29: spawn-marker-pair — atomic dual spawn with mutual MarkerLinks (portals); T20 synthetic test moved to non-IMPERATIVE_KINDS placeholder - T30: destroy-marker — fires on-marker-expire (T19) then engine.removeMarker Iteration primitives (deterministic sort by entity id / index): - T31: for-each-piece — filter (color/pieceType), bind via T11, recurse - T32: for-each-square — squares='all'|number[], deterministic 0-63 default - T33: for-each-adjacent — 8-neighbor with edge clipping, optional excludeKing/occupied filter - T34: for-each-marker — filter (markerKind/owner), bind id, recurse - T35: for-column + for-row — explicit index lists, dedupe + sort Bonus infra: util/lifetime-registry.ts (will be used by T42). Registry: 33 -> 42 primitives (+9). Tests: 2225 -> 2426 (+201). 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