using UnityEditor; using UnityEngine; namespace LLM.Editor.Client { /// /// Responsible for creating and providing the correct instance of an ILlmApiClient /// based on the project's settings (real or dummy). /// public static class ApiClientFactory { private static ILlmApiClient _clientInstance; private static Settings.MCPSettings _settings; public static ILlmApiClient GetClient() { if (_clientInstance == null) { LoadSettings(); _clientInstance = _settings.useDummyClient ? new DummyApiClient() : new GeminiApiClient(); } return _clientInstance; } private static void LoadSettings() { if (_settings) return; var guids = AssetDatabase.FindAssets("t:MCPSettings"); if (guids.Length == 0) { Debug.LogError("Could not find MCPSettings asset. Please create one."); return; } var path = AssetDatabase.GUIDToAssetPath(guids[0]); _settings = AssetDatabase.LoadAssetAtPath(path); } // Call this if settings are changed to force the factory to create a new client on next request. public static void InvalidateClient() { _clientInstance = null; } } }