Use before running codegen (baml generate, build.rs, protoc) or when seeing version mismatch errors in generated code. Symptoms - baml client out of date, generated code doesn't compile, version X vs version Y mismatch.
Detect and fix version mismatches between Cargo.toml dependencies and code generator configuration files.
Generator configs (e.g., generators.baml, buf.gen.yaml, build.rs) pin versions independently from Cargo.toml. When these drift — e.g., baml-lib = "0.218.0" in Cargo.toml but version "0.220.0" in generators.baml — the result is silent failures, stale generated code, or runtime panics. The fix cycle is: align versions → regenerate → verify.
Find what Cargo.toml thinks the versions are:
cargo metadata --no-deps --format-version 1 | jq '.packages[].dependencies[] | select(.name | startswith("baml")) | {name, req}'
Find all generator config files that contain version pins:
fd -e baml -e toml -e yaml | xargs grep -l "version"
Read the pinned version inside a generators.baml block:
grep -E 'version\s+"[0-9]' $(fd -e baml)
1. generators.baml
generator TypescriptClient {
output_type typescript
version "0.220.0" # <-- this must match baml-lib in Cargo.toml
...
}
Read it:
grep -A5 '^generator' generators.baml | grep version
2. build.rs
Look for hardcoded version strings in codegen invocations:
grep -rn 'version\|codegen\|baml\|protoc' build.rs
3. buf.gen.yaml