ContextProviderRegistry.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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("PackageManager", new PackageManagerProvider());
  17. RegisterProvider("TagsAndLayers", new TagsAndLayersProvider());
  18. RegisterProvider("FindAssets", new FindAssetsProvider());
  19. RegisterProvider("FindInScene", new FindInSceneProvider());
  20. RegisterProvider("Selection", new SelectionProvider());
  21. RegisterProvider("EditorState", new EditorStateProvider());
  22. RegisterProvider("ActiveScene", new ActiveSceneProvider());
  23. RegisterProvider("ConsoleLog", new ConsoleLogProvider());
  24. RegisterProvider("DependencyGraph", new DependencyGraphProvider());
  25. RegisterProvider("GetContextualMap", new GetContextualMapProvider());
  26. RegisterProvider("GetDataFromPath", new GetDataFromPathProvider());
  27. RegisterProvider("FindReferences", new FindReferencesProvider());
  28. RegisterProvider("DirectoryStructure", new DirectoryStructureProvider());
  29. RegisterProvider("GetComponentSchema", new GetComponentSchemaProvider());
  30. }
  31. private static void RegisterProvider(string dataType, IContextProvider provider)
  32. {
  33. if (string.IsNullOrEmpty(dataType) || provider == null) return;
  34. _providers[dataType] = provider;
  35. }
  36. public static IContextProvider GetProvider(string dataType)
  37. {
  38. _providers.TryGetValue(dataType, out var provider);
  39. return provider;
  40. }
  41. }
  42. }