primate 0.3.1

A small DSL for cross-language constants. Write once, generate typed Rust, TypeScript, and Python.
Documentation
# `primate init`

Scaffolds a `primate.toml` in the current working directory. Walks you
through the source directory, which target languages to generate, the
output path for each, and any external plugins.

```bash
primate init
```

primate is meant to drop into existing repos, so `init` only creates
the config — no `constants/` directory, no starter `.prim`, no
`AGENTS.md`, no `.gitignore` munging.

## What the wizard asks

1. **Where do your `.prim` source files live?** A directory under the
   project root (e.g. `constants/`, `shared/constants/`). Path
   autocomplete suggests existing directories. If the directory
   doesn't exist yet, `init` tells you so on the spot — you'll
   create it and drop your first `.prim` file in before the next
   `primate build`.
2. **Which languages should primate generate?** Multiselect across
   TypeScript, Rust, and Python. None checked by default — pick the
   ones you actually want.
3. **For each picked language: where should the output go?** Path
   autocomplete on every prompt. No preset value, since the right
   path depends on your repo layout — the help line shows an
   example for shape (`e.g. web/src/generated/constants/`).
4. **Use an external generator plugin?** If yes, loops through name
   / command / path until you say no. See
   [Plugins]../plugins/protocol.md.

The wizard uses [inquire](https://github.com/mikaelmello/inquire) for
prompts. Press <kbd>Esc</kbd> to cancel at any point; nothing is
written until the wizard completes.

## What the result looks like

The generated `primate.toml` is heavily commented and lists every
option each picked generator accepts at its default value. Picking
TypeScript writes the full set of TypeScript options inline:

```toml
[[output]]
generator = "typescript"
# A directory. primate emits one `.ts` per namespace plus
# an `index.ts` that re-exports each one.
path      = "web/src/generated/constants/"

# Generator options. Defaults shown — change as needed.
options.naming      = "camelCase"               # or "SCREAMING_SNAKE_CASE"
options.duration    = "number"                  # or "temporal" for Temporal.Duration
options.u64         = "number"                  # or "bigint" for u64-typed constants
options.enumStyle   = "literal"                 # or "const" or "enum" — see docs
```

Same idea for Rust and Python; only the targets you pick land in the
file (no commented-out scaffolding for skipped ones).

## Flags

- `--force` / `-f` — overwrite an existing `primate.toml`. Default is
  to refuse so an existing config doesn't get clobbered.

## After `primate init`

The wizard prints a small "next steps" block — create the source
directory, drop in a `.prim` file, run `primate build`. There's also
a recommendation to **commit the generated files alongside source**:
consumers don't need primate installed to use them, and CI can gate
on `git diff --exit-code` after `primate build` to catch drift.

## See also

- [`primate build`]./build.md — the generator pipeline `init`
  configures.
- [`primate fmt`]./fmt.md — formatter; run after every `.prim` edit.
- [Plugin protocol]../plugins/protocol.md — what external generators
  need to implement.