agentic-forge-core 0.1.0

Blueprint engine for complete project architecture before code generation
Documentation
use agentic_forge_core::engine::ForgeEngine;
use agentic_forge_core::types::blueprint::*;
use agentic_forge_core::types::intent::*;
use criterion::{black_box, criterion_group, criterion_main, Criterion};

fn bench_create_blueprint(c: &mut Criterion) {
    c.bench_function("create_blueprint", |b| {
        b.iter(|| {
            let mut engine = ForgeEngine::new();
            black_box(
                engine
                    .create_blueprint("Test", "desc", Domain::Api)
                    .unwrap(),
            );
        })
    });
}

fn bench_add_entity(c: &mut Criterion) {
    let mut engine = ForgeEngine::new();
    let id = engine
        .create_blueprint("Bench", "bench", Domain::Api)
        .unwrap();

    c.bench_function("add_entity", |b| {
        let mut i = 0u64;
        b.iter(|| {
            i += 1;
            let entity = Entity::new(&format!("E_{}", i), "bench");
            black_box(engine.writer().add_entity(&id, entity).unwrap());
        })
    });
}

fn bench_blueprint_serialization(c: &mut Criterion) {
    let mut bp = Blueprint::new("SerBench", "bench", Domain::Api);
    for i in 0..50 {
        bp.entities.push(Entity::new(&format!("E_{}", i), "e"));
    }

    c.bench_function("blueprint_serialize", |b| {
        b.iter(|| {
            black_box(serde_json::to_string(&bp).unwrap());
        })
    });
}

criterion_group!(
    benches,
    bench_create_blueprint,
    bench_add_entity,
    bench_blueprint_serialization
);
criterion_main!(benches);