Skip to content

feat(search): add OpenAI search passthrough#175

Open
Menci wants to merge 37 commits into
mainfrom
worktree-agent-a8a2e1aa14b68090a
Open

feat(search): add OpenAI search passthrough#175
Menci wants to merge 37 commits into
mainfrom
worktree-agent-a8a2e1aa14b68090a

Conversation

@Menci

@Menci Menci commented Jul 11, 2026

Copy link
Copy Markdown
Owner

What

Add an optional OpenAI search passthrough backend without turning alpha search into a generic Floway Search API.

The existing general search provider remains the default for Messages and Responses web search. Settings can enable Passthrough OpenAI search (/alpha/search and Responses hosted tool) and select an enabled Codex or Custom upstream plus chat model. The selected backend is scoped by the calling API key, is used only for the Codex-compatible alpha-search routes and the existing Responses web-search shim, and never falls back to another search backend. Anthropic Messages is unaffected.

Provider instances expose a dedicated callAlphaSearch operation. Codex forwards to the ChatGPT subscription endpoint with its OAuth account, quota, retry, and request-identity handling. Custom uses its OpenAI-compatible alpha-search path and existing path-override policy. Azure, Copilot, Claude Code, and Ollama reject the unsupported operation.

Floway serves the Codex-compatible request at /alpha/search and /v1/alpha/search. In local mode those routes execute supported commands through the configured Tavily, Microsoft Grounding, or Jina provider. In passthrough mode the upstream status, decoded body stream, content type, and representation-safe metadata are relayed; stale content encoding/length, hop-by-hop headers, and upstream cookies are removed so another Floway or Fetch client can consume the response safely.

The Responses shim preserves the alpha endpoint's model-facing output exactly. Alpha results are opaque UI metadata and live responses omit the hosted-search snippet field, so the shim does not retype them as hosted results; it emits one explicitly synthetic result from output when the Responses surface needs result-shaped data. The raw alpha routes remain lossless for the upstream JSON body.

Account affinity for future Codex account pools remains an explicit TODO. This change adds no fallback or loop-prevention protocol.

The search settings migration stores the toggle, upstream, and model. Import/export uses strict format v10 because the required search-config shape changed.

Evidence

The live-wire study covered 349 ChatGPT Codex /alpha/search calls and six Responses hosted-search comparisons. Its redacted spec, runners, and per-case structural reports are embedded in this PR comment.

The local Codex 0.144.4 end-to-end matrix covered both tool modes across all three search routes:

Codex mode General search Static official alpha upstream Floway → Floway → official cascade
Responses hosted tool Passed Passed Passed
Client web.run + /alpha/search Passed Passed Passed

The official test upstream contained an already-issued access token and no refresh token. Every cell emitted one completed web_search item and the expected IANA URL; cascade audit recorded /v1/responses → /v1/alpha/search → /v1/responses for both modes.

Test plan

  • pnpm run test — 358 files / 4,361 tests
  • pnpm run lint
  • pnpm run typecheck — 19 workspace projects
  • Azure live probe: authenticated /openai/v1/models control returned 200; v1 default, api-version=preview, api-version=v1, Bearer, legacy resource, and deployment alpha-search paths all returned 404
  • Local raw alpha search through one Floway instance and through a Floway cascade
  • Responses hosted web-search tool through one Floway instance and through a Floway cascade
  • Codex CLI 0.144.4 with six isolated HOME/CODEX_HOME pairs, covering hosted/client tools × general/official/cascade routes
  • ChatGPT Codex subscription alpha-search upstream with static access-token auth and refresh disabled by construction

Menci added 8 commits July 12, 2026 04:31
The Codex CLI's web-search tool POSTs a SearchRequest to `/alpha/search`
and feeds the returned `output` string back to the model. Serve it from
Floway's own configured web-search provider instead of proxying
chatgpt.com.

