using System.IO; using System.Text.Json; namespace AxCopilot.Services.Agent; public sealed class TeamCreateTool : IAgentTool { public string Name => "team_create"; public string Description => "Create a teammate descriptor in local team board."; public ToolParameterSchema Parameters => new() { Properties = new() { ["name"] = new() { Type = "string", Description = "Teammate name." }, ["role"] = new() { Type = "string", Description = "Role (worker/explorer/reviewer...)." } }, Required = ["name"] }; public Task ExecuteAsync(JsonElement args, AgentContext context, CancellationToken ct = default) { var name = args.TryGetProperty("name", out var n) ? (n.GetString() ?? "").Trim() : ""; if (string.IsNullOrWhiteSpace(name)) return Task.FromResult(ToolResult.Fail("name is required.")); if (string.IsNullOrWhiteSpace(context.WorkFolder) || !Directory.Exists(context.WorkFolder)) return Task.FromResult(ToolResult.Fail("valid WorkFolder is required.")); var role = args.TryGetProperty("role", out var r) ? (r.GetString() ?? "worker").Trim() : "worker"; var members = TeamStore.Load(context.WorkFolder); var member = new TeamStore.Member { Name = name, Role = role }; members.Add(member); TeamStore.Save(context.WorkFolder, members); return Task.FromResult(ToolResult.Ok($"Created team member: {member.Name} ({member.Role}) id={member.Id}")); } }