terraphim_session_analyzer/patterns/mod.rs
1//! Pattern matching infrastructure for identifying tools in Bash commands
2//!
3//! This module provides efficient pattern matching using Aho-Corasick automaton
4//! to identify which tools (npm, cargo, git, wrangler, etc.) are being used in
5//! Bash command invocations from Claude session logs.
6//!
7//! ## Architecture
8//!
9//! - `matcher`: Core pattern matching trait and Aho-Corasick implementation
10//! - `loader`: TOML-based pattern configuration loading
11//! - `knowledge_graph`: Advanced pattern learning with voting and confidence scoring (includes caching)
12//!
13//! ## Example
14//!
15//! ```rust
16//! use terraphim_session_analyzer::patterns::{create_matcher, load_patterns};
17//!
18//! # fn main() -> anyhow::Result<()> {
19//! // Load patterns from built-in TOML
20//! let patterns = load_patterns()?;
21//!
22//! // Create matcher
23//! let mut matcher = create_matcher();
24//! matcher.initialize(&patterns)?;
25//!
26//! // Find matches
27//! let matches = matcher.find_matches("npx wrangler deploy --env production");
28//! for m in matches {
29//! println!("Found tool: {} at position {}", m.tool_name, m.start);
30//! }
31//! # Ok(())
32//! # }
33//! ```
34
35pub mod knowledge_graph;
36pub mod loader;
37pub mod matcher;
38
39// Re-export main types
40pub use loader::load_all_patterns;
41#[allow(unused_imports)] // Used in doc examples
42pub use loader::{ToolMetadata, ToolPattern};
43#[allow(unused_imports)] // Available for user configuration
44pub use loader::{load_patterns, load_user_patterns};
45pub use matcher::{AhoCorasickMatcher, PatternMatcher};
46#[allow(unused_imports)] // Used in doc examples
47pub use matcher::{ToolMatch, create_matcher};
48
49// Re-export knowledge graph types for Phase 3 - pattern learning and caching
50#[allow(unused_imports)] // Public API for pattern learning (Phase 3)
51pub use knowledge_graph::{LearnedPattern, PatternLearner, infer_category_from_contexts};
52
53// Re-export terraphim feature types
54#[cfg(feature = "terraphim")]
55#[allow(unused_imports)] // Public API for terraphim integration (future use)
56pub use knowledge_graph::{KnowledgeGraph, RelationType, ToolRelationship};