@jeffreycao/copilot-api 2.7.25 → 2.7.26

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.
@@ -2193,7 +2193,7 @@ async function forwardProviderImages(providerConfig, request, operation) {
2193
2193
  }
2194
2194
  //#endregion
2195
2195
  //#region src/routes/alpha-search/alpha-search-responses.ts
2196
- const logger$19 = createHandlerLogger("alpha-search-responses-handler");
2196
+ const logger$20 = createHandlerLogger("alpha-search-responses-handler");
2197
2197
  const SESSION_TTL_MS = 36e5;
2198
2198
  const MAX_SESSIONS = 128;
2199
2199
  const MAX_URL_REFERENCES = 256;
@@ -2551,14 +2551,14 @@ function createRemoteResponsesPayload(request, model, instruction) {
2551
2551
  };
2552
2552
  }
2553
2553
  async function requestProviderSearch(c, providerConfig, payload, model, sessionId) {
2554
- debugJson(logger$19, "Alpha search provider Responses request:", {
2554
+ debugJson(logger$20, "Alpha search provider Responses request:", {
2555
2555
  payload,
2556
2556
  provider: providerConfig.name
2557
2557
  });
2558
2558
  const upstreamResponse = await forwardProviderResponses(providerConfig, payload, c.req.raw.headers, { clientSignal: c.req.raw.signal });
2559
2559
  if (!upstreamResponse.ok) throw new HTTPError(`Failed to create ${providerConfig.name} responses for alpha search`, upstreamResponse);
2560
2560
  const result = await upstreamResponse.json();
2561
- debugJson(logger$19, "Alpha search provider Responses result:", {
2561
+ debugJson(logger$20, "Alpha search provider Responses result:", {
2562
2562
  provider: providerConfig.name,
2563
2563
  result
2564
2564
  });
@@ -2574,7 +2574,7 @@ async function requestProviderSearch(c, providerConfig, payload, model, sessionI
2574
2574
  return result;
2575
2575
  }
2576
2576
  async function requestCopilotSearch(payload, model, requestId, sessionId, clientSignal) {
2577
- debugJson(logger$19, "Alpha search Copilot Responses request:", payload);
2577
+ debugJson(logger$20, "Alpha search Copilot Responses request:", payload);
2578
2578
  const result = await alphaSearchResponsesDependencies.createResponses(payload, {
2579
2579
  vision: false,
2580
2580
  initiator: "agent",
@@ -2583,7 +2583,7 @@ async function requestCopilotSearch(payload, model, requestId, sessionId, client
2583
2583
  sessionId,
2584
2584
  clientSignal
2585
2585
  });
2586
- debugJson(logger$19, "Alpha search Copilot Responses result:", result);
2586
+ debugJson(logger$20, "Alpha search Copilot Responses result:", result);
2587
2587
  alphaSearchResponsesDependencies.createUsageRecorder(model, sessionId)({
2588
2588
  ...normalizeResponsesUsage(result.usage),
2589
2589
  total_nano_aiu: normalizeOptionalToken(result.copilot_usage?.total_nano_aiu)
@@ -2698,7 +2698,7 @@ async function forwardCodexAlphaSearch(request) {
2698
2698
  }
2699
2699
  //#endregion
2700
2700
  //#region src/routes/alpha-search/route.ts
2701
- const logger$18 = createHandlerLogger("alpha-search-handler");
2701
+ const logger$19 = createHandlerLogger("alpha-search-handler");
2702
2702
  const alphaSearchRoutes = new Hono();
2703
2703
  const alphaSearchRouteDependencies = {
2704
2704
  findEndpointModel,
@@ -2718,9 +2718,9 @@ function parseDebugBody(body) {
2718
2718
  }
2719
2719
  }
2720
2720
  async function forwardCodexAlphaSearchRequest(request) {
2721
- await debugJsonAsync(logger$18, "alpha_search.codex.request", async () => ({ body: parseDebugBody(await request.clone().text()) }));
2721
+ await debugJsonAsync(logger$19, "alpha_search.codex.request", async () => ({ body: parseDebugBody(await request.clone().text()) }));
2722
2722
  const upstreamResponse = await alphaSearchRouteDependencies.forwardCodexAlphaSearch(request);
2723
- await debugJsonAsync(logger$18, "alpha_search.codex.response", async () => ({
2723
+ await debugJsonAsync(logger$19, "alpha_search.codex.response", async () => ({
2724
2724
  body: parseDebugBody(await upstreamResponse.clone().text()),
2725
2725
  statusCode: upstreamResponse.status
2726
2726
  }));
@@ -2831,7 +2831,7 @@ alphaSearchRoutes.post("/", async (c) => {
2831
2831
  try {
2832
2832
  return await handleAlphaSearchRequest(c);
2833
2833
  } catch (error) {
2834
- logger$18.error("alpha_search.error", { error });
2834
+ logger$19.error("alpha_search.error", { error });
2835
2835
  return await forwardError(c, error);
2836
2836
  }
2837
2837
  });
@@ -2978,7 +2978,7 @@ const normalizeProviderResponsesReasoningEffort = (payload, providerConfig) => {
2978
2978
  };
2979
2979
  //#endregion
2980
2980
  //#region src/routes/provider/chat-completions/handler.ts
2981
- const logger$17 = createHandlerLogger("provider-chat-completions-handler");
2981
+ const logger$18 = createHandlerLogger("provider-chat-completions-handler");
2982
2982
  async function handleProviderChatCompletionsForProvider(c, options) {
2983
2983
  const { payload, provider } = options;
2984
2984
  const configuredProvider = await resolveProviderConfig(provider);
@@ -2993,13 +2993,13 @@ async function handleProviderChatCompletionsForProvider(c, options) {
2993
2993
  applyProviderStreamOptions(payload);
2994
2994
  applyDashScopePreserveThinkingDefault(payload, providerConfig);
2995
2995
  applyProviderContextCache(payload, modelConfig, providerConfig);
2996
- debugJson(logger$17, "provider.chat_completions.request", {
2996
+ debugJson(logger$18, "provider.chat_completions.request", {
2997
2997
  payload,
2998
2998
  provider
2999
2999
  });
3000
3000
  const upstreamResponse = await forwardProviderChatCompletions(providerConfig, payload, c.req.raw.headers, { clientSignal: c.req.raw.signal });
3001
3001
  if (!upstreamResponse.ok) {
3002
- logger$17.error("Failed to create provider chat completions", {
3002
+ logger$18.error("Failed to create provider chat completions", {
3003
3003
  provider,
3004
3004
  statusCode: upstreamResponse.status
3005
3005
  });
@@ -3013,7 +3013,7 @@ async function handleProviderChatCompletionsForProvider(c, options) {
3013
3013
  });
3014
3014
  const responseBody = await upstreamResponse.clone().json();
3015
3015
  recordUsage(normalizeOpenAIUsage(responseBody.usage));
3016
- debugJson(logger$17, "provider.chat_completions.response", responseBody);
3016
+ debugJson(logger$18, "provider.chat_completions.response", responseBody);
3017
3017
  return createProviderProxyResponse(upstreamResponse);
3018
3018
  }
3019
3019
  const applyProviderStreamOptions = (payload) => {
@@ -3035,12 +3035,12 @@ const createProviderChatCompletionsUsageRecorder = (payload, provider, modelConf
3035
3035
  providerName: provider
3036
3036
  });
3037
3037
  const streamProviderChatCompletions = (c, upstreamResponse, options) => {
3038
- logger$17.debug("provider.chat_completions.streaming", { provider: options.provider });
3038
+ logger$18.debug("provider.chat_completions.streaming", { provider: options.provider });
3039
3039
  return streamSSE(c, async (stream) => {
3040
3040
  let usage = {};
3041
3041
  try {
3042
3042
  for await (const chunk of events(upstreamResponse)) {
3043
- debugJson(logger$17, "provider.chat_completions.stream_chunk", chunk);
3043
+ debugJson(logger$18, "provider.chat_completions.stream_chunk", chunk);
3044
3044
  if (chunk.data && chunk.data !== "[DONE]") {
3045
3045
  const parsedChunk = parseChatCompletionChunkData(chunk.data);
3046
3046
  if (parsedChunk?.usage) usage = normalizeOpenAIUsage(parsedChunk.usage);
@@ -3099,7 +3099,7 @@ const createChatCompletions = async (payload, options) => {
3099
3099
  };
3100
3100
  //#endregion
3101
3101
  //#region src/routes/chat-completions/handler.ts
3102
- const logger$16 = createHandlerLogger("chat-completions-handler");
3102
+ const logger$17 = createHandlerLogger("chat-completions-handler");
3103
3103
  async function handleCompletion$1(c) {
3104
3104
  let payload = await c.req.json();
3105
3105
  const requestedModel = payload.model;
@@ -3113,7 +3113,7 @@ async function handleCompletion$1(c) {
3113
3113
  provider: providerModelAlias.provider
3114
3114
  });
3115
3115
  }
3116
- debugJson(logger$16, "Request payload:", payload);
3116
+ debugJson(logger$17, "Request payload:", payload);
3117
3117
  const selectedModel = findEndpointModel(payload.model);
3118
3118
  payload.model = selectedModel?.id ?? payload.model;
3119
3119
  if (isNullish(payload.max_tokens) && isNullish(payload.max_completion_tokens)) {
@@ -3121,16 +3121,16 @@ async function handleCompletion$1(c) {
3121
3121
  ...payload,
3122
3122
  max_tokens: selectedModel?.capabilities.limits.max_output_tokens
3123
3123
  };
3124
- debugJson(logger$16, "Set max_tokens to:", payload.max_tokens);
3124
+ debugJson(logger$17, "Set max_tokens to:", payload.max_tokens);
3125
3125
  }
3126
3126
  if (payload.model.includes("gpt")) {
3127
3127
  if (isNullish(payload.max_completion_tokens)) payload.max_completion_tokens = payload.max_tokens;
3128
3128
  delete payload.max_tokens;
3129
3129
  }
3130
3130
  const requestId = generateRequestIdFromPayload(payload);
3131
- logger$16.debug("Generated request ID:", requestId);
3131
+ logger$17.debug("Generated request ID:", requestId);
3132
3132
  const sessionId = getUUID(requestId);
3133
- logger$16.debug("Extracted session ID:", sessionId);
3133
+ logger$17.debug("Extracted session ID:", sessionId);
3134
3134
  const recordUsage = createCopilotTokenUsageRecorder({
3135
3135
  endpoint: "chat_completions",
3136
3136
  fallbackSessionId: sessionId,
@@ -3142,18 +3142,18 @@ async function handleCompletion$1(c) {
3142
3142
  sessionId
3143
3143
  });
3144
3144
  if (isNonStreaming$1(response)) {
3145
- debugJson(logger$16, "Non-streaming response:", response);
3145
+ debugJson(logger$17, "Non-streaming response:", response);
3146
3146
  recordUsage({
3147
3147
  ...normalizeOpenAIUsage(response.usage),
3148
3148
  total_nano_aiu: normalizeOptionalToken(response.copilot_usage?.total_nano_aiu)
3149
3149
  });
3150
3150
  return c.json(response);
3151
3151
  }
3152
- logger$16.debug("Streaming response");
3152
+ logger$17.debug("Streaming response");
3153
3153
  return streamSSE(c, async (stream) => {
3154
3154
  let usage = {};
3155
3155
  for await (const chunk of response) {
3156
- debugJson(logger$16, "Streaming chunk:", chunk);
3156
+ debugJson(logger$17, "Streaming chunk:", chunk);
3157
3157
  const parsedChunk = parseChatCompletionChunk(chunk);
3158
3158
  if (parsedChunk?.usage || parsedChunk?.copilot_usage) usage = {
3159
3159
  ...normalizeOpenAIUsage(parsedChunk.usage),
@@ -3383,7 +3383,7 @@ async function forwardCodexImages(request, operation) {
3383
3383
  }
3384
3384
  //#endregion
3385
3385
  //#region src/routes/images/shared.ts
3386
- const logger$15 = createHandlerLogger("images-handler");
3386
+ const logger$16 = createHandlerLogger("images-handler");
3387
3387
  const imageRouteDependencies = {
3388
3388
  debugJsonAsync,
3389
3389
  getImageEditModel,
@@ -3431,16 +3431,16 @@ async function handleCodexImages(c, operation, resolvedProviderConfig, request =
3431
3431
  message: "Provider 'codex' not found or disabled",
3432
3432
  type: "invalid_request_error"
3433
3433
  } }, 404);
3434
- if (operation === "generations") await imageRouteDependencies.debugJsonAsync(logger$15, "images.generations.codex.request", async () => ({ body: await request.clone().text() }));
3435
- else debugJson(logger$15, "images.edits.codex.request", getContentMetadata(request.headers));
3434
+ if (operation === "generations") await imageRouteDependencies.debugJsonAsync(logger$16, "images.generations.codex.request", async () => ({ body: await request.clone().text() }));
3435
+ else debugJson(logger$16, "images.edits.codex.request", getContentMetadata(request.headers));
3436
3436
  const upstreamResponse = await forwardCodexImages(request, operation);
3437
- debugJson(logger$15, `images.${operation}.codex.response`, {
3437
+ debugJson(logger$16, `images.${operation}.codex.response`, {
3438
3438
  ...getContentMetadata(upstreamResponse.headers),
3439
3439
  statusCode: upstreamResponse.status
3440
3440
  });
3441
3441
  return createProviderProxyResponse(upstreamResponse);
3442
3442
  } catch (error) {
3443
- logger$15.error(`images.${operation}.codex.error`, { error });
3443
+ logger$16.error(`images.${operation}.codex.error`, { error });
3444
3444
  return await forwardError(c, error);
3445
3445
  }
3446
3446
  }
@@ -3459,7 +3459,7 @@ async function routeImagesRequest(c, operation, parsed) {
3459
3459
  const request = parsed.createRequest(providerModelAlias.model);
3460
3460
  if (providerConfig.name === "codex") return await handleCodexImages(c, operation, providerConfig, request);
3461
3461
  return await forwardProviderImagesWithLogging(providerConfig, request, operation, {
3462
- logger: logger$15,
3462
+ logger: logger$16,
3463
3463
  provider: providerModelAlias.provider
3464
3464
  });
3465
3465
  }
@@ -3953,12 +3953,12 @@ async function forwardXaiImages(providerConfig, request, operation, payload) {
3953
3953
  method: "POST",
3954
3954
  signal: request.signal
3955
3955
  }), operation, {
3956
- logger: logger$15,
3956
+ logger: logger$16,
3957
3957
  provider: "xai"
3958
3958
  }), void 0, {
3959
3959
  clientSignal: request.signal,
3960
3960
  onImageUrl: (url) => {
3961
- logger$15.info("images.xai.output.url", JSON.stringify({
3961
+ logger$16.info("images.xai.output.url", JSON.stringify({
3962
3962
  operation,
3963
3963
  url
3964
3964
  }));
@@ -3982,7 +3982,7 @@ async function handleXaiImageEdit(c, model, parsed) {
3982
3982
  }
3983
3983
  //#endregion
3984
3984
  //#region src/routes/images/temp-form-data.ts
3985
- const logger$14 = createHandlerLogger("images-temp-form-data");
3985
+ const logger$15 = createHandlerLogger("images-temp-form-data");
3986
3986
  const multipartStagingDependencies = { createWriteStream };
3987
3987
  /**
3988
3988
  * Matches the images forwarding timeouts: an upstream upload may take that
@@ -4174,7 +4174,7 @@ async function stageMultipartBodyToDisk(body, contentType, limitOverrides = {})
4174
4174
  recursive: true
4175
4175
  });
4176
4176
  } catch (error) {
4177
- logger$14.warn("Failed to remove staged images temp directory", {
4177
+ logger$15.warn("Failed to remove staged images temp directory", {
4178
4178
  directory,
4179
4179
  error
4180
4180
  });
@@ -4196,7 +4196,7 @@ async function stageMultipartBodyToDisk(body, contentType, limitOverrides = {})
4196
4196
  recursive: true
4197
4197
  });
4198
4198
  } catch (error) {
4199
- logger$14.warn("Failed to remove staged images temp directory on exit", {
4199
+ logger$15.warn("Failed to remove staged images temp directory on exit", {
4200
4200
  directory,
4201
4201
  error
4202
4202
  });
@@ -4277,7 +4277,7 @@ async function handleImagesEdits(c) {
4277
4277
  } }, error instanceof MultipartBodyTooLargeError ? 413 : 400);
4278
4278
  const invalidRequest = xaiImagesRequestErrorResponse(c, error);
4279
4279
  if (invalidRequest) return invalidRequest;
4280
- logger$15.error("images.edits.error", { error });
4280
+ logger$16.error("images.edits.error", { error });
4281
4281
  return await forwardError(c, error);
4282
4282
  }
4283
4283
  }
@@ -4329,7 +4329,7 @@ async function handleImagesGenerations(c) {
4329
4329
  } catch (error) {
4330
4330
  const invalidRequest = xaiImagesRequestErrorResponse(c, error);
4331
4331
  if (invalidRequest) return invalidRequest;
4332
- logger$15.error("images.generations.error", { error });
4332
+ logger$16.error("images.generations.error", { error });
4333
4333
  return await forwardError(c, error);
4334
4334
  }
4335
4335
  }
@@ -5431,7 +5431,7 @@ const prepareMessagesApiPayload = (payload, selectedModel) => {
5431
5431
  };
5432
5432
  //#endregion
5433
5433
  //#region src/routes/provider/messages/count-tokens-handler.ts
5434
- const logger$13 = createHandlerLogger("provider-count-tokens-handler");
5434
+ const logger$14 = createHandlerLogger("provider-count-tokens-handler");
5435
5435
  async function handleProviderCountTokens(c) {
5436
5436
  const provider = c.req.param("provider");
5437
5437
  const payload = await c.req.json();
@@ -5459,7 +5459,7 @@ async function handleProviderCountTokensForProvider(c, options) {
5459
5459
  const selectedModel = createFallbackModel(modelId);
5460
5460
  const tokenCount = await getTokenCount(openAIPayload, selectedModel);
5461
5461
  const finalTokenCount = tokenCount.input + tokenCount.output;
5462
- logger$13.debug("provider.count_tokens.success", {
5462
+ logger$14.debug("provider.count_tokens.success", {
5463
5463
  provider,
5464
5464
  model: anthropicPayload.model,
5465
5465
  input_tokens: finalTokenCount
@@ -8988,9 +8988,9 @@ async function forwardGoogleGenerateContent(provider, model, payload, requestHea
8988
8988
  }
8989
8989
  //#endregion
8990
8990
  //#region src/routes/provider/messages/google-handler.ts
8991
- const logger$12 = createHandlerLogger("provider-google-messages");
8991
+ const logger$13 = createHandlerLogger("provider-google-messages");
8992
8992
  async function handleGoogleProviderMessages(c, payload, provider, usageEndpoint) {
8993
- debugJson(logger$12, "provider.messages.google.original_request", payload);
8993
+ debugJson(logger$13, "provider.messages.google.original_request", payload);
8994
8994
  const translated = translateAnthropicToGoogle(payload);
8995
8995
  const modelConfig = provider.models?.[payload.model];
8996
8996
  const extraGenerationConfig = modelConfig?.extraBody?.generationConfig;
@@ -8999,7 +8999,7 @@ async function handleGoogleProviderMessages(c, payload, provider, usageEndpoint)
8999
8999
  for (const [key, value] of Object.entries(extraGenerationConfig)) if (generationConfig[key] === void 0) generationConfig[key] = value;
9000
9000
  }
9001
9001
  applyMissingExtraBody(translated, { extraBody: modelConfig?.extraBody });
9002
- debugJson(logger$12, "provider.messages.google.request", translated);
9002
+ debugJson(logger$13, "provider.messages.google.request", translated);
9003
9003
  const controller = new AbortController();
9004
9004
  const signal = AbortSignal.any([controller.signal, c.req.raw.signal]);
9005
9005
  const upstream = await forwardGoogleGenerateContent(provider, payload.model, translated, c.req.raw.headers, {
@@ -9026,7 +9026,7 @@ async function handleGoogleProviderMessages(c, payload, provider, usageEndpoint)
9026
9026
  stream.onAbort(() => controller.abort());
9027
9027
  const writeEvents = async (items) => {
9028
9028
  for (const item of items) {
9029
- debugJson(logger$12, "provider.messages.google.translated_event:", item);
9029
+ debugJson(logger$13, "provider.messages.google.translated_event:", item);
9030
9030
  await writeSSEIfConnected(stream, {
9031
9031
  event: item.type,
9032
9032
  data: JSON.stringify(item)
@@ -9038,14 +9038,14 @@ async function handleGoogleProviderMessages(c, payload, provider, usageEndpoint)
9038
9038
  if (response.headers.get("content-type")?.includes("text/event-stream")) for await (const event of events(response, signal)) {
9039
9039
  if (!event.data || event.data === "[DONE]") continue;
9040
9040
  const response = JSON.parse(event.data);
9041
- debugJson(logger$12, "provider.messages.google.raw_stream_event:", response);
9041
+ debugJson(logger$13, "provider.messages.google.raw_stream_event:", response);
9042
9042
  await writeEvents(translator.push(response));
9043
9043
  }
9044
9044
  else await writeEvents(translator.push(await response.json()));
9045
9045
  if (!signal.aborted) await writeEvents(translator.finish());
9046
9046
  } catch (error) {
9047
9047
  if (!signal.aborted) {
9048
- logger$12.warn("provider.messages.google.stream_interrupted", error);
9048
+ logger$13.warn("provider.messages.google.stream_interrupted", error);
9049
9049
  await writeEvents([{
9050
9050
  type: "error",
9051
9051
  error: {
@@ -9062,7 +9062,7 @@ async function handleGoogleProviderMessages(c, payload, provider, usageEndpoint)
9062
9062
  }
9063
9063
  //#endregion
9064
9064
  //#region src/routes/provider/messages/handler.ts
9065
- const logger$11 = createHandlerLogger("provider-messages-handler");
9065
+ const logger$12 = createHandlerLogger("provider-messages-handler");
9066
9066
  const providerMessagesHandlerDependencies = { resolveProviderConfig };
9067
9067
  async function handleProviderMessages(c) {
9068
9068
  const provider = c.req.param("provider");
@@ -9090,7 +9090,7 @@ async function handleProviderMessagesForProvider(c, options) {
9090
9090
  const providerConfig = resolveProviderConfigForModel(configuredProvider, payload.model);
9091
9091
  const modelConfig = providerConfig.models?.[payload.model];
9092
9092
  const effectiveType = providerConfig.type;
9093
- debugJson(logger$11, "provider.messages.request", {
9093
+ debugJson(logger$12, "provider.messages.request", {
9094
9094
  payload,
9095
9095
  provider
9096
9096
  });
@@ -9131,13 +9131,13 @@ async function handleProviderMessagesForProvider(c, options) {
9131
9131
  });
9132
9132
  }
9133
9133
  applyMissingExtraBody(payload, { extraBody: modelConfig?.extraBody });
9134
- debugJson(logger$11, "Translated provider.messages.request", {
9134
+ debugJson(logger$12, "Translated provider.messages.request", {
9135
9135
  payload,
9136
9136
  provider
9137
9137
  });
9138
9138
  const upstreamResponse = await forwardProviderMessages(providerConfig, payload, c.req.raw.headers, { clientSignal: c.req.raw.signal });
9139
9139
  if (!upstreamResponse.ok) {
9140
- logger$11.error("Failed to create responses", upstreamResponse);
9140
+ logger$12.error("Failed to create responses", upstreamResponse);
9141
9141
  throw new HTTPError("Failed to create responses", upstreamResponse);
9142
9142
  }
9143
9143
  const contentType = upstreamResponse.headers.get("content-type") ?? "";
@@ -9160,7 +9160,7 @@ async function handleProviderMessagesForProvider(c, options) {
9160
9160
  usageEndpoint
9161
9161
  });
9162
9162
  } catch (error) {
9163
- logger$11.error("provider.messages.error", {
9163
+ logger$12.error("provider.messages.error", {
9164
9164
  provider,
9165
9165
  error
9166
9166
  });
@@ -9171,8 +9171,8 @@ const handleOpenAIResponsesProviderWebSearchMessages = async (c, options) => {
9171
9171
  const { modelConfig, payload, provider, providerConfig, usageEndpoint } = options;
9172
9172
  const responsesPayload = prepareWebSearchResponsesPayload(payload);
9173
9173
  const normalizedReasoningEffort = normalizeProviderResponsesReasoningEffort(responsesPayload, providerConfig);
9174
- if (normalizedReasoningEffort) logger$11.debug(`Normalized reasoning effort from ${normalizedReasoningEffort.from} to ${normalizedReasoningEffort.to} based on the provider model configuration`);
9175
- debugJson(logger$11, "provider.messages.responses.web_search.request", {
9174
+ if (normalizedReasoningEffort) logger$12.debug(`Normalized reasoning effort from ${normalizedReasoningEffort.from} to ${normalizedReasoningEffort.to} based on the provider model configuration`);
9175
+ debugJson(logger$12, "provider.messages.responses.web_search.request", {
9176
9176
  payload: responsesPayload,
9177
9177
  provider
9178
9178
  });
@@ -9183,7 +9183,7 @@ const handleOpenAIResponsesProviderWebSearchMessages = async (c, options) => {
9183
9183
  errorMessagePrefix: `${provider} web search responses stream`,
9184
9184
  parseEvent: (data) => parseResponsesProviderStreamChunk(data, providerConfig),
9185
9185
  upstreamResponse,
9186
- logger: logger$11
9186
+ logger: logger$12
9187
9187
  });
9188
9188
  return respondWebSearchProviderMessagesJson(c, {
9189
9189
  body,
@@ -9205,7 +9205,7 @@ const handleOpenAIResponsesProviderWebSearchMessages = async (c, options) => {
9205
9205
  }
9206
9206
  const upstreamResponse = await forwardProviderResponses(providerConfig, responsesPayload, c.req.raw.headers, { clientSignal: c.req.raw.signal });
9207
9207
  if (!upstreamResponse.ok) {
9208
- logger$11.error("Failed to create provider web search responses", {
9208
+ logger$12.error("Failed to create provider web search responses", {
9209
9209
  provider,
9210
9210
  upstreamResponse
9211
9211
  });
@@ -9216,7 +9216,7 @@ const handleOpenAIResponsesProviderWebSearchMessages = async (c, options) => {
9216
9216
  errorMessagePrefix: `${provider} web search responses stream`,
9217
9217
  parseEvent: (data) => parseResponsesProviderStreamChunk(data, providerConfig),
9218
9218
  upstreamResponse: createResponsesHttpEventStream(upstreamResponse),
9219
- logger: logger$11
9219
+ logger: logger$12
9220
9220
  });
9221
9221
  return respondWebSearchProviderMessagesJson(c, {
9222
9222
  body,
@@ -9243,10 +9243,10 @@ const handleOpenAIResponsesProviderMessages = async (c, options) => {
9243
9243
  const wantsStream = payload.stream === true;
9244
9244
  const responsesPayload = translateAnthropicMessagesToResponsesPayload(payload);
9245
9245
  const normalizedMessagesReasoningEffort = normalizeProviderResponsesReasoningEffort(responsesPayload, providerConfig);
9246
- if (normalizedMessagesReasoningEffort) logger$11.debug(`Normalized reasoning effort from ${normalizedMessagesReasoningEffort.from} to ${normalizedMessagesReasoningEffort.to} based on the provider model configuration`);
9246
+ if (normalizedMessagesReasoningEffort) logger$12.debug(`Normalized reasoning effort from ${normalizedMessagesReasoningEffort.from} to ${normalizedMessagesReasoningEffort.to} based on the provider model configuration`);
9247
9247
  if (providerConfig.name === "codex" && !wantsStream) responsesPayload.stream = true;
9248
9248
  if (applyResponsesApiContextManagement(responsesPayload, selectedModel?.capabilities.limits.max_prompt_tokens, { source: "messages" })) compactInputByLatestCompaction(responsesPayload);
9249
- debugJson(logger$11, "provider.messages.responses.request", {
9249
+ debugJson(logger$12, "provider.messages.responses.request", {
9250
9250
  payload: responsesPayload,
9251
9251
  provider
9252
9252
  });
@@ -9267,7 +9267,7 @@ const handleOpenAIResponsesProviderMessages = async (c, options) => {
9267
9267
  errorMessagePrefix: `${provider} messages responses stream`,
9268
9268
  parseEvent: (data) => parseResponsesProviderStreamChunk(data, providerConfig),
9269
9269
  upstreamResponse,
9270
- logger: logger$11
9270
+ logger: logger$12
9271
9271
  });
9272
9272
  return respondResponsesProviderMessagesJson(c, {
9273
9273
  body,
@@ -9291,7 +9291,7 @@ const handleOpenAIResponsesProviderMessages = async (c, options) => {
9291
9291
  }
9292
9292
  const upstreamResponse = await forwardProviderResponses(providerConfig, responsesPayload, c.req.raw.headers, { clientSignal: c.req.raw.signal });
9293
9293
  if (!upstreamResponse.ok) {
9294
- logger$11.error("Failed to create provider responses", upstreamResponse);
9294
+ logger$12.error("Failed to create provider responses", upstreamResponse);
9295
9295
  throw new HTTPError("Failed to create provider responses", upstreamResponse);
9296
9296
  }
9297
9297
  if (responsesPayload.stream) return streamResponsesProviderMessages({
@@ -9337,13 +9337,13 @@ const applyOpenAICompatibleExtraBodyThinkingBudget = (payload, options) => {
9337
9337
  const handleOpenAICompatibleProviderMessages = async (c, options) => {
9338
9338
  const { modelConfig, payload, provider, providerConfig, usageEndpoint } = options;
9339
9339
  const openAIPayload = createOpenAICompatiblePayload(payload, modelConfig, providerConfig);
9340
- debugJson(logger$11, "provider.messages.openai_compatible.request", {
9340
+ debugJson(logger$12, "provider.messages.openai_compatible.request", {
9341
9341
  payload: openAIPayload,
9342
9342
  provider
9343
9343
  });
9344
9344
  const upstreamResponse = await forwardProviderChatCompletions(providerConfig, openAIPayload, c.req.raw.headers, { clientSignal: c.req.raw.signal });
9345
9345
  if (!upstreamResponse.ok) {
9346
- logger$11.error("Failed to create openai-compatible responses", upstreamResponse);
9346
+ logger$12.error("Failed to create openai-compatible responses", upstreamResponse);
9347
9347
  throw new HTTPError("Failed to create openai-compatible responses", upstreamResponse);
9348
9348
  }
9349
9349
  const contentType = upstreamResponse.headers.get("content-type") ?? "";
@@ -9424,7 +9424,7 @@ const applyOpenAICompatibleRequestOverrides = (payload, options) => {
9424
9424
  for (const key of allowedKeys) if (Object.hasOwn(options.source, key)) payload[key] = options.source[key];
9425
9425
  };
9426
9426
  const streamProviderMessages = ({ c, modelConfig, payload, pricingCurrency, provider, upstreamResponse, usageEndpoint }) => {
9427
- logger$11.debug("provider.messages.streaming");
9427
+ logger$12.debug("provider.messages.streaming");
9428
9428
  const recordUsage = createProviderMessagesUsageRecorder(payload, provider, modelConfig, pricingCurrency, usageEndpoint);
9429
9429
  return streamSSE(c, async (stream) => {
9430
9430
  let usage = {};
@@ -9436,7 +9436,7 @@ const streamProviderMessages = ({ c, modelConfig, payload, pricingCurrency, prov
9436
9436
  };
9437
9437
  try {
9438
9438
  for await (const chunk of events(upstreamResponse)) {
9439
- logger$11.debug("provider.messages.raw_stream_event:", chunk.data);
9439
+ logger$12.debug("provider.messages.raw_stream_event:", chunk.data);
9440
9440
  const eventName = chunk.event;
9441
9441
  if (eventName === "ping") {
9442
9442
  await writeSSEIfConnected(stream, {
@@ -9465,13 +9465,13 @@ const streamProviderMessages = ({ c, modelConfig, payload, pricingCurrency, prov
9465
9465
  });
9466
9466
  }
9467
9467
  } catch (error) {
9468
- logger$11.warn("provider.messages.stream_interrupted:", {
9468
+ logger$12.warn("provider.messages.stream_interrupted:", {
9469
9469
  error,
9470
9470
  provider
9471
9471
  });
9472
9472
  }
9473
9473
  if (!messageStopSeen && !errorSeen) {
9474
- logger$11.warn("provider.messages.stream_incomplete:", { provider });
9474
+ logger$12.warn("provider.messages.stream_incomplete:", { provider });
9475
9475
  const errorEvent = translateErrorToAnthropicErrorEvent();
9476
9476
  await writeSSEIfConnected(stream, {
9477
9477
  event: errorEvent.type,
@@ -9482,7 +9482,7 @@ const streamProviderMessages = ({ c, modelConfig, payload, pricingCurrency, prov
9482
9482
  });
9483
9483
  };
9484
9484
  const streamOpenAICompatibleProviderMessages = ({ c, modelConfig, payload, pricingCurrency, provider, upstreamResponse, usageEndpoint }) => {
9485
- logger$11.debug("provider.messages.openai_compatible.streaming");
9485
+ logger$12.debug("provider.messages.openai_compatible.streaming");
9486
9486
  const recordUsage = createProviderMessagesUsageRecorder(payload, provider, modelConfig, pricingCurrency, usageEndpoint);
9487
9487
  return streamSSE(c, async (stream) => {
9488
9488
  let usage = {};
@@ -9496,7 +9496,7 @@ const streamOpenAICompatibleProviderMessages = ({ c, modelConfig, payload, prici
9496
9496
  };
9497
9497
  try {
9498
9498
  for await (const chunk of events(upstreamResponse)) {
9499
- logger$11.debug("provider.messages.openai_compatible.raw_stream_event:", chunk.data);
9499
+ logger$12.debug("provider.messages.openai_compatible.raw_stream_event:", chunk.data);
9500
9500
  if (chunk.event === "ping") {
9501
9501
  await writeSSEIfConnected(stream, {
9502
9502
  event: "ping",
@@ -9514,7 +9514,7 @@ const streamOpenAICompatibleProviderMessages = ({ c, modelConfig, payload, prici
9514
9514
  const events = translateChunkToAnthropicEvents(parsed, streamState);
9515
9515
  for (const event of events) {
9516
9516
  const eventData = JSON.stringify(event);
9517
- debugLazy(logger$11, () => ["provider.messages.openai_compatible.translated_event:", eventData]);
9517
+ debugLazy(logger$12, () => ["provider.messages.openai_compatible.translated_event:", eventData]);
9518
9518
  await writeSSEIfConnected(stream, {
9519
9519
  event: event.type,
9520
9520
  data: eventData
@@ -9522,21 +9522,21 @@ const streamOpenAICompatibleProviderMessages = ({ c, modelConfig, payload, prici
9522
9522
  }
9523
9523
  }
9524
9524
  } catch (error) {
9525
- logger$11.warn("provider.messages.openai_compatible.stream_interrupted:", {
9525
+ logger$12.warn("provider.messages.openai_compatible.stream_interrupted:", {
9526
9526
  error,
9527
9527
  provider
9528
9528
  });
9529
9529
  }
9530
9530
  for (const event of flushPendingAnthropicStreamEvents(streamState)) {
9531
9531
  const eventData = JSON.stringify(event);
9532
- debugLazy(logger$11, () => ["provider.messages.openai_compatible.translated_event:", eventData]);
9532
+ debugLazy(logger$12, () => ["provider.messages.openai_compatible.translated_event:", eventData]);
9533
9533
  await writeSSEIfConnected(stream, {
9534
9534
  event: event.type,
9535
9535
  data: eventData
9536
9536
  });
9537
9537
  }
9538
9538
  if (!streamState.messageCompleted) {
9539
- logger$11.warn("provider.messages.openai_compatible.stream_incomplete:", { provider });
9539
+ logger$12.warn("provider.messages.openai_compatible.stream_incomplete:", { provider });
9540
9540
  const errorEvent = translateErrorToAnthropicErrorEvent();
9541
9541
  await writeSSEIfConnected(stream, {
9542
9542
  event: errorEvent.type,
@@ -9547,13 +9547,13 @@ const streamOpenAICompatibleProviderMessages = ({ c, modelConfig, payload, prici
9547
9547
  });
9548
9548
  };
9549
9549
  const streamResponsesProviderMessages = ({ c, modelConfig, payload, pricingCurrency, provider, providerConfig, upstreamResponse, usageEndpoint }) => {
9550
- logger$11.debug("provider.messages.responses.streaming", { provider });
9550
+ logger$12.debug("provider.messages.responses.streaming", { provider });
9551
9551
  const recordUsage = createProviderMessagesUsageRecorder(payload, provider, modelConfig, pricingCurrency, usageEndpoint);
9552
9552
  return streamSSE(c, async (stream) => {
9553
9553
  let usage = {};
9554
9554
  const streamState = createResponsesStreamState({ toolSearchName: resolveBridgeToolSearchName(payload.tools) });
9555
9555
  for await (const chunk of upstreamResponse) {
9556
- logger$11.debug("provider.messages.responses.raw_stream_event:", chunk.data);
9556
+ logger$12.debug("provider.messages.responses.raw_stream_event:", chunk.data);
9557
9557
  if (chunk.event === "ping") {
9558
9558
  await writeSSEIfConnected(stream, {
9559
9559
  event: "ping",
@@ -9571,7 +9571,7 @@ const streamResponsesProviderMessages = ({ c, modelConfig, payload, pricingCurre
9571
9571
  const events = translateResponsesStreamEvent(parsed, streamState);
9572
9572
  for (const event of events) {
9573
9573
  const eventData = JSON.stringify(event);
9574
- debugLazy(logger$11, () => ["provider.messages.responses.translated_event:", eventData]);
9574
+ debugLazy(logger$12, () => ["provider.messages.responses.translated_event:", eventData]);
9575
9575
  await writeSSEIfConnected(stream, {
9576
9576
  event: event.type,
9577
9577
  data: eventData
@@ -9592,7 +9592,7 @@ const parseOpenAICompatibleStreamChunk = (data) => {
9592
9592
  try {
9593
9593
  return JSON.parse(data);
9594
9594
  } catch (error) {
9595
- logger$11.error("provider.messages.openai_compatible.parse_chunk_error", {
9595
+ logger$12.error("provider.messages.openai_compatible.parse_chunk_error", {
9596
9596
  data,
9597
9597
  error
9598
9598
  });
@@ -9605,7 +9605,7 @@ const parseResponsesProviderStreamChunk = (data, providerConfig) => {
9605
9605
  if (providerConfig.name === "codex") logCodexRateLimitsEvent(parsed);
9606
9606
  return parsed;
9607
9607
  } catch (error) {
9608
- logger$11.error("provider.messages.responses.parse_chunk_error", {
9608
+ logger$12.error("provider.messages.responses.parse_chunk_error", {
9609
9609
  provider: providerConfig.name,
9610
9610
  data,
9611
9611
  error
@@ -9633,7 +9633,7 @@ const parseProviderStreamEvent = (data) => {
9633
9633
  usage: {}
9634
9634
  };
9635
9635
  } catch (error) {
9636
- logger$11.error("provider.messages.streaming.adjust_tokens_error", {
9636
+ logger$12.error("provider.messages.streaming.adjust_tokens_error", {
9637
9637
  error,
9638
9638
  originalData: data
9639
9639
  });
@@ -9695,34 +9695,34 @@ const respondProviderMessagesJson = (c, options) => {
9695
9695
  const { body, modelConfig, payload, pricingCurrency, provider, usageEndpoint } = options;
9696
9696
  createProviderMessagesUsageRecorder(payload, provider, modelConfig, pricingCurrency, usageEndpoint)(normalizeAnthropicUsage(body.usage));
9697
9697
  if (provider === "openrouter") normalizeOpenRouterThinkingSignatures(body);
9698
- debugJson(logger$11, "provider.messages.no_stream result:", body);
9698
+ debugJson(logger$12, "provider.messages.no_stream result:", body);
9699
9699
  return c.json(body);
9700
9700
  };
9701
9701
  const respondOpenAICompatibleProviderMessagesJson = (c, options) => {
9702
9702
  const { body, modelConfig, payload, pricingCurrency, provider, usageEndpoint } = options;
9703
9703
  createProviderMessagesUsageRecorder(payload, provider, modelConfig, pricingCurrency, usageEndpoint)(normalizeOpenAIUsage(body.usage));
9704
9704
  const anthropicResponse = translateToAnthropic(body);
9705
- debugJson(logger$11, "provider.messages.openai_compatible.no_stream result:", anthropicResponse);
9705
+ debugJson(logger$12, "provider.messages.openai_compatible.no_stream result:", anthropicResponse);
9706
9706
  return c.json(anthropicResponse);
9707
9707
  };
9708
9708
  const respondResponsesProviderMessagesJson = (c, options) => {
9709
9709
  const { body, modelConfig, payload, pricingCurrency, provider, providerConfig, usageEndpoint } = options;
9710
9710
  createProviderMessagesUsageRecorder(payload, provider, modelConfig, pricingCurrency, usageEndpoint)(normalizeResponsesUsage(body.usage));
9711
9711
  const anthropicResponse = translateResponsesResultToAnthropic(body, { toolSearchName: resolveBridgeToolSearchName(payload.tools) });
9712
- debugJson(logger$11, "provider.messages.responses.no_stream result:", anthropicResponse);
9713
- if (providerConfig.name === "codex") logger$11.debug("provider.messages.codex.no_stream.result");
9712
+ debugJson(logger$12, "provider.messages.responses.no_stream result:", anthropicResponse);
9713
+ if (providerConfig.name === "codex") logger$12.debug("provider.messages.codex.no_stream.result");
9714
9714
  return c.json(anthropicResponse);
9715
9715
  };
9716
9716
  const respondWebSearchProviderMessagesJson = (c, options) => {
9717
9717
  const { body, modelConfig, payload, pricingCurrency, provider, usageEndpoint } = options;
9718
9718
  createProviderMessagesUsageRecorder(payload, provider, modelConfig, pricingCurrency, usageEndpoint)(normalizeResponsesUsage(body.usage));
9719
9719
  const { extract, response } = reconstructWebSearchResponse(payload, body, { requestId: body.id || `${provider}:${payload.model}` });
9720
- debugJson(logger$11, `Web search via responses: ${extract.queries.length} quer(y/ies), ${extract.sources.length} source(s)`, body);
9720
+ debugJson(logger$12, `Web search via responses: ${extract.queries.length} quer(y/ies), ${extract.sources.length} source(s)`, body);
9721
9721
  if (!payload.stream) return c.json(response);
9722
9722
  return streamSSE(c, async (stream) => {
9723
9723
  for (const event of buildSyntheticStreamEvents(response)) {
9724
9724
  const data = JSON.stringify(event);
9725
- logger$11.debug(`Web search stream event`, data);
9725
+ logger$12.debug(`Web search stream event`, data);
9726
9726
  await writeSSEIfConnected(stream, {
9727
9727
  event: event.type,
9728
9728
  data
@@ -10128,7 +10128,7 @@ const parseSubagentMarkerFromSystemReminder = (text) => {
10128
10128
  };
10129
10129
  //#endregion
10130
10130
  //#region src/routes/messages/handler.ts
10131
- const logger$10 = createHandlerLogger("messages-handler");
10131
+ const logger$11 = createHandlerLogger("messages-handler");
10132
10132
  const messagesFlowHandlers = {
10133
10133
  handleWithChatCompletions,
10134
10134
  handleWithMessagesApi,
@@ -10146,7 +10146,7 @@ async function handleCompletionPayload(c, anthropicPayload, dispatchOptions = {}
10146
10146
  if (anthropicPayload.model !== requestedModel) consola.debug(`Resolved model mapping: ${requestedModel} -> ${anthropicPayload.model}`);
10147
10147
  if (!dispatchOptions.skipWebSearch) {
10148
10148
  const webSearchResult = await tryHandleWebSearch(c, anthropicPayload, {
10149
- logger: logger$10,
10149
+ logger: logger$11,
10150
10150
  forwardToProvider: (ctx, payload, provider) => handleProviderMessagesForProvider(ctx, {
10151
10151
  payload,
10152
10152
  provider
@@ -10170,15 +10170,15 @@ async function handleCompletionPayload(c, anthropicPayload, dispatchOptions = {}
10170
10170
  usageEndpoint: dispatchOptions.usageEndpoint
10171
10171
  });
10172
10172
  }
10173
- debugJson(logger$10, "Anthropic request payload:", anthropicPayload);
10173
+ debugJson(logger$11, "Anthropic request payload:", anthropicPayload);
10174
10174
  normalizeSystemMessages(anthropicPayload);
10175
10175
  sanitizeIdeTools(anthropicPayload);
10176
10176
  const subagentMarker = dispatchOptions.subagentMarker ?? parseSubagentMarkerFromFirstUser(anthropicPayload);
10177
- if (subagentMarker) debugJson(logger$10, "Detected Subagent marker:", subagentMarker);
10177
+ if (subagentMarker) debugJson(logger$11, "Detected Subagent marker:", subagentMarker);
10178
10178
  let sessionId = dispatchOptions.sessionId ?? getRootSessionId(anthropicPayload, c);
10179
10179
  const compactType = dispatchOptions.compactType ?? getCompactType(anthropicPayload);
10180
10180
  const anthropicBeta = c.req.header("anthropic-beta");
10181
- logger$10.debug("Anthropic Beta header:", anthropicBeta);
10181
+ logger$11.debug("Anthropic Beta header:", anthropicBeta);
10182
10182
  if (!state.tokenBasedBilling && !shouldUseClaudeAutoModel) {
10183
10183
  const tools = anthropicPayload.tools;
10184
10184
  const noTools = !tools || tools.length === 0;
@@ -10188,7 +10188,7 @@ async function handleCompletionPayload(c, anthropicPayload, dispatchOptions = {}
10188
10188
  anthropicPayload.model = smallModel;
10189
10189
  }
10190
10190
  }
10191
- if (compactType) logger$10.debug("Compact request type:", compactType);
10191
+ if (compactType) logger$11.debug("Compact request type:", compactType);
10192
10192
  if (!state.tokenBasedBilling) {
10193
10193
  const lastMessageCacheControl = getLastMessageContentCacheControl(anthropicPayload.messages.at(-1));
10194
10194
  stripToolReferenceTurnBoundary(anthropicPayload);
@@ -10196,9 +10196,9 @@ async function handleCompletionPayload(c, anthropicPayload, dispatchOptions = {}
10196
10196
  applyLastMessageCacheControl(anthropicPayload, lastMessageCacheControl);
10197
10197
  }
10198
10198
  const requestId = dispatchOptions.requestId ?? generateRequestIdFromPayload(anthropicPayload, sessionId);
10199
- logger$10.debug("Generated request ID:", requestId);
10199
+ logger$11.debug("Generated request ID:", requestId);
10200
10200
  if (!sessionId) sessionId = getUUID(requestId);
10201
- logger$10.debug("Extracted session ID:", sessionId);
10201
+ logger$11.debug("Extracted session ID:", sessionId);
10202
10202
  const selectedModel = findEndpointModel(anthropicPayload.model);
10203
10203
  anthropicPayload.model = selectedModel?.id ?? anthropicPayload.model;
10204
10204
  appendClaudeContinuationMessage(anthropicPayload);
@@ -10209,7 +10209,7 @@ async function handleCompletionPayload(c, anthropicPayload, dispatchOptions = {}
10209
10209
  requestId,
10210
10210
  sessionId,
10211
10211
  compactType,
10212
- logger: logger$10,
10212
+ logger: logger$11,
10213
10213
  usageEndpoint: dispatchOptions.usageEndpoint
10214
10214
  });
10215
10215
  if (shouldUseResponsesApi(selectedModel, compactType)) return await messagesFlowHandlers.handleWithResponsesApi(c, anthropicPayload, {
@@ -10218,7 +10218,7 @@ async function handleCompletionPayload(c, anthropicPayload, dispatchOptions = {}
10218
10218
  requestId,
10219
10219
  sessionId,
10220
10220
  compactType,
10221
- logger: logger$10,
10221
+ logger: logger$11,
10222
10222
  usageEndpoint: dispatchOptions.usageEndpoint
10223
10223
  });
10224
10224
  return await messagesFlowHandlers.handleWithChatCompletions(c, anthropicPayload, {
@@ -10227,7 +10227,7 @@ async function handleCompletionPayload(c, anthropicPayload, dispatchOptions = {}
10227
10227
  requestId,
10228
10228
  sessionId,
10229
10229
  compactType,
10230
- logger: logger$10,
10230
+ logger: logger$11,
10231
10231
  usageEndpoint: dispatchOptions.usageEndpoint
10232
10232
  });
10233
10233
  }
@@ -10274,7 +10274,7 @@ function withModelDisplayName(model, provider) {
10274
10274
  }
10275
10275
  //#endregion
10276
10276
  //#region src/routes/models/model-discovery.ts
10277
- const logger$9 = createHandlerLogger("models-handler");
10277
+ const logger$10 = createHandlerLogger("models-handler");
10278
10278
  const EPOCH_ISO = (/* @__PURE__ */ new Date(0)).toISOString();
10279
10279
  function isRecord(value) {
10280
10280
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -10323,7 +10323,7 @@ function getStringList(value) {
10323
10323
  }
10324
10324
  function getFallbackProviderModelRecords(provider, reason, details = {}) {
10325
10325
  const fallbackModels = getLocalProviderModelRecords(provider, getRawProviderConfig(provider)) ?? getBuiltinProviderModelRecords(provider);
10326
- logger$9.warn(`models.provider.fallback_${reason}`, {
10326
+ logger$10.warn(`models.provider.fallback_${reason}`, {
10327
10327
  provider,
10328
10328
  ...details,
10329
10329
  fallbackModelCount: fallbackModels.length
@@ -10389,7 +10389,7 @@ async function getProviderModels(provider, requestHeaders, selectModels) {
10389
10389
  return normalizeProviderModels(providerConfig.name, selectModels?.(providerConfig, models) ?? models, providerConfig);
10390
10390
  } catch (error) {
10391
10391
  if (provider === "codex") {
10392
- logger$9.warn("models.provider.skip_error", {
10392
+ logger$10.warn("models.provider.skip_error", {
10393
10393
  provider,
10394
10394
  error
10395
10395
  });
@@ -10553,7 +10553,7 @@ function getModelMetadata(provider, modelId, model, config) {
10553
10553
  }
10554
10554
  //#endregion
10555
10555
  //#region src/routes/models/codex-model-candidates.ts
10556
- const logger$8 = createHandlerLogger("models-handler");
10556
+ const logger$9 = createHandlerLogger("models-handler");
10557
10557
  const RESPONSES_ENDPOINTS = /* @__PURE__ */ new Set(["/responses", "ws:/responses"]);
10558
10558
  const MESSAGES_ENDPOINT = "/v1/messages";
10559
10559
  const CHAT_COMPLETIONS_ENDPOINT = "/chat/completions";
@@ -10577,7 +10577,7 @@ function getCopilotCodexCandidates() {
10577
10577
  for (const model of getCopilotModelRecords()) try {
10578
10578
  if (isCopilotCodexCandidate(model)) candidates.push(createCopilotCodexCandidate(model));
10579
10579
  } catch (error) {
10580
- logger$8.warn("models.codex.copilot_skip_error", {
10580
+ logger$9.warn("models.codex.copilot_skip_error", {
10581
10581
  modelId: model.id,
10582
10582
  error
10583
10583
  });
@@ -10617,7 +10617,7 @@ async function getProviderCodexCandidates(provider, requestHeaders) {
10617
10617
  }
10618
10618
  return candidates;
10619
10619
  } catch (error) {
10620
- logger$8.warn("models.codex.provider_skip_error", {
10620
+ logger$9.warn("models.codex.provider_skip_error", {
10621
10621
  provider,
10622
10622
  error
10623
10623
  });
@@ -12183,7 +12183,7 @@ var models = [
12183
12183
  ];
12184
12184
  //#endregion
12185
12185
  //#region src/routes/models/codex-models.ts
12186
- const logger$7 = createHandlerLogger("codex-models-handler");
12186
+ const logger$8 = createHandlerLogger("codex-models-handler");
12187
12187
  const CODEX_USER_AGENT_PATTERN = /^codex/iu;
12188
12188
  const DEFAULT_REASONING_EFFORTS = [
12189
12189
  "high",
@@ -12226,7 +12226,7 @@ async function handleCodexModelsProxy(c, resolvedProviderConfig) {
12226
12226
  });
12227
12227
  } catch (error) {
12228
12228
  if (!isCodexCatalogTimeout(error)) throw error;
12229
- logger$7.warn("models.codex.catalog_timeout", { error });
12229
+ logger$8.warn("models.codex.catalog_timeout", { error });
12230
12230
  catalog = { models: FALLBACK_CODEX_MODELS };
12231
12231
  }
12232
12232
  if (!isCodexModelsResponse(catalog)) return c.json({ error: {
@@ -12249,7 +12249,7 @@ async function handleCodexModels(c) {
12249
12249
  }
12250
12250
  async function handleMergedCodexModels(c, candidatesRequest, options = {}) {
12251
12251
  const [upstreamCatalogResult, candidates] = await Promise.all([tryGetCodexCatalog(c), Promise.resolve(candidatesRequest).catch((error) => {
12252
- logger$7.warn("models.codex.candidates_error", { error });
12252
+ logger$8.warn("models.codex.candidates_error", { error });
12253
12253
  return [];
12254
12254
  })]);
12255
12255
  const upstreamCatalog = upstreamCatalogResult?.catalog;
@@ -12399,17 +12399,17 @@ async function tryGetCodexCatalog(c) {
12399
12399
  if (!await resolveProviderConfig("codex")) return null;
12400
12400
  const response = await forwardCodexModels(c.req.url, c.req.raw.headers);
12401
12401
  if (!response.ok) {
12402
- logger$7.warn("models.codex.catalog_fallback", { statusCode: response.status });
12402
+ logger$8.warn("models.codex.catalog_fallback", { statusCode: response.status });
12403
12403
  return null;
12404
12404
  }
12405
12405
  const body = await response.json();
12406
12406
  if (!isCodexModelsResponse(body)) {
12407
- logger$7.warn("models.codex.catalog_invalid");
12407
+ logger$8.warn("models.codex.catalog_invalid");
12408
12408
  return null;
12409
12409
  }
12410
12410
  return { catalog: body };
12411
12411
  } catch (error) {
12412
- logger$7.warn("models.codex.catalog_error", { error });
12412
+ logger$8.warn("models.codex.catalog_error", { error });
12413
12413
  return null;
12414
12414
  }
12415
12415
  }
@@ -12571,7 +12571,7 @@ modelRoutes.get("/", async (c) => {
12571
12571
  });
12572
12572
  //#endregion
12573
12573
  //#region src/routes/provider/alpha-search/route.ts
12574
- const logger$6 = createHandlerLogger("provider-alpha-search-handler");
12574
+ const logger$7 = createHandlerLogger("provider-alpha-search-handler");
12575
12575
  const providerAlphaSearchRoutes = new Hono();
12576
12576
  const providerAlphaSearchRouteDependencies = {
12577
12577
  createProviderProxyResponse,
@@ -12588,19 +12588,19 @@ providerAlphaSearchRoutes.post("/", async (c) => {
12588
12588
  type: "invalid_request_error"
12589
12589
  } }, 404);
12590
12590
  if (providerConfig.name === "codex") return await providerAlphaSearchRouteDependencies.handleAlphaSearchRequest(c, providerConfig);
12591
- await debugJsonAsync(logger$6, "provider.alpha_search.request", async () => ({
12591
+ await debugJsonAsync(logger$7, "provider.alpha_search.request", async () => ({
12592
12592
  body: await c.req.raw.clone().text(),
12593
12593
  provider
12594
12594
  }));
12595
12595
  const upstreamResponse = await providerAlphaSearchRouteDependencies.forwardProviderAlphaSearch(providerConfig, c.req.raw, { clientSignal: c.req.raw.signal });
12596
- await debugJsonAsync(logger$6, "provider.alpha_search.response", async () => ({
12596
+ await debugJsonAsync(logger$7, "provider.alpha_search.response", async () => ({
12597
12597
  body: await upstreamResponse.clone().text(),
12598
12598
  provider,
12599
12599
  statusCode: upstreamResponse.status
12600
12600
  }));
12601
12601
  return providerAlphaSearchRouteDependencies.createProviderProxyResponse(upstreamResponse);
12602
12602
  } catch (error) {
12603
- logger$6.error("provider.alpha_search.error", {
12603
+ logger$7.error("provider.alpha_search.error", {
12604
12604
  provider,
12605
12605
  error
12606
12606
  });
@@ -12609,7 +12609,7 @@ providerAlphaSearchRoutes.post("/", async (c) => {
12609
12609
  });
12610
12610
  //#endregion
12611
12611
  //#region src/routes/provider/images/route.ts
12612
- const logger$5 = createHandlerLogger("provider-images-handler");
12612
+ const logger$6 = createHandlerLogger("provider-images-handler");
12613
12613
  const providerImageRoutes = new Hono();
12614
12614
  async function handleProviderImages(c, operation) {
12615
12615
  const provider = c.req.param("provider") ?? "";
@@ -12621,11 +12621,11 @@ async function handleProviderImages(c, operation) {
12621
12621
  } }, 404);
12622
12622
  if (providerConfig.name === "codex") return await handleCodexImages(c, operation, providerConfig);
12623
12623
  return await forwardProviderImagesWithLogging(providerConfig, c.req.raw, operation, {
12624
- logger: logger$5,
12624
+ logger: logger$6,
12625
12625
  provider
12626
12626
  });
12627
12627
  } catch (error) {
12628
- logger$5.error(`provider.images.${operation}.error`, {
12628
+ logger$6.error(`provider.images.${operation}.error`, {
12629
12629
  provider,
12630
12630
  error
12631
12631
  });
@@ -12653,7 +12653,7 @@ providerMessageRoutes.post("/count_tokens", async (c) => {
12653
12653
  });
12654
12654
  //#endregion
12655
12655
  //#region src/routes/provider/models/route.ts
12656
- const logger$4 = createHandlerLogger("provider-models-handler");
12656
+ const logger$5 = createHandlerLogger("provider-models-handler");
12657
12657
  const providerModelRoutes = new Hono();
12658
12658
  providerModelRoutes.get("/", async (c) => {
12659
12659
  const provider = c.req.param("provider") ?? "";
@@ -12685,7 +12685,7 @@ providerModelRoutes.get("/", async (c) => {
12685
12685
  });
12686
12686
  }
12687
12687
  const upstreamResponse = await forwardProviderModels(providerConfig, c.req.raw.headers);
12688
- logger$4.debug("provider.models.response", {
12688
+ logger$5.debug("provider.models.response", {
12689
12689
  provider,
12690
12690
  statusCode: upstreamResponse.status
12691
12691
  });
@@ -12708,7 +12708,7 @@ providerModelRoutes.get("/", async (c) => {
12708
12708
  }
12709
12709
  return createProviderProxyResponse(upstreamResponse);
12710
12710
  } catch (error) {
12711
- logger$4.error("provider.models.error", {
12711
+ logger$5.error("provider.models.error", {
12712
12712
  provider,
12713
12713
  error
12714
12714
  });
@@ -13581,7 +13581,7 @@ function parseAnthropicEvent(data) {
13581
13581
  }
13582
13582
  //#endregion
13583
13583
  //#region src/routes/responses/messages-handler.ts
13584
- const logger$3 = createHandlerLogger("responses-messages-handler");
13584
+ const logger$4 = createHandlerLogger("responses-messages-handler");
13585
13585
  const responsesMessagesDependencies = { handleCompletionPayload };
13586
13586
  async function handleResponsesViaMessages(c, options) {
13587
13587
  try {
@@ -13595,7 +13595,7 @@ async function handleResponsesViaMessages(c, options) {
13595
13595
  toolCallTips: isCodexUserAgent(c.req.header("user-agent"))
13596
13596
  });
13597
13597
  const context = translation;
13598
- debugJson(logger$3, "Translated Messages request:", {
13598
+ debugJson(logger$4, "Translated Messages request:", {
13599
13599
  payload: translation.messagesPayload,
13600
13600
  publicModel: options.publicModel,
13601
13601
  targetModel: options.targetModel,
@@ -13619,7 +13619,7 @@ async function handleResponsesViaMessages(c, options) {
13619
13619
  const body = await messagesResponse.json();
13620
13620
  if (!isAnthropicResponse(body)) throw new ResponsesMessagesTranslationError("Messages API returned an invalid response body", 502);
13621
13621
  const result = translateAnthropicToResponses(body, context);
13622
- debugJson(logger$3, "Translated Responses result:", result);
13622
+ debugJson(logger$4, "Translated Responses result:", result);
13623
13623
  if (!translation.messagesPayload.stream) return c.json(result);
13624
13624
  return streamSSE(c, async (stream) => {
13625
13625
  for (const event of responsesResultToStreamEvents(result)) await writeSSEIfConnected(stream, {
@@ -13638,7 +13638,7 @@ async function handleResponsesViaMessages(c, options) {
13638
13638
  function streamTranslatedMessagesEvents(c, response, context) {
13639
13639
  return streamSSE(c, async (stream) => {
13640
13640
  for await (const event of translateMessagesStream(events(response), context)) {
13641
- debugJson(logger$3, "Translated Responses stream event:", event);
13641
+ debugJson(logger$4, "Translated Responses stream event:", event);
13642
13642
  await writeSSEIfConnected(stream, {
13643
13643
  event: event.type,
13644
13644
  data: JSON.stringify(event)
@@ -13665,14 +13665,14 @@ const getCodexTaskTitleModel = (userAgent, input, provider) => {
13665
13665
  };
13666
13666
  //#endregion
13667
13667
  //#region src/routes/provider/responses/handler.ts
13668
- const logger$2 = createHandlerLogger("provider-responses-handler");
13668
+ const logger$3 = createHandlerLogger("provider-responses-handler");
13669
13669
  const providerResponsesHandlerDependencies = { resolveProviderConfig };
13670
13670
  async function handleProviderResponsesForProvider(c, options) {
13671
13671
  const { payload, provider } = options;
13672
13672
  const taskTitleModel = getCodexTaskTitleModel(c.req.header("user-agent"), payload.input, provider);
13673
13673
  if (taskTitleModel) payload.model = taskTitleModel;
13674
13674
  const publicModel = taskTitleModel ?? options.publicModel ?? payload.model;
13675
- debugJson(logger$2, "Responses request payload:", {
13675
+ debugJson(logger$3, "Responses request payload:", {
13676
13676
  payload,
13677
13677
  provider
13678
13678
  });
@@ -13684,7 +13684,7 @@ async function handleProviderResponsesForProvider(c, options) {
13684
13684
  } }, 400);
13685
13685
  const effectiveType = providerConfig.type;
13686
13686
  const normalizedReasoningEffort = normalizeProviderResponsesReasoningEffort(payload, providerConfig);
13687
- if (normalizedReasoningEffort) logger$2.debug(`Normalized reasoning effort from ${normalizedReasoningEffort.from} to ${normalizedReasoningEffort.to} based on the provider model configuration`);
13687
+ if (normalizedReasoningEffort) logger$3.debug(`Normalized reasoning effort from ${normalizedReasoningEffort.from} to ${normalizedReasoningEffort.to} based on the provider model configuration`);
13688
13688
  if (shouldFallbackToMessages$1(c, payload.model, effectiveType)) {
13689
13689
  filterReasoningForTransport(payload, true);
13690
13690
  return await handleResponsesViaMessages(c, {
@@ -13703,7 +13703,7 @@ async function handleProviderResponsesForProvider(c, options) {
13703
13703
  compactThresholdRatio: .8,
13704
13704
  source: "responses"
13705
13705
  })) compactInputByLatestCompaction(payload);
13706
- debugJson(logger$2, "Translated Responses request payload:", {
13706
+ debugJson(logger$3, "Translated Responses request payload:", {
13707
13707
  contextManagement: payload.context_management,
13708
13708
  provider
13709
13709
  });
@@ -13777,7 +13777,7 @@ const streamProviderResponses = async (c, upstreamResponse, options) => {
13777
13777
  return streamSSE(c, async (stream) => {
13778
13778
  let usage = {};
13779
13779
  const writeChunk = async (chunk) => {
13780
- debugJson(logger$2, "Responses stream chunk:", chunk);
13780
+ debugJson(logger$3, "Responses stream chunk:", chunk);
13781
13781
  let responseChunk = chunk;
13782
13782
  let event = null;
13783
13783
  if (chunk.data && chunk.data !== "[DONE]") {
@@ -13815,7 +13815,7 @@ const parseProviderResponsesStreamEvent = (data, options) => {
13815
13815
  if (options.normalizeCodex) logCodexRateLimitsEvent(parsed);
13816
13816
  return parsed;
13817
13817
  } catch (error) {
13818
- logger$2.error("provider.responses.parse_chunk_error", {
13818
+ logger$3.error("provider.responses.parse_chunk_error", {
13819
13819
  provider: options.provider,
13820
13820
  data,
13821
13821
  error
@@ -13881,7 +13881,7 @@ const handleItemId = (parsed, tracker) => {
13881
13881
  };
13882
13882
  //#endregion
13883
13883
  //#region src/routes/responses/handler.ts
13884
- const logger$1 = createHandlerLogger("responses-handler");
13884
+ const logger$2 = createHandlerLogger("responses-handler");
13885
13885
  const responsesHandlerDependencies = {
13886
13886
  createResponses,
13887
13887
  findEndpointModel,
@@ -13905,7 +13905,7 @@ const handleResponses = async (c) => {
13905
13905
  const taskTitleModel = getCodexTaskTitleModel(c.req.header("user-agent"), payload.input, "copilot");
13906
13906
  if (taskTitleModel) payload.model = taskTitleModel;
13907
13907
  const publicModel = taskTitleModel ?? requestedModel;
13908
- debugJson(logger$1, "Responses request payload:", payload);
13908
+ debugJson(logger$2, "Responses request payload:", payload);
13909
13909
  const store = requestContext.getStore();
13910
13910
  const rootSessionId = store?.rootSessionId;
13911
13911
  const sessionAffinity = store?.sessionAffinity;
@@ -13913,16 +13913,16 @@ const handleResponses = async (c) => {
13913
13913
  rootSessionId,
13914
13914
  sessionAffinity
13915
13915
  });
13916
- if (subagentMarker) debugJson(logger$1, "Detected Codex subagent headers:", subagentMarker);
13916
+ if (subagentMarker) debugJson(logger$2, "Detected Codex subagent headers:", subagentMarker);
13917
13917
  const sessionId = rootSessionId ? getUUID(rootSessionId) : void 0;
13918
13918
  const requestId = sessionAffinity ? getUUID(sessionAffinity + "_") : generateRequestIdFromPayload({ messages: payload.input }, sessionId);
13919
- logger$1.debug("Generated request ID:", requestId);
13919
+ logger$2.debug("Generated request ID:", requestId);
13920
13920
  const fallbackSessionId = sessionId ?? getUUID(requestId);
13921
- logger$1.debug("Extracted session ID:", fallbackSessionId);
13921
+ logger$2.debug("Extracted session ID:", fallbackSessionId);
13922
13922
  const selectedModel = responsesHandlerDependencies.findEndpointModel(payload.model);
13923
13923
  payload.model = selectedModel?.id ?? payload.model;
13924
13924
  const normalizedReasoningEffort = normalizeResponsesReasoningEffort(payload, selectedModel?.capabilities?.supports?.reasoning_effort);
13925
- if (normalizedReasoningEffort) logger$1.debug(`Normalized reasoning effort from ${normalizedReasoningEffort.from} to ${normalizedReasoningEffort.to} based on the selected model capabilities`);
13925
+ if (normalizedReasoningEffort) logger$2.debug(`Normalized reasoning effort from ${normalizedReasoningEffort.from} to ${normalizedReasoningEffort.to} based on the selected model capabilities`);
13926
13926
  const responsesTransport = getResponsesTransportForModel(selectedModel);
13927
13927
  if (shouldFallbackToMessages(c, payload.model, selectedModel, responsesTransport)) {
13928
13928
  filterReasoningForTransport(payload, true);
@@ -13946,22 +13946,22 @@ const handleResponses = async (c) => {
13946
13946
  model: payload.model
13947
13947
  });
13948
13948
  const normalizedAgentMessageCount = normalizeGuardianAgentMessages(payload);
13949
- if (normalizedAgentMessageCount > 0) logger$1.debug(`Translated ${normalizedAgentMessageCount} Guardian agent message(s) to user messages before forwarding to Copilot Responses`);
13949
+ if (normalizedAgentMessageCount > 0) logger$2.debug(`Translated ${normalizedAgentMessageCount} Guardian agent message(s) to user messages before forwarding to Copilot Responses`);
13950
13950
  const sanitizedUnsupportedFieldCount = sanitizeUnsupportedInputFields(payload);
13951
- if (sanitizedUnsupportedFieldCount > 0) logger$1.debug(`Removed ${sanitizedUnsupportedFieldCount} unsupported input field(s) before forwarding to Copilot Responses`);
13951
+ if (sanitizedUnsupportedFieldCount > 0) logger$2.debug(`Removed ${sanitizedUnsupportedFieldCount} unsupported input field(s) before forwarding to Copilot Responses`);
13952
13952
  const normalizedImageDetailCount = normalizeInputImageDetails(payload);
13953
- if (normalizedImageDetailCount > 0) logger$1.debug(`Normalized ${normalizedImageDetailCount} unsupported input image detail value(s) before forwarding to Copilot Responses`);
13953
+ if (normalizedImageDetailCount > 0) logger$2.debug(`Normalized ${normalizedImageDetailCount} unsupported input image detail value(s) before forwarding to Copilot Responses`);
13954
13954
  removeUnsupportedTools(payload);
13955
13955
  fillEmptyNamespaceToolDescriptions(payload);
13956
13956
  if (!responsesHandlerDependencies.isResponsesApiWebSearchEnabled()) removeWebSearchTool(payload);
13957
13957
  const sanitizedImageCount = sanitizeOversizedInputImages(payload, selectedModel?.capabilities.limits.vision?.max_prompt_image_size);
13958
- if (sanitizedImageCount > 0) logger$1.warn(`Omitted ${sanitizedImageCount} oversized input image(s) before forwarding to Copilot Responses`);
13958
+ if (sanitizedImageCount > 0) logger$2.warn(`Omitted ${sanitizedImageCount} oversized input image(s) before forwarding to Copilot Responses`);
13959
13959
  const maxPromptTokens = selectedModel?.capabilities.limits.max_prompt_tokens;
13960
13960
  if (applyResponsesApiContextManagement(payload, maxPromptTokens, {
13961
13961
  compactThresholdRatio: .8,
13962
13962
  source: "responses"
13963
13963
  })) compactInputByLatestCompaction(payload);
13964
- debugJson(logger$1, "Translated Responses payload:", payload);
13964
+ debugJson(logger$2, "Translated Responses payload:", payload);
13965
13965
  const { vision, initiator: inferredInitiator } = getResponsesRequestOptions(payload);
13966
13966
  const initiator = subagentMarker ? "agent" : inferredInitiator;
13967
13967
  const response = await responsesHandlerDependencies.createResponses(payload, {
@@ -13974,14 +13974,14 @@ const handleResponses = async (c) => {
13974
13974
  transport: responsesTransport
13975
13975
  });
13976
13976
  if (isStreamingRequested(payload) && isAsyncIterable(response)) {
13977
- logger$1.debug("Forwarding native Responses stream");
13977
+ logger$2.debug("Forwarding native Responses stream");
13978
13978
  return streamSSE(c, async (stream) => {
13979
13979
  const idTracker = createStreamIdTracker();
13980
13980
  let usage = {};
13981
13981
  const iterator = response[Symbol.asyncIterator]();
13982
13982
  try {
13983
13983
  for await (const chunk of { [Symbol.asyncIterator]: () => iterator }) {
13984
- debugJson(logger$1, "Responses stream chunk:", chunk);
13984
+ debugJson(logger$2, "Responses stream chunk:", chunk);
13985
13985
  const parsedEvent = parseResponsesStreamEvent(chunk);
13986
13986
  if (parsedEvent?.type === "response.completed" || parsedEvent?.type === "response.failed" || parsedEvent?.type === "response.incomplete") usage = {
13987
13987
  ...normalizeResponsesUsage(parsedEvent.response.usage),
@@ -14000,7 +14000,7 @@ const handleResponses = async (c) => {
14000
14000
  }
14001
14001
  });
14002
14002
  }
14003
- debugJsonTail(logger$1, "Forwarding native Responses result:", {
14003
+ debugJsonTail(logger$2, "Forwarding native Responses result:", {
14004
14004
  value: response,
14005
14005
  tailLength: 400
14006
14006
  });
@@ -14048,7 +14048,7 @@ const removeUnsupportedTools = (payload) => {
14048
14048
  }
14049
14049
  return true;
14050
14050
  });
14051
- if (dropped.length > 0) logger$1.debug("Removed unsupported tools:", dropped);
14051
+ if (dropped.length > 0) logger$2.debug("Removed unsupported tools:", dropped);
14052
14052
  };
14053
14053
  const fillEmptyNamespaceToolDescriptions = (payload) => {
14054
14054
  fillEmptyNamespaceDescriptions(payload.tools);
@@ -14152,6 +14152,90 @@ usageRoute.get("/", async (c) => {
14152
14152
  }
14153
14153
  });
14154
14154
  //#endregion
14155
+ //#region src/services/xai/videos.ts
14156
+ var XaiVideosRequestError = class extends Error {
14157
+ constructor(message) {
14158
+ super(message);
14159
+ this.name = "XaiVideosRequestError";
14160
+ }
14161
+ };
14162
+ function encodeRequestId(requestId) {
14163
+ if (!requestId.trim() || requestId === "." || requestId === ".." || /[/\\]/u.test(requestId)) throw new XaiVideosRequestError("request_id must be a single path segment");
14164
+ return encodeURIComponent(requestId);
14165
+ }
14166
+ /** Submits or queries a native xAI video job without polling or retrying. */
14167
+ async function forwardXaiVideos(providerConfig, request, videoRequest) {
14168
+ const endpoint = videoRequest.operation === "generations" ? "videos/generations" : `videos/${encodeRequestId(videoRequest.requestId)}`;
14169
+ const upstreamUrl = new URL(resolveProviderEndpointUrl(providerConfig, endpoint));
14170
+ upstreamUrl.search = new URL(request.url).search;
14171
+ const headers = buildProviderUpstreamHeaders(providerConfig, request.headers);
14172
+ const transport = getUpstreamTransportConfig();
14173
+ return await fetchUpstreamWithLifecycle(upstreamUrl, {
14174
+ method: videoRequest.operation === "generations" ? "POST" : "GET",
14175
+ headers,
14176
+ body: videoRequest.operation === "generations" ? JSON.stringify(videoRequest.payload) : void 0
14177
+ }, {
14178
+ clientSignal: request.signal,
14179
+ headersTimeoutMs: transport.headersTimeoutMs,
14180
+ streamInactivityTimeoutMs: transport.streamInactivityTimeoutMs
14181
+ });
14182
+ }
14183
+ //#endregion
14184
+ //#region src/routes/videos/route.ts
14185
+ const logger$1 = createHandlerLogger("videos-handler");
14186
+ const SUPPORTED_VIDEO_MODEL = "grok-imagine-video-1.5";
14187
+ const videoRouteDependencies = {
14188
+ resolveMappedModel,
14189
+ resolveProviderConfig
14190
+ };
14191
+ const videoRoutes = new Hono();
14192
+ async function parseGenerationRequest(request) {
14193
+ let payload;
14194
+ try {
14195
+ payload = await request.json();
14196
+ } catch {
14197
+ throw new XaiVideosRequestError("Video generation body must be JSON");
14198
+ }
14199
+ if (!payload || typeof payload !== "object" || Array.isArray(payload)) throw new XaiVideosRequestError("Video generation body must be a JSON object");
14200
+ if (!("model" in payload) || typeof payload.model !== "string" || !payload.model.trim()) throw new XaiVideosRequestError("model is required and must be a string");
14201
+ const mappedModel = videoRouteDependencies.resolveMappedModel(payload.model);
14202
+ const alias = parseProviderModelAlias(mappedModel);
14203
+ if (alias?.provider.toLowerCase() !== "xai" || alias.model !== SUPPORTED_VIDEO_MODEL) throw new XaiVideosRequestError(`Video generation only supports xai/${SUPPORTED_VIDEO_MODEL}`);
14204
+ return {
14205
+ operation: "generations",
14206
+ payload: {
14207
+ ...payload,
14208
+ model: alias.model
14209
+ }
14210
+ };
14211
+ }
14212
+ async function handleVideos(c, operation) {
14213
+ try {
14214
+ c.req.raw.signal.throwIfAborted();
14215
+ const videoRequest = operation === "generations" ? await parseGenerationRequest(c.req.raw) : {
14216
+ operation: "result",
14217
+ requestId: c.req.param("request_id") ?? ""
14218
+ };
14219
+ const providerConfig = await videoRouteDependencies.resolveProviderConfig("xai");
14220
+ if (!providerConfig) return c.json({ error: {
14221
+ message: "Provider 'xai' not found or disabled",
14222
+ type: "invalid_request_error"
14223
+ } }, 404);
14224
+ const upstreamResponse = await forwardXaiVideos(providerConfig, c.req.raw, videoRequest);
14225
+ debugJson(logger$1, `videos.${operation}.response`, { statusCode: upstreamResponse.status });
14226
+ return createProviderProxyResponse(upstreamResponse);
14227
+ } catch (error) {
14228
+ if (error instanceof XaiVideosRequestError && !c.req.raw.signal.aborted) return c.json({ error: {
14229
+ message: error.message,
14230
+ type: "invalid_request_error"
14231
+ } }, 400);
14232
+ logger$1.error(`videos.${operation}.error`, { error });
14233
+ return await forwardError(c, error);
14234
+ }
14235
+ }
14236
+ videoRoutes.post("/generations", (c) => handleVideos(c, "generations"));
14237
+ videoRoutes.get("/:request_id", (c) => handleVideos(c, "result"));
14238
+ //#endregion
14155
14239
  //#region src/server.ts
14156
14240
  function resolveSameOriginCorsOrigin(origin, context) {
14157
14241
  if (!origin) return null;
@@ -14197,12 +14281,14 @@ function createServer(options = {}) {
14197
14281
  server.route("/responses", responsesRoutes);
14198
14282
  server.route("/alpha/search", alphaSearchRoutes);
14199
14283
  server.route("/images", imageRoutes);
14284
+ server.route("/videos", videoRoutes);
14200
14285
  server.route("/v1/chat/completions", completionRoutes);
14201
14286
  server.route("/v1/models", modelRoutes);
14202
14287
  server.route("/v1/embeddings", embeddingRoutes);
14203
14288
  server.route("/v1/responses", responsesRoutes);
14204
14289
  server.route("/v1/alpha/search", alphaSearchRoutes);
14205
14290
  server.route("/v1/images", imageRoutes);
14291
+ server.route("/v1/videos", videoRoutes);
14206
14292
  server.route("/v1/messages", messageRoutes);
14207
14293
  server.route("/:provider/v1/messages", providerMessageRoutes);
14208
14294
  server.route("/:provider/v1/models", providerModelRoutes);
@@ -14219,4 +14305,4 @@ createServer();
14219
14305
  //#endregion
14220
14306
  export { createServer };
14221
14307
 
14222
- //# sourceMappingURL=server-BVFWtgJW.js.map
14308
+ //# sourceMappingURL=server-C1Y_Wrlf.js.map