import Foundation import Cocoa import SystemExtensions @available(macOS 15.4, *) class AppDelegate: NSObject, NSApplicationDelegate { private var markbaseFS: MarkBaseFS? private var extensionInstaller: ExtensionInstaller? func applicationDidFinishLaunching(_ notification: Notification) { NSLog("🚀 MarkBaseFS Application started") // Initialize and run System Extension Installer NSLog("📦 Initializing ExtensionInstaller...") extensionInstaller = ExtensionInstaller() extensionInstaller!.install() // Initialize MarkBaseFS NSLog("🔧 Initializing MarkBaseFS...") markbaseFS = MarkBaseFS() do { try markbaseFS!.start() NSLog("✅ MarkBaseFS Application running") NSLog(" - Frame Index Table initialized") NSLog(" - 12719 frames loaded") NSLog(" - Web UI available: http://localhost:11438") } catch { NSLog("❌ MarkBaseFS startup failed: \(error)") } } func applicationWillTerminate(_ notification: Notification) { NSLog("🛑 MarkBaseFS Application terminating") markbaseFS?.stop() } func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { return false } } class ExtensionInstaller: NSObject, OSSystemExtensionRequestDelegate { func install() { NSLog("=== System Extension Installer ===") let extensionIdentifier = "com.accusys.markbase.fskitmodule" NSLog("Extension ID: \(extensionIdentifier)") NSLog("Submitting installation request...") let request = OSSystemExtensionRequest.activationRequest( forExtensionWithIdentifier: extensionIdentifier, queue: DispatchQueue.main ) request.delegate = self NSLog("OSSystemExtensionManager.shared.submitRequest()...") OSSystemExtensionManager.shared.submitRequest(request) NSLog("✅ Request submitted") NSLog("Please check: System Settings → Privacy & Security → System Extensions") } func request(_ request: OSSystemExtensionRequest, didFailWithError error: Error) { NSLog("❌ Installation failed: \(error)") NSLog("Error domain: \((error as NSError).domain)") NSLog("Error code: \((error as NSError).code)") NSLog("Error description: \((error as NSError).localizedDescription)") } func request(_ request: OSSystemExtensionRequest, didFinishWithResult result: OSSystemExtensionRequest.Result) { NSLog("✅ Installation succeeded!") NSLog("Result: \(result)") switch result { case .completed: NSLog("Extension installed and active") case .willCompleteAfterReboot: NSLog("Extension will complete installation after reboot") @unknown default: NSLog("Unknown result") } NSLog("Extension ID: \(request.identifier)") } func requestNeedsUserApproval(_ request: OSSystemExtensionRequest) { NSLog("⚠️ User approval required") NSLog("System Settings → Privacy & Security → System Extensions") NSLog("Approve: \(request.identifier)") } func request(_ request: OSSystemExtensionRequest, actionForReplacingExtension existing: OSSystemExtensionProperties, withExtension ext: OSSystemExtensionProperties) -> OSSystemExtensionRequest.ReplacementAction { NSLog("Extension conflict detected") NSLog("Existing: \(existing.bundleIdentifier) v\(existing.bundleVersion)") NSLog("New: \(ext.bundleIdentifier) v\(ext.bundleVersion)") NSLog("Replacing with new version...") return .replace } } // Create AppDelegate and set as delegate if #available(macOS 15.4, *) { let appDelegate = AppDelegate() NSApplication.shared.delegate = appDelegate } // Run application _ = NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv)