Expand description
AimDB Codegen — architecture state to Mermaid and Rust source
This library reads .aimdb/state.toml (the architecture agent’s decision
record) and emits two artefacts:
- Mermaid diagram —
.aimdb/architecture.mermaid, a read-only graph projection of the architecture (seegenerate_mermaid) - Rust source —
src/generated_schema.rs, compilable AimDB schema using the actual 0.5.x API (seegenerate_rust)
§Usage
use aimdb_codegen::{ArchitectureState, generate_mermaid, generate_rust, validate};
let toml = r#"
[meta]
aimdb_version = "0.5.0"
created_at = "2026-02-22T14:00:00Z"
last_modified = "2026-02-22T14:00:00Z"
[[records]]
name = "Temperature"
buffer = "SpmcRing"
capacity = 128
key_prefix = "sensor."
key_variants = ["room1"]
producers = ["sensor_task"]
consumers = ["dashboard"]
[[records.fields]]
name = "celsius"
type = "f64"
description = "Temperature in Celsius"
"#;
let state = ArchitectureState::from_toml(toml).unwrap();
let errors = validate(&state);
assert!(errors.iter().all(|e| e.severity != validate::Severity::Error));
let mermaid = generate_mermaid(&state);
assert!(mermaid.contains("flowchart LR"));
let rust = generate_rust(&state);
assert!(rust.contains("pub struct TemperatureValue"));Re-exports§
pub use mermaid::generate_mermaid;pub use rust::generate_binary_cargo_toml;pub use rust::generate_cargo_toml;pub use rust::generate_hub_cargo_toml;pub use rust::generate_hub_main_rs;pub use rust::generate_hub_schema_rs;pub use rust::generate_hub_tasks_rs;pub use rust::generate_lib_rs;pub use rust::generate_main_rs;pub use rust::generate_rust;pub use rust::generate_schema_rs;pub use rust::generate_tasks_rs;pub use rust::to_pascal_case;pub use rust::to_snake_case;pub use state::ArchitectureState;pub use state::BinaryDef;pub use state::BufferType;pub use state::ConnectorDef;pub use state::ConnectorDirection;pub use state::DecisionEntry;pub use state::ExternalConnectorDef;pub use state::FieldDef;pub use state::Meta;pub use state::ObservableDef;pub use state::ProjectDef;pub use state::RecordDef;pub use state::SerializationType;pub use state::TaskDef;pub use state::TaskIo;pub use state::TaskType;pub use validate::is_valid;pub use validate::validate;pub use validate::Severity;pub use validate::ValidationError;