Skip to content

Commit 6a4430d

Browse files
committed
feat: add Model Registry feature with catalog pipeline, dashboard pages, and TSQL schema
- Add llm-model-catalog package (renamed from llm-pricing) with Claude CLI research pipeline - Add Prisma schema: catalog columns + baseModelName on LlmModel - Add ClickHouse: llm_model_aggregates MV + base_response_model column - Add TSQL llm_models schema for query page integration - Add ModelRegistryPresenter with catalog, metrics, and comparison queries - Add 3 dashboard pages: catalog (cards+table+filters), detail (overview+metrics+cost estimator), compare - Add sidebar navigation under AI section with hasAiAccess feature flag - Add admin dashboard sync/seed for catalog metadata - Add model variant grouping (dated snapshots under base models) - Add shared formatters and design system component usage refs TRI-7941
1 parent 2037254 commit 6a4430d

File tree

56 files changed

+8497
-163
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+8497
-163
lines changed

apps/webapp/app/components/navigation/SideMenu.tsx

Lines changed: 45 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
ClockIcon,
1111
Cog8ToothIcon,
1212
CogIcon,
13+
CubeIcon,
1314
ExclamationTriangleIcon,
1415
FolderIcon,
1516
FolderOpenIcon,
@@ -77,11 +78,12 @@ import {
7778
v3EnvironmentVariablesPath,
7879
v3ErrorsPath,
7980
v3LogsPath,
81+
v3PromptsPath,
82+
v3ModelsPath,
8083
v3ProjectAlertsPath,
8184
v3ProjectPath,
8285
v3ProjectSettingsGeneralPath,
8386
v3ProjectSettingsIntegrationsPath,
84-
v3PromptsPath,
8587
v3QueuesPath,
8688
v3RunsPath,
8789
v3SchedulesPath,
@@ -456,34 +458,48 @@ export function SideMenu({
456458
/>
457459
</div>
458460

459-
<SideMenuSection
460-
title="AI"
461-
isSideMenuCollapsed={isCollapsed}
462-
itemSpacingClassName="space-y-0"
463-
initialCollapsed={getSectionCollapsed(user.dashboardPreferences.sideMenu, "ai")}
464-
onCollapseToggle={handleSectionToggle("ai")}
465-
>
466-
<SideMenuItem
467-
name="Prompts"
468-
icon={AIPromptsIcon}
469-
trailingIconClassName="size-6"
470-
activeIconColor="text-aiPrompts"
471-
inactiveIconColor="text-aiPrompts"
472-
to={v3PromptsPath(organization, project, environment)}
473-
data-action="prompts"
474-
isCollapsed={isCollapsed}
475-
/>
476-
<SideMenuItem
477-
name="AI Metrics"
478-
icon={AIMetricsIcon}
479-
trailingIconClassName="size-5"
480-
activeIconColor="text-aiMetrics"
481-
inactiveIconColor="text-aiMetrics"
482-
to={v3BuiltInDashboardPath(organization, project, environment, "llm")}
483-
data-action="ai-metrics"
484-
isCollapsed={isCollapsed}
485-
/>
486-
</SideMenuSection>
461+
{(user.admin || user.isImpersonating || featureFlags.hasAiAccess) && (
462+
<SideMenuSection
463+
title="AI"
464+
isSideMenuCollapsed={isCollapsed}
465+
itemSpacingClassName="space-y-0"
466+
initialCollapsed={getSectionCollapsed(
467+
user.dashboardPreferences.sideMenu,
468+
"ai"
469+
)}
470+
onCollapseToggle={handleSectionToggle("ai")}
471+
>
472+
<SideMenuItem
473+
name="Prompts"
474+
icon={AIPromptsIcon}
475+
trailingIconClassName="size-6"
476+
activeIconColor="text-aiPrompts"
477+
inactiveIconColor="text-aiPrompts"
478+
to={v3PromptsPath(organization, project, environment)}
479+
data-action="prompts"
480+
isCollapsed={isCollapsed}
481+
/>
482+
<SideMenuItem
483+
name="Models"
484+
icon={CubeIcon}
485+
activeIconColor="text-purple-500"
486+
inactiveIconColor="text-purple-500"
487+
to={v3ModelsPath(organization, project, environment)}
488+
data-action="models"
489+
isCollapsed={isCollapsed}
490+
/>
491+
<SideMenuItem
492+
name="AI Metrics"
493+
icon={AIMetricsIcon}
494+
trailingIconClassName="size-5"
495+
activeIconColor="text-aiMetrics"
496+
inactiveIconColor="text-aiMetrics"
497+
to={v3BuiltInDashboardPath(organization, project, environment, "llm")}
498+
data-action="ai-metrics"
499+
isCollapsed={isCollapsed}
500+
/>
501+
</SideMenuSection>
502+
)}
487503

488504
{(user.admin || user.isImpersonating || featureFlags.hasQueryAccess) && (
489505
<SideMenuSection

apps/webapp/app/env.server.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1222,6 +1222,9 @@ const EnvironmentSchema = z
12221222
// Query feature flag
12231223
QUERY_FEATURE_ENABLED: z.string().default("1"),
12241224

1225+
// AI features (Prompts, Models, AI Metrics sidebar section)
1226+
AI_FEATURES_ENABLED: z.string().default("0"),
1227+
12251228
// Logs page ClickHouse URL (for logs queries)
12261229
LOGS_CLICKHOUSE_URL: z
12271230
.string()

0 commit comments

Comments
 (0)