Jaunt
Concepts

Repo Context

The treedocs.yaml repo map, `jaunt tree`, optional colgrep retrieval, and the project overview.

A spec rarely lives alone. It calls helpers, imports siblings, and fits into a shape the rest of the repo already defines. Jaunt keeps a lightweight map of that surrounding code and feeds it to the generator, so the model writing one module knows what exists around it. The map is on by default and works offline.

The repo map

treedocs.yaml at the project root holds a one-line description of every directory and supported source file (.py, .ts, or .tsx; generated output and declaration files are excluded). Descriptions start from an offline static baseline: Python module docstrings and public symbols, or TypeScript documentation and exported surface. They can be enriched by the model if you opt in.

jaunt tree             # sync the tree incrementally (AST-only by default)
jaunt tree --check     # CI gate: exit 4 if the tree is stale

jaunt build keeps the tree in sync on its own and renders a capped repo-map block into every build prompt. Source digests are cached in .jaunt/tree-cache.json, so a sync only touches what changed. You can turn the map off for a single build with jaunt build --no-repo-map or for the project with the [context] config; see the configuration reference for those keys.

Semantic retrieval (opt-in)

The repo map tells the model what exists. For Python generation, semantic retrieval goes one step further and shows it the actual neighboring code. Turn it on, put the colgrep binary (LightOn next-plaid) on your PATH, and Jaunt queries colgrep for code relevant to each Python spec, then seeds the top hits into the workspace as _context/relevant_*.py. If colgrep is missing, the build still runs — retrieval just sits out that round.

The TypeScript alpha receives the shared repo map and optional project overview, but does not yet add colgrep hits to its generation context.

The trade-off is real neighboring implementations against an extra tool dependency and a bit of build time, which is why it stays off until you ask for it.

Project overview (opt-in)

The repo map is a list of one-liners; a project overview is prose. Switch it on and Jaunt asks the model to write an architecture summary of the whole codebase and adds it to build prompts. That call runs once, keyed to a digest of the spec sources, the repo map, your project docs (README/AGENTS/CLAUDE), and the overview prompt. The result is cached to .jaunt/PROJECT_OVERVIEW.md and reused until one of those inputs changes, so you pay for the prose once, not per build. The call counts against your build cost budget and shows up in the cost summary.

Target prompt preambles

Python build prompts open with src/jaunt/prompts/codex_preamble.md. TypeScript uses its own strict system and module templates under src/jaunt/typescript/prompts/ so the model writes only reserved internal bindings while Jaunt owns the public boundary. Both targets ask for straightforward, maintainable source that remains useful after ejection. These templates add no model call, and their content participates in the target's generation fingerprint. Override them through [prompts.py] or [prompts.ts] in a version-2 config.

Next: Change Detection.

On this page