1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//! # Pattern Extractor
//!
//! Extracts reusable patterns from completed episodes:
//! - Tool sequences that worked well
//! - Decision points with outcomes
//! - Error recovery strategies
//! - Context-based patterns
//!
//! ## Example
//!
//! ```
//! use do_memory_core::extraction::PatternExtractor;
//! use do_memory_core::{Episode, TaskContext, TaskType, TaskOutcome, ExecutionStep};
//!
//! let context = TaskContext::default();
//! let mut episode = Episode::new("Test task".to_string(), context, TaskType::Testing);
//!
//! // Add some execution steps
//! for i in 0..3 {
//! let step = ExecutionStep::new(i + 1, format!("tool_{}", i), "Action".to_string());
//! episode.add_step(step);
//! }
//!
//! episode.complete(TaskOutcome::Success {
//! verdict: "Done".to_string(),
//! artifacts: vec![],
//! });
//!
//! let extractor = PatternExtractor::new();
//! let patterns = extractor.extract(&episode);
//!
//! // Patterns may be extracted based on episode content
//! ```
// Re-export main types
pub use PatternExtractor;
pub use ;
/// Minimum success rate to extract a pattern
pub const MIN_PATTERN_SUCCESS_RATE: f32 = 0.7;
/// Minimum sequence length for tool sequence patterns
pub const MIN_SEQUENCE_LENGTH: usize = 2;
/// Maximum sequence length for tool sequence patterns
pub const MAX_SEQUENCE_LENGTH: usize = 5;