allora 0.0.1

Allora: Rust-native Enterprise Integration Patterns (EIP) with channels, routing, correlation, and adapters.
Documentation
# Allora (Facade Crate)

This crate is the **user-facing entry point** to the Allora ecosystem. It re-exports the core primitives, HTTP
adapters, runtime, and macros into a single, convenient API surface.

Use this crate when you want to **build integration flows** (channels, routes, adapters, YAML DSL) without managing the
underlying sub-crates directly.

## What You Get

- Re-exports from:
    - `allora-core` (messages, exchanges, channels, processors, patterns)
    - `allora-http` (HTTP inbound adapters)
    - `allora-runtime` (YAML DSL + runtime engine)
    - `allora-macros` (proc macros such as `#[service]`)
- A cohesive, async-only integration API
- Types and traits intended for application authors, not just framework internals

## Install

```toml
[dependencies]
allora = "0.0.1"
tokio = { version = "1", features = ["full"] }
```

## Minimal Example (Async Route)

```rust
use allora::{patterns::filter::Filter, route::Route, Exchange, Message};

#[tokio::main]
async fn main() -> allora::Result<()> {
    let mut exchange = Exchange::new(Message::from_text("hello"));

    let route = Route::new()
        .add(Filter::new(|ex| ex.in_msg.body_text() == Some("hello")))
        .build();

    route.run(&mut exchange).await?;

    Ok(())
}
```

## YAML DSL & Runtime

The `allora` crate re-exports `allora-runtime`, so you only need `allora` as a dependency to use the YAML DSL. Point the
runtime at a YAML spec:

```rust,no_run
use allora::{Runtime, Exchange, Message};

#[tokio::main]
async fn main() -> allora::Result<()> {
    let runtime = Runtime::from_file("./allora.yml")?;

    let mut ex = Exchange::new(Message::from_text("hello"));
    runtime.send("input", ex).await?;

    Ok(())
}
```

See the main project README for the high-level overview and patterns catalog.

## License

Apache-2.0