codex's `commands` is an object keyed by command kind
(`{search_query:[{q}], open:[{ref_id}], find:[{ref_id,pattern}], …}`) —
byte-for-byte the shape the Responses web_search shim already parses. So
extract the protocol-neutral execution engine (command parsing, provider
resolution, search/open/find execution, page cache, IR building, text
rendering, domain filtering) out of the Responses shim into a shared
tools/web-search/operations.ts, and build both surfaces on it: the shim
wraps each op into a web_search_call wire item; the Codex endpoint
concatenates the rendered text of every op into one output string.

Unimplemented command kinds (image_query, click, screenshot, finance,
weather, sports, time, response_length) surface as deterministic per-op
error text. Disabled/missing search config surfaces the same in-band
'provider not configured' text the shim uses. Request validated with a
zod schema mirroring codex-rs SearchRequest; usage accounted per API key.
Route tests through the codex namespace: auth, zod schema rejection
(non-object commands, bad search_context_size), search/open/find command
execution and rendered output, per-key usage accounting, unsupported
command text, domain-filter blocking, empty commands, and disabled /
missing-credential provider states surfaced as in-band output.
Codex derives its remote web-search URL from different base URLs across
auth and provider modes. Mount the same authenticated, schema-validated
handler at /alpha/search and /v1/alpha/search in addition to the generated
config's /azure-api.codex/alpha/search path.
Parameterize routing, missing/invalid auth, and schema rejection across the
namespaced, root, and /v1 alpha-search paths so aliases cannot drift from
the primary handler.
Route /alpha/search to the gateway in Vite development, Cloudflare Static
Assets, and the Docker nginx topology. /v1/alpha/search is already covered
by each topology's existing /v1 prefix rule.
@Menci

Menci commented Jul 11, 2026

Copy link
Copy Markdown
Owner Author

Claude Code agent update: root compatibility aliases are being added. Codex joins alpha/search directly onto the configured model-provider base_url, so manual configs may call /alpha/search, /v1/alpha/search, or the recommended /azure-api.codex/alpha/search. The namespaced URL remains the generated default because its Azure marker preserves the fuller Codex behavior. Worker-first and Vite proxy routing will be updated for the unversioned root path as well.

Menci added 3 commits July 12, 2026 05:16
Codex recognizes a custom provider as eligible for its remote web.run tool
when the provider config carries a non-empty x-openai-actor-authorization
header. Treat that dashboard-generated marker as gateway-owned identity and
strip it before provider dispatch so it reaches Floway's routing decision but
never leaks to an LLM upstream.
Codex gates the remote web-search extension on either an OpenAI provider
identity or a non-empty x-openai-actor-authorization provider header. Keep
the provider key/name as floway/Floway so the wider is_openai behavior stays
disabled, and add a non-secret marker header that enables only the actor-auth
compatibility gates. The gateway scrubs the marker before upstream dispatch.

Cover the generated TOML so the provider identity, namespaced base URL, and
compatibility marker cannot drift.
@Menci Menci changed the title feat(codex): serve /alpha/search through Floway web search feat(codex): serve alpha search through Floway web search Jul 11, 2026
Menci added 2 commits July 12, 2026 05:23
The actor-authorization marker that enables remote web.run also makes Codex
consider its remote image-generation extension. Floway does not serve the
provider-relative images/generations path, so explicitly disable that feature
while retaining the marker for web search. Cover and document the generated
feature block.
Keep the inbound-header scrub list alphabetic, describe alpha-search output
in the parser's canonical operation order rather than JSON key order, and
make the shared truncated-page hint neutral across Responses and Codex
callers.
@Menci

Menci commented Jul 12, 2026

Copy link
Copy Markdown
Owner Author

Claude Code agent correction: the generated x-openai-actor-authorization marker, its special scrub rule, and image_generation = false are being removed. They were an unjustified attempt to influence Codex client gating, and the accompanying statement that Floway lacks image-generation endpoints was false: Floway serves both Images Generations and Images Edits on the standard root and /v1 paths. PR #175 will remain scoped to implementing /alpha/search through Floway's existing web-search service and exposing its route aliases; it will not fabricate authorization headers or disable unrelated client capabilities.

