getSourcePath()]; $attributeRegistry = $attributeScanner->scan($paths); $storage->storeAttributes($attributeRegistry); $attrDuration = round((microtime(true) - $attrStart) * 1000, 2); echo " ✅ {$attributeRegistry->count()} attributes in {$attrDuration}ms\n\n"; // 2. Discover Templates echo "📄 Discovering templates...\n"; $tplStart = microtime(true); $templateScanner = new TemplateScanner($fileScanner); $templatePaths = [ $pathProvider->getSourcePath(), $pathProvider->getBasePath() . '/resources' ]; $templateRegistry = $templateScanner->scan($templatePaths); $storage->storeTemplates($templateRegistry); $tplDuration = round((microtime(true) - $tplStart) * 1000, 2); echo " ✅ " . count($templateRegistry->getAll()) . " templates in {$tplDuration}ms\n\n"; // 3. Discover Interfaces echo "🔌 Discovering interface implementations...\n"; $intStart = microtime(true); $interfaceScanner = new InterfaceScanner($fileScanner, $reflectionProvider, []); $interfaceRegistry = $interfaceScanner->scan($paths); $storage->storeInterfaces($interfaceRegistry); $intDuration = round((microtime(true) - $intStart) * 1000, 2); echo " ✅ {$interfaceRegistry->count()} implementations in {$intDuration}ms\n\n"; // Summary $totalDuration = round((microtime(true) - $totalStart) * 1000, 2); echo str_repeat("=", 60) . "\n"; echo "🎉 Discovery bootstrap complete in {$totalDuration}ms\n"; echo " 📁 Stored in: storage/discovery/\n"; echo str_repeat("=", 60) . "\n";