Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/adapters/openai-responses/passthrough.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ import {
emittedFastWire,
} from "../../providers/fastwire";
import { dropResponsesReasoningInputItems, mapRoutedResponsesReasoningEffort, normalizeConfiguredReasoningSummaryDelivery, sanitizeReasoningInputContent, stripDisabledReasoningSummaries, stripDisabledVerbosity, stripNoneReasoningSummary, stripUnsupportedReasoningSummaryDelivery } from "./reasoning";
import { scrubOcxCompactionItems, stripCanonicalOnlyInputItems, stripCanonicalOnlyToolFields, stripCanonicalOnlyTopLevelFields, stripInternalChatMessageMetadataPassthrough, stripInvalidItemIds, stripItemIdsWhenUnstored, stripProviderInputItemMetadata, stripRejectedSamplingParams } from "./request-strips";
import { repairUrlCitationAnnotations, scrubOcxCompactionItems, stripCanonicalOnlyInputItems, stripCanonicalOnlyToolFields, stripCanonicalOnlyTopLevelFields, stripInternalChatMessageMetadataPassthrough, stripInvalidItemIds, stripItemIdsWhenUnstored, stripProviderInputItemMetadata, stripRejectedSamplingParams } from "./scrubOcxCompactionItems";
import { notePlaintextReasoningDropped } from "./plaintext-reasoning-notice";
import { stripCanonicalForwardPromptCacheOptions, stripDeprecatedPromptCacheRetention } from "./prompt-cache";
import { isPlainObject } from "./internal";
Expand Down Expand Up @@ -315,7 +315,7 @@ export function createResponsesPassthroughAdapter(provider: OcxProviderConfig):
outBody = repairLegacyDottedToolCallNames(outBody);
// Shared HTTP/WS outbound projection, including concrete combo/fallback destinations.
if (isOpenAiOperatedResponsesDestination(provider)) {
outBody = stripProviderInputItemMetadata(outBody);
outBody = repairUrlCitationAnnotations(stripProviderInputItemMetadata(outBody));
}
if (!isCanonicalOpenAiForwardProvider(provider)) {
if (provider.preserveResponsesMessageMetadata !== true) {
Expand Down
2 changes: 1 addition & 1 deletion src/adapters/openai-responses/request-strips.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export function stripProviderInputItemMetadata(body: unknown): unknown {
input ??= [...body.input];
input[index] = next;
}
return repairUrlCitationAnnotations(input ? { ...body, input } : body);
return input ? { ...body, input } : body;
}

function isUrlCitationIndex(value: unknown): value is number {
Expand Down
8 changes: 5 additions & 3 deletions src/server/responses/compact.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import { parseRequest } from "../../responses/parser";
import { buildCompactV1Output, COMPACT_PROMPT, decodeCompactionSummary, extractCompactUserMessages } from "../../responses/compaction";
import { applyReasoningRetention, appendRetentionNotice, type ReasoningRetentionResult } from "../../responses/reasoning-retention";
import { FORWARD_HEADERS, sanitizeReasoningInputContent } from "../../adapters/openai-responses";
import { stripProviderInputItemMetadata } from "../../adapters/openai-responses/request-strips";
import { repairUrlCitationAnnotations, stripProviderInputItemMetadata } from "../../adapters/openai-responses/request-strips";
import { expandPreviousResponseInput, previousResponseProviderState, rememberResponseState } from "../../responses/state";
import { repairLegacyDottedToolCallNames } from "../../responses/legacy-dotted-tool-name-repair";
import { NoEligiblePolicyCandidateError, routeCompactionModel } from "../../router";
Expand Down Expand Up @@ -950,7 +950,7 @@ export async function handleResponsesCompact(
// call-name repair the adapter applies. A damaged item here refuses the compaction itself,
// which is the request a long task depends on to keep going.
// This branch is OpenAI-only and bypasses the adapter's Google replay projection (#7111).
const compactBody = repairLegacyDottedToolCallNames(
let compactBody = repairLegacyDottedToolCallNames(
stripProviderInputItemMetadata(sanitizeReasoningInputContent(compactBodyRaw, {
preserveRawReasoningContent: !isOpenAiOperatedResponsesDestination(compactProvider)
&& compactProvider.preserveResponsesReasoningContent === true,
Expand All @@ -959,7 +959,9 @@ export async function handleResponsesCompact(
requirePlaintextReasoning: requireCompactPlaintextReasoning,
})),
) as typeof compactBodyRaw;
{
if (isOpenAiOperatedResponsesDestination(compactProvider)) {
compactBody = repairUrlCitationAnnotations(compactBody) as typeof compactBodyRaw;
}
const binding = conversationStateBindingFromAuth(authCtx, codexPoolAffinityKey(req.headers));
if (binding) {
// Refused rather than scrubbed: an uploaded file is content the caller attached, not
Expand Down
Loading