using System.IO; using System.Linq; using System.Text; using System.Text.Json; namespace AxCopilot.Services.Agent; public sealed class CronListTool : IAgentTool { public string Name => "cron_list"; public string Description => "List local cron-like jobs."; public ToolParameterSchema Parameters => new() { Properties = new(), Required = [] }; public Task ExecuteAsync(JsonElement args, AgentContext context, CancellationToken ct = default) { if (string.IsNullOrWhiteSpace(context.WorkFolder) || !Directory.Exists(context.WorkFolder)) return Task.FromResult(ToolResult.Fail("valid WorkFolder is required.")); var jobs = CronStore.Load(context.WorkFolder) .OrderByDescending(j => j.CreatedAt) .ToList(); if (jobs.Count == 0) return Task.FromResult(ToolResult.Ok("No cron jobs.")); var sb = new StringBuilder(); sb.AppendLine($"cron jobs: {jobs.Count}"); foreach (var j in jobs) sb.AppendLine($"- {j.Id} | {j.Name} | {j.Schedule} | enabled={j.Enabled} | {j.Command}"); return Task.FromResult(ToolResult.Ok(sb.ToString())); } }