count($queue), 'status' => 'ready', 'savings' => 'Batch API = -50% vs real-time. Prompt caching = -90% on system prompts.']); break; case 'add': $task = $input['task'] ?? ''; if (!$task) { echo json_encode(['error' => 'task required']); exit; } $queue = json_decode(@file_get_contents($queue_file) ?: '[]', true); $queue[] = ['task' => $task, 'added' => date('Y-m-d H:i'), 'status' => 'pending']; file_put_contents($queue_file, json_encode($queue, JSON_PRETTY_PRINT)); echo json_encode(['queued' => true, 'queue_size' => count($queue)]); break; case 'process': $queue = json_decode(@file_get_contents($queue_file) ?: '[]', true); // Process via WEVIA Master (0€) instead of Claude API $processed = 0; foreach ($queue as &$item) { if ($item['status'] === 'pending') { // Route to WEVIA Master $ctx = stream_context_create(['http' => ['method' => 'POST', 'header' => 'Content-Type: application/json', 'content' => json_encode(['message' => $item['task']]), 'timeout' => 20]]); $r = @file_get_contents("http://127.0.0.1/api/weval-ia-fast.php", false, $ctx); if ($r) { $item['status'] = 'done'; $item['response'] = substr($r, 0, 500); $processed++; } } } file_put_contents($queue_file, json_encode($queue, JSON_PRETTY_PRINT)); echo json_encode(['processed' => $processed, 'remaining' => count(array_filter($queue, fn($i) => $i['status'] === 'pending'))]); break; case 'clear': file_put_contents($queue_file, '[]'); echo json_encode(['cleared' => true]); break; default: echo json_encode(['actions' => ['status', 'add', 'process', 'clear']]); }