fox/routes/web.php

57 lines
2.3 KiB
PHP

<?php
use App\Http\Controllers\Fox\FoxBrainController;
use App\Http\Controllers\FoxCitiesController;
use App\Http\Controllers\FoxGeocodeController;
use App\Http\Controllers\FoxPlaceInfoController;
use App\Http\Controllers\FoxPlacesController;
use App\Http\Controllers\FoxPoiContextController;
use App\Http\Controllers\FoxRouteController;
use App\Http\Controllers\FoxStatusController;
use App\Http\Controllers\FoxTtsController;
use App\Http\Controllers\FoxVoiceController;
use App\Livewire\Chat;
use App\Livewire\Dashboard;
use App\Livewire\FoxHud;
use App\Livewire\Goals;
use Illuminate\Support\Facades\Route;
Route::get('/', Dashboard::class)->name('dashboard');
Route::get('/hud', FoxHud::class)->name('hud');
Route::get('/chat', Chat::class)->name('chat');
Route::get('/goals', Goals::class)->name('goals');
Route::post('/fox/voice', FoxVoiceController::class)->name('fox.voice');
Route::post('/fox/tts', FoxTtsController::class)->name('fox.tts');
Route::post('/fox/poi-context', FoxPoiContextController::class)->name('fox.poi-context');
Route::post('/fox/route', FoxRouteController::class)->name('fox.route');
Route::post('/fox/places', FoxPlacesController::class)->name('fox.places');
Route::post('/fox/geocode', FoxGeocodeController::class)->name('fox.geocode');
Route::post('/fox/cities', FoxCitiesController::class)->name('fox.cities');
Route::post('/fox/place-info', FoxPlaceInfoController::class)->name('fox.place-info');
Route::get('/fox/status', FoxStatusController::class)->name('fox.status');
Route::prefix('fox')->name('fox.')->group(function () {
Route::get('/brain', [FoxBrainController::class, 'index'])->name('brain');
Route::get('/brain/graph', [FoxBrainController::class, 'graph'])->name('brain.graph');
});
Route::post('/fox/message', function (\Illuminate\Http\Request $request) {
$text = $request->input('text', '');
if (empty(trim($text))) {
return response()->json(['error' => 'Kein Text'], 400);
}
$userMessage = app(\App\Services\FoxAgent::class)
->recordUserMessage($text, ['source' => 'electron']);
$assistantMessage = app(\App\Services\FoxAgent::class)
->processUserMessage($userMessage);
return response()->json([
'status' => 'ok',
'reply' => $assistantMessage->content,
'audio_url' => $assistantMessage->metadata['audio_url'] ?? null,
]);
})->middleware('web');