opencrates 3.0.1

Enterprise-grade AI-powered Rust development companion with comprehensive automation, monitoring, and deployment capabilities
//! # `OpenCrates`
//!
//! An enterprise-grade, AI-powered Rust development companion designed to
//! streamline the entire crate lifecycle from inception to publication.
//!
//! With a comprehensive suite of features, `OpenCrates` provides a robust
//! toolkit for developers, including:
//!
//! - **AI-Powered Code Generation:** Leverage state-of-the-art language
//!   models to generate idiomatic Rust code, including boilerplate,
//!   data structures, and entire modules.
//!
//! - **Automated Project Scaffolding:** Quickly create new Rust projects
//!   with pre-configured templates, CI/CD integration, and best-practice
//!   project structures.
//!
//! - **Intelligent Code Analysis:** Analyze existing codebases to identify
//!   potential optimizations, security vulnerabilities, and areas for
//!   improvement.
//!
//! - **Web Server and API:** Expose crate generation and analysis
//!   functionality through a flexible web API, with built-in support for
//!   monitoring and health checks.
//!
//! - **Interactive TUI:** A rich terminal user interface for an enhanced
//!   developer experience, enabling interactive code generation and project
//!   management.

// TODO: Review feature flags and dependencies for final release

#![deny(clippy::all)]
#![warn(clippy::pedantic)]
#![allow(clippy::module_name_repetitions)]
#![allow(unused_imports)]
#![allow(dead_code)]
#![allow(clippy::unused_async)]

// Core modules
pub mod cli;
pub mod codex_vendored;
pub mod core;
pub mod health;
pub mod providers;
pub mod stages;

// Utility modules
pub mod utils;

// Server and TUI modules
pub mod server;
pub mod tui;

// Re-exports for convenience
pub use crate::core::{CrateSpec, OpenCrates};
pub use crate::providers::{GenerationRequest, GenerationResponse, LLMProvider, ProviderRegistry};
pub use crate::utils::config::OpenCratesConfig;
pub use anyhow::Result;

#[must_use]
pub fn add(left: usize, right: usize) -> usize {
    left + right
}