@bitkyc08/opencodex 2.7.9-preview.20260712.1 → 2.7.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +3 -1
  2. package/gui/dist/assets/index-BAAFKwsh.js +40 -0
  3. package/gui/dist/index.html +1 -1
  4. package/package.json +2 -2
  5. package/src/adapters/cursor/transport-retry.ts +5 -3
  6. package/src/adapters/google-errors.ts +9 -19
  7. package/src/adapters/google-http.ts +29 -66
  8. package/src/adapters/kiro-errors.ts +10 -23
  9. package/src/adapters/kiro-retry.ts +26 -58
  10. package/src/adapters/upstream-http-error.ts +48 -0
  11. package/src/bridge.ts +6 -2
  12. package/src/claude/gateway-cache.ts +3 -3
  13. package/src/claude/outbound.ts +117 -40
  14. package/src/cli/claude.ts +36 -4
  15. package/src/config.ts +54 -3
  16. package/src/lib/destination-policy.ts +167 -0
  17. package/src/lib/injection-debug-log.ts +34 -0
  18. package/src/lib/upstream-retry.ts +53 -3
  19. package/src/lib/windows-secret-acl.ts +173 -0
  20. package/src/oauth/index.ts +9 -7
  21. package/src/oauth/store.ts +1 -0
  22. package/src/providers/registry.ts +10 -3
  23. package/src/providers/xai-transport.ts +89 -0
  24. package/src/router.ts +6 -1
  25. package/src/server/auth-cors.ts +4 -0
  26. package/src/server/claude-messages.ts +32 -2
  27. package/src/server/management-api.ts +159 -33
  28. package/src/server/request-decompress.ts +45 -12
  29. package/src/server/responses.ts +21 -12
  30. package/src/server/system-env.ts +110 -68
  31. package/src/service.ts +4 -0
  32. package/src/types.ts +25 -5
  33. package/src/vision/anthropic-describe.ts +185 -0
  34. package/src/vision/index.ts +219 -10
  35. package/src/web-search/anthropic-executor.ts +187 -0
  36. package/src/web-search/executor.ts +4 -2
  37. package/src/web-search/index.ts +80 -18
  38. package/src/web-search/loop.ts +14 -2
  39. package/gui/dist/assets/index-Csp2AZYr.js +0 -40
@@ -3,6 +3,7 @@ import type { AdapterEvent, OcxMessage, OcxParsedRequest, OcxProviderConfig, Ocx
3
3
  import { namespacedToolName } from "../types";
4
4
  import { bridgeToResponsesSSE } from "../bridge";
5
5
  import { runWebSearch, type SidecarOutcome, type SidecarOutcomeRecorder, type SidecarSettings } from "./executor";
6
+ import { runAnthropicWebSearch } from "./anthropic-executor";
6
7
  import { clearableDeadline } from "../lib/abort";
7
8
  import { readBoundedResponseBody } from "../lib/bounded-body";
8
9
  import { fetchWithResetRetry } from "../lib/upstream-retry";
@@ -162,7 +163,12 @@ class LoopError extends Error {
162
163
  export interface WebSearchLoopDeps {
163
164
  parsed: OcxParsedRequest;
164
165
  adapter: ProviderAdapter;
165
- forwardProvider: OcxProviderConfig;
166
+ /** Which executor runs searches. Defaults to "openai" so existing callers keep the ChatGPT path (audit F4). */
167
+ backend?: "openai" | "anthropic";
168
+ /** Required for the openai backend; unused (and typically undefined) for the anthropic backend. */
169
+ forwardProvider?: OcxProviderConfig;
170
+ /** Required for the anthropic backend: the stored-OAuth provider that runs web_search_20250305. */
171
+ anthropicSidecar?: { providerName: string; provider: OcxProviderConfig };
166
172
  hostedTool: Record<string, unknown>;
167
173
  selectedForwardHeaders: Headers;
168
174
  settings: SidecarSettings;
@@ -195,6 +201,8 @@ export interface WebSearchLoopDeps {
195
201
  */
196
202
  export async function runWithWebSearch(deps: WebSearchLoopDeps): Promise<Response> {
197
203
  const { parsed, selectedForwardHeaders, forwardProvider, hostedTool, settings, maxSearches, abortSignal, recordSidecarOutcome } = deps;
204
+ const backend = deps.backend ?? "openai";
205
+ const anthropicSidecar = deps.anthropicSidecar;
198
206
  // Mutable: 429 key-failover (deps.on429) can swap in a rebuilt adapter mid-loop.
199
207
  let adapter = deps.adapter;
200
208
 
@@ -399,7 +407,11 @@ export async function runWithWebSearch(deps: WebSearchLoopDeps): Promise<Respons
399
407
  beganCell = true;
400
408
  yield { type: "web_search_call_begin", id: call.id };
401
409
  }
402
- outcome = await runWebSearch(query, hostedTool, forwardProvider, selectedForwardHeaders, settings, signal, recordSidecarOutcome);
410
+ // F5: the anthropic sidecar authenticates with its own stored OAuth — it never touches the
411
+ // ChatGPT forward headers and must NOT record a Codex/OpenAI pool outcome.
412
+ outcome = backend === "anthropic" && anthropicSidecar
413
+ ? await runAnthropicWebSearch(query, anthropicSidecar.providerName, anthropicSidecar.provider, settings, signal)
414
+ : await runWebSearch(query, hostedTool, forwardProvider!, selectedForwardHeaders, settings, signal, recordSidecarOutcome);
403
415
  searchesExecuted++;
404
416
  executedSearchCount++;
405
417
  if (outcome.error) failedQueries.add(normalizeQuery(query));