{"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"],"sourcesContent":["export { createVoyage, voyage } from './voyage-provider';\nexport type { VoyageEmbeddingOptions } from './voyage-embedding-settings';\nexport type { VoyageMultimodalEmbeddingOptions } from './voyage-multimodal-embedding-settings';\nexport type { VoyageProvider, VoyageProviderSettings } from './voyage-provider';\nexport {\n  type ImageEmbeddingInput,\n  type MultimodalEmbeddingInput,\n  type MultimodalEmbeddingModel,\n  type TextEmbeddingInput,\n} from './voyage-multimodal-embedding-model';\n","import type {\n  EmbeddingModelV2,\n  ImageModelV2,\n  LanguageModelV2,\n  ProviderV2,\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 {\n  MultimodalEmbeddingModel,\n  type ImageEmbeddingInput,\n  type MultimodalEmbeddingInput,\n} from './voyage-multimodal-embedding-model';\n\nexport interface VoyageProvider extends ProviderV2 {\n  (modelId: VoyageEmbeddingModelId): EmbeddingModelV2<string>;\n\n  textEmbeddingModel: (\n    modelId: VoyageEmbeddingModelId,\n  ) => EmbeddingModelV2<string>;\n\n  imageEmbeddingModel: (\n    modelId: VoyageMultimodalEmbeddingModelId,\n  ) => EmbeddingModelV2<ImageEmbeddingInput>;\n\n  multimodalEmbeddingModel: (\n    modelId: VoyageMultimodalEmbeddingModelId,\n  ) => EmbeddingModelV2<MultimodalEmbeddingInput>;\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 createImageEmbeddingModel = (\n    modelId: VoyageMultimodalEmbeddingModelId,\n  ) =>\n    new MultimodalEmbeddingModel(\n      modelId,\n      {\n        provider: 'voyage.image.embedding',\n        baseURL,\n        headers: getHeaders,\n        fetch: options.fetch,\n      },\n      'image',\n    );\n\n  const createMultimodalEmbeddingModel = (\n    modelId: VoyageMultimodalEmbeddingModelId,\n  ) =>\n    new MultimodalEmbeddingModel(\n      modelId,\n      {\n        provider: 'voyage.multimodal.embedding',\n        baseURL,\n        headers: getHeaders,\n        fetch: options.fetch,\n      },\n      'multimodal',\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.textEmbeddingModel = createEmbeddingModel;\n  provider.imageEmbeddingModel = createImageEmbeddingModel;\n  provider.multimodalEmbeddingModel = createMultimodalEmbeddingModel;\n\n  provider.chat = provider.languageModel = (): LanguageModelV2 => {\n    throw new Error('languageModel method is not implemented.');\n  };\n  provider.imageModel = (): ImageModelV2 => {\n    throw new Error('imageModel method is not implemented.');\n  };\n\n  return provider as VoyageProvider;\n}\n\n/**\n  Default Voyage provider instance.\n   */\nexport const voyage = createVoyage();\n","import {\n  type EmbeddingModelV2,\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 EmbeddingModelV2<string> {\n  readonly specificationVersion = 'v2';\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<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n    Awaited<ReturnType<EmbeddingModelV2<string>['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    };\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  | 'voyage-3.5'\n  | 'voyage-3.5-lite'\n  | 'voyage-3-large'\n  | 'voyage-3'\n  | 'voyage-3-lite'\n  | 'voyage-code-3'\n  | 'voyage-finance-2'\n  | 'voyage-multilingual-2'\n  | 'voyage-law-2'\n  | 'voyage-code-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 EmbeddingModelV2,\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 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// Basic input types\n\n// URL or base64 image\nexport type ImageInput = string;\n\n// Text\nexport type TextInput = string;\n\n// Core content structure that mirrors the API\nexport type ContentItem =\n  | { type: 'text'; text: string }\n  | { type: 'image_url'; image_url: string }\n  | { type: 'image_base64'; image_base64: string };\n\n// For batching multiple content items into a single embedding\nexport type MultimodalContent = {\n  text?: TextInput[];\n  image?: ImageInput[];\n};\n\n// Text embedding model inputs\nexport type TextEmbeddingInput =\n  | TextInput // Single text\n  | TextInput[] // Multiple texts as one embedding\n  | { text: TextInput | TextInput[] }; // Alternative format (single or multiple texts)\n\n// Image embedding model inputs\nexport type ImageEmbeddingInput =\n  | ImageInput // Single image\n  | ImageInput[] // Multiple images as one embedding\n  | { image: ImageInput | ImageInput[] }; // Alternative format (single or multiple images)\n\n// Multimodal embedding model inputs\nexport type MultimodalEmbeddingInput =\n  | TextInput // Single text\n  | ImageInput // Single image\n  | TextInput[] // Multiple texts as one embedding\n  | ImageInput[] // Multiple images as one embedding\n  | MultimodalContent // Mixed content with explicit structure\n  | { text: TextInput | TextInput[] } // Alternative format (single or multiple texts)\n  | { image: ImageInput | ImageInput[] } // Alternative format (single or multiple images)\n  | { content: ContentItem[] }; // Pre-formatted content items\n\n// API-compatible types for Voyage multimodal embeddings\nexport type VoyageMultimodalContentItem =\n  | {\n      type: 'text';\n      text: string;\n    }\n  | {\n      type: 'image_url';\n      image_url: string;\n    }\n  | {\n      type: 'image_base64';\n      image_base64: string;\n    };\n\nexport type VoyageMultimodalInput = {\n  content: VoyageMultimodalContentItem[];\n};\n\nexport class MultimodalEmbeddingModel<T> implements EmbeddingModelV2<T> {\n  readonly specificationVersion = 'v2';\n  readonly modelId: VoyageMultimodalEmbeddingModelId;\n  readonly modelType: 'multimodal' | 'image';\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    modelType: 'multimodal' | 'image',\n  ) {\n    this.modelId = modelId;\n    this.config = config;\n    this.modelType = modelType;\n  }\n\n  private transformInputs(values: T[]): VoyageMultimodalInput[] {\n    return values.map((value) => this.transformSingleInput(value));\n  }\n\n  private transformSingleInput(value: T): VoyageMultimodalInput {\n    // Handle string inputs\n    if (typeof value === 'string') {\n      if (this.modelType === 'image') {\n        // For image model, treat strings as image URLs or base64\n        return this.createImageContent(value);\n      }\n      // For multimodal model, treat strings as text unless they look like images\n      if (this.isImageString(value)) {\n        return this.createImageContent(value);\n      }\n      return this.createTextContent(value);\n    }\n\n    // Handle array inputs\n    if (Array.isArray(value)) {\n      return this.transformArrayInput(value);\n    }\n\n    // Handle object inputs\n    const input = value as Record<string, unknown>;\n\n    // Handle pre-formatted content items { content: ContentItem[] }\n    if (input.content && Array.isArray(input.content)) {\n      return this.transformContentArray(input.content);\n    }\n\n    // Handle MultimodalContent format { text?: string[], image?: string[] }\n    if (input.text || input.image) {\n      return this.transformMultimodalContent(input);\n    }\n\n    // Fallback: treat as text if it's a primitive value (only for multimodal)\n    if (this.modelType === 'multimodal') {\n      return this.createTextContent(String(value));\n    }\n\n    throw new Error(\n      `Unsupported input format for ${this.modelType} model: ${JSON.stringify(value)}`,\n    );\n  }\n\n  private transformArrayInput(array: unknown[]): VoyageMultimodalInput {\n    const contentItems: VoyageMultimodalContentItem[] = [];\n\n    for (const item of array) {\n      if (typeof item === 'string') {\n        if (this.isImageString(item)) {\n          contentItems.push(this.createImageContentItem(item));\n        } else {\n          if (this.modelType === 'image') {\n            throw new Error(\n              'Text content not supported in image embedding model',\n            );\n          }\n          contentItems.push({ type: 'text', text: item });\n        }\n      } else {\n        throw new Error('Array items must be strings');\n      }\n    }\n\n    return { content: contentItems };\n  }\n\n  private transformContentArray(content: unknown[]): VoyageMultimodalInput {\n    const contentItems: VoyageMultimodalContentItem[] = [];\n\n    for (const item of content) {\n      const contentItem = item as Record<string, unknown>;\n\n      // Handle pre-formatted API items\n      if (\n        contentItem.type &&\n        (contentItem.text || contentItem.image_url || contentItem.image_base64)\n      ) {\n        contentItems.push(contentItem as VoyageMultimodalContentItem);\n        continue;\n      }\n\n      // Handle legacy format with text and image arrays\n      if (contentItem.text && Array.isArray(contentItem.text)) {\n        if (this.modelType === 'image') {\n          throw new Error(\n            'Text content not supported in image embedding model',\n          );\n        }\n        for (const textItem of contentItem.text) {\n          contentItems.push({ type: 'text', text: String(textItem) });\n        }\n      }\n\n      if (contentItem.image && Array.isArray(contentItem.image)) {\n        for (const imageItem of contentItem.image) {\n          const imageStr = String(imageItem);\n          contentItems.push(this.createImageContentItem(imageStr));\n        }\n      }\n\n      // Handle individual properties\n      if (typeof contentItem.text === 'string') {\n        if (this.modelType === 'image') {\n          throw new Error(\n            'Text content not supported in image embedding model',\n          );\n        }\n        contentItems.push({ type: 'text', text: contentItem.text });\n      }\n\n      if (typeof contentItem.image === 'string') {\n        contentItems.push(this.createImageContentItem(contentItem.image));\n      }\n    }\n\n    return { content: contentItems };\n  }\n\n  private transformMultimodalContent(\n    input: Record<string, unknown>,\n  ): VoyageMultimodalInput {\n    const contentItems: VoyageMultimodalContentItem[] = [];\n\n    // Handle text array or single text\n    if (input.text !== undefined) {\n      if (this.modelType === 'image') {\n        throw new Error('Text content not supported in image embedding model');\n      }\n\n      if (Array.isArray(input.text)) {\n        for (const textItem of input.text) {\n          contentItems.push({ type: 'text', text: String(textItem) });\n        }\n      } else if (typeof input.text === 'string') {\n        contentItems.push({ type: 'text', text: input.text });\n      }\n    }\n\n    // Handle image array or single image\n    if (input.image !== undefined) {\n      if (Array.isArray(input.image)) {\n        for (const imageItem of input.image) {\n          const imageStr = String(imageItem);\n          contentItems.push(this.createImageContentItem(imageStr));\n        }\n      } else if (typeof input.image === 'string') {\n        contentItems.push(this.createImageContentItem(input.image));\n      }\n    }\n\n    return { content: contentItems };\n  }\n\n  private createTextContent(text: string): VoyageMultimodalInput {\n    return {\n      content: [{ type: 'text', text }],\n    };\n  }\n\n  private createImageContent(image: string): VoyageMultimodalInput {\n    return {\n      content: [this.createImageContentItem(image)],\n    };\n  }\n\n  private createImageContentItem(image: string): VoyageMultimodalContentItem {\n    return this.isBase64Image(image)\n      ? { type: 'image_base64', image_base64: image }\n      : { type: 'image_url', image_url: image };\n  }\n\n  private isImageString(str: string): boolean {\n    return this.isBase64Image(str) || this.isImageUrl(str);\n  }\n\n  private isImageUrl(str: string): boolean {\n    try {\n      const url = new URL(str);\n      return /\\.(jpg|jpeg|png|gif|bmp|webp|svg)$/i.test(url.pathname);\n    } catch {\n      return false;\n    }\n  }\n\n  private isBase64Image(image: string): boolean {\n    return image.startsWith('data:image/') && image.includes(';base64,');\n  }\n\n  async doEmbed({\n    abortSignal,\n    values,\n    headers,\n    providerOptions,\n  }: Parameters<EmbeddingModelV2<T>['doEmbed']>[0]): Promise<\n    Awaited<ReturnType<EmbeddingModelV2<T>['doEmbed']>>\n  > {\n    const embeddingOptions = await parseProviderOptions({\n      provider: 'voyage',\n      providerOptions,\n      schema: voyageMultimodalEmbeddingOptions,\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    // Transform the user input to the expected format for API\n    // https://docs.voyageai.com/reference/multimodal-embeddings-api\n    const transformedInputs = this.transformInputs(values);\n\n    const {\n      responseHeaders,\n      value: response,\n      rawValue,\n    } = await postJsonToApi({\n      abortSignal,\n      body: {\n        inputs: transformedInputs,\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    };\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'\n  | (string & {});\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\nexport type VoyageMultimodalEmbeddingOptions = z.infer<\n  typeof voyageMultimodalEmbeddingOptions\n>;\n"],"mappings":"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","names":["import_provider_utils","import_provider_utils","import_v4","import_v4","import_provider","import_provider_utils","import_v4","import_v4"]}