diff --git a/apps/webapp/app/components/navigation/SideMenu.tsx b/apps/webapp/app/components/navigation/SideMenu.tsx index 1169343e9d3..14b3c56495b 100644 --- a/apps/webapp/app/components/navigation/SideMenu.tsx +++ b/apps/webapp/app/components/navigation/SideMenu.tsx @@ -477,7 +477,7 @@ export function SideMenu({ data-action="prompts" isCollapsed={isCollapsed} /> - {(user.admin || user.isImpersonating || featureFlags.hasAiModelsAccess) && ( + {(user.admin || user.isImpersonating || featureFlags.hasAiAccess) && ( {/* Big numbers */} -
-
- -
+
{/* Charts */} -
-
- -
-
- -
+
+
@@ -523,7 +503,7 @@ function YourUsageTab({
)} p50 TTFC - Calls (7d) @@ -397,9 +396,6 @@ function ModelsList({ {popular && popular.ttfcP50 > 0 ? `${popular.ttfcP50.toFixed(0)}ms` : "—"} - - {popular && popular.callCount > 0 ? formatNumberCompact(popular.callCount) : "—"} - ); })} @@ -718,20 +714,20 @@ function ModelDetailPanel({ Overview setTab("global")} - shortcut={{ key: "g" }} + onClick={() => setTab("usage")} + shortcut={{ key: "u" }} > - Global metrics + Metrics setTab("usage")} - shortcut={{ key: "u" }} + onClick={() => setTab("global")} + shortcut={{ key: "g" }} > - Your usage + Global metrics
@@ -876,18 +872,7 @@ function DetailGlobalMetricsTab({ return (
-
- -
-
+
-
+
-
+
-
- -
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
{ - const { userId, isAdmin, isImpersonating, organizationSlug } = options; - - // 1. If env var is set then globally enabled - if (env.AI_MODELS_ENABLED === "1") { - return true; - } - - // 2. Admins always have access - if (isAdmin || isImpersonating) { - return true; - } - - // 3. Check if org/global feature flag is on - const org = await prisma.organization.findFirst({ - where: { - slug: organizationSlug, - members: { some: { userId } }, - }, - select: { - featureFlags: true, - }, - }); - - const flag = makeFlag(); - const flagResult = await flag({ - key: FEATURE_FLAG.hasAiModelsAccess, - defaultValue: false, - overrides: (org?.featureFlags as Record) ?? {}, - }); - if (flagResult) { - return true; - } - - // 4. Not enabled anywhere - return false; -} diff --git a/apps/webapp/app/v3/featureFlags.ts b/apps/webapp/app/v3/featureFlags.ts index 7571d27f67b..24942ce14ce 100644 --- a/apps/webapp/app/v3/featureFlags.ts +++ b/apps/webapp/app/v3/featureFlags.ts @@ -7,7 +7,6 @@ export const FEATURE_FLAG = { hasQueryAccess: "hasQueryAccess", hasLogsPageAccess: "hasLogsPageAccess", hasAiAccess: "hasAiAccess", - hasAiModelsAccess: "hasAiModelsAccess", hasComputeAccess: "hasComputeAccess", hasPrivateConnections: "hasPrivateConnections", } as const; @@ -19,7 +18,6 @@ export const FeatureFlagCatalog = { [FEATURE_FLAG.hasQueryAccess]: z.coerce.boolean(), [FEATURE_FLAG.hasLogsPageAccess]: z.coerce.boolean(), [FEATURE_FLAG.hasAiAccess]: z.coerce.boolean(), - [FEATURE_FLAG.hasAiModelsAccess]: z.coerce.boolean(), [FEATURE_FLAG.hasComputeAccess]: z.coerce.boolean(), [FEATURE_FLAG.hasPrivateConnections]: z.coerce.boolean(), }; diff --git a/packages/redis-worker/src/fair-queue/tests/fairQueue.test.ts b/packages/redis-worker/src/fair-queue/tests/fairQueue.test.ts index d827da15907..f1634ad2fe0 100644 --- a/packages/redis-worker/src/fair-queue/tests/fairQueue.test.ts +++ b/packages/redis-worker/src/fair-queue/tests/fairQueue.test.ts @@ -215,7 +215,7 @@ describe("FairQueue", () => { describe("basic enqueue and process", () => { redisTest( "should enqueue and process a single message", - { timeout: 15000 }, + { timeout: 30000 }, async ({ redisOptions }) => { const processed: string[] = []; keys = new DefaultFairQueueKeyProducer({ prefix: "test" });