@jeffreycao/copilot-api 1.10.10 → 1.10.12

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.
@@ -1,4 +1,4 @@
1
- import { A as compactSystemPromptStarts, B as createWebSocketUrl, C as prepareForCompact, D as compactAutoContinuePromptStarts, F as normalizeCodexResponsesEvent, H as state, I as generateTraceId, L as requestContext, N as createStandardizedCodexResponsesEventStream, O as compactMessageSections, P as forwardCodexResponses, R as resolveTraceId$1, S as copilotWebSocketHeaders, T as prepareMessageProxyHeaders, U as logCodexRateLimitsEvent, _ as getCopilotUsage, b as copilotBaseUrl, d as generateRequestIdFromPayload, f as getRootSessionId, g as sleep, h as parseUserIdMetadata, m as isNullish, p as getUUID, r as setupCodexToken, s as cacheModels, v as HTTPError, w as prepareInteractionHeaders, x as copilotHeaders, y as forwardError, z as createPooledWebSocketStream } from "./token-1SfgxCRm.js";
1
+ import { A as compactSystemPromptStarts, B as createWebSocketUrl, C as prepareForCompact, D as compactAutoContinuePromptStarts, F as normalizeCodexResponsesEvent, H as state, I as generateTraceId, L as requestContext, N as createStandardizedCodexResponsesEventStream, O as compactMessageSections, P as forwardCodexResponses, R as resolveTraceId$1, S as copilotWebSocketHeaders, T as prepareMessageProxyHeaders, U as logCodexRateLimitsEvent, _ as getCopilotUsage, b as copilotBaseUrl, d as generateRequestIdFromPayload, f as getRootSessionId, g as sleep, h as parseUserIdMetadata, m as isNullish, p as getUUID, r as setupCodexToken, s as cacheModels, v as HTTPError, w as prepareInteractionHeaders, x as copilotHeaders, y as forwardError, z as createPooledWebSocketStream } from "./token-CQHif3s_.js";
2
2
  import { _ as setModelMappings, a as getModelMappings, c as getReasoningEffortForModel, d as isResponsesApiContextManagementModel, f as isResponsesApiWebSearchEnabled, g as resolveMappedModel, i as getExtraPromptForModel, l as getSmallModel, n as getClaudeTokenMultiplier, o as getProviderConfig, p as isResponsesApiWebSocketEnabled, r as getConfig, s as getRawProviderConfig, t as getAnthropicApiKey, u as isMessagesApiEnabled, y as PATHS } from "./config-ztdkLu9o.js";
3
3
  import { a as isDeferredToolName, c as parseMcpToolSearchSentinel, d as shouldEnableResponsesToolSearch, i as isBridgeToolSearchName, l as resolveBridgeToolSearchName, o as listDeferredToolNames, r as formatToolSearchBridgeArguments, s as normalizeToolSearchBridgeArguments, t as BRIDGE_TOOL_SEARCH_NAME, u as selectDeferredToolsByNames } from "./tool-search-wA-fLduL.js";
4
4
  import consola from "consola";
