src/cli/index.ts) and
exposes four commands. Every command shares a common setup path (src/cli/setup.ts’s
buildScenario()), which loads .env, constructs the Algorand chain adapter and facilitator
client, derives the test fixture, and registers all eight invariants.
Commands at a glance
Two ways to invoke it
- From TypeScript source (no build step)
- Compiled binary
tsx src/cli/index.ts, defined as the ward script in package.json.Global behavior
Every command is wrapped in a shared error handler (runOrExit in src/cli/index.ts): an
uncaught error prints as ward: <message> in red and sets a non-zero exit code, rather than
dumping a raw stack trace. Set WARD_DEBUG=1 in your environment to also print the full stack
trace on failure.
Start with ward init
Always run
ward init before ward test — it’s the step that proves the facilitator you’re
about to run adversarial tests against actually works at all.
