Skip to content

Commit 62c746f

Browse files
committed
zen: budget
1 parent ec50db3 commit 62c746f

2 files changed

Lines changed: 9 additions & 5 deletions

File tree

packages/console/app/src/routes/zen/util/handler.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,6 @@ export async function handler(
157157
logger.metric({
158158
provider: providerInfo.id,
159159
"provider.model": providerInfo.model,
160-
...(providerBudgetUsage?.[providerInfo.id]
161-
? { "provider.budget_usage": providerBudgetUsage?.[providerInfo.id] }
162-
: {}),
163160
})
164161

165162
const startTimestamp = Date.now()

packages/console/app/src/routes/zen/util/providerBudgetTracker.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { centsToMicroCents } from "@opencode-ai/console-core/util/price.js"
22
import { buildRateLimitKey, getRedis } from "./redis"
3+
import { logger } from "./logger"
34

45
export function createProviderBudgetTracker(
56
providers: {
@@ -22,13 +23,15 @@ export function createProviderBudgetTracker(
2223
const keys = Object.fromEntries(
2324
tracked.map((provider) => [provider.id, buildRateLimitKey("provider-budget", provider.id, interval)]),
2425
)
26+
let budgetUsage: Record<string, number> = {}
2527

2628
return {
2729
check: async () => {
28-
const ids = tracked.filter((provider) => provider.budgetMode === "fill").map((provider) => provider.id)
30+
const ids = tracked.map((provider) => provider.id)
2931
if (ids.length === 0) return {}
3032
const values = await redis.mget<(string | number | null)[]>(ids.map((id) => keys[id]))
31-
return Object.fromEntries(ids.map((id, index) => [id, Number(values[index] ?? 0)]))
33+
budgetUsage = Object.fromEntries(ids.map((id, index) => [id, Number(values[index] ?? 0)]))
34+
return budgetUsage
3235
},
3336
track: async (provider: string, costInCent: number) => {
3437
const config = tracked.find((item) => item.id === provider)
@@ -40,6 +43,10 @@ export function createProviderBudgetTracker(
4043
pipeline.incrby(keys[provider], cost)
4144
pipeline.expire(keys[provider], 120)
4245
await pipeline.exec()
46+
logger.metric({
47+
"provider.budget_usage": budgetUsage[provider] + cost,
48+
"model.budget_usage": cost,
49+
})
4350
},
4451
}
4552
}

0 commit comments

Comments
 (0)