ricecoder_storage/
lib.rs

1//! RiceCoder Storage and Configuration Module
2//!
3//! This module provides storage and configuration management for RiceCoder,
4//! including global and project-local knowledge bases, configuration loading,
5//! and data persistence.
6//!
7//! # Modules
8//!
9//! ## Markdown Configuration
10//!
11//! The [`markdown_config`] module enables users to define custom agents, modes, and commands
12//! using markdown files with YAML frontmatter. This provides a user-friendly way to extend
13//! RiceCoder without writing code.
14//!
15//! **Key Components**:
16//! - [`markdown_config::ConfigurationLoader`]: Discovers and loads configuration files
17//! - [`markdown_config::ConfigRegistry`]: Central registry for loaded configurations
18//! - [`markdown_config::FileWatcher`]: Monitors configuration files for hot-reload
19//! - [`markdown_config::MarkdownParser`]: Parses markdown with YAML frontmatter
20//! - [`markdown_config::YamlParser`]: Parses and validates YAML metadata
21//!
22//! **Configuration File Locations**:
23//! 1. Project-level: `projects/ricecoder/.agent/`
24//! 2. User-level: `~/.ricecoder/agents/`, `~/.ricecoder/modes/`, `~/.ricecoder/commands/`
25//! 3. System-level: `/etc/ricecoder/agents/` (Linux/macOS)
26//!
27//! **File Patterns**:
28//! - `*.agent.md` - Agent configurations
29//! - `*.mode.md` - Mode configurations
30//! - `*.command.md` - Command configurations
31//!
32//! **Example Usage**:
33//!
34//! ```ignore
35//! use ricecoder_storage::markdown_config::{ConfigurationLoader, ConfigRegistry};
36//! use std::sync::Arc;
37//!
38//! #[tokio::main]
39//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
40//!     let registry = Arc::new(ConfigRegistry::new());
41//!     let loader = ConfigurationLoader::new(registry.clone());
42//!
43//!     // Load configurations from standard locations
44//!     let paths = vec![
45//!         std::path::PathBuf::from("~/.ricecoder/agents"),
46//!         std::path::PathBuf::from("projects/ricecoder/.agent"),
47//!     ];
48//!
49//!     loader.load_all(&paths).await?;
50//!
51//!     // Query loaded configurations
52//!     if let Some(agent) = registry.get_agent("code-review") {
53//!         println!("Agent: {}", agent.name);
54//!         println!("Model: {:?}", agent.model);
55//!     }
56//!
57//!     Ok(())
58//! }
59//! ```
60//!
61//! See [`markdown_config`] module documentation for detailed information.
62//!
63//! ## Other Modules
64//!
65//! - [`cache`]: Caching infrastructure for configuration and analysis results
66//! - [`config`]: Configuration loading and merging
67//! - [`completion`]: Code completion configurations
68//! - [`lsp`]: Language Server Protocol configurations
69//! - [`refactoring`]: Code refactoring configurations
70//! - [`industry`]: Industry-specific file detection and handling
71//! - [`global_store`]: Global knowledge base storage
72//! - [`project_store`]: Project-local knowledge base storage
73//! - [`manager`]: Storage manager and path resolution
74//! - [`offline`]: Offline mode handling
75//! - [`first_run`]: First-run initialization
76
77pub mod cache;
78pub mod cache_implementations;
79pub mod completion;
80pub mod config;
81pub mod config_cache;
82pub mod error;
83pub mod first_run;
84pub mod global_store;
85pub mod industry;
86pub mod lsp;
87pub mod manager;
88pub mod markdown_config;
89pub mod offline;
90pub mod project_store;
91pub mod refactoring;
92pub mod relocation;
93pub mod theme;
94pub mod types;
95
96// Re-export commonly used types
97pub use cache::{CacheEntry, CacheInvalidationStrategy, CacheManager};
98pub use cache_implementations::{
99    CacheStats, ConfigCache as ConfigCacheImpl, ProviderCache, ProjectAnalysisCache, SpecCache,
100};
101pub use completion::{get_builtin_completion_configs, get_completion_config};
102pub use config::{
103    Config, ConfigLoader, ConfigMerger, DocumentLoader, EnvOverrides, StorageModeHandler,
104};
105pub use config_cache::ConfigCache;
106pub use error::{IoOperation, StorageError, StorageResult};
107pub use first_run::FirstRunHandler;
108pub use global_store::GlobalStore;
109pub use industry::{FileDetectionResult, IndustryFileAdapter, IndustryFileDetector};
110pub use lsp::{get_builtin_language_configs, get_language_config};
111pub use manager::{PathResolver, StorageManager};
112pub use markdown_config::{
113    AgentConfig, CommandConfig, MarkdownConfigError, MarkdownParser, ModeConfig, Parameter,
114    ParsedMarkdown, YamlParser,
115};
116pub use offline::OfflineModeHandler;
117pub use project_store::ProjectStore;
118pub use refactoring::{get_builtin_refactoring_configs, get_refactoring_config};
119pub use relocation::RelocationService;
120pub use theme::{ThemePreference, ThemeStorage};
121pub use types::{
122    ConfigFormat, DocumentFormat, ResourceType, StorageConfig, StorageMode, StorageState,
123};