acp/
lib.rs

1#![forbid(unsafe_code)]
2
3//! @acp:module "ACP Library"
4//! @acp:summary "Token-efficient code documentation and indexing for AI systems"
5//! @acp:domain cli
6//! @acp:layer api
7//! @acp:stability stable
8//!
9//! # ACP - AI Context Protocol
10//!
11//! Token-efficient code documentation and indexing for AI systems.
12//!
13//! ## Features
14//!
15//! - **Fast Parsing**: Uses tree-sitter for accurate AST parsing
16//! - **JSON Output**: Queryable with jq for O(1) lookups
17//! - **Variable System**: Token-efficient macros with inheritance
18//! - **Multi-language**: TypeScript, JavaScript, Rust, Python, Go, Java
19//!
20//! ## Example
21//!
22//! ```rust,no_run
23//! use acp::{Indexer, Config};
24//!
25//! #[tokio::main]
26//! async fn main() -> anyhow::Result<()> {
27//!     let config = Config::default();
28//!     let indexer = Indexer::new(config)?;
29//!
30//!     // Index codebase
31//!     let cache = indexer.index(".").await?;
32//!
33//!     // Write JSON output
34//!     cache.write_json(".acp.cache.json")?;
35//!
36//!     Ok(())
37//! }
38//! ```
39
40pub mod annotate;
41pub mod ast;
42pub mod attempts;
43pub mod bridge;
44pub mod cache;
45pub mod commands;
46pub mod config;
47pub mod constraints;
48pub mod conventions;
49pub mod error;
50pub mod expand;
51pub mod git;
52pub mod index;
53pub mod parse;
54pub mod primer;
55pub mod query;
56pub mod scan;
57pub mod schema;
58pub mod sync;
59pub mod vars;
60pub mod watch;
61
62// Re-exports
63pub use annotate::{
64    AnalysisResult, Analyzer as AnnotationAnalyzer, AnnotateLevel, ConversionSource, FileChange,
65    OutputFormat, Suggester as AnnotationSuggester, Suggestion, Writer as AnnotationWriter,
66};
67pub use ast::{AstParser, ExtractedSymbol, FunctionCall, Import, SymbolKind, Visibility};
68pub use attempts::AttemptTracker;
69pub use bridge::{BridgeConfig, BridgeMerger, BridgeResult, FormatDetector};
70pub use cache::{Cache, CacheBuilder, Language};
71pub use config::Config;
72pub use constraints::{
73    BehaviorModifier, ConstraintIndex, Constraints, DebugAttempt, DebugResult, DebugSession,
74    DebugStatus, FileGuardrails, GuardrailEnforcer, GuardrailParser, HackMarker, LockLevel,
75    MutationConstraint, QualityGate, StyleConstraint,
76};
77pub use conventions::{detect_naming_conventions, ConventionsAnalyzer, NamingDetector};
78pub use error::{AcpError, Result};
79pub use git::{BlameInfo, FileHistory, GitFileInfo, GitRepository, GitSymbolInfo};
80pub use index::Indexer;
81pub use parse::Parser;
82pub use query::Query;
83pub use scan::{scan_project, ProjectScan};
84pub use sync::{BootstrapAction, BootstrapResult, SyncExecutor, Tool as SyncTool};
85pub use vars::{VarExpander, VarResolver};
86
87/// Library version
88pub const VERSION: &str = env!("CARGO_PKG_VERSION");