diff --git a/src/components/quota/quotaConfigs.ts b/src/components/quota/quotaConfigs.ts index f12cc65..8c55fe1 100644 --- a/src/components/quota/quotaConfigs.ts +++ b/src/components/quota/quotaConfigs.ts @@ -247,8 +247,10 @@ const buildCodexQuotaWindows = (payload: CodexUsagePayload, t: TFunction): Codex const rawAllowed = rateLimit?.allowed; const pickClassifiedWindows = ( - limitInfo?: CodexRateLimitInfo | null + limitInfo?: CodexRateLimitInfo | null, + options?: { allowOrderFallback?: boolean } ): { fiveHourWindow: CodexUsageWindow | null; weeklyWindow: CodexUsageWindow | null } => { + const allowOrderFallback = options?.allowOrderFallback ?? true; const primaryWindow = limitInfo?.primary_window ?? limitInfo?.primaryWindow ?? null; const secondaryWindow = limitInfo?.secondary_window ?? limitInfo?.secondaryWindow ?? null; const rawWindows = [primaryWindow, secondaryWindow]; @@ -266,12 +268,14 @@ const buildCodexQuotaWindows = (payload: CodexUsagePayload, t: TFunction): Codex } } - // Fallback to primary/secondary semantics when window seconds are missing or unknown. - if (!fiveHourWindow) { - fiveHourWindow = primaryWindow && primaryWindow !== weeklyWindow ? primaryWindow : null; - } - if (!weeklyWindow) { - weeklyWindow = secondaryWindow && secondaryWindow !== fiveHourWindow ? secondaryWindow : null; + // For legacy payloads without window duration, fallback to primary/secondary ordering. + if (allowOrderFallback) { + if (!fiveHourWindow) { + fiveHourWindow = primaryWindow && primaryWindow !== weeklyWindow ? primaryWindow : null; + } + if (!weeklyWindow) { + weeklyWindow = secondaryWindow && secondaryWindow !== fiveHourWindow ? secondaryWindow : null; + } } return { fiveHourWindow, weeklyWindow }; @@ -333,7 +337,7 @@ const buildCodexQuotaWindows = (payload: CodexUsagePayload, t: TFunction): Codex `additional-${index + 1}`; const idPrefix = normalizeWindowId(limitName) || `additional-${index + 1}`; - const additionalWindows = pickClassifiedWindows(rateInfo); + const additionalWindows = pickClassifiedWindows(rateInfo, { allowOrderFallback: false }); const additionalLimitReached = rateInfo.limit_reached ?? rateInfo.limitReached; const additionalAllowed = rateInfo.allowed;