Skip to main content

mockforge_intelligence/intelligent_behavior/
mod.rs

1//! Intelligent Mock Behavior System
2//!
3//! This module provides LLM-powered stateful mock behavior that maintains
4//! consistency across multiple API requests, simulating a real, thinking backend.
5//!
6//! # Features
7//!
8//! - **Stateful Context Management**: Tracks state across requests using sessions
9//! - **LLM-Powered Decision Making**: Uses AI to generate intelligent, context-aware responses
10//! - **Vector Memory**: Semantic search over past interactions for long-term memory
11//! - **Consistency Rules**: Enforces logical behavior patterns (e.g., auth requirements)
12//! - **State Machines**: Resources follow realistic lifecycle transitions
13//!
14//! # Architecture
15//!
16//! ```text
17//! Request → Context Manager → Behavior Model → LLM + Vector Store → Response
18//!              ↓                    ↓                    ↓
19//!         Session State      Consistency Rules    Past Interactions
20//! ```
21//!
22//! # Example Usage
23//!
24//! ```rust,ignore
25//! use mockforge_intelligence::intelligent_behavior::{
26//!     StatefulAiContext, BehaviorModel, IntelligentBehaviorConfig,
27//! };
28//!
29//! # async fn example() -> mockforge_foundation::Result<()> {
30//! // Create a stateful context
31//! let config = IntelligentBehaviorConfig::default();
32//! let mut context = StatefulAiContext::new("session_123", config);
33//!
34//! // Record an interaction
35//! context.record_interaction(
36//!     "POST",
37//!     "/api/users",
38//!     Some(serde_json::json!({"name": "Alice"})),
39//!     Some(serde_json::json!({"id": "user_1", "name": "Alice"})),
40//! ).await?;
41//!
42//! // Get current state
43//! let state = context.get_state();
44//! # Ok(())
45//! # }
46//! ```
47
48pub mod behavior;
49pub mod cache;
50pub mod condition_evaluator;
51pub mod config;
52pub mod context;
53pub mod embedding_client;
54pub mod history;
55pub mod llm_client;
56pub use llm_client::LlmUsage;
57pub mod memory;
58pub mod mockai;
59pub mod mutation_analyzer;
60pub mod openapi_generator;
61pub mod pagination_intelligence;
62pub mod relationship_inference;
63pub mod rule_generator;
64pub mod rules;
65pub mod session;
66pub mod spec_suggestion;
67pub mod sub_scenario;
68pub mod types;
69pub mod validation_generator;
70pub mod visual_layout;
71
72#[cfg(test)]
73mod persona_integration_test;
74
75// Re-export main types
76pub use behavior::BehaviorModel;
77pub use condition_evaluator::{ConditionError, ConditionEvaluator, ConditionResult};
78pub use config::{IntelligentBehaviorConfig, Persona, PersonasConfig};
79pub use context::StatefulAiContext;
80pub use history::HistoryManager;
81pub use memory::VectorMemoryStore;
82pub use mockai::{MockAI, Request, Response};
83pub use mutation_analyzer::{
84    ChangeType, FieldChange, MutationAnalysis, MutationAnalyzer, MutationType, ResponseType,
85    ValidationIssue, ValidationIssueType, ValidationSeverity,
86};
87pub use openapi_generator::{
88    ConfidenceScore, HttpExchange, OpenApiGenerationConfig, OpenApiGenerationMetadata,
89    OpenApiGenerationResult, OpenApiSpecGenerator,
90};
91pub use pagination_intelligence::{
92    PaginationFormat, PaginationIntelligence, PaginationMetadata, PaginationRequest, PaginationRule,
93};
94pub use relationship_inference::{Relationship, RelationshipInference};
95pub use rule_generator::{
96    CrudExample, ErrorExample, ExamplePair, PaginatedResponse, PatternMatch, RuleExplanation,
97    RuleGenerator, RuleType, ValidationRule,
98};
99pub use rules::{ConsistencyRule, RuleAction, StateMachine, StateTransition};
100pub use session::{SessionManager, SessionTracking};
101pub use spec_suggestion::{
102    EndpointSuggestion, OutputFormat, ParameterInfo, SpecSuggestionEngine, SuggestionConfig,
103    SuggestionInput, SuggestionMetadata, SuggestionResult,
104};
105pub use sub_scenario::SubScenario;
106pub use types::{BehaviorRules, InteractionRecord};
107pub use validation_generator::{
108    ErrorFormat, FieldError, RequestContext, ValidationErrorExample, ValidationErrorResponse,
109    ValidationGenerator,
110};
111pub use visual_layout::{Viewport, VisualEdge, VisualLayout, VisualNode};