php-mcp/src/Website/Mcp/View/Modal/RequestLog.php
Snider 92e2097022 fix: register MCP layout in layouts:: namespace
- Change <x-layouts.mcp> to <x-layouts::mcp> in all blade views
- Change Livewire #[Layout('components.layouts.mcp')] to layouts::mcp
- Register layouts path via Blade::anonymousComponentPath in Boot
- Layout file already exists at src/Front/View/Blade/layouts/mcp.blade.php

The dot notation couldn't resolve because mcp.blade.php lives in the
package, not the app's components directory. The layouts:: namespace
is the correct pattern matching core-php's component registration.

Co-Authored-By: Virgil <virgil@lethean.io>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 15:38:27 +00:00

100 lines
2.3 KiB
PHP

<?php
declare(strict_types=1);
namespace Core\Website\Mcp\View\Modal;
use Livewire\Attributes\Layout;
use Livewire\Component;
use Livewire\WithPagination;
use Core\Mcp\Models\McpApiRequest;
/**
* MCP Request Log - view and replay API requests.
*/
#[Layout('layouts::mcp')]
class RequestLog extends Component
{
use WithPagination;
public string $serverFilter = '';
public string $statusFilter = '';
public ?int $selectedRequestId = null;
public ?McpApiRequest $selectedRequest = null;
public function updatedServerFilter(): void
{
$this->resetPage();
}
public function updatedStatusFilter(): void
{
$this->resetPage();
}
public function selectRequest(int $id): void
{
$workspace = auth()->user()?->defaultHostWorkspace();
// Only allow selecting requests that belong to the user's workspace
$request = McpApiRequest::query()
->when($workspace, fn ($q) => $q->forWorkspace($workspace->id))
->find($id);
if (! $request) {
$this->selectedRequestId = null;
$this->selectedRequest = null;
return;
}
$this->selectedRequestId = $id;
$this->selectedRequest = $request;
}
public function closeDetail(): void
{
$this->selectedRequestId = null;
$this->selectedRequest = null;
}
public function render()
{
$workspace = auth()->user()?->defaultHostWorkspace();
$query = McpApiRequest::query()
->orderByDesc('created_at');
if ($workspace) {
$query->forWorkspace($workspace->id);
}
if ($this->serverFilter) {
$query->forServer($this->serverFilter);
}
if ($this->statusFilter === 'success') {
$query->successful();
} elseif ($this->statusFilter === 'failed') {
$query->failed();
}
$requests = $query->paginate(20);
// Get unique servers for filter dropdown
$servers = McpApiRequest::query()
->when($workspace, fn ($q) => $q->forWorkspace($workspace->id))
->distinct()
->pluck('server_id')
->filter()
->values();
return view('mcp::web.request-log', [
'requests' => $requests,
'servers' => $servers,
]);
}
}