Crates

The workspace ships eleven crates. Each is independently versioned but bumped together at every release.

CratePurpose
idiolect-recordsGenerated record types for the dev.idiolect.* lexicons; Record trait; family modules.
idiolect-codegenLexicon-driven Rust + TypeScript emitter; drift gate; breaking-change classifier.
idiolect-lensResolve PanprotoLens records; run apply_lens.
idiolect-identityDID resolution (did:plc, did:web).
idiolect-indexerFirehose consumer with pluggable stream / handler / cursor store.
idiolect-oauthOAuthTokenStore trait and shipped impls.
idiolect-observerFold encounter-family records into observation records.
idiolect-orchestratorRead-only HTTP query API over a record catalog.
idiolect-verifyVerification runners with declarative dispatch.
idiolect-migrateSchema diff plus lens-based record migration.
idiolect-cliCommand-line tool wrapping the library crates.

Cargo manifests live under crates/<name>/Cargo.toml. Every shipped crate is published to crates.io under the same name and to docs.rs at https://docs.rs/<name>/latest/<name_underscored>/.

Policy

The pages in this section are editorial overviews: an opinionated summary of what each crate is for, the public types you reach for first, and the feature flags. They are not the authoritative per-symbol reference. The authoritative reference is the rendered rustdoc on docs.rs, linked at the top of every crate page. When this book and docs.rs disagree, docs.rs is right.