From 0bc9a28b5eeac8f85e7e16e53cadb33498a02bbb Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 16 Jul 2026 17:35:55 -0400 Subject: [PATCH] zen: cost multiplier --- packages/console/app/src/routes/zen/util/handler.ts | 13 +++++++------ packages/console/core/src/model.ts | 1 + 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 7a3f70e847..c25cfddc9a 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -1168,28 +1168,29 @@ export async function handler( const week = getWeekBounds(new Date()) const month = getMonthlyBounds(new Date(), authInfo.lite!.timeCreated) const rollingWindowSeconds = lite.rollingWindow * 3600 + const quotaCost = Math.round(cost * modelInfo.costMultiplier) return [ db .update(LiteTable) .set({ monthlyUsage: sql` CASE - WHEN ${LiteTable.timeMonthlyUpdated} >= ${month.start} THEN ${LiteTable.monthlyUsage} + ${cost} - ELSE ${cost} + WHEN ${LiteTable.timeMonthlyUpdated} >= ${month.start} THEN ${LiteTable.monthlyUsage} + ${quotaCost} + ELSE ${quotaCost} END `, timeMonthlyUpdated: sql`now()`, weeklyUsage: sql` CASE - WHEN ${LiteTable.timeWeeklyUpdated} >= ${week.start} THEN ${LiteTable.weeklyUsage} + ${cost} - ELSE ${cost} + WHEN ${LiteTable.timeWeeklyUpdated} >= ${week.start} THEN ${LiteTable.weeklyUsage} + ${quotaCost} + ELSE ${quotaCost} END `, timeWeeklyUpdated: sql`now()`, rollingUsage: sql` CASE - WHEN UNIX_TIMESTAMP(${LiteTable.timeRollingUpdated}) >= UNIX_TIMESTAMP(now()) - ${rollingWindowSeconds} THEN ${LiteTable.rollingUsage} + ${cost} - ELSE ${cost} + WHEN UNIX_TIMESTAMP(${LiteTable.timeRollingUpdated}) >= UNIX_TIMESTAMP(now()) - ${rollingWindowSeconds} THEN ${LiteTable.rollingUsage} + ${quotaCost} + ELSE ${quotaCost} END `, timeRollingUpdated: sql` diff --git a/packages/console/core/src/model.ts b/packages/console/core/src/model.ts index 84de249f0f..f4ac40183f 100644 --- a/packages/console/core/src/model.ts +++ b/packages/console/core/src/model.ts @@ -22,6 +22,7 @@ export namespace ZenData { const ModelSchema = z.object({ name: z.string(), cost: ModelCostSchema, + costMultiplier: z.number().default(1), cost200K: ModelCostSchema.optional(), allowAnonymous: z.boolean().optional(), byokProvider: z.enum(["openai", "anthropic", "google"]).optional(),