Expand description
§AI Context Generator - Rust Library
A Rust library for generating structured context from code repositories, specifically designed for LLMs and AI agents. This library provides both simple convenience functions and advanced APIs for fine-grained control.
§When to Use This Library
- Integrate context generation into your Rust applications
- Build custom analysis workflows
- Create automated documentation systems
- Develop AI-powered developer tools
For standalone command-line usage, consider using the CLI tool instead.
§Features
- 🔍 Complete Scanning: Analyzes all
.rsand.mdfiles in repositories - 🌳 AST Analysis: Extracts structures, functions, enums and implementations
- 📊 Token Control: Respects limits and prioritizes important content
- 📁 Project Structure: Generates file tree visualizations
- 📖 Documentation: Includes markdown files and code documentation
- ⚡ Async Processing: Non-blocking, high-performance analysis
§Quick Start
§Simple Usage
use ai_context_gen::generate_context;
use std::path::PathBuf;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// Generate context for current directory
generate_context(PathBuf::from("."), "context.md".to_string()).await?;
println!("Context generated successfully!");
Ok(())
}§Advanced Usage with Configuration
use ai_context_gen::{Config, ContextGenerator, RepositoryScanner};
use std::path::PathBuf;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// Custom configuration
let config = Config {
repo_path: PathBuf::from("./my-project"),
max_tokens: 100000,
output_file: "detailed_context.md".to_string(),
include_hidden: true,
include_deps: true,
};
// Step-by-step process for more control
let scanner = RepositoryScanner::new(config.clone());
let scan_result = scanner.scan().await?;
println!("Found {} files", scan_result.files.len());
let generator = ContextGenerator::new(config);
generator.generate_context(scan_result).await?;
Ok(())
}§Using the Configuration Function
use ai_context_gen::{Config, generate_context_with_config};
use std::path::PathBuf;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let config = Config {
repo_path: PathBuf::from("/path/to/analyze"),
max_tokens: 75000,
output_file: "analysis.md".to_string(),
include_hidden: false,
include_deps: true,
};
generate_context_with_config(config).await?;
Ok(())
}§API Overview
generate_context: Simple function for basic use casesgenerate_context_with_config: Function with custom configurationConfig: Configuration structure for all optionsRepositoryScanner: File scanning and discoveryContextGenerator: Context generation with prioritiesRustParser: Rust code AST analysis
§Integration Patterns
§Web Applications
use ai_context_gen::{Config, generate_context_with_config};
use std::path::PathBuf;
async fn analyze_repo_endpoint(repo_path: String) -> Result<String, Box<dyn std::error::Error>> {
let config = Config {
repo_path: PathBuf::from(repo_path),
max_tokens: 50000,
output_file: format!("/tmp/analysis_{}.md", chrono::Utc::now().timestamp()),
include_hidden: false,
include_deps: false,
};
generate_context_with_config(config.clone()).await?;
Ok(config.output_file)
}§Custom Workflows
use ai_context_gen::{Config, RepositoryScanner, ContextGenerator};
use std::path::PathBuf;
async fn custom_analysis_workflow(repo_path: PathBuf) -> anyhow::Result<()> {
let config = Config {
repo_path: repo_path.clone(),
max_tokens: 100000,
output_file: "temp_analysis.md".to_string(),
include_hidden: true,
include_deps: true,
};
// Scan first
let scanner = RepositoryScanner::new(config.clone());
let scan_result = scanner.scan().await?;
// Custom filtering or processing here
println!("Found {} Rust files", scan_result.files.iter()
.filter(|f| matches!(f.file_type, ai_context_gen::FileType::Rust))
.count());
// Generate context
let generator = ContextGenerator::new(config);
generator.generate_context(scan_result).await?;
Ok(())
}Re-exports§
pub use config::Config;pub use generator::ContextGenerator;pub use parser::EnumInfo;pub use parser::FunctionInfo;pub use parser::ImplInfo;pub use parser::RustAnalysis;pub use parser::RustParser;pub use parser::StructInfo;pub use scanner::FileInfo;pub use scanner::FileType;pub use scanner::RepositoryScanner;pub use scanner::ScanResult;pub use token_counter::ContentPrioritizer;pub use token_counter::ContentSection;pub use token_counter::TokenCounter;
Modules§
- config
- Configuration module for the AI Context Generator.
- generator
- Context generation module for the AI Context Generator.
- parser
- Rust AST parsing module for the AI Context Generator.
- scanner
- Repository scanning module for the AI Context Generator.
- token_
counter - Token counting and content prioritization module.
Functions§
- generate_
context - Generates repository context with default configuration
- generate_
context_ with_ config - Generates repository context with custom configuration
Type Aliases§
- Result
- Default Result type used by the library