Experiments on TypeSafe's Jev, a "System One" decision model: you send a state and a map of typed questions, and it returns one calibrated, structured answer per question. Code owns the workflow; Jev supplies narrow judgments. This repo is a Bun workspace with one package per experiment.
| Package | What it is |
|---|---|
packages/lab |
The original CLI: determinism, perturbation, and calibration checks on Jev through OpenRouter, plus a Haiku 4.5 comparison arm. Findings in its README and docs/how-jev-works.md. |
packages/codenames |
A Codenames spymaster and guesser built on the direct TypeSafe API: engine, offline eval against human play, and a web app where every card shows Jev's probability. The public demo: fan-out, calibration, and consistency as visible game mechanics. |
packages/wavelength |
A Wavelength round on the Score primitive. Code hides the target, Jev places every clue in one request, and the distance is the score. |
Shared docs live in docs/: the model contract and findings, and the ideas backlog.
bun install
bun run typecheck
bun testPer-package commands run from the root:
bun run lab -- --help # packages/lab, needs OPENROUTER_API_KEY
bun run codenames -- board 7 # packages/codenames CLI; `bun run --cwd packages/codenames server/index.ts` serves the web app (needs TYPESAFE_API_KEY)
bun run wavelength -- deal 7 # packages/wavelength; scoring needs TYPESAFE_API_KEY in that package's .envAdd a package by creating packages/<name> with its own package.json and a tsconfig.json that extends ../../tsconfig.base.json.
uv run assets/make_header.py redraws the header above and assets/social-preview.png. It needs the Geist font and rsvg-convert.