vibetunnel/mac/VibeTunnel/Core/Configuration/StatusBarMenuConfiguration.swift

62 lines
2.3 KiB
Swift

import Foundation
/// Configuration for StatusBarMenuManager setup.
///
/// This struct bundles all the service dependencies required to initialize
/// the status bar menu manager. It ensures all necessary services are provided
/// during initialization, following the dependency injection pattern.
struct StatusBarMenuConfiguration {
/// Monitors active terminal sessions.
///
/// Tracks the lifecycle of terminal sessions, providing real-time
/// updates about session state, activity, and metadata.
let sessionMonitor: SessionMonitor
/// Manages the VibeTunnel web server.
///
/// Handles starting, stopping, and monitoring the embedded or
/// development web server that serves the terminal interface.
let serverManager: ServerManager
/// Provides ngrok tunnel functionality.
///
/// Manages ngrok tunnels for exposing local terminal sessions
/// to the internet with secure HTTPS endpoints.
let ngrokService: NgrokService
/// Provides Tailscale network functionality.
///
/// Manages Tailscale integration for secure peer-to-peer
/// networking without exposing sessions to the public internet.
let tailscaleService: TailscaleService
/// Launches terminal applications.
///
/// Handles opening new terminal windows or tabs in the user's
/// preferred terminal application (Terminal.app, iTerm2, etc.).
let terminalLauncher: TerminalLauncher
/// Monitors Git repository states.
///
/// Provides real-time information about Git repositories,
/// including branch status, uncommitted changes, and sync state.
let gitRepositoryMonitor: GitRepositoryMonitor
/// Discovers Git repositories on the system.
///
/// Scans and indexes Git repositories for quick access
/// and provides repository suggestions in the UI.
let repositoryDiscovery: RepositoryDiscoveryService
/// Manages application configuration.
///
/// Handles reading and writing configuration settings,
/// including user preferences and system settings.
let configManager: ConfigManager
/// Manages Git worktrees.
///
/// Provides functionality for creating, listing, and managing
/// Git worktrees for parallel development workflows.
let worktreeService: WorktreeService
}