'topic required']); exit; } // Map agent name -> API endpoint $AGENT_APIS = [ 'wevia' => '/api/weval-ia-fast.php', 'wevia master' => '/api/wevia-master-api.php', 'weval mind' => '/api/hamid-api-proxy.php', 'ethica' => '/api/ethica-brain.php', 'blade' => '/api/blade-brain.php', 'bladerazor' => '/api/blade-brain.php', 'manager' => '/api/weval-manager.php', 'wevcode' => '/api/wevcode-superclaude.php', 'wedroid' => '/api/wedroid-brain-api.php', 'consensus' => '/api/chat-proxy.php', 'default' => '/api/weval-ia-fast.php', ]; function route_agent($name, $apis) { $n = mb_strtolower(trim($name)); foreach ($apis as $k => $v) { if ($k !== 'default' && strpos($n, $k) !== false) return $v; } return $apis['default']; } function call_agent($endpoint, $msg, $session) { $url = 'http://127.0.0.1' . $endpoint; $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 25, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Host: weval-consulting.com', 'Referer: https://weval-consulting.com/cloudbot-social.html' ], CURLOPT_POSTFIELDS => json_encode([ 'message' => $msg, 'msg' => $msg, 'provider' => 'cerebras', 'session_id' => $session ]) ]); $resp = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($code !== 200) return ['error' => "HTTP $code", 'raw' => substr($resp ?? '', 0, 300)]; $d = @json_decode($resp, true); if (!$d) return ['error' => 'non-JSON', 'raw' => substr($resp, 0, 300)]; $reply = $d['response'] ?? $d['content'] ?? $d['output'] ?? $d['message'] ?? ''; if (is_array($reply)) $reply = json_encode($reply); return [ 'reply' => mb_substr((string)$reply, 0, 800), 'provider' => $d['provider'] ?? 'unknown', 'raw' => null ]; } $ep1 = route_agent($agent1, $AGENT_APIS); $ep2 = route_agent($agent2, $AGENT_APIS); $session_id = 'interagent_' . date('YmdHis') . '_' . substr(md5(uniqid()), 0, 8); $dialogue = []; $current_msg = "Salut $agent2 ! Je suis $agent1. Parlons de : $topic. Donne ton point de vue en 2-3 phrases max."; $current_from = $agent1; $current_to = $agent2; $current_endpoint = $ep2; for ($i = 0; $i < $turns; $i++) { $t_start = microtime(true); $res = call_agent($current_endpoint, $current_msg, $session_id); $latency = round((microtime(true) - $t_start) * 1000); $dialogue[] = [ 'turn' => $i + 1, 'from' => $current_from, 'to' => $current_to, 'message' => $current_msg, 'response' => $res['reply'] ?? ('[ERR] ' . ($res['error'] ?? 'unknown')), 'provider' => $res['provider'] ?? 'error', 'latency_ms' => $latency, 'ts' => date('c') ]; if (isset($res['error'])) { // Stop early on error break; } // Reverse for next turn: the responder asks back to opposite agent $reply = $res['reply']; $current_msg = "$current_from a repondu : \"" . mb_substr($reply, 0, 300) . "\". Qu'en penses-tu ? Ajoute ton expertise."; $tmp_from = $current_to; $current_to = $current_from; $current_from = $tmp_from; $current_endpoint = ($current_endpoint === $ep1) ? $ep2 : $ep1; } // Log in PG (wevia_conversations) pour que ca apparaisse dans SSE try { $pdo = new PDO( "pgsql:host=10.1.0.3;dbname=adx_system", "admin", "admin123", [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_TIMEOUT => 3] ); $pdo->prepare("INSERT INTO public.conversations (session_id, title, source) VALUES (?, ?, ?)") ->execute([$session_id, "Inter-Agent: $agent1 x $agent2", 'cloudbot-social-interagent']); $cid = $pdo->lastInsertId(); foreach ($dialogue as $d) { $pdo->prepare("INSERT INTO public.messages (conversation_id, role, content) VALUES (?, ?, ?)") ->execute([$cid, $d['from'], "[→" . $d['to'] . "] " . mb_substr($d['message'], 0, 2000)]); $pdo->prepare("INSERT INTO public.messages (conversation_id, role, content) VALUES (?, ?, ?)") ->execute([$cid, 'assistant', mb_substr($d['response'], 0, 2000)]); } } catch (Exception $e) { // Silent - log optional } echo json_encode([ 'ok' => true, 'topic' => $topic, 'agents' => ['agent1' => $agent1, 'agent2' => $agent2], 'endpoints' => ['agent1' => $ep1, 'agent2' => $ep2], 'session_id' => $session_id, 'turns_completed' => count($dialogue), 'dialogue' => $dialogue, 'logged_to_db' => isset($cid) ], JSON_UNESCAPED_UNICODE);