//! LLM-based extraction for semantic claim detection.
//!
//! This module provides Claude-powered claim extraction for high-value files
//! where regex extractors found nothing. The LLM extractor runs only in
//! persistent mode to preserve ephemeral scan speed.
//!
//! # Architecture
//!
//! ```text
//! [File Content] -> [is_high_value_file?] -> [Cache Check] -> [Claude API]
//!                          |                      |               |
//!                          v                      v               v
//!                      (skip if no)          (return cached)  (parse JSON)
//!                                                              |
//!                                                              v
//!                                                    [Vec<ExtractedClaim>]
//! ```
//!
//! # Ontology-Aware Extraction
//!
//! The LLM extractor uses vocabulary from the authority corpus to constrain
//! output paths. This ensures claims use paths that match authority subjects,
//! enabling proper conflict detection.
//!
//! # Selective Triggering
//!
//! LLM extraction only runs when:
//! 1. Mode is `Persistent` (not ephemeral)
//! 2. LLM is enabled in config (`llm.enabled = true`)
//! 3. File is "high-value" (auth/, config/, crypto/, etc.) OR `high_value_only = false`
//! 4. Regex extractors found nothing for this file
//! 5. Token budget is not exhausted

mod cache;
mod client;
mod extractor;
pub mod ontology;
pub mod prompt;
mod prompts;
mod types;

pub use cache::LlmCache;
pub use client::GeminiClient;
pub use extractor::{is_high_value_file, LlmExtractor};
pub use ontology::OntologyVocabulary;
