"auth"]); exit; } $action = $_GET["action"] ?? $_POST["action"] ?? "poll"; $queue_dir = "/var/www/html/api/blade-tasks/"; @mkdir($queue_dir, 0777, true); switch ($action) { case "poll": // Return pending tasks $tasks = []; foreach (glob($queue_dir . "*.json") as $f) { $t = json_decode(file_get_contents($f), true); if (($t["status"] ?? "") === "pending") { $tasks[] = $t; } } echo json_encode(["tasks" => $tasks, "count" => count($tasks)]); break; case "complete": $id = $_POST["task_id"] ?? ""; $result = $_POST["result"] ?? ""; $f = $queue_dir . $id . ".json"; if (file_exists($f)) { $t = json_decode(file_get_contents($f), true); $t["status"] = "completed"; $t["result"] = $result; $t["completed_at"] = date("c"); file_put_contents($f, json_encode($t, JSON_PRETTY_PRINT)); echo json_encode(["ok" => true]); } break; case "create": $id = "task_" . date("YmdHis") . "_" . substr(md5(rand()), 0, 6); $task = [ "id" => $id, "goal" => $_POST["goal"] ?? "", "type" => $_POST["type"] ?? "powershell", "commands" => json_decode($_POST["commands"] ?? "[]", true) ?: [], "priority" => $_POST["priority"] ?? "normal", "status" => "pending", "created_at" => date("c") ]; file_put_contents($queue_dir . $id . ".json", json_encode($task, JSON_PRETTY_PRINT)); echo json_encode(["ok" => true, "task_id" => $id]); break; }