diff options
| author | Frank <[email protected]> | 2026-02-03 00:17:03 -0500 |
|---|---|---|
| committer | Frank <[email protected]> | 2026-02-03 00:17:06 -0500 |
| commit | 801e4a8a9dbf2e11859e1e4126b7f1d058722eee (patch) | |
| tree | 0f6dddcb379682ec3833f139f669d3e2a809de43 /packages/console/app/src | |
| parent | 3adeed8f97d612171dfdecf8cc33eee193811172 (diff) | |
| download | opencode-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.ts | 2 | ||||
| -rw-r--r-- | packages/console/app/src/routes/zen/util/rateLimiter.ts | 8 |
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.`) }, } } |
