//! Workspace management and IAHU meta-registry for Tuppu Nabu.
//!
//! This crate provides:
//! - Workspace lifecycle management (states, transitions)
//! - IAHU meta-registry for all workspaces
//! - Dependency graph for tracking relationships
//! - Event bus for lifecycle notifications
//!
//! # IAHU
//!
//! IAHU (from Sumerian "house/temple") is the central registry that manages
//! all workspaces, their lifecycles, and cross-workspace operations.
//!
//! # Example
//!
//! ```ignore
//! use tuppu_workspace::{Iahu, WorkspaceState};
//! use tuppu_algebra::Signature;
//!
//! let mut iahu = Iahu::new();
//!
//! // Create a workspace
//! let ws_id = iahu.create_workspace("geometry", Signature::VGA3)?;
//!
//! // Activate it
//! iahu.activate(ws_id)?;
//!
//! // Set bindings
//! iahu.set_binding(ws_id, Binding::scalar("x", Scalar::from_f64_quantized(1.0, 1000)))?;
//! ```

// Allow missing docs during initial development
#![allow(missing_docs)]

pub mod lifecycle;
pub mod iahu;
pub mod events;
pub mod graph;

// Re-exports from lifecycle
pub use lifecycle::{
    WorkspaceState, LifecycleEvent, LifecycleManager, LifecycleError,
    can_transition, can_evaluate, can_modify, is_terminal,
};

// Re-exports from iahu
pub use iahu::{
    Iahu, IahuError,
    WorkspaceInfo, ManagedWorkspace,
    Binding, BindingValue, BindingRef,
};

// Re-exports from events
pub use events::{
    LifecycleEventBus, EventFilter, SubscriptionHandle,
};

// Re-exports from graph
pub use graph::{
    RelationshipGraph, GraphError,
    NodeId, EdgeId, BindingKey,
    Node, Edge, RelationshipKind,
    PropagationStrategy, PropagationConfig,
};
