fix(providers): post-merge fixes for Codex OAuth pools (#450)

- fix Rules of Hooks violation in chatgpt-oauth-routing-section
- add stale-while-revalidate with atomic dedup for RouteEligibility
- move raw SQL from HTTP handler to TracingStore.ListCodexPoolSpans
- persist round-robin state in Registry shared counter
- extract duplicated frontend helpers to agent-display-utils
- split oversized frontend files (964→214 lines max)
- add GIN indexes for spans.metadata and sessions.metadata
- fix tenant-aware provider lookup in handleQuota
- separate empty-role vs error handling in resolveTenantHint
- scope pool validation to chatgpt_oauth providers only
- wrap buildEntries in useCallback for stable useMemo deps
- document OAuth concurrent auth limitation and RoleAdmin breaking change
This commit is contained in:
viettranx committed 2026-03-27 10:19:16 +07:00
1 parent b9c1731e31
commit 74dc086a80
35 files changed
+1695 -1455

No files matched your search

@@ -7,6 +7,7 @@ import (
"github.com/google/uuid"
"github.com/nextlevelbuilder/goclaw/internal/providers"
"github.com/nextlevelbuilder/goclaw/internal/store"
)
func TestBuildCodexPoolActivitySeparatesDirectSelectionAndFailover(t *testing.T) {
@@ -35,7 +36,7 @@ func TestBuildCodexPoolActivitySeparatesDirectSelectionAndFailover(t *testing.T)
AttemptCount: 2,
})
providerCounts, recent := buildCodexPoolActivity([]string{"pool-a", "pool-b", "pool-c"}, []codexPoolSpanActivity{
providerCounts, recent := buildCodexPoolActivity([]string{"pool-a", "pool-b", "pool-c"}, []store.CodexPoolSpan{
{
SpanID: uuid.New(),
TraceID: uuid.New(),
@@ -114,7 +115,7 @@ func TestBuildCodexPoolActivityTracksTerminalFailuresAcrossAttempts(t *testing.T
AttemptCount: 2,
})
providerCounts, recent := buildCodexPoolActivity([]string{"pool-a", "pool-b"}, []codexPoolSpanActivity{
providerCounts, recent := buildCodexPoolActivity([]string{"pool-a", "pool-b"}, []store.CodexPoolSpan{
{
SpanID: uuid.New(),
TraceID: uuid.New(),