//! Init module - Support code for project initialization
//!
//! This module provides domain types, template definitions, and validation helpers
//! for the init command. It contains only data structures and pure functions - no
//! business logic or UI code.
//!
//! # Architecture
//!
//! The init functionality follows the 3-layer architecture:
//!
//! ```text
//! commands/init.rs            → Pure Args struct
//!     ↓
//! handlers/init.rs            → Orchestration (UI, flow control)
//!     ↓
//! services/                   → Business logic
//!   - init_service.rs         → Project structure operations
//!   - project_template_service.rs → Template file generation
//!     ↓
//! ui/init_wizard.rs           → Interactive UI component
//!     ↓
//! init/ module (this)         → Domain types and helpers
//!   - types.rs                → TemplateType, NodeSelection, ProjectConfig
//!   - templates.rs            → Template definitions (Basic, Rover, Arm, Humanoid)
//!   - defaults.rs             → Default node selections per template
//!   - validation.rs           → Project name validation
//! ```
//!
//! # Contents
//!
//! - **types**: Domain types (TemplateType, NodeSelection, ProjectConfig)
//! - **templates**: Robot template definitions and metadata
//! - **defaults**: Default node selections for each template
//! - **validation**: Input validation helpers

pub mod defaults;
pub mod templates;
pub mod types;
pub mod validation;

// Re-exports for convenience
pub use defaults::get_template_defaults;
pub use templates::get_all_templates;
