"no message"]); exit; } // === CONSENSUS MODE: Query 3+ providers, merge best === if ($mode === "consensus") { $providers = ["nim-deepseek", "alibaba-qwen", "cf-deepseek-r1", "mistral", "or-gpt-oss"]; $results = []; $env = @file_get_contents("/etc/weval/secrets.env") ?: ""; foreach (array_slice($providers, 0, 3) as $p) { $ch = curl_init("https://weval-consulting.com/api/wevia-multi-provider.php"); curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode(["message" => $msg, "model" => $p]), CURLOPT_HTTPHEADER => ["Content-Type: application/json"], CURLOPT_TIMEOUT => 30, CURLOPT_SSL_VERIFYPEER => false]); $r = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($code === 200) { $d = json_decode($r, true); if (!empty($d["content"])) { $results[] = ["provider" => $d["provider"] ?? $p, "content" => $d["content"], "length" => strlen($d["content"])]; } } } if ($results) { // Pick best (longest) + add consensus summary usort($results, fn($a, $b) => $b["length"] - $a["length"]); $best = $results[0]; $summary = "CONSENSUS (" . count($results) . " IAs):\n"; foreach ($results as $i => $r) { $summary .= ($i+1) . ". " . $r["provider"] . " (" . $r["length"] . "ch)\n"; } echo json_encode([ "content" => $best["content"], "consensus_summary" => $summary, "provider" => "CONSENSUS " . count($results) . " IAs", "participants" => array_map(fn($r) => $r["provider"], $results), "model" => "multi-ai-consensus", "cost" => "0EUR SOUVERAIN" ]); exit; } } // === AUTONOMOUS MODE: Background task, check status === if ($mode === "autonomous") { $task_dir = "/tmp/arena-tasks/"; @mkdir($task_dir, 0777, true); // Check existing task status if ($task_id) { $f = $task_dir . basename($task_id) . ".json"; if (file_exists($f)) { echo file_get_contents($f); } else { echo json_encode(["status" => "pending", "task_id" => $task_id]); } exit; } // Create new autonomous task $tid = "arena_" . time() . "_" . substr(md5($msg), 0, 6); $task = [ "task_id" => $tid, "status" => "running", "message" => $msg, "started" => date("Y-m-d H:i:s"), "duration_min" => $duration, "steps" => [], ]; // Execute immediately with Master $ch = curl_init("https://weval-consulting.com/api/wevia-master-api.php"); curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode(["message" => $msg]), CURLOPT_HTTPHEADER => ["Content-Type: application/json"], CURLOPT_TIMEOUT => 60, CURLOPT_SSL_VERIFYPEER => false]); $r = curl_exec($ch); $d = json_decode($r, true); $master_result = $d["content"] ?? ""; $task["steps"][] = ["agent" => "WEVIA Master", "result" => substr($master_result, 0, 2000), "time" => date("H:i:s")]; $task["status"] = "completed"; $task["result"] = $master_result; file_put_contents($task_dir . $tid . ".json", json_encode($task)); echo json_encode([ "content" => $master_result, "task_id" => $tid, "status" => "completed", "provider" => "Arena Autonomous", "model" => "master+multi-agent", "cost" => "0EUR SOUVERAIN" ]); exit; } // === STREAM MODE: SSE streaming (for long coding tasks) === if ($mode === "stream") { header("Content-Type: text/event-stream"); header("Cache-Control: no-cache"); // Step 1: Master analysis echo "data: {\"step\":\"master\",\"status\":\"analyzing\"}\n\n"; ob_flush(); flush(); $ch = curl_init("https://weval-consulting.com/api/wevia-master-api.php"); curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode(["message" => $msg]), CURLOPT_HTTPHEADER => ["Content-Type: application/json"], CURLOPT_TIMEOUT => 30]); $master = json_decode(curl_exec($ch), true)["content"] ?? ""; echo "data: " . json_encode(["step" => "master", "content" => substr($master, 0, 500)]) . "\n\n"; ob_flush(); flush(); // Step 2: Best coder for implementation echo "data: {\"step\":\"coding\",\"status\":\"generating\"}\n\n"; ob_flush(); flush(); $ch = curl_init("https://weval-consulting.com/api/wevia-multi-provider.php"); curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode(["message" => $msg, "model" => "nim-deepseek"]), CURLOPT_HTTPHEADER => ["Content-Type: application/json"], CURLOPT_TIMEOUT => 60]); $code_result = json_decode(curl_exec($ch), true)["content"] ?? ""; echo "data: " . json_encode(["step" => "coding", "content" => $code_result]) . "\n\n"; ob_flush(); flush(); echo "data: {\"step\":\"done\",\"status\":\"complete\"}\n\n"; echo "data: [DONE]\n\n"; exit; } // === SINGLE MODE: Direct to multi-provider === $model = $models[0] ?? "auto"; $ch = curl_init("https://weval-consulting.com/api/wevia-multi-provider.php"); curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode(["message" => $msg, "model" => $model]), CURLOPT_HTTPHEADER => ["Content-Type: application/json"], CURLOPT_TIMEOUT => 30]); $r = curl_exec($ch); echo $r; ?>