Menci added 14 commits July 12, 2026 14:03
Keep the generated Codex provider config faithful to Floway: do not inject
x-openai-actor-authorization, do not special-case that vendor header in the
gateway scrubber, and do not disable image generation. Remove the associated
gating claims and retain only the actual alpha-search route behavior in the
documentation.
…aa14b68090a

# Conflicts:
#	packages/gateway/src/data-plane/chat/responses/interceptors/server-tools/web-search.ts
#	packages/gateway/src/data-plane/codex/routes.ts
Add callAlphaSearch to the provider contract. Codex dispatches to the ChatGPT subscription endpoint with its OAuth account, custom dispatches to /v1/alpha/search with static auth, and other provider kinds reject the unsupported call.
Persist a default-off OpenAI search passthrough selection with upstream and model. Add the Settings toggle and scoped Codex/Custom upstream and chat-model pickers while preserving the existing general search provider as the default.
Resolve the configured upstream and model without fallback. Raw Codex alpha-search requests relay the selected provider response, while the existing Responses web-search shim adapts commands and structured results through the same provider call.
Thread the default-off passthrough shape through existing search fixtures and finish the merged web-search filter and Azure unsupported-provider paths.
Verify custom and Codex provider wires, raw alpha-route relay, Responses shim adaptation, persisted configuration, and the Codex/Custom-only settings picker.
Type the settings component against its minimal upstream picker shape, handle the nullable model store at the page boundary, and apply workspace lint rules to the alpha dispatcher path.
Keep search configuration export and import fixtures aligned with the OpenAI search passthrough settings.
Publish the required OpenAI search passthrough settings under transfer format v10 so incompatible payload shapes never share a version number.
Keep Codex request identity and optional metadata coherent, document the ChatGPT search path, and route Custom alpha search through the existing endpoint override policy.
Menci added 3 commits July 15, 2026 19:04
Make search configuration writes typed, remove lossy post-validation normalization, enforce the stored boolean domain, and keep the dashboard selector invariants explicit.
Use a callable alpha dispatcher, remove test-only compatibility exports, preserve cancellation through local search execution, and align comments and references with both local and passthrough modes.
@Menci Menci changed the title feat(codex): serve alpha search through Floway web search feat(search): add OpenAI search passthrough Jul 15, 2026
Menci added 4 commits July 15, 2026 19:32
Keep the README focused on public Floway endpoints and omit the internal Codex compatibility namespace.
Rebuild passthrough responses with mutable headers before returning through Hono so Custom-to-Floway alpha-search chains preserve the upstream stream, status, and headers on Node.
State that the selected upstream must support alpha search and that Anthropic Messages remains on the general search provider.
@Menci

Menci commented Jul 16, 2026

Copy link
Copy Markdown
Owner Author

Codex agent update: the ChatGPT Codex standalone-search wire probe is complete. This comment embeds the full publishable experiment archive; it is self-contained and does not depend on a gist or external host.

Evidence: 349 /alpha/search calls (156×200, 191×400, 2×401), six Responses hosted-search comparisons, and OpenAI Codex source pinned at 9ff47868eb2afeec579183e01bb9d3d3e9df2bcd. The archive contains the 1,000-line empirical spec, every probe/relay/sanitizer script, and redacted per-case reports.

Important findings for this PR:

  • Live alpha structured results had 907 entries and zero snippet fields. Requiring hosted-search {type,url,title,snippet} drops every genuine alpha result; output is the canonical model-facing payload and alpha results must remain opaque.
  • Alpha refs are scoped by top-level id, survive many calls, and work across model changes within the same ID. They require no replay of encrypted_output.
  • Outer validation is strict, but many semantic failures are HTTP 200 in-band diagnostics. A transparent passthrough must preserve status/body instead of converting them to gateway failures.
  • The live backend accepts allowed_callers: ["direct","programmatic"]; current Codex source still declares direct/shell/code_interpreter and sends only direct.
  • Current Codex normalizes model-emitted web.run arguments before HTTP, while raw clients can reach a broader validation surface. Current hosted search does not request or preserve hosted results/sources; main-branch alpha now does preserve opaque results out of band.

