From abb10976f70d2e6529cdad68008e1bdac4d490ab Mon Sep 17 00:00:00 2001 From: "Kai (Tam Nhu) Tran" <61256810+kaitranntt@users.noreply.github.com> Date: Thu, 23 Apr 2026 13:16:14 -0400 Subject: [PATCH] feat(codex-pool,create_image): collapse primary_first + route pools through create_image chain (#1006) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor(codex-pool): remove redundant primary_first strategy * test(tools): update tool schema fixtures to pointer form * feat(create_image): route Codex pools through chain with member failover Codex pool chain entries now iterate pool members per the pool's own strategy (round_robin or priority_order) and fail over internally before the outer chain advances to the next entry. - ChatGPTOAuthRouter.GenerateImage implements NativeImageProvider: iterates orderedProviders, tries each member, advances round-robin state only on success, aggregates errors on pool exhaustion. - media_provider_chain.wrapPoolProvider wraps a *CodexProvider in a router when RoutingDefaults has extras or a non-primary-first strategy. Solo Codex (no extras) stays unwrapped. - Router exposes ProviderType() so chain telemetry records "chatgpt_oauth". Closes #1008 * feat(ui/builtin-tools): pool badge on create_image chain entries Chain entry card shows a read-only "Pool · " badge when the entry's provider is a Codex pool base. Strategy label translates in en/vi/zh. No new toggle or selector — pool config lives on the provider itself. #1008 * refactor(providers): move Codex test helpers to providertest subpackage Addresses code-review High finding: NewTestCodexProviderFast and its staticTestTokenSource were exported from a non-_test.go file, compiling into the production binary. Relocating to internal/providers/providertest/ keeps the helper importable from other packages' tests without leaking test-only symbols into production. Also tightens wrapPoolProvider — pools with zero extra members no longer get wrapped in a router (KISS: nothing to rotate between). - Added CodexProvider.WithRetryConfig as a legitimate fluent option (the test helper now uses the public API). - Dropped the internal-package test helper file. #1008 * docs(pr-1006): add pool badge UI evidence Force-UI style capture of the read-only "Pool · Round-robin" badge on the create_image chain entry card when the selected provider carries settings.codex_pool with extras. Captured against staging gateway. * refactor(ui/builtin-tools): unify pool UX with Create Agent pattern The create_image chain Provider dropdown was listing pool members alongside pool owners, letting users accidentally bypass pool semantics by picking a member directly. Matches the pattern already used by Create Agent: hide pool members, show an inline "Pool" chip on owners. - Filter pool members from the chain Provider dropdown via getChatGPTOAuthPoolOwnership.ownerByMember. - Inline "Pool" chip on owner options, reusing the existing providers:list.poolBadge i18n key. - Drop the separate card-level "Pool · " badge — the dropdown chip alone conveys the information without duplication. - Remove the now-unused isPoolProvider / poolStrategyOf helpers and the builtin.mediaChain.poolBadge* i18n keys we briefly introduced. #1008 * docs(pr-1006): add pool-filtered dropdown screenshot * fix(ui/builtin-tools): migrate stale pool-member chain entries on load Red-team blocker: a chain saved before the pool-aware UI landed may reference a pool member by name (e.g. openai-codex-2). After the dropdown started hiding members, such an entry produced: - empty Select trigger (no SelectItem matches the stored value) - conflicting Row 1 label still showing the member name - silent runtime misroute (bare solo call, no pool wrap) parseInitialEntries now consults getChatGPTOAuthPoolOwnership and rewrites any chain entry whose provider is a pool member to the owner's name + id. The next save persists the migrated value. Safe no-op for non-pool entries and for entries already pointing at an owner. Also memoize enabledProviders in the parent form so the card's useMemo boundaries actually hold (minor perf ding flagged by same review). * docs(pr-1006): refresh HTML evidence to match filter-based UX * fix(ui/agent-codex-pool): traffic policy reflects effective strategy under inherit On the agent's OpenAI Account Pool page, when Agent routing mode is Use Provider Defaults, the Traffic Policy buttons painted the draft's placeholder strategy ("priority_order") as selected — contradicting the top-of-page chip which already correctly shows the provider's effective strategy. The removal of primary_first in this PR unmasked the latent bug: the placeholder used to be a deprecated value that didn't match any live button, so nothing appeared selected. Derive selectedStrategy from defaultRouting when mode === "inherit": the button highlight now mirrors what actually runs. Buttons remain disabled in inherit mode (unchanged), but the displayed selection no longer misleads the user. * docs(pr-1006): add screenshot of inherit-mode Traffic Policy fix * fix(permissions): remove duplicate MethodSessionsCompact entry The writeExact slice listed MethodSessionsCompact twice. slices.Contains still returned correct results so runtime behavior is unchanged, but the duplicate entry was dead code. Spotted during review of PR #1006. --------- Co-authored-by: viettranx --- .../1006/codex-pool-inherit-round-robin.png | Bin 0 -> 217198 bytes .github/pr-assets/1006/index.html | 75 ++++ .../pr-assets/1006/pool-dropdown-filtered.png | Bin 0 -> 149536 bytes docs/02-providers.md | 20 +- docs/12-extended-thinking.md | 28 +- docs/18-http-api.md | 34 +- docs/project-changelog.md | 17 +- internal/http/agents.go | 31 +- internal/http/agents_codex_pool.go | 2 +- internal/http/agents_export_marshal.go | 58 +++- .../http/chatgpt_oauth_pool_validation.go | 2 +- .../chatgpt_oauth_pool_validation_test.go | 29 +- internal/http/openapi_spec.json | 67 ++-- internal/http/providers.go | 18 +- .../http/providers_codex_pool_activity.go | 4 +- .../providers_codex_pool_activity_test.go | 60 ++++ internal/permissions/policy_test.go | 1 + .../context_stage_integration_test.go | 2 +- .../pipeline/context_stage_overhead_test.go | 2 +- internal/providerresolve/agent_provider.go | 22 +- .../providerresolve/agent_provider_test.go | 9 +- .../providers/chatgpt_oauth_router_image.go | 90 +++++ .../chatgpt_oauth_router_image_test.go | 242 +++++++++++++ .../chatgpt_oauth_router_provider_type.go | 9 + internal/providers/codex.go | 8 + internal/providers/providertest/codex.go | 22 ++ internal/store/agent_store.go | 54 ++- internal/store/agent_store_test.go | 91 +++-- .../tokencount/count_tool_schemas_test.go | 4 +- .../tools/create_image_pool_chain_test.go | 321 ++++++++++++++++++ internal/tools/media_provider_chain.go | 61 ++++ .../tools/media_provider_chain_pool_test.go | 255 ++++++++++++++ tests/integration/mcp_grant_revoke_test.go | 2 +- tests/integration/tts_gemini_live_test.go | 2 +- .../agent-detail/agent-display-utils.ts | 32 +- .../codex-pool-routing-draft-utils.ts | 10 +- .../chatgpt-oauth-routing-section.tsx | 22 +- .../hooks/use-codex-pool-activity.ts | 2 +- .../media-provider-chain-form.tsx | 4 +- .../media-provider-chain-helpers.ts | 48 ++- .../media-sortable-provider-card.tsx | 26 +- .../hooks/use-provider-codex-pool-activity.ts | 2 +- .../providers/pool-setup-wizard-dialog.tsx | 13 +- .../provider-overview-helpers.ts | 2 +- .../provider-detail/provider-overview.tsx | 8 +- .../src/pages/providers/provider-list-row.tsx | 3 +- ui/web/src/pages/providers/provider-utils.tsx | 16 +- ui/web/src/pages/providers/providers-page.tsx | 18 +- ui/web/src/types/agent.ts | 3 - ui/web/src/types/provider.ts | 7 +- 50 files changed, 1616 insertions(+), 242 deletions(-) create mode 100644 .github/pr-assets/1006/codex-pool-inherit-round-robin.png create mode 100644 .github/pr-assets/1006/index.html create mode 100644 .github/pr-assets/1006/pool-dropdown-filtered.png create mode 100644 internal/http/providers_codex_pool_activity_test.go create mode 100644 internal/providers/chatgpt_oauth_router_image.go create mode 100644 internal/providers/chatgpt_oauth_router_image_test.go create mode 100644 internal/providers/chatgpt_oauth_router_provider_type.go create mode 100644 internal/providers/providertest/codex.go create mode 100644 internal/tools/create_image_pool_chain_test.go create mode 100644 internal/tools/media_provider_chain_pool_test.go diff --git a/.github/pr-assets/1006/codex-pool-inherit-round-robin.png b/.github/pr-assets/1006/codex-pool-inherit-round-robin.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7484f96f9ed8226531fdf29ef4ebcb3302fee7 GIT binary patch literal 217198 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Π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

q$7*-hL`U80QFSYA+IF^`9_ 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%0De8BI;HnQFk*TLpaciDms5AUHP6mToAA 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 I`XuOo0FTuuVgLXD literal 0 HcmV?d00001 diff --git a/.github/pr-assets/1006/index.html b/.github/pr-assets/1006/index.html new file mode 100644 index 00000000..1fce050d --- /dev/null +++ b/.github/pr-assets/1006/index.html @@ -0,0 +1,75 @@ + + + + + +PR 1006 · Codex pool refactor + pool-aware create_image + + + + +

+

PR 1006 · Codex pool refactor + pool-aware create_image

+
Closes #1001 and #1008. Captures: staging gateway on claw, master tenant, light theme, openai-codex provider configured as a 2-member round_robin pool with openai-codex-2 as a member.
+ +
+

What changed

Chain entries pointing at a Codex OAuth pool now route through the pool's own strategy with internal failover. The outer chain only advances after the pool is fully exhausted.

+

Why it matters

Before: users could accidentally select a pool member in the chain and bypass pool semantics. Now: the dropdown hides pool members and tags owners with an inline Pool chip — mirrors the Create Agent dropdown.

+

Review cue

The inline Pool chip next to openai-codex — and the absence of openai-codex-2 from the list — proves the UX unification. Backend failover is proven by 5 integration scenarios in create_image_pool_chain_test.go.

+
+ +
+

1. Pool-filtered Provider dropdown

+
Red callout marks the openai-codex option tagged with an inline Pool chip. openai-codex-2 (a pool member) is no longer listed — pool routing is reached only by picking the owner, matching the existing Create Agent dropdown pattern.
+
+
+ Implemented + Create Image — Provider Chain dialog, Provider dropdown open +
+ Pool-filtered dropdown with inline Pool chip on owner +
+
+ +
+

2. Backend validation

+
Full test matrix executed on the PR branch at the current HEAD.
+
go build ./...                           — ok (PG)
+go build -tags sqliteonly ./...          — ok (Desktop)
+go vet ./...                             — no issues
+go test ./internal/tools/... ./internal/providers/...   — 1599 passed
+Integration: 5 pool-chain scenarios × 5 runs under -race — 25/25 deterministic
+pnpm --dir ui/web tsc --noEmit           — no errors
+
+
+ + diff --git a/.github/pr-assets/1006/pool-dropdown-filtered.png b/.github/pr-assets/1006/pool-dropdown-filtered.png new file mode 100644 index 0000000000000000000000000000000000000000..ceb997fb806745b7e1e0eb048ac9bff115d6cdd0 GIT binary patch literal 149536 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∋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 Cd*lQF literal 0 HcmV?d00001 diff --git a/docs/02-providers.md b/docs/02-providers.md index d17d26d3..cfae5c8b 100644 --- a/docs/02-providers.md +++ b/docs/02-providers.md @@ -279,7 +279,7 @@ Extended thinking allows LLMs to generate internal reasoning tokens before produ ```mermaid flowchart TD - LEVEL["provider.settings.reasoning_defaults
+ agent other_config.reasoning"] --> CHECK{"Provider
supports thinking?"} + LEVEL["provider.settings.reasoning_defaults
+ agent reasoning_config"] --> CHECK{"Provider
supports thinking?"} CHECK -->|No| SKIP["Skip — normal request"] CHECK -->|Yes| TYPE{"Provider type?"} @@ -668,12 +668,10 @@ Agent override example: ```json { "provider": "openai-codex", - "other_config": { - "reasoning": { - "override_mode": "custom", - "effort": "xhigh", - "fallback": "downgrade" - } + "reasoning_config": { + "override_mode": "custom", + "effort": "xhigh", + "fallback": "downgrade" } } ``` @@ -685,18 +683,18 @@ Routing behavior: - A provider listed in another pool cannot also manage its own pool. - `override_mode: "inherit"` uses the primary provider's `settings.codex_pool`. - `override_mode: "custom"` is limited to routing behavior for that provider-owned pool. -- `primary_first` keeps the preferred account fixed. When saved as a custom override with no extra names, it disables the pool for that agent and keeps the agent on the primary account only. - `round_robin` rotates requests across the preferred account plus the provider-owned extra authenticated OpenAI Codex OAuth accounts. - `priority_order` tries the preferred account first, then drains the provider-owned extra accounts in order. +- Legacy `primary_first` configs are read back as `priority_order`. Existing agent overrides that explicitly saved an empty `extra_provider_names` list still remain single-account-only after migration. - Retryable upstream failures can fall through to the next eligible OpenAI Codex OAuth account in the same request. - Explicit provider names remain explicit. OAuth auth/logout is still provider-scoped. - Runtime observability for one agent is available at `GET /v1/agents/{id}/codex-pool-activity`, which exposes recent routed traces plus per-alias health derived from those traces. Reasoning behavior: - `settings.reasoning_defaults` is provider-owned and reusable across agents. -- `reasoning.override_mode: "inherit"` follows the provider default. -- `reasoning.override_mode: "custom"` stores an agent-local reasoning policy. -- Existing `reasoning` payloads without `override_mode` still behave as custom overrides. +- `reasoning_config.override_mode: "inherit"` follows the provider default. +- `reasoning_config.override_mode: "custom"` stores an agent-local reasoning policy. +- Existing legacy `other_config.reasoning` payloads without `override_mode` still behave as custom overrides. - If no provider default is saved, inherit resolves to reasoning `off`. - Trace metadata surfaces the reasoning `source` so provider-default behavior is no longer implicit. diff --git a/docs/12-extended-thinking.md b/docs/12-extended-thinking.md index 3bb70131..f5e60ae2 100644 --- a/docs/12-extended-thinking.md +++ b/docs/12-extended-thinking.md @@ -8,7 +8,7 @@ Extended thinking allows LLM providers to "think out loud" before producing a fi ## 1. Configuration -The reusable default now lives on the provider in `settings.reasoning_defaults`. Agents consume that default by inheriting it, or store a custom override in `other_config.reasoning`. `thinking_level` remains the backward-compatible coarse shim for older builds. +The reusable default now lives on the provider in `settings.reasoning_defaults`. Agents consume that default by inheriting it, or store a custom override in top-level `reasoning_config`. `thinking_level` remains the backward-compatible coarse shim for older builds. | Level | Behavior | |-------|----------| @@ -35,10 +35,8 @@ The reusable default now lives on the provider in `settings.reasoning_defaults`. ```json { - "other_config": { - "reasoning": { - "override_mode": "inherit" - } + "reasoning_config": { + "override_mode": "inherit" } } ``` @@ -47,13 +45,11 @@ The reusable default now lives on the provider in `settings.reasoning_defaults`. ```json { - "other_config": { - "thinking_level": "high", - "reasoning": { - "override_mode": "custom", - "effort": "xhigh", - "fallback": "downgrade" - } + "thinking_level": "high", + "reasoning_config": { + "override_mode": "custom", + "effort": "xhigh", + "fallback": "downgrade" } } ``` @@ -61,11 +57,11 @@ The reusable default now lives on the provider in `settings.reasoning_defaults`. Rules: - Unset provider defaults and unset agent reasoning both resolve to `off`. - `settings.reasoning_defaults` is provider-owned and reusable across agents. -- `reasoning.override_mode` accepts `inherit|custom`. +- `reasoning_config.override_mode` accepts `inherit|custom`. - `thinking_level` still accepts `off|low|medium|high`. -- `reasoning.effort` accepts `off|auto|none|minimal|low|medium|high|xhigh`. -- `reasoning.fallback` accepts `downgrade|off|provider_default`. -- Existing `reasoning` payloads without `override_mode` are treated as custom overrides for backward compatibility. +- `reasoning_config.effort` accepts `off|auto|none|minimal|low|medium|high|xhigh`. +- `reasoning_config.fallback` accepts `downgrade|off|provider_default`. +- Existing legacy `other_config.reasoning` payloads without `override_mode` are treated as custom overrides for backward compatibility. - Read path resolves provider defaults first, then applies agent inherit/custom semantics, then falls back to legacy `thinking_level`. - Write path keeps a derived coarse `thinking_level` only for custom agent overrides so rollback to older GoClaw builds stays safe. diff --git a/docs/18-http-api.md b/docs/18-http-api.md index b7402696..33047f4c 100644 --- a/docs/18-http-api.md +++ b/docs/18-http-api.md @@ -140,20 +140,18 @@ POST /v1/agents/{id}/wake Response: `{content, run_id, usage?}`. Used by orchestrators (n8n, Paperclip) to trigger agent runs. -### Codex/OpenAI OAuth Routing in `other_config` +### Codex/OpenAI OAuth Routing in `chatgpt_oauth_routing` -For agents whose main `provider` is a `chatgpt_oauth` provider, `other_config.chatgpt_oauth_routing` +For agents whose main `provider` is a `chatgpt_oauth` provider, top-level `chatgpt_oauth_routing` can override or inherit routing behavior while keeping the main `provider` field as the preferred/default account alias. ```json { "provider": "openai-codex", "model": "gpt-5.4", - "other_config": { - "chatgpt_oauth_routing": { - "override_mode": "custom", - "strategy": "round_robin" - } + "chatgpt_oauth_routing": { + "override_mode": "custom", + "strategy": "round_robin" } } ``` @@ -164,10 +162,10 @@ Rules: - A provider listed in another pool cannot also manage its own pool. - `override_mode: "inherit"` tells the agent to follow those provider defaults. - `override_mode: "custom"` stores an agent-local routing override for that provider-owned pool. -- `strategy: "primary_first"` keeps the main `provider` as the preferred account. When saved as a custom override with no extra names, it disables pooling for that agent. - Provider aliases are arbitrary. `openai-codex`, `codex-work`, and `codex-team` are examples, not required prefixes. - `strategy: "round_robin"` rotates requests across the main provider plus the provider-owned extra authenticated OpenAI Codex OAuth providers. - `strategy: "priority_order"` tries the main provider first, then drains the provider-owned extra providers in order. +- Legacy `primary_first` payloads are normalized to `priority_order` on read. Existing agent overrides that explicitly saved `extra_provider_names: []` still remain single-account-only after migration. - Retryable upstream failures can fall through to the next eligible OpenAI Codex OAuth provider in the same request. - Only enabled and authenticated `chatgpt_oauth` providers participate. - Provider-scoped auth remains unchanged: `cmd/auth` and `/v1/auth/chatgpt/{provider}/*` still operate on explicit providers. @@ -209,30 +207,28 @@ Rules: - the final runtime effort is still normalized against the agent's selected model capabilities - if no provider default is saved, inherit mode resolves to reasoning `off` -### Agent reasoning policy in `other_config` +### Agent reasoning policy in `reasoning_config` -Agents can now store capability-aware GPT-5/Codex reasoning intent under `other_config.reasoning`. +Agents can now store capability-aware GPT-5/Codex reasoning intent under top-level `reasoning_config`. ```json { "provider": "openai-codex", "model": "gpt-5.4", - "other_config": { - "reasoning": { - "override_mode": "inherit" - } + "reasoning_config": { + "override_mode": "inherit" } } ``` Rules: -- `reasoning.override_mode` supports `inherit|custom` +- `reasoning_config.override_mode` supports `inherit|custom` - `override_mode: "inherit"` tells the agent to follow `settings.reasoning_defaults` - `override_mode: "custom"` stores an agent-local override; the dashboard also writes a derived `thinking_level` shim for rollback safety - `thinking_level` remains the coarse compatibility shim: `off|low|medium|high` -- `reasoning.effort` supports `off|auto|none|minimal|low|medium|high|xhigh` -- `reasoning.fallback` supports `downgrade|off|provider_default` -- existing `reasoning` payloads without `override_mode` continue to behave as custom overrides +- `reasoning_config.effort` supports `off|auto|none|minimal|low|medium|high|xhigh` +- `reasoning_config.fallback` supports `downgrade|off|provider_default` +- existing legacy `other_config.reasoning` payloads without `override_mode` continue to behave as custom overrides - unset reasoning resolves to `off` - the runtime may normalize unsupported efforts, and the actual decision is surfaced in trace span metadata @@ -266,7 +262,7 @@ Query parameters: - `limit` optional, defaults to `18`, max `50` Response fields: -- `strategy`: effective routing strategy (`primary_first`, `round_robin`, or `priority_order`) +- `strategy`: effective routing strategy (`round_robin` or `priority_order`) - `pool_providers`: configured primary + extra provider aliases in pool order - `stats_sample_size`: number of recent routed `llm_call` spans used to derive runtime health. The server derives health from `max(limit, 120)` recent spans even when `recent_requests` is still capped by the requested `limit`. - `provider_counts`: per-alias routing evidence: diff --git a/docs/project-changelog.md b/docs/project-changelog.md index 24c867d5..36e559d4 100644 --- a/docs/project-changelog.md +++ b/docs/project-changelog.md @@ -33,8 +33,6 @@ Implementation is evidence-backed against the native ChatGPT Responses API event - `plans/260422-1349-goclaw-chatgpt-image-gen/` — plan + phase files. - `plans/reports/researcher-260422-1414-codex-native-image-events.md` — native event schema. ---- - ## 2026-04-20 ### Pipeline: accurate context token tracking + dynamic compaction @@ -96,6 +94,21 @@ Implementation is evidence-backed against the native ChatGPT Responses API event --- +## 2026-04-22 + +### Codex OAuth pool routing strategy cleanup + +**Changes** + +- Removed `primary_first` from the public Codex OAuth routing strategy surface. The API, OpenAPI schema, and web UI now expose only `round_robin` and `priority_order`. +- Legacy `primary_first` and `manual` routing values now normalize to `priority_order` on read in the backend store layer. +- Activity endpoints now default empty/no-pool responses to `priority_order` instead of `primary_first`. +- Agent overrides that explicitly persist `extra_provider_names: []` continue to behave as single-account-only routing after the migration. + +**Docs** + +- Updated `docs/02-providers.md` and `docs/18-http-api.md` to describe the two-strategy model and the compatibility migration. + ## 2026-04-19 ### TTS: Gemini provider + ProviderCapabilities schema engine diff --git a/internal/http/agents.go b/internal/http/agents.go index b1823bcf..376964c3 100644 --- a/internal/http/agents.go +++ b/internal/http/agents.go @@ -35,16 +35,16 @@ type AgentsHandler struct { kgStore store.KnowledgeGraphStore // for import (nil = disabled) episodicStore store.EpisodicStore // for import (nil in SQLite/lite builds) vaultStore store.VaultStore // for vault import (nil = disabled) - toolsReg ToolPreviewLister // for system prompt preview tool resolution (nil = fallback) - skillsLoader SkillPreviewBuilder // for system prompt preview pinned skills (nil = skip) - skillAccessStore store.SkillAccessStore // for system prompt preview skill filtering (nil = skip) + toolsReg ToolPreviewLister // for system prompt preview tool resolution (nil = fallback) + skillsLoader SkillPreviewBuilder // for system prompt preview pinned skills (nil = skip) + skillAccessStore store.SkillAccessStore // for system prompt preview skill filtering (nil = skip) teamStore store.TeamStore // for system prompt preview team context (nil = skip) agentLinkStore store.AgentLinkStore // for system prompt preview delegation targets (nil = skip) - defaultWorkspace string // default workspace path template (e.g. "~/.goclaw/workspace") - dataDir string // resolved data directory (e.g. "~/.goclaw/data") — for team workspace export - msgBus *bus.MessageBus // for cache invalidation events (nil = no events) - summoner *AgentSummoner // LLM-based agent setup (nil = disabled) - isOwner func(string) bool // checks if user ID is a system owner (nil = no owners configured) + defaultWorkspace string // default workspace path template (e.g. "~/.goclaw/workspace") + dataDir string // resolved data directory (e.g. "~/.goclaw/data") — for team workspace export + msgBus *bus.MessageBus // for cache invalidation events (nil = no events) + summoner *AgentSummoner // LLM-based agent setup (nil = disabled) + isOwner func(string) bool // checks if user ID is a system owner (nil = no owners configured) } // NewAgentsHandler creates a handler for agent management endpoints. @@ -205,7 +205,11 @@ func (h *AgentsHandler) handleList(w http.ResponseWriter, r *http.Request) { return } - writeJSON(w, http.StatusOK, map[string]any{"agents": agents}) + publicAgents := make([]store.AgentData, 0, len(agents)) + for i := range agents { + publicAgents = append(publicAgents, canonicalizeAgentForResponse(&agents[i])) + } + writeJSON(w, http.StatusOK, map[string]any{"agents": publicAgents}) } func (h *AgentsHandler) handleCreate(w http.ResponseWriter, r *http.Request) { @@ -306,7 +310,8 @@ func (h *AgentsHandler) handleCreate(w http.ResponseWriter, r *http.Request) { } emitAudit(h.msgBus, r, "agent.created", "agent", req.ID.String()) - writeJSON(w, http.StatusCreated, req) + publicAgent := canonicalizeAgentForResponse(&req) + writeJSON(w, http.StatusCreated, publicAgent) } func (h *AgentsHandler) handleGet(w http.ResponseWriter, r *http.Request) { @@ -328,7 +333,8 @@ func (h *AgentsHandler) handleGet(w http.ResponseWriter, r *http.Request) { return } } - writeJSON(w, http.StatusOK, ag) + publicAgent := canonicalizeAgentForResponse(ag) + writeJSON(w, http.StatusOK, publicAgent) return } @@ -345,7 +351,8 @@ func (h *AgentsHandler) handleGet(w http.ResponseWriter, r *http.Request) { } } - writeJSON(w, http.StatusOK, ag) + publicAgent := canonicalizeAgentForResponse(ag) + writeJSON(w, http.StatusOK, publicAgent) } func (h *AgentsHandler) handleUpdate(w http.ResponseWriter, r *http.Request) { diff --git a/internal/http/agents_codex_pool.go b/internal/http/agents_codex_pool.go index ca2e46d4..a7717107 100644 --- a/internal/http/agents_codex_pool.go +++ b/internal/http/agents_codex_pool.go @@ -201,7 +201,7 @@ func (h *AgentsHandler) handleCodexPoolActivity(w http.ResponseWriter, r *http.R statsLimit := maxInt(limit, codexPoolRuntimeHealthSampleSize) baseProviderType, routing, poolProviders := resolveCodexPoolRouting(r.Context(), h.providers, h.providerReg, agent) - strategy := store.ChatGPTOAuthStrategyPrimaryFirst + strategy := store.ChatGPTOAuthStrategyPriority if routing != nil && routing.Strategy != "" { strategy = routing.Strategy } diff --git a/internal/http/agents_export_marshal.go b/internal/http/agents_export_marshal.go index 436315bd..0dcd2e11 100644 --- a/internal/http/agents_export_marshal.go +++ b/internal/http/agents_export_marshal.go @@ -11,6 +11,62 @@ import ( "github.com/nextlevelbuilder/goclaw/internal/store" ) +func canonicalizeChatGPTOAuthRoutingForResponse(raw json.RawMessage) json.RawMessage { + if len(raw) == 0 { + return nil + } + agent := &store.AgentData{ChatGPTOAuthRouting: raw} + routing := store.PublicChatGPTOAuthRouting(agent.ParseChatGPTOAuthRouting()) + if routing == nil { + return nil + } + out, err := json.Marshal(routing) + if err != nil { + return raw + } + return out +} + +func canonicalizeProviderSettingsForResponse(raw json.RawMessage) json.RawMessage { + if len(raw) == 0 { + return nil + } + var settings map[string]any + if err := json.Unmarshal(raw, &settings); err != nil { + return raw + } + providerSettings := store.ParseChatGPTOAuthProviderSettings(raw) + if providerSettings == nil || providerSettings.CodexPool == nil { + delete(settings, "codex_pool") + } else { + routing := store.PublicChatGPTOAuthRouting(providerSettings.CodexPool) + settings["codex_pool"] = map[string]any{ + "strategy": routing.Strategy, + "extra_provider_names": routing.ExtraProviderNames, + } + } + if len(settings) == 0 { + return nil + } + out, err := json.Marshal(settings) + if err != nil { + return raw + } + return out +} + +func canonicalizeAgentForResponse(ag *store.AgentData) store.AgentData { + clone := *ag + clone.ChatGPTOAuthRouting = canonicalizeChatGPTOAuthRoutingForResponse(ag.ChatGPTOAuthRouting) + return clone +} + +func canonicalizeProviderForResponse(p *store.LLMProviderData) store.LLMProviderData { + clone := *p + clone.Settings = canonicalizeProviderSettingsForResponse(p.Settings) + return clone +} + // addToTar adds a single file to the tar archive with a standard header. func addToTar(tw *tar.Writer, name string, data []byte) error { hdr := &tar.Header{ @@ -97,7 +153,7 @@ func marshalAgentConfig(ag *store.AgentData) ([]byte, error) { SkillNudgeInterval: ag.SkillNudgeInterval, ReasoningConfig: ag.ReasoningConfig, WorkspaceSharing: ag.WorkspaceSharing, - ChatGPTOAuthRouting: ag.ChatGPTOAuthRouting, + ChatGPTOAuthRouting: canonicalizeChatGPTOAuthRoutingForResponse(ag.ChatGPTOAuthRouting), ShellDenyGroups: ag.ShellDenyGroups, KGDedupConfig: ag.KGDedupConfig, }, "", " ") diff --git a/internal/http/chatgpt_oauth_pool_validation.go b/internal/http/chatgpt_oauth_pool_validation.go index 8765ad85..fc8bc267 100644 --- a/internal/http/chatgpt_oauth_pool_validation.go +++ b/internal/http/chatgpt_oauth_pool_validation.go @@ -213,7 +213,7 @@ func validateChatGPTOAuthAgentRouting( } if len(defaultMembers) == 0 { - if routing.Strategy != store.ChatGPTOAuthStrategyPrimaryFirst || len(routing.ExtraProviderNames) > 0 { + if len(routing.ExtraProviderNames) > 0 { return fmt.Errorf("configure OpenAI Codex pool members on provider %q before enabling agent-level routing", providerName) } return nil diff --git a/internal/http/chatgpt_oauth_pool_validation_test.go b/internal/http/chatgpt_oauth_pool_validation_test.go index b51925b4..e3e0f1b8 100644 --- a/internal/http/chatgpt_oauth_pool_validation_test.go +++ b/internal/http/chatgpt_oauth_pool_validation_test.go @@ -164,6 +164,31 @@ func TestValidateChatGPTOAuthAgentRoutingAllowsStrategyOnlyOverride(t *testing.T } } +func TestValidateChatGPTOAuthAgentRoutingAllowsPriorityOrderWithoutProviderPool(t *testing.T) { + providerStore := newMockProviderStore() + tenantID := uuid.New() + ctx := store.WithTenantID(context.Background(), tenantID) + + if err := providerStore.CreateProvider(ctx, &store.LLMProviderData{ + BaseModel: store.BaseModel{ID: uuid.New()}, + TenantID: tenantID, + Name: "openai-codex", + ProviderType: store.ProviderChatGPTOAuth, + Enabled: true, + }); err != nil { + t.Fatalf("CreateProvider() error = %v", err) + } + + routing := &store.ChatGPTOAuthRoutingConfig{ + OverrideMode: store.ChatGPTOAuthOverrideCustom, + Strategy: store.ChatGPTOAuthStrategyPriority, + } + + if err := validateChatGPTOAuthAgentRouting(ctx, providerStore, "openai-codex", routing); err != nil { + t.Fatalf("validateChatGPTOAuthAgentRouting() error = %v, want nil", err) + } +} + // TestValidatePoolGraphIgnoresDisabledProviders verifies that disabled providers' // stale pool configs do not block validation for active providers. func TestValidatePoolGraphIgnoresDisabledProviders(t *testing.T) { @@ -208,7 +233,7 @@ func TestValidatePoolGraphIgnoresDisabledProviders(t *testing.T) { Enabled: true, Settings: json.RawMessage(`{ "codex_pool": { - "strategy": "primary_first", + "strategy": "priority_order", "extra_provider_names": ["codex-work"] } }`), @@ -261,7 +286,7 @@ func TestValidatePoolGraphRejectsConflictWithEnabledProviders(t *testing.T) { Enabled: true, Settings: json.RawMessage(`{ "codex_pool": { - "strategy": "primary_first", + "strategy": "priority_order", "extra_provider_names": ["codex-work"] } }`), diff --git a/internal/http/openapi_spec.json b/internal/http/openapi_spec.json index f1b7ce8c..c046be4a 100644 --- a/internal/http/openapi_spec.json +++ b/internal/http/openapi_spec.json @@ -373,7 +373,7 @@ "type": "object", "required": ["strategy", "pool_providers", "stats_sample_size", "provider_counts", "recent_requests"], "properties": { - "strategy": { "type": "string", "enum": ["primary_first", "round_robin", "priority_order"] }, + "strategy": { "type": "string", "enum": ["round_robin", "priority_order"] }, "pool_providers": { "type": "array", "items": { "type": "string" } @@ -887,43 +887,36 @@ "provider": { "type": "string", "description": "LLM provider name" }, "model": { "type": "string", "description": "Model ID" }, "system_prompt": { "type": "string" }, - "other_config": { - "type": "object", - "description": "Optional per-agent JSON config.", - "properties": { - "thinking_level": { - "type": "string", - "enum": ["off", "low", "medium", "high"], - "description": "Legacy coarse reasoning shim. Unset means off." - }, - "reasoning": { - "type": "object", - "description": "Capability-aware reasoning policy for GPT-5/Codex models.", - "properties": { - "override_mode": { - "type": "string", - "enum": ["inherit", "custom"] - }, - "effort": { - "type": "string", - "enum": ["off", "auto", "none", "minimal", "low", "medium", "high", "xhigh"] - }, - "fallback": { - "type": "string", - "enum": ["downgrade", "off", "provider_default"] - } - } - }, - "chatgpt_oauth_routing": { - "type": "object", - "description": "Optional agent-side routing override for ChatGPT OAuth providers. The main provider field remains the preferred/default account, while provider settings may supply inherited defaults.", - "properties": { - "override_mode": { "type": "string", "enum": ["inherit", "custom"] }, - "strategy": { "type": "string", "enum": ["manual", "primary_first", "round_robin", "priority_order"] }, - "extra_provider_names": { "type": "array", "items": { "type": "string" } } - } + "other_config": { + "type": "object", + "description": "Optional legacy/extensibility bag. Do not nest reasoning or Codex routing here in new writes." + }, + "reasoning_config": { + "type": "object", + "description": "Capability-aware reasoning policy for GPT-5/Codex models.", + "properties": { + "override_mode": { + "type": "string", + "enum": ["inherit", "custom"] + }, + "effort": { + "type": "string", + "enum": ["off", "auto", "none", "minimal", "low", "medium", "high", "xhigh"] + }, + "fallback": { + "type": "string", + "enum": ["downgrade", "off", "provider_default"] } } + }, + "chatgpt_oauth_routing": { + "type": "object", + "description": "Optional agent-side routing override for ChatGPT OAuth providers. The main provider field remains the preferred/default account, while provider settings may supply inherited defaults.", + "properties": { + "override_mode": { "type": "string", "enum": ["inherit", "custom"] }, + "strategy": { "type": "string", "enum": ["round_robin", "priority_order"] }, + "extra_provider_names": { "type": "array", "items": { "type": "string" } } + } } } }, @@ -959,7 +952,7 @@ "properties": { "strategy": { "type": "string", - "enum": ["manual", "primary_first", "round_robin", "priority_order"] + "enum": ["round_robin", "priority_order"] }, "extra_provider_names": { "type": "array", diff --git a/internal/http/providers.go b/internal/http/providers.go index c0fb57d0..ff8fa177 100644 --- a/internal/http/providers.go +++ b/internal/http/providers.go @@ -35,9 +35,9 @@ type ProvidersHandler struct { cliMu sync.Mutex // serializes Claude CLI provider create to prevent duplicates msgBus *bus.MessageBus sysConfigStore store.SystemConfigStore - tracingStore store.TracingStore // optional: for provider-scoped pool activity - agents store.AgentCRUDStore // optional: for provider pool activity agent lookup - modelReg providers.ModelRegistry // optional: forward-compat model resolver for Anthropic + tracingStore store.TracingStore // optional: for provider-scoped pool activity + agents store.AgentCRUDStore // optional: for provider pool activity agent lookup + modelReg providers.ModelRegistry // optional: forward-compat model resolver for Anthropic } // NewProvidersHandler creates a handler for provider management endpoints. @@ -328,7 +328,11 @@ func (h *ProvidersHandler) handleListProviders(w http.ResponseWriter, r *http.Re maskAPIKey(&providers[i]) } - writeJSON(w, http.StatusOK, map[string]any{"providers": providers}) + publicProviders := make([]store.LLMProviderData, 0, len(providers)) + for i := range providers { + publicProviders = append(publicProviders, canonicalizeProviderForResponse(&providers[i])) + } + writeJSON(w, http.StatusOK, map[string]any{"providers": publicProviders}) } func (h *ProvidersHandler) handleCreateProvider(w http.ResponseWriter, r *http.Request) { @@ -399,7 +403,8 @@ func (h *ProvidersHandler) handleCreateProvider(w http.ResponseWriter, r *http.R emitAudit(h.msgBus, r, "provider.created", "provider", p.ID.String()) maskAPIKey(&p) - writeJSON(w, http.StatusCreated, p) + publicProvider := canonicalizeProviderForResponse(&p) + writeJSON(w, http.StatusCreated, publicProvider) } func (h *ProvidersHandler) handleGetProvider(w http.ResponseWriter, r *http.Request) { @@ -417,7 +422,8 @@ func (h *ProvidersHandler) handleGetProvider(w http.ResponseWriter, r *http.Requ } maskAPIKey(p) - writeJSON(w, http.StatusOK, p) + publicProvider := canonicalizeProviderForResponse(p) + writeJSON(w, http.StatusOK, publicProvider) } func (h *ProvidersHandler) handleUpdateProvider(w http.ResponseWriter, r *http.Request) { diff --git a/internal/http/providers_codex_pool_activity.go b/internal/http/providers_codex_pool_activity.go index 8e9c5fdc..25d51695 100644 --- a/internal/http/providers_codex_pool_activity.go +++ b/internal/http/providers_codex_pool_activity.go @@ -53,7 +53,7 @@ func (h *ProvidersHandler) handleProviderCodexPoolActivity(w http.ResponseWriter const maxPoolCandidates = 20 settings := store.ParseChatGPTOAuthProviderSettings(provider.Settings) poolCandidates := []string{provider.Name} - strategy := store.ChatGPTOAuthStrategyPrimaryFirst + strategy := store.ChatGPTOAuthStrategyPriority if settings != nil && settings.CodexPool != nil { if settings.CodexPool.Strategy != "" { strategy = settings.CodexPool.Strategy @@ -125,7 +125,7 @@ func (h *ProvidersHandler) handleProviderCodexPoolActivity(w http.ResponseWriter func emptyProviderPoolActivityResponse() map[string]any { return map[string]any{ - "strategy": store.ChatGPTOAuthStrategyPrimaryFirst, + "strategy": store.ChatGPTOAuthStrategyPriority, "pool_providers": []string{}, "stats_sample_size": 0, "provider_counts": []codexPoolProviderCount{}, diff --git a/internal/http/providers_codex_pool_activity_test.go b/internal/http/providers_codex_pool_activity_test.go new file mode 100644 index 00000000..12f3af1b --- /dev/null +++ b/internal/http/providers_codex_pool_activity_test.go @@ -0,0 +1,60 @@ +package http + +import ( + "encoding/json" + "reflect" + "testing" + + "github.com/nextlevelbuilder/goclaw/internal/store" +) + +func TestEmptyProviderPoolActivityResponseDefaultsToPriorityOrder(t *testing.T) { + got := emptyProviderPoolActivityResponse() + + if got["strategy"] != store.ChatGPTOAuthStrategyPriority { + t.Fatalf("strategy = %v, want %q", got["strategy"], store.ChatGPTOAuthStrategyPriority) + } +} + +func TestCanonicalizeChatGPTOAuthRoutingForResponseMigratesLegacyStrategy(t *testing.T) { + got := canonicalizeChatGPTOAuthRoutingForResponse(json.RawMessage(`{ + "override_mode": "custom", + "strategy": "manual", + "extra_provider_names": [] + }`)) + + var routing map[string]any + if err := json.Unmarshal(got, &routing); err != nil { + t.Fatalf("Unmarshal() error = %v", err) + } + if routing["strategy"] != store.ChatGPTOAuthStrategyPriority { + t.Fatalf("strategy = %v, want %q", routing["strategy"], store.ChatGPTOAuthStrategyPriority) + } +} + +func TestCanonicalizeProviderSettingsForResponseMigratesLegacyPoolStrategy(t *testing.T) { + got := canonicalizeProviderSettingsForResponse(json.RawMessage(`{ + "codex_pool": { + "strategy": "primary_first", + "extra_provider_names": ["codex-work"] + }, + "embedding": { + "enabled": true + } + }`)) + + var settings map[string]any + if err := json.Unmarshal(got, &settings); err != nil { + t.Fatalf("Unmarshal() error = %v", err) + } + pool, ok := settings["codex_pool"].(map[string]any) + if !ok { + t.Fatalf("codex_pool = %#v, want object", settings["codex_pool"]) + } + if pool["strategy"] != store.ChatGPTOAuthStrategyPriority { + t.Fatalf("strategy = %v, want %q", pool["strategy"], store.ChatGPTOAuthStrategyPriority) + } + if !reflect.DeepEqual(pool["extra_provider_names"], []any{"codex-work"}) { + t.Fatalf("extra_provider_names = %#v, want %#v", pool["extra_provider_names"], []any{"codex-work"}) + } +} diff --git a/internal/permissions/policy_test.go b/internal/permissions/policy_test.go index df5d1e45..03d84592 100644 --- a/internal/permissions/policy_test.go +++ b/internal/permissions/policy_test.go @@ -125,6 +125,7 @@ func TestCanAccess_WriteMethods(t *testing.T) { writeMethods := []string{ protocol.MethodChatSend, protocol.MethodSessionsDelete, + protocol.MethodSessionsCompact, protocol.MethodCronCreate, } for _, method := range writeMethods { diff --git a/internal/pipeline/context_stage_integration_test.go b/internal/pipeline/context_stage_integration_test.go index 8b3c60ef..fe55cfde 100644 --- a/internal/pipeline/context_stage_integration_test.go +++ b/internal/pipeline/context_stage_integration_test.go @@ -39,7 +39,7 @@ func buildRealisticToolDefinitions(n int) []providers.ToolDefinition { } tools[i] = providers.ToolDefinition{ Type: "function", - Function: providers.ToolFunctionSchema{ + Function: &providers.ToolFunctionSchema{ Name: "realistic_tool", Description: strings.Repeat( "A realistic tool that performs complex file and system operations. "+ diff --git a/internal/pipeline/context_stage_overhead_test.go b/internal/pipeline/context_stage_overhead_test.go index 1faa5baf..90f5d4fd 100644 --- a/internal/pipeline/context_stage_overhead_test.go +++ b/internal/pipeline/context_stage_overhead_test.go @@ -35,7 +35,7 @@ func fixtureTools(n int) []providers.ToolDefinition { for i := range tools { tools[i] = providers.ToolDefinition{ Type: "function", - Function: providers.ToolFunctionSchema{ + Function: &providers.ToolFunctionSchema{ Name: "tool_fixture", Description: "A fixture tool for testing overhead calculation.", Parameters: map[string]any{"type": "object", "properties": map[string]any{}}, diff --git a/internal/providerresolve/agent_provider.go b/internal/providerresolve/agent_provider.go index 537e6744..9b3e55aa 100644 --- a/internal/providerresolve/agent_provider.go +++ b/internal/providerresolve/agent_provider.go @@ -8,7 +8,7 @@ import ( ) // ResolveConfiguredProvider resolves the provider an agent should actually use. -// It applies ChatGPT OAuth routing from agent other_config when present. +// It applies ChatGPT OAuth routing from the promoted agent routing field when present. func ResolveConfiguredProvider(registry *providers.Registry, agent *store.AgentData) (providers.Provider, error) { if registry == nil || agent == nil { return nil, fmt.Errorf("provider registry unavailable") @@ -31,17 +31,15 @@ func ResolveConfiguredProvider(registry *providers.Registry, agent *store.AgentD } } if routing := store.ResolveEffectiveChatGPTOAuthRouting(providerDefaults, agent.ParseChatGPTOAuthRouting()); routing != nil { - if routing.Strategy != store.ChatGPTOAuthStrategyPrimaryFirst || len(routing.ExtraProviderNames) > 0 { - router := providers.NewChatGPTOAuthRouter( - agent.TenantID, - registry, - agent.Provider, - routing.Strategy, - routing.ExtraProviderNames, - ) - if router != nil && router.HasRegisteredProviders() { - return router, nil - } + router := providers.NewChatGPTOAuthRouter( + agent.TenantID, + registry, + agent.Provider, + routing.Strategy, + routing.ExtraProviderNames, + ) + if router != nil && router.HasRegisteredProviders() { + return router, nil } } diff --git a/internal/providerresolve/agent_provider_test.go b/internal/providerresolve/agent_provider_test.go index fa794a2b..cbb08c9e 100644 --- a/internal/providerresolve/agent_provider_test.go +++ b/internal/providerresolve/agent_provider_test.go @@ -172,11 +172,12 @@ func TestResolveConfiguredProviderKeepsExplicitSingleAccountOverride(t *testing. if err != nil { t.Fatalf("ResolveConfiguredProvider() error = %v", err) } - if _, ok := resolved.(*providers.ChatGPTOAuthRouter); ok { - t.Fatalf("ResolveConfiguredProvider() returned %T, want base Codex provider", resolved) + router, ok := resolved.(*providers.ChatGPTOAuthRouter) + if !ok { + t.Fatalf("ResolveConfiguredProvider() returned %T, want *providers.ChatGPTOAuthRouter", resolved) } - if resolved.Name() != "openai-codex" { - t.Fatalf("resolved.Name() = %q, want %q", resolved.Name(), "openai-codex") + if router.Name() != "openai-codex" { + t.Fatalf("router.Name() = %q, want %q", router.Name(), "openai-codex") } } diff --git a/internal/providers/chatgpt_oauth_router_image.go b/internal/providers/chatgpt_oauth_router_image.go new file mode 100644 index 00000000..c8bd1872 --- /dev/null +++ b/internal/providers/chatgpt_oauth_router_image.go @@ -0,0 +1,90 @@ +package providers + +import ( + "context" + "fmt" + "log/slog" + "strings" +) + +// compile-time assertion: ChatGPTOAuthRouter satisfies NativeImageProvider. +var _ NativeImageProvider = (*ChatGPTOAuthRouter)(nil) + +// GenerateImage implements NativeImageProvider for ChatGPTOAuthRouter. +// It iterates the strategy-ordered pool members, delegating to each member's +// GenerateImage in turn. Failover semantics mirror the Chat/call() path: +// - retryable error (IsRetryableError) → try next member +// - non-retryable error → return immediately +// - all members exhausted → return aggregated error naming every attempted member +// +// Round-robin state advances once per GenerateImage call (via orderedProviders +// advance=true), regardless of which member ultimately serves the response. +// This matches the Chat path semantics documented on call(). +func (p *ChatGPTOAuthRouter) GenerateImage(ctx context.Context, req NativeImageRequest) (*NativeImageResult, error) { + ordered, err := p.orderedProviders(ctx, true) + if err != nil { + return nil, err + } + + if observation := ChatGPTOAuthRoutingObservationFromContext(ctx); observation != nil { + poolProviders := make([]string, 0, len(p.registeredProviders())) + for _, provider := range p.registeredProviders() { + poolProviders = append(poolProviders, provider.Name()) + } + observation.SetPool(p.defaultProviderName, p.strategy, poolProviders) + } + + attempted := make([]string, 0, len(ordered)) + var lastErr error + + for i, provider := range ordered { + // Check context before attempting each member so a pre-cancelled ctx is + // caught even when orderedProviders returns without error. + if ctx.Err() != nil { + return nil, ctx.Err() + } + + np, ok := provider.(NativeImageProvider) + if !ok { + slog.Warn("chatgpt_oauth router image: member has no native image support, skipping", + "provider", provider.Name(), + ) + lastErr = fmt.Errorf("member %s has no native image support", provider.Name()) + attempted = append(attempted, provider.Name()) + continue + } + + if observation := ChatGPTOAuthRoutingObservationFromContext(ctx); observation != nil { + observation.RecordAttempt(provider.Name()) + } + + attempted = append(attempted, provider.Name()) + res, callErr := np.GenerateImage(ctx, req) + if callErr == nil { + if observation := ChatGPTOAuthRoutingObservationFromContext(ctx); observation != nil { + observation.RecordSuccess(provider.Name()) + } + return res, nil + } + + lastErr = callErr + + // Non-retryable error: surface immediately without trying further members. + if !IsRetryableError(callErr) { + return nil, callErr + } + + // Retryable: log and continue to the next member if one exists. + if i < len(ordered)-1 { + slog.Warn("chatgpt_oauth router image failover", + "from", provider.Name(), + "to", ordered[i+1].Name(), + "error", callErr, + ) + } + } + + // All members exhausted (or none implemented NativeImageProvider). + return nil, fmt.Errorf("all pool members failed image generation (%s): %w", + strings.Join(attempted, ", "), lastErr) +} diff --git a/internal/providers/chatgpt_oauth_router_image_test.go b/internal/providers/chatgpt_oauth_router_image_test.go new file mode 100644 index 00000000..88641ae8 --- /dev/null +++ b/internal/providers/chatgpt_oauth_router_image_test.go @@ -0,0 +1,242 @@ +package providers + +import ( + "context" + "errors" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/google/uuid" +) + +// imageSSEResponse builds a minimal SSE body that parseNativeImageSSE will accept. +// b64data is base64-encoded image bytes (any non-empty string works for routing tests). +func imageSSEResponse(b64data string) string { + return `data: {"type":"response.output_item.done","item":{"type":"image_generation_call","result":"` + + b64data + `","output_format":"png"}}` + "\n\ndata: [DONE]\n" +} + +// imageTestServer returns a test HTTP server that responds with a successful image SSE body. +// body is called on each request so callers can count hits via a closure. +func imageTestServer(t *testing.T, body func() string) *httptest.Server { + t.Helper() + s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "text/event-stream") + w.WriteHeader(http.StatusOK) + _, _ = w.Write([]byte(body())) + })) + t.Cleanup(s.Close) + return s +} + +// retryableImageTestServer returns a test HTTP server that always responds HTTP 429. +func retryableImageTestServer(t *testing.T) *httptest.Server { + t.Helper() + s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + http.Error(w, "rate limited", http.StatusTooManyRequests) + })) + t.Cleanup(s.Close) + return s +} + +// badRequestImageTestServer returns a test HTTP server that always responds HTTP 400 (non-retryable). +func badRequestImageTestServer(t *testing.T) *httptest.Server { + t.Helper() + s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + http.Error(w, "bad request", http.StatusBadRequest) + })) + t.Cleanup(s.Close) + return s +} + +// newImageCodexProvider creates a *CodexProvider with retries disabled, pointing at apiBase. +func newImageCodexProvider(name, apiBase string) *CodexProvider { + p := NewCodexProvider(name, &staticTokenSource{token: "token-" + name}, apiBase, "gpt-5.4") + p.retryConfig.Attempts = 1 // disable internal retries so router failover logic is exercised + return p +} + +// imageReq is a minimal valid NativeImageRequest used across image router tests. +var imageReq = NativeImageRequest{Prompt: "a cat", ImageModel: "gpt-image-2"} + +// b64img is a non-empty base64 string used as placeholder image data in test SSE responses. +const b64img = "aW1hZ2VkYXRh" // "imagedata" — not a valid PNG, but parseNativeImageSSE accepts any non-empty b64 + +// TestChatGPTOAuthRouterImage_RoundRobin_RotatesAcrossCalls verifies that 2 successive +// GenerateImage calls each hit a different pool member (round-robin distribution). +func TestChatGPTOAuthRouterImage_RoundRobin_RotatesAcrossCalls(t *testing.T) { + tenantID := uuid.New() + registry := NewRegistry(nil) + + var hitsA, hitsB int + serverA := imageTestServer(t, func() string { hitsA++; return imageSSEResponse(b64img) }) + serverB := imageTestServer(t, func() string { hitsB++; return imageSSEResponse(b64img) }) + + registry.RegisterForTenant(tenantID, newImageCodexProvider("acct-a", serverA.URL)) + registry.RegisterForTenant(tenantID, newImageCodexProvider("acct-b", serverB.URL)) + + router := NewChatGPTOAuthRouter(tenantID, registry, "acct-a", "round_robin", []string{"acct-b"}) + + for i := range 2 { + if _, err := router.GenerateImage(context.Background(), imageReq); err != nil { + t.Fatalf("call %d: GenerateImage failed: %v", i, err) + } + } + if hitsA != 1 { + t.Fatalf("hitsA = %d, want 1", hitsA) + } + if hitsB != 1 { + t.Fatalf("hitsB = %d, want 1", hitsB) + } +} + +// TestChatGPTOAuthRouterImage_FirstRetryable_SecondSucceeds verifies that when member A +// returns HTTP 429 (retryable), the router fails over to member B and returns its result. +func TestChatGPTOAuthRouterImage_FirstRetryable_SecondSucceeds(t *testing.T) { + tenantID := uuid.New() + registry := NewRegistry(nil) + + serverA := retryableImageTestServer(t) + serverB := imageTestServer(t, func() string { return imageSSEResponse(b64img) }) + + registry.RegisterForTenant(tenantID, newImageCodexProvider("acct-a", serverA.URL)) + registry.RegisterForTenant(tenantID, newImageCodexProvider("acct-b", serverB.URL)) + + router := NewChatGPTOAuthRouter(tenantID, registry, "acct-a", "round_robin", []string{"acct-b"}) + + result, err := router.GenerateImage(context.Background(), imageReq) + if err != nil { + t.Fatalf("GenerateImage failed: %v", err) + } + if len(result.Data) == 0 { + t.Fatal("result.Data is empty — expected image bytes from member B") + } +} + +// TestChatGPTOAuthRouterImage_PriorityOrder_FirstFails_SecondSucceeds verifies failover +// under the priority_order strategy: A returns HTTP 429, B succeeds. +func TestChatGPTOAuthRouterImage_PriorityOrder_FirstFails_SecondSucceeds(t *testing.T) { + tenantID := uuid.New() + registry := NewRegistry(nil) + + serverA := retryableImageTestServer(t) + serverB := imageTestServer(t, func() string { return imageSSEResponse(b64img) }) + + registry.RegisterForTenant(tenantID, newImageCodexProvider("acct-a", serverA.URL)) + registry.RegisterForTenant(tenantID, newImageCodexProvider("acct-b", serverB.URL)) + + router := NewChatGPTOAuthRouter(tenantID, registry, "acct-a", "priority_order", []string{"acct-b"}) + + result, err := router.GenerateImage(context.Background(), imageReq) + if err != nil { + t.Fatalf("GenerateImage (priority_order) failed: %v", err) + } + if len(result.Data) == 0 { + t.Fatal("result.Data is empty") + } +} + +// TestChatGPTOAuthRouterImage_NonRetryable_ReturnsImmediately verifies that HTTP 400 +// (non-retryable) is returned immediately without attempting member B. +func TestChatGPTOAuthRouterImage_NonRetryable_ReturnsImmediately(t *testing.T) { + tenantID := uuid.New() + registry := NewRegistry(nil) + + var hitsB int + serverA := badRequestImageTestServer(t) + serverB := imageTestServer(t, func() string { hitsB++; return imageSSEResponse(b64img) }) + + registry.RegisterForTenant(tenantID, newImageCodexProvider("acct-a", serverA.URL)) + registry.RegisterForTenant(tenantID, newImageCodexProvider("acct-b", serverB.URL)) + + router := NewChatGPTOAuthRouter(tenantID, registry, "acct-a", "round_robin", []string{"acct-b"}) + + _, err := router.GenerateImage(context.Background(), imageReq) + if err == nil { + t.Fatal("GenerateImage should have failed on non-retryable HTTP 400") + } + if hitsB != 0 { + t.Fatalf("hitsB = %d, want 0 (B must not be attempted after non-retryable error)", hitsB) + } +} + +// TestChatGPTOAuthRouterImage_AllFail_AggregatedError verifies that when all 3 members +// return retryable errors, the returned error message mentions all member names. +func TestChatGPTOAuthRouterImage_AllFail_AggregatedError(t *testing.T) { + tenantID := uuid.New() + registry := NewRegistry(nil) + + for _, name := range []string{"acct-a", "acct-b", "acct-c"} { + s := retryableImageTestServer(t) + registry.RegisterForTenant(tenantID, newImageCodexProvider(name, s.URL)) + } + + router := NewChatGPTOAuthRouter(tenantID, registry, "acct-a", "priority_order", []string{"acct-b", "acct-c"}) + + _, err := router.GenerateImage(context.Background(), imageReq) + if err == nil { + t.Fatal("GenerateImage should fail when all members fail") + } + errStr := err.Error() + for _, name := range []string{"acct-a", "acct-b", "acct-c"} { + if !strings.Contains(errStr, name) { + t.Fatalf("error %q does not mention member %q", errStr, name) + } + } +} + +// TestChatGPTOAuthRouterImage_ContextCancel_Aborts verifies that a pre-cancelled context +// causes GenerateImage to return a context-derived error. +func TestChatGPTOAuthRouterImage_ContextCancel_Aborts(t *testing.T) { + tenantID := uuid.New() + registry := NewRegistry(nil) + + // retryable server so the router would attempt failover — but context cancels first + serverA := retryableImageTestServer(t) + registry.RegisterForTenant(tenantID, newImageCodexProvider("acct-a", serverA.URL)) + + router := NewChatGPTOAuthRouter(tenantID, registry, "acct-a", "round_robin", nil) + + ctx, cancel := context.WithCancel(context.Background()) + cancel() // cancel before the call + + _, err := router.GenerateImage(ctx, imageReq) + if err == nil { + t.Fatal("GenerateImage should fail with cancelled context") + } + if !errors.Is(err, context.Canceled) && !strings.Contains(err.Error(), "context canceled") { + t.Fatalf("expected context cancellation error, got: %v", err) + } +} + +// TestChatGPTOAuthRouterImage_RoundRobinAdvancesPerCall verifies that the round-robin +// counter advances once per GenerateImage call (not per member tried), matching Chat semantics. +// With 2 members: call 1 → A, call 2 → B, call 3 → A again. +func TestChatGPTOAuthRouterImage_RoundRobinAdvancesPerCall(t *testing.T) { + tenantID := uuid.New() + registry := NewRegistry(nil) + + var hitsA, hitsB int + serverA := imageTestServer(t, func() string { hitsA++; return imageSSEResponse(b64img) }) + serverB := imageTestServer(t, func() string { hitsB++; return imageSSEResponse(b64img) }) + + registry.RegisterForTenant(tenantID, newImageCodexProvider("acct-a", serverA.URL)) + registry.RegisterForTenant(tenantID, newImageCodexProvider("acct-b", serverB.URL)) + + router := NewChatGPTOAuthRouter(tenantID, registry, "acct-a", "round_robin", []string{"acct-b"}) + + for i := range 3 { + if _, err := router.GenerateImage(context.Background(), imageReq); err != nil { + t.Fatalf("call %d: GenerateImage failed: %v", i, err) + } + } + // A: calls 1 and 3; B: call 2 + if hitsA != 2 { + t.Fatalf("hitsA = %d, want 2", hitsA) + } + if hitsB != 1 { + t.Fatalf("hitsB = %d, want 1", hitsB) + } +} diff --git a/internal/providers/chatgpt_oauth_router_provider_type.go b/internal/providers/chatgpt_oauth_router_provider_type.go new file mode 100644 index 00000000..14806f72 --- /dev/null +++ b/internal/providers/chatgpt_oauth_router_provider_type.go @@ -0,0 +1,9 @@ +package providers + +// ProviderType implements typedProvider for ChatGPTOAuthRouter. +// Returns "chatgpt_oauth" for log/type-routing purposes. +// Image gen path in create_image.go short-circuits on _native_provider type-assert +// before reading _provider_type, so this is cosmetic for image generation. +func (p *ChatGPTOAuthRouter) ProviderType() string { + return "chatgpt_oauth" +} diff --git a/internal/providers/codex.go b/internal/providers/codex.go index 3ed3a8d2..c5626093 100644 --- a/internal/providers/codex.go +++ b/internal/providers/codex.go @@ -56,6 +56,14 @@ func (p *CodexProvider) WithMiddlewares(mws ...RequestMiddleware) *CodexProvider return p } +// WithRetryConfig overrides the default per-provider retry config. Useful for +// tests and for callers that manage retry semantics at a higher layer (e.g. +// the pool router fails over on single-attempt member errors). +func (p *CodexProvider) WithRetryConfig(rc RetryConfig) *CodexProvider { + p.retryConfig = rc + return p +} + func (p *CodexProvider) Name() string { return p.name } func (p *CodexProvider) DefaultModel() string { return p.defaultModel } func (p *CodexProvider) SupportsThinking() bool { return true } diff --git a/internal/providers/providertest/codex.go b/internal/providers/providertest/codex.go new file mode 100644 index 00000000..6a8a5fd1 --- /dev/null +++ b/internal/providers/providertest/codex.go @@ -0,0 +1,22 @@ +// Package providertest exposes constructors for provider types wired for +// fast, deterministic test runs. Not intended for production use. +package providertest + +import "github.com/nextlevelbuilder/goclaw/internal/providers" + +// staticTokenSource always returns a fixed token. +type staticTokenSource struct{ token string } + +func (s *staticTokenSource) Token() (string, error) { return s.token, nil } + +// NewCodexProviderFast returns a *providers.CodexProvider with Attempts=1 so +// that tests exercising router-level failover don't incur the default 3-attempt +// retry latency. +func NewCodexProviderFast(name, apiBase string) *providers.CodexProvider { + return providers.NewCodexProvider( + name, + &staticTokenSource{token: "tok-" + name}, + apiBase, + "gpt-image-2", + ).WithRetryConfig(providers.RetryConfig{Attempts: 1}) +} diff --git a/internal/store/agent_store.go b/internal/store/agent_store.go index 0103a149..8590d2e4 100644 --- a/internal/store/agent_store.go +++ b/internal/store/agent_store.go @@ -3,6 +3,7 @@ package store import ( "context" "encoding/json" + "slices" "strings" "github.com/google/uuid" @@ -343,10 +344,10 @@ type WorkspaceSharingConfig struct { } const ( - ReasoningSourceUnset = "unset" - ReasoningSourceLegacy = "thinking_level" - ReasoningSourceAdvanced = "reasoning" - ReasoningSourceProviderDefault = "provider_default" + ReasoningSourceUnset = "unset" + ReasoningSourceLegacy = "thinking_level" + ReasoningSourceAdvanced = "reasoning" + ReasoningSourceProviderDefault = "provider_default" // Reasoning fallback constants — canonical definitions in providers package. ReasoningFallbackDowngrade = providers.ReasoningFallbackDowngrade ReasoningFallbackDisable = providers.ReasoningFallbackDisable @@ -457,12 +458,19 @@ func (a *AgentData) ParseChatGPTOAuthRouting() *ChatGPTOAuthRoutingConfig { if explicitOverrideMode { overrideMode = normalizeChatGPTOAuthOverrideMode(raw.OverrideMode) } + extraProviderNames := normalizeProviderNames(raw.ExtraProviderNames) + if explicitExtras && extraProviderNames == nil { + extraProviderNames = []string{} + } return &ChatGPTOAuthRoutingConfig{ OverrideMode: overrideMode, Strategy: normalizeChatGPTOAuthStrategy(raw.Strategy), - ExtraProviderNames: normalizeProviderNames(raw.ExtraProviderNames), + ExtraProviderNames: extraProviderNames, } } + if explicitExtras && routing.ExtraProviderNames == nil { + routing.ExtraProviderNames = []string{} + } if explicitOverrideMode { return routing } @@ -471,7 +479,7 @@ func (a *AgentData) ParseChatGPTOAuthRouting() *ChatGPTOAuthRoutingConfig { return routing } routing.OverrideMode = "" - if routing.Strategy == ChatGPTOAuthStrategyPrimaryFirst && len(routing.ExtraProviderNames) == 0 { + if routing.Strategy == ChatGPTOAuthStrategyPriority && len(routing.ExtraProviderNames) == 0 { return nil } return routing @@ -486,7 +494,10 @@ func normalizeChatGPTOAuthRoutingConfig(cfg *ChatGPTOAuthRoutingConfig) *ChatGPT Strategy: normalizeChatGPTOAuthStrategy(cfg.Strategy), ExtraProviderNames: normalizeProviderNames(cfg.ExtraProviderNames), } - if routing.OverrideMode == "" && routing.Strategy == ChatGPTOAuthStrategyPrimaryFirst && len(routing.ExtraProviderNames) == 0 { + if cfg.ExtraProviderNames != nil && routing.ExtraProviderNames == nil { + routing.ExtraProviderNames = []string{} + } + if routing.OverrideMode == "" && routing.Strategy == ChatGPTOAuthStrategyPriority && len(routing.ExtraProviderNames) == 0 { return nil } return routing @@ -514,12 +525,28 @@ func normalizeChatGPTOAuthStrategy(value string) string { } } +func PublicChatGPTOAuthStrategy(value string) string { + if value == ChatGPTOAuthStrategyRoundRobin { + return ChatGPTOAuthStrategyRoundRobin + } + return ChatGPTOAuthStrategyPriority +} + +func PublicChatGPTOAuthRouting(cfg *ChatGPTOAuthRoutingConfig) *ChatGPTOAuthRoutingConfig { + if cfg == nil { + return nil + } + clone := CloneChatGPTOAuthRoutingConfig(cfg) + clone.Strategy = PublicChatGPTOAuthStrategy(clone.Strategy) + return clone +} + func CloneChatGPTOAuthRoutingConfig(cfg *ChatGPTOAuthRoutingConfig) *ChatGPTOAuthRoutingConfig { if cfg == nil { return nil } clone := *cfg - clone.ExtraProviderNames = append([]string(nil), cfg.ExtraProviderNames...) + clone.ExtraProviderNames = slices.Clone(cfg.ExtraProviderNames) return &clone } @@ -538,14 +565,15 @@ func ResolveEffectiveChatGPTOAuthRouting(defaults, agentRouting *ChatGPTOAuthRou } effective.OverrideMode = "" if normalizedDefaults != nil && len(normalizedDefaults.ExtraProviderNames) > 0 { - if effective.Strategy == ChatGPTOAuthStrategyPrimaryFirst && - len(normalizedAgent.ExtraProviderNames) == 0 { - effective.ExtraProviderNames = nil + if normalizedAgent.ExtraProviderNames != nil && + len(normalizedAgent.ExtraProviderNames) == 0 && + effective.Strategy != ChatGPTOAuthStrategyRoundRobin { + effective.ExtraProviderNames = slices.Clone(normalizedAgent.ExtraProviderNames) } else { - effective.ExtraProviderNames = append([]string(nil), normalizedDefaults.ExtraProviderNames...) + effective.ExtraProviderNames = slices.Clone(normalizedDefaults.ExtraProviderNames) } } - if effective.Strategy == ChatGPTOAuthStrategyPrimaryFirst && + if effective.Strategy == ChatGPTOAuthStrategyPriority && len(effective.ExtraProviderNames) == 0 && normalizedAgent.OverrideMode != ChatGPTOAuthOverrideCustom { return nil diff --git a/internal/store/agent_store_test.go b/internal/store/agent_store_test.go index 0a820366..4a143e1e 100644 --- a/internal/store/agent_store_test.go +++ b/internal/store/agent_store_test.go @@ -179,24 +179,39 @@ func TestParseChatGPTOAuthRoutingNormalizesNames(t *testing.T) { } } -func TestParseChatGPTOAuthRoutingFallsBackToManual(t *testing.T) { - agent := &AgentData{ - ChatGPTOAuthRouting: json.RawMessage(`{ - "strategy": "something_else", - "extra_provider_names": ["openai-codex-backup"] - }`), - } +func TestPublicChatGPTOAuthRoutingMigratesLegacyStrategiesToPriorityOrder(t *testing.T) { + for _, tc := range []struct { + name string + strategy string + }{ + {name: "unknown", strategy: "something_else"}, + {name: "manual", strategy: "manual"}, + {name: "primary_first", strategy: "primary_first"}, + } { + t.Run(tc.name, func(t *testing.T) { + agent := &AgentData{ + ChatGPTOAuthRouting: json.RawMessage(`{ + "strategy": "` + tc.strategy + `", + "extra_provider_names": ["openai-codex-backup"] + }`), + } - got := agent.ParseChatGPTOAuthRouting() - if got == nil { - t.Fatal("ParseChatGPTOAuthRouting() = nil, want config") - } - if got.Strategy != ChatGPTOAuthStrategyPrimaryFirst { - t.Fatalf("Strategy = %q, want %q", got.Strategy, ChatGPTOAuthStrategyPrimaryFirst) + got := agent.ParseChatGPTOAuthRouting() + if got == nil { + t.Fatal("ParseChatGPTOAuthRouting() = nil, want config") + } + public := PublicChatGPTOAuthRouting(got) + if public == nil { + t.Fatal("PublicChatGPTOAuthRouting() = nil, want config") + } + if public.Strategy != ChatGPTOAuthStrategyPriority { + t.Fatalf("Strategy = %q, want %q", public.Strategy, ChatGPTOAuthStrategyPriority) + } + }) } } -func TestParseChatGPTOAuthRoutingManualWithoutExtrasPreservesExplicitSingleAccount(t *testing.T) { +func TestPublicChatGPTOAuthRoutingCanonicalizesSingleAccountOverrideToPriorityOrder(t *testing.T) { agent := &AgentData{ ChatGPTOAuthRouting: json.RawMessage(`{ "strategy": "manual", @@ -211,8 +226,15 @@ func TestParseChatGPTOAuthRoutingManualWithoutExtrasPreservesExplicitSingleAccou if got.OverrideMode != ChatGPTOAuthOverrideCustom { t.Fatalf("OverrideMode = %q, want %q", got.OverrideMode, ChatGPTOAuthOverrideCustom) } - if got.Strategy != ChatGPTOAuthStrategyPrimaryFirst { - t.Fatalf("Strategy = %q, want %q", got.Strategy, ChatGPTOAuthStrategyPrimaryFirst) + public := PublicChatGPTOAuthRouting(got) + if public == nil { + t.Fatal("PublicChatGPTOAuthRouting() = nil, want config") + } + if public.Strategy != ChatGPTOAuthStrategyPriority { + t.Fatalf("Strategy = %q, want %q", public.Strategy, ChatGPTOAuthStrategyPriority) + } + if got.ExtraProviderNames == nil { + t.Fatal("ExtraProviderNames = nil, want explicit empty slice preserved") } } @@ -230,8 +252,12 @@ func TestParseChatGPTOAuthRoutingPreservesExplicitInheritMode(t *testing.T) { if got.OverrideMode != ChatGPTOAuthOverrideInherit { t.Fatalf("OverrideMode = %q, want %q", got.OverrideMode, ChatGPTOAuthOverrideInherit) } - if got.Strategy != ChatGPTOAuthStrategyPrimaryFirst { - t.Fatalf("Strategy = %q, want %q", got.Strategy, ChatGPTOAuthStrategyPrimaryFirst) + public := PublicChatGPTOAuthRouting(got) + if public == nil { + t.Fatal("PublicChatGPTOAuthRouting() = nil, want config") + } + if public.Strategy != ChatGPTOAuthStrategyPriority { + t.Fatalf("Strategy = %q, want %q", public.Strategy, ChatGPTOAuthStrategyPriority) } } @@ -291,22 +317,43 @@ func TestResolveEffectiveChatGPTOAuthRoutingAllowsCustomSingleAccountToDisableDe ExtraProviderNames: []string{"codex-work"}, } override := &ChatGPTOAuthRoutingConfig{ - OverrideMode: ChatGPTOAuthOverrideCustom, - Strategy: ChatGPTOAuthStrategyPrimaryFirst, + OverrideMode: ChatGPTOAuthOverrideCustom, + Strategy: ChatGPTOAuthStrategyPriority, + ExtraProviderNames: []string{}, } got := ResolveEffectiveChatGPTOAuthRouting(defaults, override) if got == nil { t.Fatal("ResolveEffectiveChatGPTOAuthRouting() = nil, want config") } - if got.Strategy != ChatGPTOAuthStrategyPrimaryFirst { - t.Fatalf("Strategy = %q, want %q", got.Strategy, ChatGPTOAuthStrategyPrimaryFirst) + if got.Strategy != ChatGPTOAuthStrategyPriority { + t.Fatalf("Strategy = %q, want %q", got.Strategy, ChatGPTOAuthStrategyPriority) } if len(got.ExtraProviderNames) != 0 { t.Fatalf("ExtraProviderNames = %#v, want empty", got.ExtraProviderNames) } } +func TestResolveEffectiveChatGPTOAuthRoutingRoundRobinEmptyExtrasKeepsDefaults(t *testing.T) { + defaults := &ChatGPTOAuthRoutingConfig{ + Strategy: ChatGPTOAuthStrategyRoundRobin, + ExtraProviderNames: []string{"codex-work"}, + } + override := &ChatGPTOAuthRoutingConfig{ + OverrideMode: ChatGPTOAuthOverrideCustom, + Strategy: ChatGPTOAuthStrategyRoundRobin, + ExtraProviderNames: []string{}, + } + + got := ResolveEffectiveChatGPTOAuthRouting(defaults, override) + if got == nil { + t.Fatal("ResolveEffectiveChatGPTOAuthRouting() = nil, want config") + } + if !reflect.DeepEqual(got.ExtraProviderNames, defaults.ExtraProviderNames) { + t.Fatalf("ExtraProviderNames = %#v, want %#v", got.ExtraProviderNames, defaults.ExtraProviderNames) + } +} + func TestResolveEffectiveChatGPTOAuthRoutingKeepsProviderOwnedMembersForStrategyOverride(t *testing.T) { defaults := &ChatGPTOAuthRoutingConfig{ Strategy: ChatGPTOAuthStrategyRoundRobin, diff --git a/internal/tokencount/count_tool_schemas_test.go b/internal/tokencount/count_tool_schemas_test.go index 50224a9e..34605c9e 100644 --- a/internal/tokencount/count_tool_schemas_test.go +++ b/internal/tokencount/count_tool_schemas_test.go @@ -13,7 +13,7 @@ const testModel = "claude-sonnet-4-5-20250929" func smallTool() providers.ToolDefinition { return providers.ToolDefinition{ Type: "function", - Function: providers.ToolFunctionSchema{ + Function: &providers.ToolFunctionSchema{ Name: "get_time", Description: "Returns the current UTC time.", Parameters: map[string]any{"type": "object", "properties": map[string]any{}}, @@ -25,7 +25,7 @@ func smallTool() providers.ToolDefinition { func largeTool(name string) providers.ToolDefinition { return providers.ToolDefinition{ Type: "function", - Function: providers.ToolFunctionSchema{ + Function: &providers.ToolFunctionSchema{ Name: name, Description: "Reads, writes, and appends content to files in the workspace. " + "Supports binary and text modes. Path must be relative to the active workspace root. " + diff --git a/internal/tools/create_image_pool_chain_test.go b/internal/tools/create_image_pool_chain_test.go new file mode 100644 index 00000000..b01b417f --- /dev/null +++ b/internal/tools/create_image_pool_chain_test.go @@ -0,0 +1,321 @@ +package tools + +// Integration tests for pool-failover-before-chain-fallthrough semantics in create_image. +// These tests exercise the full stack: ExecuteWithChain + wrapPoolProvider + +// CreateImageTool.callProvider, wired through a real ChatGPTOAuthRouter backed +// by mock HTTP servers. They prove the contract from issue #1008 is correct: +// pool member failover happens INSIDE the router before the outer chain advances. +// +// Not duplicated here (already covered at unit level): +// - internal/providers/chatgpt_oauth_router_image_test.go — router failover semantics +// - internal/tools/media_provider_chain_pool_test.go — wrapPoolProvider decisions + +import ( + "net/http" + "net/http/httptest" + "sync/atomic" + "testing" + + "github.com/google/uuid" + "github.com/nextlevelbuilder/goclaw/internal/providers" + "github.com/nextlevelbuilder/goclaw/internal/providers/providertest" + "github.com/nextlevelbuilder/goclaw/internal/store" +) + +// poolImageSSE returns a minimal SSE body that parseNativeImageSSE accepts. +func poolImageSSE(b64data string) string { + return `data: {"type":"response.output_item.done","item":{"type":"image_generation_call","result":"` + + b64data + `","output_format":"png"}}` + "\n\ndata: [DONE]\n" +} + +// poolSSEServer starts a test server that returns a successful image SSE on each request. +func poolSSEServer(t *testing.T, hits *atomic.Int32) *httptest.Server { + t.Helper() + s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + hits.Add(1) + w.Header().Set("Content-Type", "text/event-stream") + w.WriteHeader(http.StatusOK) + _, _ = w.Write([]byte(poolImageSSE("aW1hZ2VkYXRh"))) // "imagedata" base64 + })) + t.Cleanup(s.Close) + return s +} + +// pool429Server starts a test server that always returns HTTP 429 (retryable). +func pool429Server(t *testing.T, hits *atomic.Int32) *httptest.Server { + t.Helper() + s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + hits.Add(1) + http.Error(w, "rate limited", http.StatusTooManyRequests) + })) + t.Cleanup(s.Close) + return s +} + +// buildPoolChainRegistry creates a registry and registers each CodexProvider under +// both the master tenant (so ExecuteWithChain's Get resolves it) and the given +// tenantID (so ChatGPTOAuthRouter's GetForTenant resolves pool members). +func buildPoolChainRegistry(tenantID uuid.UUID, members ...*providers.CodexProvider) *providers.Registry { + reg := providers.NewRegistry(nil) + for _, p := range members { + reg.Register(p) // master tenant — found by ExecuteWithChain + reg.RegisterForTenant(tenantID, p) // tenant scope — found by router's GetForTenant + } + return reg +} + +// poolBaseChainEntry returns a chain entry pointing at baseProvider. +// Prompt injected via Params so callProvider can build NativeImageRequest. +func poolBaseChainEntry(baseProvider string) MediaProviderEntry { + return MediaProviderEntry{ + Provider: baseProvider, + Model: "gpt-image-2", + Enabled: true, + Timeout: 10, + MaxRetries: 1, + Params: map[string]any{ + "prompt": "integration test image", + "aspect_ratio": "1:1", + }, + } +} + +// fakeFallbackEntry returns a chain entry for a nativeImageProvider-backed fake +// (already defined in create_image_native_path_test.go in this package). +// Using a native fake avoids credential requirements for the fallback slot. +func fakeFallbackEntry(name string) MediaProviderEntry { + return MediaProviderEntry{ + Provider: name, + Model: "fake-model", + Enabled: true, + Timeout: 10, + MaxRetries: 1, + Params: map[string]any{ + "prompt": "integration test image", + "aspect_ratio": "1:1", + }, + } +} + +// --- Scenario 1 --- +// Chain: [Pool(A retryable, B success), Fallback] +// Expected: result from B; Fallback NOT called. +// Proves issue #1008 fix: pool failover is internal to the router, never leaks to outer chain. +func TestCreateImagePoolChain_PoolMemberFailover_FallbackNotCalled(t *testing.T) { + tenantID := uuid.New() + + var hitsA, hitsB atomic.Int32 + serverA := pool429Server(t, &hitsA) + serverB := poolSSEServer(t, &hitsB) + + baseA := providertest.NewCodexProviderFast("pool-a", serverA.URL) + memberB := providertest.NewCodexProviderFast("pool-b", serverB.URL) + baseA.WithRoutingDefaults("round_robin", []string{"pool-b"}) + + reg := buildPoolChainRegistry(tenantID, baseA, memberB) + + // Fallback fake — should NOT be called. + fallback := &nativeImageProvider{ + name: "fallback-fake", + model: "fake-model", + returnData: []byte("fallback-bytes"), + } + reg.Register(fallback) + + ctx := store.WithTenantID(t.Context(), tenantID) + ctx = WithToolWorkspace(ctx, t.TempDir()) + + chain := []MediaProviderEntry{ + poolBaseChainEntry("pool-a"), + fakeFallbackEntry("fallback-fake"), + } + + tool := NewCreateImageTool(reg) + result, err := ExecuteWithChain(ctx, chain, reg, tool.callProvider) + if err != nil { + t.Fatalf("ExecuteWithChain failed: %v", err) + } + if len(result.Data) == 0 { + t.Error("result.Data empty — expected image bytes from pool member B") + } + if hitsA.Load() == 0 { + t.Error("pool member A was never hit (expected 429)") + } + if hitsB.Load() == 0 { + t.Error("pool member B was never hit (expected success)") + } + // Core assertion from issue #1008: fallback must NOT have been called. + if fallback.calledWith != nil { + t.Errorf("fallback provider was called — pool failover to B should prevent chain fallthrough (issue #1008 regression)") + } +} + +// --- Scenario 2 --- +// Chain: [Pool(A fail, B fail), Fallback success] +// Expected: result from Fallback. +func TestCreateImagePoolChain_PoolExhausted_FallsThroughToFallback(t *testing.T) { + tenantID := uuid.New() + + var hitsA, hitsB atomic.Int32 + serverA := pool429Server(t, &hitsA) + serverB := pool429Server(t, &hitsB) + + baseA := providertest.NewCodexProviderFast("pool-a2", serverA.URL) + memberB := providertest.NewCodexProviderFast("pool-b2", serverB.URL) + baseA.WithRoutingDefaults("round_robin", []string{"pool-b2"}) + + reg := buildPoolChainRegistry(tenantID, baseA, memberB) + + fallback := &nativeImageProvider{ + name: "fallback-fake2", + model: "fake-model", + returnData: []byte("fallback-image-bytes"), + } + reg.Register(fallback) + + ctx := store.WithTenantID(t.Context(), tenantID) + ctx = WithToolWorkspace(ctx, t.TempDir()) + + chain := []MediaProviderEntry{ + poolBaseChainEntry("pool-a2"), + fakeFallbackEntry("fallback-fake2"), + } + + tool := NewCreateImageTool(reg) + result, err := ExecuteWithChain(ctx, chain, reg, tool.callProvider) + if err != nil { + t.Fatalf("ExecuteWithChain failed: %v — expected fallback to succeed", err) + } + if len(result.Data) == 0 { + t.Error("result.Data empty — expected bytes from fallback") + } + if hitsA.Load() == 0 { + t.Error("pool member A was not attempted") + } + if hitsB.Load() == 0 { + t.Error("pool member B was not attempted") + } + if fallback.calledWith == nil { + t.Error("fallback was not called — expected chain fallthrough after pool exhausted") + } +} + +// --- Scenario 3 --- +// Chain: [Pool(A,B) exhausted, Fallback also fails] +// Expected: error surfaces; no panic. +func TestCreateImagePoolChain_AllFail_ErrorSurfaces(t *testing.T) { + tenantID := uuid.New() + + var hitsA, hitsB atomic.Int32 + serverA := pool429Server(t, &hitsA) + serverB := pool429Server(t, &hitsB) + + baseA := providertest.NewCodexProviderFast("pool-a3", serverA.URL) + memberB := providertest.NewCodexProviderFast("pool-b3", serverB.URL) + baseA.WithRoutingDefaults("round_robin", []string{"pool-b3"}) + + reg := buildPoolChainRegistry(tenantID, baseA, memberB) + + // Fallback fake that returns an error. + fallbackErr := &nativeImageProvider{ + name: "fallback-fake3", + model: "fake-model", + returnError: errPoolTestFailure, + } + reg.Register(fallbackErr) + + ctx := store.WithTenantID(t.Context(), tenantID) + ctx = WithToolWorkspace(ctx, t.TempDir()) + + chain := []MediaProviderEntry{ + poolBaseChainEntry("pool-a3"), + fakeFallbackEntry("fallback-fake3"), + } + + tool := NewCreateImageTool(reg) + _, err := ExecuteWithChain(ctx, chain, reg, tool.callProvider) + if err == nil { + t.Fatal("expected error when all providers fail, got nil") + } +} + +// errPoolTestFailure is a sentinel error used for fallback failure simulation. +var errPoolTestFailure = &poolChainTestError{msg: "pool integration test: simulated failure"} + +// poolChainTestError is a simple non-retryable error for testing. +type poolChainTestError struct{ msg string } + +func (e *poolChainTestError) Error() string { return e.msg } + +// --- Scenario 4 --- +// Chain: [Pool(A)] — single-member pool, no routing defaults. +// wrapPoolProvider must NOT wrap; callProvider routes directly to A via native path. +func TestCreateImagePoolChain_SingleMemberPool_NoWrapOverhead(t *testing.T) { + tenantID := uuid.New() + + var hitsA atomic.Int32 + serverA := poolSSEServer(t, &hitsA) + + // Solo provider — no WithRoutingDefaults → wrapPoolProvider returns it unchanged. + soloA := providertest.NewCodexProviderFast("solo-a", serverA.URL) + + reg := buildPoolChainRegistry(tenantID, soloA) + + ctx := store.WithTenantID(t.Context(), tenantID) + ctx = WithToolWorkspace(ctx, t.TempDir()) + + chain := []MediaProviderEntry{poolBaseChainEntry("solo-a")} + + tool := NewCreateImageTool(reg) + result, err := ExecuteWithChain(ctx, chain, reg, tool.callProvider) + if err != nil { + t.Fatalf("single-member pool failed: %v", err) + } + if len(result.Data) == 0 { + t.Error("result.Data empty") + } + if hitsA.Load() == 0 { + t.Error("solo member A was not called") + } +} + +// --- Scenario 5 --- +// Chain: [Pool(A,B) round_robin] — 2 calls must hit different members. +// Verifies RR counter advances once per GenerateImage call (not per member tried). +func TestCreateImagePoolChain_RoundRobin_RotatesAcrossTwoCalls(t *testing.T) { + tenantID := uuid.New() + + var hitsA, hitsB atomic.Int32 + serverA := poolSSEServer(t, &hitsA) + serverB := poolSSEServer(t, &hitsB) + + baseA := providertest.NewCodexProviderFast("rr-a", serverA.URL) + memberB := providertest.NewCodexProviderFast("rr-b", serverB.URL) + baseA.WithRoutingDefaults("round_robin", []string{"rr-b"}) + + reg := buildPoolChainRegistry(tenantID, baseA, memberB) + + ctx := store.WithTenantID(t.Context(), tenantID) + ctx = WithToolWorkspace(ctx, t.TempDir()) + + chain := []MediaProviderEntry{poolBaseChainEntry("rr-a")} + tool := NewCreateImageTool(reg) + + for i := range 2 { + result, err := ExecuteWithChain(ctx, chain, reg, tool.callProvider) + if err != nil { + t.Fatalf("call %d: ExecuteWithChain failed: %v", i+1, err) + } + if len(result.Data) == 0 { + t.Errorf("call %d: result.Data empty", i+1) + } + } + + // With round_robin and 2 members, 2 successful calls must each hit a different member. + if hitsA.Load() != 1 { + t.Errorf("hitsA = %d, want 1 (round-robin should spread 2 calls across 2 members)", hitsA.Load()) + } + if hitsB.Load() != 1 { + t.Errorf("hitsB = %d, want 1 (round-robin should spread 2 calls across 2 members)", hitsB.Load()) + } +} diff --git a/internal/tools/media_provider_chain.go b/internal/tools/media_provider_chain.go index 320b4a53..f6a8e992 100644 --- a/internal/tools/media_provider_chain.go +++ b/internal/tools/media_provider_chain.go @@ -12,6 +12,7 @@ import ( "time" "github.com/nextlevelbuilder/goclaw/internal/providers" + "github.com/nextlevelbuilder/goclaw/internal/store" ) // MediaProviderEntry represents a single provider in an ordered fallback chain. @@ -182,6 +183,11 @@ func ExecuteWithChain( continue } + // Wrap Codex pool-base providers in a ChatGPTOAuthRouter so that + // _native_provider delivers pool-aware image generation to callProvider. + // Solo Codex providers (no routing defaults) pass through unchanged. + p = wrapPoolProvider(ctx, registry, entry.Provider, p) + // credentialProvider is optional — providers that don't expose static // credentials (e.g. OAuth-based CodexProvider) pass nil and each // callProvider falls back to using the provider's Chat() API. @@ -342,6 +348,61 @@ func ResolveProviderType(p providers.Provider) string { return providerTypeFromName(p.Name()) } +// wrapPoolProvider inspects the resolved provider and, when it is a +// *providers.CodexProvider whose RoutingDefaults indicate a multi-member pool +// (round_robin or priority_order strategy), wraps it in a *ChatGPTOAuthRouter. +// The router satisfies NativeImageProvider, enabling pool-aware image generation +// inside callProvider without changing any caller of ExecuteWithChain. +// +// Wrap conditions (all must hold): +// 1. resolved is *providers.CodexProvider +// 2. codex.RoutingDefaults() is non-nil +// 3. strategy is round_robin or priority_order (OR extras ≥ 1) +// 4. tenant UUID is present in ctx (uuid.Nil → safe degrade, return original) +// 5. router.HasRegisteredProviders() is true (broken router guard) +// +// Returns resolved unchanged for every other case. +func wrapPoolProvider(ctx context.Context, reg *providers.Registry, entryProvider string, resolved providers.Provider) providers.Provider { + codex, ok := resolved.(*providers.CodexProvider) + if !ok { + return resolved + } + + defaults := codex.RoutingDefaults() + if defaults == nil { + return resolved + } + + // A pool needs at least one extra member to be worth wrapping; with zero + // extras there is nothing to rotate or fail over to, so keep the bare + // CodexProvider (skip router overhead for solo Codex entries). + if len(defaults.ExtraProviderNames) == 0 { + return resolved + } + + tenantID := store.TenantIDFromContext(ctx) + if tenantID.String() == "00000000-0000-0000-0000-000000000000" { + // No tenant in context — cannot build a scoped router safely. + return resolved + } + + router := providers.NewChatGPTOAuthRouter( + tenantID, + reg, + entryProvider, + defaults.Strategy, + defaults.ExtraProviderNames, + ) + + // Guard: if the router cannot resolve any member, injecting it would break + // the image gen path. Fall back to the bare Codex provider. + if !router.HasRegisteredProviders() { + return resolved + } + + return router +} + // providerTypeFromName infers provider type from naming patterns. // Used as fallback when the provider doesn't carry its DB type. func providerTypeFromName(name string) string { diff --git a/internal/tools/media_provider_chain_pool_test.go b/internal/tools/media_provider_chain_pool_test.go new file mode 100644 index 00000000..8ef01c18 --- /dev/null +++ b/internal/tools/media_provider_chain_pool_test.go @@ -0,0 +1,255 @@ +package tools + +import ( + "context" + "testing" + + "github.com/google/uuid" + "github.com/nextlevelbuilder/goclaw/internal/providers" + "github.com/nextlevelbuilder/goclaw/internal/store" +) + +// helpers + +func newCodexWithDefaults(name, strategy string, extras []string) *providers.CodexProvider { + p := providers.NewCodexProvider(name, nil, "", "") + if strategy != "" || len(extras) > 0 { + p = p.WithRoutingDefaults(strategy, extras) + } + return p +} + +func mustTenantCtx() context.Context { + return store.WithTenantID(context.Background(), uuid.New()) +} + +func registryWith(providers_ ...*providers.CodexProvider) *providers.Registry { + reg := providers.NewRegistry(nil) + for _, p := range providers_ { + reg.Register(p) + } + return reg +} + +// TestWrapsWhenCodexHasExtras: Codex with round_robin strategy and extra members +// → should wrap to *ChatGPTOAuthRouter. +func TestWrapsWhenCodexHasExtras(t *testing.T) { + base := newCodexWithDefaults("base", "round_robin", []string{"extra1", "extra2"}) + extra1 := newCodexWithDefaults("extra1", "", nil) + extra2 := newCodexWithDefaults("extra2", "", nil) + reg := registryWith(base, extra1, extra2) + + ctx := mustTenantCtx() + got := wrapPoolProvider(ctx, reg, "base", base) + + if _, ok := got.(*providers.ChatGPTOAuthRouter); !ok { + t.Errorf("wrapPoolProvider() = %T, want *providers.ChatGPTOAuthRouter", got) + } +} + +// TestWrapsWhenPriorityOrderWithMembers: Codex with priority_order + extras → wraps. +func TestWrapsWhenPriorityOrderWithMembers(t *testing.T) { + base := newCodexWithDefaults("base", "priority_order", []string{"extra1"}) + extra1 := newCodexWithDefaults("extra1", "", nil) + reg := registryWith(base, extra1) + + ctx := mustTenantCtx() + got := wrapPoolProvider(ctx, reg, "base", base) + + if _, ok := got.(*providers.ChatGPTOAuthRouter); !ok { + t.Errorf("wrapPoolProvider() = %T, want *providers.ChatGPTOAuthRouter", got) + } +} + +// TestDoesNotWrapSoloCodexNilDefaults: Codex with nil RoutingDefaults → no wrap. +func TestDoesNotWrapSoloCodexNilDefaults(t *testing.T) { + // Not calling WithRoutingDefaults → RoutingDefaults() returns nil. + base := providers.NewCodexProvider("base", nil, "", "") + reg := registryWith(base) + + ctx := mustTenantCtx() + got := wrapPoolProvider(ctx, reg, "base", base) + + if got != base { + t.Errorf("wrapPoolProvider() returned %T, want original *CodexProvider (no wrap)", got) + } +} + +// TestDoesNotWrapPrimaryFirstNoExtras: strategy primary_first (not round_robin/priority_order), +// extras empty → returns provider unchanged. +func TestDoesNotWrapPrimaryFirstNoExtras(t *testing.T) { + base := newCodexWithDefaults("base", "primary_first", []string{}) + reg := registryWith(base) + + ctx := mustTenantCtx() + got := wrapPoolProvider(ctx, reg, "base", base) + + if got != base { + t.Errorf("wrapPoolProvider() with primary_first + no extras: want original provider, got %T", got) + } +} + +// TestDoesNotWrapNonCodex: non-Codex provider (byteplus style) → unchanged. +func TestDoesNotWrapNonCodex(t *testing.T) { + reg := providers.NewRegistry(nil) + fake := &fakeNonCodexProvider{name: "byteplus"} + reg.Register(fake) + + ctx := mustTenantCtx() + got := wrapPoolProvider(ctx, reg, "byteplus", fake) + + if got != fake { + t.Errorf("wrapPoolProvider() returned %T, want original non-Codex provider unchanged", got) + } +} + +// TestFallsBackWhenRouterHasNoRegisteredMembers: extras reference missing providers +// → router has no registered members → return original Codex. +func TestFallsBackWhenRouterHasNoRegisteredMembers(t *testing.T) { + // Only base registered; extra1 and extra2 are NOT in registry. + base := newCodexWithDefaults("base", "round_robin", []string{"missing1", "missing2"}) + reg := registryWith(base) + + ctx := mustTenantCtx() + got := wrapPoolProvider(ctx, reg, "base", base) + + // Router should fall back because HasRegisteredProviders() returns false + // (only base is registered as member, extras missing — router counts base + extras + // but can't resolve extras → members list = [base alone], which IS > 0). + // Per spec: if router.HasRegisteredProviders() == false → return original. + // With base registered and extras missing, registeredProviders() returns [base], + // so HasRegisteredProviders() == true → we get a router. Adjust test to check + // that wrap happens only when extras are actually resolvable (spec says ≥1 extra): + // Since base alone resolves but extra members don't, router.HasRegisteredProviders() + // is true (base is a member). The phase spec says "Wrapped router's + // HasRegisteredProviders() false → return resolved (don't inject broken router)." + // In this case it's NOT false (base resolves as self-member). Router is returned. + // This test verifies the fallback only when zero members resolve. + if _, ok := got.(*providers.ChatGPTOAuthRouter); !ok { + // When extras are missing but base itself is a Codex in the registry, + // HasRegisteredProviders() is true (base counts as a member). + // The router IS valid here, so a router is expected. + t.Errorf("wrapPoolProvider() with missing extras but base present: got %T, want *ChatGPTOAuthRouter (base self-resolves)", got) + } +} + +// TestFallsBackWhenZeroMembersResolve: verifies we return original when the +// router genuinely has NO registered members. +func TestFallsBackWhenZeroMembersResolve(t *testing.T) { + // base NOT registered in registry; extras also missing. + // We pass the base provider directly to wrapPoolProvider but don't register + // it, so GetForTenant won't find it as a Codex — however the router looks up + // the default + extras from the registry, not from the passed provider. + base := newCodexWithDefaults("ghost", "round_robin", []string{"missing1"}) + reg := providers.NewRegistry(nil) // empty registry — nothing registered + + ctx := mustTenantCtx() + got := wrapPoolProvider(ctx, reg, "ghost", base) + + // Router created but HasRegisteredProviders() == false → must return original. + if got != base { + t.Errorf("wrapPoolProvider() with empty registry: want original provider, got %T", got) + } +} + +// TestNoTenantInContext_ReturnsCodex: missing tenant in ctx → safe degrade → original provider. +func TestNoTenantInContext_ReturnsCodex(t *testing.T) { + base := newCodexWithDefaults("base", "round_robin", []string{"extra1"}) + extra1 := newCodexWithDefaults("extra1", "", nil) + reg := registryWith(base, extra1) + + // No tenant in context → TenantIDFromContext returns uuid.Nil. + ctx := context.Background() + got := wrapPoolProvider(ctx, reg, "base", base) + + if got != base { + t.Errorf("wrapPoolProvider() without tenant ctx: want original provider (safe degrade), got %T", got) + } +} + +// TestWrappedRouterSatisfiesNativeImageProvider: wrapped result can be +// type-asserted to NativeImageProvider. +func TestWrappedRouterSatisfiesNativeImageProvider(t *testing.T) { + base := newCodexWithDefaults("base", "round_robin", []string{"extra1"}) + extra1 := newCodexWithDefaults("extra1", "", nil) + reg := registryWith(base, extra1) + + ctx := mustTenantCtx() + got := wrapPoolProvider(ctx, reg, "base", base) + + if _, ok := got.(providers.NativeImageProvider); !ok { + t.Errorf("wrapPoolProvider() result %T does not satisfy NativeImageProvider", got) + } +} + +// TestParamsInjection: _native_provider in ExecuteWithChain callParams is the +// *ChatGPTOAuthRouter, not the bare *CodexProvider. +func TestParamsInjection(t *testing.T) { + base := newCodexWithDefaults("pool_base", "round_robin", []string{"extra1"}) + extra1 := newCodexWithDefaults("extra1", "", nil) + reg := registryWith(base, extra1) + tenantID := uuid.New() + reg.RegisterForTenant(tenantID, base) + reg.RegisterForTenant(tenantID, extra1) + + ctx := store.WithTenantID(context.Background(), tenantID) + + chain := []MediaProviderEntry{{ + Provider: "pool_base", + Model: "gpt-image-1", + Enabled: true, + Timeout: 10, + MaxRetries: 1, + }} + + // capturedNative captures whatever _native_provider lands in callParams. + var capturedNative interface{} + fn := func(fnCtx context.Context, cp credentialProvider, providerName, model string, params map[string]any) ([]byte, *providers.Usage, error) { + capturedNative = params["_native_provider"] + return []byte("ok"), nil, nil + } + + _, err := ExecuteWithChain(ctx, chain, reg, fn) + if err != nil { + t.Fatalf("ExecuteWithChain returned error: %v", err) + } + + if _, ok := capturedNative.(*providers.ChatGPTOAuthRouter); !ok { + t.Errorf("_native_provider = %T, want *providers.ChatGPTOAuthRouter", capturedNative) + } +} + +// TestStrategyPassedThrough: verifies round_robin strategy is preserved in the +// router by checking the router is created (strategy is opaque; tested indirectly +// by confirming the router forms from round_robin vs priority_order inputs). +func TestStrategyPassedThrough(t *testing.T) { + for _, strategy := range []string{"round_robin", "priority_order"} { + t.Run(strategy, func(t *testing.T) { + base := newCodexWithDefaults("base", strategy, []string{"extra1"}) + extra1 := newCodexWithDefaults("extra1", "", nil) + reg := registryWith(base, extra1) + + ctx := mustTenantCtx() + got := wrapPoolProvider(ctx, reg, "base", base) + + if _, ok := got.(*providers.ChatGPTOAuthRouter); !ok { + t.Errorf("strategy %q: wrapPoolProvider() = %T, want *ChatGPTOAuthRouter", strategy, got) + } + }) + } +} + +// fakeNonCodexProvider is a minimal non-Codex provider for testing. +// Implements only the providers.Provider interface — no Codex-specific methods. +type fakeNonCodexProvider struct { + name string +} + +func (f *fakeNonCodexProvider) Name() string { return f.name } +func (f *fakeNonCodexProvider) DefaultModel() string { return "" } +func (f *fakeNonCodexProvider) Chat(_ context.Context, _ providers.ChatRequest) (*providers.ChatResponse, error) { + return nil, nil +} +func (f *fakeNonCodexProvider) ChatStream(_ context.Context, _ providers.ChatRequest, _ func(providers.StreamChunk)) (*providers.ChatResponse, error) { + return nil, nil +} diff --git a/tests/integration/mcp_grant_revoke_test.go b/tests/integration/mcp_grant_revoke_test.go index c236acac..5eb3bae0 100644 --- a/tests/integration/mcp_grant_revoke_test.go +++ b/tests/integration/mcp_grant_revoke_test.go @@ -9,9 +9,9 @@ import ( "sync/atomic" "testing" + "github.com/google/uuid" mcpclient "github.com/mark3labs/mcp-go/client" mcpgo "github.com/mark3labs/mcp-go/mcp" - "github.com/google/uuid" "github.com/nextlevelbuilder/goclaw/internal/mcp" "github.com/nextlevelbuilder/goclaw/internal/store" diff --git a/tests/integration/tts_gemini_live_test.go b/tests/integration/tts_gemini_live_test.go index 316d29d0..333e14b1 100644 --- a/tests/integration/tts_gemini_live_test.go +++ b/tests/integration/tts_gemini_live_test.go @@ -87,6 +87,6 @@ func isServerError(err error) bool { if err == nil { return false } - msg := err.Error() + msg := strings.ToLower(err.Error()) return strings.Contains(msg, "500") || strings.Contains(msg, "503") || strings.Contains(msg, "server error") } diff --git a/ui/web/src/pages/agents/agent-detail/agent-display-utils.ts b/ui/web/src/pages/agents/agent-detail/agent-display-utils.ts index 69d1dce5..a128833a 100644 --- a/ui/web/src/pages/agents/agent-detail/agent-display-utils.ts +++ b/ui/web/src/pages/agents/agent-detail/agent-display-utils.ts @@ -27,6 +27,7 @@ export interface NormalizedChatGPTOAuthRouting { overrideMode: ChatGPTOAuthRoutingOverrideMode; strategy: EffectiveChatGPTOAuthRoutingStrategy; extraProviderNames: string[]; + hasExplicitExtraProviderNames: boolean; } export interface EffectiveChatGPTOAuthRouting { @@ -73,8 +74,9 @@ export function normalizeChatGPTOAuthRouting( return { isExplicit: false, overrideMode: "custom", - strategy: "primary_first", + strategy: "priority_order", extraProviderNames: [], + hasExplicitExtraProviderNames: false, }; } const routing = raw as Record; @@ -96,13 +98,14 @@ export function normalizeChatGPTOAuthRouting( routing.override_mode === "custom" || hasStrategyField || hasExtraProviderField || - strategy !== "primary_first" || + strategy !== "priority_order" || extraProviderNames.length > 0; return { isExplicit, overrideMode, strategy, extraProviderNames, + hasExplicitExtraProviderNames: hasExtraProviderField, }; } @@ -111,7 +114,10 @@ export function hasActiveChatGPTOAuthRouting( routing?: ChatGPTOAuthRoutingConfig | Record | null, ): boolean { const normalized = normalizeChatGPTOAuthRouting(routing); - return normalized.isExplicit && (normalized.strategy !== "primary_first" || normalized.extraProviderNames.length > 0); + return normalized.isExplicit && ( + normalized.strategy === "round_robin" || + normalized.extraProviderNames.length > 0 + ); } export function normalizeChatGPTOAuthRoutingInput( @@ -121,8 +127,9 @@ export function normalizeChatGPTOAuthRoutingInput( return { isExplicit: false, overrideMode: "custom", - strategy: "primary_first", + strategy: "priority_order", extraProviderNames: [], + hasExplicitExtraProviderNames: false, }; } return normalizeChatGPTOAuthRouting(routing); @@ -139,8 +146,9 @@ export function resolveEffectiveChatGPTOAuthRouting( ({ isExplicit: false, overrideMode: "custom", - strategy: "primary_first", + strategy: "priority_order", extraProviderNames: [], + hasExplicitExtraProviderNames: false, } satisfies NormalizedChatGPTOAuthRouting); let source: EffectiveChatGPTOAuthRouting["source"] = "single"; @@ -150,7 +158,7 @@ export function resolveEffectiveChatGPTOAuthRouting( if (normalizedAgent.overrideMode === "inherit") { source = providerDefaults ? "provider_default" : "single"; - strategy = providerDefaults?.strategy ?? "primary_first"; + strategy = providerDefaults?.strategy ?? "priority_order"; extraProviderNames = providerDefaults?.extraProviderNames ?? []; overrideMode = "inherit"; } else if (normalizedAgent.isExplicit) { @@ -167,7 +175,7 @@ export function resolveEffectiveChatGPTOAuthRouting( providerDefaults?.extraProviderNames.length && source === "agent_custom" ) { - if (strategy === "primary_first" && extraProviderNames.length === 0) { + if (normalizedAgent.hasExplicitExtraProviderNames && extraProviderNames.length === 0) { extraProviderNames = []; } else { extraProviderNames = providerDefaults.extraProviderNames; @@ -190,8 +198,7 @@ export function strategyLabelKey( strategy: EffectiveChatGPTOAuthRoutingStrategy, ): string { if (strategy === "round_robin") return "chatgptOAuthRouting.strategy.roundRobin"; - if (strategy === "priority_order") return "chatgptOAuthRouting.strategy.priorityOrder"; - return "chatgptOAuthRouting.strategy.primaryFirst"; + return "chatgptOAuthRouting.strategy.priorityOrder"; } /** Maps route readiness state to badge variant. */ @@ -252,18 +259,13 @@ export function buildAgentOtherConfigWithChatGPTOAuthRouting( if ( providerDefaults || normalized.isExplicit || - normalized.strategy !== "primary_first" || normalized.extraProviderNames.length > 0 ) { const customRouting: Record = { override_mode: "custom", strategy: normalized.strategy, }; - if ( - !providerDefaults || - (normalized.strategy === "primary_first" && - normalized.extraProviderNames.length === 0) - ) { + if (normalized.hasExplicitExtraProviderNames || normalized.extraProviderNames.length > 0) { customRouting.extra_provider_names = normalized.extraProviderNames; } result.chatgpt_oauth_routing = customRouting; diff --git a/ui/web/src/pages/agents/agent-detail/codex-pool-routing-draft-utils.ts b/ui/web/src/pages/agents/agent-detail/codex-pool-routing-draft-utils.ts index be00fd0e..120006cd 100644 --- a/ui/web/src/pages/agents/agent-detail/codex-pool-routing-draft-utils.ts +++ b/ui/web/src/pages/agents/agent-detail/codex-pool-routing-draft-utils.ts @@ -8,16 +8,19 @@ export function buildDraftRouting( savedRouting: NormalizedChatGPTOAuthRouting, ): ChatGPTOAuthRoutingConfig { if (savedRouting.isExplicit) { - return { + const draft: ChatGPTOAuthRoutingConfig = { override_mode: savedRouting.overrideMode, strategy: savedRouting.strategy, - extra_provider_names: savedRouting.extraProviderNames, }; + if (savedRouting.hasExplicitExtraProviderNames || savedRouting.extraProviderNames.length > 0) { + draft.extra_provider_names = savedRouting.extraProviderNames; + } + return draft; } return { override_mode: "inherit", - strategy: "primary_first", + strategy: "priority_order", extra_provider_names: [], }; } @@ -33,5 +36,6 @@ export function routingDraftSignature( override_mode: "custom", strategy: normalized.strategy, extra_provider_names: normalized.extraProviderNames, + has_explicit_extra_provider_names: normalized.hasExplicitExtraProviderNames, }); } diff --git a/ui/web/src/pages/agents/agent-detail/config-sections/chatgpt-oauth-routing-section.tsx b/ui/web/src/pages/agents/agent-detail/config-sections/chatgpt-oauth-routing-section.tsx index 29bc7a74..b303754b 100644 --- a/ui/web/src/pages/agents/agent-detail/config-sections/chatgpt-oauth-routing-section.tsx +++ b/ui/web/src/pages/agents/agent-detail/config-sections/chatgpt-oauth-routing-section.tsx @@ -125,10 +125,17 @@ export function ChatGPTOAuthRoutingSection({ const blockedEntries = selectedEntries.filter((e) => e.routeReadiness === "blocked"); const routerActiveEntries = healthyEntries; - const selectedStrategy: EffectiveChatGPTOAuthRoutingStrategy = + // When the agent inherits from the provider, paint the Traffic Policy + // buttons with the provider's effective strategy so the UI reflects what + // will actually run. Otherwise derive from the draft (custom override). + const draftStrategy: EffectiveChatGPTOAuthRoutingStrategy = value.strategy === "round_robin" || value.strategy === "priority_order" ? value.strategy - : "primary_first"; + : "priority_order"; + const selectedStrategy: EffectiveChatGPTOAuthRoutingStrategy = + mode === "inherit" && defaultRouting + ? defaultRouting.strategy + : draftStrategy; const canEditMembership = canManageProviders && membershipEditable; const canUsePoolStrategies = canManageProviders && @@ -243,16 +250,7 @@ export function ChatGPTOAuthRoutingSection({

{t("chatgptOAuthRouting.strategyLabel")}

-
- +