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
//! Discover Module - Pattern-based symbol discovery
//!
//! # Architecture
//!
//! ```text
//! ┌─────────────────────────────────────────────────────────────────┐
//! │ discover/ │
//! ├─────────────────────────────────────────────────────────────────┤
//! │ response.rs ← Response DTOs (CascadeResult, DiscoverError) │
//! │ service.rs ← DiscoverService (Query execution, cascade scan) │
//! └─────────────────────────────────────────────────────────────────┘
//! ```
//!
//! # Layer Responsibilities
//!
//! - **response.rs**: Application Layer response DTOs for external consumers
//! - **service.rs**: Application Layer service (orchestrates domain operations)
//!
//! Domain types (`CascadeSpec`) live in ryo-analysis.
//! Use `Intent::from(CascadeSpec)` for domain → intent conversion.
//!
//! # Usage
//!
//! ```ignore
//! use ryo_app::{DiscoverService, CascadeResult, Intent};
//! use ryo_analysis::cascade::CascadeSpec;
//!
//! let service = DiscoverService::from_project(&project);
//!
//! // Find symbols matching pattern
//! let result = service.find_symbols("*Error");
//!
//! // Find cascade effects for enum
//! let cascade: CascadeResult = service.find_cascade_effects("Status", Some("NewVariant"));
//!
//! // Convert to Intents for execution
//! let intents: Vec<Intent> = cascade.specs.into_iter().map(Into::into).collect();
//! ```
// Re-export public API
pub use ;
pub use pattern_contains_enum;
pub use ;