@libgeorge/shared-runtime
v0.1.0
Published
This repo provides a **deterministic reducer** (state machine) skeleton for applying the events emitted by the DSL ruleset.
Readme
Two Worlds (Shared) Runtime Skeleton v1
This repo provides a deterministic reducer (state machine) skeleton for applying the events emitted by the DSL ruleset.
Scope:
- Event type definitions
- Core game state representation (money, debt, positions, laps, jail/rehab, city ownership/houses, deck/hand)
applyEvent(...)reducer with invariants and guardrails- Minimal "command input" / "environment input" typing
- Smoke demo that applies a few events
Not included:
- DSL parser / evaluator (rulescript engine)
- Networking/UI
Documentation
- See
docs/ko/anddocs/en/.
Simulation
src/sim/provides simulation + metrics skeleton.- Plug your DSL RulesEngine into
RulesEngine.tick(...).
RulesEngine Adapter
This repo expects a fact-based RulesEngine (tickFacts).
See src/integration/rulesEngineAdapter.ts for a precompiled-IR adapter skeleton (PrecompiledRulesEngine).
Built-in minimal RulescriptRuntime
A minimal in-process runtime is provided at src/rulescriptRuntime/.
It can evaluate precompiled RuleIR against facts.
Usage:
- Compile ruleset to RuleIR[] offline (precompile step).
- Create
new PrecompiledRulesEngine({ irJson, runtime: rulescriptRuntime }).
Compile ruleset to precompiled IR
Run:
npm run buildnpm run compile:ruleset
This produces ruleset_precompiled/shared_ruleset.ir.json.
Then you can load it and run with:
import { PrecompiledRulesEngine } from "./integration/rulesEngineAdapter.js";
import { rulescriptRuntime } from "./rulescriptRuntime/index.js";
const ir = /* load JSON */;
const engine = new PrecompiledRulesEngine({ irJson: ir, runtime: rulescriptRuntime });