← All source files

V3 / 536edbbdbb6e

SubagentCommands.cs

Lilith/Core/Scenarios/SubagentCommands.cs

Changed in this version
CS
using Lilith.Core.Commands;

namespace Lilith.Core.Scenarios;

public static class SubagentCommands
{
    public static void Register(ChatCommandRegistry commands, ProviderClient client) => commands.Register("subagents",
        "List agents; show or hide their detailed output.", context => Execute(client, context.Arguments));

    public static string Execute(ProviderClient client, string arguments)
    {
        switch (arguments.Trim().ToLowerInvariant())
        {
            case "show": client.ShowSubagentOutput = true; return "Subagent details shown.";
            case "hide": client.ShowSubagentOutput = false; return "Subagent details hidden; completion summaries remain visible.";
            case "":
                var snapshot = client.Subagents.Snapshot();
                return $"Subagents: {snapshot.RunningCount} running / {snapshot.TotalCreated} created; {snapshot.CompletedCount} completed, {snapshot.FailedCount} failed, {snapshot.CanceledCount} canceled, {snapshot.WaitingApprovalCount} waiting for approval.\n" +
                    string.Join("\n", snapshot.Running.Concat(snapshot.Recent).Select(r => $"Subagent {r.AgentId}: {r.ScenarioId} / {r.Status}"));
            default: return "Use /subagents, /subagents show or /subagents hide.";
        }
    }
}