summaryrefslogtreecommitdiffhomepage
path: root/packages/console/app/src
diff options
context:
space:
mode:
authorFrank <[email protected]>2026-02-03 00:17:03 -0500
committerFrank <[email protected]>2026-02-03 00:17:06 -0500
commit801e4a8a9dbf2e11859e1e4126b7f1d058722eee (patch)
tree0f6dddcb379682ec3833f139f669d3e2a809de43 /packages/console/app/src
parent3adeed8f97d612171dfdecf8cc33eee193811172 (diff)
downloadopencode-801e4a8a9dbf2e11859e1e4126b7f1d058722eee.tar.gz
opencode-801e4a8a9dbf2e11859e1e4126b7f1d058722eee.zip
wip: zen
Diffstat (limited to 'packages/console/app/src')
-rw-r--r--packages/console/app/src/routes/zen/util/handler.ts2
-rw-r--r--packages/console/app/src/routes/zen/util/rateLimiter.ts8
2 files changed, 7 insertions, 3 deletions
diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts
index b97af851e..91fa306af 100644
--- a/packages/console/app/src/routes/zen/util/handler.ts
+++ b/packages/console/app/src/routes/zen/util/handler.ts
@@ -79,7 +79,7 @@ export async function handler(
const dataDumper = createDataDumper(sessionId, requestId, projectId)
const trialLimiter = createTrialLimiter(modelInfo.trial, ip, ocClient)
const isTrial = await trialLimiter?.isTrial()
- const rateLimiter = createRateLimiter(modelInfo.rateLimit, ip)
+ const rateLimiter = createRateLimiter(modelInfo.rateLimit, ip, input.request.headers)
await rateLimiter?.check()
const stickyTracker = createStickyTracker(modelInfo.stickyProvider, sessionId)
const stickyProvider = await stickyTracker?.get()
diff --git a/packages/console/app/src/routes/zen/util/rateLimiter.ts b/packages/console/app/src/routes/zen/util/rateLimiter.ts
index d54bd0306..918c33a40 100644
--- a/packages/console/app/src/routes/zen/util/rateLimiter.ts
+++ b/packages/console/app/src/routes/zen/util/rateLimiter.ts
@@ -4,9 +4,13 @@ import { RateLimitError } from "./error"
import { logger } from "./logger"
import { ZenData } from "@opencode-ai/console-core/model.js"
-export function createRateLimiter(limit: ZenData.RateLimit | undefined, rawIp: string) {
+export function createRateLimiter(limit: ZenData.RateLimit | undefined, rawIp: string, headers: Headers) {
if (!limit) return
+ const limitValue = (limit.checkHeader && !headers.get(limit.checkHeader))
+ ? limit.fallbackValue!
+ : limit.value
+
const ip = !rawIp.length ? "unknown" : rawIp
const now = Date.now()
const intervals =
@@ -32,7 +36,7 @@ export function createRateLimiter(limit: ZenData.RateLimit | undefined, rawIp: s
)
const total = rows.reduce((sum, r) => sum + r.count, 0)
logger.debug(`rate limit total: ${total}`)
- if (total >= limit.value) throw new RateLimitError(`Rate limit exceeded. Please try again later.`)
+ if (total >= limitValue) throw new RateLimitError(`Rate limit exceeded. Please try again later.`)
},
}
}