{"version":3,"sources":["../src/index.ts","../src/voyage-provider.ts","../src/voyage-embedding-model.ts","../src/voyage-embedding-settings.ts","../src/voyage-error.ts","../src/voyage-multimodal-embedding-model.ts","../src/voyage-multimodal-embedding-settings.ts","../src/reranking/voyage-reranking-model.ts","../src/reranking/voyage-reranking-api.ts","../src/reranking/voyage-reranking-options.ts"],"sourcesContent":["export { createVoyage, voyage } from './voyage-provider';\nexport type { VoyageEmbeddingOptions } from './voyage-embedding-settings';\nexport type {\n  VoyageMultimodalEmbeddingOptions,\n  VoyageMultimodalContentPart,\n} from './voyage-multimodal-embedding-settings';\nexport type { VoyageRerankingOptions } from './reranking/voyage-reranking-options';\nexport type { VoyageProvider, VoyageProviderSettings } from './voyage-provider';\nexport type { MultimodalEmbeddingModel } from './voyage-multimodal-embedding-model';\n","import type {\n  EmbeddingModelV3,\n  ImageModelV3,\n  LanguageModelV3,\n  ProviderV3,\n  RerankingModelV3,\n} from '@ai-sdk/provider';\nimport {\n  type FetchFunction,\n  loadApiKey,\n  withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { VoyageEmbeddingModel } from './voyage-embedding-model';\nimport type { VoyageEmbeddingModelId } from './voyage-embedding-settings';\nimport type { VoyageMultimodalEmbeddingModelId } from './voyage-multimodal-embedding-settings';\nimport { MultimodalEmbeddingModel } from './voyage-multimodal-embedding-model';\nimport type { VoyageRerankingModelId } from './reranking/voyage-reranking-options';\nimport { VoyageRerankingModel } from './reranking/voyage-reranking-model';\n\nexport interface VoyageProvider extends ProviderV3 {\n  (modelId: VoyageEmbeddingModelId): EmbeddingModelV3;\n\n  embeddingModel: (modelId: VoyageEmbeddingModelId) => EmbeddingModelV3;\n\n  /**\n   * @deprecated Use `embeddingModel` instead. `textEmbeddingModel` is kept for\n   * backwards compatibility and points to the same implementation.\n   */\n  textEmbeddingModel: (modelId: VoyageEmbeddingModelId) => EmbeddingModelV3;\n\n  /**\n   * Multimodal (text and/or image) embeddings.\n   *\n   * Voyage exposes a single multimodal endpoint, so `imageEmbeddingModel` and\n   * `multimodalEmbeddingModel` are equivalent. Pass text in `values` and images\n   * via `providerOptions.voyage.content`.\n   */\n  multimodalEmbeddingModel: (\n    modelId: VoyageMultimodalEmbeddingModelId,\n  ) => EmbeddingModelV3;\n\n  /**\n   * Alias for {@link VoyageProvider.multimodalEmbeddingModel} — both use the\n   * `voyage-multimodal-3` model and the same multimodal endpoint.\n   */\n  imageEmbeddingModel: (\n    modelId: VoyageMultimodalEmbeddingModelId,\n  ) => EmbeddingModelV3;\n\n  reranking: (modelId: VoyageRerankingModelId) => RerankingModelV3;\n\n  rerankingModel: (modelId: VoyageRerankingModelId) => RerankingModelV3;\n}\n\nexport interface VoyageProviderSettings {\n  /**\n   * Use a different URL prefix for API calls, e.g. to use proxy servers.\n   * The default prefix is `https://api.voyageai.com/v1`.\n   *\n   * @see https://docs.voyageai.com/reference\n   */\n  baseURL?: string;\n\n  /**\n  API key that is being send using the `Authorization` header.\n  It defaults to the `VOYAGE_API_KEY` environment variable.\n     */\n  apiKey?: string;\n\n  /**\n  Custom headers to include in the requests.\n       */\n  headers?: Record<string, string>;\n\n  /**\n  Custom fetch implementation. You can use it as a middleware to intercept requests,\n  or to provide a custom fetch implementation for e.g. testing.\n      */\n  fetch?: FetchFunction;\n}\n\n/**\n  Create a Voyage AI provider instance.\n   */\nexport function createVoyage(\n  options: VoyageProviderSettings = {},\n): VoyageProvider {\n  const baseURL =\n    withoutTrailingSlash(options.baseURL) ?? 'https://api.voyageai.com/v1';\n\n  const getHeaders = () => ({\n    Authorization: `Bearer ${loadApiKey({\n      apiKey: options.apiKey,\n      environmentVariableName: 'VOYAGE_API_KEY',\n      description: 'Voyage',\n    })}`,\n    ...options.headers,\n  });\n\n  const createEmbeddingModel = (modelId: VoyageEmbeddingModelId) =>\n    new VoyageEmbeddingModel(modelId, {\n      provider: 'voyage.embedding',\n      baseURL,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const createMultimodalEmbeddingModel = (\n    modelId: VoyageMultimodalEmbeddingModelId,\n  ) =>\n    new MultimodalEmbeddingModel(modelId, {\n      provider: 'voyage.multimodal.embedding',\n      baseURL,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const createRerankingModel = (modelId: VoyageRerankingModelId) =>\n    new VoyageRerankingModel(modelId, {\n      provider: 'voyage.reranking',\n      baseURL,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const provider = function (modelId: VoyageEmbeddingModelId) {\n    if (new.target) {\n      throw new Error(\n        'The Voyage model function cannot be called with the new keyword.',\n      );\n    }\n\n    return createEmbeddingModel(modelId);\n  };\n\n  provider.embeddingModel = createEmbeddingModel;\n  provider.textEmbeddingModel = createEmbeddingModel;\n  provider.multimodalEmbeddingModel = createMultimodalEmbeddingModel;\n  provider.imageEmbeddingModel = createMultimodalEmbeddingModel;\n\n  provider.chat = provider.languageModel = (): LanguageModelV3 => {\n    throw new Error('languageModel method is not implemented.');\n  };\n  provider.imageModel = (): ImageModelV3 => {\n    throw new Error('imageModel method is not implemented.');\n  };\n\n  provider.reranking = createRerankingModel;\n  provider.rerankingModel = createRerankingModel;\n\n  return provider as unknown as VoyageProvider;\n}\n\n/**\n  Default Voyage provider instance.\n   */\nexport const voyage = createVoyage();\n","import {\n  type EmbeddingModelV3,\n  TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createJsonResponseHandler,\n  type FetchFunction,\n  parseProviderOptions,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nimport {\n  voyageEmbeddingOptions,\n  type VoyageEmbeddingModelId,\n} from '@/voyage-embedding-settings';\nimport { voyageFailedResponseHandler } from '@/voyage-error';\n\ntype VoyageEmbeddingConfig = {\n  provider: string;\n  baseURL: string;\n  headers: () => Record<string, string | undefined>;\n  fetch?: FetchFunction;\n};\n\nexport class VoyageEmbeddingModel implements EmbeddingModelV3 {\n  readonly specificationVersion = 'v3';\n  readonly modelId: VoyageEmbeddingModelId;\n\n  private readonly config: VoyageEmbeddingConfig;\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  get maxEmbeddingsPerCall(): number {\n    return 128;\n  }\n\n  get supportsParallelCalls(): boolean {\n    return false;\n  }\n\n  constructor(modelId: VoyageEmbeddingModelId, config: VoyageEmbeddingConfig) {\n    this.modelId = modelId;\n    this.config = config;\n  }\n\n  async doEmbed({\n    abortSignal,\n    values,\n    headers,\n    providerOptions,\n  }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<\n    Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>\n  > {\n    const embeddingOptions = await parseProviderOptions({\n      provider: 'voyage',\n      providerOptions,\n      schema: voyageEmbeddingOptions,\n    });\n\n    if (values.length > this.maxEmbeddingsPerCall) {\n      throw new TooManyEmbeddingValuesForCallError({\n        maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n        modelId: this.modelId,\n        provider: this.provider,\n        values,\n      });\n    }\n\n    const {\n      responseHeaders,\n      value: response,\n      rawValue,\n    } = await postJsonToApi({\n      abortSignal,\n      body: {\n        input: values,\n        model: this.modelId,\n        input_type: embeddingOptions?.inputType,\n        truncation: embeddingOptions?.truncation,\n        output_dimension: embeddingOptions?.outputDimension,\n        output_dtype: embeddingOptions?.outputDtype,\n      },\n      failedResponseHandler: voyageFailedResponseHandler,\n      fetch: this.config.fetch,\n      headers: combineHeaders(this.config.headers(), headers),\n      successfulResponseHandler: createJsonResponseHandler(\n        voyageTextEmbeddingResponseSchema,\n      ),\n      url: `${this.config.baseURL}/embeddings`,\n    });\n\n    return {\n      embeddings: response.data.map((item) => item.embedding),\n      usage: response.usage\n        ? { tokens: response.usage.total_tokens }\n        : undefined,\n      response: { headers: responseHeaders, body: rawValue },\n      warnings: [],\n    };\n  }\n}\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst voyageTextEmbeddingResponseSchema = z.object({\n  data: z.array(z.object({ embedding: z.array(z.number()) })),\n  usage: z.object({ total_tokens: z.number() }).nullish(),\n});\n","import { z } from 'zod/v4';\n\nexport type VoyageEmbeddingModelId =\n  // Latest generation (recommended)\n  | 'voyage-4-large'\n  | 'voyage-4'\n  | 'voyage-4-lite'\n  | 'voyage-code-3'\n  | 'voyage-finance-2'\n  | 'voyage-law-2'\n  | 'voyage-code-2'\n\n  // Previous generation\n  | 'voyage-3-large'\n  | 'voyage-3.5'\n  | 'voyage-3.5-lite'\n  | 'voyage-3'\n  | 'voyage-3-lite'\n  | 'voyage-multilingual-2'\n\n  // Older models [Deprecated]\n  | 'voyage-large-2-instruct'\n  | 'voyage-large-2'\n  | 'voyage-2'\n  | 'voyage-02'\n  | 'voyage-01'\n  | 'voyage-lite-01'\n  | (string & NonNullable<unknown>);\n\nexport const voyageEmbeddingOptions = z.object({\n  /**\n   * The input type for the embeddings. Defaults to \"query\".\n   * For query, the prompt is \"Represent the query for retrieving supporting documents: \".\n   * For document, the prompt is \"Represent the document for retrieval: \".\n   */\n\n  inputType: z.enum(['query', 'document']).optional(),\n\n  // /**\n  //  * Format in which the embeddings are encoded. We support two options:\n  //  * If not specified (defaults to null): the embeddings are represented as lists of floating-point numbers;\n  //  * base64: the embeddings are compressed to base64 encodings.\n  //  */\n  // encodingFormat?: 'base64';\n\n  /**\n   * The number of dimensions for the resulting output embeddings.\n   *\n   * If not specified (defaults to null), the resulting output embeddings dimension is the default for the model.\n   * `voyage-code-3` supports the following `outputDimension` values: 2048, 1024 (default), 512, and 256.\n   * `voyage-3-large` supports the following `outputDimension` values: 2048, 1024 (default), 512, and 256.\n   *\n   * please refer to the model documentation for the supported values.\n   * https://docs.voyageai.com/docs/embeddings\n   */\n  outputDimension: z.number().optional(),\n\n  /**\n   * The data type for the resulting output embeddings.\n   *\n   * Defaults to 'float'.\n   *\n   * Other options: 'int8', 'uint8', 'binary', 'ubinary'.\n   * - 'float' is supported by all models.\n   * - 'float': Each returned embedding is a list of 32-bit (4-byte) single-precision floating-point numbers.\n   * - 'int8', 'uint8', 'binary', and 'ubinary' are supported by 'voyage-code-3'.\n   * - 'int8' and 'uint8': Each returned embedding is a list of 8-bit (1-byte) integers ranging from -128 to 127 and 0 to 255, respectively.\n   * - 'binary' and 'ubinary': Each returned embedding is a list of 8-bit integers that represent bit-packed, quantized single-bit embedding values:\n   *   'int8' for 'binary' and 'uint8' for 'ubinary'.\n   *   The length of the returned list of integers is 1/8 of outputDimension (which is the actual dimension of the embedding).\n   *   The 'binary' type uses the offset binary method.\n   *\n   * https://docs.voyageai.com/docs/faq#what-is-quantization-and-output-data-types\n   */\n  outputDtype: z\n    .enum(['float', 'int8', 'uint8', 'binary', 'ubinary'])\n    .optional(),\n\n  /**\n   *  Whether to truncate the input texts to fit within the context length.\n   */\n  truncation: z.boolean().optional(),\n});\n\nexport type VoyageEmbeddingOptions = z.infer<typeof voyageEmbeddingOptions>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst voyageErrorDataSchema = z.object({\n  error: z.object({\n    code: z.string().nullable(),\n    message: z.string(),\n    param: z.any().nullable(),\n    type: z.string(),\n  }),\n});\n\nexport type VoyageErrorData = z.infer<typeof voyageErrorDataSchema>;\n\nexport const voyageFailedResponseHandler = createJsonErrorResponseHandler({\n  errorSchema: voyageErrorDataSchema,\n  errorToMessage: (data) => data.error.message,\n});\n","import {\n  type EmbeddingModelV3,\n  TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createJsonResponseHandler,\n  type FetchFunction,\n  parseProviderOptions,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\n\nimport {\n  voyageMultimodalEmbeddingOptions,\n  type VoyageMultimodalContentPart,\n  type VoyageMultimodalEmbeddingModelId,\n} from '@/voyage-multimodal-embedding-settings';\nimport { voyageFailedResponseHandler } from '@/voyage-error';\nimport { z } from 'zod/v4';\n\ntype VoyageEmbeddingConfig = {\n  baseURL: string;\n  fetch?: FetchFunction;\n  headers: () => Record<string, string | undefined>;\n  provider: string;\n};\n\n// API-compatible input for the Voyage multimodal embeddings endpoint.\n// https://docs.voyageai.com/reference/multimodal-embeddings-api\ntype VoyageMultimodalInput = {\n  content: VoyageMultimodalContentPart[];\n};\n\nexport class MultimodalEmbeddingModel implements EmbeddingModelV3 {\n  readonly specificationVersion = 'v3';\n  readonly modelId: VoyageMultimodalEmbeddingModelId;\n\n  private readonly config: VoyageEmbeddingConfig;\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  get maxEmbeddingsPerCall(): number {\n    return 128;\n  }\n\n  get supportsParallelCalls(): boolean {\n    return false;\n  }\n\n  constructor(\n    modelId: VoyageMultimodalEmbeddingModelId,\n    config: VoyageEmbeddingConfig,\n  ) {\n    this.modelId = modelId;\n    this.config = config;\n  }\n\n  async doEmbed({\n    abortSignal,\n    values,\n    headers,\n    providerOptions,\n  }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<\n    Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>\n  > {\n    const embeddingOptions = await parseProviderOptions({\n      provider: 'voyage',\n      providerOptions,\n      schema: voyageMultimodalEmbeddingOptions,\n    });\n\n    if (values.length > this.maxEmbeddingsPerCall) {\n      throw new TooManyEmbeddingValuesForCallError({\n        maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n        modelId: this.modelId,\n        provider: this.provider,\n        values,\n      });\n    }\n\n    const multimodalContent = embeddingOptions?.content;\n\n    if (\n      multimodalContent != null &&\n      multimodalContent.length !== values.length\n    ) {\n      throw new Error(\n        `The number of multimodal content entries (${multimodalContent.length}) must match the number of values (${values.length}).`,\n      );\n    }\n\n    // Merge each text value with its per-index content parts (images), the\n    // same way the Google provider merges text with multimodal parts.\n    // https://docs.voyageai.com/reference/multimodal-embeddings-api\n    const inputs: VoyageMultimodalInput[] = values.map((value, index) => {\n      const valueParts = multimodalContent?.[index];\n      const textPart: VoyageMultimodalContentPart[] = value\n        ? [{ type: 'text', text: value }]\n        : [];\n      return {\n        content:\n          valueParts != null\n            ? [...textPart, ...valueParts]\n            : [{ type: 'text', text: value }],\n      };\n    });\n\n    const {\n      responseHeaders,\n      value: response,\n      rawValue,\n    } = await postJsonToApi({\n      abortSignal,\n      body: {\n        inputs,\n        model: this.modelId,\n        input_type: embeddingOptions?.inputType,\n        truncation: embeddingOptions?.truncation,\n        output_encoding: embeddingOptions?.outputEncoding,\n      },\n      failedResponseHandler: voyageFailedResponseHandler,\n      fetch: this.config.fetch,\n      headers: combineHeaders(this.config.headers(), headers),\n      successfulResponseHandler: createJsonResponseHandler(\n        voyageMultimodalEmbeddingResponseSchema,\n      ),\n      url: `${this.config.baseURL}/multimodalembeddings`,\n    });\n\n    return {\n      embeddings: response.data.map((item) => item.embedding),\n      usage: response.usage\n        ? { tokens: response.usage.total_tokens }\n        : undefined,\n      response: { headers: responseHeaders, body: rawValue },\n      warnings: [],\n    };\n  }\n}\n\nconst voyageMultimodalEmbeddingResponseSchema = z.object({\n  data: z.array(\n    z.object({\n      object: z.literal('embedding'),\n      embedding: z.array(z.number()),\n      index: z.number(),\n    }),\n  ),\n  usage: z.object({\n    text_tokens: z.number().nullish(),\n    image_pixels: z.number().nullish(),\n    total_tokens: z.number(),\n  }),\n  model: z.string(),\n});\n","import { z } from 'zod/v4';\n\nexport type VoyageMultimodalEmbeddingModelId =\n  | 'voyage-multimodal-3.5'\n  | 'voyage-multimodal-3'\n  | (string & {});\n\n/**\n * A single multimodal content part, mirroring the Voyage multimodal\n * embeddings API content items.\n *\n * https://docs.voyageai.com/reference/multimodal-embeddings-api\n */\nconst voyageMultimodalContentPart = z.union([\n  z.object({ type: z.literal('text'), text: z.string() }),\n  z.object({ type: z.literal('image_url'), image_url: z.string() }),\n  z.object({ type: z.literal('image_base64'), image_base64: z.string() }),\n]);\n\nexport type VoyageMultimodalContentPart = z.infer<\n  typeof voyageMultimodalContentPart\n>;\n\nexport const voyageMultimodalEmbeddingOptions = z.object({\n  /**\n   * Type of the input.\n   * Defaults to \"query\".\n   *\n   * When input_type is specified as \"query\" or \"document\", Voyage automatically prepends a prompt\n   * to your inputs before vectorize them, creating vectors more tailored for retrieval/search tasks.\n   *\n   * For retrieval/search purposes where a query is used to search through documents, we recommend\n   * specifying whether your inputs are queries or documents. Since inputs can be multimodal,\n   * \"queries\" and \"documents\" can be text, images, or an interleaving of both modalities.\n   *\n   * For transparency, the following prompts are prepended:\n   * - For \"query\": \"Represent the query for retrieving supporting documents: \"\n   * - For \"document\": \"Represent the document for retrieval: \"\n   */\n\n  inputType: z.enum(['query', 'document']).optional(),\n\n  /**\n   * The data type for the resulting output embeddings.\n   *\n   * Defaults to null.\n   *\n   * - If null, the embeddings are represented as a list of floating-point numbers.\n   * - If base64, the embeddings are represented as a Base64-encoded NumPy array of single-precision floats.\n   *\n   * https://docs.voyageai.com/docs/faq#what-is-quantization-and-output-data-types\n   */\n  outputEncoding: z.enum(['base64']).optional(),\n\n  /**\n   *  Whether to truncate the input texts to fit within the context length.\n   *\n   *  Defaults to true.\n   */\n  truncation: z.boolean().optional(),\n\n  /**\n   * Per-value multimodal content parts for embedding non-text content\n   * (images). Each entry corresponds to the embedding value at the same\n   * index and its parts are merged after the text value in the request.\n   * Use `null` for entries that are text-only.\n   *\n   * The array length must match the number of values being embedded.\n   *\n   * https://docs.voyageai.com/reference/multimodal-embeddings-api\n   */\n  content: z\n    .array(z.array(voyageMultimodalContentPart).min(1).nullable())\n    .optional(),\n});\n\nexport type VoyageMultimodalEmbeddingOptions = z.infer<\n  typeof voyageMultimodalEmbeddingOptions\n>;\n","import type { RerankingModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createJsonResponseHandler,\n  type FetchFunction,\n  parseProviderOptions,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { voyageFailedResponseHandler } from '@/voyage-error';\nimport {\n  type VoyageRerankingInput,\n  voyageRerankingResponseSchema,\n} from '@/reranking/voyage-reranking-api';\nimport {\n  type VoyageRerankingModelId,\n  voyageRerankingOptionsSchema,\n} from '@/reranking/voyage-reranking-options';\n\ntype VoyageRerankingConfig = {\n  provider: string;\n  baseURL: string;\n  headers: () => Record<string, string | undefined>;\n  fetch?: FetchFunction;\n};\n\nexport class VoyageRerankingModel implements RerankingModelV3 {\n  readonly specificationVersion = 'v3';\n  readonly modelId: VoyageRerankingModelId;\n\n  private readonly config: VoyageRerankingConfig;\n\n  constructor(modelId: VoyageRerankingModelId, config: VoyageRerankingConfig) {\n    this.modelId = modelId;\n    this.config = config;\n  }\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  // current implementation is based on the API:https://docs.voyageai.com/reference/reranker-api\n  async doRerank({\n    documents,\n    headers,\n    query,\n    topN,\n    abortSignal,\n    providerOptions,\n  }: Parameters<RerankingModelV3['doRerank']>[0]): Promise<\n    Awaited<ReturnType<RerankingModelV3['doRerank']>>\n  > {\n    const rerankingOptions = await parseProviderOptions({\n      provider: 'voyage',\n      providerOptions,\n      schema: voyageRerankingOptionsSchema,\n    });\n\n    const warnings: SharedV3Warning[] = [];\n\n    const {\n      responseHeaders,\n      value: response,\n      rawValue,\n    } = await postJsonToApi({\n      url: `${this.config.baseURL}/rerank`,\n      headers: combineHeaders(this.config.headers(), headers),\n      body: {\n        model: this.modelId,\n        query,\n        documents:\n          documents.type === 'text'\n            ? documents.values\n            : documents.values.map((value) => JSON.stringify(value)),\n        top_k: topN,\n        return_documents: rerankingOptions?.returnDocuments ?? false,\n        truncation: rerankingOptions?.truncation ?? true,\n      } satisfies VoyageRerankingInput,\n      failedResponseHandler: voyageFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        voyageRerankingResponseSchema,\n      ),\n      abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    return {\n      ranking: response.data.map((result) => ({\n        index: result.index,\n        relevanceScore: result.relevance_score,\n      })),\n      warnings: warnings.length > 0 ? warnings : undefined,\n      response: {\n        headers: responseHeaders,\n        body: rawValue,\n      },\n    };\n  }\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://docs.voyageai.com/reference/reranker-api\nexport type VoyageRerankingInput = {\n  model: string;\n  query: string;\n  documents: string[];\n  top_k: number | undefined;\n  return_documents: boolean;\n  truncation: boolean;\n};\n\nexport const voyageRerankingResponseSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      object: z.literal('list'),\n      data: z.array(\n        z.object({\n          relevance_score: z.number(),\n          index: z.number(),\n        }),\n      ),\n      model: z.string(),\n      usage: z.object({\n        total_tokens: z.number(),\n      }),\n    }),\n  ),\n);\n","import type { FlexibleSchema } from '@ai-sdk/provider-utils';\nimport { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://docs.voyageai.com/docs/reranker\nexport type VoyageRerankingModelId =\n  | 'rerank-2.5'\n  | 'rerank-2.5-lite'\n  | 'rerank-2'\n  | 'rerank-2-lite'\n  | 'rerank-1'\n  | 'rerank-lite-1'\n  | (string & {});\n\nexport type VoyageRerankingOptions = {\n  /**\n   * Whether to return the documents in the response. Defaults to false.\n   *\n   * If false, the API will return a list of {\"index\", \"relevance_score\"} where \"index\" refers to\n   * the index of a document within the input list.\n   * If true, the API will return a list of {\"index\", \"document\", \"relevance_score\"} where \"document\"\n   * is the corresponding document from the input list.\n   *\n   * @default false\n   */\n  returnDocuments?: boolean;\n\n  /**\n   * Whether to truncate the input to satisfy the \"context length limit\" on the query\n   * and the documents. Defaults to true.\n   *\n   * If true, the query and documents will be truncated to fit within the context length limit,\n   * before processed by the reranker model.\n   *\n   * If false, an error will be raised when the query exceeds 8,000 tokens for rerank-2.5\n   * and rerank-2.5-lite; 4,000 tokens for rerank-2; 2,000 tokens for rerank-2-lite and rerank-1;\n   * and 1,000 tokens for rerank-lite-1, or the sum of the number of tokens in the query and the\n   * number of tokens in any single document exceeds 32,000 for rerank-2.5 and rerank-2.5-lite;\n   * 16,000 for rerank-2; 8,000 for rerank-2-lite and rerank-1; and 4,000 for rerank-lite-1.\n   *\n   * @default true\n   */\n  truncation?: boolean;\n};\n\nexport const voyageRerankingOptionsSchema: FlexibleSchema<VoyageRerankingOptions> =\n  lazySchema(() =>\n    zodSchema(\n      z.object({\n        returnDocuments: z.boolean().optional(),\n        truncation: z.boolean().optional(),\n      }),\n    ),\n  );\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACOA,IAAAA,yBAIO;;;ACXP,sBAGO;AACP,IAAAC,yBAMO;AACP,IAAAC,aAAkB;;;ACXlB,gBAAkB;AA6BX,IAAM,yBAAyB,YAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO7C,WAAW,YAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBlD,iBAAiB,YAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBrC,aAAa,YACV,KAAK,CAAC,SAAS,QAAQ,SAAS,UAAU,SAAS,CAAC,EACpD,SAAS;AAAA;AAAA;AAAA;AAAA,EAKZ,YAAY,YAAE,QAAQ,EAAE,SAAS;AACnC,CAAC;;;AClFD,4BAA+C;AAC/C,IAAAC,aAAkB;AAElB,IAAM,wBAAwB,aAAE,OAAO;AAAA,EACrC,OAAO,aAAE,OAAO;AAAA,IACd,MAAM,aAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,SAAS,aAAE,OAAO;AAAA,IAClB,OAAO,aAAE,IAAI,EAAE,SAAS;AAAA,IACxB,MAAM,aAAE,OAAO;AAAA,EACjB,CAAC;AACH,CAAC;AAIM,IAAM,kCAA8B,sDAA+B;AAAA,EACxE,aAAa;AAAA,EACb,gBAAgB,CAAC,SAAS,KAAK,MAAM;AACvC,CAAC;;;AFSM,IAAM,uBAAN,MAAuD;AAAA,EACnD,uBAAuB;AAAA,EACvB;AAAA,EAEQ;AAAA,EAEjB,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,IAAI,uBAA+B;AACjC,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,wBAAiC;AACnC,WAAO;AAAA,EACT;AAAA,EAEA,YAAY,SAAiC,QAA+B;AAC1E,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,MAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAEE;AACA,UAAM,mBAAmB,UAAM,6CAAqB;AAAA,MAClD,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAED,QAAI,OAAO,SAAS,KAAK,sBAAsB;AAC7C,YAAM,IAAI,mDAAmC;AAAA,QAC3C,sBAAsB,KAAK;AAAA,QAC3B,SAAS,KAAK;AAAA,QACd,UAAU,KAAK;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH;AAEA,UAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP;AAAA,IACF,IAAI,UAAM,sCAAc;AAAA,MACtB;AAAA,MACA,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,OAAO,KAAK;AAAA,QACZ,YAAY,kBAAkB;AAAA,QAC9B,YAAY,kBAAkB;AAAA,QAC9B,kBAAkB,kBAAkB;AAAA,QACpC,cAAc,kBAAkB;AAAA,MAClC;AAAA,MACA,uBAAuB;AAAA,MACvB,OAAO,KAAK,OAAO;AAAA,MACnB,aAAS,uCAAe,KAAK,OAAO,QAAQ,GAAG,OAAO;AAAA,MACtD,+BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA,KAAK,GAAG,KAAK,OAAO,OAAO;AAAA,IAC7B,CAAC;AAED,WAAO;AAAA,MACL,YAAY,SAAS,KAAK,IAAI,CAAC,SAAS,KAAK,SAAS;AAAA,MACtD,OAAO,SAAS,QACZ,EAAE,QAAQ,SAAS,MAAM,aAAa,IACtC;AAAA,MACJ,UAAU,EAAE,SAAS,iBAAiB,MAAM,SAAS;AAAA,MACrD,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AACF;AAIA,IAAM,oCAAoC,aAAE,OAAO;AAAA,EACjD,MAAM,aAAE,MAAM,aAAE,OAAO,EAAE,WAAW,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AAAA,EAC1D,OAAO,aAAE,OAAO,EAAE,cAAc,aAAE,OAAO,EAAE,CAAC,EAAE,QAAQ;AACxD,CAAC;;;AG/GD,IAAAC,mBAGO;AACP,IAAAC,yBAMO;;;ACVP,IAAAC,aAAkB;AAalB,IAAM,8BAA8B,aAAE,MAAM;AAAA,EAC1C,aAAE,OAAO,EAAE,MAAM,aAAE,QAAQ,MAAM,GAAG,MAAM,aAAE,OAAO,EAAE,CAAC;AAAA,EACtD,aAAE,OAAO,EAAE,MAAM,aAAE,QAAQ,WAAW,GAAG,WAAW,aAAE,OAAO,EAAE,CAAC;AAAA,EAChE,aAAE,OAAO,EAAE,MAAM,aAAE,QAAQ,cAAc,GAAG,cAAc,aAAE,OAAO,EAAE,CAAC;AACxE,CAAC;AAMM,IAAM,mCAAmC,aAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBvD,WAAW,aAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYlD,gBAAgB,aAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO5C,YAAY,aAAE,QAAQ,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYjC,SAAS,aACN,MAAM,aAAE,MAAM,2BAA2B,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,EAC5D,SAAS;AACd,CAAC;;;ADxDD,IAAAC,aAAkB;AAeX,IAAM,2BAAN,MAA2D;AAAA,EACvD,uBAAuB;AAAA,EACvB;AAAA,EAEQ;AAAA,EAEjB,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,IAAI,uBAA+B;AACjC,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,wBAAiC;AACnC,WAAO;AAAA,EACT;AAAA,EAEA,YACE,SACA,QACA;AACA,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,MAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAEE;AACA,UAAM,mBAAmB,UAAM,6CAAqB;AAAA,MAClD,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAED,QAAI,OAAO,SAAS,KAAK,sBAAsB;AAC7C,YAAM,IAAI,oDAAmC;AAAA,QAC3C,sBAAsB,KAAK;AAAA,QAC3B,SAAS,KAAK;AAAA,QACd,UAAU,KAAK;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH;AAEA,UAAM,oBAAoB,kBAAkB;AAE5C,QACE,qBAAqB,QACrB,kBAAkB,WAAW,OAAO,QACpC;AACA,YAAM,IAAI;AAAA,QACR,6CAA6C,kBAAkB,MAAM,sCAAsC,OAAO,MAAM;AAAA,MAC1H;AAAA,IACF;AAKA,UAAM,SAAkC,OAAO,IAAI,CAAC,OAAO,UAAU;AACnE,YAAM,aAAa,oBAAoB,KAAK;AAC5C,YAAM,WAA0C,QAC5C,CAAC,EAAE,MAAM,QAAQ,MAAM,MAAM,CAAC,IAC9B,CAAC;AACL,aAAO;AAAA,QACL,SACE,cAAc,OACV,CAAC,GAAG,UAAU,GAAG,UAAU,IAC3B,CAAC,EAAE,MAAM,QAAQ,MAAM,MAAM,CAAC;AAAA,MACtC;AAAA,IACF,CAAC;AAED,UAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP;AAAA,IACF,IAAI,UAAM,sCAAc;AAAA,MACtB;AAAA,MACA,MAAM;AAAA,QACJ;AAAA,QACA,OAAO,KAAK;AAAA,QACZ,YAAY,kBAAkB;AAAA,QAC9B,YAAY,kBAAkB;AAAA,QAC9B,iBAAiB,kBAAkB;AAAA,MACrC;AAAA,MACA,uBAAuB;AAAA,MACvB,OAAO,KAAK,OAAO;AAAA,MACnB,aAAS,uCAAe,KAAK,OAAO,QAAQ,GAAG,OAAO;AAAA,MACtD,+BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA,KAAK,GAAG,KAAK,OAAO,OAAO;AAAA,IAC7B,CAAC;AAED,WAAO;AAAA,MACL,YAAY,SAAS,KAAK,IAAI,CAAC,SAAS,KAAK,SAAS;AAAA,MACtD,OAAO,SAAS,QACZ,EAAE,QAAQ,SAAS,MAAM,aAAa,IACtC;AAAA,MACJ,UAAU,EAAE,SAAS,iBAAiB,MAAM,SAAS;AAAA,MACrD,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AACF;AAEA,IAAM,0CAA0C,aAAE,OAAO;AAAA,EACvD,MAAM,aAAE;AAAA,IACN,aAAE,OAAO;AAAA,MACP,QAAQ,aAAE,QAAQ,WAAW;AAAA,MAC7B,WAAW,aAAE,MAAM,aAAE,OAAO,CAAC;AAAA,MAC7B,OAAO,aAAE,OAAO;AAAA,IAClB,CAAC;AAAA,EACH;AAAA,EACA,OAAO,aAAE,OAAO;AAAA,IACd,aAAa,aAAE,OAAO,EAAE,QAAQ;AAAA,IAChC,cAAc,aAAE,OAAO,EAAE,QAAQ;AAAA,IACjC,cAAc,aAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACD,OAAO,aAAE,OAAO;AAClB,CAAC;;;AE3JD,IAAAC,yBAMO;;;ACPP,IAAAC,yBAAsC;AACtC,IAAAC,aAAkB;AAYX,IAAM,oCAAgC;AAAA,EAAW,UACtD;AAAA,IACE,aAAE,OAAO;AAAA,MACP,QAAQ,aAAE,QAAQ,MAAM;AAAA,MACxB,MAAM,aAAE;AAAA,QACN,aAAE,OAAO;AAAA,UACP,iBAAiB,aAAE,OAAO;AAAA,UAC1B,OAAO,aAAE,OAAO;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,MACA,OAAO,aAAE,OAAO;AAAA,MAChB,OAAO,aAAE,OAAO;AAAA,QACd,cAAc,aAAE,OAAO;AAAA,MACzB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;;;AC5BA,IAAAC,yBAAsC;AACtC,IAAAC,aAAkB;AA2CX,IAAM,mCACX;AAAA,EAAW,UACT;AAAA,IACE,aAAE,OAAO;AAAA,MACP,iBAAiB,aAAE,QAAQ,EAAE,SAAS;AAAA,MACtC,YAAY,aAAE,QAAQ,EAAE,SAAS;AAAA,IACnC,CAAC;AAAA,EACH;AACF;;;AF5BK,IAAM,uBAAN,MAAuD;AAAA,EACnD,uBAAuB;AAAA,EACvB;AAAA,EAEQ;AAAA,EAEjB,YAAY,SAAiC,QAA+B;AAC1E,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA;AAAA,EAGA,MAAM,SAAS;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAEE;AACA,UAAM,mBAAmB,UAAM,6CAAqB;AAAA,MAClD,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAED,UAAM,WAA8B,CAAC;AAErC,UAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP;AAAA,IACF,IAAI,UAAM,sCAAc;AAAA,MACtB,KAAK,GAAG,KAAK,OAAO,OAAO;AAAA,MAC3B,aAAS,uCAAe,KAAK,OAAO,QAAQ,GAAG,OAAO;AAAA,MACtD,MAAM;AAAA,QACJ,OAAO,KAAK;AAAA,QACZ;AAAA,QACA,WACE,UAAU,SAAS,SACf,UAAU,SACV,UAAU,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU,KAAK,CAAC;AAAA,QAC3D,OAAO;AAAA,QACP,kBAAkB,kBAAkB,mBAAmB;AAAA,QACvD,YAAY,kBAAkB,cAAc;AAAA,MAC9C;AAAA,MACA,uBAAuB;AAAA,MACvB,+BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,WAAO;AAAA,MACL,SAAS,SAAS,KAAK,IAAI,CAAC,YAAY;AAAA,QACtC,OAAO,OAAO;AAAA,QACd,gBAAgB,OAAO;AAAA,MACzB,EAAE;AAAA,MACF,UAAU,SAAS,SAAS,IAAI,WAAW;AAAA,MAC3C,UAAU;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;;;ANbO,SAAS,aACd,UAAkC,CAAC,GACnB;AAChB,QAAM,cACJ,6CAAqB,QAAQ,OAAO,KAAK;AAE3C,QAAM,aAAa,OAAO;AAAA,IACxB,eAAe,cAAU,mCAAW;AAAA,MAClC,QAAQ,QAAQ;AAAA,MAChB,yBAAyB;AAAA,MACzB,aAAa;AAAA,IACf,CAAC,CAAC;AAAA,IACF,GAAG,QAAQ;AAAA,EACb;AAEA,QAAM,uBAAuB,CAAC,YAC5B,IAAI,qBAAqB,SAAS;AAAA,IAChC,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,iCAAiC,CACrC,YAEA,IAAI,yBAAyB,SAAS;AAAA,IACpC,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,uBAAuB,CAAC,YAC5B,IAAI,qBAAqB,SAAS;AAAA,IAChC,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,WAAW,SAAU,SAAiC;AAC1D,QAAI,YAAY;AACd,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,WAAO,qBAAqB,OAAO;AAAA,EACrC;AAEA,WAAS,iBAAiB;AAC1B,WAAS,qBAAqB;AAC9B,WAAS,2BAA2B;AACpC,WAAS,sBAAsB;AAE/B,WAAS,OAAO,SAAS,gBAAgB,MAAuB;AAC9D,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AACA,WAAS,aAAa,MAAoB;AACxC,UAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD;AAEA,WAAS,YAAY;AACrB,WAAS,iBAAiB;AAE1B,SAAO;AACT;AAKO,IAAM,SAAS,aAAa;","names":["import_provider_utils","import_provider_utils","import_v4","import_v4","import_provider","import_provider_utils","import_v4","import_v4","import_provider_utils","import_provider_utils","import_v4","import_provider_utils","import_v4"]}