ContextProviderRegistry.cs 2.2 KB

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