@@ -570,12 +570,11 @@ func BuildCodexWindows(body string) (map[string]any, []map[string]any, *float64)
570570 if idPrefix == "" {
571571 idPrefix = fmt .Sprintf ("additional-%d" , index + 1 )
572572 }
573- primary , _ := firstAny (rateInfo , "primary_window" , "primaryWindow" ).(map [string ]any )
574- secondary , _ := firstAny (rateInfo , "secondary_window" , "secondaryWindow" ).(map [string ]any )
573+ additionalFiveHour , additionalLong := codexClassifiedWindows (rateInfo , true )
575574 params := map [string ]any {"name" : limitName }
576- addCodexWindow (fmt .Sprintf ("%s-five-hour-%d" , idPrefix , index ), "codex_quota.additional_primary_window" , params , primary , firstAny (rateInfo , "limit_reached" , "limitReached" ), rateInfo ["allowed" ])
577- additionalSecondaryID , additionalSecondaryLabel := codexSecondaryWindowMeta (secondary , "weekly" , "codex_quota.additional_secondary_window" , "monthly" , "codex_quota.additional_team_secondary_window" )
578- addCodexWindow (fmt .Sprintf ("%s-%s-%d" , idPrefix , additionalSecondaryID , index ), additionalSecondaryLabel , params , secondary , firstAny (rateInfo , "limit_reached" , "limitReached" ), rateInfo ["allowed" ])
575+ addCodexWindow (fmt .Sprintf ("%s-five-hour-%d" , idPrefix , index ), "codex_quota.additional_primary_window" , params , additionalFiveHour , firstAny (rateInfo , "limit_reached" , "limitReached" ), rateInfo ["allowed" ])
576+ additionalSecondaryID , additionalSecondaryLabel := codexSecondaryWindowMeta (additionalLong , "weekly" , "codex_quota.additional_secondary_window" , "monthly" , "codex_quota.additional_team_secondary_window" )
577+ addCodexWindow (fmt .Sprintf ("%s-%s-%d" , idPrefix , additionalSecondaryID , index ), additionalSecondaryLabel , params , additionalLong , firstAny (rateInfo , "limit_reached" , "limitReached" ), rateInfo ["allowed" ])
579578 }
580579
581580 used := MaxUsedPercentFromWindows (windows )
@@ -590,23 +589,29 @@ func codexClassifiedWindows(limitInfo map[string]any, allowOrderFallback bool) (
590589 secondary , _ := firstAny (limitInfo , "secondary_window" , "secondaryWindow" ).(map [string ]any )
591590 var fiveHour map [string ]any
592591 var weekly map [string ]any
593- for _ , window := range []map [string ]any {primary , secondary } {
592+ fiveHourSlot := - 1
593+ weeklySlot := - 1
594+ for slot , window := range []map [string ]any {primary , secondary } {
594595 seconds , ok := floatFromAny (firstAny (window , "limit_window_seconds" , "limitWindowSeconds" ))
595596 if ! ok {
596597 continue
597598 }
598599 if int (seconds ) == 18000 && fiveHour == nil {
599600 fiveHour = window
601+ fiveHourSlot = slot
600602 } else if (int (seconds ) == 604800 || isCodexMonthlyWindow (window )) && weekly == nil {
601603 weekly = window
604+ weeklySlot = slot
602605 }
603606 }
604607 if allowOrderFallback {
605- if fiveHour == nil {
608+ if fiveHour == nil && primary != nil && weeklySlot != 0 {
606609 fiveHour = primary
610+ fiveHourSlot = 0
607611 }
608- if weekly == nil {
612+ if weekly == nil && secondary != nil && fiveHourSlot != 1 {
609613 weekly = secondary
614+ weeklySlot = 1
610615 }
611616 }
612617 return fiveHour , weekly
0 commit comments