llm_bucket/lib.rs
1#![doc = "llm-bucket: core logic and data models for the llm-bucket aggregator CLI."]
2
3//! # llm-bucket
4//!
5//! This crate provides all primary domain logic, data models, and processing pipelines for use in `llm-bucket` workflows.
6//!
7//! - **Scope:** Only open-source pipeline, processing, config, and repository sync code is here.
8//! *Proprietary upload/integration logic is handled outside this crate.*
9//!
10//! ## Architecture & Usage
11//!
12//! - This library is intended for maximum code reuse across the CLI, tests, and (potentially) other tools.
13//! - All fundamental types (e.g., configs, processor inputs/outputs) and clean-pipeline functions live here, with clear interfaces for extensibility.
14//!
15//! ## Major Modules
16//!
17//! - [`config`]: Typed config models loaded from YAML, including source definitions.
18//! - [`download`]: Download logic for source repositories (e.g., Git, Confluence), creating disk snapshots.
19//! - [`preprocess`]: Processing/conversion of downloaded repos to uploadable items (PDFs, file flattening, etc).
20//! - [`synchronise`]: High-level pipeline for end-to-end sync (download-process-upload/report).
21//! - [`contract`]: Interface trait for uploading sources/items (mockable for test).
22//! - [`code_to_pdf`]: Minimal stub conversion of code/README to PDF files.
23//!
24//! ## Example
25//! ```rust
26//! use llm_bucket::{download, preprocess, synchronise};
27//! // (Example code to show intended usage...)
28//! ```
29//!
30//! ## Contribution and Extending
31//! When adding a new source or pipeline, declare your data model and process logic in a new submodule, and extend root/aggregate orchestrators in this crate first, not in the CLI shell.
32//!
33
34pub mod code_to_pdf;
35pub mod contract;
36pub mod download;
37pub mod preprocess;
38pub mod synchronise;