{"version":3,"sources":["../src/core/http-headers.ts","../src/core/runtime-types.ts","../src/core/json-value.ts","../src/provider/provider-settings-metadata.ts","../src/provider/provider-settings-records.ts","../src/provider/provider-settings.ts","../src/provider/provider-settings-fetch.ts","../src/provider/provider-settings-urls.ts","../src/core/timeout.ts","../src/provider/opengateway/callback-json-mutations.ts","../src/provider/opengateway/metadata-details.ts","../src/provider/opengateway/metadata-merge.ts","../src/provider/opengateway/metadata.ts","../src/core/reasoning.ts","../src/core/call-options-primitives.ts","../src/core/call-options-prompt.ts","../src/core/call-options-output.ts","../src/core/call-options-extras.ts","../src/core/call-options.ts","../src/provider/opengateway/reasoning-roundtrip-store-values.ts","../src/provider/opengateway/reasoning-roundtrip-store-memory.ts","../src/provider/opengateway/reasoning-roundtrip-store.ts","../src/provider/opengateway/reasoning-roundtrip-input.ts","../src/provider/opengateway/reasoning-roundtrip-output.ts","../src/provider/opengateway/reasoning-roundtrip-runtime.ts","../src/provider/opengateway/reasoning-roundtrip.ts","../src/provider/opengateway/opengateway.ts"],"names":["provider","isJSONObject","parts","isJSONValue","currentTime","length","OPENGATEWAY_KEY","assertNever","createOpenAICompatible","wrapLanguageModel"],"mappings":"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","file":"opengateway.cjs","sourcesContent":["const HTTP_HEADER_NAME_PATTERN = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;\n\nexport function isValidHttpHeaderName(value: string): boolean {\n  return value.length <= 256 && HTTP_HEADER_NAME_PATTERN.test(value);\n}\n\nexport function hasInvalidHttpHeaderValueCharacter(value: string): boolean {\n  for (let index = 0; index < value.length; index += 1) {\n    const code = value.charCodeAt(index);\n    if (code <= 8 || (code >= 10 && code <= 31) || code === 127) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport function boundedEnumerableOwnKeys(\n  value: object,\n  maximum: number\n): string[] | undefined {\n  const keys: string[] = [];\n  let visited = 0;\n  for (const key in value) {\n    if (Object.hasOwn(value, key)) {\n      visited += 1;\n      if (visited > maximum) {\n        return;\n      }\n      keys.push(key);\n    } else {\n      visited += 1;\n      if (visited > maximum) {\n        return;\n      }\n    }\n  }\n  return keys;\n}\n","const typedArrayTagGetter = Object.getOwnPropertyDescriptor(\n  Object.getPrototypeOf(Uint8Array.prototype),\n  Symbol.toStringTag\n)?.get;\n\n/** Consume a native Promise without consulting arbitrary `then` properties. */\nexport function consumeGenuinePromise(value: unknown): boolean {\n  if (\n    !(\n      (typeof value === \"object\" && value !== null) ||\n      typeof value === \"function\"\n    )\n  ) {\n    return false;\n  }\n  try {\n    const chained = Promise.prototype.then.call(\n      value,\n      () => undefined,\n      () => undefined\n    );\n    Promise.prototype.then.call(\n      chained,\n      () => undefined,\n      () => undefined\n    );\n    return true;\n  } catch {\n    return false;\n  }\n}\n\n/** Consume Promise-valued own data fields without invoking accessors. */\nexport function consumeOwnDataPromiseFields(\n  value: object,\n  keys: readonly (string | number)[]\n): void {\n  for (const key of keys) {\n    try {\n      const descriptor = Object.getOwnPropertyDescriptor(value, key);\n      if (descriptor !== undefined && \"value\" in descriptor) {\n        consumeGenuinePromise(descriptor.value);\n      }\n    } catch {\n      // A malformed Proxy field cannot prevent checks of later bounded keys.\n    }\n  }\n}\n\n/** Capture a native/cross-realm Promise without consulting a `then` property. */\nexport function captureGenuinePromise<T>(\n  value: unknown\n): Promise<T> | undefined {\n  let genuine = true;\n  const captured = new Promise<T>((resolve, reject) => {\n    try {\n      Promise.prototype.then.call(value, resolve, reject);\n    } catch {\n      genuine = false;\n    }\n  });\n  return genuine ? captured : undefined;\n}\n\n/** Require a genuine Promise and map brand failures without reading `then`. */\nexport function requireGenuinePromise<T>(\n  value: unknown,\n  errorFactory: (cause: unknown) => unknown\n): Promise<T> {\n  return new Promise((resolve, reject) => {\n    try {\n      Promise.prototype.then.call(value, resolve, reject);\n    } catch (error) {\n      reject(errorFactory(error));\n    }\n  });\n}\n\n/** Cross-realm-safe Uint8Array check for provider file payloads. */\nexport function isUint8ArrayValue(value: unknown): value is Uint8Array {\n  if (typedArrayTagGetter === undefined) {\n    return false;\n  }\n  try {\n    return (\n      ArrayBuffer.isView(value) &&\n      Reflect.apply(typedArrayTagGetter, value, []) === \"Uint8Array\"\n    );\n  } catch {\n    return false;\n  }\n}\n\n/** Cross-realm-safe URL check using the platform URL brand operation. */\nexport function isUrlValue(value: unknown): value is URL {\n  if (typeof value !== \"object\" || value === null) {\n    return false;\n  }\n  try {\n    URL.prototype.toString.call(value);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\n/** Cross-realm-safe finite Date check using the Date internal slot. */\nexport function isDateValue(value: unknown): value is Date {\n  try {\n    return Number.isFinite(Date.prototype.getTime.call(value));\n  } catch {\n    return false;\n  }\n}\n\n/** Accept ordinary records across realms while rejecting class/runtime containers. */\nexport function isPlainObjectValue<T>(\n  value: T\n): value is T & Record<string, unknown> {\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    return false;\n  }\n  try {\n    const prototype = Object.getPrototypeOf(value);\n    return prototype === null || Object.getPrototypeOf(prototype) === null;\n  } catch {\n    return false;\n  }\n}\n\n/** Validate template-literal identifiers shaped as `<namespace>.<name>`. */\nexport function isDottedIdentifier(\n  value: unknown\n): value is `${string}.${string}` {\n  return (\n    isBoundedIdentifier(value) && value.indexOf(\".\") > 0 && !value.endsWith(\".\")\n  );\n}\n\n/** Bound opaque IDs used in maps/sets while rejecting ambiguous empty IDs. */\nexport function isBoundedIdentifier(\n  value: unknown,\n  maximum = 4096\n): value is string {\n  return (\n    typeof value === \"string\" && value.length > 0 && value.length <= maximum\n  );\n}\n\n/** Array check that rejects holes skipped by every/map and inherited indexes. */\nexport function isDenseArray(value: readonly unknown[]): boolean {\n  for (let index = 0; index < value.length; index++) {\n    if (!Object.hasOwn(value, index)) {\n      return false;\n    }\n  }\n  return true;\n}\n","import { boundedEnumerableOwnKeys } from \"./http-headers\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"./runtime-types\";\n\nconst MAX_JSON_DEPTH = 32;\nconst MAX_JSON_NODES = 10_000;\nconst MAX_JSON_OBJECT_KEYS = 1024;\nconst MAX_JSON_ARRAY_ITEMS = 10_000;\nconst MAX_JSON_CHARACTERS = 4_194_304;\n\nexport interface JsonSnapshot {\n  async?: boolean;\n  characters?: number;\n  containers?: number;\n  valid: boolean;\n  value?: unknown;\n}\n\ninterface JsonContext {\n  active: WeakSet<object>;\n  characters: number;\n  maximum: number;\n  maximumCharacters: number;\n  nodes: number;\n}\n\nclass AsyncJsonValueError extends Error {}\n\nfunction isJsonObjectContainer(value: object): boolean {\n  const prototype = Object.getPrototypeOf(value);\n  return prototype === null || Object.getPrototypeOf(prototype) === null;\n}\n\nfunction visitJsonArray(\n  value: unknown[],\n  depth: number,\n  context: JsonContext\n): unknown[] {\n  const length = Reflect.get(value, \"length\");\n  if (\n    !Number.isSafeInteger(length) ||\n    length < 0 ||\n    length > MAX_JSON_ARRAY_ITEMS\n  ) {\n    throw new Error(\"sparse or oversized JSON array\");\n  }\n  consumeOwnDataPromiseFields(\n    value,\n    Array.from({ length }, (_, index) => index)\n  );\n  const snapshot = new Array<unknown>(length);\n  let asyncFailure: AsyncJsonValueError | undefined;\n  for (let index = 0; index < length; index += 1) {\n    if (!Object.hasOwn(value, index)) {\n      throw new Error(\"sparse or oversized JSON array\");\n    }\n    try {\n      snapshot[index] = visitJson(\n        Reflect.get(value, index),\n        depth + 1,\n        context\n      );\n    } catch (error) {\n      if (!(error instanceof AsyncJsonValueError)) {\n        throw error;\n      }\n      asyncFailure ??= error;\n    }\n  }\n  if (asyncFailure !== undefined) {\n    throw asyncFailure;\n  }\n  return snapshot;\n}\n\nfunction visitJsonObject(\n  value: object,\n  depth: number,\n  context: JsonContext\n): Record<string, unknown> {\n  if (!isJsonObjectContainer(value)) {\n    throw new Error(\"JSON objects must use an ordinary object prototype\");\n  }\n  const keys = boundedEnumerableOwnKeys(value, MAX_JSON_OBJECT_KEYS);\n  if (keys === undefined) {\n    throw new Error(\"oversized JSON object\");\n  }\n  consumeOwnDataPromiseFields(value, keys);\n  const snapshot: Record<string, unknown> = {};\n  let asyncFailure: AsyncJsonValueError | undefined;\n  for (const key of keys) {\n    context.characters += key.length;\n    if (context.characters > context.maximumCharacters) {\n      throw new Error(\"oversized JSON object keys\");\n    }\n    try {\n      Object.defineProperty(snapshot, key, {\n        configurable: true,\n        enumerable: true,\n        value: visitJson(Reflect.get(value, key), depth + 1, context),\n        writable: true,\n      });\n    } catch (error) {\n      if (!(error instanceof AsyncJsonValueError)) {\n        throw error;\n      }\n      asyncFailure ??= error;\n    }\n  }\n  if (asyncFailure !== undefined) {\n    throw asyncFailure;\n  }\n  return snapshot;\n}\n\nfunction visitJson(\n  value: unknown,\n  depth: number,\n  context: JsonContext\n): unknown {\n  if (consumeGenuinePromise(value)) {\n    throw new AsyncJsonValueError(\"Promises are not JSON values\");\n  }\n  if (value === null || typeof value === \"boolean\") {\n    return value;\n  }\n  if (typeof value === \"string\") {\n    context.characters += value.length;\n    if (context.characters > context.maximumCharacters) {\n      throw new Error(\"oversized JSON string content\");\n    }\n    return value;\n  }\n  if (typeof value === \"number\") {\n    if (!Number.isFinite(value)) {\n      throw new Error(\"non-finite JSON number\");\n    }\n    return value;\n  }\n  if (typeof value !== \"object\" || depth > MAX_JSON_DEPTH) {\n    throw new Error(\"invalid or excessively deep JSON value\");\n  }\n  context.nodes += 1;\n  if (context.nodes > context.maximum || context.active.has(value)) {\n    throw new Error(\"cyclic or oversized JSON value\");\n  }\n  context.active.add(value);\n  try {\n    if (Array.isArray(value)) {\n      return visitJsonArray(value, depth, context);\n    }\n    return visitJsonObject(value, depth, context);\n  } finally {\n    context.active.delete(value);\n  }\n}\n\n/** Validate and copy a JSON value without invoking any property more than once. */\nexport function snapshotJsonValue(\n  value: unknown,\n  maximumContainers = MAX_JSON_NODES,\n  maximumCharacters = MAX_JSON_CHARACTERS\n): JsonSnapshot {\n  try {\n    const maximum =\n      Number.isSafeInteger(maximumContainers) && maximumContainers >= 0\n        ? Math.min(MAX_JSON_NODES, maximumContainers)\n        : 0;\n    const characters =\n      Number.isSafeInteger(maximumCharacters) && maximumCharacters >= 0\n        ? Math.min(MAX_JSON_CHARACTERS, maximumCharacters)\n        : 0;\n    const context = {\n      active: new WeakSet<object>(),\n      characters: 0,\n      maximum,\n      maximumCharacters: characters,\n      nodes: 0,\n    };\n    const snapshot = visitJson(value, 0, context);\n    return {\n      characters: context.characters,\n      containers: context.nodes,\n      valid: true,\n      value: snapshot,\n    };\n  } catch (error) {\n    if (error instanceof AsyncJsonValueError) {\n      return { async: true, valid: false };\n    }\n    return { valid: false };\n  }\n}\n\n/** Count JSON object/array containers without walking past a caller's cap. */\nfunction pushContainerChildren(current: object, stack: object[]): boolean {\n  if (Array.isArray(current)) {\n    const length = Reflect.get(current, \"length\");\n    if (\n      !Number.isSafeInteger(length) ||\n      length < 0 ||\n      length > MAX_JSON_ARRAY_ITEMS\n    ) {\n      return false;\n    }\n    consumeOwnDataPromiseFields(\n      current,\n      Array.from({ length }, (_, index) => index)\n    );\n    for (let index = 0; index < length; index += 1) {\n      if (!Object.hasOwn(current, index)) {\n        return false;\n      }\n      const child = Reflect.get(current, index);\n      if (typeof child === \"object\" && child !== null) {\n        stack.push(child);\n      }\n    }\n    return true;\n  }\n  const keys = boundedEnumerableOwnKeys(current, MAX_JSON_OBJECT_KEYS);\n  if (keys === undefined) {\n    return false;\n  }\n  consumeOwnDataPromiseFields(current, keys);\n  for (const key of keys) {\n    const child = Reflect.get(current, key);\n    if (typeof child === \"object\" && child !== null) {\n      stack.push(child);\n    }\n  }\n  return true;\n}\n\nexport function countJsonContainersUpTo(\n  value: unknown,\n  maximum: number\n): number {\n  if (typeof value !== \"object\" || value === null) {\n    return 0;\n  }\n  const overflow =\n    Number.isSafeInteger(maximum) && maximum >= 0 ? maximum + 1 : 1;\n  if (!Number.isSafeInteger(maximum) || maximum < 0) {\n    return overflow;\n  }\n  const stack: object[] = [value];\n  let count = 0;\n  try {\n    while (stack.length > 0) {\n      const current = stack.pop();\n      if (current === undefined) {\n        break;\n      }\n      count += 1;\n      if (count > maximum) {\n        return count;\n      }\n      if (!pushContainerChildren(current, stack)) {\n        return overflow;\n      }\n    }\n  } catch {\n    return overflow;\n  }\n  return count;\n}\n","import type { MetadataExtractor } from \"@ai-sdk/openai-compatible\";\nimport { isJSONObject, type SharedV4ProviderMetadata } from \"@ai-sdk/provider\";\nimport { snapshotJsonValue } from \"../core/json-value\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n  requireGenuinePromise,\n} from \"../core/runtime-types\";\n\nexport const OPENAI_COMPATIBLE_SETTING_KEYS = [\n  \"apiKey\",\n  \"baseURL\",\n  \"convertUsage\",\n  \"fetch\",\n  \"headers\",\n  \"includeUsage\",\n  \"metadataExtractor\",\n  \"queryParams\",\n  \"supportedUrls\",\n  \"supportsStructuredOutputs\",\n] as const;\nexport const MAX_PROVIDER_MODEL_ID_LENGTH = 4096;\nexport const MAX_PROVIDER_STRING_RECORD_ENTRIES = 1024;\nexport const MAX_PROVIDER_STRING_RECORD_VALUE_LENGTH = 65_536;\nexport const MAX_PROVIDER_STRING_RECORD_CHARACTERS = 1_048_576;\nexport const MAX_PROVIDER_SUPPORTED_MEDIA_TYPES = 128;\nexport const MAX_PROVIDER_SUPPORTED_PATTERNS_PER_TYPE = 128;\nexport const MAX_PROVIDER_SUPPORTED_PATTERNS = 1024;\nexport const MAX_PROVIDER_SUPPORTED_PATTERN_LENGTH = 4096;\nexport const MAX_PROVIDER_SUPPORTED_PATTERN_CHARACTERS = 1_048_576;\nexport const INPUT_USAGE_KEYS = [\n  \"cacheRead\",\n  \"cacheWrite\",\n  \"noCache\",\n  \"total\",\n] as const;\nexport const OUTPUT_USAGE_KEYS = [\"reasoning\", \"text\", \"total\"] as const;\n\nexport function captureProviderModelId(\n  value: unknown,\n  provider: string\n): string {\n  if (\n    consumeGenuinePromise(value) ||\n    typeof value !== \"string\" ||\n    value.length === 0 ||\n    value.length > MAX_PROVIDER_MODEL_ID_LENGTH\n  ) {\n    throw new TypeError(\n      `${provider} modelId must be a synchronous non-empty string of at most ${MAX_PROVIDER_MODEL_ID_LENGTH} characters`\n    );\n  }\n  return value;\n}\n\nexport function captureProviderMetadataExtractor(\n  value: MetadataExtractor | undefined,\n  provider: string\n): MetadataExtractor | undefined {\n  if (value === undefined) {\n    return;\n  }\n  consumeOwnDataPromiseFields(value, [\n    \"createStreamExtractor\",\n    \"extractMetadata\",\n  ]);\n  const createStreamExtractor = Reflect.get(value, \"createStreamExtractor\");\n  const extractMetadata = Reflect.get(value, \"extractMetadata\");\n  const asyncCreate = consumeGenuinePromise(createStreamExtractor);\n  const asyncExtract = consumeGenuinePromise(extractMetadata);\n  if (\n    asyncCreate ||\n    asyncExtract ||\n    typeof createStreamExtractor !== \"function\" ||\n    typeof extractMetadata !== \"function\"\n  ) {\n    throw new TypeError(\n      `${provider} metadataExtractor methods must be synchronous functions`\n    );\n  }\n  return {\n    async extractMetadata(args) {\n      try {\n        const parsedBody = snapshotProviderCallbackJson(args.parsedBody);\n        if (parsedBody === undefined) {\n          return;\n        }\n        const result = Reflect.apply(extractMetadata, value, [{ parsedBody }]);\n        const promise = requireGenuinePromise<\n          SharedV4ProviderMetadata | undefined\n        >(\n          result,\n          (cause) =>\n            new TypeError(\n              `${provider} metadataExtractor.extractMetadata must return a genuine Promise`,\n              { cause }\n            )\n        );\n        return sanitizeCapturedMetadata(await promise);\n      } catch {\n        return;\n      }\n    },\n    createStreamExtractor() {\n      let source: unknown;\n      try {\n        source = Reflect.apply(createStreamExtractor, value, []);\n      } catch {\n        return emptyStreamMetadataExtractor();\n      }\n      if (consumeGenuinePromise(source)) {\n        return emptyStreamMetadataExtractor();\n      }\n      if (typeof source !== \"object\" || source === null) {\n        return emptyStreamMetadataExtractor();\n      }\n      consumeOwnDataPromiseFields(source, [\"buildMetadata\", \"processChunk\"]);\n      const buildMetadata = Reflect.get(source, \"buildMetadata\");\n      const processChunk = Reflect.get(source, \"processChunk\");\n      const asyncBuild = consumeGenuinePromise(buildMetadata);\n      const asyncProcess = consumeGenuinePromise(processChunk);\n      if (\n        asyncBuild ||\n        asyncProcess ||\n        typeof buildMetadata !== \"function\" ||\n        typeof processChunk !== \"function\"\n      ) {\n        return emptyStreamMetadataExtractor();\n      }\n      return {\n        processChunk(parsedChunk) {\n          try {\n            const capturedChunk = snapshotProviderCallbackJson(parsedChunk);\n            if (capturedChunk === undefined) {\n              return;\n            }\n            consumeGenuinePromise(\n              Reflect.apply(processChunk, source, [capturedChunk])\n            );\n          } catch {\n            // Optional metadata cannot fail a successful provider stream.\n          }\n        },\n        buildMetadata() {\n          try {\n            const result = Reflect.apply(buildMetadata, source, []);\n            return consumeGenuinePromise(result)\n              ? undefined\n              : sanitizeCapturedMetadata(result);\n          } catch {\n            return;\n          }\n        },\n      };\n    },\n  };\n}\n\nexport function emptyStreamMetadataExtractor(): ReturnType<\n  MetadataExtractor[\"createStreamExtractor\"]\n> {\n  return {\n    buildMetadata: () => undefined,\n    processChunk: () => undefined,\n  };\n}\n\nexport function sanitizeCapturedMetadata(\n  value: unknown\n): SharedV4ProviderMetadata | undefined {\n  if (value === undefined) {\n    return;\n  }\n  const snapshot = snapshotJsonValue(value, 10_000, 4_194_304);\n  return snapshot.valid && isJSONObject(snapshot.value)\n    ? (snapshot.value as SharedV4ProviderMetadata)\n    : undefined;\n}\n\nexport function snapshotProviderCallbackJson(\n  value: unknown\n): unknown | undefined {\n  const snapshot = snapshotJsonValue(value, 10_000, 4_194_304);\n  return snapshot.valid ? snapshot.value : undefined;\n}\n","import { boundedEnumerableOwnKeys } from \"../core/http-headers\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"../core/runtime-types\";\n\nimport {\n  MAX_PROVIDER_STRING_RECORD_CHARACTERS,\n  MAX_PROVIDER_STRING_RECORD_ENTRIES,\n  MAX_PROVIDER_STRING_RECORD_VALUE_LENGTH,\n} from \"./provider-settings-metadata\";\n\nexport function snapshotProviderStringRecord(\n  value: Record<string, string> | undefined,\n  provider: string,\n  containerName: string,\n  valueName: string\n): Record<string, string> | undefined {\n  if (value === undefined) {\n    return;\n  }\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new TypeError(`${provider} ${containerName} must be an object`);\n  }\n  const keys = boundedEnumerableOwnKeys(\n    value,\n    MAX_PROVIDER_STRING_RECORD_ENTRIES\n  );\n  if (keys === undefined) {\n    throw new TypeError(\n      `${provider} ${containerName} must contain at most ${MAX_PROVIDER_STRING_RECORD_ENTRIES} entries`\n    );\n  }\n  consumeOwnDataPromiseFields(value, keys);\n  const entries: Array<readonly [string, unknown]> = [];\n  let asyncValue = false;\n  for (const key of keys) {\n    const item = Reflect.get(value, key);\n    if (consumeGenuinePromise(item)) {\n      asyncValue = true;\n    }\n    entries.push([key, item]);\n  }\n  if (asyncValue) {\n    throw new TypeError(`${provider} ${valueName} values must be synchronous`);\n  }\n  const snapshot: Record<string, string> = {};\n  let totalCharacters = 0;\n  for (const [key, item] of entries) {\n    if (typeof item !== \"string\") {\n      throw new TypeError(`${provider} ${valueName} values must be strings`);\n    }\n    if (item.length > MAX_PROVIDER_STRING_RECORD_VALUE_LENGTH) {\n      throw new TypeError(\n        `${provider} ${valueName} values must contain at most ${MAX_PROVIDER_STRING_RECORD_VALUE_LENGTH} characters`\n      );\n    }\n    totalCharacters += key.length + item.length;\n    if (totalCharacters > MAX_PROVIDER_STRING_RECORD_CHARACTERS) {\n      throw new TypeError(\n        `${provider} ${containerName} exceed ${MAX_PROVIDER_STRING_RECORD_CHARACTERS} aggregate characters`\n      );\n    }\n    Object.defineProperty(snapshot, key, {\n      configurable: true,\n      enumerable: true,\n      value: item,\n      writable: true,\n    });\n  }\n  return snapshot;\n}\n","import {\n  boundedEnumerableOwnKeys,\n  hasInvalidHttpHeaderValueCharacter,\n  isValidHttpHeaderName,\n} from \"../core/http-headers\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"../core/runtime-types\";\n\nimport {\n  MAX_PROVIDER_STRING_RECORD_CHARACTERS,\n  MAX_PROVIDER_STRING_RECORD_ENTRIES,\n  MAX_PROVIDER_STRING_RECORD_VALUE_LENGTH,\n  OPENAI_COMPATIBLE_SETTING_KEYS,\n} from \"./provider-settings-metadata\";\nimport { snapshotProviderStringRecord } from \"./provider-settings-records\";\n\nexport function prepareProviderSettings(\n  settings: unknown,\n  provider: string,\n  additionalKeys: readonly string[] = []\n): asserts settings is object {\n  if (consumeGenuinePromise(settings)) {\n    throw new TypeError(`${provider} settings must be synchronous`);\n  }\n  if (typeof settings !== \"object\" || settings === null) {\n    throw new TypeError(`${provider} settings must be an object`);\n  }\n  consumeOwnDataPromiseFields(settings, [\n    ...OPENAI_COMPATIBLE_SETTING_KEYS,\n    ...additionalKeys,\n  ]);\n}\n\nexport function rejectAsyncProviderSettingValues(\n  values: readonly unknown[],\n  provider: string\n): void {\n  let asyncSetting = false;\n  for (const value of values) {\n    if (consumeGenuinePromise(value)) {\n      asyncSetting = true;\n    }\n  }\n  if (asyncSetting) {\n    throw new TypeError(`${provider} settings must be synchronous`);\n  }\n}\n\nexport function validateCommonProviderSettings(\n  settings: Record<string, unknown>,\n  provider: string\n): void {\n  for (const key of [\"apiKey\", \"baseURL\"] as const) {\n    const value = settings[key];\n    if (\n      value !== undefined &&\n      (typeof value !== \"string\" || value.length === 0 || value.length > 8192)\n    ) {\n      throw new TypeError(\n        `${provider} ${key} must be a non-empty bounded string`\n      );\n    }\n  }\n  for (const key of [\"includeUsage\", \"supportsStructuredOutputs\"] as const) {\n    const value = settings[key];\n    if (value !== undefined && typeof value !== \"boolean\") {\n      throw new TypeError(`${provider} ${key} must be a boolean`);\n    }\n  }\n  for (const key of [\"convertUsage\", \"fetch\"] as const) {\n    const value = settings[key];\n    if (value !== undefined && typeof value !== \"function\") {\n      throw new TypeError(`${provider} ${key} must be a function`);\n    }\n  }\n  const metadataExtractor = settings.metadataExtractor;\n  if (\n    metadataExtractor !== undefined &&\n    (typeof metadataExtractor !== \"object\" ||\n      metadataExtractor === null ||\n      Array.isArray(metadataExtractor))\n  ) {\n    throw new TypeError(`${provider} metadataExtractor must be an object`);\n  }\n  const supportedUrls = settings.supportedUrls;\n  if (supportedUrls !== undefined && typeof supportedUrls !== \"function\") {\n    throw new TypeError(`${provider} supportedUrls must be a function`);\n  }\n}\n\nexport function snapshotProviderHeaders(\n  value: Record<string, string> | undefined,\n  provider: string\n): Record<string, string> | undefined {\n  if (value === undefined) {\n    return;\n  }\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new TypeError(`${provider} headers must be an object`);\n  }\n  const keys = boundedEnumerableOwnKeys(\n    value,\n    MAX_PROVIDER_STRING_RECORD_ENTRIES\n  );\n  if (keys === undefined) {\n    throw new TypeError(\n      `${provider} headers must contain at most ${MAX_PROVIDER_STRING_RECORD_ENTRIES} entries`\n    );\n  }\n  consumeOwnDataPromiseFields(value, keys);\n  if (keys.some((key) => !isValidHttpHeaderName(key))) {\n    throw new TypeError(`${provider} header names must use valid HTTP syntax`);\n  }\n  const entries: Array<readonly [string, unknown]> = [];\n  let asyncValue = false;\n  for (const key of keys) {\n    const item = Reflect.get(value, key);\n    if (consumeGenuinePromise(item)) {\n      asyncValue = true;\n    }\n    entries.push([key, item]);\n  }\n  if (asyncValue) {\n    throw new TypeError(`${provider} header values must be synchronous`);\n  }\n  const snapshot: Record<string, string> = {};\n  let totalCharacters = 0;\n  for (const [key, item] of entries) {\n    if (\n      typeof item !== \"string\" ||\n      item.length > MAX_PROVIDER_STRING_RECORD_VALUE_LENGTH ||\n      hasInvalidHttpHeaderValueCharacter(item)\n    ) {\n      throw new TypeError(\n        `${provider} header values must use valid HTTP syntax`\n      );\n    }\n    totalCharacters += key.length + item.length;\n    if (totalCharacters > MAX_PROVIDER_STRING_RECORD_CHARACTERS) {\n      throw new TypeError(\n        `${provider} headers exceed ${MAX_PROVIDER_STRING_RECORD_CHARACTERS} aggregate characters`\n      );\n    }\n    Object.defineProperty(snapshot, key, {\n      configurable: true,\n      enumerable: true,\n      value: item,\n      writable: true,\n    });\n  }\n  return snapshot;\n}\n\nexport function snapshotProviderQueryParams(\n  value: Record<string, string> | undefined,\n  provider: string\n): Record<string, string> | undefined {\n  return snapshotProviderStringRecord(\n    value,\n    provider,\n    \"query parameters\",\n    \"query parameter\"\n  );\n}\n","import type { OpenAICompatibleProviderSettings } from \"@ai-sdk/openai-compatible\";\nimport { isJSONObject, type LanguageModelV4Usage } from \"@ai-sdk/provider\";\nimport { snapshotJsonValue } from \"../core/json-value\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n  requireGenuinePromise,\n} from \"../core/runtime-types\";\n\nimport {\n  INPUT_USAGE_KEYS,\n  OUTPUT_USAGE_KEYS,\n  snapshotProviderCallbackJson,\n} from \"./provider-settings-metadata\";\n\nexport function captureProviderConvertUsage(\n  value: OpenAICompatibleProviderSettings[\"convertUsage\"],\n  provider: string,\n  receiver: object\n): OpenAICompatibleProviderSettings[\"convertUsage\"] {\n  if (value === undefined) {\n    return;\n  }\n  return (usage) => {\n    const capturedUsage = snapshotProviderCallbackJson(usage);\n    if (capturedUsage === undefined) {\n      throw new TypeError(\n        `${provider} convertUsage input must be bounded JSON`\n      );\n    }\n    const result = Reflect.apply(value, receiver, [capturedUsage]);\n    if (consumeGenuinePromise(result)) {\n      throw new TypeError(`${provider} convertUsage must return synchronously`);\n    }\n    return snapshotProviderUsage(result, provider);\n  };\n}\n\nexport function captureProviderFetch(\n  value: typeof globalThis.fetch | undefined,\n  provider: string,\n  receiver: object\n): typeof globalThis.fetch | undefined {\n  if (value === undefined) {\n    return;\n  }\n  return (input, init) => {\n    let result: unknown;\n    try {\n      result = Reflect.apply(value, receiver, [input, init]);\n    } catch (cause) {\n      return Promise.reject(cause);\n    }\n    const promise = requireGenuinePromise<Response>(\n      result,\n      (cause) =>\n        new TypeError(`${provider} fetch must return a genuine Promise`, {\n          cause,\n        })\n    );\n    return promise.then((response) => {\n      if (typeof response !== \"object\" || response === null) {\n        throw new TypeError(\n          `${provider} fetch must resolve to a response object`\n        );\n      }\n      return response;\n    });\n  };\n}\n\nexport function snapshotProviderUsage(\n  value: unknown,\n  provider: string\n): LanguageModelV4Usage {\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new TypeError(`${provider} convertUsage must return an object`);\n  }\n  consumeOwnDataPromiseFields(value, [\"inputTokens\", \"outputTokens\", \"raw\"]);\n  for (const [key, fields] of [\n    [\"inputTokens\", INPUT_USAGE_KEYS],\n    [\"outputTokens\", OUTPUT_USAGE_KEYS],\n  ] as const) {\n    const descriptor = Object.getOwnPropertyDescriptor(value, key);\n    if (descriptor !== undefined && \"value\" in descriptor) {\n      consumeUsageFieldPromises(descriptor.value, fields);\n    }\n  }\n  const inputTokens = Reflect.get(value, \"inputTokens\");\n  const outputTokens = Reflect.get(value, \"outputTokens\");\n  const raw = Reflect.get(value, \"raw\");\n  const asyncInput = consumeGenuinePromise(inputTokens);\n  const asyncOutput = consumeGenuinePromise(outputTokens);\n  const asyncRaw = consumeGenuinePromise(raw);\n  if (asyncInput || asyncOutput || asyncRaw) {\n    throw new TypeError(`${provider} convertUsage fields must be synchronous`);\n  }\n  const inputSnapshot = snapshotTokenContainer(\n    inputTokens,\n    INPUT_USAGE_KEYS,\n    provider,\n    \"inputTokens\"\n  );\n  const outputSnapshot = snapshotTokenContainer(\n    outputTokens,\n    OUTPUT_USAGE_KEYS,\n    provider,\n    \"outputTokens\"\n  );\n  let rawSnapshot: LanguageModelV4Usage[\"raw\"];\n  if (raw !== undefined) {\n    const snapshot = snapshotJsonValue(raw, 10_000, 1_048_576);\n    if (!(snapshot.valid && isJSONObject(snapshot.value))) {\n      throw new TypeError(`${provider} convertUsage raw must be bounded JSON`);\n    }\n    rawSnapshot = snapshot.value;\n  }\n  return {\n    inputTokens: inputSnapshot as LanguageModelV4Usage[\"inputTokens\"],\n    outputTokens: outputSnapshot as LanguageModelV4Usage[\"outputTokens\"],\n    raw: rawSnapshot,\n  };\n}\n\nexport function consumeUsageFieldPromises(\n  value: unknown,\n  keys: readonly string[]\n): void {\n  if (typeof value === \"object\" && value !== null) {\n    consumeOwnDataPromiseFields(value, keys);\n  }\n}\n\nexport function snapshotTokenContainer(\n  value: unknown,\n  keys: readonly string[],\n  provider: string,\n  name: string\n): Record<string, number | undefined> {\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new TypeError(`${provider} convertUsage ${name} must be an object`);\n  }\n  consumeOwnDataPromiseFields(value, keys);\n  const snapshot: Record<string, number | undefined> = {};\n  let asyncField = false;\n  for (const key of keys) {\n    const item = Reflect.get(value, key);\n    if (consumeGenuinePromise(item)) {\n      asyncField = true;\n      continue;\n    }\n    if (\n      item !== undefined &&\n      (typeof item !== \"number\" || !Number.isFinite(item) || item < 0)\n    ) {\n      throw new TypeError(\n        `${provider} convertUsage ${name}.${key} must be a non-negative finite number`\n      );\n    }\n    snapshot[key] = item as number | undefined;\n  }\n  if (asyncField) {\n    throw new TypeError(\n      `${provider} convertUsage ${name} fields must be synchronous`\n    );\n  }\n  return snapshot;\n}\n","import { boundedEnumerableOwnKeys } from \"../core/http-headers\";\nimport {\n  captureGenuinePromise,\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n  requireGenuinePromise,\n} from \"../core/runtime-types\";\n\nimport {\n  MAX_PROVIDER_SUPPORTED_MEDIA_TYPES,\n  MAX_PROVIDER_SUPPORTED_PATTERN_CHARACTERS,\n  MAX_PROVIDER_SUPPORTED_PATTERN_LENGTH,\n  MAX_PROVIDER_SUPPORTED_PATTERNS,\n  MAX_PROVIDER_SUPPORTED_PATTERNS_PER_TYPE,\n} from \"./provider-settings-metadata\";\n\nexport function captureProviderSupportedUrls(\n  value:\n    | (() => PromiseLike<Record<string, RegExp[]>> | Record<string, RegExp[]>)\n    | undefined,\n  provider: string,\n  receiver: object\n):\n  | (() => PromiseLike<Record<string, RegExp[]>> | Record<string, RegExp[]>)\n  | undefined {\n  if (value === undefined) {\n    return;\n  }\n  return () => {\n    const result = Reflect.apply(value, receiver, []);\n    const promise = captureGenuinePromise<Record<string, RegExp[]>>(result);\n    if (promise !== undefined) {\n      return promise.then((resolved) =>\n        snapshotProviderSupportedUrlsResult(resolved, provider)\n      );\n    }\n    if (typeof result !== \"object\" || result === null) {\n      return requireGenuinePromise<Record<string, RegExp[]>>(\n        result,\n        (cause) =>\n          new TypeError(\n            `${provider} supportedUrls must return synchronously or as a genuine Promise`,\n            { cause }\n          )\n      );\n    }\n    return snapshotProviderSupportedUrlsResult(result, provider);\n  };\n}\n\nexport function snapshotProviderSupportedUrlsResult(\n  value: unknown,\n  provider: string\n): Record<string, RegExp[]> {\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new TypeError(`${provider} supportedUrls must be an object`);\n  }\n  const mediaTypes = boundedEnumerableOwnKeys(\n    value,\n    MAX_PROVIDER_SUPPORTED_MEDIA_TYPES\n  );\n  if (mediaTypes === undefined) {\n    throw new TypeError(\n      `${provider} supportedUrls must contain at most ${MAX_PROVIDER_SUPPORTED_MEDIA_TYPES} media types`\n    );\n  }\n  consumeOwnDataPromiseFields(value, mediaTypes);\n  for (const mediaType of mediaTypes) {\n    const descriptor = Object.getOwnPropertyDescriptor(value, mediaType);\n    if (descriptor !== undefined && \"value\" in descriptor) {\n      preconsumePatternEntries(descriptor.value);\n    }\n  }\n  const captured: Array<readonly [string, unknown]> = [];\n  let asyncField = false;\n  for (const mediaType of mediaTypes) {\n    const patterns = Reflect.get(value, mediaType);\n    if (consumeGenuinePromise(patterns)) {\n      asyncField = true;\n    } else {\n      preconsumePatternEntries(patterns);\n    }\n    captured.push([mediaType, patterns]);\n  }\n  if (asyncField) {\n    throw new TypeError(`${provider} supportedUrls must be synchronous`);\n  }\n  const snapshot: Record<string, RegExp[]> = {};\n  let totalPatterns = 0;\n  let totalCharacters = 0;\n  for (const [mediaType, patterns] of captured) {\n    const cloned = cloneSupportedPatterns(patterns, provider);\n    totalPatterns += cloned.patterns.length;\n    if (totalPatterns > MAX_PROVIDER_SUPPORTED_PATTERNS) {\n      throw new TypeError(\n        `${provider} supportedUrls must contain at most ${MAX_PROVIDER_SUPPORTED_PATTERNS} patterns`\n      );\n    }\n    totalCharacters += cloned.characters;\n    if (totalCharacters > MAX_PROVIDER_SUPPORTED_PATTERN_CHARACTERS) {\n      throw new TypeError(\n        `${provider} supportedUrls exceed the aggregate pattern size limit`\n      );\n    }\n    Object.defineProperty(snapshot, mediaType, {\n      configurable: true,\n      enumerable: true,\n      value: cloned.patterns,\n      writable: true,\n    });\n  }\n  return snapshot;\n}\n\nexport function cloneSupportedPatterns(\n  value: unknown,\n  provider: string\n): { characters: number; patterns: RegExp[] } {\n  if (!Array.isArray(value)) {\n    throw new TypeError(`${provider} supportedUrls values must be arrays`);\n  }\n  const length = Reflect.get(value, \"length\");\n  if (\n    typeof length !== \"number\" ||\n    !Number.isSafeInteger(length) ||\n    length < 0 ||\n    length > MAX_PROVIDER_SUPPORTED_PATTERNS_PER_TYPE\n  ) {\n    throw new TypeError(\n      `${provider} supportedUrls pattern arrays must contain at most ${MAX_PROVIDER_SUPPORTED_PATTERNS_PER_TYPE} entries`\n    );\n  }\n  const patterns = new Array<RegExp>(length);\n  let asyncPattern = false;\n  let characters = 0;\n  for (let index = 0; index < length; index += 1) {\n    if (!Object.hasOwn(value, index)) {\n      throw new TypeError(`${provider} supportedUrls arrays must be dense`);\n    }\n    const pattern = Reflect.get(value, index);\n    if (consumeGenuinePromise(pattern)) {\n      asyncPattern = true;\n      continue;\n    }\n    const copy = cloneSupportedPattern(pattern);\n    if (copy === undefined) {\n      throw new TypeError(`${provider} supportedUrls entries must be RegExp`);\n    }\n    characters += copy.source.length;\n    patterns[index] = copy;\n  }\n  if (asyncPattern) {\n    throw new TypeError(\n      `${provider} supportedUrls entries must be synchronous`\n    );\n  }\n  return { characters, patterns };\n}\n\nexport function preconsumePatternEntries(value: unknown): void {\n  if (!Array.isArray(value)) {\n    return;\n  }\n  const length = Reflect.get(value, \"length\");\n  if (\n    typeof length === \"number\" &&\n    Number.isSafeInteger(length) &&\n    length >= 0 &&\n    length <= MAX_PROVIDER_SUPPORTED_PATTERNS_PER_TYPE\n  ) {\n    consumeOwnDataPromiseFields(\n      value,\n      Array.from({ length }, (_, index) => index)\n    );\n  }\n}\n\nexport function cloneSupportedPattern(value: unknown): RegExp | undefined {\n  try {\n    const sourceGetter = Object.getOwnPropertyDescriptor(\n      RegExp.prototype,\n      \"source\"\n    )?.get;\n    if (sourceGetter === undefined) {\n      return;\n    }\n    const source = Reflect.apply(sourceGetter, value, []);\n    if (\n      typeof source !== \"string\" ||\n      source.length > MAX_PROVIDER_SUPPORTED_PATTERN_LENGTH\n    ) {\n      return;\n    }\n    let flags = \"\";\n    for (const [property, flag] of [\n      [\"hasIndices\", \"d\"],\n      [\"global\", \"g\"],\n      [\"ignoreCase\", \"i\"],\n      [\"multiline\", \"m\"],\n      [\"dotAll\", \"s\"],\n      [\"unicode\", \"u\"],\n      [\"unicodeSets\", \"v\"],\n      [\"sticky\", \"y\"],\n    ] as const) {\n      const getter = Object.getOwnPropertyDescriptor(\n        RegExp.prototype,\n        property\n      )?.get;\n      if (getter !== undefined && Reflect.apply(getter, value, []) === true) {\n        flags += flag;\n      }\n    }\n    return new RegExp(source, flags);\n  } catch {\n    return;\n  }\n}\n","import { addCapturedAbortListener } from \"./abort-signal\";\nimport { parseDuration } from \"./cooldown\";\nimport { consumeGenuinePromise } from \"./runtime-types\";\n\nconst MAX_TIMEOUT_MS = 86_400_000;\nconst MAX_MONOTONIC_MS = Number.MAX_SAFE_INTEGER - MAX_TIMEOUT_MS;\n\nimport type { Duration } from \"./types\";\n\nexport function isSignalAborted(signal: AbortSignal | undefined): boolean {\n  try {\n    const aborted = signal?.aborted;\n    return !consumeGenuinePromise(aborted) && aborted === true;\n  } catch {\n    return false;\n  }\n}\n\nexport function signalAbortReason(signal: AbortSignal | undefined): unknown {\n  try {\n    const reason = signal?.reason;\n    return consumeGenuinePromise(reason)\n      ? new DOMException(\"aborted\", \"AbortError\")\n      : (reason ?? new DOMException(\"aborted\", \"AbortError\"));\n  } catch {\n    return new DOMException(\"aborted\", \"AbortError\");\n  }\n}\n\n/** Monotonic clock for elapsed-time budgets; wall-clock jumps must not alter them. */\nexport function monotonicNow(): number {\n  try {\n    const value = globalThis.performance?.now();\n    if (consumeGenuinePromise(value)) {\n      throw new Error(\"async performance clock is unsupported\");\n    }\n    if (\n      typeof value === \"number\" &&\n      Number.isFinite(value) &&\n      value >= 0 &&\n      value <= MAX_MONOTONIC_MS\n    ) {\n      return value;\n    }\n  } catch {\n    // Older/embedded runtimes may not expose a usable Performance clock.\n  }\n  try {\n    const value = Date.now();\n    if (consumeGenuinePromise(value)) {\n      throw new Error(\"async wall clock is unsupported\");\n    }\n    if (Number.isFinite(value) && value >= 0 && value <= MAX_MONOTONIC_MS) {\n      return value;\n    }\n  } catch {\n    // A hostile clock must not make timeout bookkeeping throw.\n  }\n  return 0;\n}\n\nexport function clearTimerSafely(\n  timer: ReturnType<typeof setTimeout> | undefined\n): void {\n  if (timer === undefined) {\n    return;\n  }\n  try {\n    consumeGenuinePromise(clearTimeout(timer));\n  } catch {\n    // Platform cleanup must not replace an operation's settled outcome.\n  }\n}\n\nexport class RouterTimerError extends Error {\n  readonly code = \"timer_unavailable\";\n\n  constructor(cause: unknown) {\n    super(\"ai-router: platform timer is unavailable\", { cause });\n    this.name = \"RouterTimerError\";\n  }\n}\n\nexport class RouterCancellationError extends Error {\n  readonly code = \"cancellation_unavailable\";\n\n  constructor(cause: unknown) {\n    super(\"ai-router: cancellation infrastructure is unavailable\", { cause });\n    this.name = \"RouterCancellationError\";\n  }\n}\n\nexport function createAbortControllerSafely(): AbortController {\n  try {\n    return new AbortController();\n  } catch (error) {\n    throw new RouterCancellationError(error);\n  }\n}\n\nexport function abortControllerSafely(\n  controller: AbortController,\n  reason: unknown\n): void {\n  try {\n    const abort = Reflect.get(controller, \"abort\");\n    if (consumeGenuinePromise(abort) || typeof abort !== \"function\") {\n      return;\n    }\n    consumeGenuinePromise(Reflect.apply(abort, controller, [reason]));\n  } catch {\n    // A broken cancellation primitive must not prevent promise settlement.\n  }\n}\n\nexport function scheduleTimer(\n  callback: () => void,\n  delay: number\n): ReturnType<typeof setTimeout> {\n  try {\n    const timer = setTimeout(callback, delay);\n    if (consumeGenuinePromise(timer)) {\n      throw new Error(\"timer registration returned a Promise\");\n    }\n    return timer;\n  } catch (error) {\n    throw new RouterTimerError(error);\n  }\n}\n\nfunction randomUnit(): number {\n  try {\n    const value = Math.random();\n    if (consumeGenuinePromise(value)) {\n      return 0;\n    }\n    return Number.isFinite(value) && value >= 0 && value < 1 ? value : 0;\n  } catch {\n    return 0;\n  }\n}\n\nexport class RouterTimeoutError extends Error {\n  readonly code: \"attempt_timeout\" | \"first_content_timeout\" | \"total_timeout\";\n  readonly durationMs: number;\n\n  constructor(code: RouterTimeoutError[\"code\"], durationMs: number) {\n    super(`ai-router: ${code.replaceAll(\"_\", \" \")} after ${durationMs}ms`);\n    this.code = code;\n    this.durationMs = durationMs;\n    this.name = \"RouterTimeoutError\";\n  }\n}\n\nexport function durationMs(\n  value: Duration | number | undefined\n): number | undefined {\n  if (value === undefined) {\n    return;\n  }\n  const resolved = typeof value === \"number\" ? value : parseDuration(value);\n  if (\n    !Number.isFinite(resolved) ||\n    resolved <= 0 ||\n    resolved > MAX_TIMEOUT_MS\n  ) {\n    throw new Error(\n      \"ai-router: timeout durations must be positive and at most 24h\"\n    );\n  }\n  // Node and browsers truncate fractional timer delays. Round up so a\n  // positive timeout can never become an accidental immediate timeout.\n  return Math.ceil(resolved);\n}\n\nexport function effectiveTimeout(\n  attemptTimeout: number | undefined,\n  remaining: number | undefined\n): number | undefined {\n  if (attemptTimeout === undefined) {\n    return remaining;\n  }\n  if (remaining === undefined) {\n    return attemptTimeout;\n  }\n  return Math.min(attemptTimeout, remaining);\n}\n\nexport async function jitteredBackoff(\n  maximumMs: number | undefined,\n  signal?: AbortSignal\n): Promise<void> {\n  if (maximumMs === undefined || maximumMs <= 0) {\n    return;\n  }\n  if (isSignalAborted(signal)) {\n    throw signalAbortReason(signal);\n  }\n  const delay = Math.floor(randomUnit() * maximumMs);\n  await new Promise<void>((resolve, reject) => {\n    let settled = false;\n    let removeSignalAbort: (() => void) | undefined;\n    const onAbort = () => {\n      if (settled) {\n        return;\n      }\n      settled = true;\n      clearTimerSafely(timer);\n      removeSignalAbort?.();\n      reject(signalAbortReason(signal));\n    };\n    const timer = scheduleTimer(() => {\n      if (settled) {\n        return;\n      }\n      settled = true;\n      removeSignalAbort?.();\n      resolve();\n    }, delay);\n    if (settled) {\n      return;\n    }\n    try {\n      if (signal !== undefined) {\n        removeSignalAbort = addCapturedAbortListener(signal, onAbort);\n        if (settled) {\n          removeSignalAbort();\n          return;\n        }\n      }\n      if (isSignalAborted(signal)) {\n        onAbort();\n      }\n    } catch (error) {\n      if (settled) {\n        return;\n      }\n      settled = true;\n      clearTimerSafely(timer);\n      removeSignalAbort?.();\n      reject(error);\n    }\n  });\n}\n","import { boundedEnumerableOwnKeys } from \"../../core/http-headers\";\nimport {\n  captureGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"../../core/runtime-types\";\nimport { clearTimerSafely, scheduleTimer } from \"../../core/timeout\";\n\nconst MAX_FIELDS = 200_000;\nconst MAX_OBJECT_KEYS = 1024;\nconst LATE_MUTATION_RETENTION_MS = 1000;\n\nexport interface CallbackJsonMutationTarget {\n  keys: (string | number)[];\n  value: object;\n}\n\nfunction mutationKeys(\n  value: object,\n  remaining: number\n): (string | number)[] | undefined {\n  try {\n    if (Array.isArray(value)) {\n      const length = Object.getOwnPropertyDescriptor(value, \"length\")?.value;\n      return typeof length === \"number\" &&\n        Number.isSafeInteger(length) &&\n        length >= 0 &&\n        length <= remaining\n        ? Array.from({ length }, (_, index) => index)\n        : undefined;\n    }\n    const keys = boundedEnumerableOwnKeys(value, MAX_OBJECT_KEYS);\n    return keys !== undefined && keys.length <= remaining ? keys : undefined;\n  } catch {\n    return;\n  }\n}\n\nexport function captureCallbackJsonMutationTargets(\n  root: unknown\n): CallbackJsonMutationTarget[] {\n  if (typeof root !== \"object\" || root === null) {\n    return [];\n  }\n  const targets: CallbackJsonMutationTarget[] = [];\n  const pending: object[] = [root];\n  const seen = new WeakSet<object>();\n  let remaining = MAX_FIELDS;\n  while (pending.length > 0 && remaining > 0) {\n    const value = pending.pop();\n    if (value === undefined || seen.has(value)) {\n      continue;\n    }\n    seen.add(value);\n    const keys = mutationKeys(value, remaining);\n    if (keys === undefined) {\n      continue;\n    }\n    remaining -= keys.length;\n    targets.push({ keys, value });\n    for (const key of keys) {\n      const descriptor = Object.getOwnPropertyDescriptor(value, key);\n      const child =\n        descriptor !== undefined && \"value\" in descriptor\n          ? descriptor.value\n          : undefined;\n      if (typeof child === \"object\" && child !== null) {\n        pending.push(child);\n      }\n    }\n  }\n  return targets;\n}\n\nexport function consumeCallbackJsonMutationPromises(\n  targets: CallbackJsonMutationTarget[]\n): void {\n  for (const target of targets) {\n    consumeOwnDataPromiseFields(target.value, target.keys);\n  }\n}\n\nexport function consumeCallbackMutationsNowAndAfterPromise(\n  value: unknown,\n  targets: CallbackJsonMutationTarget[]\n): void {\n  consumeCallbackJsonMutationPromises(targets);\n  const promise = captureGenuinePromise(value);\n  if (promise === undefined) {\n    return;\n  }\n  let pendingTargets: CallbackJsonMutationTarget[] | undefined = targets;\n  let timer: ReturnType<typeof setTimeout> | undefined;\n  const finish = () => {\n    if (pendingTargets !== undefined) {\n      consumeCallbackJsonMutationPromises(pendingTargets);\n      pendingTargets = undefined;\n    }\n    clearTimerSafely(timer);\n  };\n  try {\n    timer = scheduleTimer(() => {\n      pendingTargets = undefined;\n    }, LATE_MUTATION_RETENTION_MS);\n  } catch {\n    pendingTargets = undefined;\n  }\n  promise.then(finish, finish);\n}\n","import {\n  isJSONObject,\n  type JSONObject,\n  type JSONValue,\n} from \"@ai-sdk/provider\";\nimport { snapshotJsonValue } from \"../../core/json-value\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"../../core/runtime-types\";\n\nconst MAX_METADATA_BODY_CONTAINERS = 50_000;\nconst MAX_METADATA_BODY_CHARACTERS = 4_194_304;\nconst MAX_REASONING_CHOICES = 1024;\nconst MAX_REASONING_DETAILS = 1024;\nconst MAX_REASONING_DETAIL_CONTAINERS = 1000;\nconst MAX_REASONING_DETAIL_CHARACTERS = 65_536;\nconst MAX_REASONING_DETAILS_CONTAINERS = 10_000;\nconst MAX_REASONING_DETAILS_CHARACTERS = 1_048_576;\nconst reasoningDetailBudgets = new WeakMap<\n  JSONValue[],\n  { characters: number; containers: number; seen: Set<string> }\n>();\n\nexport function canonicalJsonValueKey(value: JSONValue): string {\n  if (value === null || typeof value !== \"object\") {\n    return JSON.stringify(value) ?? \"undefined\";\n  }\n  if (Array.isArray(value)) {\n    const parts = new Array<string>(value.length);\n    for (let index = 0; index < value.length; index += 1) {\n      parts[index] = canonicalJsonValueKey(value[index] as JSONValue);\n    }\n    return `[${parts.join(\",\")}]`;\n  }\n  const keys = Object.keys(value).sort();\n  const parts = new Array<string>(keys.length);\n  for (let index = 0; index < keys.length; index += 1) {\n    const key = keys[index] as string;\n    parts[index] =\n      `${JSON.stringify(key)}:${canonicalJsonValueKey(value[key] as JSONValue)}`;\n  }\n  return `{${parts.join(\",\")}}`;\n}\n\nfunction reasoningDetailBudget(target: JSONValue[]): {\n  characters: number;\n  containers: number;\n  seen: Set<string>;\n} {\n  const existing = reasoningDetailBudgets.get(target);\n  if (existing !== undefined) {\n    return existing;\n  }\n  const budget = { characters: 0, containers: 0, seen: new Set<string>() };\n  const targetLength = target.length;\n  const length =\n    Number.isSafeInteger(targetLength) && targetLength >= 0\n      ? Math.min(targetLength, MAX_REASONING_DETAILS)\n      : 0;\n  for (let index = 0; index < length; index += 1) {\n    if (!Object.hasOwn(target, index)) {\n      continue;\n    }\n    const snapshot = snapshotJsonValue(\n      target[index],\n      MAX_REASONING_DETAIL_CONTAINERS,\n      MAX_REASONING_DETAIL_CHARACTERS\n    );\n    if (snapshot.valid && snapshot.value !== null) {\n      budget.characters += snapshot.characters ?? 0;\n      budget.containers += snapshot.containers ?? 0;\n      budget.seen.add(canonicalJsonValueKey(snapshot.value as JSONValue));\n    }\n  }\n  reasoningDetailBudgets.set(target, budget);\n  return budget;\n}\n\nexport function appendUniqueJsonDetails(\n  target: JSONValue[],\n  details: unknown\n): void {\n  const budget = reasoningDetailBudget(target);\n  if (consumeGenuinePromise(details)) {\n    return;\n  }\n  if (!Array.isArray(details)) {\n    return;\n  }\n  let length = 0;\n  try {\n    const candidate = details.length;\n    if (!Number.isSafeInteger(candidate) || candidate < 0) {\n      return;\n    }\n    length = Math.min(candidate, MAX_REASONING_DETAILS);\n  } catch {\n    return;\n  }\n  consumeOwnDataPromiseFields(\n    details,\n    Array.from({ length }, (_, index) => index)\n  );\n  for (let index = 0; index < length; index += 1) {\n    if (target.length >= MAX_REASONING_DETAILS) {\n      return;\n    }\n    try {\n      if (!Object.hasOwn(details, index)) {\n        continue;\n      }\n      const snapshot = snapshotJsonValue(\n        details[index],\n        Math.min(\n          MAX_REASONING_DETAIL_CONTAINERS,\n          MAX_REASONING_DETAILS_CONTAINERS - budget.containers\n        ),\n        Math.min(\n          MAX_REASONING_DETAIL_CHARACTERS,\n          MAX_REASONING_DETAILS_CHARACTERS - budget.characters\n        )\n      );\n      if (!snapshot.valid || snapshot.value === null) {\n        continue;\n      }\n      const detail = snapshot.value as JSONValue;\n      const key = canonicalJsonValueKey(detail);\n      if (budget.seen.has(key)) {\n        continue;\n      }\n      budget.seen.add(key);\n      budget.characters += snapshot.characters ?? 0;\n      budget.containers += snapshot.containers ?? 0;\n      target.push(detail);\n    } catch {\n      // Ignore one hostile detail while preserving other bounded entries.\n    }\n  }\n}\n\nexport function snapshotUniqueJsonDetails(details: unknown): JSONValue[] {\n  const snapshot: JSONValue[] = [];\n  appendUniqueJsonDetails(snapshot, details);\n  return snapshot;\n}\n\nfunction appendReasoningDetailsValue(\n  target: JSONValue[],\n  value: unknown\n): void {\n  if (value === null || value === undefined) {\n    return;\n  }\n  appendUniqueJsonDetails(target, Array.isArray(value) ? value : [value]);\n}\n\nexport function snapshotMetadataBody(value: unknown): JSONObject | undefined {\n  const snapshot = snapshotJsonValue(\n    value,\n    MAX_METADATA_BODY_CONTAINERS,\n    MAX_METADATA_BODY_CHARACTERS\n  );\n  return snapshot.valid && isJSONObject(snapshot.value)\n    ? snapshot.value\n    : undefined;\n}\n\nexport function collectChoiceReasoningDetails(body: unknown): JSONValue[] {\n  const stableBody = snapshotMetadataBody(body);\n  if (stableBody === undefined) {\n    return [];\n  }\n\n  const choices = stableBody.choices;\n  if (!Array.isArray(choices)) {\n    return [];\n  }\n\n  const details: JSONValue[] = [];\n  const choiceLength = choices.length;\n  if (!Number.isSafeInteger(choiceLength) || choiceLength < 0) {\n    return details;\n  }\n  const length = Math.min(choiceLength, MAX_REASONING_CHOICES);\n  for (let index = 0; index < length; index += 1) {\n    try {\n      if (!Object.hasOwn(choices, index)) {\n        continue;\n      }\n      const choice = choices[index];\n      if (!isJSONObject(choice)) {\n        continue;\n      }\n      const message = choice.message;\n      if (isJSONObject(message)) {\n        appendReasoningDetailsValue(details, message.reasoning_details);\n      }\n      const delta = choice.delta;\n      if (isJSONObject(delta)) {\n        appendReasoningDetailsValue(details, delta.reasoning_details);\n      }\n    } catch {\n      // Ignore one hostile choice while retaining other bounded choices.\n    }\n  }\n  return details;\n}\n","import {\n  isJSONObject,\n  isJSONValue,\n  type JSONObject,\n  type JSONValue,\n  type SharedV4ProviderMetadata,\n} from \"@ai-sdk/provider\";\nimport { boundedEnumerableOwnKeys } from \"../../core/http-headers\";\nimport { snapshotJsonValue } from \"../../core/json-value\";\n\nimport { snapshotMetadataBody } from \"./metadata-details\";\n\nconst OPENGATEWAY_METADATA_KEY = \"opengateway\";\nconst MAX_METADATA_PROVIDERS = 128;\nconst MAX_METADATA_PROVIDER_NAME_LENGTH = 256;\n\nexport function extractRouting(body: unknown): JSONValue | undefined {\n  const stableBody = snapshotMetadataBody(body);\n  if (stableBody === undefined) {\n    return;\n  }\n\n  const extra = stableBody.extra;\n  if (isJSONObject(extra) && isJSONValue(extra.routing)) {\n    return extra.routing;\n  }\n\n  return isJSONValue(stableBody.routing) ? stableBody.routing : undefined;\n}\n\nexport function buildOpenGatewayMetadata(\n  routing: JSONValue | undefined\n): SharedV4ProviderMetadata | undefined {\n  const metadata: JSONObject = {};\n  if (routing !== undefined) {\n    metadata.routing = routing;\n  }\n  return Object.keys(metadata).length > 0\n    ? { [OPENGATEWAY_METADATA_KEY]: metadata }\n    : undefined;\n}\n\nexport function extractOpenGatewayMetadata(\n  body: unknown\n): SharedV4ProviderMetadata | undefined {\n  return buildOpenGatewayMetadata(extractRouting(body));\n}\n\nexport function mergeProviderMetadata(\n  first?: SharedV4ProviderMetadata,\n  second?: SharedV4ProviderMetadata\n): SharedV4ProviderMetadata | undefined {\n  const left = sanitizeProviderMetadata(first);\n  const right = sanitizeProviderMetadata(second);\n  if (left === undefined) {\n    return right;\n  }\n  if (right === undefined) {\n    return left;\n  }\n\n  const merged: SharedV4ProviderMetadata = {};\n  for (const providerName of boundedEnumerableOwnKeys(\n    left,\n    MAX_METADATA_PROVIDERS\n  ) ?? []) {\n    defineMetadata(merged, providerName, left[providerName]);\n  }\n  for (const providerName of boundedEnumerableOwnKeys(\n    right,\n    MAX_METADATA_PROVIDERS\n  ) ?? []) {\n    defineMetadata(\n      merged,\n      providerName,\n      mergeMetadataObjects(\n        Object.hasOwn(merged, providerName) ? merged[providerName] : undefined,\n        right[providerName]\n      )\n    );\n  }\n  return sanitizeProviderMetadata(merged);\n}\n\nfunction defineMetadata(\n  target: SharedV4ProviderMetadata,\n  providerName: string,\n  metadata: JSONObject\n): void {\n  Object.defineProperty(target, providerName, {\n    configurable: true,\n    enumerable: true,\n    value: metadata,\n    writable: true,\n  });\n}\n\nfunction mergeMetadataObjects(\n  first: JSONObject | undefined,\n  second: JSONObject\n): JSONObject {\n  const merged: JSONObject = {};\n  for (const source of [first, second]) {\n    if (source === undefined) {\n      continue;\n    }\n    for (const key of boundedEnumerableOwnKeys(source, 1024) ?? []) {\n      Object.defineProperty(merged, key, {\n        configurable: true,\n        enumerable: true,\n        value: source[key],\n        writable: true,\n      });\n    }\n  }\n  return merged;\n}\n\nfunction sanitizeProviderMetadata(\n  value: unknown\n): SharedV4ProviderMetadata | undefined {\n  if (value === undefined) {\n    return;\n  }\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    return;\n  }\n  const keys = boundedEnumerableOwnKeys(value, MAX_METADATA_PROVIDERS);\n  if (\n    keys === undefined ||\n    keys.some(\n      (key) =>\n        key.length === 0 || key.length > MAX_METADATA_PROVIDER_NAME_LENGTH\n    )\n  ) {\n    return;\n  }\n  const snapshot = snapshotJsonValue(value);\n  if (\n    !snapshot.valid ||\n    typeof snapshot.value !== \"object\" ||\n    snapshot.value === null ||\n    Array.isArray(snapshot.value)\n  ) {\n    return;\n  }\n  const metadata = snapshot.value as Record<string, unknown>;\n  for (const key of keys) {\n    const item = metadata[key];\n    if (typeof item !== \"object\" || item === null || Array.isArray(item)) {\n      return;\n    }\n  }\n  return metadata as SharedV4ProviderMetadata;\n}\n","import type { MetadataExtractor } from \"@ai-sdk/openai-compatible\";\nimport type { JSONValue, SharedV4ProviderMetadata } from \"@ai-sdk/provider\";\nimport { snapshotJsonValue } from \"../../core/json-value\";\nimport {\n  captureGenuinePromise,\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"../../core/runtime-types\";\nimport { clearTimerSafely, scheduleTimer } from \"../../core/timeout\";\nimport {\n  captureCallbackJsonMutationTargets,\n  consumeCallbackJsonMutationPromises,\n  consumeCallbackMutationsNowAndAfterPromise,\n} from \"./callback-json-mutations\";\n\nimport {\n  buildOpenGatewayMetadata,\n  extractOpenGatewayMetadata,\n  extractRouting,\n  mergeProviderMetadata,\n} from \"./metadata-merge\";\n\nconst OPTIONAL_METADATA_TIMEOUT_MS = 1000;\n\nasync function settleOptionalMetadata(\n  promise: Promise<SharedV4ProviderMetadata | undefined>\n): Promise<SharedV4ProviderMetadata | undefined> {\n  return await new Promise((resolve) => {\n    let settled = false;\n    let timer: ReturnType<typeof setTimeout> | undefined;\n    const finish = (value: SharedV4ProviderMetadata | undefined) => {\n      if (settled) {\n        return;\n      }\n      settled = true;\n      clearTimerSafely(timer);\n      resolve(value);\n    };\n    try {\n      timer = scheduleTimer(\n        () => finish(undefined),\n        OPTIONAL_METADATA_TIMEOUT_MS\n      );\n    } catch {\n      consumeGenuinePromise(promise);\n      finish(undefined);\n      return;\n    }\n    promise.then(finish, () => finish(undefined));\n  });\n}\n\nexport function createOpenGatewayMetadataExtractor(\n  userExtractor?: MetadataExtractor\n): MetadataExtractor {\n  const capturedUserExtractor = optionalMethodSource(userExtractor, [\n    \"createStreamExtractor\",\n    \"extractMetadata\",\n  ]) as MetadataExtractor | undefined;\n  const extractMetadata = safeMethod(capturedUserExtractor, \"extractMetadata\");\n  const createStreamExtractor = safeMethod(\n    capturedUserExtractor,\n    \"createStreamExtractor\"\n  );\n  return {\n    async extractMetadata({ parsedBody }) {\n      const opengatewayMetadata = extractOpenGatewayMetadata(parsedBody);\n      let userMetadata: SharedV4ProviderMetadata | undefined;\n      if (\n        extractMetadata !== undefined &&\n        capturedUserExtractor !== undefined\n      ) {\n        try {\n          const capturedBody = snapshotOptionalMetadataInput(parsedBody);\n          if (capturedBody === undefined) {\n            return opengatewayMetadata;\n          }\n          const mutationTargets =\n            captureCallbackJsonMutationTargets(capturedBody);\n          try {\n            const value = Reflect.apply(\n              extractMetadata,\n              capturedUserExtractor,\n              [{ parsedBody: capturedBody }]\n            );\n            const promise = captureGenuinePromise<\n              SharedV4ProviderMetadata | undefined\n            >(value);\n            userMetadata =\n              promise === undefined\n                ? (value as SharedV4ProviderMetadata | undefined)\n                : await settleOptionalMetadata(promise);\n          } finally {\n            consumeCallbackJsonMutationPromises(mutationTargets);\n          }\n        } catch {\n          // Optional metadata must not turn a successful provider response into\n          // a routing failure.\n        }\n      }\n      return mergeProviderMetadata(opengatewayMetadata, userMetadata);\n    },\n    createStreamExtractor() {\n      let userStreamExtractor:\n        | ReturnType<MetadataExtractor[\"createStreamExtractor\"]>\n        | undefined;\n      if (\n        createStreamExtractor !== undefined &&\n        capturedUserExtractor !== undefined\n      ) {\n        try {\n          userStreamExtractor = Reflect.apply(\n            createStreamExtractor,\n            capturedUserExtractor,\n            []\n          );\n        } catch {\n          // Continue with OpenGateway's built-in stream metadata only.\n        }\n      }\n      userStreamExtractor = optionalMethodSource(userStreamExtractor, [\n        \"buildMetadata\",\n        \"processChunk\",\n      ]) as typeof userStreamExtractor;\n      const processChunk = safeMethod(userStreamExtractor, \"processChunk\");\n      const buildMetadata = safeMethod(userStreamExtractor, \"buildMetadata\");\n      let routing: JSONValue | undefined;\n\n      return {\n        processChunk(parsedChunk) {\n          if (processChunk !== undefined && userStreamExtractor !== undefined) {\n            try {\n              const capturedChunk = snapshotOptionalMetadataInput(parsedChunk);\n              if (capturedChunk !== undefined) {\n                const mutationTargets =\n                  captureCallbackJsonMutationTargets(capturedChunk);\n                const value = Reflect.apply(processChunk, userStreamExtractor, [\n                  capturedChunk,\n                ]);\n                consumeCallbackMutationsNowAndAfterPromise(\n                  value,\n                  mutationTargets\n                );\n              }\n            } catch {\n              // Optional user stream metadata is isolated per chunk.\n            }\n          }\n          const chunkRouting = extractRouting(parsedChunk);\n          if (chunkRouting !== undefined) {\n            routing = chunkRouting;\n          }\n        },\n        buildMetadata() {\n          const opengatewayMetadata = buildOpenGatewayMetadata(routing);\n          let userMetadata: SharedV4ProviderMetadata | undefined;\n          if (\n            buildMetadata !== undefined &&\n            userStreamExtractor !== undefined\n          ) {\n            try {\n              const value = Reflect.apply(\n                buildMetadata,\n                userStreamExtractor,\n                []\n              );\n              if (!consumeGenuinePromise(value)) {\n                userMetadata = value as SharedV4ProviderMetadata | undefined;\n              }\n            } catch {\n              // Preserve built-in metadata when an optional hook fails.\n            }\n          }\n          return mergeProviderMetadata(opengatewayMetadata, userMetadata);\n        },\n      };\n    },\n  };\n}\n\nfunction snapshotOptionalMetadataInput(value: unknown): unknown | undefined {\n  const snapshot = snapshotJsonValue(value, 10_000, 4_194_304);\n  return snapshot.valid ? snapshot.value : undefined;\n}\n\nfunction safeMethod<T extends object, K extends keyof T>(\n  value: T | undefined,\n  key: K\n): CallableFunction | undefined {\n  if (value === undefined) {\n    return;\n  }\n  try {\n    const method = Reflect.get(value, key);\n    if (consumeGenuinePromise(method)) {\n      return;\n    }\n    return typeof method === \"function\" ? method : undefined;\n  } catch {\n    return;\n  }\n}\n\nfunction optionalMethodSource(\n  value: unknown,\n  keys: readonly string[]\n): object | undefined {\n  if (value === undefined || consumeGenuinePromise(value)) {\n    return;\n  }\n  if (\n    (typeof value !== \"object\" || value === null) &&\n    typeof value !== \"function\"\n  ) {\n    return;\n  }\n  consumeOwnDataPromiseFields(value, keys);\n  return value;\n}\n","import type { LanguageModelMiddleware } from \"ai\";\nimport { boundedEnumerableOwnKeys } from \"./http-headers\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"./runtime-types\";\n\nconst MAX_REASONING_BODY_FIELDS = 10_000;\n\nexport function snapshotReasoningRequestBody(\n  value: unknown,\n  omittedKeys: readonly string[] = []\n): Record<string, unknown> {\n  if (consumeGenuinePromise(value)) {\n    throw new TypeError(\"reasoning request body must be synchronous\");\n  }\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new TypeError(\"reasoning request body must be an object\");\n  }\n  const keys = boundedEnumerableOwnKeys(value, MAX_REASONING_BODY_FIELDS);\n  if (keys === undefined) {\n    throw new TypeError(\n      `reasoning request body must contain at most ${MAX_REASONING_BODY_FIELDS} fields`\n    );\n  }\n  consumeOwnDataPromiseFields(value, keys);\n  const entries: Array<readonly [string, unknown]> = [];\n  let asyncField = false;\n  for (const key of keys) {\n    const item = Reflect.get(value, key);\n    if (consumeGenuinePromise(item)) {\n      asyncField = true;\n    }\n    entries.push([key, item]);\n  }\n  if (asyncField) {\n    throw new TypeError(\"reasoning request body fields must be synchronous\");\n  }\n  const omitted = new Set(omittedKeys);\n  const snapshot: Record<string, unknown> = {};\n  for (const [key, item] of entries) {\n    if (omitted.has(key)) {\n      continue;\n    }\n    Object.defineProperty(snapshot, key, {\n      configurable: true,\n      enumerable: true,\n      value: item,\n      writable: true,\n    });\n  }\n  return snapshot;\n}\n\n/**\n * Provider-agnostic scaffolding for a `transformRequestBody` hook that turns the\n * OpenAI-style `reasoning_effort` field into a provider's native reasoning shape.\n *\n * Each provider supplies an `applyReasoning` that writes its own dialect into the\n * body (see `src/provider/<name>/reasoning.ts`); this helper owns everything that\n * is the same across providers.\n *\n * The returned hook runs AFTER `getArgs` has assembled the OpenAI-style body, so\n * `body.reasoning_effort` is present when the user passed a top-level `reasoning`\n * option (low|medium|high|minimal|xhigh) or\n * `providerOptions.<provider>.reasoningEffort`.\n *\n * It strips the foreign `reasoning_effort` and classifies it:\n *  - `'none'` / `false` -> reasoning off (`enabled = false`)\n *  - anything else       -> reasoning on (`enabled = true`)\n * then hands `(body, enabled)` to `applyReasoning` to write the native field.\n *\n * If no reasoning was requested (`reasoning_effort` absent), the body is returned\n * unchanged (a fresh clone — the input is never mutated).\n *\n * The AI SDK collapses a top-level `reasoning: 'none'` to an absent\n * `reasoning_effort` before this hook runs, so `'none'` would never reach here on\n * its own. {@link reasoningMiddleware} promotes the call-level `reasoning` option\n * (which still carries `'none'`) back into\n * `providerOptions.<provider>.reasoningEffort`, so disabling works through the\n * plain `reasoning: 'none'` option.\n *\n * @param applyReasoning writes the provider's native reasoning field into the\n *   already-cloned `body`. Mutating `body` is safe — it is never the caller's\n *   object. It receives the classified `enabled` flag plus the original\n *   `effort` value (the raw `reasoning_effort`, e.g. a level string like\n *   `'high'` or a boolean): on/off dialects can ignore it, while a provider\n *   that maps levels natively can forward the granular level.\n */\nexport function createReasoningTransform(\n  applyReasoning: (\n    body: Record<string, unknown>,\n    enabled: boolean,\n    effort: unknown\n  ) => void\n): (args: Record<string, unknown>) => Record<string, unknown> {\n  if (\n    consumeGenuinePromise(applyReasoning) ||\n    typeof applyReasoning !== \"function\"\n  ) {\n    throw new TypeError(\"applyReasoning must be a synchronous function\");\n  }\n  return (args: Record<string, unknown>): Record<string, unknown> => {\n    const body = snapshotReasoningRequestBody(args);\n    const effort = body.reasoning_effort;\n\n    // No reasoning requested -> return an untouched clone (keeps the key if set).\n    if (effort == null) {\n      return body;\n    }\n\n    const bodyWithoutEffort = snapshotReasoningRequestBody(body, [\n      \"reasoning_effort\",\n    ]);\n    const result = applyReasoning(\n      bodyWithoutEffort,\n      !(effort === \"none\" || effort === false),\n      effort\n    );\n    if (consumeGenuinePromise(result)) {\n      throw new TypeError(\"applyReasoning must return synchronously\");\n    }\n    return bodyWithoutEffort;\n  };\n}\n\n/**\n * Middleware that lets the plain `reasoning` option control reasoning end to\n * end — including disabling it.\n *\n * `getArgs` in `@ai-sdk/openai-compatible` turns a call-level `reasoning` into a\n * body `reasoning_effort` for every level EXCEPT `'none'`, which it silently\n * drops. By the time a {@link createReasoningTransform} hook sees the body, that\n * `'none'` intent is gone.\n *\n * This `transformParams` hook runs earlier, on the call options, where\n * `reasoning` still holds its original value. It copies that value into\n * `providerOptions.<name>.reasoningEffort`, which `getArgs` always forwards to\n * the body as `reasoning_effort` (including `'none'`). The result then reaches\n * the provider's transform and is rewritten into its native field.\n *\n * Precedence is preserved: an explicit `providerOptions.<name>.reasoningEffort`\n * is left untouched, and `'provider-default'` / absent reasoning is a no-op so\n * the provider's own default stands.\n *\n * @param name the provider's `providerOptions` key (e.g. `'friendli'`).\n */\nexport function reasoningMiddleware(name: string): LanguageModelMiddleware {\n  if (\n    consumeGenuinePromise(name) ||\n    typeof name !== \"string\" ||\n    name.length === 0 ||\n    name.length > 256\n  ) {\n    throw new TypeError(\n      \"reasoning provider name must be synchronous and bounded\"\n    );\n  }\n  return {\n    transformParams: (options) => {\n      const hookOptions = snapshotReasoningRequestBody(options);\n      const params = hookOptions.params as typeof options.params;\n      if (typeof params !== \"object\" || params === null) {\n        throw new TypeError(\"reasoning middleware params must be an object\");\n      }\n      const capturedParams = snapshotReasoningRequestBody(params);\n      const reasoning = capturedParams.reasoning;\n      // Leave the provider default in place when nothing actionable was asked.\n      if (reasoning == null || reasoning === \"provider-default\") {\n        return Promise.resolve(params);\n      }\n\n      const providerOptions =\n        capturedParams.providerOptions === undefined\n          ? {}\n          : snapshotReasoningRequestBody(capturedParams.providerOptions);\n      const providerSettings =\n        providerOptions[name] === undefined\n          ? {}\n          : snapshotReasoningRequestBody(providerOptions[name]);\n      // An explicit reasoningEffort wins; don't clobber it.\n      if (providerSettings.reasoningEffort != null) {\n        return Promise.resolve(params);\n      }\n\n      return Promise.resolve({\n        ...capturedParams,\n        providerOptions: {\n          ...providerOptions,\n          [name]: { ...providerSettings, reasoningEffort: reasoning },\n        },\n      } as typeof params);\n    },\n  };\n}\n","import type { LanguageModelV4CallOptions } from \"@ai-sdk/provider\";\nimport { snapshotJsonValue } from \"./json-value\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"./runtime-types\";\n\nexport const MAX_PROMPT_MESSAGES = 10_000;\nexport const MAX_MESSAGE_PARTS = 10_000;\nexport const MAX_TOOLS = 1024;\nexport const MAX_STOP_SEQUENCES = 1024;\nexport const MAX_STOP_SEQUENCE_LENGTH = 65_536;\nexport const MAX_STOP_SEQUENCE_CHARS = 1_048_576;\nexport const MAX_REQUEST_HEADERS = 1024;\nexport const MAX_REQUEST_HEADER_CHARS = 1_048_576;\nexport const MAX_CALL_JSON_CONTAINERS = 50_000;\nexport const MAX_CALL_JSON_CHARACTERS = 4_194_304;\nexport const MAX_CALL_METADATA_CHARACTERS = 4_194_304;\nexport const MAX_METADATA_FIELD_LENGTH = 65_536;\nexport const CALL_OPTION_FIELD_KEYS = [\n  \"frequencyPenalty\",\n  \"headers\",\n  \"includeRawChunks\",\n  \"maxOutputTokens\",\n  \"presencePenalty\",\n  \"prompt\",\n  \"providerOptions\",\n  \"reasoning\",\n  \"responseFormat\",\n  \"seed\",\n  \"stopSequences\",\n  \"temperature\",\n  \"toolChoice\",\n  \"tools\",\n  \"topK\",\n  \"topP\",\n] as const;\nexport const REASONING_VALUES = new Set([\n  \"provider-default\",\n  \"none\",\n  \"minimal\",\n  \"low\",\n  \"medium\",\n  \"high\",\n  \"xhigh\",\n]);\n\nexport function snapshotDenseBounded<T>(\n  value: unknown,\n  maximum: number,\n  name: string\n): T[] {\n  if (consumeGenuinePromise(value)) {\n    throw new Error(`${name} must be synchronous`);\n  }\n  if (!Array.isArray(value)) {\n    throw new Error(\n      `${name} must be a dense array with at most ${maximum} items`\n    );\n  }\n  const length = Reflect.get(value, \"length\");\n  if (!Number.isSafeInteger(length) || length < 0 || length > maximum) {\n    throw new Error(\n      `${name} must be a dense array with at most ${maximum} items`\n    );\n  }\n  consumeOwnDataPromiseFields(\n    value,\n    Array.from({ length }, (_, index) => index)\n  );\n  const snapshot = new Array<T>(length);\n  let asyncItem = false;\n  for (let index = 0; index < length; index += 1) {\n    if (!Object.hasOwn(value, index)) {\n      throw new Error(\n        `${name} must be a dense array with at most ${maximum} items`\n      );\n    }\n    const item = Reflect.get(value, index);\n    if (consumeGenuinePromise(item)) {\n      asyncItem = true;\n    } else {\n      snapshot[index] = item as T;\n    }\n  }\n  if (asyncItem) {\n    throw new Error(`${name} entries must be synchronous`);\n  }\n  return snapshot;\n}\n\nexport function consumeBoundedArrayPromiseItems(\n  value: unknown,\n  maximum: number\n): void {\n  try {\n    if (!Array.isArray(value)) {\n      return;\n    }\n    const descriptor = Object.getOwnPropertyDescriptor(value, \"length\");\n    const length =\n      descriptor !== undefined && \"value\" in descriptor\n        ? descriptor.value\n        : undefined;\n    if (\n      typeof length !== \"number\" ||\n      !Number.isSafeInteger(length) ||\n      length < 0 ||\n      length > maximum\n    ) {\n      return;\n    }\n    consumeOwnDataPromiseFields(\n      value,\n      Array.from({ length }, (_, index) => index)\n    );\n  } catch {\n    // Malformed Proxy arrays cannot prevent the main bounded validation.\n  }\n}\n\nexport interface CallJsonBudget {\n  remaining: number;\n  remainingCharacters: number;\n}\n\nexport function cloneRequiredJson<T>(\n  value: T,\n  name: string,\n  budget?: CallJsonBudget\n): T {\n  if (value === undefined) {\n    return value;\n  }\n  const snapshot = snapshotJsonValue(\n    value,\n    budget?.remaining,\n    budget?.remainingCharacters\n  );\n  if (!snapshot.valid) {\n    throw new Error(`${name} must be valid bounded JSON`);\n  }\n  if (budget !== undefined) {\n    budget.remaining -= snapshot.containers ?? 0;\n    budget.remainingCharacters -= snapshot.characters ?? 0;\n  }\n  return snapshot.value as T;\n}\n\nexport function clonePresentJson<T>(\n  value: T,\n  name: string,\n  budget: CallJsonBudget\n): T {\n  if (value === undefined) {\n    throw new Error(`${name} is required`);\n  }\n  return cloneRequiredJson(value, name, budget);\n}\n\nexport function validateOptionalFinite(value: unknown, name: string): void {\n  if (\n    value !== undefined &&\n    (typeof value !== \"number\" || !Number.isFinite(value))\n  ) {\n    throw new Error(`${name} must be a finite number`);\n  }\n}\n\nexport function validateScalarOptions(\n  options: LanguageModelV4CallOptions\n): void {\n  for (const name of [\n    \"temperature\",\n    \"topP\",\n    \"presencePenalty\",\n    \"frequencyPenalty\",\n  ] as const) {\n    validateOptionalFinite(options[name], name);\n  }\n  for (const name of [\"maxOutputTokens\", \"topK\", \"seed\"] as const) {\n    const value = options[name];\n    if (\n      value !== undefined &&\n      (typeof value !== \"number\" || !Number.isSafeInteger(value))\n    ) {\n      throw new Error(`${name} must be a safe integer`);\n    }\n  }\n  if (options.maxOutputTokens !== undefined && options.maxOutputTokens <= 0) {\n    throw new Error(\"maxOutputTokens must be positive\");\n  }\n  if (\n    options.includeRawChunks !== undefined &&\n    typeof options.includeRawChunks !== \"boolean\"\n  ) {\n    throw new Error(\"includeRawChunks must be a boolean\");\n  }\n  if (\n    options.reasoning !== undefined &&\n    !REASONING_VALUES.has(options.reasoning)\n  ) {\n    throw new Error(\"reasoning has an unknown value\");\n  }\n}\n","import type { LanguageModelV4Prompt } from \"@ai-sdk/provider\";\nimport {\n  cloneFileData,\n  cloneToolOutput,\n  synchronousCallField,\n} from \"./call-options-output\";\nimport {\n  type CallJsonBudget,\n  clonePresentJson,\n  cloneRequiredJson,\n  MAX_MESSAGE_PARTS,\n  MAX_PROMPT_MESSAGES,\n  snapshotDenseBounded,\n} from \"./call-options-primitives\";\nimport {\n  consumeOwnDataPromiseFields,\n  isBoundedIdentifier,\n  isDottedIdentifier,\n} from \"./runtime-types\";\nexport type PromptRole = \"assistant\" | \"tool\" | \"user\";\n\nexport function cloneTextOrReasoningPart<T>(\n  record: Record<string, unknown>,\n  role: PromptRole,\n  type: \"reasoning\" | \"text\",\n  providerOptions: unknown\n): T {\n  if (role === \"tool\" || (type === \"reasoning\" && role !== \"assistant\")) {\n    throw new Error(\"text or reasoning part is not allowed for this role\");\n  }\n  const text = synchronousCallField(record, \"text\", \"prompt part text\");\n  if (typeof text !== \"string\") {\n    throw new Error(\"text and reasoning content must be strings\");\n  }\n  return { providerOptions, text, type } as T;\n}\n\nexport function cloneFilePart<T>(\n  record: Record<string, unknown>,\n  role: PromptRole,\n  type: \"file\" | \"reasoning-file\",\n  providerOptions: unknown\n): T {\n  if (role === \"tool\" || (type === \"reasoning-file\" && role !== \"assistant\")) {\n    throw new Error(\"file part is not allowed for this role\");\n  }\n  const mediaType = synchronousCallField(\n    record,\n    \"mediaType\",\n    \"file part mediaType\"\n  );\n  const filename = synchronousCallField(\n    record,\n    \"filename\",\n    \"file part filename\"\n  );\n  if (\n    typeof mediaType !== \"string\" ||\n    (filename !== undefined && typeof filename !== \"string\")\n  ) {\n    throw new Error(\"file mediaType and filename are malformed\");\n  }\n  const data = cloneFileData(\n    synchronousCallField(record, \"data\", \"file part data\")\n  );\n  const dataType =\n    typeof data === \"object\" && data !== null\n      ? Reflect.get(data, \"type\")\n      : undefined;\n  if (type === \"reasoning-file\" && dataType !== \"data\" && dataType !== \"url\") {\n    throw new Error(\"reasoning files require data or URL payloads\");\n  }\n  return {\n    data,\n    filename,\n    mediaType,\n    providerOptions,\n    type,\n  } as T;\n}\n\nexport function cloneCustomPart<T>(\n  record: Record<string, unknown>,\n  role: PromptRole,\n  providerOptions: unknown\n): T {\n  const kind = synchronousCallField(record, \"kind\", \"custom part kind\");\n  if (role !== \"assistant\" || !isDottedIdentifier(kind)) {\n    throw new Error(\"custom parts require an assistant message and kind\");\n  }\n  return { kind, providerOptions, type: \"custom\" } as T;\n}\n\nexport function cloneToolCallPart<T>(\n  record: Record<string, unknown>,\n  role: PromptRole,\n  providerOptions: unknown,\n  budget: CallJsonBudget\n): T {\n  if (role !== \"assistant\") {\n    throw new Error(\"tool calls require an assistant message\");\n  }\n  const toolCallId = synchronousCallField(record, \"toolCallId\", \"tool call id\");\n  const toolName = synchronousCallField(record, \"toolName\", \"tool call name\");\n  const providerExecuted = synchronousCallField(\n    record,\n    \"providerExecuted\",\n    \"tool call providerExecuted\"\n  );\n  if (\n    !(isBoundedIdentifier(toolCallId) && isBoundedIdentifier(toolName)) ||\n    (providerExecuted !== undefined && typeof providerExecuted !== \"boolean\")\n  ) {\n    throw new Error(\"tool call fields are malformed\");\n  }\n  return {\n    input: clonePresentJson(\n      synchronousCallField(record, \"input\", \"tool call input\"),\n      \"tool call input\",\n      budget\n    ),\n    providerExecuted,\n    providerOptions,\n    toolCallId,\n    toolName,\n    type: \"tool-call\",\n  } as T;\n}\n\nexport function cloneToolResultPart<T>(\n  record: Record<string, unknown>,\n  role: PromptRole,\n  providerOptions: unknown,\n  budget: CallJsonBudget\n): T {\n  if (role === \"user\") {\n    throw new Error(\"tool results require assistant or tool messages\");\n  }\n  const toolCallId = synchronousCallField(\n    record,\n    \"toolCallId\",\n    \"tool result id\"\n  );\n  const toolName = synchronousCallField(record, \"toolName\", \"tool result name\");\n  if (!(isBoundedIdentifier(toolCallId) && isBoundedIdentifier(toolName))) {\n    throw new Error(\"tool result identifiers are malformed\");\n  }\n  return {\n    output: cloneToolOutput(\n      synchronousCallField(record, \"output\", \"tool result output\"),\n      budget\n    ),\n    providerOptions,\n    toolCallId,\n    toolName,\n    type: \"tool-result\",\n  } as T;\n}\n\nexport function cloneToolApprovalPart<T>(\n  record: Record<string, unknown>,\n  role: PromptRole,\n  providerOptions: unknown\n): T {\n  const approvalId = synchronousCallField(\n    record,\n    \"approvalId\",\n    \"tool approval id\"\n  );\n  const approved = synchronousCallField(\n    record,\n    \"approved\",\n    \"tool approval state\"\n  );\n  const reason = synchronousCallField(record, \"reason\", \"tool approval reason\");\n  if (\n    role !== \"tool\" ||\n    !isBoundedIdentifier(approvalId) ||\n    typeof approved !== \"boolean\" ||\n    (reason !== undefined && typeof reason !== \"string\")\n  ) {\n    throw new Error(\"tool approval response fields are malformed\");\n  }\n  return {\n    approvalId,\n    approved,\n    providerOptions,\n    reason,\n    type: \"tool-approval-response\",\n  } as T;\n}\n\nexport function clonePromptPart<T>(\n  part: T,\n  role: PromptRole,\n  budget: CallJsonBudget\n): T {\n  if (typeof part !== \"object\" || part === null) {\n    throw new Error(\"prompt content parts must be objects\");\n  }\n  const record = part as Record<string, unknown>;\n  consumeOwnDataPromiseFields(record, [\n    \"approvalId\",\n    \"approved\",\n    \"data\",\n    \"filename\",\n    \"input\",\n    \"kind\",\n    \"mediaType\",\n    \"output\",\n    \"providerExecuted\",\n    \"providerOptions\",\n    \"reason\",\n    \"text\",\n    \"toolCallId\",\n    \"toolName\",\n    \"type\",\n  ]);\n  const type = synchronousCallField(record, \"type\", \"prompt part type\");\n  const providerOptions = cloneRequiredJson(\n    synchronousCallField(record, \"providerOptions\", \"part.providerOptions\"),\n    \"part.providerOptions\",\n    budget\n  );\n  if (type === \"text\" || type === \"reasoning\") {\n    return cloneTextOrReasoningPart(record, role, type, providerOptions);\n  }\n  if (type === \"file\" || type === \"reasoning-file\") {\n    return cloneFilePart(record, role, type, providerOptions);\n  }\n  if (type === \"custom\") {\n    return cloneCustomPart(record, role, providerOptions);\n  }\n  if (type === \"tool-call\") {\n    return cloneToolCallPart(record, role, providerOptions, budget);\n  }\n  if (type === \"tool-result\") {\n    return cloneToolResultPart(record, role, providerOptions, budget);\n  }\n  if (type === \"tool-approval-response\") {\n    return cloneToolApprovalPart(record, role, providerOptions);\n  }\n  throw new Error(\"prompt content part has an unknown type\");\n}\n\nexport function clonePromptMessage(\n  message: LanguageModelV4Prompt[number],\n  budget: CallJsonBudget\n): LanguageModelV4Prompt[number] {\n  if (typeof message !== \"object\" || message === null) {\n    throw new Error(\"prompt messages must be objects\");\n  }\n  consumeOwnDataPromiseFields(message, [\"content\", \"providerOptions\", \"role\"]);\n  const role = synchronousCallField(message, \"role\", \"message role\");\n  const rawContent = synchronousCallField(\n    message,\n    \"content\",\n    \"message content\"\n  );\n  const providerOptions = cloneRequiredJson(\n    synchronousCallField(message, \"providerOptions\", \"message.providerOptions\"),\n    \"message.providerOptions\",\n    budget\n  );\n  if (role === \"system\") {\n    if (typeof rawContent !== \"string\") {\n      throw new Error(\"system message content must be a string\");\n    }\n    return {\n      content: rawContent,\n      providerOptions,\n      role,\n    } as LanguageModelV4Prompt[number];\n  }\n  if (role !== \"user\" && role !== \"assistant\" && role !== \"tool\") {\n    throw new Error(\"prompt message has an unknown role\");\n  }\n  const content = snapshotDenseBounded<unknown>(\n    rawContent,\n    MAX_MESSAGE_PARTS,\n    \"message content\"\n  );\n  return {\n    content: content.map((part) => clonePromptPart(part, role, budget)),\n    providerOptions,\n    role,\n  } as LanguageModelV4Prompt[number];\n}\n\nexport function clonePrompt(\n  prompt: LanguageModelV4Prompt,\n  budget: CallJsonBudget\n): LanguageModelV4Prompt {\n  return snapshotDenseBounded<LanguageModelV4Prompt[number]>(\n    prompt,\n    MAX_PROMPT_MESSAGES,\n    \"prompt\"\n  ).map((message) => clonePromptMessage(message, budget));\n}\n","import type { LanguageModelV4CallOptions } from \"@ai-sdk/provider\";\nimport { captureAbortSignalOperations } from \"./abort-signal\";\nimport {\n  type CallJsonBudget,\n  clonePresentJson,\n  cloneRequiredJson,\n  MAX_MESSAGE_PARTS,\n  snapshotDenseBounded,\n} from \"./call-options-primitives\";\nimport { clonePromptPart } from \"./call-options-prompt\";\nimport { boundedEnumerableOwnKeys } from \"./http-headers\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n  isBoundedIdentifier,\n  isUint8ArrayValue,\n  isUrlValue,\n} from \"./runtime-types\";\nexport function cloneResponseFormat(\n  value: LanguageModelV4CallOptions[\"responseFormat\"],\n  budget: CallJsonBudget\n): typeof value {\n  if (value === undefined) {\n    return;\n  }\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new Error(\"responseFormat must be an object\");\n  }\n  consumeOwnDataPromiseFields(value, [\"description\", \"name\", \"schema\", \"type\"]);\n  const type = Reflect.get(value, \"type\");\n  if (consumeGenuinePromise(type)) {\n    throw new Error(\"responseFormat must be synchronous\");\n  }\n  if (type === \"text\") {\n    return { type: \"text\" };\n  }\n  if (type !== \"json\") {\n    throw new Error(\"responseFormat has an unknown type\");\n  }\n  const name = Reflect.get(value, \"name\");\n  const description = Reflect.get(value, \"description\");\n  const schema = Reflect.get(value, \"schema\");\n  let asyncField = false;\n  for (const field of [name, description, schema]) {\n    if (consumeGenuinePromise(field)) {\n      asyncField = true;\n    }\n  }\n  if (asyncField) {\n    throw new Error(\"responseFormat fields must be synchronous\");\n  }\n  if (\n    (name !== undefined && typeof name !== \"string\") ||\n    (description !== undefined && typeof description !== \"string\")\n  ) {\n    throw new Error(\"responseFormat name and description must be strings\");\n  }\n  return {\n    description,\n    name,\n    schema: cloneRequiredJson(schema, \"responseFormat.schema\", budget),\n    type,\n  };\n}\n\nexport function cloneToolChoice(\n  value: LanguageModelV4CallOptions[\"toolChoice\"]\n): typeof value {\n  if (value === undefined) {\n    return;\n  }\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new Error(\"toolChoice must be an object\");\n  }\n  consumeOwnDataPromiseFields(value, [\"toolName\", \"type\"]);\n  const type = Reflect.get(value, \"type\");\n  if (consumeGenuinePromise(type)) {\n    throw new Error(\"toolChoice must be synchronous\");\n  }\n  if (type === \"auto\" || type === \"none\" || type === \"required\") {\n    return { type };\n  }\n  const toolName = Reflect.get(value, \"toolName\");\n  if (consumeGenuinePromise(toolName)) {\n    throw new Error(\"toolChoice fields must be synchronous\");\n  }\n  if (type !== \"tool\" || !isBoundedIdentifier(toolName)) {\n    throw new Error(\"toolChoice has an invalid shape\");\n  }\n  return { toolName, type };\n}\n\nexport function validateAbortSignal(\n  value: unknown\n): asserts value is AbortSignal | undefined {\n  if (value === undefined) {\n    return;\n  }\n  captureAbortSignalOperations(value);\n  if (typeof value !== \"object\" || value === null) {\n    throw new Error(\"abortSignal must implement AbortSignal\");\n  }\n  const aborted = Reflect.get(value, \"aborted\");\n  if (consumeGenuinePromise(aborted) || typeof aborted !== \"boolean\") {\n    throw new Error(\"abortSignal must implement AbortSignal\");\n  }\n}\n\nexport function synchronousCallField(\n  value: object,\n  key: string | number,\n  name = \"call option field\"\n): unknown {\n  const field = Reflect.get(value, key);\n  if (consumeGenuinePromise(field)) {\n    throw new Error(`${name} must be synchronous`);\n  }\n  return field;\n}\n\nexport function cloneProviderReference(value: unknown): Record<string, string> {\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new Error(\"file reference must be an object\");\n  }\n  const keys = boundedEnumerableOwnKeys(value, 128);\n  if (keys === undefined) {\n    throw new Error(\"file reference has too many providers\");\n  }\n  consumeOwnDataPromiseFields(value, keys);\n  const reference: Record<string, string> = {};\n  for (const key of keys) {\n    const id = synchronousCallField(value, key, \"file reference value\");\n    if (key === \"type\" || typeof id !== \"string\") {\n      throw new Error(\"file reference values must be strings\");\n    }\n    Object.defineProperty(reference, key, {\n      configurable: true,\n      enumerable: true,\n      value: id,\n      writable: true,\n    });\n  }\n  return reference;\n}\n\nexport function cloneFileData(value: unknown): unknown {\n  if (typeof value !== \"object\" || value === null) {\n    throw new Error(\"file data must be a tagged object\");\n  }\n  consumeOwnDataPromiseFields(value, [\n    \"data\",\n    \"reference\",\n    \"text\",\n    \"type\",\n    \"url\",\n  ]);\n  const type = synchronousCallField(value, \"type\", \"file data type\");\n  if (type === \"data\") {\n    const data = synchronousCallField(value, \"data\", \"file data payload\");\n    if (typeof data !== \"string\" && !isUint8ArrayValue(data)) {\n      throw new Error(\"file data payload must be bytes or a string\");\n    }\n    return { data, type };\n  }\n  if (type === \"url\") {\n    const url = synchronousCallField(value, \"url\", \"file URL payload\");\n    if (!isUrlValue(url)) {\n      throw new Error(\"file URL payload must be a URL\");\n    }\n    return { type, url };\n  }\n  if (type === \"reference\") {\n    return {\n      reference: cloneProviderReference(\n        synchronousCallField(value, \"reference\", \"file reference\")\n      ),\n      type,\n    };\n  }\n  if (type === \"text\") {\n    const text = synchronousCallField(value, \"text\", \"inline file text\");\n    if (typeof text !== \"string\") {\n      throw new Error(\"inline file text must be a string\");\n    }\n    return { text, type };\n  }\n  throw new Error(\"file data has an unknown type\");\n}\n\nexport function cloneToolOutput(\n  value: unknown,\n  budget: CallJsonBudget\n): unknown {\n  if (typeof value !== \"object\" || value === null) {\n    throw new Error(\"tool output must be an object\");\n  }\n  consumeOwnDataPromiseFields(value, [\n    \"providerOptions\",\n    \"reason\",\n    \"type\",\n    \"value\",\n  ]);\n  const type = synchronousCallField(value, \"type\", \"tool output type\");\n  const providerOptions = cloneRequiredJson(\n    synchronousCallField(\n      value,\n      \"providerOptions\",\n      \"tool output providerOptions\"\n    ),\n    \"tool output providerOptions\",\n    budget\n  );\n  if (type === \"text\" || type === \"error-text\") {\n    const text = synchronousCallField(value, \"value\", \"tool output value\");\n    if (typeof text !== \"string\") {\n      throw new Error(\"text tool output value must be a string\");\n    }\n    return { providerOptions, type, value: text };\n  }\n  if (type === \"json\" || type === \"error-json\") {\n    return {\n      providerOptions,\n      type,\n      value: clonePresentJson(\n        synchronousCallField(value, \"value\", \"tool output value\"),\n        \"tool output value\",\n        budget\n      ),\n    };\n  }\n  if (type === \"execution-denied\") {\n    const reason = synchronousCallField(value, \"reason\", \"tool output reason\");\n    if (reason !== undefined && typeof reason !== \"string\") {\n      throw new Error(\"execution denial reason must be a string\");\n    }\n    return { providerOptions, reason, type };\n  }\n  if (type === \"content\") {\n    const content = snapshotDenseBounded<unknown>(\n      synchronousCallField(value, \"value\", \"tool output content\"),\n      MAX_MESSAGE_PARTS,\n      \"tool output content\"\n    );\n    return {\n      providerOptions,\n      type,\n      value: content.map((part) => cloneToolOutputContentPart(part, budget)),\n    };\n  }\n  throw new Error(\"tool output has an unknown type\");\n}\n\nexport function cloneToolOutputContentPart(\n  part: unknown,\n  budget: CallJsonBudget\n): unknown {\n  if (typeof part !== \"object\" || part === null) {\n    throw new Error(\"tool output content parts must be objects\");\n  }\n  consumeOwnDataPromiseFields(part, [\"providerOptions\", \"type\"]);\n  const type = synchronousCallField(part, \"type\", \"tool output content type\");\n  if (type === \"text\" || type === \"file\") {\n    return clonePromptPart(part, \"user\", budget);\n  }\n  if (type === \"custom\") {\n    return {\n      providerOptions: cloneRequiredJson(\n        synchronousCallField(\n          part,\n          \"providerOptions\",\n          \"tool output custom providerOptions\"\n        ),\n        \"tool output custom providerOptions\",\n        budget\n      ),\n      type,\n    };\n  }\n  throw new Error(\"tool output content part has an unknown type\");\n}\n","import type { LanguageModelV4CallOptions } from \"@ai-sdk/provider\";\nimport { synchronousCallField } from \"./call-options-output\";\nimport {\n  type CallJsonBudget,\n  clonePresentJson,\n  cloneRequiredJson,\n  MAX_CALL_METADATA_CHARACTERS,\n  MAX_METADATA_FIELD_LENGTH,\n  MAX_REQUEST_HEADER_CHARS,\n  MAX_REQUEST_HEADERS,\n} from \"./call-options-primitives\";\nimport {\n  boundedEnumerableOwnKeys,\n  hasInvalidHttpHeaderValueCharacter,\n  isValidHttpHeaderName,\n} from \"./http-headers\";\nimport {\n  consumeOwnDataPromiseFields,\n  isBoundedIdentifier,\n  isDottedIdentifier,\n} from \"./runtime-types\";\nexport function cloneHeaders(\n  value: LanguageModelV4CallOptions[\"headers\"]\n): typeof value {\n  if (value === undefined) {\n    return;\n  }\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new Error(\"headers must be an object\");\n  }\n  const keys = boundedEnumerableOwnKeys(value, MAX_REQUEST_HEADERS);\n  if (keys === undefined) {\n    throw new Error(\n      `headers must contain at most ${MAX_REQUEST_HEADERS} entries`\n    );\n  }\n  consumeOwnDataPromiseFields(value, keys);\n  const headers: Record<string, string | undefined> = {};\n  let totalChars = 0;\n  for (const key of keys) {\n    if (!isValidHttpHeaderName(key)) {\n      throw new Error(\"header names and values must use valid HTTP syntax\");\n    }\n    const item = synchronousCallField(value, key, \"header value\");\n    if (\n      item !== undefined &&\n      (typeof item !== \"string\" ||\n        item.length > 65_536 ||\n        hasInvalidHttpHeaderValueCharacter(item))\n    ) {\n      throw new Error(\"header names and values must use valid HTTP syntax\");\n    }\n    totalChars += key.length + (item?.length ?? 0);\n    if (totalChars > MAX_REQUEST_HEADER_CHARS) {\n      throw new Error(\"request headers exceed the aggregate size limit\");\n    }\n    Object.defineProperty(headers, key, {\n      configurable: true,\n      enumerable: true,\n      value: item,\n      writable: true,\n    });\n  }\n  return headers;\n}\n\nexport function cloneTool(\n  tool: NonNullable<LanguageModelV4CallOptions[\"tools\"]>[number],\n  budget: CallJsonBudget\n): typeof tool {\n  consumeOwnDataPromiseFields(tool, [\n    \"args\",\n    \"description\",\n    \"id\",\n    \"inputExamples\",\n    \"inputSchema\",\n    \"name\",\n    \"providerOptions\",\n    \"strict\",\n    \"type\",\n  ]);\n  const type = synchronousCallField(tool, \"type\", \"tool type\");\n  const name = synchronousCallField(tool, \"name\", \"tool name\");\n  if (type === \"function\") {\n    const description = synchronousCallField(\n      tool,\n      \"description\",\n      \"tool description\"\n    );\n    const strict = synchronousCallField(tool, \"strict\", \"tool strict\");\n    if (\n      !isBoundedIdentifier(name) ||\n      (description !== undefined && typeof description !== \"string\") ||\n      (strict !== undefined && typeof strict !== \"boolean\")\n    ) {\n      throw new Error(\"function tool has an invalid shape\");\n    }\n    return {\n      description,\n      inputExamples: cloneRequiredJson(\n        synchronousCallField(tool, \"inputExamples\", \"tool inputExamples\"),\n        \"tool.inputExamples\",\n        budget\n      ),\n      inputSchema: clonePresentJson(\n        synchronousCallField(tool, \"inputSchema\", \"tool inputSchema\"),\n        \"tool.inputSchema\",\n        budget\n      ),\n      name,\n      providerOptions: cloneRequiredJson(\n        synchronousCallField(tool, \"providerOptions\", \"tool providerOptions\"),\n        \"tool.providerOptions\",\n        budget\n      ),\n      strict,\n      type,\n    } as typeof tool;\n  }\n  const id = synchronousCallField(tool, \"id\", \"provider tool id\");\n  const args = synchronousCallField(tool, \"args\", \"provider tool args\");\n  if (\n    type !== \"provider\" ||\n    !isDottedIdentifier(id) ||\n    !isBoundedIdentifier(name) ||\n    typeof args !== \"object\" ||\n    args === null ||\n    Array.isArray(args)\n  ) {\n    throw new Error(\"provider tool has an invalid shape\");\n  }\n  return {\n    args: cloneRequiredJson(args, \"provider tool args\", budget),\n    id,\n    name,\n    type,\n  } as typeof tool;\n}\n\nexport function validateToolConfiguration(\n  tools: LanguageModelV4CallOptions[\"tools\"],\n  toolChoice: LanguageModelV4CallOptions[\"toolChoice\"]\n): void {\n  if (tools === undefined) {\n    if (toolChoice?.type === \"tool\") {\n      throw new Error(\"toolChoice requires a matching tool definition\");\n    }\n    return;\n  }\n  const names = new Set<string>();\n  for (const tool of tools) {\n    if (names.has(tool.name)) {\n      throw new Error(\"tool names must be unique within a call\");\n    }\n    names.add(tool.name);\n  }\n  if (toolChoice?.type === \"tool\" && !names.has(toolChoice.toolName)) {\n    throw new Error(\"toolChoice requires a matching tool definition\");\n  }\n}\n\nexport function validateCallMetadataStrings(\n  options: LanguageModelV4CallOptions\n): void {\n  let remaining = MAX_CALL_METADATA_CHARACTERS;\n  const consume = (\n    value: unknown,\n    maximum = MAX_METADATA_FIELD_LENGTH,\n    allowEmpty = true\n  ) => {\n    if (value === undefined) {\n      return;\n    }\n    if (\n      typeof value !== \"string\" ||\n      (!allowEmpty && value.length === 0) ||\n      value.length > maximum\n    ) {\n      throw new Error(\"call metadata strings must be non-empty and bounded\");\n    }\n    remaining -= value.length;\n    if (remaining < 0) {\n      throw new Error(\"call metadata strings exceed the aggregate size limit\");\n    }\n  };\n  const consumeFileData = (value: unknown) => {\n    if (typeof value !== \"object\" || value === null) {\n      return;\n    }\n    const record = value as Record<string, unknown>;\n    if (record.type !== \"reference\") {\n      return;\n    }\n    const reference = record.reference;\n    if (typeof reference !== \"object\" || reference === null) {\n      return;\n    }\n    for (const [provider, id] of Object.entries(reference)) {\n      consume(provider, 256, false);\n      consume(id, MAX_METADATA_FIELD_LENGTH, false);\n    }\n  };\n  const consumeToolOutput = (value: unknown) => {\n    if (typeof value !== \"object\" || value === null) {\n      return;\n    }\n    const output = value as Record<string, unknown>;\n    if (output.type === \"execution-denied\") {\n      consume(output.reason);\n      return;\n    }\n    if (output.type !== \"content\" || !Array.isArray(output.value)) {\n      return;\n    }\n    for (const nested of output.value) {\n      if (typeof nested !== \"object\" || nested === null) {\n        continue;\n      }\n      const part = nested as Record<string, unknown>;\n      if (part.type === \"file\") {\n        consume(part.mediaType, 256, false);\n        consume(part.filename);\n        consumeFileData(part.data);\n      }\n    }\n  };\n  if (options.responseFormat?.type === \"json\") {\n    consume(options.responseFormat.name, 4096);\n    consume(options.responseFormat.description);\n  }\n  for (const tool of options.tools ?? []) {\n    consume(tool.name, 4096);\n    if (tool.type === \"function\") {\n      consume(tool.description);\n    } else {\n      consume(tool.id, 4096);\n    }\n  }\n  if (options.toolChoice?.type === \"tool\") {\n    consume(options.toolChoice.toolName, 4096);\n  }\n  for (const message of options.prompt) {\n    if (message.role === \"system\") {\n      continue;\n    }\n    for (const part of message.content) {\n      const record = part as unknown as Record<string, unknown>;\n      switch (part.type) {\n        case \"file\":\n        case \"reasoning-file\":\n          consume(record.mediaType, 256, false);\n          consume(record.filename);\n          consumeFileData(record.data);\n          break;\n        case \"custom\":\n          consume(record.kind, 4096);\n          break;\n        case \"tool-call\":\n          consume(record.toolCallId, 4096);\n          consume(record.toolName, 4096);\n          break;\n        case \"tool-result\":\n          consume(record.toolCallId, 4096);\n          consume(record.toolName, 4096);\n          consumeToolOutput(record.output);\n          break;\n        case \"tool-approval-response\":\n          consume(record.approvalId, 4096);\n          consume(record.reason);\n          break;\n        default:\n          break;\n      }\n    }\n  }\n}\n","import type { LanguageModelV4CallOptions } from \"@ai-sdk/provider\";\nimport {\n  cloneHeaders,\n  cloneTool,\n  validateCallMetadataStrings,\n  validateToolConfiguration,\n} from \"./call-options-extras\";\nimport {\n  cloneResponseFormat,\n  cloneToolChoice,\n  synchronousCallField,\n  validateAbortSignal,\n} from \"./call-options-output\";\nimport {\n  CALL_OPTION_FIELD_KEYS,\n  cloneRequiredJson,\n  consumeBoundedArrayPromiseItems,\n  MAX_CALL_JSON_CHARACTERS,\n  MAX_CALL_JSON_CONTAINERS,\n  MAX_PROMPT_MESSAGES,\n  MAX_STOP_SEQUENCE_CHARS,\n  MAX_STOP_SEQUENCE_LENGTH,\n  MAX_STOP_SEQUENCES,\n  MAX_TOOLS,\n  snapshotDenseBounded,\n  validateScalarOptions,\n} from \"./call-options-primitives\";\nimport { clonePrompt } from \"./call-options-prompt\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"./runtime-types\";\nexport class CallOptionsContractError extends Error {\n  readonly code = \"call_options_contract_error\";\n\n  constructor(cause: unknown) {\n    super(\"ai-router: call options could not be safely copied\", { cause });\n    this.name = \"CallOptionsContractError\";\n  }\n}\n\nfunction consumeCallOptionPromiseFields(\n  source: LanguageModelV4CallOptions\n): void {\n  consumeBoundedArrayPromiseItems(source.prompt, MAX_PROMPT_MESSAGES);\n  consumeBoundedArrayPromiseItems(source.stopSequences, MAX_STOP_SEQUENCES);\n  consumeBoundedArrayPromiseItems(source.tools, MAX_TOOLS);\n  if (\n    typeof source.responseFormat === \"object\" &&\n    source.responseFormat !== null\n  ) {\n    consumeOwnDataPromiseFields(source.responseFormat, [\n      \"description\",\n      \"name\",\n      \"schema\",\n      \"type\",\n    ]);\n  }\n  if (typeof source.toolChoice === \"object\" && source.toolChoice !== null) {\n    consumeOwnDataPromiseFields(source.toolChoice, [\"toolName\", \"type\"]);\n  }\n  let asyncField = false;\n  for (const value of Object.values(source)) {\n    if (consumeGenuinePromise(value)) {\n      asyncField = true;\n    }\n  }\n  if (asyncField) {\n    throw new Error(\"call options fields must be synchronous\");\n  }\n}\n\nfunction cloneCallOptionsUnsafe(\n  options: LanguageModelV4CallOptions,\n  abortSignal: AbortSignal | undefined\n): LanguageModelV4CallOptions {\n  if (consumeGenuinePromise(options)) {\n    throw new Error(\"call options must be synchronous\");\n  }\n  consumeOwnDataPromiseFields(options, CALL_OPTION_FIELD_KEYS);\n  const source: LanguageModelV4CallOptions = {\n    abortSignal,\n    frequencyPenalty: Reflect.get(options, \"frequencyPenalty\"),\n    headers: Reflect.get(options, \"headers\"),\n    includeRawChunks: Reflect.get(options, \"includeRawChunks\"),\n    maxOutputTokens: Reflect.get(options, \"maxOutputTokens\"),\n    presencePenalty: Reflect.get(options, \"presencePenalty\"),\n    prompt: Reflect.get(options, \"prompt\"),\n    providerOptions: Reflect.get(options, \"providerOptions\"),\n    reasoning: Reflect.get(options, \"reasoning\"),\n    responseFormat: Reflect.get(options, \"responseFormat\"),\n    seed: Reflect.get(options, \"seed\"),\n    stopSequences: Reflect.get(options, \"stopSequences\"),\n    temperature: Reflect.get(options, \"temperature\"),\n    toolChoice: Reflect.get(options, \"toolChoice\"),\n    tools: Reflect.get(options, \"tools\"),\n    topK: Reflect.get(options, \"topK\"),\n    topP: Reflect.get(options, \"topP\"),\n  };\n  consumeCallOptionPromiseFields(source);\n  validateAbortSignal(abortSignal);\n  validateScalarOptions(source);\n  const jsonBudget = {\n    remaining: MAX_CALL_JSON_CONTAINERS,\n    remainingCharacters: MAX_CALL_JSON_CHARACTERS,\n  };\n  const stopSequences =\n    source.stopSequences === undefined\n      ? undefined\n      : snapshotDenseBounded<unknown>(\n          source.stopSequences,\n          MAX_STOP_SEQUENCES,\n          \"stopSequences\"\n        );\n  if (stopSequences !== undefined) {\n    let totalChars = 0;\n    for (const value of stopSequences) {\n      if (\n        typeof value !== \"string\" ||\n        value.length === 0 ||\n        value.length > MAX_STOP_SEQUENCE_LENGTH\n      ) {\n        throw new Error(\"stopSequences must contain bounded non-empty strings\");\n      }\n      totalChars += value.length;\n      if (totalChars > MAX_STOP_SEQUENCE_CHARS) {\n        throw new Error(\"stopSequences exceed the aggregate size limit\");\n      }\n    }\n  }\n  const rawTools =\n    source.tools === undefined\n      ? undefined\n      : snapshotDenseBounded<unknown>(source.tools, MAX_TOOLS, \"tools\");\n  if (\n    rawTools !== undefined &&\n    !rawTools.every((tool) => typeof tool === \"object\" && tool !== null)\n  ) {\n    throw new Error(\"tools must contain objects\");\n  }\n  const tools = rawTools?.map((tool) =>\n    cloneTool(\n      tool as NonNullable<LanguageModelV4CallOptions[\"tools\"]>[number],\n      jsonBudget\n    )\n  );\n  const toolChoice = cloneToolChoice(source.toolChoice);\n  validateToolConfiguration(tools, toolChoice);\n  const cloned = {\n    ...source,\n    abortSignal,\n    headers: cloneHeaders(source.headers),\n    prompt: clonePrompt(source.prompt, jsonBudget),\n    providerOptions: cloneRequiredJson(\n      source.providerOptions,\n      \"providerOptions\",\n      jsonBudget\n    ),\n    responseFormat: cloneResponseFormat(source.responseFormat, jsonBudget),\n    stopSequences: stopSequences as string[] | undefined,\n    toolChoice,\n    tools,\n  };\n  validateCallMetadataStrings(cloned);\n  return cloned;\n}\n\n/** Isolate mutable option containers for one provider attempt. */\nexport function cloneCallOptions(\n  options: LanguageModelV4CallOptions,\n  abortSignal: AbortSignal | undefined\n): LanguageModelV4CallOptions {\n  try {\n    return cloneCallOptionsUnsafe(options, abortSignal);\n  } catch (error) {\n    throw new CallOptionsContractError(error);\n  }\n}\n\n/** Capture the caller-owned signal inside the same contract-error boundary. */\nexport function cloneInitialCallOptions(\n  options: LanguageModelV4CallOptions\n): LanguageModelV4CallOptions {\n  try {\n    if (consumeGenuinePromise(options)) {\n      throw new Error(\"call options must be synchronous\");\n    }\n    consumeOwnDataPromiseFields(options, [\n      \"abortSignal\",\n      ...CALL_OPTION_FIELD_KEYS,\n    ]);\n    return cloneCallOptionsUnsafe(\n      options,\n      synchronousCallField(options, \"abortSignal\", \"abortSignal\") as\n        | AbortSignal\n        | undefined\n    );\n  } catch (error) {\n    if (error instanceof CallOptionsContractError) {\n      throw error;\n    }\n    throw new CallOptionsContractError(error);\n  }\n}\n","import type { JSONValue } from \"@ai-sdk/provider\";\nimport { consumeGenuinePromise } from \"../../core/runtime-types\";\nimport { appendUniqueJsonDetails } from \"./metadata-details\";\n\nconst MAX_REF_LENGTH = 256;\n\nexport function snapshotReasoningDetails(\n  details: readonly JSONValue[]\n): JSONValue[] {\n  const snapshot: JSONValue[] = [];\n  appendUniqueJsonDetails(snapshot, details);\n  return snapshot;\n}\n\nexport function snapshotStoreDetails(value: unknown): JSONValue[] {\n  const asyncDetails = consumeGenuinePromise(value);\n  if (asyncDetails || !Array.isArray(value)) {\n    throw new TypeError(\n      \"reasoningDetailsStore details must be synchronous array\"\n    );\n  }\n  return snapshotReasoningDetails(value);\n}\n\nexport function isValidReasoningDetailsRef(ref: unknown): ref is string {\n  if (consumeGenuinePromise(ref)) {\n    return false;\n  }\n  return (\n    typeof ref === \"string\" && ref.length > 0 && ref.length <= MAX_REF_LENGTH\n  );\n}\n","import type { JSONValue } from \"@ai-sdk/provider\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"../../core/runtime-types\";\nimport { canonicalJsonValueKey } from \"./metadata-details\";\nimport {\n  captureStoreMethods,\n  currentTime,\n  DEFAULT_MAX_ENTRIES,\n  DEFAULT_REF_PREFIX,\n  DEFAULT_TTL_MS,\n  MAX_MEMO_ENTRIES,\n  MAX_REF_CREATION_ATTEMPTS,\n  type OpenGatewayReasoningDetailsStore,\n  type OpenGatewayReasoningDetailsStoreSettings,\n  validateSettings,\n} from \"./reasoning-roundtrip-store\";\nimport {\n  isValidReasoningDetailsRef,\n  snapshotReasoningDetails,\n  snapshotStoreDetails,\n} from \"./reasoning-roundtrip-store-values\";\n\ninterface StoredReasoningDetails {\n  details: JSONValue[];\n  expiresAt: number;\n}\n\nfunction detailsKey(details: readonly JSONValue[]): string {\n  return canonicalJsonValueKey(details as JSONValue[]);\n}\n\nfunction createRandomRef(prefix: string): string {\n  const crypto = globalThis.crypto;\n  if (typeof crypto !== \"object\" || crypto === null) {\n    throw new Error(\"OpenGateway reasoningDetailsRef requires Web Crypto\");\n  }\n  const randomUUID = Reflect.get(crypto, \"randomUUID\");\n  if (consumeGenuinePromise(randomUUID)) {\n    throw new TypeError(\"reasoningDetailsRef randomUUID must be synchronous\");\n  }\n  if (randomUUID != null) {\n    if (typeof randomUUID !== \"function\") {\n      throw new TypeError(\"reasoningDetailsRef randomUUID must be a function\");\n    }\n    const uuid = Reflect.apply(randomUUID, crypto, []);\n    if (\n      consumeGenuinePromise(uuid) ||\n      typeof uuid !== \"string\" ||\n      uuid.length === 0 ||\n      uuid.length > 128\n    ) {\n      throw new TypeError(\n        \"reasoningDetailsRef randomUUID must return a synchronous bounded string\"\n      );\n    }\n    return `${prefix}-${uuid}`;\n  }\n\n  const getRandomValues = Reflect.get(crypto, \"getRandomValues\");\n  if (consumeGenuinePromise(getRandomValues)) {\n    throw new TypeError(\n      \"reasoningDetailsRef getRandomValues must be synchronous\"\n    );\n  }\n  if (getRandomValues != null) {\n    if (typeof getRandomValues !== \"function\") {\n      throw new TypeError(\n        \"reasoningDetailsRef getRandomValues must be a function\"\n      );\n    }\n    const bytes = new Uint8Array(16);\n    const result = Reflect.apply(getRandomValues, crypto, [bytes]);\n    if (consumeGenuinePromise(result) || result !== bytes) {\n      throw new TypeError(\n        \"reasoningDetailsRef getRandomValues must return synchronously\"\n      );\n    }\n    return `${prefix}-${Array.from(bytes, (byte) =>\n      byte.toString(16).padStart(2, \"0\")\n    ).join(\"\")}`;\n  }\n\n  throw new Error(\"OpenGateway reasoningDetailsRef requires Web Crypto\");\n}\n\nexport function createReasoningDetailsStore(\n  settings: OpenGatewayReasoningDetailsStoreSettings = {}\n): OpenGatewayReasoningDetailsStore {\n  if (consumeGenuinePromise(settings)) {\n    throw new TypeError(\"reasoningDetailsRef settings must be synchronous\");\n  }\n  if (typeof settings !== \"object\" || settings === null) {\n    throw new TypeError(\"reasoningDetailsRef settings must be an object\");\n  }\n  consumeOwnDataPromiseFields(settings, [\n    \"maxEntries\",\n    \"now\",\n    \"refPrefix\",\n    \"ttlMs\",\n  ]);\n  const capturedMaxEntries = settings.maxEntries;\n  const capturedNow = settings.now;\n  const capturedRefPrefix = settings.refPrefix;\n  const capturedTtlMs = settings.ttlMs;\n  const asyncMaxEntries = consumeGenuinePromise(capturedMaxEntries);\n  const asyncNow = consumeGenuinePromise(capturedNow);\n  const asyncRefPrefix = consumeGenuinePromise(capturedRefPrefix);\n  const asyncTtlMs = consumeGenuinePromise(capturedTtlMs);\n  if (asyncMaxEntries || asyncNow || asyncRefPrefix || asyncTtlMs) {\n    throw new TypeError(\"reasoningDetailsRef settings must be synchronous\");\n  }\n  const maxEntries =\n    capturedMaxEntries === undefined ? DEFAULT_MAX_ENTRIES : capturedMaxEntries;\n  const now = capturedNow === undefined ? Date.now : capturedNow;\n  const refPrefix =\n    capturedRefPrefix === undefined ? DEFAULT_REF_PREFIX : capturedRefPrefix;\n  const ttlMs = capturedTtlMs === undefined ? DEFAULT_TTL_MS : capturedTtlMs;\n  validateSettings(maxEntries, now, refPrefix, ttlMs);\n  const reasoningDetailsByRef = new Map<string, StoredReasoningDetails>();\n  let latestTime = Number.MIN_SAFE_INTEGER;\n\n  function monotonicCurrentTime(): number {\n    latestTime = Math.max(latestTime, currentTime(now));\n    return latestTime;\n  }\n\n  function pruneExpired(currentTime: number): void {\n    for (const [ref, stored] of reasoningDetailsByRef) {\n      if (stored.expiresAt > currentTime) {\n        return;\n      }\n      reasoningDetailsByRef.delete(ref);\n    }\n  }\n\n  function pruneOverflow(): void {\n    while (reasoningDetailsByRef.size > maxEntries) {\n      const oldestRef = reasoningDetailsByRef.keys().next().value;\n      if (typeof oldestRef !== \"string\") {\n        return;\n      }\n      reasoningDetailsByRef.delete(oldestRef);\n    }\n  }\n\n  return {\n    load(ref) {\n      if (!isValidReasoningDetailsRef(ref)) {\n        return;\n      }\n      const time = monotonicCurrentTime();\n      const stored = reasoningDetailsByRef.get(ref);\n      if (stored == null) {\n        return;\n      }\n\n      if (stored.expiresAt <= time) {\n        reasoningDetailsByRef.delete(ref);\n        return;\n      }\n\n      return snapshotReasoningDetails(stored.details);\n    },\n    store(details) {\n      const time = monotonicCurrentTime();\n      pruneExpired(time);\n      const detailsSnapshot = snapshotStoreDetails(details);\n\n      let ref: string | undefined;\n      for (let attempt = 0; attempt < MAX_REF_CREATION_ATTEMPTS; attempt += 1) {\n        const candidate = createRandomRef(refPrefix);\n        if (!reasoningDetailsByRef.has(candidate)) {\n          ref = candidate;\n          break;\n        }\n      }\n      if (ref === undefined) {\n        throw new Error(\n          \"OpenGateway reasoningDetailsRef collision limit reached\"\n        );\n      }\n      reasoningDetailsByRef.set(ref, {\n        details: detailsSnapshot,\n        expiresAt: Math.min(Number.MAX_SAFE_INTEGER, time + ttlMs),\n      });\n      pruneOverflow();\n\n      return ref;\n    },\n  };\n}\n\nexport function createReasoningDetailsStoreMemo(\n  reasoningDetailsStore: OpenGatewayReasoningDetailsStore\n): OpenGatewayReasoningDetailsStore {\n  const refsByDetails = new Map<string, Promise<string>>();\n  const detailsByRef = new Map<\n    string,\n    Promise<readonly JSONValue[] | undefined>\n  >();\n  const capturedStore = captureStoreMethods(reasoningDetailsStore);\n\n  return {\n    load(ref) {\n      if (!isValidReasoningDetailsRef(ref)) {\n        return;\n      }\n      const cached = detailsByRef.get(ref);\n      if (cached !== undefined) {\n        return cached;\n      }\n      if (detailsByRef.size >= MAX_MEMO_ENTRIES) {\n        return;\n      }\n      let result: ReturnType<OpenGatewayReasoningDetailsStore[\"load\"]>;\n      try {\n        result = capturedStore.load(ref);\n      } catch (error) {\n        return Promise.reject(error);\n      }\n      const promise = Promise.resolve(result);\n      detailsByRef.set(ref, promise);\n      promise.catch(() => {\n        if (detailsByRef.get(ref) === promise) {\n          detailsByRef.delete(ref);\n        }\n      });\n      return promise;\n    },\n    store(details) {\n      const detailsSnapshot = snapshotStoreDetails(details);\n      const key = detailsKey(detailsSnapshot);\n      const cachedRef = refsByDetails.get(key);\n      if (cachedRef !== undefined) {\n        return cachedRef;\n      }\n      if (refsByDetails.size >= MAX_MEMO_ENTRIES) {\n        try {\n          return capturedStore.store(detailsSnapshot);\n        } catch (error) {\n          return Promise.reject(error);\n        }\n      }\n\n      let result: ReturnType<OpenGatewayReasoningDetailsStore[\"store\"]>;\n      try {\n        result = capturedStore.store(detailsSnapshot);\n      } catch (error) {\n        return Promise.reject(error);\n      }\n      const refPromise = Promise.resolve(result).then((ref) => {\n        if (!isValidReasoningDetailsRef(ref)) {\n          throw new TypeError(\"reasoningDetailsStore returned an invalid ref\");\n        }\n        return ref;\n      });\n      refsByDetails.set(key, refPromise);\n      refPromise.catch(() => {\n        if (refsByDetails.get(key) === refPromise) {\n          refsByDetails.delete(key);\n        }\n      });\n      return refPromise;\n    },\n  };\n}\n","import type { JSONValue } from \"@ai-sdk/provider\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n  requireGenuinePromise,\n} from \"../../core/runtime-types\";\nimport { clearTimerSafely, scheduleTimer } from \"../../core/timeout\";\nimport {\n  captureCallbackJsonMutationTargets,\n  consumeCallbackJsonMutationPromises,\n} from \"./callback-json-mutations\";\nimport {\n  createReasoningDetailsStore,\n  createReasoningDetailsStoreMemo,\n} from \"./reasoning-roundtrip-store-memory\";\nimport {\n  isValidReasoningDetailsRef,\n  snapshotStoreDetails,\n} from \"./reasoning-roundtrip-store-values\";\n\nexport const REASONING_DETAILS_REF_KEY = \"reasoningDetailsRef\";\n\nexport interface OpenGatewayReasoningDetailsStore {\n  load(\n    ref: string\n  ):\n    | readonly JSONValue[]\n    | undefined\n    | Promise<readonly JSONValue[] | undefined>;\n  store(details: readonly JSONValue[]): string | Promise<string>;\n}\n\nexport interface OpenGatewayReasoningDetailsStoreSettings {\n  maxEntries?: number;\n  now?: () => number;\n  refPrefix?: string;\n  ttlMs?: number;\n}\n\nexport const DEFAULT_MAX_ENTRIES = 1000;\nexport const DEFAULT_REF_PREFIX = \"opengateway-reasoning\";\nexport const DEFAULT_TTL_MS = 10 * 60 * 1000;\nexport const MAX_ENTRIES = 100_000;\nexport const MAX_TTL_MS = 30 * 24 * 60 * 60 * 1000;\nexport const MAX_REF_CREATION_ATTEMPTS = 8;\nconst OPTIONAL_STORE_TIMEOUT_MS = 1000;\nexport const MAX_MEMO_ENTRIES = 1024;\nconst MAX_REF_PREFIX_LENGTH = 128;\nconst INVALID_REF_PREFIX_PATTERN = /[^A-Za-z0-9._~-]/u;\n\nexport function validateSettings(\n  maxEntries: number,\n  now: () => number,\n  refPrefix: string,\n  ttlMs: number\n): void {\n  if (\n    !Number.isSafeInteger(maxEntries) ||\n    maxEntries < 1 ||\n    maxEntries > MAX_ENTRIES\n  ) {\n    throw new TypeError(\n      `reasoningDetailsRef maxEntries must be an integer from 1 to ${MAX_ENTRIES}`\n    );\n  }\n  if (typeof now !== \"function\") {\n    throw new TypeError(\"reasoningDetailsRef now must be a function\");\n  }\n  if (\n    typeof refPrefix !== \"string\" ||\n    refPrefix.length === 0 ||\n    refPrefix.length > MAX_REF_PREFIX_LENGTH ||\n    INVALID_REF_PREFIX_PATTERN.test(refPrefix)\n  ) {\n    throw new TypeError(\"reasoningDetailsRef refPrefix is invalid\");\n  }\n  if (!Number.isSafeInteger(ttlMs) || ttlMs < 1 || ttlMs > MAX_TTL_MS) {\n    throw new TypeError(\n      `reasoningDetailsRef ttlMs must be an integer from 1 to ${MAX_TTL_MS}`\n    );\n  }\n}\n\nexport function currentTime(now: () => number): number {\n  const value = now();\n  if (consumeGenuinePromise(value) || !Number.isSafeInteger(value)) {\n    throw new TypeError(\"reasoningDetailsRef clock must return a safe integer\");\n  }\n  return value;\n}\n\nfunction settleOptionalStore<T>(\n  promise: Promise<T>,\n  operation: string\n): Promise<T> {\n  return new Promise((resolve, reject) => {\n    let settled = false;\n    let timer: ReturnType<typeof setTimeout> | undefined;\n    const succeed = (value: T) => {\n      if (settled) {\n        return;\n      }\n      settled = true;\n      clearTimerSafely(timer);\n      resolve(value);\n    };\n    const fail = (error: unknown) => {\n      if (settled) {\n        return;\n      }\n      settled = true;\n      clearTimerSafely(timer);\n      reject(error);\n    };\n    try {\n      timer = scheduleTimer(\n        () => fail(new Error(`reasoningDetailsStore ${operation} timed out`)),\n        OPTIONAL_STORE_TIMEOUT_MS\n      );\n    } catch (error) {\n      consumeGenuinePromise(promise);\n      fail(error);\n      return;\n    }\n    Promise.prototype.then.call(promise, succeed, fail);\n  });\n}\n\nexport function captureStoreMethods(\n  reasoningDetailsStore: OpenGatewayReasoningDetailsStore\n): OpenGatewayReasoningDetailsStore {\n  if (consumeGenuinePromise(reasoningDetailsStore)) {\n    throw new TypeError(\"reasoningDetailsStore must be synchronous\");\n  }\n  if (\n    (typeof reasoningDetailsStore !== \"object\" ||\n      reasoningDetailsStore === null) &&\n    typeof reasoningDetailsStore !== \"function\"\n  ) {\n    throw new TypeError(\"reasoningDetailsStore must be an object\");\n  }\n  consumeOwnDataPromiseFields(reasoningDetailsStore, [\"load\", \"store\"]);\n  const load = reasoningDetailsStore.load;\n  const store = reasoningDetailsStore.store;\n  const asyncLoad = consumeGenuinePromise(load);\n  const asyncStore = consumeGenuinePromise(store);\n  if (asyncLoad || asyncStore) {\n    throw new TypeError(\"reasoningDetailsStore methods must be synchronous\");\n  }\n  if (typeof load !== \"function\" || typeof store !== \"function\") {\n    throw new TypeError(\n      \"reasoningDetailsStore must provide load and store methods\"\n    );\n  }\n  return {\n    load(ref) {\n      if (!isValidReasoningDetailsRef(ref)) {\n        return;\n      }\n      const result = load.call(reasoningDetailsStore, ref);\n      if (result === undefined) {\n        return;\n      }\n      if (Array.isArray(result)) {\n        return snapshotStoreDetails(result);\n      }\n      return settleOptionalStore(\n        requireGenuinePromise<readonly JSONValue[] | undefined>(\n          result,\n          (error) =>\n            new TypeError(\n              \"reasoningDetailsStore load must return a genuine Promise\",\n              { cause: error }\n            )\n        ),\n        \"load\"\n      ).then((details) =>\n        details === undefined ? undefined : snapshotStoreDetails(details)\n      );\n    },\n    store(details) {\n      const detailsSnapshot = snapshotStoreDetails(details);\n      const mutationTargets =\n        captureCallbackJsonMutationTargets(detailsSnapshot);\n      let result: ReturnType<OpenGatewayReasoningDetailsStore[\"store\"]>;\n      try {\n        result = store.call(reasoningDetailsStore, detailsSnapshot);\n      } finally {\n        consumeCallbackJsonMutationPromises(mutationTargets);\n      }\n      if (typeof result === \"string\") {\n        if (!isValidReasoningDetailsRef(result)) {\n          throw new TypeError(\"reasoningDetailsStore returned an invalid ref\");\n        }\n        return result;\n      }\n      const settled = settleOptionalStore(\n        requireGenuinePromise<string>(\n          result,\n          (error) =>\n            new TypeError(\n              \"reasoningDetailsStore store must return a genuine Promise\",\n              { cause: error }\n            )\n        ),\n        \"store\"\n      );\n      return settled.then(\n        (ref) => {\n          consumeCallbackJsonMutationPromises(mutationTargets);\n          if (!isValidReasoningDetailsRef(ref)) {\n            throw new TypeError(\n              \"reasoningDetailsStore returned an invalid ref\"\n            );\n          }\n          return ref;\n        },\n        (error) => {\n          consumeCallbackJsonMutationPromises(mutationTargets);\n          throw error;\n        }\n      );\n    },\n  };\n}\n\nexport function captureOpenGatewayReasoningDetailsStore(\n  reasoningDetailsStore: OpenGatewayReasoningDetailsStore\n): OpenGatewayReasoningDetailsStore {\n  return captureStoreMethods(reasoningDetailsStore);\n}\n\nexport function createOpenGatewayReasoningDetailsStore(\n  settings: OpenGatewayReasoningDetailsStoreSettings = {}\n): OpenGatewayReasoningDetailsStore {\n  return createReasoningDetailsStore(settings);\n}\n\nexport function createOpenGatewayReasoningDetailsStoreMemo(\n  store: OpenGatewayReasoningDetailsStore\n): OpenGatewayReasoningDetailsStore {\n  return createReasoningDetailsStoreMemo(store);\n}\n","import type {\n  JSONValue,\n  LanguageModelV4Message,\n  LanguageModelV4Prompt,\n  SharedV4ProviderOptions,\n} from \"@ai-sdk/provider\";\nimport { isJSONObject } from \"@ai-sdk/provider\";\nimport { cloneCallOptions } from \"../../core/call-options\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"../../core/runtime-types\";\nimport { clearTimerSafely, scheduleTimer } from \"../../core/timeout\";\nimport { appendUniqueJsonDetails } from \"./metadata-details\";\nimport {\n  captureOpenGatewayReasoningDetailsStore,\n  type OpenGatewayReasoningDetailsStore,\n  REASONING_DETAILS_REF_KEY,\n} from \"./reasoning-roundtrip-store\";\n\nconst OPENGATEWAY_KEY = \"opengateway\";\nconst OPENAI_COMPATIBLE_KEY = \"openaiCompatible\";\nconst REASONING_DETAILS_KEY = \"reasoningDetails\";\nconst REASONING_DETAILS_REQUEST_KEY = \"reasoning_details\";\nconst MAX_PROMPT_REPLAY_CONCURRENCY = 32;\nconst PROMPT_REPLAY_TIMEOUT_MS = 1000;\n\nfunction assertNever(value: never): never {\n  throw new TypeError(`Unsupported OpenGateway reasoning variant: ${value}`);\n}\n\nfunction appendJsonDetails(target: JSONValue[], value: unknown): void {\n  if (value !== null && value !== undefined) {\n    appendUniqueJsonDetails(target, Array.isArray(value) ? value : [value]);\n  }\n}\n\nasync function appendReasoningDetailsFromOptions(\n  target: JSONValue[],\n  options: SharedV4ProviderOptions | undefined,\n  reasoningDetailsStore: OpenGatewayReasoningDetailsStore\n): Promise<void> {\n  const opengateway = isJSONObject(options?.[OPENGATEWAY_KEY])\n    ? options[OPENGATEWAY_KEY]\n    : undefined;\n  appendJsonDetails(target, opengateway?.[REASONING_DETAILS_KEY]);\n  appendJsonDetails(target, opengateway?.[REASONING_DETAILS_REQUEST_KEY]);\n  const ref = opengateway?.[REASONING_DETAILS_REF_KEY];\n  if (typeof ref === \"string\") {\n    try {\n      const details = await reasoningDetailsStore.load(ref);\n      if (details != null) {\n        appendUniqueJsonDetails(target, details);\n      }\n    } catch {\n      // Persistence is optional; an unavailable ref must not fail the request.\n    }\n  }\n}\n\nfunction hasOpenAICompatibleReasoningDetails(\n  options?: SharedV4ProviderOptions\n): boolean {\n  const openAICompatible = options?.[OPENAI_COMPATIBLE_KEY];\n  const value = isJSONObject(openAICompatible)\n    ? openAICompatible[REASONING_DETAILS_REQUEST_KEY]\n    : undefined;\n  return value !== undefined && value !== null;\n}\n\nfunction withOpenAICompatibleReasoningDetails(\n  options: SharedV4ProviderOptions | undefined,\n  details: readonly JSONValue[]\n): SharedV4ProviderOptions | undefined {\n  if (details.length === 0 || hasOpenAICompatibleReasoningDetails(options)) {\n    return options;\n  }\n\n  const stableOptions = isJSONObject(options) ? options : {};\n  const openAICompatible = isJSONObject(stableOptions[OPENAI_COMPATIBLE_KEY])\n    ? stableOptions[OPENAI_COMPATIBLE_KEY]\n    : {};\n  return {\n    ...stableOptions,\n    [OPENAI_COMPATIBLE_KEY]: {\n      ...openAICompatible,\n      [REASONING_DETAILS_REQUEST_KEY]: [...details],\n    },\n  };\n}\n\nasync function collectMessageReasoningDetails(\n  message: LanguageModelV4Message,\n  reasoningDetailsStore: OpenGatewayReasoningDetailsStore\n): Promise<JSONValue[]> {\n  switch (message.role) {\n    case \"assistant\": {\n      const details: JSONValue[] = [];\n      await appendReasoningDetailsFromOptions(\n        details,\n        message.providerOptions,\n        reasoningDetailsStore\n      );\n      for (const part of message.content) {\n        await appendReasoningDetailsFromOptions(\n          details,\n          part.providerOptions,\n          reasoningDetailsStore\n        );\n      }\n      return details;\n    }\n    case \"system\":\n    case \"tool\":\n    case \"user\":\n      return [];\n    default:\n      return assertNever(message);\n  }\n}\n\nasync function withReasoningDetailsOnMessage(\n  message: LanguageModelV4Message,\n  reasoningDetailsStore: OpenGatewayReasoningDetailsStore\n): Promise<LanguageModelV4Message> {\n  const details = await collectMessageReasoningDetails(\n    message,\n    reasoningDetailsStore\n  );\n  if (details.length === 0) {\n    return message;\n  }\n\n  switch (message.role) {\n    case \"assistant\":\n      return {\n        ...message,\n        providerOptions: withOpenAICompatibleReasoningDetails(\n          message.providerOptions,\n          details\n        ),\n      };\n    case \"system\":\n    case \"tool\":\n    case \"user\":\n      return message;\n    default:\n      return assertNever(message);\n  }\n}\n\nexport async function withReasoningDetailsOnPrompt(\n  prompt: LanguageModelV4Prompt,\n  reasoningDetailsStore: OpenGatewayReasoningDetailsStore\n): Promise<LanguageModelV4Prompt> {\n  consumeGenuinePromise(prompt);\n  consumeGenuinePromise(reasoningDetailsStore);\n  if (Array.isArray(prompt)) {\n    const length = Reflect.get(prompt, \"length\");\n    if (\n      typeof length === \"number\" &&\n      Number.isSafeInteger(length) &&\n      length >= 0 &&\n      length <= 10_000\n    ) {\n      consumeOwnDataPromiseFields(\n        prompt,\n        Array.from({ length }, (_, index) => index)\n      );\n    }\n  }\n  if (\n    (typeof reasoningDetailsStore === \"object\" &&\n      reasoningDetailsStore !== null) ||\n    typeof reasoningDetailsStore === \"function\"\n  ) {\n    consumeOwnDataPromiseFields(reasoningDetailsStore, [\"load\", \"store\"]);\n  }\n  const capturedPrompt = cloneCallOptions({ prompt }, undefined).prompt;\n  const capturedStore = captureOpenGatewayReasoningDetailsStore(\n    reasoningDetailsStore\n  );\n  const length = capturedPrompt.length;\n  const original = new Array<LanguageModelV4Prompt[number]>(length);\n  const output = new Array<LanguageModelV4Prompt[number]>(length);\n  for (let index = 0; index < length; index += 1) {\n    original[index] = capturedPrompt[index];\n    output[index] = capturedPrompt[index];\n  }\n  let nextIndex = 0;\n  let stopped = false;\n  let timedOut = false;\n  const worker = async () => {\n    while (!stopped) {\n      const index = nextIndex;\n      nextIndex += 1;\n      if (index >= length) {\n        return;\n      }\n      const message = await withReasoningDetailsOnMessage(\n        capturedPrompt[index],\n        capturedStore\n      );\n      if (stopped) {\n        return;\n      }\n      output[index] = message;\n    }\n  };\n  let timer: ReturnType<typeof setTimeout> | undefined;\n  const timeout = new Promise<void>((resolve) => {\n    try {\n      timer = scheduleTimer(() => {\n        stopped = true;\n        timedOut = true;\n        resolve();\n      }, PROMPT_REPLAY_TIMEOUT_MS);\n    } catch {\n      stopped = true;\n      timedOut = true;\n      resolve();\n    }\n  });\n  const workers = Promise.all(\n    Array.from(\n      { length: Math.min(length, MAX_PROMPT_REPLAY_CONCURRENCY) },\n      worker\n    )\n  );\n  await Promise.race([workers, timeout]);\n  stopped = true;\n  clearTimerSafely(timer);\n  return timedOut ? original : output;\n}\n","import type {\n  JSONValue,\n  LanguageModelV4Content,\n  LanguageModelV4StreamPart,\n  SharedV4ProviderMetadata,\n} from \"@ai-sdk/provider\";\nimport { isJSONObject } from \"@ai-sdk/provider\";\nimport { snapshotJsonValue } from \"../../core/json-value\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"../../core/runtime-types\";\nimport { snapshotUniqueJsonDetails } from \"./metadata-details\";\nimport {\n  type OpenGatewayReasoningDetailsStore,\n  REASONING_DETAILS_REF_KEY,\n} from \"./reasoning-roundtrip-store\";\n\nconst OPENGATEWAY_KEY = \"opengateway\";\nconst MAX_REASONING_PARTS = 10_000;\nconst CONTENT_PART_KEYS = [\n  \"approvalId\",\n  \"data\",\n  \"dynamic\",\n  \"filename\",\n  \"id\",\n  \"input\",\n  \"isError\",\n  \"kind\",\n  \"mediaType\",\n  \"preliminary\",\n  \"providerExecuted\",\n  \"providerMetadata\",\n  \"result\",\n  \"sourceType\",\n  \"text\",\n  \"title\",\n  \"toolCallId\",\n  \"toolName\",\n  \"type\",\n  \"url\",\n] as const;\nconst STREAM_PART_KEYS = [\n  ...CONTENT_PART_KEYS,\n  \"delta\",\n  \"error\",\n  \"finishReason\",\n  \"rawValue\",\n  \"usage\",\n  \"warnings\",\n] as const;\n\nfunction partDiscriminant(\n  value: unknown,\n  keys: readonly string[],\n  name: string\n): { record: Record<string, unknown>; type: unknown } {\n  if (consumeGenuinePromise(value)) {\n    throw new TypeError(`${name} must be synchronous`);\n  }\n  if (typeof value !== \"object\" || value === null) {\n    throw new TypeError(`${name} must be an object`);\n  }\n  consumeOwnDataPromiseFields(value, keys);\n  const type = Reflect.get(value, \"type\");\n  if (consumeGenuinePromise(type)) {\n    throw new TypeError(`${name} type must be synchronous`);\n  }\n  return { record: value as Record<string, unknown>, type };\n}\n\nfunction snapshotSelectedPart<T>(\n  record: Record<string, unknown>,\n  type: unknown,\n  keys: readonly string[],\n  name: string\n): T {\n  const snapshot: Record<string, unknown> = { type };\n  let asyncField = false;\n  for (const key of keys) {\n    const field = Reflect.get(record, key);\n    if (consumeGenuinePromise(field)) {\n      asyncField = true;\n    }\n    snapshot[key] = field;\n  }\n  if (asyncField) {\n    throw new TypeError(`${name} fields must be synchronous`);\n  }\n  return snapshot as T;\n}\n\nfunction snapshotContentParts(\n  value: unknown\n): Array<{ part: LanguageModelV4Content; type: unknown }> {\n  if (!Array.isArray(value)) {\n    throw new TypeError(\n      `reasoning content must contain at most ${MAX_REASONING_PARTS} parts`\n    );\n  }\n  const length = Reflect.get(value, \"length\");\n  if (\n    !Number.isSafeInteger(length) ||\n    length < 0 ||\n    length > MAX_REASONING_PARTS\n  ) {\n    throw new TypeError(\n      `reasoning content must contain at most ${MAX_REASONING_PARTS} parts`\n    );\n  }\n  consumeOwnDataPromiseFields(\n    value,\n    Array.from({ length }, (_, index) => index)\n  );\n  const snapshot = new Array<{ part: LanguageModelV4Content; type: unknown }>(\n    length\n  );\n  for (let index = 0; index < length; index += 1) {\n    if (!Object.hasOwn(value, index)) {\n      throw new TypeError(\"reasoning content must be a dense array\");\n    }\n    const part = Reflect.get(value, index);\n    const captured = partDiscriminant(\n      part,\n      CONTENT_PART_KEYS,\n      \"reasoning content part\"\n    );\n    snapshot[index] = { part, type: captured.type } as {\n      part: LanguageModelV4Content;\n      type: unknown;\n    };\n  }\n  return snapshot;\n}\n\nexport function captureReasoningStreamPart(\n  value: LanguageModelV4StreamPart\n): LanguageModelV4StreamPart {\n  const { record, type } = partDiscriminant(\n    value,\n    STREAM_PART_KEYS,\n    \"reasoning stream part\"\n  );\n  if (type === \"raw\") {\n    return snapshotSelectedPart(record, type, [\"rawValue\"], \"raw stream part\");\n  }\n  if (type === \"tool-call\") {\n    return snapshotSelectedPart(\n      record,\n      type,\n      [\n        \"dynamic\",\n        \"input\",\n        \"providerExecuted\",\n        \"providerMetadata\",\n        \"toolCallId\",\n        \"toolName\",\n      ],\n      \"tool-call stream part\"\n    );\n  }\n  if (\n    type === \"reasoning-delta\" ||\n    type === \"reasoning-end\" ||\n    type === \"reasoning-start\" ||\n    type === \"text-delta\" ||\n    type === \"text-end\" ||\n    type === \"text-start\"\n  ) {\n    return snapshotSelectedPart(\n      record,\n      type,\n      type.endsWith(\"delta\")\n        ? [\"delta\", \"id\", \"providerMetadata\"]\n        : [\"id\", \"providerMetadata\"],\n      \"text or reasoning stream part\"\n    );\n  }\n  return value;\n}\n\nfunction assertNever(value: never): never {\n  throw new TypeError(`Unsupported OpenGateway reasoning variant: ${value}`);\n}\n\nasync function withOpenGatewayReasoningMetadata(\n  metadata: SharedV4ProviderMetadata | undefined,\n  details: readonly JSONValue[],\n  reasoningDetailsStore: OpenGatewayReasoningDetailsStore\n): Promise<SharedV4ProviderMetadata | undefined> {\n  let stableMetadata: SharedV4ProviderMetadata | undefined;\n  try {\n    const metadataSnapshot = snapshotJsonValue(metadata);\n    stableMetadata =\n      metadataSnapshot.valid && isJSONObject(metadataSnapshot.value)\n        ? (metadataSnapshot.value as SharedV4ProviderMetadata)\n        : undefined;\n    const ref = await reasoningDetailsStore.store(details);\n    if (typeof ref !== \"string\" || ref.length === 0 || ref.length > 256) {\n      return stableMetadata;\n    }\n    return {\n      ...stableMetadata,\n      [OPENGATEWAY_KEY]: {\n        ...(isJSONObject(stableMetadata?.[OPENGATEWAY_KEY])\n          ? stableMetadata[OPENGATEWAY_KEY]\n          : {}),\n        [REASONING_DETAILS_REF_KEY]: ref,\n      },\n    };\n  } catch {\n    return stableMetadata;\n  }\n}\n\nasync function withDetailsOnContentPart(\n  part: LanguageModelV4Content,\n  details: readonly JSONValue[],\n  reasoningDetailsStore: OpenGatewayReasoningDetailsStore\n): Promise<LanguageModelV4Content> {\n  return {\n    ...part,\n    providerMetadata: await withOpenGatewayReasoningMetadata(\n      part.providerMetadata,\n      details,\n      reasoningDetailsStore\n    ),\n  };\n}\n\nexport async function withReasoningDetailsOnContent(\n  content: LanguageModelV4Content[],\n  details: readonly JSONValue[],\n  reasoningDetailsStore: OpenGatewayReasoningDetailsStore\n): Promise<LanguageModelV4Content[]> {\n  const stableDetails = snapshotUniqueJsonDetails(details);\n  if (stableDetails.length === 0) {\n    return content;\n  }\n\n  const capturedContent = snapshotContentParts(content);\n  const hasReasoning = capturedContent.some(({ type }) => type === \"reasoning\");\n  let attachedToText = false;\n  const nextContent = await Promise.all(\n    capturedContent.map(({ part, type }) => {\n      switch (type) {\n        case \"reasoning\":\n          return withDetailsOnContentPart(\n            snapshotSelectedPart(\n              part,\n              type,\n              [\"providerMetadata\", \"text\"],\n              \"reasoning content part\"\n            ),\n            stableDetails,\n            reasoningDetailsStore\n          );\n        case \"text\": {\n          if (hasReasoning || attachedToText) {\n            return part;\n          }\n          attachedToText = true;\n          return withDetailsOnContentPart(\n            snapshotSelectedPart(\n              part,\n              type,\n              [\"providerMetadata\", \"text\"],\n              \"text content part\"\n            ),\n            stableDetails,\n            reasoningDetailsStore\n          );\n        }\n        case \"custom\":\n        case \"file\":\n        case \"reasoning-file\":\n        case \"source\":\n        case \"tool-approval-request\":\n        case \"tool-call\":\n        case \"tool-result\":\n          return part;\n        default:\n          return assertNever(part as never);\n      }\n    })\n  );\n\n  return hasReasoning || attachedToText\n    ? nextContent\n    : [\n        ...nextContent,\n        {\n          type: \"reasoning\",\n          text: \"\",\n          providerMetadata: await withOpenGatewayReasoningMetadata(\n            undefined,\n            stableDetails,\n            reasoningDetailsStore\n          ),\n        },\n      ];\n}\n\nexport async function withReasoningPartMetadata(\n  part: LanguageModelV4StreamPart,\n  details: readonly JSONValue[],\n  reasoningDetailsStore: OpenGatewayReasoningDetailsStore\n): Promise<LanguageModelV4StreamPart> {\n  const capturedPart = captureReasoningStreamPart(part);\n  const stableDetails = snapshotUniqueJsonDetails(details);\n  if (stableDetails.length === 0) {\n    return capturedPart;\n  }\n\n  switch (capturedPart.type) {\n    case \"reasoning-delta\":\n    case \"reasoning-end\":\n    case \"reasoning-start\":\n    case \"text-delta\":\n    case \"text-end\":\n    case \"text-start\":\n    case \"tool-call\":\n      return {\n        ...capturedPart,\n        providerMetadata: await withOpenGatewayReasoningMetadata(\n          capturedPart.providerMetadata,\n          stableDetails,\n          reasoningDetailsStore\n        ),\n      };\n    case \"custom\":\n    case \"error\":\n    case \"file\":\n    case \"finish\":\n    case \"raw\":\n    case \"reasoning-file\":\n    case \"response-metadata\":\n    case \"source\":\n    case \"stream-start\":\n    case \"tool-approval-request\":\n    case \"tool-input-delta\":\n    case \"tool-input-end\":\n    case \"tool-input-start\":\n    case \"tool-result\":\n      return capturedPart;\n    default:\n      return assertNever(capturedPart);\n  }\n}\n","import type { JSONValue, LanguageModelV4StreamPart } from \"@ai-sdk/provider\";\nimport { boundedEnumerableOwnKeys } from \"../../core/http-headers\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"../../core/runtime-types\";\n\nexport function isReasoningStreamPart(\n  part: LanguageModelV4StreamPart\n): boolean {\n  return (\n    part.type === \"reasoning-delta\" ||\n    part.type === \"reasoning-end\" ||\n    part.type === \"reasoning-start\"\n  );\n}\n\nexport function isTextStreamPart(part: LanguageModelV4StreamPart): boolean {\n  return (\n    part.type === \"text-delta\" ||\n    part.type === \"text-end\" ||\n    part.type === \"text-start\"\n  );\n}\n\nexport function detailsSince(\n  details: readonly JSONValue[],\n  count: number\n): readonly JSONValue[] {\n  return details.slice(count);\n}\n\nconst MIDDLEWARE_HOOK_KEYS = [\n  \"doGenerate\",\n  \"doStream\",\n  \"model\",\n  \"params\",\n  \"type\",\n] as const;\nconst MAX_MIDDLEWARE_RESULT_FIELDS = 128;\n\nexport function snapshotMiddlewareResult(\n  value: unknown,\n  name: string\n): Record<string, unknown> {\n  if (consumeGenuinePromise(value)) {\n    throw new TypeError(`${name} must be synchronous`);\n  }\n  if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n    throw new TypeError(`${name} must be an object`);\n  }\n  const keys = boundedEnumerableOwnKeys(value, MAX_MIDDLEWARE_RESULT_FIELDS);\n  if (keys === undefined) {\n    throw new TypeError(\n      `${name} must contain at most ${MAX_MIDDLEWARE_RESULT_FIELDS} fields`\n    );\n  }\n  consumeOwnDataPromiseFields(value, keys);\n  const snapshot: Record<string, unknown> = {};\n  let asyncField = false;\n  for (const key of keys) {\n    const field = Reflect.get(value, key);\n    if (consumeGenuinePromise(field)) {\n      asyncField = true;\n    }\n    Object.defineProperty(snapshot, key, {\n      configurable: true,\n      enumerable: true,\n      value: field,\n      writable: true,\n    });\n  }\n  if (asyncField) {\n    throw new TypeError(`${name} fields must be synchronous`);\n  }\n  return snapshot;\n}\n\nexport function discardReasoningStream(stream: object): void {\n  try {\n    const cancel = Reflect.get(stream, \"cancel\");\n    if (consumeGenuinePromise(cancel) || typeof cancel !== \"function\") {\n      return;\n    }\n    consumeGenuinePromise(\n      Reflect.apply(cancel, stream, [\"reasoning stream setup failed\"])\n    );\n  } catch {\n    // Transform setup failure remains primary over best-effort cancellation.\n  }\n}\n\nexport function captureMiddlewareHookArgs(\n  value: unknown\n): Record<string, unknown> {\n  if (consumeGenuinePromise(value)) {\n    throw new TypeError(\n      \"reasoning middleware hook arguments must be synchronous\"\n    );\n  }\n  if (typeof value !== \"object\" || value === null) {\n    throw new TypeError(\n      \"reasoning middleware hook arguments must be an object\"\n    );\n  }\n  consumeOwnDataPromiseFields(value, MIDDLEWARE_HOOK_KEYS);\n  const captured: Record<string, unknown> = {};\n  let asyncField = false;\n  for (const key of MIDDLEWARE_HOOK_KEYS) {\n    const field = Reflect.get(value, key);\n    if (consumeGenuinePromise(field)) {\n      asyncField = true;\n    }\n    captured[key] = field;\n  }\n  if (typeof captured.model === \"object\" && captured.model !== null) {\n    consumeOwnDataPromiseFields(captured.model, [\n      \"doGenerate\",\n      \"doStream\",\n      \"modelId\",\n      \"provider\",\n      \"specificationVersion\",\n      \"supportedUrls\",\n    ]);\n  }\n  if (asyncField) {\n    throw new TypeError(\"reasoning middleware hook fields must be synchronous\");\n  }\n  return captured;\n}\n","import type { JSONValue, LanguageModelV4StreamPart } from \"@ai-sdk/provider\";\nimport type { LanguageModelMiddleware } from \"ai\";\nimport { snapshotReasoningRequestBody } from \"../../core/reasoning\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n} from \"../../core/runtime-types\";\nimport {\n  appendUniqueJsonDetails,\n  collectChoiceReasoningDetails,\n} from \"./metadata-details\";\nimport { withReasoningDetailsOnPrompt } from \"./reasoning-roundtrip-input\";\nimport {\n  captureReasoningStreamPart,\n  withReasoningDetailsOnContent,\n  withReasoningPartMetadata,\n} from \"./reasoning-roundtrip-output\";\nimport {\n  captureMiddlewareHookArgs,\n  detailsSince,\n  discardReasoningStream,\n  isReasoningStreamPart,\n  isTextStreamPart,\n  snapshotMiddlewareResult,\n} from \"./reasoning-roundtrip-runtime\";\nimport {\n  captureOpenGatewayReasoningDetailsStore,\n  createOpenGatewayReasoningDetailsStore,\n  createOpenGatewayReasoningDetailsStoreMemo,\n  type OpenGatewayReasoningDetailsStore,\n} from \"./reasoning-roundtrip-store\";\n\nexport interface OpenGatewayReasoningRoundtripMiddlewareSettings {\n  reasoningDetailsStore?: OpenGatewayReasoningDetailsStore;\n}\n\nexport function createOpenGatewayReasoningRoundtripMiddleware(\n  settings: OpenGatewayReasoningRoundtripMiddlewareSettings = {}\n): LanguageModelMiddleware {\n  if (consumeGenuinePromise(settings)) {\n    throw new TypeError(\"reasoning roundtrip settings must be synchronous\");\n  }\n  if (typeof settings !== \"object\" || settings === null) {\n    throw new TypeError(\"reasoning roundtrip settings must be an object\");\n  }\n  consumeOwnDataPromiseFields(settings, [\"reasoningDetailsStore\"]);\n  const configuredStore = settings.reasoningDetailsStore;\n  if (consumeGenuinePromise(configuredStore)) {\n    throw new TypeError(\"reasoningDetailsStore must be synchronous\");\n  }\n  const reasoningDetailsStore =\n    configuredStore === undefined\n      ? createOpenGatewayReasoningDetailsStore()\n      : configuredStore;\n  const capturedReasoningDetailsStore = captureOpenGatewayReasoningDetailsStore(\n    reasoningDetailsStore\n  );\n  return {\n    specificationVersion: \"v4\",\n    async transformParams(options) {\n      const { params } = captureMiddlewareHookArgs(options) as {\n        params: Parameters<\n          NonNullable<LanguageModelMiddleware[\"transformParams\"]>\n        >[0][\"params\"];\n      };\n      const inputReasoningDetailsStore =\n        createOpenGatewayReasoningDetailsStoreMemo(\n          capturedReasoningDetailsStore\n        );\n      return {\n        ...params,\n        prompt: await withReasoningDetailsOnPrompt(\n          params.prompt,\n          inputReasoningDetailsStore\n        ),\n      };\n    },\n    async wrapGenerate(options) {\n      const { doGenerate } = captureMiddlewareHookArgs(options) as {\n        doGenerate: Parameters<\n          NonNullable<LanguageModelMiddleware[\"wrapGenerate\"]>\n        >[0][\"doGenerate\"];\n      };\n      if (typeof doGenerate !== \"function\") {\n        throw new TypeError(\n          \"reasoning middleware doGenerate must be a function\"\n        );\n      }\n      const result = snapshotMiddlewareResult(\n        await doGenerate(),\n        \"reasoning generate result\"\n      );\n      const response =\n        result.response === undefined\n          ? undefined\n          : snapshotMiddlewareResult(\n              result.response,\n              \"reasoning generate response\"\n            );\n      const reasoningDetails = collectChoiceReasoningDetails(response?.body);\n      const outputReasoningDetailsStore =\n        createOpenGatewayReasoningDetailsStoreMemo(\n          capturedReasoningDetailsStore\n        );\n      return {\n        ...result,\n        content: await withReasoningDetailsOnContent(\n          result.content as never,\n          reasoningDetails,\n          outputReasoningDetailsStore\n        ),\n      } as Awaited<ReturnType<typeof doGenerate>>;\n    },\n    async wrapStream(options) {\n      const { model, params } = captureMiddlewareHookArgs(options) as {\n        model: Parameters<\n          NonNullable<LanguageModelMiddleware[\"wrapStream\"]>\n        >[0][\"model\"];\n        params: Parameters<\n          NonNullable<LanguageModelMiddleware[\"wrapStream\"]>\n        >[0][\"params\"];\n      };\n      if (typeof model !== \"object\" || model === null) {\n        throw new TypeError(\"reasoning middleware model must be an object\");\n      }\n      consumeOwnDataPromiseFields(model, [\"doStream\"]);\n      const doStream = Reflect.get(model, \"doStream\");\n      if (consumeGenuinePromise(doStream) || typeof doStream !== \"function\") {\n        throw new TypeError(\n          \"reasoning middleware model.doStream must be a function\"\n        );\n      }\n      const capturedParams = snapshotReasoningRequestBody(params);\n      const includeRawChunks = capturedParams.includeRawChunks === true;\n      const result = snapshotMiddlewareResult(\n        await Reflect.apply(doStream, model, [\n          {\n            ...capturedParams,\n            includeRawChunks: true,\n          },\n        ]),\n        \"reasoning stream result\"\n      );\n      const stream = result.stream;\n      if (typeof stream !== \"object\" || stream === null) {\n        throw new TypeError(\"reasoning stream result.stream must be an object\");\n      }\n      consumeOwnDataPromiseFields(stream, [\"pipeThrough\"]);\n      const pipeThrough = Reflect.get(stream, \"pipeThrough\");\n      if (\n        consumeGenuinePromise(pipeThrough) ||\n        typeof pipeThrough !== \"function\"\n      ) {\n        throw new TypeError(\n          \"reasoning stream result.stream.pipeThrough must be a function\"\n        );\n      }\n      const reasoningDetails: JSONValue[] = [];\n      const outputReasoningDetailsStore =\n        createOpenGatewayReasoningDetailsStoreMemo(\n          capturedReasoningDetailsStore\n        );\n      let carriedReasoningDetailsCount = 0;\n      let pendingToolCall: LanguageModelV4StreamPart | undefined;\n\n      const enqueuePendingToolCall = async (\n        controller: TransformStreamDefaultController<LanguageModelV4StreamPart>\n      ) => {\n        if (pendingToolCall === undefined) {\n          return;\n        }\n\n        const uncarriedReasoningDetails = detailsSince(\n          reasoningDetails,\n          carriedReasoningDetailsCount\n        );\n        carriedReasoningDetailsCount = reasoningDetails.length;\n        controller.enqueue(\n          await withReasoningPartMetadata(\n            pendingToolCall,\n            uncarriedReasoningDetails,\n            outputReasoningDetailsStore\n          )\n        );\n        pendingToolCall = undefined;\n      };\n\n      let transformedStream: unknown;\n      try {\n        const transform = new TransformStream<\n          LanguageModelV4StreamPart,\n          LanguageModelV4StreamPart\n        >({\n          async transform(part, controller) {\n            const capturedPart = captureReasoningStreamPart(part);\n            if (capturedPart.type === \"raw\") {\n              appendUniqueJsonDetails(\n                reasoningDetails,\n                collectChoiceReasoningDetails(capturedPart.rawValue)\n              );\n              await enqueuePendingToolCall(controller);\n              if (includeRawChunks) {\n                controller.enqueue(capturedPart);\n              }\n              return;\n            }\n\n            if (capturedPart.type === \"tool-call\") {\n              await enqueuePendingToolCall(controller);\n              pendingToolCall = capturedPart;\n              return;\n            }\n\n            await enqueuePendingToolCall(controller);\n\n            if (isReasoningStreamPart(capturedPart)) {\n              carriedReasoningDetailsCount = reasoningDetails.length;\n              controller.enqueue(\n                await withReasoningPartMetadata(\n                  capturedPart,\n                  reasoningDetails,\n                  outputReasoningDetailsStore\n                )\n              );\n              return;\n            }\n\n            if (isTextStreamPart(capturedPart)) {\n              carriedReasoningDetailsCount = reasoningDetails.length;\n              controller.enqueue(\n                await withReasoningPartMetadata(\n                  capturedPart,\n                  reasoningDetails,\n                  outputReasoningDetailsStore\n                )\n              );\n              return;\n            }\n\n            controller.enqueue(capturedPart);\n          },\n          async flush(controller) {\n            await enqueuePendingToolCall(controller);\n          },\n        });\n        transformedStream = Reflect.apply(pipeThrough, stream, [transform]);\n      } catch (error) {\n        discardReasoningStream(stream);\n        throw error;\n      }\n      if (\n        consumeGenuinePromise(transformedStream) ||\n        typeof transformedStream !== \"object\" ||\n        transformedStream === null\n      ) {\n        discardReasoningStream(stream);\n        throw new TypeError(\n          \"reasoning stream pipeThrough must return a synchronous stream\"\n        );\n      }\n      return {\n        ...result,\n        stream: transformedStream,\n      } as Awaited<ReturnType<typeof doStream>>;\n    },\n  };\n}\n","import {\n  createOpenAICompatible,\n  type OpenAICompatibleProviderSettings,\n} from \"@ai-sdk/openai-compatible\";\nimport type { LanguageModelV4 } from \"@ai-sdk/provider\";\nimport { wrapLanguageModel } from \"ai\";\n\nimport {\n  prepareProviderSettings,\n  rejectAsyncProviderSettingValues,\n  snapshotProviderHeaders,\n  snapshotProviderQueryParams,\n  validateCommonProviderSettings,\n} from \"../provider-settings\";\nimport {\n  captureProviderConvertUsage,\n  captureProviderFetch,\n} from \"../provider-settings-fetch\";\nimport { captureProviderModelId } from \"../provider-settings-metadata\";\nimport { captureProviderSupportedUrls } from \"../provider-settings-urls\";\nimport { createOpenGatewayMetadataExtractor } from \"./metadata\";\nimport { createOpenGatewayReasoningRoundtripMiddleware } from \"./reasoning-roundtrip\";\nimport {\n  createOpenGatewayReasoningDetailsStore,\n  type OpenGatewayReasoningDetailsStore,\n} from \"./reasoning-roundtrip-store\";\n\nexport type { OpenGatewayReasoningDetailsStore } from \"./reasoning-roundtrip-store\";\n\nconst DEFAULT_BASE_URL = \"https://apis.opengateway.ai/v1\";\n\nexport interface CreateOpenGatewaySettings\n  extends Omit<\n    OpenAICompatibleProviderSettings,\n    \"name\" | \"baseURL\" | \"transformRequestBody\"\n  > {\n  /** OpenGateway API key. Defaults to `process.env.OPENGATEWAY_API_KEY`. */\n  apiKey?: string;\n  /** Override the base URL. Defaults to the OpenGateway v1 endpoint. */\n  baseURL?: string;\n  reasoningDetailsRefMaxEntries?: number;\n  reasoningDetailsRefTtlMs?: number;\n  reasoningDetailsStore?: OpenGatewayReasoningDetailsStore;\n}\n\n/**\n * OpenGateway provider built on `@ai-sdk/openai-compatible`.\n *\n * OpenGateway accepts OpenAI-compatible Chat Completions requests and routes\n * `owner/model` IDs such as `openai/gpt-4o-mini` or `google/gemini-2.5-pro`.\n * The plain AI SDK `reasoning` option is passed through as `reasoning_effort`.\n * `reasoning: 'none'` is left to the AI SDK default, which omits the field.\n *\n * @example\n * const opengateway = createOpenGateway();\n * await streamText({ model: opengateway('openai/gpt-4o-mini'), prompt: '...' });\n */\nexport function createOpenGateway(\n  settings: CreateOpenGatewaySettings = {}\n): (modelId: string) => LanguageModelV4 {\n  prepareProviderSettings(settings, \"OpenGateway\", [\n    \"reasoningDetailsRefMaxEntries\",\n    \"reasoningDetailsRefTtlMs\",\n    \"reasoningDetailsStore\",\n  ]);\n  const captured = {\n    apiKey: settings.apiKey,\n    baseURL: settings.baseURL,\n    convertUsage: settings.convertUsage,\n    fetch: settings.fetch,\n    headers: settings.headers,\n    includeUsage: settings.includeUsage,\n    metadataExtractor: settings.metadataExtractor,\n    queryParams: settings.queryParams,\n    reasoningDetailsRefMaxEntries: settings.reasoningDetailsRefMaxEntries,\n    reasoningDetailsRefTtlMs: settings.reasoningDetailsRefTtlMs,\n    reasoningDetailsStore: settings.reasoningDetailsStore,\n    supportedUrls: settings.supportedUrls,\n    supportsStructuredOutputs: settings.supportsStructuredOutputs,\n  };\n  rejectAsyncProviderSettingValues(Object.values(captured), \"OpenGateway\");\n  validateCommonProviderSettings(captured, \"OpenGateway\");\n  const convertUsage = captureProviderConvertUsage(\n    captured.convertUsage,\n    \"OpenGateway\",\n    settings\n  );\n  const fetch = captureProviderFetch(captured.fetch, \"OpenGateway\", settings);\n  const headers = snapshotProviderHeaders(captured.headers, \"OpenGateway\");\n  const queryParams = snapshotProviderQueryParams(\n    captured.queryParams,\n    \"OpenGateway\"\n  );\n  const supportedUrls = captureProviderSupportedUrls(\n    captured.supportedUrls,\n    \"OpenGateway\",\n    settings\n  );\n  const provider = createOpenAICompatible({\n    convertUsage,\n    fetch,\n    headers,\n    includeUsage: captured.includeUsage,\n    queryParams,\n    supportedUrls,\n    supportsStructuredOutputs: captured.supportsStructuredOutputs,\n    name: \"opengateway\",\n    baseURL: captured.baseURL ?? DEFAULT_BASE_URL,\n    apiKey: captured.apiKey ?? process.env.OPENGATEWAY_API_KEY,\n    metadataExtractor: createOpenGatewayMetadataExtractor(\n      captured.metadataExtractor\n    ),\n  });\n  const resolvedReasoningDetailsStore =\n    captured.reasoningDetailsStore ??\n    createOpenGatewayReasoningDetailsStore({\n      maxEntries: captured.reasoningDetailsRefMaxEntries,\n      ttlMs: captured.reasoningDetailsRefTtlMs,\n    });\n  const reasoningRoundtripMiddleware =\n    createOpenGatewayReasoningRoundtripMiddleware({\n      reasoningDetailsStore: resolvedReasoningDetailsStore,\n    });\n  return (modelId: string) =>\n    wrapLanguageModel({\n      model: provider(captureProviderModelId(modelId, \"OpenGateway\")),\n      middleware: reasoningRoundtripMiddleware,\n    });\n}\n"]}