refactor(web): remove legacy/non-functional admin console pages, align to current product

The Manager console carried screens built to an early control-plane vision
that no longer matches how the product runs (desktop client drives tasks;
Manager is gateway + status judge). Removed the dead/misleading ones and
aligned task overview to the real status model. Frontend only; no backend
endpoints touched.

Deleted (routes + pages + menu entries):
- Resource binding (/sk-sources): mcp-server /api/resources unwired (301) +
  Azure Key Vault unreachable -> page was inert.
- Audit (/audit): only simulated approvals, empty leases, mcp audit unwired.
- Events / Templates / Agents pages: legacy control-plane (hardcoded mock
  templates), not in the main menu but route-reachable.
- azure-cloud-binding-sheet + create-agent-deployment-sheet (New run).

Task overview (/deployments) kept and fixed:
- status now uses Manager-judged display_status (completed / needs_codegen /
  completed_without_deliverable=fail / running ...) instead of raw phase, so
  success vs failure is legible.
- dropped New run, scope/budget/secret_ref pills, permission-manifest grants
  table, Simulate; kept the task list, per-task audit timeline and artifacts.

Cleaned all menu/nav/dashboard references to the deleted routes (sidebar,
top-nav, footer, cockpit, home-hero, agent-hub, task-card-view) and
regenerated routeTree.gen.ts. tsc -b and rsbuild build both pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-02 19:39:49 +08:00
co-authored by Claude Opus 4.8
parent 6fd294635f
commit 8b28c180c7
19 changed files with 44 additions and 4155 deletions
@@ -78,7 +78,6 @@ export function Footer(props: FooterProps) {
title: t('footer.columns.docs.title'),
links: [
{ text: t('Deployments'), href: '/deployments' },
{ text: t('Events'), href: '/events' },
{ text: t('API Keys'), href: '/keys' },
],
},
@@ -7,14 +7,12 @@ import {
ClipboardList,
Cpu,
Layout,
ListChecks,
Plug,
Receipt,
Settings,
Shield,
ShieldAlert,
Store,
TerminalSquare,
Ticket,
Wrench,
} from 'lucide-react'
@@ -76,16 +74,6 @@ export function getSystemSettingsNavGroups(t: TFunction): NavGroup[] {
url: '/users',
icon: Building2,
},
{
title: t('Templates'),
url: '/templates',
icon: ListChecks,
},
{
title: t('Agents'),
url: '/agents',
icon: TerminalSquare,
},
{
title: t('Vendors'),
url: '/models/vendors',
+4
View File
@@ -155,6 +155,10 @@ export type AgentPermissionManifest = {
export type AgentDeployment = {
deployment_id: string
// Client-facing mode (sub_agile | swarm) + Manager-judged display_status,
// both populated by the backend list/detail responses.
mode?: string
display_status?: string
sub_mode?: AgentSubMode
status: string
phase: string
@@ -1,290 +0,0 @@
import { useState } from 'react'
import { useMutation, useQueryClient } from '@tanstack/react-query'
import { AlertTriangle, Cloud, ShieldCheck } from 'lucide-react'
import { useTranslation } from 'react-i18next'
import { toast } from 'sonner'
import {
createManagerResource,
discoverManagerAzureResources,
putManagerResourceSecret,
updateManagerResource,
} from '@/lib/manager-resources'
import { Button } from '@/components/ui/button'
import { Input } from '@/components/ui/input'
import { Label } from '@/components/ui/label'
import {
Sheet,
SheetContent,
SheetDescription,
SheetHeader,
SheetTitle,
} from '@/components/ui/sheet'
// Azure cloud account binding via manual Service Principal credentials.
// The Manager creates a local ResourceBinding first, writes the
// client_secret to Azure Key Vault via /api/resources/:id/secret, stores
// only azkv://... on the resource row, then asks Manager to enumerate ARM
// resources and persist them as cloud_resource bindings.
//
// Field map → Manager ResourceBinding:
// resource_type = 'cloud_account'
// name = display_name
// external_id = subscription_id
// metadata = { subscription_id, tenant_id, client_id }
// secret_ref = azkv://<vault>/secrets/<name>
// constraints = {} (resource group filters can be added later)
// permission_scope= { actions: ['azure:read'] }
interface Props {
open: boolean
onOpenChange: (next: boolean) => void
vaultConfigured?: boolean
}
export function AzureCloudBindingSheet({
open,
onOpenChange,
vaultConfigured,
}: Props) {
const { t } = useTranslation()
const qc = useQueryClient()
const [form, setForm] = useState({
name: '',
subscription_id: '',
tenant_id: '',
client_id: '',
client_secret: '',
})
const mutation = useMutation({
mutationFn: async () => {
if (!vaultConfigured) {
throw new Error(t('Azure Key Vault is not ready'))
}
const pending = await createManagerResource({
resource_type: 'cloud_account',
name: form.name.trim(),
provider: 'azure',
external_id: form.subscription_id.trim(),
binding_scope: `azure:${form.subscription_id.trim()}`,
metadata: {
subscription_id: form.subscription_id.trim(),
tenant_id: form.tenant_id.trim(),
client_id: form.client_id.trim(),
},
permission_scope: { actions: ['azure:read'] },
constraints: {},
status: 'pending',
})
const secret = await putManagerResourceSecret(pending.id, {
subscription_id: form.subscription_id.trim(),
tenant_id: form.tenant_id.trim(),
client_id: form.client_id.trim(),
client_secret: form.client_secret,
})
const account = await updateManagerResource(pending.id, {
resource_type: 'cloud_account',
name: pending.name,
provider: pending.provider,
external_id: pending.external_id,
binding_scope: pending.binding_scope,
secret_ref: secret.secret_ref,
metadata: pending.metadata,
permission_scope: pending.permission_scope,
constraints: pending.constraints,
status: 'active',
})
try {
const discovery = await discoverManagerAzureResources(account.id)
return { account, discovery, discoveryError: '' }
} catch (err) {
return {
account,
discovery: null,
discoveryError:
err instanceof Error ? err.message : t('Azure discovery failed'),
}
}
},
onSuccess: (result) => {
void qc.invalidateQueries({ queryKey: ['heicode', 'resources'] })
void qc.invalidateQueries({ queryKey: ['manager', 'cloud-resources'] })
toast.success(t('Azure subscription bound'))
if (result.discoveryError) {
toast.warning(result.discoveryError)
} else if (result.discovery) {
toast.success(
t('{{n}} Azure resources discovered', {
n: result.discovery.discovered,
})
)
}
onOpenChange(false)
setForm({
name: '',
subscription_id: '',
tenant_id: '',
client_id: '',
client_secret: '',
})
},
onError: (err) => {
toast.error(
err instanceof Error ? err.message : t('Failed to bind Azure account')
)
},
})
const canSubmit =
form.name.trim() !== '' &&
form.subscription_id.trim() !== '' &&
form.tenant_id.trim() !== '' &&
form.client_id.trim() !== '' &&
form.client_secret.trim() !== '' &&
Boolean(vaultConfigured)
return (
<Sheet open={open} onOpenChange={onOpenChange}>
<SheetContent className='w-[min(560px,96vw)] overflow-y-auto sm:max-w-none'>
<SheetHeader>
<SheetTitle className='flex items-center gap-2'>
<Cloud className='text-primary h-5 w-5' />
{t('Connect Azure subscription')}
</SheetTitle>
<SheetDescription>
{t(
'Paste a Service Principal that has at least Reader role on the subscription. Heicode uses it to enumerate cloud resources (VMs, databases, AKS, storage). AWS and GCP are coming soon.'
)}
</SheetDescription>
</SheetHeader>
{!vaultConfigured && (
<div className='mt-4 rounded-lg border border-amber-500/30 bg-amber-500/5 p-3 text-xs leading-relaxed'>
<p className='flex items-center gap-1.5 font-semibold text-amber-400'>
<AlertTriangle className='h-3.5 w-3.5' />
{t('Secret vault not yet configured')}
</p>
<p className='text-muted-foreground mt-1.5'>
{t(
'Azure Key Vault is not ready yet (see System settings → Secret vault status). The subscription cannot be bound until Manager can write the client_secret to Key Vault.'
)}
</p>
</div>
)}
<div className='mt-4 grid gap-3 text-sm'>
<div>
<Label htmlFor='az-name'>{t('Display name')}</Label>
<Input
id='az-name'
value={form.name}
onChange={(e) => setForm((v) => ({ ...v, name: e.target.value }))}
placeholder='production-azure'
className='mt-1'
/>
</div>
<div className='grid gap-3 sm:grid-cols-2'>
<div>
<Label htmlFor='az-sub'>{t('Subscription ID')}</Label>
<Input
id='az-sub'
value={form.subscription_id}
onChange={(e) =>
setForm((v) => ({ ...v, subscription_id: e.target.value }))
}
placeholder='12345678-1234-1234-1234-1234567890ab'
className='mt-1 font-mono text-xs'
/>
</div>
<div>
<Label htmlFor='az-tenant'>{t('Tenant ID')}</Label>
<Input
id='az-tenant'
value={form.tenant_id}
onChange={(e) =>
setForm((v) => ({ ...v, tenant_id: e.target.value }))
}
placeholder='12345678-1234-1234-1234-1234567890ab'
className='mt-1 font-mono text-xs'
/>
</div>
</div>
<div className='grid gap-3 sm:grid-cols-2'>
<div>
<Label htmlFor='az-client'>
{t('Client ID (Application ID)')}
</Label>
<Input
id='az-client'
value={form.client_id}
onChange={(e) =>
setForm((v) => ({ ...v, client_id: e.target.value }))
}
placeholder='12345678-1234-1234-1234-1234567890ab'
className='mt-1 font-mono text-xs'
/>
</div>
<div>
<Label htmlFor='az-secret'>{t('Client secret')}</Label>
<Input
id='az-secret'
type='password'
value={form.client_secret}
onChange={(e) =>
setForm((v) => ({ ...v, client_secret: e.target.value }))
}
placeholder='********'
className='mt-1 font-mono text-xs'
/>
</div>
</div>
<div className='bg-card/40 text-muted-foreground mt-2 rounded-lg border border-dashed p-3 text-xs'>
<p className='text-foreground flex items-center gap-1.5 font-medium'>
<ShieldCheck className='text-primary h-3.5 w-3.5' />
{t('What Heicode will and will not do')}
</p>
<ul className='mt-2 space-y-1'>
<li>· {t('Read-only ARM access (Reader role recommended)')}</li>
<li>
·{' '}
{t('Auto-discover VM / database / AKS / storage')}
</li>
<li>
·{' '}
{t(
'Never modify resources without explicit approval from the desktop client'
)}
</li>
<li>
·{' '}
{t(
'Never write the client_secret into Manager logs or audit payloads'
)}
</li>
</ul>
</div>
</div>
<div className='mt-4 flex justify-end gap-2'>
<Button
type='button'
variant='outline'
onClick={() => onOpenChange(false)}
disabled={mutation.isPending}
>
{t('Cancel')}
</Button>
<Button
type='button'
onClick={() => mutation.mutate()}
disabled={!canSubmit || mutation.isPending}
>
{mutation.isPending ? t('Binding...') : t('Bind subscription')}
</Button>
</div>
</SheetContent>
</Sheet>
)
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -5
View File
@@ -5,11 +5,7 @@ type AgentHubProps = {
description: string
}
const quickLinks = [
{ title: 'Deployments', to: '/deployments' as const },
{ title: 'Events', to: '/events' as const },
{ title: 'Audit', to: '/audit' as const },
]
const quickLinks = [{ title: 'Deployments', to: '/deployments' as const }]
export function AgentHub(props: AgentHubProps) {
return (
@@ -12,14 +12,11 @@ import {
PlayCircle,
Rocket,
ScrollText,
ShieldCheck,
StopCircle,
GitBranch,
} from 'lucide-react'
import { cn } from '@/lib/utils'
import { Button } from '@/components/ui/button'
import {
getAgentAuditLogs,
listAgentDeployments,
type AgentDeployment,
} from '@/features/agent-console/api'
@@ -149,12 +146,6 @@ export function CockpitView() {
refetchInterval: 30_000,
})
const auditQuery = useQuery({
queryKey: ['cockpit', 'audit'],
queryFn: getAgentAuditLogs,
refetchInterval: 60_000,
})
const stats = useMemo(() => {
const list: AgentDeployment[] = deploymentsQuery.data ?? []
const counters: Record<StatusKey, number> = {
@@ -189,11 +180,6 @@ export function CockpitView() {
[stats.list]
)
const auditFeed = useMemo(() => {
const items = (auditQuery.data ?? []) as Array<Record<string, unknown>>
return items.slice(0, 8)
}, [auditQuery.data])
return (
<div className='space-y-6'>
{/* Tier 1: Status */}
@@ -296,7 +282,7 @@ export function CockpitView() {
variant='outline'
className='shrink-0 opacity-70 group-hover:opacity-100'
>
<Link to='/events'>
<Link to='/deployments'>
<ScrollText className='mr-1 h-3.5 w-3.5' />
{t('Inspect')}
</Link>
@@ -308,61 +294,6 @@ export function CockpitView() {
)}
</section>
<section className='rounded-2xl border border-[color-mix(in_oklch,var(--primary)_22%,var(--border))] bg-[color-mix(in_oklch,var(--card)_70%,transparent)] p-5 backdrop-blur'>
<header className='mb-4 flex items-center justify-between'>
<div>
<p className='text-[11px] font-semibold tracking-[0.16em] text-muted-foreground uppercase'>
{t('Audit timeline')}
</p>
<h3 className='mt-1 text-lg font-semibold'>
{t('Tenant-scoped activity')}
</h3>
</div>
<Button asChild size='sm' variant='ghost' className='gap-1'>
<Link to='/audit'>
{t('Open Audit')}
<ArrowUpRight className='h-3.5 w-3.5' />
</Link>
</Button>
</header>
{auditQuery.isLoading ? (
<div className='space-y-3'>
{Array.from({ length: 5 }).map((_, idx) => (
<div
key={idx}
className='h-12 animate-pulse rounded-lg bg-muted/40'
/>
))}
</div>
) : auditFeed.length === 0 ? (
<div className='rounded-xl border border-dashed border-[color-mix(in_oklch,var(--primary)_22%,var(--border))] p-8 text-center text-sm text-muted-foreground'>
{t('No audit events captured yet.')}
</div>
) : (
<ol className='relative ms-2 space-y-4 border-s border-[color-mix(in_oklch,var(--primary)_18%,var(--border))] ps-4'>
{auditFeed.map((entry, idx) => {
const action = String(entry.action || entry.event || 'event')
const actor = String(entry.actor || entry.user || 'system')
const occurred = String(entry.occurred_at || entry.timestamp || '')
return (
<li key={idx} className='relative'>
<span className='absolute -left-[21px] top-1.5 inline-block h-2 w-2 rounded-full bg-primary shadow-[0_0_0_3px_color-mix(in_oklch,var(--primary)_25%,transparent)]' />
<p className='font-mono text-[11px] uppercase tracking-[0.14em] text-primary'>
{action}
</p>
<p className='mt-0.5 text-sm text-foreground/90'>
{actor}
</p>
<p className='text-[11px] text-muted-foreground'>
{occurred ? `${formatRelative(occurred)} ago` : '—'}
</p>
</li>
)
})}
</ol>
)}
</section>
</div>
{/* Tier 3: Action */}
@@ -395,18 +326,6 @@ export function CockpitView() {
desc={t('Stop a deployment and capture an audit record.')}
to='/deployments'
/>
<ActionTile
icon={ShieldCheck}
title={t('Review audit')}
desc={t('Filter by actor, action, and tenant.')}
to='/audit'
/>
<ActionTile
icon={GitBranch}
title={t('Inspect Git sources')}
desc={t('Inspect Git sources description')}
to='/sk-sources'
/>
</div>
</section>
</div>
@@ -422,7 +341,7 @@ function ActionTile({
icon: React.ComponentType<{ className?: string }>
title: string
desc: string
to: '/deployments' | '/audit' | '/sk-sources'
to: '/deployments'
}) {
return (
<Link
@@ -30,7 +30,6 @@ import {
GitBranch,
PlayCircle,
Rocket,
ShieldCheck,
Sparkles,
UserCog,
XCircle,
@@ -444,12 +443,6 @@ function HelperEntries({ t }: { t: ReturnType<typeof useTranslation>['t'] }) {
desc: string
to: string
}> = [
{
Icon: GitBranch,
title: t('Preparation checklist'),
desc: t('Connect code, SK, docs and cloud accounts'),
to: '/sk-sources',
},
{
Icon: Download,
title: t('Heicode desktop client'),
@@ -468,12 +461,6 @@ function HelperEntries({ t }: { t: ReturnType<typeof useTranslation>['t'] }) {
desc: t('Tokens, password and active sessions'),
to: '/profile',
},
{
Icon: ShieldCheck,
title: t('Recent audit'),
desc: t('Approvals, scope changes and credential rotations'),
to: '/audit',
},
{
Icon: Rocket,
title: t('Task overview'),
+17 -56
View File
@@ -15,7 +15,6 @@ import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
import { Link, getRouteApi } from '@tanstack/react-router'
import {
ArrowLeft,
ArrowRight,
CheckCircle2,
CircleDashed,
GitBranch,
@@ -140,13 +139,14 @@ function iconForAction(deeplink: string): typeof GitBranch {
return Rocket
}
/** Manager-side route normalization. mcp-server returns
* `/manager/resources?from=task` but Manager's actual route is `/sk-sources`. */
/** Manager-side route normalization. Legacy deep-links from older mcp-server
* payloads (resources / team / audit) now collapse to the live task overview;
* wallet keeps its own route. */
function normalizeDeeplink(deeplink: string): string {
return deeplink
.replace(/^\/manager\/resources/i, '/sk-sources')
.replace(/^\/manager\/team/i, '/sk-sources')
.replace(/^\/manager\/audit/i, '/audit')
.replace(/^\/manager\/resources/i, '/deployments')
.replace(/^\/manager\/team/i, '/deployments')
.replace(/^\/manager\/audit/i, '/deployments')
.replace(/^\/manager\/wallet/i, '/wallet')
.replace(/^\/manager\//i, '/')
}
@@ -459,41 +459,17 @@ export function TaskCardView() {
)
})
) : (
<>
<Button
asChild
size='sm'
variant='outline'
className='rounded-xl'
>
<Link to='/sk-sources'>
<GitBranch className='mr-1 h-3.5 w-3.5' />
{t('Open preparation checklist')}
</Link>
</Button>
<Button
asChild
size='sm'
variant='outline'
className='rounded-xl'
>
<Link to='/audit'>
<ShieldCheck className='mr-1 h-3.5 w-3.5' />
{t('Audit & approvals')}
</Link>
</Button>
<Button
asChild
size='sm'
variant='outline'
className='rounded-xl'
>
<Link to='/wallet'>
<Wallet className='mr-1 h-3.5 w-3.5' />
{t('Budget & usage')}
</Link>
</Button>
</>
<Button
asChild
size='sm'
variant='outline'
className='rounded-xl'
>
<Link to='/wallet'>
<Wallet className='mr-1 h-3.5 w-3.5' />
{t('Budget & usage')}
</Link>
</Button>
)}
</div>
</div>
@@ -527,21 +503,6 @@ export function TaskCardView() {
? t('Creating deployment')
: t('Create Manager deployment')}
</Button>
<Button
asChild
size='sm'
className='gap-1 rounded-xl text-white'
style={{
backgroundImage: 'var(--gradient-brand-btn)',
border: '1px solid rgba(255,255,255,0.16)',
}}
>
<Link to='/sk-sources'>
<Rocket className='h-3.5 w-3.5' />
{t('Go to Manager preparation')}
<ArrowRight className='h-3.5 w-3.5' />
</Link>
</Button>
</footer>
</section>
-6
View File
@@ -29,9 +29,6 @@ const DEFAULT_SIDEBAR_MODULES: SidebarModulesAdminConfig = {
enabled: true,
overview: true,
deployments: true,
events: true,
sk: true,
audit: true,
},
admin: {
enabled: true,
@@ -44,9 +41,6 @@ const URL_TO_CONFIG_MAP: Record<string, { section: string; module: string }> = {
'/dashboard': { section: 'cockpit', module: 'overview' },
'/dashboard/overview': { section: 'cockpit', module: 'overview' },
'/deployments': { section: 'cockpit', module: 'deployments' },
'/events': { section: 'cockpit', module: 'events' },
'/sk-sources': { section: 'cockpit', module: 'sk' },
'/audit': { section: 'cockpit', module: 'audit' },
'/users': { section: 'admin', module: 'tenants' },
'/system-settings/general': { section: 'admin', module: 'settings' },
'/system-settings': { section: 'admin', module: 'settings' },
-14
View File
@@ -1,11 +1,9 @@
import {
Command,
Download,
GitBranch,
LayoutDashboard,
Rocket,
Settings,
ShieldCheck,
Smartphone,
UserCog,
Wallet,
@@ -48,21 +46,11 @@ export function useSidebarData(): SidebarData {
url: '/dashboard',
icon: LayoutDashboard,
},
{
title: t('Resource binding'),
url: '/sk-sources',
icon: GitBranch,
},
{
title: t('Task overview'),
url: '/deployments',
icon: Rocket,
},
{
title: t('Audit'),
url: '/audit',
icon: ShieldCheck,
},
],
},
@@ -110,8 +98,6 @@ export function useSidebarData(): SidebarData {
'/channels',
'/users',
'/redemption-codes',
'/templates',
'/agents',
'/subscriptions',
'/models',
'/usage-logs',
-6
View File
@@ -66,11 +66,5 @@ export function useTopNavLinks(): TopNavLink[] {
if (modules?.deployments !== false) {
links.push({ title: t('Deployments'), href: '/deployments' })
}
if (modules?.events !== false) {
links.push({ title: t('Events'), href: '/events' })
}
if (modules?.audit !== false) {
links.push({ title: t('Audit'), href: '/audit' })
}
return links
}
-109
View File
@@ -35,24 +35,19 @@ import { Route as PricingModelIdIndexRouteImport } from './routes/pricing/$model
import { Route as AuthenticatedWalletIndexRouteImport } from './routes/_authenticated/wallet/index'
import { Route as AuthenticatedUsersIndexRouteImport } from './routes/_authenticated/users/index'
import { Route as AuthenticatedUsageLogsIndexRouteImport } from './routes/_authenticated/usage-logs/index'
import { Route as AuthenticatedTemplatesIndexRouteImport } from './routes/_authenticated/templates/index'
import { Route as AuthenticatedSystemSettingsIndexRouteImport } from './routes/_authenticated/system-settings/index'
import { Route as AuthenticatedSubscriptionsIndexRouteImport } from './routes/_authenticated/subscriptions/index'
import { Route as AuthenticatedSkSourcesIndexRouteImport } from './routes/_authenticated/sk-sources/index'
import { Route as AuthenticatedRedemptionCodesIndexRouteImport } from './routes/_authenticated/redemption-codes/index'
import { Route as AuthenticatedProfileIndexRouteImport } from './routes/_authenticated/profile/index'
import { Route as AuthenticatedPlaygroundIndexRouteImport } from './routes/_authenticated/playground/index'
import { Route as AuthenticatedModelsIndexRouteImport } from './routes/_authenticated/models/index'
import { Route as AuthenticatedKeysIndexRouteImport } from './routes/_authenticated/keys/index'
import { Route as AuthenticatedEventsIndexRouteImport } from './routes/_authenticated/events/index'
import { Route as AuthenticatedDevicesIndexRouteImport } from './routes/_authenticated/devices/index'
import { Route as AuthenticatedDesktopClientIndexRouteImport } from './routes/_authenticated/desktop-client/index'
import { Route as AuthenticatedDeploymentsIndexRouteImport } from './routes/_authenticated/deployments/index'
import { Route as AuthenticatedDashboardIndexRouteImport } from './routes/_authenticated/dashboard/index'
import { Route as AuthenticatedChannelsIndexRouteImport } from './routes/_authenticated/channels/index'
import { Route as AuthenticatedAvailableModelsIndexRouteImport } from './routes/_authenticated/available-models/index'
import { Route as AuthenticatedAuditIndexRouteImport } from './routes/_authenticated/audit/index'
import { Route as AuthenticatedAgentsIndexRouteImport } from './routes/_authenticated/agents/index'
import { Route as AuthenticatedUsageLogsSectionRouteImport } from './routes/_authenticated/usage-logs/$section'
import { Route as AuthenticatedTasksIdRouteImport } from './routes/_authenticated/tasks/$id'
import { Route as AuthenticatedModelsSectionRouteImport } from './routes/_authenticated/models/$section'
@@ -206,12 +201,6 @@ const AuthenticatedUsageLogsIndexRoute =
path: '/usage-logs/',
getParentRoute: () => AuthenticatedRouteRoute,
} as any)
const AuthenticatedTemplatesIndexRoute =
AuthenticatedTemplatesIndexRouteImport.update({
id: '/templates/',
path: '/templates/',
getParentRoute: () => AuthenticatedRouteRoute,
} as any)
const AuthenticatedSystemSettingsIndexRoute =
AuthenticatedSystemSettingsIndexRouteImport.update({
id: '/',
@@ -224,12 +213,6 @@ const AuthenticatedSubscriptionsIndexRoute =
path: '/subscriptions/',
getParentRoute: () => AuthenticatedRouteRoute,
} as any)
const AuthenticatedSkSourcesIndexRoute =
AuthenticatedSkSourcesIndexRouteImport.update({
id: '/sk-sources/',
path: '/sk-sources/',
getParentRoute: () => AuthenticatedRouteRoute,
} as any)
const AuthenticatedRedemptionCodesIndexRoute =
AuthenticatedRedemptionCodesIndexRouteImport.update({
id: '/redemption-codes/',
@@ -259,12 +242,6 @@ const AuthenticatedKeysIndexRoute = AuthenticatedKeysIndexRouteImport.update({
path: '/keys/',
getParentRoute: () => AuthenticatedRouteRoute,
} as any)
const AuthenticatedEventsIndexRoute =
AuthenticatedEventsIndexRouteImport.update({
id: '/events/',
path: '/events/',
getParentRoute: () => AuthenticatedRouteRoute,
} as any)
const AuthenticatedDevicesIndexRoute =
AuthenticatedDevicesIndexRouteImport.update({
id: '/devices/',
@@ -301,17 +278,6 @@ const AuthenticatedAvailableModelsIndexRoute =
path: '/available-models/',
getParentRoute: () => AuthenticatedRouteRoute,
} as any)
const AuthenticatedAuditIndexRoute = AuthenticatedAuditIndexRouteImport.update({
id: '/audit/',
path: '/audit/',
getParentRoute: () => AuthenticatedRouteRoute,
} as any)
const AuthenticatedAgentsIndexRoute =
AuthenticatedAgentsIndexRouteImport.update({
id: '/agents/',
path: '/agents/',
getParentRoute: () => AuthenticatedRouteRoute,
} as any)
const AuthenticatedUsageLogsSectionRoute =
AuthenticatedUsageLogsSectionRouteImport.update({
id: '/usage-logs/$section',
@@ -464,24 +430,19 @@ export interface FileRoutesByFullPath {
'/models/$section': typeof AuthenticatedModelsSectionRoute
'/tasks/$id': typeof AuthenticatedTasksIdRoute
'/usage-logs/$section': typeof AuthenticatedUsageLogsSectionRoute
'/agents/': typeof AuthenticatedAgentsIndexRoute
'/audit/': typeof AuthenticatedAuditIndexRoute
'/available-models/': typeof AuthenticatedAvailableModelsIndexRoute
'/channels/': typeof AuthenticatedChannelsIndexRoute
'/dashboard/': typeof AuthenticatedDashboardIndexRoute
'/deployments/': typeof AuthenticatedDeploymentsIndexRoute
'/desktop-client/': typeof AuthenticatedDesktopClientIndexRoute
'/devices/': typeof AuthenticatedDevicesIndexRoute
'/events/': typeof AuthenticatedEventsIndexRoute
'/keys/': typeof AuthenticatedKeysIndexRoute
'/models/': typeof AuthenticatedModelsIndexRoute
'/playground/': typeof AuthenticatedPlaygroundIndexRoute
'/profile/': typeof AuthenticatedProfileIndexRoute
'/redemption-codes/': typeof AuthenticatedRedemptionCodesIndexRoute
'/sk-sources/': typeof AuthenticatedSkSourcesIndexRoute
'/subscriptions/': typeof AuthenticatedSubscriptionsIndexRoute
'/system-settings/': typeof AuthenticatedSystemSettingsIndexRoute
'/templates/': typeof AuthenticatedTemplatesIndexRoute
'/usage-logs/': typeof AuthenticatedUsageLogsIndexRoute
'/users/': typeof AuthenticatedUsersIndexRoute
'/wallet/': typeof AuthenticatedWalletIndexRoute
@@ -528,24 +489,19 @@ export interface FileRoutesByTo {
'/models/$section': typeof AuthenticatedModelsSectionRoute
'/tasks/$id': typeof AuthenticatedTasksIdRoute
'/usage-logs/$section': typeof AuthenticatedUsageLogsSectionRoute
'/agents': typeof AuthenticatedAgentsIndexRoute
'/audit': typeof AuthenticatedAuditIndexRoute
'/available-models': typeof AuthenticatedAvailableModelsIndexRoute
'/channels': typeof AuthenticatedChannelsIndexRoute
'/dashboard': typeof AuthenticatedDashboardIndexRoute
'/deployments': typeof AuthenticatedDeploymentsIndexRoute
'/desktop-client': typeof AuthenticatedDesktopClientIndexRoute
'/devices': typeof AuthenticatedDevicesIndexRoute
'/events': typeof AuthenticatedEventsIndexRoute
'/keys': typeof AuthenticatedKeysIndexRoute
'/models': typeof AuthenticatedModelsIndexRoute
'/playground': typeof AuthenticatedPlaygroundIndexRoute
'/profile': typeof AuthenticatedProfileIndexRoute
'/redemption-codes': typeof AuthenticatedRedemptionCodesIndexRoute
'/sk-sources': typeof AuthenticatedSkSourcesIndexRoute
'/subscriptions': typeof AuthenticatedSubscriptionsIndexRoute
'/system-settings': typeof AuthenticatedSystemSettingsIndexRoute
'/templates': typeof AuthenticatedTemplatesIndexRoute
'/usage-logs': typeof AuthenticatedUsageLogsIndexRoute
'/users': typeof AuthenticatedUsersIndexRoute
'/wallet': typeof AuthenticatedWalletIndexRoute
@@ -596,24 +552,19 @@ export interface FileRoutesById {
'/_authenticated/models/$section': typeof AuthenticatedModelsSectionRoute
'/_authenticated/tasks/$id': typeof AuthenticatedTasksIdRoute
'/_authenticated/usage-logs/$section': typeof AuthenticatedUsageLogsSectionRoute
'/_authenticated/agents/': typeof AuthenticatedAgentsIndexRoute
'/_authenticated/audit/': typeof AuthenticatedAuditIndexRoute
'/_authenticated/available-models/': typeof AuthenticatedAvailableModelsIndexRoute
'/_authenticated/channels/': typeof AuthenticatedChannelsIndexRoute
'/_authenticated/dashboard/': typeof AuthenticatedDashboardIndexRoute
'/_authenticated/deployments/': typeof AuthenticatedDeploymentsIndexRoute
'/_authenticated/desktop-client/': typeof AuthenticatedDesktopClientIndexRoute
'/_authenticated/devices/': typeof AuthenticatedDevicesIndexRoute
'/_authenticated/events/': typeof AuthenticatedEventsIndexRoute
'/_authenticated/keys/': typeof AuthenticatedKeysIndexRoute
'/_authenticated/models/': typeof AuthenticatedModelsIndexRoute
'/_authenticated/playground/': typeof AuthenticatedPlaygroundIndexRoute
'/_authenticated/profile/': typeof AuthenticatedProfileIndexRoute
'/_authenticated/redemption-codes/': typeof AuthenticatedRedemptionCodesIndexRoute
'/_authenticated/sk-sources/': typeof AuthenticatedSkSourcesIndexRoute
'/_authenticated/subscriptions/': typeof AuthenticatedSubscriptionsIndexRoute
'/_authenticated/system-settings/': typeof AuthenticatedSystemSettingsIndexRoute
'/_authenticated/templates/': typeof AuthenticatedTemplatesIndexRoute
'/_authenticated/usage-logs/': typeof AuthenticatedUsageLogsIndexRoute
'/_authenticated/users/': typeof AuthenticatedUsersIndexRoute
'/_authenticated/wallet/': typeof AuthenticatedWalletIndexRoute
@@ -663,24 +614,19 @@ export interface FileRouteTypes {
| '/models/$section'
| '/tasks/$id'
| '/usage-logs/$section'
| '/agents/'
| '/audit/'
| '/available-models/'
| '/channels/'
| '/dashboard/'
| '/deployments/'
| '/desktop-client/'
| '/devices/'
| '/events/'
| '/keys/'
| '/models/'
| '/playground/'
| '/profile/'
| '/redemption-codes/'
| '/sk-sources/'
| '/subscriptions/'
| '/system-settings/'
| '/templates/'
| '/usage-logs/'
| '/users/'
| '/wallet/'
@@ -727,24 +673,19 @@ export interface FileRouteTypes {
| '/models/$section'
| '/tasks/$id'
| '/usage-logs/$section'
| '/agents'
| '/audit'
| '/available-models'
| '/channels'
| '/dashboard'
| '/deployments'
| '/desktop-client'
| '/devices'
| '/events'
| '/keys'
| '/models'
| '/playground'
| '/profile'
| '/redemption-codes'
| '/sk-sources'
| '/subscriptions'
| '/system-settings'
| '/templates'
| '/usage-logs'
| '/users'
| '/wallet'
@@ -794,24 +735,19 @@ export interface FileRouteTypes {
| '/_authenticated/models/$section'
| '/_authenticated/tasks/$id'
| '/_authenticated/usage-logs/$section'
| '/_authenticated/agents/'
| '/_authenticated/audit/'
| '/_authenticated/available-models/'
| '/_authenticated/channels/'
| '/_authenticated/dashboard/'
| '/_authenticated/deployments/'
| '/_authenticated/desktop-client/'
| '/_authenticated/devices/'
| '/_authenticated/events/'
| '/_authenticated/keys/'
| '/_authenticated/models/'
| '/_authenticated/playground/'
| '/_authenticated/profile/'
| '/_authenticated/redemption-codes/'
| '/_authenticated/sk-sources/'
| '/_authenticated/subscriptions/'
| '/_authenticated/system-settings/'
| '/_authenticated/templates/'
| '/_authenticated/usage-logs/'
| '/_authenticated/users/'
| '/_authenticated/wallet/'
@@ -1034,13 +970,6 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof AuthenticatedUsageLogsIndexRouteImport
parentRoute: typeof AuthenticatedRouteRoute
}
'/_authenticated/templates/': {
id: '/_authenticated/templates/'
path: '/templates'
fullPath: '/templates/'
preLoaderRoute: typeof AuthenticatedTemplatesIndexRouteImport
parentRoute: typeof AuthenticatedRouteRoute
}
'/_authenticated/system-settings/': {
id: '/_authenticated/system-settings/'
path: '/'
@@ -1055,13 +984,6 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof AuthenticatedSubscriptionsIndexRouteImport
parentRoute: typeof AuthenticatedRouteRoute
}
'/_authenticated/sk-sources/': {
id: '/_authenticated/sk-sources/'
path: '/sk-sources'
fullPath: '/sk-sources/'
preLoaderRoute: typeof AuthenticatedSkSourcesIndexRouteImport
parentRoute: typeof AuthenticatedRouteRoute
}
'/_authenticated/redemption-codes/': {
id: '/_authenticated/redemption-codes/'
path: '/redemption-codes'
@@ -1097,13 +1019,6 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof AuthenticatedKeysIndexRouteImport
parentRoute: typeof AuthenticatedRouteRoute
}
'/_authenticated/events/': {
id: '/_authenticated/events/'
path: '/events'
fullPath: '/events/'
preLoaderRoute: typeof AuthenticatedEventsIndexRouteImport
parentRoute: typeof AuthenticatedRouteRoute
}
'/_authenticated/devices/': {
id: '/_authenticated/devices/'
path: '/devices'
@@ -1146,20 +1061,6 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof AuthenticatedAvailableModelsIndexRouteImport
parentRoute: typeof AuthenticatedRouteRoute
}
'/_authenticated/audit/': {
id: '/_authenticated/audit/'
path: '/audit'
fullPath: '/audit/'
preLoaderRoute: typeof AuthenticatedAuditIndexRouteImport
parentRoute: typeof AuthenticatedRouteRoute
}
'/_authenticated/agents/': {
id: '/_authenticated/agents/'
path: '/agents'
fullPath: '/agents/'
preLoaderRoute: typeof AuthenticatedAgentsIndexRouteImport
parentRoute: typeof AuthenticatedRouteRoute
}
'/_authenticated/usage-logs/$section': {
id: '/_authenticated/usage-logs/$section'
path: '/usage-logs/$section'
@@ -1400,23 +1301,18 @@ interface AuthenticatedRouteRouteChildren {
AuthenticatedModelsSectionRoute: typeof AuthenticatedModelsSectionRoute
AuthenticatedTasksIdRoute: typeof AuthenticatedTasksIdRoute
AuthenticatedUsageLogsSectionRoute: typeof AuthenticatedUsageLogsSectionRoute
AuthenticatedAgentsIndexRoute: typeof AuthenticatedAgentsIndexRoute
AuthenticatedAuditIndexRoute: typeof AuthenticatedAuditIndexRoute
AuthenticatedAvailableModelsIndexRoute: typeof AuthenticatedAvailableModelsIndexRoute
AuthenticatedChannelsIndexRoute: typeof AuthenticatedChannelsIndexRoute
AuthenticatedDashboardIndexRoute: typeof AuthenticatedDashboardIndexRoute
AuthenticatedDeploymentsIndexRoute: typeof AuthenticatedDeploymentsIndexRoute
AuthenticatedDesktopClientIndexRoute: typeof AuthenticatedDesktopClientIndexRoute
AuthenticatedDevicesIndexRoute: typeof AuthenticatedDevicesIndexRoute
AuthenticatedEventsIndexRoute: typeof AuthenticatedEventsIndexRoute
AuthenticatedKeysIndexRoute: typeof AuthenticatedKeysIndexRoute
AuthenticatedModelsIndexRoute: typeof AuthenticatedModelsIndexRoute
AuthenticatedPlaygroundIndexRoute: typeof AuthenticatedPlaygroundIndexRoute
AuthenticatedProfileIndexRoute: typeof AuthenticatedProfileIndexRoute
AuthenticatedRedemptionCodesIndexRoute: typeof AuthenticatedRedemptionCodesIndexRoute
AuthenticatedSkSourcesIndexRoute: typeof AuthenticatedSkSourcesIndexRoute
AuthenticatedSubscriptionsIndexRoute: typeof AuthenticatedSubscriptionsIndexRoute
AuthenticatedTemplatesIndexRoute: typeof AuthenticatedTemplatesIndexRoute
AuthenticatedUsageLogsIndexRoute: typeof AuthenticatedUsageLogsIndexRoute
AuthenticatedUsersIndexRoute: typeof AuthenticatedUsersIndexRoute
AuthenticatedWalletIndexRoute: typeof AuthenticatedWalletIndexRoute
@@ -1432,8 +1328,6 @@ const AuthenticatedRouteRouteChildren: AuthenticatedRouteRouteChildren = {
AuthenticatedModelsSectionRoute: AuthenticatedModelsSectionRoute,
AuthenticatedTasksIdRoute: AuthenticatedTasksIdRoute,
AuthenticatedUsageLogsSectionRoute: AuthenticatedUsageLogsSectionRoute,
AuthenticatedAgentsIndexRoute: AuthenticatedAgentsIndexRoute,
AuthenticatedAuditIndexRoute: AuthenticatedAuditIndexRoute,
AuthenticatedAvailableModelsIndexRoute:
AuthenticatedAvailableModelsIndexRoute,
AuthenticatedChannelsIndexRoute: AuthenticatedChannelsIndexRoute,
@@ -1441,16 +1335,13 @@ const AuthenticatedRouteRouteChildren: AuthenticatedRouteRouteChildren = {
AuthenticatedDeploymentsIndexRoute: AuthenticatedDeploymentsIndexRoute,
AuthenticatedDesktopClientIndexRoute: AuthenticatedDesktopClientIndexRoute,
AuthenticatedDevicesIndexRoute: AuthenticatedDevicesIndexRoute,
AuthenticatedEventsIndexRoute: AuthenticatedEventsIndexRoute,
AuthenticatedKeysIndexRoute: AuthenticatedKeysIndexRoute,
AuthenticatedModelsIndexRoute: AuthenticatedModelsIndexRoute,
AuthenticatedPlaygroundIndexRoute: AuthenticatedPlaygroundIndexRoute,
AuthenticatedProfileIndexRoute: AuthenticatedProfileIndexRoute,
AuthenticatedRedemptionCodesIndexRoute:
AuthenticatedRedemptionCodesIndexRoute,
AuthenticatedSkSourcesIndexRoute: AuthenticatedSkSourcesIndexRoute,
AuthenticatedSubscriptionsIndexRoute: AuthenticatedSubscriptionsIndexRoute,
AuthenticatedTemplatesIndexRoute: AuthenticatedTemplatesIndexRoute,
AuthenticatedUsageLogsIndexRoute: AuthenticatedUsageLogsIndexRoute,
AuthenticatedUsersIndexRoute: AuthenticatedUsersIndexRoute,
AuthenticatedWalletIndexRoute: AuthenticatedWalletIndexRoute,
@@ -1,6 +0,0 @@
import { createFileRoute } from '@tanstack/react-router'
import { AgentAgentsPage } from '@/features/agent-console/pages'
export const Route = createFileRoute('/_authenticated/agents/')({
component: AgentAgentsPage,
})
@@ -1,6 +0,0 @@
import { createFileRoute } from '@tanstack/react-router'
import { AgentAuditPage } from '@/features/agent-console/pages'
export const Route = createFileRoute('/_authenticated/audit/')({
component: AgentAuditPage,
})
@@ -1,6 +0,0 @@
import { createFileRoute } from '@tanstack/react-router'
import { AgentEventsPage } from '@/features/agent-console/pages'
export const Route = createFileRoute('/_authenticated/events/')({
component: AgentEventsPage,
})
@@ -1,6 +0,0 @@
import { createFileRoute } from '@tanstack/react-router'
import { AgentSKSourcesPage } from '@/features/agent-console/pages'
export const Route = createFileRoute('/_authenticated/sk-sources/')({
component: AgentSKSourcesPage,
})
@@ -1,6 +0,0 @@
import { createFileRoute } from '@tanstack/react-router'
import { AgentTemplatesPage } from '@/features/agent-console/pages'
export const Route = createFileRoute('/_authenticated/templates/')({
component: AgentTemplatesPage,
})