using System.Collections.Generic; namespace RunlevelSystems.DevPlus1.EditorTools { public static class RLAIContextExporter { public static void EnrichProjectContext(RLProjectAnalysisData data) { data.suggestedFirstFiles.Clear(); data.risksOrUnknowns.Clear(); foreach (RLScriptInfo script in data.scripts) { string lower = (script.className + " " + script.possibleRole).ToLowerInvariant(); if (lower.Contains("manager") || lower.Contains("controller") || script.lifecycleMethods.Count > 0) { AddUnique(data.suggestedFirstFiles, script.scriptPath); } } foreach (string file in data.gitReports.importantFiles) { AddUnique(data.suggestedFirstFiles, file); } if (data.scenes.Count == 0) { data.risksOrUnknowns.Add("No scenes were analyzed. Scene flow needs manual confirmation."); } if (data.gitReports.validationFoundErrors) { data.risksOrUnknowns.Add("Git validation reports customer code errors. Review reports/errors.md before feature work."); } int missingScripts = 0; int missingReferences = 0; foreach (RLSceneInfo scene in data.scenes) { missingScripts += scene.missingScriptCount; missingReferences += scene.missingReferenceCount; } foreach (RLPrefabInfo prefab in data.prefabs) { missingScripts += prefab.missingScriptCount; missingReferences += prefab.missingReferenceCount; } if (missingScripts > 0) { data.risksOrUnknowns.Add("Missing scripts were detected. Inspect RL_Unity_Missing_References.md."); } if (missingReferences > 0) { data.risksOrUnknowns.Add("Missing serialized object references were detected. Inspect RL_Unity_Missing_References.md."); } data.risksOrUnknowns.Add("Analysis is best-effort and may miss runtime-created objects, reflection, addressables, or dependency injection."); } private static void AddUnique(List values, string value) { if (!string.IsNullOrEmpty(value) && !values.Contains(value)) { values.Add(value); } } } }