using UnityEngine; using LLM.Editor.Helper; using JetBrains.Annotations; namespace LLM.Editor.Commands { /// /// A command that does not act on the scene directly, but instead signals the UI /// to prompt the user for the objects needed for an analysis. /// [UsedImplicitly] public class RequestAnalysisContextCommand : ICommand { // This event can be subscribed to by the MCPWindow to update its UI. public static event System.Action OnAnalysisContextRequested; private readonly RequestAnalysisContextParams _params; public RequestAnalysisContextCommand(string jsonParams) { _params = jsonParams?.FromJson(); } public CommandOutcome Execute(Data.CommandContext context) { if (_params?.subjectRoles == null || _params.subjectRoles.Length == 0) { Debug.LogError("[RequestAnalysisContextCommand] Invalid parameters. Subject roles are required."); return CommandOutcome.Error; } // The command's job is to simply invoke the event. // The UI is responsible for handling it and showing the staging area. OnAnalysisContextRequested?.Invoke(_params); Debug.Log($"[RequestAnalysisContextCommand] Fired event to request context for roles: {string.Join(", ", _params.subjectRoles)}"); return CommandOutcome.Success; } } }