scribe_scaling/
signatures.rs

1//! Advanced signature extraction with multiple levels and budget pressure adaptation.
2
3use serde::{Deserialize, Serialize};
4
5/// Signature extraction levels
6#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
7pub enum SignatureLevel {
8    /// Basic file metadata only
9    Minimal,
10    /// Structure and imports
11    Structural,
12    /// Include semantic information
13    Semantic,
14    /// Detailed analysis
15    Detailed,
16    /// Complete signature with all information
17    Complete,
18}
19
20impl Default for SignatureLevel {
21    fn default() -> Self {
22        Self::Structural
23    }
24}
25
26/// Configuration for signature extraction
27#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct SignatureConfig {
29    /// Default signature level
30    pub default_level: SignatureLevel,
31
32    /// Whether to enable caching of signatures
33    pub enable_caching: bool,
34
35    /// Budget pressure threshold (0.0 to 1.0)
36    pub budget_pressure_threshold: f64,
37}
38
39impl Default for SignatureConfig {
40    fn default() -> Self {
41        Self {
42            default_level: SignatureLevel::Structural,
43            enable_caching: true,
44            budget_pressure_threshold: 0.5,
45        }
46    }
47}