// Worker for money agents background tasks using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace AIBrain.SubBrains.MoneyAgents { public class Worker { private bool isRunning; private Dashboard dashboard; private List taskQueue; public Worker(Dashboard dashboard) { this.dashboard = dashboard ?? new Dashboard(); this.taskQueue = new List(); this.isRunning = false; } public async Task StartAsync(CancellationToken cancellationToken = default) { isRunning = true; Console.WriteLine("Worker started"); while (isRunning && !cancellationToken.IsCancellationRequested) { await ProcessTasksAsync(); await Task.Delay(TimeSpan.FromSeconds(5), cancellationToken); } Console.WriteLine("Worker stopped"); } public void Stop() { isRunning = false; } public void QueueTask(string task) { taskQueue.Add(task); Console.WriteLine($"Task queued: {task}"); } private async Task ProcessTasksAsync() { if (taskQueue.Count == 0) { return; } var tasksToProcess = new List(taskQueue); taskQueue.Clear(); foreach (var task in tasksToProcess) { await ProcessSingleTaskAsync(task); } } private async Task ProcessSingleTaskAsync(string task) { Console.WriteLine($"Processing task: {task}"); // Simulate work await Task.Delay(100); // Simulate generating revenue var random = new Random(); var revenue = (decimal)(random.NextDouble() * 100); dashboard.AddRevenueStream(task, revenue); Console.WriteLine($"Task completed: {task}, Revenue: ${revenue:F2}"); } public Dictionary GetStatus() { return new Dictionary { ["is_running"] = isRunning, ["pending_tasks"] = taskQueue.Count, ["dashboard_summary"] = dashboard.GetDashboardSummary() }; } } }