agent/php/Website/Hub/Routes/admin.php
Snider f96bd67bd6 feat(agent/admin+hub): RFC foundation — admin scaffold + Hub global components
Foundation slice for Mantis #843 php/Mod/Admin + php/Website/Hub RFC:

* php/Mod/Admin/Boot.php — search registry, menu registry, form component
  layer, HasRateLimiting concern, reusable form/view primitives under
  Mod/Admin/Forms
* php/Website/Hub/Boot.php — host-aware Hub route naming for secondary
  domains
* WorkspaceSwitcher and GlobalSearch global Hub Livewire components
* Foundation routed slice in Hub/Routes/admin.php: dashboard shell,
  workspace listing, site settings (with WordPress/webhook connector),
  account usage, platform user list+detail
* Foundation tests under php/tests/Feature/Mod/Admin/

53 PHP files. php -l clean. Pest unrunnable in sandbox (no vendor/).

Foundation slice only — composer.json kept off-limits so namespace stays
under Core\Mod\Agentic\... rather than standalone Core\Admin package.
Deferred: Profile, Settings, ServiceManager, ServicesAdmin, Honeypot,
Entitlement\{Dashboard,FeatureManager,PackageManager}, PromptManager,
WaitlistManager, Console, Databases, Deployments, Content,
ContentManager, ContentEditor, ActivityLog, Analytics, AIServices,
BoostPurchase. Lane was under-instructed by supervisor with stop-at
framing — follow-up tickets needed for remainder.

Co-authored-by: Codex <noreply@openai.com>
Closes tasks.lthn.sh/view.php?id=843
2026-04-25 21:09:22 +01:00

25 lines
1.2 KiB
PHP

<?php
// SPDX-License-Identifier: EUPL-1.2
use Core\Mod\Agentic\Website\Hub\View\Modal\Admin\AccountUsage;
use Core\Mod\Agentic\Website\Hub\View\Modal\Admin\Dashboard;
use Core\Mod\Agentic\Website\Hub\View\Modal\Admin\Platform;
use Core\Mod\Agentic\Website\Hub\View\Modal\Admin\PlatformUser;
use Core\Mod\Agentic\Website\Hub\View\Modal\Admin\SiteSettings;
use Core\Mod\Agentic\Website\Hub\View\Modal\Admin\Sites;
use Illuminate\Support\Facades\Route;
Route::get('/', Dashboard::class)->name('dashboard');
Route::redirect('/dashboard', '/hub')->name('dashboard.redirect');
Route::get('/workspaces', Sites::class)->name('sites');
Route::redirect('/sites', '/hub/workspaces');
Route::get('/workspaces/{workspace}/{tab?}', SiteSettings::class)
->where('tab', 'services|general|deployment|environment|ssl|backups|danger')
->name('sites.settings');
Route::get('/account/usage', AccountUsage::class)->name('account.usage');
Route::redirect('/usage', '/hub/account/usage');
Route::redirect('/boosts', '/hub/account/usage?tab=boosts');
Route::redirect('/ai-services', '/hub/account/usage?tab=ai');
Route::get('/platform', Platform::class)->name('platform');
Route::get('/platform/user/{id}', PlatformUser::class)->where('id', '[0-9]+')->name('platform.user');