{"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/reasoning.ts","../src/provider/wafer/reasoning.ts","../src/provider/wafer/zdr.ts","../src/provider/wafer/wafer.ts"],"names":["isJSONObject","provider","createOpenAICompatible","wrapLanguageModel","extractReasoningMiddleware"],"mappings":"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","file":"wafer.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 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 {\n  createReasoningTransform,\n  reasoningMiddleware,\n  snapshotReasoningRequestBody,\n} from \"../../core/reasoning\";\nimport { consumeGenuinePromise } from \"../../core/runtime-types\";\n\nexport type PreserveReasoning = boolean | \"auto\";\n\nconst AUTO_PRESERVE_REASONING_MODELS = new Set([\"glm-5.1\", \"kimi-k2.6\"]);\n\n/**\n * Wafer reasoning dialect.\n *\n * Wafer natively accepts a granular `reasoning_effort` (`none | low | medium |\n * high | max`), so — unlike the binary friendli/openrouter dialects — an\n * explicit level is forwarded verbatim instead of being collapsed to on/off:\n *  - a level string (e.g. `'high'`, or `'max'` via providerOptions)\n *      -> `reasoning_effort: <level>`\n *  - reasoning on without a level (`reasoning_effort: true`)\n *      -> `thinking: { type: 'enabled' }`\n *  - reasoning off (`'none'` / `false`)\n *      -> `thinking: { type: 'disabled' }`\n *\n * (`max` is Wafer-specific and not in the AI SDK's level set, so it is reachable\n * via `providerOptions.wafer.reasoningEffort: 'max'`.)\n */\nexport const waferReasoningTransform = createReasoningTransform(\n  (body, enabled, effort) => {\n    // Enabled with an explicit level -> forward the granular effort natively.\n    // (`effort` is never `'none'` here: that classifies as disabled.)\n    if (enabled && typeof effort === \"string\") {\n      const waferEffort = toWaferReasoningEffort(effort);\n      if (waferEffort != null) {\n        body.reasoning_effort = waferEffort;\n        return;\n      }\n      body.thinking = {\n        ...getThinkingObject(body.thinking),\n        type: \"enabled\",\n      };\n      return;\n    }\n    // On-without-level or off -> Wafer's boolean-style `thinking` toggle.\n    body.thinking = {\n      ...getThinkingObject(body.thinking),\n      type: enabled ? \"enabled\" : \"disabled\",\n    };\n  }\n);\n\nexport function createWaferRequestTransform(\n  preserveReasoning: PreserveReasoning = false\n): (args: Record<string, unknown>) => Record<string, unknown> {\n  if (consumeGenuinePromise(preserveReasoning)) {\n    throw new TypeError(\"preserveReasoning must be synchronous\");\n  }\n  return (args: Record<string, unknown>): Record<string, unknown> => {\n    const captured = snapshotReasoningRequestBody(args);\n    const requestedPreserveReasoning =\n      parsePreserveReasoning(captured.preserveReasoning) ?? preserveReasoning;\n    const bodyWithoutAlias = snapshotReasoningRequestBody(captured, [\n      \"preserveReasoning\",\n    ]);\n    const body = waferReasoningTransform(bodyWithoutAlias);\n\n    if (!shouldPreserveReasoning(body, requestedPreserveReasoning)) {\n      return body;\n    }\n\n    return {\n      ...body,\n      preserve_thinking: true,\n      thinking: {\n        ...getThinkingObject(body.thinking),\n        type: \"enabled\",\n        keep: \"all\",\n      },\n    };\n  };\n}\n\n/**\n * Keeps a call-level `reasoning` option (including `'none'`) alive down to\n * {@link waferReasoningTransform}.\n */\nexport const waferReasoningMiddleware = reasoningMiddleware(\"wafer\");\n\nfunction shouldPreserveReasoning(\n  body: Record<string, unknown>,\n  preserveReasoning: PreserveReasoning\n): boolean {\n  if (!isReasoningEnabled(body)) {\n    return false;\n  }\n\n  if (preserveReasoning === true) {\n    return true;\n  }\n\n  if (preserveReasoning === \"auto\") {\n    return isAutoPreserveReasoningModel(body.model);\n  }\n\n  return false;\n}\n\nfunction isReasoningEnabled(body: Record<string, unknown>): boolean {\n  const thinking = getThinkingObject(body.thinking);\n\n  if (thinking?.type === \"disabled\") {\n    return false;\n  }\n\n  if (body.reasoning_effort === \"none\" || body.reasoning_effort === false) {\n    return false;\n  }\n\n  if (body.reasoning_effort != null) {\n    return true;\n  }\n\n  if (thinking?.type === \"enabled\") {\n    return true;\n  }\n\n  return body.enable_thinking === true;\n}\n\nfunction isAutoPreserveReasoningModel(model: unknown): boolean {\n  return (\n    typeof model === \"string\" &&\n    AUTO_PRESERVE_REASONING_MODELS.has(model.toLowerCase())\n  );\n}\n\nfunction parsePreserveReasoning(value: unknown): PreserveReasoning | undefined {\n  if (value === true || value === false || value === \"auto\") {\n    return value;\n  }\n\n  return;\n}\n\nfunction getThinkingObject(\n  value: unknown\n): Record<string, unknown> | undefined {\n  if (!isRecord(value)) {\n    return;\n  }\n\n  return value;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return value != null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction toWaferReasoningEffort(\n  effort: string\n): \"low\" | \"medium\" | \"high\" | \"max\" | undefined {\n  switch (effort) {\n    case \"minimal\":\n    case \"low\":\n      return \"low\";\n    case \"medium\":\n      return \"medium\";\n    case \"high\":\n      return \"high\";\n    case \"max\":\n    case \"xhigh\":\n      return \"max\";\n    default:\n      return;\n  }\n}\n","import { boundedEnumerableOwnKeys } from \"../../core/http-headers\";\nimport {\n  consumeGenuinePromise,\n  consumeOwnDataPromiseFields,\n  requireGenuinePromise,\n} from \"../../core/runtime-types\";\n\nexport const ZDR_HEADER = \"Wafer-ZDR\";\nconst MAX_ZDR_HEADERS = 1024;\nconst REQUEST_INIT_KEYS = [\n  \"body\",\n  \"cache\",\n  \"credentials\",\n  \"headers\",\n  \"integrity\",\n  \"keepalive\",\n  \"method\",\n  \"mode\",\n  \"priority\",\n  \"redirect\",\n  \"referrer\",\n  \"referrerPolicy\",\n  \"signal\",\n  \"window\",\n] as const;\n\nexport function createZdrFetch(\n  fetch: typeof globalThis.fetch | undefined\n): typeof globalThis.fetch {\n  const baseFetch = fetch ?? ((input, init) => globalThis.fetch(input, init));\n  return (input, init) => {\n    if (consumeGenuinePromise(input)) {\n      throw new TypeError(\"Wafer fetch input must be synchronous\");\n    }\n    const capturedInit = snapshotRequestInit(init);\n    if (preconsumeHeadersInit(capturedInit.headers)) {\n      throw new TypeError(\"Wafer header values must be synchronous\");\n    }\n    const requestHeaders = new Headers(capturedInit.headers);\n    requestHeaders.set(ZDR_HEADER, \"required\");\n    return requireGenuinePromise<Response>(\n      baseFetch(input, { ...capturedInit, headers: requestHeaders }),\n      (cause) =>\n        new TypeError(\"Wafer fetch must return a genuine Promise\", { cause })\n    );\n  };\n}\n\nfunction snapshotRequestInit(value: RequestInit | undefined): RequestInit {\n  if (value === undefined) {\n    return {};\n  }\n  if (consumeGenuinePromise(value)) {\n    throw new TypeError(\"Wafer RequestInit must be synchronous\");\n  }\n  if (typeof value !== \"object\" || value === null) {\n    throw new TypeError(\"Wafer RequestInit must be an object\");\n  }\n  consumeOwnDataPromiseFields(value, REQUEST_INIT_KEYS);\n  const headersDescriptor = Object.getOwnPropertyDescriptor(value, \"headers\");\n  let asyncHeaders = false;\n  if (headersDescriptor !== undefined && \"value\" in headersDescriptor) {\n    asyncHeaders = preconsumeHeadersInit(\n      headersDescriptor.value as HeadersInit | undefined\n    );\n  }\n  const snapshot: Record<string, unknown> = {};\n  let asyncField = false;\n  for (const key of REQUEST_INIT_KEYS) {\n    const field = Reflect.get(value, key);\n    if (consumeGenuinePromise(field)) {\n      asyncField = true;\n    }\n    if (key === \"headers\" && !consumeGenuinePromise(field)) {\n      asyncHeaders =\n        preconsumeHeadersInit(field as HeadersInit | undefined) || asyncHeaders;\n    }\n    if (field !== undefined) {\n      snapshot[key] = field;\n    }\n  }\n  if (asyncField) {\n    throw new TypeError(\"Wafer RequestInit fields must be synchronous\");\n  }\n  if (asyncHeaders) {\n    throw new TypeError(\"Wafer header values must be synchronous\");\n  }\n  return snapshot as RequestInit;\n}\n\nfunction preconsumeHeadersInit(value: HeadersInit | undefined): boolean {\n  if (value === undefined) {\n    return false;\n  }\n  if (consumeGenuinePromise(value)) {\n    return true;\n  }\n  if (Array.isArray(value)) {\n    return preconsumeTupleHeaders(value);\n  }\n  if (typeof value !== \"object\" || value === null || value instanceof Headers) {\n    return false;\n  }\n  return preconsumeRecordHeaders(value);\n}\n\nfunction preconsumeTupleHeaders(value: unknown[]): boolean {\n  const length = Reflect.get(value, \"length\");\n  if (\n    typeof length !== \"number\" ||\n    !Number.isSafeInteger(length) ||\n    length < 0 ||\n    length > MAX_ZDR_HEADERS\n  ) {\n    throw new TypeError(\n      `Wafer headers must contain at most ${MAX_ZDR_HEADERS} entries`\n    );\n  }\n  const indexes = Array.from({ length }, (_, index) => index);\n  consumeOwnDataPromiseFields(value, indexes);\n  let asyncHeader = false;\n  for (const index of indexes) {\n    const entry = Reflect.get(value, index);\n    if (consumeGenuinePromise(entry)) {\n      asyncHeader = true;\n      continue;\n    }\n    if (Array.isArray(entry)) {\n      consumeOwnDataPromiseFields(entry, [0, 1]);\n      const name = Reflect.get(entry, 0);\n      const item = Reflect.get(entry, 1);\n      const asyncName = consumeGenuinePromise(name);\n      const asyncItem = consumeGenuinePromise(item);\n      if (asyncName || asyncItem) {\n        asyncHeader = true;\n      }\n    }\n  }\n  return asyncHeader;\n}\n\nfunction preconsumeRecordHeaders(value: object): boolean {\n  const keys = boundedEnumerableOwnKeys(value, MAX_ZDR_HEADERS);\n  if (keys === undefined) {\n    throw new TypeError(\n      `Wafer headers must contain at most ${MAX_ZDR_HEADERS} entries`\n    );\n  }\n  consumeOwnDataPromiseFields(value, keys);\n  let asyncHeader = false;\n  for (const key of keys) {\n    if (consumeGenuinePromise(Reflect.get(value, key))) {\n      asyncHeader = true;\n    }\n  }\n  return asyncHeader;\n}\n","import {\n  createOpenAICompatible,\n  type OpenAICompatibleProviderSettings,\n} from \"@ai-sdk/openai-compatible\";\nimport type { LanguageModelV4 } from \"@ai-sdk/provider\";\nimport { extractReasoningMiddleware, wrapLanguageModel } from \"ai\";\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 {\n  captureProviderMetadataExtractor,\n  captureProviderModelId,\n} from \"../provider-settings-metadata\";\nimport { captureProviderSupportedUrls } from \"../provider-settings-urls\";\nimport type { PreserveReasoning } from \"./reasoning\";\nimport {\n  createWaferRequestTransform,\n  waferReasoningMiddleware,\n} from \"./reasoning\";\nimport { createZdrFetch, ZDR_HEADER } from \"./zdr\";\n\nexport type { PreserveReasoning } from \"./reasoning\";\n\nconst DEFAULT_BASE_URL = \"https://pass.wafer.ai/v1\";\n\nexport interface CreateWaferSettings\n  extends Omit<\n    OpenAICompatibleProviderSettings,\n    \"name\" | \"baseURL\" | \"transformRequestBody\"\n  > {\n  /** Wafer API key. Defaults to `process.env.WAFER_API_KEY`. */\n  apiKey?: string;\n  /** Override the base URL. Defaults to the Wafer Pass v1 endpoint. */\n  baseURL?: string;\n  /**\n   * Preserve prior `reasoning_content` across later turns by sending Wafer's\n   * preserved-reasoning fields alongside enabled reasoning.\n   *\n   * - `false` (default): do not add preserved-reasoning fields.\n   * - `\"auto\"`: add them only for Wafer's documented preserved-reasoning models\n   *   (`GLM-5.1`, `Kimi-K2.6`).\n   * - `true`: force them for every Wafer model, useful for probing newly-added\n   *   models or undocumented support.\n   */\n  preserveReasoning?: PreserveReasoning;\n  /**\n   * Request Zero Data Retention. When `true`, every request carries\n   * `Wafer-ZDR: required`, telling Wafer to reject the request unless it can\n   * guarantee prompts and completions are never written to durable storage.\n   *\n   * Off by default: the `required` value fails the request closed if the\n   * account/plan is not ZDR-entitled, so it is opt-in rather than always-on.\n   * Wafer bills per token with no documented ZDR surcharge, so enabling it does\n   * not change request cost on an entitled account.\n   */\n  zdr?: boolean;\n}\n\n/**\n * Wafer provider built on `@ai-sdk/openai-compatible`.\n *\n * Wafer accepts a granular `reasoning_effort`, so the `reasoning` option keeps\n * its level instead of collapsing to on/off:\n *  - `reasoning: 'low' | 'medium' | 'high'` -> `reasoning_effort: <level>`\n *  - `reasoning: 'none'`                     -> `thinking.type: 'disabled'`\n *  - Wafer's extra `'max'` level (not in the AI SDK set) is reachable via\n *    `providerOptions.wafer.reasoningEffort: 'max'`.\n *\n * Preserved reasoning across turns is separate from producing reasoning inside a\n * response. Use `preserveReasoning: \"auto\"` to ask Wafer to re-inline prior\n * `reasoning_content` only for documented models, or `true` to force the same\n * fields for every model.\n *\n * `MiniMax-M3` returns reasoning inline as `<think>…</think>` rather than in a\n * `reasoning_content` field; it is extracted into a reasoning part automatically.\n *\n * @example\n * const wafer = createWafer();\n * await streamText({ model: wafer('GLM-5.1'), reasoning: 'high', prompt: '...' });\n *\n * @example\n * // Preserve prior reasoning_content for Wafer's documented supported models.\n * const wafer = createWafer({ preserveReasoning: \"auto\" });\n *\n * @example\n * // Opt into Zero Data Retention (sends `Wafer-ZDR: required`).\n * const wafer = createWafer({ zdr: true });\n */\nexport function createWafer(\n  settings: CreateWaferSettings = {}\n): (modelId: string) => LanguageModelV4 {\n  prepareProviderSettings(settings, \"Wafer\", [\"preserveReasoning\", \"zdr\"]);\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    preserveReasoning: settings.preserveReasoning,\n    queryParams: settings.queryParams,\n    supportedUrls: settings.supportedUrls,\n    supportsStructuredOutputs: settings.supportsStructuredOutputs,\n    zdr: settings.zdr,\n  };\n  rejectAsyncProviderSettingValues(Object.values(captured), \"Wafer\");\n  validateCommonProviderSettings(captured, \"Wafer\");\n  const metadataExtractor = captureProviderMetadataExtractor(\n    captured.metadataExtractor,\n    \"Wafer\"\n  );\n  const convertUsage = captureProviderConvertUsage(\n    captured.convertUsage,\n    \"Wafer\",\n    settings\n  );\n  const fetch = captureProviderFetch(captured.fetch, \"Wafer\", settings);\n  if (\n    captured.preserveReasoning !== undefined &&\n    captured.preserveReasoning !== false &&\n    captured.preserveReasoning !== true &&\n    captured.preserveReasoning !== \"auto\"\n  ) {\n    throw new TypeError(\n      'Wafer preserveReasoning must be false, true, or \"auto\"'\n    );\n  }\n  if (captured.zdr !== undefined && typeof captured.zdr !== \"boolean\") {\n    throw new TypeError(\"Wafer zdr must be a boolean\");\n  }\n  const headers = snapshotProviderHeaders(captured.headers, \"Wafer\");\n  const queryParams = snapshotProviderQueryParams(\n    captured.queryParams,\n    \"Wafer\"\n  );\n  const supportedUrls = captureProviderSupportedUrls(\n    captured.supportedUrls,\n    \"Wafer\",\n    settings\n  );\n  const provider = createOpenAICompatible({\n    convertUsage,\n    includeUsage: captured.includeUsage,\n    metadataExtractor,\n    queryParams,\n    supportedUrls,\n    supportsStructuredOutputs: captured.supportsStructuredOutputs,\n    name: \"wafer\",\n    baseURL: captured.baseURL ?? DEFAULT_BASE_URL,\n    apiKey: captured.apiKey ?? process.env.WAFER_API_KEY,\n    headers: captured.zdr ? { ...headers, [ZDR_HEADER]: \"required\" } : headers,\n    fetch: captured.zdr ? createZdrFetch(fetch) : fetch,\n    transformRequestBody: createWaferRequestTransform(\n      captured.preserveReasoning\n    ),\n  });\n  return (modelId: string) =>\n    wrapLanguageModel({\n      model: provider(captureProviderModelId(modelId, \"Wafer\")),\n      middleware: [\n        // Wrap each model so a top-level `reasoning: 'none'` survives down to the\n        // body (the AI SDK otherwise drops it before `transformRequestBody` runs).\n        waferReasoningMiddleware,\n        // Most reasoning models return reasoning in a separate `reasoning_content`\n        // field (handled by the base layer), but `MiniMax-M3` instead returns it\n        // inline in `content` as `<think>…</think>`. Surface that as reasoning. A\n        // no-op for the others — without a `<think>` tag the text passes through.\n        extractReasoningMiddleware({ tagName: \"think\" }),\n      ],\n    });\n}\n"]}