ContextProviderRegistry.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System.Collections.Generic;
  2. namespace LLM.Editor.Analysis
  3. {
  4. /// <summary>
  5. /// A static registry that holds all the available "tools" (Context Providers)
  6. /// that the LLM can use to query the project.
  7. /// </summary>
  8. public static class ContextProviderRegistry
  9. {
  10. private static readonly Dictionary<string, IContextProvider> _providers = new();
  11. // This static constructor will be used in the next phase to register all our tools.
  12. static ContextProviderRegistry()
  13. {
  14. RegisterProvider("ComponentData", new ComponentDataProvider());
  15. RegisterProvider("SourceCode", new SourceCodeProvider());
  16. RegisterProvider("ProjectSettings", new ProjectSettingsProvider());
  17. RegisterProvider("FindAssets", new FindAssetsProvider());
  18. RegisterProvider("FindInScene", new FindInSceneProvider());
  19. RegisterProvider("ConsoleLog", new ConsoleLogProvider());
  20. RegisterProvider("DependencyGraph", new DependencyGraphProvider());
  21. RegisterProvider("GetContextualMap", new GetContextualMapProvider());
  22. RegisterProvider("GetDataFromPath", new GetDataFromPathProvider());
  23. RegisterProvider("FindReferences", new FindReferencesProvider());
  24. }
  25. private static void RegisterProvider(string dataType, IContextProvider provider)
  26. {
  27. if (string.IsNullOrEmpty(dataType) || provider == null) return;
  28. _providers[dataType] = provider;
  29. }
  30. public static IContextProvider GetProvider(string dataType)
  31. {
  32. _providers.TryGetValue(dataType, out var provider);
  33. return provider;
  34. }
  35. }
  36. }