Mountain/IPC/mod.rs
1//! # IPC Module
2//!
3//! ## RESPONSIBILITIES
4//!
5//! Inter-process communication (IPC) for the Mountain application, handling
6//! communication between the Tauri frontend and the Rust backend through
7//! various protocols including Tauri commands, WebSocket, and custom message
8//! formats.
9//!
10//! ### Core Functions:
11//! - **Message Routing**: Route IPC messages to appropriate handlers
12//! - **Connection Management**: Manage IPC connections with health monitoring
13//! - **Security**: Implement permission system for IPC access control
14//! - **Encryption**: Provide secure message channels and compression
15//! - **Status Reporting**: Report IPC system status and metrics
16//! - **Configuration Bridge**: Bridge configuration across IPC boundaries
17//! - **Wind Sync**: Advanced synchronization with Wind UI framework
18//! - **Advanced Features**: Experimental/advanced IPC features
19//!
20//! ## Architectural Role
21//!
22//! The IPC module is the **communication layer** in Mountain's architecture:
23//!
24//! ```text
25//! Sky (Frontend) ──► IPC (Communication) ──► Track (Dispatch) ──► Services
26//! Wind (UI) ───────────────────────────────────────────────────────────────┘
27//! Cocoon (Sidecar) ──► Vine (gRPC) ────────────────────────────┘
28//! ```
29//!
30//! ### Design Principles:
31//! 1. **Protocol Agnostic**: Support multiple IPC protocols
32//! 2. **Security First**: All communications are secured and permission-gated
33//! 3. **High Performance**: Optimized for low-latency communication
34//! 4. **Observable**: Comprehensive logging and metrics
35//!
36//! ## Key Components
37//!
38//! - **TauriIPCServer**: Main IPC server orchestrator
39//! - **Message**: Message types and routing
40//! - **Connection**: Connection management and health
41//! - **Encryption**: Message compression and secure channels
42//! - **Security**: Permission system
43//! - **ConfigurationBridge**: Configuration synchronization
44//! - **StatusReporter**: Status and metrics reporting
45//! - **WindAdvancedSync**: Wind framework integration
46//! - **AdvancedFeatures**: Advanced/experimental features
47//!
48//! ## TODOs
49//! High Priority:
50//! - [ ] Add comprehensive unit tests for all modules
51//! - [ ] Implement connection pooling optimizations
52//! - [ ] Add connection timeout handling
53//!
54//! Medium Priority:
55//! - [ ] Add message batching for efficiency
56//! - [ ] Implement keep-alive packets
57//! - [ ] Add connection retry logic
58//!
59//! Low Priority:
60//! - [ ] Add message persistence for offline mode
61//! - [ ] Implement message compression ratio optimization
62//! - [ ] Add connection encryption rotation
63
64// --- Main Sub-modules ---
65
66/// Common shared types and abstractions for IPC layer.
67pub mod Common;
68
69/// Main Tauri IPC server orchestrator.
70// Note: Legacy TauriIPCServer.rs is used for backward compatibility
71// TODO: Migrate to TauriIPCServer/mod.rs in future phase
72#[path = "TauriIPCServer.rs"]
73pub mod TauriIPCServer_Old;
74
75/// Message types and routing.
76pub mod Message;
77
78/// Connection management and health monitoring.
79pub mod Connection;
80
81/// Message compression and secure channels.
82pub mod Encryption;
83
84/// Permission system for IPC access control.
85pub mod Security;
86
87// --- Feature Sub-modules ---
88
89/// Advanced experimental features.
90// Note: Legacy AdvancedFeatures.rs is used for backward compatibility
91// TODO: Migrate to AdvancedFeatures/mod.rs in future phase
92#[path = "AdvancedFeatures.rs"]
93pub mod AdvancedFeatures;
94
95/// Configuration synchronization bridge.
96// Note: Legacy ConfigurationBridge.rs is used for backward compatibility
97// TODO: Migrate to ConfigurationBridge/mod.rs in future phase
98#[path = "ConfigurationBridge.rs"]
99pub mod ConfigurationBridge;
100
101/// Status and metrics reporting.
102// Note: Legacy StatusReporter.rs is used for backward compatibility
103// TODO: Migrate to StatusReporter/mod.rs in future phase
104#[path = "StatusReporter.rs"]
105pub mod StatusReporter;
106
107/// Wind UI framework synchronization.
108// Note: Legacy WindAdvancedSync.rs is used for backward compatibility
109// TODO: Migrate to WindAdvancedSync/mod.rs in future phase
110#[path = "WindAdvancedSync.rs"]
111pub mod WindAdvancedSync;
112
113// --- Legacy Sub-modules ---
114
115/// Legacy Wind Air Commands.
116pub mod WindAirCommands;
117
118/// Legacy Wind Service Adapters.
119pub mod WindServiceAdapters;
120
121/// Legacy Wind Service Handlers.
122pub mod WindServiceHandlers;
123
124// --- Legacy Subdirectories ---
125
126/// Legacy Enhanced subdirectory.
127pub mod Enhanced;
128
129/// Legacy Permission subdirectory.
130pub mod Permission;
131
132// --- Re-exports for backward compatibility ---
133
134pub use Common::{ConnectionStatus, HealthStatus, MessageType, PerformanceMetrics, ServiceInfo};
135pub use Message::{ListenerCallback, SimpleConnectionStatus, TauriIPCMessage};
136pub use TauriIPCServer_Old as TauriIPCServer;
137pub use Connection::{ConnectionHandle, ConnectionManager, ConnectionStats, HealthChecker};
138pub use Encryption::{
139 MessageCompressor::MessageCompressor,
140 SecureChannel::{EncryptedMessage, SecureMessageChannel},
141};
142pub use Security::{
143 PermissionManager::{PermissionManager, SecurityContext, SecurityEvent, SecurityEventType},
144 Role::Role,
145};
146pub use AdvancedFeatures::{
147 AdvancedFeatures as AdvancedFeatures_New,
148 CachedMessage,
149 CollaborationPermissions,
150 CollaborationSession,
151 MessageCache,
152 PerformanceStats,
153 initialize_advanced_features,
154};
155pub use ConfigurationBridge as ConfigurationBridge_New;
156pub use StatusReporter as StatusReporter_New;
157pub use WindAdvancedSync as WindAdvancedSync_New;
158// --- Legacy compatibility function re-exports ---
159
160// Note: initialize_advanced_features is already exported above
161pub use StatusReporter::initialize_status_reporter;
162pub use WindAdvancedSync::initialize_wind_advanced_sync;
163
164// --- Notes on Migration ---
165
166// MIGRATION PATH TO ATOMIC STRUCTURE:
167//
168// Phase 1: ✅ Create Atomic Structure
169// - Created new atomic module directories
170// - Implemented core functionality
171// - Added comprehensive documentation
172//
173// Phase 2: 🔄 Backward Compatibility (Current)
174// - Keeping legacy files for compatibility
175// - Using #[path = "..."] to reference legacy files
176// - Gradually migrating dependent code
177//
178// Phase 3: ⏳ Migration
179// - Update dependent files to use new structure
180// - Test migration incrementally
181// - Monitor for issues
182//
183// Phase 4: ⏳ Cleanup
184// - Remove legacy files
185// - Update all documentation
186// - Final verification
187//
188// The following atomic modules are ready for migration:
189// - IPC/TauriIPCServer/ (Server.rs)
190// - IPC/Message/ (Types.rs)
191// - IPC/Connection/ (Manager.rs, Types.rs, Health.rs)
192// - IPC/Encryption/ (MessageCompressor.rs, SecureChannel.rs)
193// - IPC/Security/ (PermissionManager.rs, Role.rs, Permission.rs)
194// - IPC/AdvancedFeatures/ (Features.rs)
195// - IPC/ConfigurationBridge/ (mod.rs - placeholder)
196// - IPC/StatusReporter/ (mod.rs - placeholder)
197// - IPC/WindAdvancedSync/ (mod.rs - placeholder)