Redaction removed all access/refresh/ID tokens, account and user identifiers, emails, personal paths, proxy configuration, IPs, opaque encrypted payloads, account-plan headers, and full fetched page bodies. Successful responses retain types, key sets, counts, lengths, and diagnostic classifications. The supplied credential's refresh token was never read or invoked by the online runners.

Archive: floway-alpha-search-public-20260716.tar.xz
SHA-256: 196d79ce86217ea44cd0962bcd9dfb4c66d546e9ef5e833759eb36fec30630ef

Reconstruct on Linux:

base64 --decode archive.b64 > floway-alpha-search-public-20260716.tar.xz

Reconstruct on macOS:

base64 -D archive.b64 > floway-alpha-search-public-20260716.tar.xz

Base64 archive body
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
AaS2AoDwGl2xvXyxxGf7AgAAAAAEWVo=

Menci added 2 commits July 16, 2026 20:29
Fetch exposes a decoded body while retaining upstream content-encoding and content-length. Rebuilding the alpha response with those stale headers makes a downstream Floway or Codex client decode plain JSON again and fail with a terminated stream.\n\nStrip hop-by-hop, stale representation-framing, and upstream cookie headers while retaining content type and vendor metadata. Cover the shared fetched-response relay behavior directly.
Live alpha-search results are opaque UI metadata and omit the hosted web_search snippet field. The existing compatibility filter therefore dropped every real result before silently falling back to the rendered output.\n\nKeep the upstream output as the lossless model-facing payload and emit one clearly synthetic Responses result when that surface needs result-shaped data. Raw alpha routes continue relaying the upstream response untouched.
@Menci

Menci commented Jul 16, 2026

Copy link
Copy Markdown
Owner Author

Codex agent update: the isolated Codex 2×3 end-to-end matrix is complete on the final PR head.

Codex 0.144.4 tool mode General search, passthrough off Static official alpha upstream Floway A → Floway B → official alpha
Responses hosted web_search Pass Pass Pass
Client web.run + /alpha/search Pass Pass Pass

Each cell used its own HOME and CODEX_HOME, emitted exactly one started/completed web_search item, had no turn.failed, and ended with the canonical IANA URL plus MATRIX_OK. The deterministic model observed the expected mutually exclusive tool shapes: hosted mode arrived as Floway's plain web_search shim function, while client mode arrived as namespaced web.run. Search output was non-empty and contained IANA in all six cells.

Routing evidence:

  • General-search cells recorded Microsoft Grounding search usage and made no alpha-upstream selection.
  • Official cells reached /backend-api/codex/alpha/search with HTTP 200.
  • Both cascade cells recorded /v1/responses → /v1/alpha/search → /v1/responses between A and B, followed by B's HTTP-200 official alpha call.
  • The official upstream was a Custom provider containing only the already-issued bearer access token. Its stored config had no refresh_token/refreshToken, and the isolated Codex homes contained only local Floway API keys.

The first cascade attempt exposed a real response-relay bug: Node Fetch had decoded upstream gzip bytes but Floway relayed the stale content-encoding: gzip, so the next Floway decoded plain JSON again and failed with terminated. Commit c60117be2 rebuilds fetched responses without stale framing/coding, hop-by-hop headers, or upstream cookies. The live regression probe now returns plain JSON with no content encoding/length, and direct plus cascaded client-tool cells pass.

The live alpha study also showed that official structured results omit hosted-search snippet in every observed entry. Commit 96a72d401 removes the unreachable "compatible structured results" assumption: raw alpha JSON remains untouched, while the Responses adapter preserves output as the lossless model payload and labels its single result-shaped projection as synthetic.

Final verification:

  • pnpm run test — 358 files, 4,361 tests passed
  • pnpm run lint — passed
  • pnpm run typecheck — 19 workspace projects passed
  • PR worktree clean and both commits pushed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant