Skip to main content

Crate aimdb_codegen

Crate aimdb_codegen 

Source
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 (see generate_mermaid)
  • Rust sourcesrc/generated_schema.rs, compilable AimDB schema using the actual 0.5.x API (see generate_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;

Modules§

mermaid
Mermaid diagram generator
rust
Rust source code generator
state
AimDB Codegen — architecture state types and TOML parser
validate
Architecture state validator