98 lines
3.5 KiB
PHP
98 lines
3.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Core\Mod\Mcp;
|
|
|
|
use Core\Events\AdminPanelBooting;
|
|
use Core\Events\ConsoleBooting;
|
|
use Core\Events\McpToolsRegistering;
|
|
use Core\Mod\Mcp\Events\ToolExecuted;
|
|
use Core\Mod\Mcp\Listeners\RecordToolExecution;
|
|
use Core\Mod\Mcp\Services\AuditLogService;
|
|
use Core\Mod\Mcp\Services\McpQuotaService;
|
|
use Core\Mod\Mcp\Services\ToolAnalyticsService;
|
|
use Core\Mod\Mcp\Services\ToolDependencyService;
|
|
use Core\Mod\Mcp\Services\ToolRegistry;
|
|
use Core\Mod\Mcp\Services\ToolVersionService;
|
|
use Illuminate\Support\Facades\Event;
|
|
use Illuminate\Support\ServiceProvider;
|
|
|
|
class Boot extends ServiceProvider
|
|
{
|
|
/**
|
|
* The module name.
|
|
*/
|
|
protected string $moduleName = 'mcp';
|
|
|
|
/**
|
|
* Events this module listens to for lazy loading.
|
|
*
|
|
* @var array<class-string, string>
|
|
*/
|
|
public static array $listens = [
|
|
AdminPanelBooting::class => 'onAdminPanel',
|
|
ConsoleBooting::class => 'onConsole',
|
|
McpToolsRegistering::class => 'onMcpTools',
|
|
];
|
|
|
|
/**
|
|
* Register any application services.
|
|
*/
|
|
public function register(): void
|
|
{
|
|
$this->app->singleton(ToolRegistry::class);
|
|
$this->app->singleton(ToolAnalyticsService::class);
|
|
$this->app->singleton(McpQuotaService::class);
|
|
$this->app->singleton(ToolDependencyService::class);
|
|
$this->app->singleton(AuditLogService::class);
|
|
$this->app->singleton(ToolVersionService::class);
|
|
}
|
|
|
|
/**
|
|
* Bootstrap any application services.
|
|
*/
|
|
public function boot(): void
|
|
{
|
|
$this->loadMigrationsFrom(__DIR__.'/Migrations');
|
|
|
|
// Register event listener for tool execution analytics
|
|
Event::listen(ToolExecuted::class, RecordToolExecution::class);
|
|
}
|
|
|
|
// -------------------------------------------------------------------------
|
|
// Event-driven handlers
|
|
// -------------------------------------------------------------------------
|
|
|
|
public function onAdminPanel(AdminPanelBooting $event): void
|
|
{
|
|
$event->views($this->moduleName, __DIR__.'/View/Blade');
|
|
|
|
if (file_exists(__DIR__.'/Routes/admin.php')) {
|
|
$event->routes(fn () => require __DIR__.'/Routes/admin.php');
|
|
}
|
|
|
|
$event->livewire('mcp.admin.api-key-manager', View\Modal\Admin\ApiKeyManager::class);
|
|
$event->livewire('mcp.admin.playground', View\Modal\Admin\Playground::class);
|
|
$event->livewire('mcp.admin.mcp-playground', View\Modal\Admin\McpPlayground::class);
|
|
$event->livewire('mcp.admin.request-log', View\Modal\Admin\RequestLog::class);
|
|
$event->livewire('mcp.admin.tool-analytics-dashboard', View\Modal\Admin\ToolAnalyticsDashboard::class);
|
|
$event->livewire('mcp.admin.tool-analytics-detail', View\Modal\Admin\ToolAnalyticsDetail::class);
|
|
$event->livewire('mcp.admin.quota-usage', View\Modal\Admin\QuotaUsage::class);
|
|
$event->livewire('mcp.admin.audit-log-viewer', View\Modal\Admin\AuditLogViewer::class);
|
|
$event->livewire('mcp.admin.tool-version-manager', View\Modal\Admin\ToolVersionManager::class);
|
|
}
|
|
|
|
public function onConsole(ConsoleBooting $event): void
|
|
{
|
|
$event->command(Console\Commands\McpAgentServerCommand::class);
|
|
$event->command(Console\Commands\PruneMetricsCommand::class);
|
|
$event->command(Console\Commands\VerifyAuditLogCommand::class);
|
|
}
|
|
|
|
public function onMcpTools(McpToolsRegistering $event): void
|
|
{
|
|
// MCP tool handlers will be registered here once extracted
|
|
// from the monolithic McpAgentServerCommand
|
|
}
|
|
}
|