mod discovery;
mod gitignore;
mod paths;
mod shebang;

#[cfg(test)]
mod test_support;

#[cfg(test)]
mod tests;

pub use discovery::discover;
pub(crate) use gitignore::collect_cwd_gitignore_patterns;

/// Source content prepared by the caller for in-memory detection.
///
/// Use this with `detect_source_files` when an integration already owns file
/// contents or wants to check generated snippets without reading from disk.
#[derive(Clone, Debug)]
pub struct SourceFile {
    /// Stable source identifier used in clone reports, usually a file path.
    pub source_id: String,
    /// Source format name, for example `javascript`, `typescript`, `rust`, or
    /// another value returned by `get_supported_formats`.
    pub format: String,
    /// Full source text.
    pub content: String,
}