@@ -985,7 +985,7 @@ const logCopilotQuotaSnapshots = (snapshots) => {
985
985
  const logCopilotRateLimitUsage = (usage) => {
986
986
  const d = new Date(usage.resetAt);
987
987
  const dateStr = Number.isNaN(d.getTime()) ? usage.resetAt : d.toLocaleString();
988
- consola.info(`Copilot ${usage.type} quota remaining: ${usage.remaining}, resets at: ${dateStr}`);
988
+ consola.log(`Copilot ${usage.type} quota remaining: ${usage.remaining}, resets at: ${dateStr}`);
989
989
  };
990
990
  const isCopilotQuotaSnapshot = (value) => {
991
991
  if (!value || typeof value !== "object") return false;
@@ -1024,11 +1024,11 @@ const createChatCompletions = async (payload, options) => {
1024
1024
  };
1025
1025
  //#endregion
1026
1026
  //#region src/routes/chat-completions/handler.ts
1027
- const logger$6 = createHandlerLogger("chat-completions-handler");
1027
+ const logger$7 = createHandlerLogger("chat-completions-handler");
1028
1028
  async function handleCompletion$1(c) {
1029
1029
  await checkRateLimit(state);
1030
1030
  let payload = await c.req.json();
1031
- debugJsonTail(logger$6, "Request payload:", {
1031
+ debugJsonTail(logger$7, "Request payload:", {
1032
1032
  value: payload,
1033
1033
  tailLength: 400
1034
1034
  });
@@ -1043,12 +1043,12 @@ async function handleCompletion$1(c) {
1043
1043
  ...payload,
1044
1044
  max_tokens: selectedModel?.capabilities.limits.max_output_tokens
1045
1045
  };
1046
- debugJson(logger$6, "Set max_tokens to:", payload.max_tokens);
1046
+ debugJson(logger$7, "Set max_tokens to:", payload.max_tokens);
1047
1047
  }
1048
1048
  const requestId = generateRequestIdFromPayload(payload);
1049
- logger$6.debug("Generated request ID:", requestId);
1049
+ logger$7.debug("Generated request ID:", requestId);
1050
1050
  const sessionId = getUUID(requestId);
1051
- logger$6.debug("Extracted session ID:", sessionId);
1051
+ logger$7.debug("Extracted session ID:", sessionId);
1052
1052
  const recordUsage = createCopilotTokenUsageRecorder({
1053
1053
  endpoint: "chat_completions",
1054
1054
  fallbackSessionId: sessionId,
@@ -1059,15 +1059,15 @@ async function handleCompletion$1(c) {
1059
1059
  sessionId
1060
1060
  });
1061
1061
  if (isNonStreaming$1(response)) {
1062
- debugJson(logger$6, "Non-streaming response:", response);
1062
+ debugJson(logger$7, "Non-streaming response:", response);
1063
1063
  recordUsage(normalizeOpenAIUsage(response.usage));
1064
1064
  return c.json(response);
1065
1065
  }
1066
- logger$6.debug("Streaming response");
1066
+ logger$7.debug("Streaming response");
1067
1067
  return streamSSE(c, async (stream) => {
1068
1068
  let usage = {};
1069
1069
  for await (const chunk of response) {
1070
- debugJson(logger$6, "Streaming chunk:", chunk);
1070
+ debugJson(logger$7, "Streaming chunk:", chunk);
1071
1071
  const parsedChunk = parseChatCompletionChunk(chunk);
1072
1072
  if (parsedChunk?.usage) usage = normalizeOpenAIUsage(parsedChunk.usage);
1073
1073
  await stream.writeSSE(chunk);
@@ -1750,7 +1750,7 @@ function getAnthropicToolUseBlocks(toolCalls) {
1750
1750
  }
1751
1751
  //#endregion
1752
1752
  //#region src/routes/provider/messages/count-tokens-handler.ts
1753
- const logger$5 = createHandlerLogger("provider-count-tokens-handler");
1753
+ const logger$6 = createHandlerLogger("provider-count-tokens-handler");
1754
1754
  async function handleProviderCountTokens(c) {
1755
1755
  const provider = c.req.param("provider");
1756
1756
  return await handleProviderCountTokensForProvider(c, {
@@ -1772,7 +1772,7 @@ async function handleProviderCountTokensForProvider(c, options) {
1772
1772
  toolContentSupportType: modelConfig?.toolContentSupportType ?? []
1773
1773
  } : void 0), createFallbackModel(modelId));
1774
1774
  const finalTokenCount = tokenCount.input + tokenCount.output;
1775
- logger$5.debug("provider.count_tokens.success", {
1775
+ logger$6.debug("provider.count_tokens.success", {
1776
1776
  provider,
1777
1777
  model: anthropicPayload.model,
1778
1778
  input_tokens: finalTokenCount
@@ -3616,7 +3616,7 @@ async function forwardProviderModels(providerConfig, requestHeaders) {
3616
3616
  }
3617
3617
  //#endregion
3618
3618
  //#region src/routes/provider/messages/handler.ts
3619
- const logger$4 = createHandlerLogger("provider-messages-handler");
3619
+ const logger$5 = createHandlerLogger("provider-messages-handler");
3620
3620
  const OPENAI_COMPATIBLE_CONTEXT_CACHE_MARKER_LIMIT = 4;
3621
3621
  const OPENAI_COMPATIBLE_CONTEXT_CACHE_CONTROL = { type: "ephemeral" };
3622
3622
  const OPENAI_COMPATIBLE_CONTEXT_CACHE_ROLES = new Set([
@@ -3642,7 +3642,7 @@ async function handleProviderMessagesForProvider(c, options) {
3642
3642
  try {
3643
3643
  const modelConfig = providerConfig.models?.[payload.model];
3644
3644
  applyModelDefaults(payload, modelConfig);
3645
- debugJson(logger$4, "provider.messages.request", {
3645
+ debugJson(logger$5, "provider.messages.request", {
3646
3646
  payload,
3647
3647
  provider
3648
3648
  });
@@ -3661,7 +3661,7 @@ async function handleProviderMessagesForProvider(c, options) {
3661
3661
  applyMissingExtraBody(payload, { extraBody: modelConfig?.extraBody });
3662
3662
  const upstreamResponse = await forwardProviderMessages(providerConfig, payload, c.req.raw.headers);
3663
3663
  if (!upstreamResponse.ok) {
3664
- logger$4.error("Failed to create responses", upstreamResponse);
3664
+ logger$5.error("Failed to create responses", upstreamResponse);
3665
3665
  throw new HTTPError("Failed to create responses", upstreamResponse);
3666
3666
  }
3667
3667
  const contentType = upstreamResponse.headers.get("content-type") ?? "";
@@ -3679,7 +3679,7 @@ async function handleProviderMessagesForProvider(c, options) {
3679
3679
  providerConfig
3680
3680
  });
3681
3681
  } catch (error) {
3682
- logger$4.error("provider.messages.error", {
3682
+ logger$5.error("provider.messages.error", {
3683
3683
  provider,
3684
3684
  error
3685
3685
  });
@@ -3692,13 +3692,13 @@ const handleOpenAIResponsesProviderMessages = async (c, options) => {
3692
3692
  const responsesPayload = translateAnthropicMessagesToResponsesPayload(payload);
3693
3693
  applyResponsesApiContextManagement(responsesPayload, selectedModel?.capabilities.limits.max_prompt_tokens);
3694
3694
  compactInputByLatestCompaction(responsesPayload);
3695
- debugJson(logger$4, "provider.messages.responses.request", {
3695
+ debugJson(logger$5, "provider.messages.responses.request", {
3696
3696
  payload: responsesPayload,
3697
3697
  provider
3698
3698
  });
3699
3699
  const upstreamResponse = providerConfig.name === "codex" ? await forwardCodexResponses(responsesPayload, c.req.raw.headers, providerConfig.baseUrl) : await forwardProviderResponses(providerConfig, responsesPayload, c.req.raw.headers);
3700
3700
  if (!upstreamResponse.ok) {
3701
- logger$4.error("Failed to create provider responses", upstreamResponse);
3701
+ logger$5.error("Failed to create provider responses", upstreamResponse);
3702
3702
  throw new HTTPError("Failed to create provider responses", upstreamResponse);
3703
3703
  }
3704
3704
  if (responsesPayload.stream) return streamResponsesProviderMessages({
@@ -3745,13 +3745,13 @@ const applyOpenAICompatibleExtraBodyThinkingBudget = (payload, options) => {
3745
3745
  const handleOpenAICompatibleProviderMessages = async (c, options) => {
3746
3746
  const { modelConfig, payload, provider, providerConfig } = options;
3747
3747
  const openAIPayload = createOpenAICompatiblePayload(payload, modelConfig);
3748
- debugJson(logger$4, "provider.messages.openai_compatible.request", {
3748
+ debugJson(logger$5, "provider.messages.openai_compatible.request", {
3749
3749
  payload: openAIPayload,
3750
3750
  provider
3751
3751
  });
3752
3752
  const upstreamResponse = await forwardProviderChatCompletions(providerConfig, openAIPayload, c.req.raw.headers);
3753
3753
  if (!upstreamResponse.ok) {
3754
- logger$4.error("Failed to create openai-compatible responses", upstreamResponse);
3754
+ logger$5.error("Failed to create openai-compatible responses", upstreamResponse);
3755
3755
  throw new HTTPError("Failed to create openai-compatible responses", upstreamResponse);
3756
3756
  }
3757
3757
  const contentType = upstreamResponse.headers.get("content-type") ?? "";
@@ -3833,12 +3833,12 @@ const setContextCacheControl = (part) => {
3833
3833
  part.cache_control = { ...OPENAI_COMPATIBLE_CONTEXT_CACHE_CONTROL };
3834
3834
  };
3835
3835
  const streamProviderMessages = ({ c, payload, provider, providerConfig, upstreamResponse }) => {
3836
- logger$4.debug("provider.messages.streaming");
3836
+ logger$5.debug("provider.messages.streaming");
3837
3837
  const recordUsage = createProviderMessagesUsageRecorder(payload, provider);
3838
3838
  return streamSSE(c, async (stream) => {
3839
3839
  let usage = {};
3840
3840
  for await (const chunk of events(upstreamResponse)) {
3841
- logger$4.debug("provider.messages.raw_stream_event:", chunk.data);
3841
+ logger$5.debug("provider.messages.raw_stream_event:", chunk.data);
3842
3842
  const eventName = chunk.event;
3843
3843
  if (eventName === "ping") {
3844
3844
  await stream.writeSSE({
@@ -3864,7 +3864,7 @@ const streamProviderMessages = ({ c, payload, provider, providerConfig, upstream
3864
3864
  });
3865
3865
  };
3866
3866
  const streamOpenAICompatibleProviderMessages = ({ c, payload, provider, upstreamResponse }) => {
3867
- logger$4.debug("provider.messages.openai_compatible.streaming");
3867
+ logger$5.debug("provider.messages.openai_compatible.streaming");
3868
3868
  const recordUsage = createProviderMessagesUsageRecorder(payload, provider);
3869
3869
  return streamSSE(c, async (stream) => {
3870
3870
  let usage = {};
@@ -3876,7 +3876,7 @@ const streamOpenAICompatibleProviderMessages = ({ c, payload, provider, upstream
3876
3876
  thinkingBlockOpen: false
3877
3877
  };
3878
3878
  for await (const chunk of events(upstreamResponse)) {
3879
- logger$4.debug("provider.messages.openai_compatible.raw_stream_event:", chunk.data);
3879
+ logger$5.debug("provider.messages.openai_compatible.raw_stream_event:", chunk.data);
3880
3880
  if (chunk.event === "ping") {
3881
3881
  await stream.writeSSE({
3882
3882
  event: "ping",
@@ -3894,7 +3894,7 @@ const streamOpenAICompatibleProviderMessages = ({ c, payload, provider, upstream
3894
3894
  const events = translateChunkToAnthropicEvents(parsed, streamState);
3895
3895
  for (const event of events) {
3896
3896
  const eventData = JSON.stringify(event);
3897
- debugLazy(logger$4, () => ["provider.messages.openai_compatible.translated_event:", eventData]);
3897
+ debugLazy(logger$5, () => ["provider.messages.openai_compatible.translated_event:", eventData]);
3898
3898
  await stream.writeSSE({
3899
3899
  event: event.type,
3900
3900
  data: eventData
@@ -3903,7 +3903,7 @@ const streamOpenAICompatibleProviderMessages = ({ c, payload, provider, upstream
3903
3903
  }
3904
3904
  for (const event of flushPendingAnthropicStreamEvents(streamState)) {
3905
3905
  const eventData = JSON.stringify(event);
3906
- debugLazy(logger$4, () => ["provider.messages.openai_compatible.translated_event:", eventData]);
3906
+ debugLazy(logger$5, () => ["provider.messages.openai_compatible.translated_event:", eventData]);
3907
3907
  await stream.writeSSE({
3908
3908
  event: event.type,
3909
3909
  data: eventData
@@ -3913,13 +3913,13 @@ const streamOpenAICompatibleProviderMessages = ({ c, payload, provider, upstream
3913
3913
  });
3914
3914
  };
3915
3915
  const streamResponsesProviderMessages = ({ c, payload, provider, providerConfig, upstreamResponse }) => {
3916
- logger$4.debug("provider.messages.responses.streaming", { provider });
3916
+ logger$5.debug("provider.messages.responses.streaming", { provider });
3917
3917
  const recordUsage = createProviderMessagesUsageRecorder(payload, provider);
3918
3918
  return streamSSE(c, async (stream) => {
3919
3919
  let usage = {};
3920
3920
  const streamState = createResponsesStreamState({ toolSearchName: resolveBridgeToolSearchName(payload.tools) });
3921
3921
  for await (const chunk of events(upstreamResponse)) {
3922
- logger$4.debug("provider.messages.responses.raw_stream_event:", chunk.data);
3922
+ logger$5.debug("provider.messages.responses.raw_stream_event:", chunk.data);
3923
3923
  if (chunk.event === "ping") {
3924
3924
  await stream.writeSSE({
3925
3925
  event: "ping",
@@ -3937,7 +3937,7 @@ const streamResponsesProviderMessages = ({ c, payload, provider, providerConfig,
3937
3937
  const events = translateResponsesStreamEvent(parsed, streamState);
3938
3938
  for (const event of events) {
3939
3939
  const eventData = JSON.stringify(event);
3940
- debugLazy(logger$4, () => ["provider.messages.responses.translated_event:", eventData]);
3940
+ debugLazy(logger$5, () => ["provider.messages.responses.translated_event:", eventData]);
3941
3941
  await stream.writeSSE({
3942
3942
  event: event.type,
3943
3943
  data: eventData
@@ -3958,7 +3958,7 @@ const parseOpenAICompatibleStreamChunk = (data) => {
3958
3958
  try {
3959
3959
  return JSON.parse(data);
3960
3960
  } catch (error) {
3961
- logger$4.error("provider.messages.openai_compatible.parse_chunk_error", {
3961
+ logger$5.error("provider.messages.openai_compatible.parse_chunk_error", {
3962
3962
  data,
3963
3963
  error
3964
3964
  });
@@ -3971,7 +3971,7 @@ const parseResponsesProviderStreamChunk = (data, providerConfig) => {
3971
3971
  if (providerConfig.name === "codex") logCodexRateLimitsEvent(parsed);
3972
3972
  return providerConfig.name === "codex" ? normalizeCodexResponsesEvent(parsed) : parsed;
3973
3973
  } catch (error) {
3974
- logger$4.error("provider.messages.responses.parse_chunk_error", {
3974
+ logger$5.error("provider.messages.responses.parse_chunk_error", {
3975
3975
  provider: providerConfig.name,
3976
3976
  data,
3977
3977
  error
@@ -4002,7 +4002,7 @@ const parseProviderStreamEvent = (data, providerConfig) => {
4002
4002
  usage: {}
4003
4003
  };
4004
4004
  } catch (error) {
4005
- logger$4.error("provider.messages.streaming.adjust_tokens_error", {
4005
+ logger$5.error("provider.messages.streaming.adjust_tokens_error", {
4006
4006
  error,
4007
4007
  originalData: data
4008
4008
  });
@@ -4014,22 +4014,22 @@ const respondProviderMessagesJson = (c, options) => {
4014
4014
  const recordUsage = createProviderMessagesUsageRecorder(payload, provider);
4015
4015
  adjustInputTokens(providerConfig, body.usage);
4016
4016
  recordUsage(normalizeAnthropicUsage(body.usage));
4017
- debugJson(logger$4, "provider.messages.no_stream result:", body);
4017
+ debugJson(logger$5, "provider.messages.no_stream result:", body);
4018
4018
  return c.json(body);
4019
4019
  };
4020
4020
  const respondOpenAICompatibleProviderMessagesJson = (c, options) => {
4021
4021
  const { body, payload, provider } = options;
4022
4022
  createProviderMessagesUsageRecorder(payload, provider)(normalizeOpenAIUsage(body.usage));
4023
4023
  const anthropicResponse = translateToAnthropic(body);
4024
- debugJson(logger$4, "provider.messages.openai_compatible.no_stream result:", anthropicResponse);
4024
+ debugJson(logger$5, "provider.messages.openai_compatible.no_stream result:", anthropicResponse);
4025
4025
  return c.json(anthropicResponse);
4026
4026
  };
4027
4027
  const respondResponsesProviderMessagesJson = (c, options) => {
4028
4028
  const { body, payload, provider, providerConfig } = options;
4029
4029
  createProviderMessagesUsageRecorder(payload, provider)(normalizeResponsesUsage(body.usage));
4030
4030
  const anthropicResponse = translateResponsesResultToAnthropic(body, { toolSearchName: resolveBridgeToolSearchName(payload.tools) });
4031
- debugJson(logger$4, "provider.messages.responses.no_stream result:", anthropicResponse);
4032
- if (providerConfig.name === "codex") logger$4.debug("provider.messages.codex.no_stream.result");
4031
+ debugJson(logger$5, "provider.messages.responses.no_stream result:", anthropicResponse);
4032
+ if (providerConfig.name === "codex") logger$5.debug("provider.messages.codex.no_stream.result");
4033
4033
  return c.json(anthropicResponse);
4034
4034
  };
4035
4035
  const createProviderMessagesUsageRecorder = (payload, provider) => createProviderTokenUsageRecorder({
@@ -4041,7 +4041,7 @@ const createProviderMessagesUsageRecorder = (payload, provider) => createProvide
4041
4041
  const adjustInputTokens = (providerConfig, usage) => {
4042
4042
  if (!providerConfig.adjustInputTokens || !usage) return;
4043
4043
  usage.input_tokens = Math.max(0, (usage.input_tokens ?? 0) - (usage.cache_read_input_tokens ?? 0) - (usage.cache_creation_input_tokens ?? 0));
4044
- debugJson(logger$4, "provider.messages.adjusted_usage:", usage);
4044
+ debugJson(logger$5, "provider.messages.adjusted_usage:", usage);
4045
4045
  };
4046
4046
  //#endregion
4047
4047
  //#region src/services/copilot/create-messages.ts
@@ -4628,7 +4628,7 @@ const parseSubagentMarkerFromSystemReminder = (text) => {
4628
4628
  };
4629
4629
  //#endregion
4630
4630
  //#region src/routes/messages/handler.ts
4631
- const logger$3 = createHandlerLogger("messages-handler");
4631
+ const logger$4 = createHandlerLogger("messages-handler");
4632
4632
  const messagesFlowHandlers = {
4633
4633
  handleWithChatCompletions,
4634
4634
  handleWithMessagesApi,
@@ -4638,7 +4638,7 @@ async function handleCompletion(c) {
4638
4638
  const anthropicPayload = await c.req.json();
4639
4639
  const requestedModel = anthropicPayload.model;
4640
4640
  anthropicPayload.model = resolveMappedModel(anthropicPayload.model);
4641
- if (anthropicPayload.model !== requestedModel) logger$3.debug(`Resolved model mapping: ${requestedModel} -> ${anthropicPayload.model}`);
4641
+ if (anthropicPayload.model !== requestedModel) logger$4.debug(`Resolved model mapping: ${requestedModel} -> ${anthropicPayload.model}`);
4642
4642
  const providerModelAlias = parseProviderModelAlias(anthropicPayload.model);
4643
4643
  if (providerModelAlias) {
4644
4644
  anthropicPayload.model = providerModelAlias.model;
@@ -4648,24 +4648,24 @@ async function handleCompletion(c) {
4648
4648
  });
4649
4649
  }
4650
4650
  await checkRateLimit(state);
4651
- debugJson(logger$3, "Anthropic request payload:", anthropicPayload);
4651
+ debugJson(logger$4, "Anthropic request payload:", anthropicPayload);
4652
4652
  sanitizeIdeTools(anthropicPayload);
4653
4653
  const subagentMarker = parseSubagentMarkerFromFirstUser(anthropicPayload);
4654
- if (subagentMarker) debugJson(logger$3, "Detected Subagent marker:", subagentMarker);
4654
+ if (subagentMarker) debugJson(logger$4, "Detected Subagent marker:", subagentMarker);
4655
4655
  const sessionId = getRootSessionId(anthropicPayload, c);
4656
- logger$3.debug("Extracted session ID:", sessionId);
4656
+ logger$4.debug("Extracted session ID:", sessionId);
4657
4657
  const compactType = getCompactType(anthropicPayload);
4658
4658
  const anthropicBeta = c.req.header("anthropic-beta");
4659
- logger$3.debug("Anthropic Beta header:", anthropicBeta);
4659
+ logger$4.debug("Anthropic Beta header:", anthropicBeta);
4660
4660
  const noTools = !anthropicPayload.tools || anthropicPayload.tools.length === 0;
4661
4661
  if (anthropicBeta && noTools && compactType === 0) anthropicPayload.model = getSmallModel();
4662
- if (compactType) logger$3.debug("Compact request type:", compactType);
4662
+ if (compactType) logger$4.debug("Compact request type:", compactType);
4663
4663
  const lastMessageCacheControl = getLastMessageContentCacheControl(anthropicPayload.messages.at(-1));
4664
4664
  stripToolReferenceTurnBoundary(anthropicPayload);
4665
4665
  mergeToolResultForClaude(anthropicPayload, { skipLastMessage: compactType === 1 });
4666
4666
  applyLastMessageCacheControl(anthropicPayload, lastMessageCacheControl);
4667
4667
  const requestId = generateRequestIdFromPayload(anthropicPayload, sessionId);
4668
- logger$3.debug("Generated request ID:", requestId);
4668
+ logger$4.debug("Generated request ID:", requestId);
4669
4669
  if (state.manualApprove) await awaitApproval();
4670
4670
  const selectedModel = findEndpointModel(anthropicPayload.model);
4671
4671
  anthropicPayload.model = selectedModel?.id ?? anthropicPayload.model;
@@ -4676,7 +4676,7 @@ async function handleCompletion(c) {
4676
4676
  requestId,
4677
4677
  sessionId,
4678
4678
  compactType,
4679
- logger: logger$3
4679
+ logger: logger$4
4680
4680
  });
4681
4681
  if (shouldUseResponsesApi(selectedModel, compactType)) return await messagesFlowHandlers.handleWithResponsesApi(c, anthropicPayload, {
4682
4682
  subagentMarker,
@@ -4684,14 +4684,14 @@ async function handleCompletion(c) {
4684
4684
  requestId,
4685
4685
  sessionId,
4686
4686
  compactType,
4687
- logger: logger$3
4687
+ logger: logger$4
4688
4688
  });
4689
4689
  return await messagesFlowHandlers.handleWithChatCompletions(c, anthropicPayload, {
4690
4690
  subagentMarker,
4691
4691
  requestId,
4692
4692
  sessionId,
4693
4693
  compactType,
4694
- logger: logger$3
4694
+ logger: logger$4
4695
4695
  });
4696
4696
  }
4697
4697
  const MESSAGES_ENDPOINT = "/v1/messages";
@@ -4766,7 +4766,7 @@ providerMessageRoutes.post("/count_tokens", async (c) => {
4766
4766
  });
4767
4767
  //#endregion
4768
4768
  //#region src/routes/provider/models/route.ts
4769
- const logger$2 = createHandlerLogger("provider-models-handler");
4769
+ const logger$3 = createHandlerLogger("provider-models-handler");
4770
4770
  const providerModelRoutes = new Hono();
4771
4771
  providerModelRoutes.get("/", async (c) => {
4772
4772
  const provider = c.req.param("provider") ?? "";
@@ -4785,13 +4785,13 @@ providerModelRoutes.get("/", async (c) => {
4785
4785
  });
4786
4786
  }
4787
4787
  const upstreamResponse = await forwardProviderModels(providerConfig, c.req.raw.headers);
4788
- logger$2.debug("provider.models.response", {
4788
+ logger$3.debug("provider.models.response", {
4789
4789
  provider,
4790
4790
  statusCode: upstreamResponse.status
4791
4791
  });
4792
4792
  return createProviderProxyResponse(upstreamResponse);
4793
4793
  } catch (error) {
4794
- logger$2.error("provider.models.error", {
4794
+ logger$3.error("provider.models.error", {
4795
4795
  provider,
4796
4796
  error
4797
4797
  });
@@ -4799,6 +4799,109 @@ providerModelRoutes.get("/", async (c) => {
4799
4799
  }
4800
4800
  });
4801
4801
  //#endregion
4802
+ //#region src/routes/provider/responses/handler.ts
4803
+ const logger$2 = createHandlerLogger("provider-responses-handler");
4804
+ async function handleProviderResponsesForProvider(c, options) {
4805
+ const { payload, provider } = options;
4806
+ debugJson(logger$2, "Responses request payload:", {
4807
+ payload,
4808
+ provider
4809
+ });
4810
+ const providerConfig = await resolveProviderConfig(provider);
4811
+ if (providerConfig?.type !== "openai-responses") return c.json({ error: {
4812
+ message: `Provider '${provider}' does not support the /v1/responses endpoint`,
4813
+ type: "invalid_request_error"
4814
+ } }, 400);
4815
+ applyResponsesApiContextManagement(payload, (providerConfig.name === "codex" ? getModels().data.find((model) => model.id === payload.model) : void 0)?.capabilities.limits.max_prompt_tokens ?? 0);
4816
+ const contextManagement = payload.context_management;
4817
+ debugJson(logger$2, "Translated Responses request payload:", {
4818
+ contextManagement,
4819
+ provider
4820
+ });
4821
+ const upstreamResponse = providerConfig.name === "codex" ? await forwardCodexResponses(payload, c.req.raw.headers, providerConfig.baseUrl) : await forwardProviderResponses(providerConfig, payload, c.req.raw.headers);
4822
+ if (!upstreamResponse.ok) throw new HTTPError(`Failed to create ${provider} responses`, upstreamResponse);
4823
+ const recordUsage = createProviderResponsesUsageRecorder(payload, provider);
4824
+ if (providerConfig.name === "codex" && payload.stream) {
4825
+ let usage = {};
4826
+ return createProviderProxyResponse(upstreamResponse, createStandardizedCodexResponsesEventStream(getResponsesEvents(upstreamResponse), {
4827
+ onClose: () => {
4828
+ recordUsage(usage);
4829
+ },
4830
+ onChunk: (chunk) => {
4831
+ debugJson(logger$2, "Responses stream chunk:", chunk);
4832
+ },
4833
+ onEvent: (event) => {
4834
+ const nextUsage = getResponsesStreamEventUsage(event);
4835
+ if (nextUsage) usage = nextUsage;
4836
+ }
4837
+ }));
4838
+ }
4839
+ if (payload.stream) recordProviderResponsesStreamUsage(upstreamResponse.clone(), {
4840
+ normalizeCodex: providerConfig.name === "codex",
4841
+ provider,
4842
+ recordUsage
4843
+ }).catch((error) => {
4844
+ logger$2.warn("provider.responses.usage_stream_error", {
4845
+ provider,
4846
+ error: getErrorMessage(error)
4847
+ });
4848
+ });
4849
+ else recordUsage(normalizeResponsesUsage((await upstreamResponse.clone().json()).usage));
4850
+ return createProviderProxyResponse(upstreamResponse);
4851
+ }
4852
+ const getErrorMessage = (error) => {
4853
+ if (error instanceof Error && error.message) return error.message;
4854
+ return String(error);
4855
+ };
4856
+ const createProviderResponsesUsageRecorder = (payload, provider) => {
4857
+ const sessionAffinity = requestContext.getStore()?.sessionAffinity?.trim() || null;
4858
+ return createProviderTokenUsageRecorder({
4859
+ endpoint: "responses",
4860
+ model: payload.model,
4861
+ providerName: provider,
4862
+ sessionId: sessionAffinity ?? ""
4863
+ });
4864
+ };
4865
+ const recordProviderResponsesStreamUsage = async (upstreamResponse, options) => {
4866
+ let usage = {};
4867
+ try {
4868
+ for await (const chunk of getResponsesEvents(upstreamResponse)) {
4869
+ debugJson(logger$2, "Responses stream chunk:", chunk);
4870
+ if (!chunk.data || chunk.data === "[DONE]") continue;
4871
+ const parsed = parseProviderResponsesStreamEvent(chunk.data, {
4872
+ normalizeCodex: options.normalizeCodex,
4873
+ provider: options.provider
4874
+ });
4875
+ if (parsed) {
4876
+ const nextUsage = getResponsesStreamEventUsage(parsed);
4877
+ if (nextUsage) usage = nextUsage;
4878
+ }
4879
+ }
4880
+ } finally {
4881
+ options.recordUsage(usage);
4882
+ }
4883
+ };
4884
+ const parseProviderResponsesStreamEvent = (data, options) => {
4885
+ try {
4886
+ const parsed = JSON.parse(data);
4887
+ return options.normalizeCodex ? normalizeCodexResponsesEvent(parsed) : parsed;
4888
+ } catch (error) {
4889
+ logger$2.error("provider.responses.parse_chunk_error", {
4890
+ provider: options.provider,
4891
+ data,
4892
+ error
4893
+ });
4894
+ return null;
4895
+ }
4896
+ };
4897
+ const getResponsesStreamEventUsage = (event) => {
4898
+ if (event.type === "response.completed" || event.type === "response.failed" || event.type === "response.incomplete") return normalizeResponsesUsage(event.response.usage);
4899
+ return null;
4900
+ };
4901
+ const getResponsesEvents = (response) => {
4902
+ return events(response);
4903
+ };
4904
+ //#endregion
4802
4905
  //#region src/routes/responses/stream-id-sync.ts
4803
4906
  const createStreamIdTracker = () => ({ outputItems: /* @__PURE__ */ new Map() });
4804
4907
  const fixStreamIds = (data, event, tracker) => {
@@ -4844,7 +4947,6 @@ const responsesHandlerDependencies = {
4844
4947
  };
4845
4948
  const handleResponses = async (c) => {
4846
4949
  const payload = await c.req.json();
4847
- debugJson(logger$1, "Responses request payload:", payload);
4848
4950
  const providerModelAlias = parseProviderModelAlias(payload.model);
4849
4951
  if (providerModelAlias) {
4850
4952
  payload.model = providerModelAlias.model;
@@ -4853,6 +4955,7 @@ const handleResponses = async (c) => {
4853
4955
  provider: providerModelAlias.provider
4854
4956
  });
4855
4957
  }
4958
+ debugJson(logger$1, "Responses request payload:", payload);
4856
4959
  await responsesHandlerDependencies.checkRateLimit(state);
4857
4960
  const requestId = generateRequestIdFromPayload({ messages: payload.input });
4858
4961
  logger$1.debug("Generated request ID:", requestId);
@@ -4909,30 +5012,6 @@ const handleResponses = async (c) => {
4909
5012
  recordUsage(normalizeResponsesUsage(response.usage));
4910
5013
  return c.json(response);
4911
5014
  };
4912
- const handleProviderResponsesForProvider = async (c, options) => {
4913
- const { payload, provider } = options;
4914
- const providerConfig = await resolveProviderConfig(provider);
4915
- if (providerConfig?.type !== "openai-responses") return c.json({ error: {
4916
- message: `Provider '${provider}' does not support the /v1/responses endpoint`,
4917
- type: "invalid_request_error"
4918
- } }, 400);
4919
- const upstreamResponse = providerConfig.name === "codex" ? await forwardCodexResponses(payload, c.req.raw.headers, providerConfig.baseUrl) : await forwardProviderResponses(providerConfig, payload, c.req.raw.headers);
4920
- if (!upstreamResponse.ok) throw new HTTPError(`Failed to create ${provider} responses`, upstreamResponse);
4921
- const recordUsage = createProviderResponsesUsageRecorder(payload, provider);
4922
- if (payload.stream) recordProviderResponsesStreamUsage(upstreamResponse.clone(), {
4923
- normalizeCodex: providerConfig.name === "codex",
4924
- provider,
4925
- recordUsage
4926
- }).catch((error) => {
4927
- logger$1.warn("provider.responses.usage_stream_error", {
4928
- provider,
4929
- error: getErrorMessage(error)
4930
- });
4931
- });
4932
- else recordUsage(normalizeResponsesUsage((await upstreamResponse.clone().json()).usage));
4933
- if (providerConfig.name === "codex" && payload.stream) return createProviderProxyResponse(upstreamResponse, createStandardizedCodexResponsesEventStream(getResponsesEvents(upstreamResponse)));
4934
- return createProviderProxyResponse(upstreamResponse);
4935
- };
4936
5015
  const isAsyncIterable = (value) => Boolean(value) && typeof value[Symbol.asyncIterator] === "function";
4937
5016
  const isStreamingRequested = (payload) => Boolean(payload.stream);
4938
5017
  const parseResponsesStreamEvent = (chunk) => {
@@ -4944,51 +5023,6 @@ const parseResponsesStreamEvent = (chunk) => {
4944
5023
  return null;
4945
5024
  }
4946
5025
  };
4947
- const getErrorMessage = (error) => {
4948
- if (error instanceof Error && error.message) return error.message;
4949
- return String(error);
4950
- };
4951
- const createProviderResponsesUsageRecorder = (payload, provider) => {
4952
- const sessionAffinity = requestContext.getStore()?.sessionAffinity?.trim() || null;
4953
- return createProviderTokenUsageRecorder({
4954
- endpoint: "responses",
4955
- model: payload.model,
4956
- providerName: provider,
4957
- sessionId: sessionAffinity ?? ""
4958
- });
4959
- };
4960
- const recordProviderResponsesStreamUsage = async (upstreamResponse, options) => {
4961
- let usage = {};
4962
- try {
4963
- for await (const chunk of getResponsesEvents(upstreamResponse)) {
4964
- debugJson(logger$1, "Responses stream chunk:", chunk);
4965
- if (!chunk.data || chunk.data === "[DONE]") continue;
4966
- const parsed = parseProviderResponsesStreamEvent(chunk.data, {
4967
- normalizeCodex: options.normalizeCodex,
4968
- provider: options.provider
4969
- });
4970
- if (parsed?.type === "response.completed" || parsed?.type === "response.failed" || parsed?.type === "response.incomplete") usage = normalizeResponsesUsage(parsed.response.usage);
4971
- }
4972
- } finally {
4973
- options.recordUsage(usage);
4974
- }
4975
- };
4976
- const parseProviderResponsesStreamEvent = (data, options) => {
4977
- try {
4978
- const parsed = JSON.parse(data);
4979
- return options.normalizeCodex ? normalizeCodexResponsesEvent(parsed) : parsed;
4980
- } catch (error) {
4981
- logger$1.error("provider.responses.parse_chunk_error", {
4982
- provider: options.provider,
4983
- data,
4984
- error
4985
- });
4986
- return null;
4987
- }
4988
- };
4989
- const getResponsesEvents = (response) => {
4990
- return events(response);
4991
- };
4992
5026
  const removeWebSearchTool = (payload) => {
4993
5027
  if (!Array.isArray(payload.tools) || payload.tools.length === 0) return;
4994
5028
  payload.tools = payload.tools.filter((t) => {
@@ -5121,4 +5155,4 @@ server.route("/:provider/v1/models", providerModelRoutes);
5121
5155
  //#endregion
5122
5156
  export { server };
5123
5157
 
5124
- //# sourceMappingURL=server-D5O9IzAY.js.map
5158
+ //# sourceMappingURL=server-C3iJWAUP.js.map