use chrono::Duration;
use do_memory_core::Pattern;
use uuid::Uuid;
use super::helpers::create_test_context;
pub fn create_ground_truth_tool_sequences() -> Vec<Pattern> {
let context = create_test_context("api-testing", Some("rust"));
vec![
Pattern::ToolSequence {
id: Uuid::new_v4(),
tools: vec![
"file_reader".to_string(),
"json_parser".to_string(),
"validator".to_string(),
],
context: context.clone(),
success_rate: 0.95,
avg_latency: Duration::milliseconds(150),
occurrence_count: 10,
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::ToolSequence {
id: Uuid::new_v4(),
tools: vec![
"db_connector".to_string(),
"query_executor".to_string(),
"result_processor".to_string(),
],
context: context.clone(),
success_rate: 0.92,
avg_latency: Duration::milliseconds(200),
occurrence_count: 8,
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::ToolSequence {
id: Uuid::new_v4(),
tools: vec![
"authenticator".to_string(),
"token_verifier".to_string(),
"access_granter".to_string(),
],
context: context.clone(),
success_rate: 0.98,
avg_latency: Duration::milliseconds(80),
occurrence_count: 15,
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::ToolSequence {
id: Uuid::new_v4(),
tools: vec![
"data_fetcher".to_string(),
"transformer".to_string(),
"storage_writer".to_string(),
],
context: context.clone(),
success_rate: 0.88,
avg_latency: Duration::milliseconds(250),
occurrence_count: 12,
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::ToolSequence {
id: Uuid::new_v4(),
tools: vec![
"builder".to_string(),
"test_runner".to_string(),
"deployer".to_string(),
],
context: context.clone(),
success_rate: 0.85,
avg_latency: Duration::milliseconds(5000),
occurrence_count: 20,
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::ToolSequence {
id: Uuid::new_v4(),
tools: vec![
"http_handler".to_string(),
"input_validator".to_string(),
"response_builder".to_string(),
],
context: context.clone(),
success_rate: 0.93,
avg_latency: Duration::milliseconds(120),
occurrence_count: 18,
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::ToolSequence {
id: Uuid::new_v4(),
tools: vec![
"parser".to_string(),
"compiler".to_string(),
"executor".to_string(),
],
context: context.clone(),
success_rate: 0.90,
avg_latency: Duration::milliseconds(300),
occurrence_count: 7,
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::ToolSequence {
id: Uuid::new_v4(),
tools: vec![
"monitor".to_string(),
"analyzer".to_string(),
"alerter".to_string(),
],
context: context.clone(),
success_rate: 0.87,
avg_latency: Duration::milliseconds(180),
occurrence_count: 9,
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::ToolSequence {
id: Uuid::new_v4(),
tools: vec![
"serializer".to_string(),
"compressor".to_string(),
"sender".to_string(),
],
context: context.clone(),
success_rate: 0.94,
avg_latency: Duration::milliseconds(160),
occurrence_count: 11,
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::ToolSequence {
id: Uuid::new_v4(),
tools: vec![
"loader".to_string(),
"cache_manager".to_string(),
"server".to_string(),
],
context,
success_rate: 0.96,
avg_latency: Duration::milliseconds(90),
occurrence_count: 16,
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
]
}
pub fn create_ground_truth_decision_points() -> Vec<Pattern> {
let context = create_test_context("api-testing", Some("rust"));
vec![
Pattern::DecisionPoint {
id: Uuid::new_v4(),
condition: "Check if cache is valid".to_string(),
action: "cache_validator".to_string(),
outcome_stats: do_memory_core::OutcomeStats {
success_count: 45,
failure_count: 5,
total_count: 50,
avg_duration_secs: 0.05,
},
context: context.clone(),
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::DecisionPoint {
id: Uuid::new_v4(),
condition: "Verify user has permissions".to_string(),
action: "permission_checker".to_string(),
outcome_stats: do_memory_core::OutcomeStats {
success_count: 38,
failure_count: 12,
total_count: 50,
avg_duration_secs: 0.08,
},
context: context.clone(),
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::DecisionPoint {
id: Uuid::new_v4(),
condition: "Check if resource is available".to_string(),
action: "resource_checker".to_string(),
outcome_stats: do_memory_core::OutcomeStats {
success_count: 42,
failure_count: 8,
total_count: 50,
avg_duration_secs: 0.06,
},
context: context.clone(),
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::DecisionPoint {
id: Uuid::new_v4(),
condition: "Verify input format is correct".to_string(),
action: "format_validator".to_string(),
outcome_stats: do_memory_core::OutcomeStats {
success_count: 47,
failure_count: 3,
total_count: 50,
avg_duration_secs: 0.04,
},
context: context.clone(),
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::DecisionPoint {
id: Uuid::new_v4(),
condition: "Check if rate limit exceeded".to_string(),
action: "rate_limiter".to_string(),
outcome_stats: do_memory_core::OutcomeStats {
success_count: 40,
failure_count: 10,
total_count: 50,
avg_duration_secs: 0.03,
},
context,
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
]
}
pub fn create_ground_truth_error_recoveries() -> Vec<Pattern> {
let context = create_test_context("api-testing", Some("rust"));
vec![
Pattern::ErrorRecovery {
id: Uuid::new_v4(),
error_type: "Connection timeout".to_string(),
recovery_steps: vec![
"retry_connector: Retry with exponential backoff".to_string(),
"fallback_connector: Try alternate endpoint".to_string(),
],
success_rate: 0.85,
context: context.clone(),
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::ErrorRecovery {
id: Uuid::new_v4(),
error_type: "Authentication failed".to_string(),
recovery_steps: vec![
"token_refresher: Refresh authentication token".to_string(),
"re_authenticator: Re-authenticate with credentials".to_string(),
],
success_rate: 0.92,
context: context.clone(),
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::ErrorRecovery {
id: Uuid::new_v4(),
error_type: "Resource not found".to_string(),
recovery_steps: vec![
"cache_invalidator: Clear stale cache".to_string(),
"resource_loader: Reload resource from source".to_string(),
],
success_rate: 0.78,
context: context.clone(),
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::ErrorRecovery {
id: Uuid::new_v4(),
error_type: "Parse error".to_string(),
recovery_steps: vec![
"fallback_parser: Try alternative parser".to_string(),
"error_handler: Return default value".to_string(),
],
success_rate: 0.88,
context: context.clone(),
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
Pattern::ErrorRecovery {
id: Uuid::new_v4(),
error_type: "Rate limit exceeded".to_string(),
recovery_steps: vec![
"backoff_handler: Wait and retry after delay".to_string(),
"queue_manager: Queue request for later".to_string(),
],
success_rate: 0.95,
context,
effectiveness: do_memory_core::PatternEffectiveness::new(),
},
]
}