{"version":3,"sources":["../src/aihubmix-provider.ts","../src/tool/code-interpreter.ts","../src/tool/file-search.ts","../src/tool/image-generation.ts","../src/tool/web-search.ts","../src/tool/web-search-preview.ts","../src/aihubmix-tools.ts"],"sourcesContent":["import {\n  OpenAICompatibleChatLanguageModel,\n  OpenAICompatibleCompletionLanguageModel,\n  OpenAICompatibleEmbeddingModel,\n  OpenAICompatibleImageModel,\n} from '@ai-sdk/openai-compatible';\nimport {\n  OpenAIResponsesLanguageModel,\n  OpenAITranscriptionModel,\n  OpenAISpeechModel,\n} from '@ai-sdk/openai/internal';\nimport { AnthropicMessagesLanguageModel } from '@ai-sdk/anthropic/internal';\nimport { GoogleGenerativeAILanguageModel } from '@ai-sdk/google/internal';\nimport {\n  EmbeddingModelV3,\n  LanguageModelV3,\n  ProviderV3,\n  ImageModelV3,\n  TranscriptionModelV3,\n  SpeechModelV3,\n  TranscriptionModelV3CallOptions,\n} from '@ai-sdk/provider';\nimport { FetchFunction, loadApiKey } from '@ai-sdk/provider-utils';\nimport { aihubmixTools } from './aihubmix-tools';\n\n// OpenAI Provider 设置类型\ninterface OpenAIProviderSettings {\n  [key: string]: unknown;\n}\n\n\nexport interface AihubmixProvider extends ProviderV3 {\n  (deploymentId: string, settings?: OpenAIProviderSettings): LanguageModelV3;\n\n  readonly specificationVersion: 'v3';\n\n  languageModel(\n    deploymentId: string,\n    settings?: OpenAIProviderSettings,\n  ): LanguageModelV3;\n\n  chat(\n    deploymentId: string,\n    settings?: OpenAIProviderSettings,\n  ): LanguageModelV3;\n\n  responses(deploymentId: string): LanguageModelV3;\n\n  completion(\n    deploymentId: string,\n    settings?: OpenAIProviderSettings,\n  ): LanguageModelV3;\n\n  embedding(\n    deploymentId: string,\n    settings?: OpenAIProviderSettings,\n  ): EmbeddingModelV3;\n\n  embeddingModel(modelId: string): EmbeddingModelV3;\n\n  image(deploymentId: string, settings?: OpenAIProviderSettings): ImageModelV3;\n\n  imageModel(modelId: string): ImageModelV3;\n\n  textEmbedding(\n    deploymentId: string,\n    settings?: OpenAIProviderSettings,\n  ): EmbeddingModelV3;\n\n  textEmbeddingModel(\n    deploymentId: string,\n    settings?: OpenAIProviderSettings,\n  ): EmbeddingModelV3;\n\n  transcription(deploymentId: string): TranscriptionModelV3;\n\n  speech(deploymentId: string): SpeechModelV3;\n\n  speechModel(deploymentId: string): SpeechModelV3;\n\n  tools: typeof aihubmixTools;\n}\nexport interface AihubmixProviderSettings {\n  apiKey?: string;\n  fetch?: FetchFunction;\n  compatibility?: 'strict' | 'compatible';\n}\n\nclass AihubmixTranscriptionModel extends OpenAITranscriptionModel {\n  async doGenerate(options: TranscriptionModelV3CallOptions) {\n    // 根据MIME类型设置正确的文件扩展名\n    if (options.mediaType) {\n      const mimeTypeMap: Record<string, string> = {\n        'audio/mpeg': 'mp3',\n        'audio/mp3': 'mp3',\n        'audio/wav': 'wav',\n        'audio/flac': 'flac',\n        'audio/m4a': 'm4a',\n        'audio/mp4': 'mp4',\n        'audio/ogg': 'ogg',\n        'audio/webm': 'webm',\n        'audio/oga': 'oga',\n        'audio/mpga': 'mpga',\n      };\n      \n      const extension = mimeTypeMap[options.mediaType];\n      if (extension) {\n        // 重写getArgs方法来设置正确的文件名\n        const originalGetArgs = (this as any).getArgs;\n        (this as any).getArgs = async function(args: any) {\n          const result = await originalGetArgs.call(this, args);\n          if (result.formData) {\n            // 找到file字段并修改文件名\n            const fileEntry = result.formData.get('file');\n            if (fileEntry && typeof fileEntry === 'object' && 'name' in fileEntry) {\n              // 创建新的 File 对象，设置正确的文件名\n              try {\n                const newFile = new File([fileEntry], `audio.${extension}`, { \n                  type: options.mediaType \n                });\n                result.formData.set('file', newFile);\n              } catch (error) {\n                console.log('Failed to create new File object:', error);\n                // 如果创建新 File 对象失败，尝试其他方法\n                // 在 Node.js 环境中，可能需要使用 Buffer 或其他方式\n                if (fileEntry && typeof fileEntry === 'object' && 'arrayBuffer' in fileEntry) {\n                  try {\n                    const arrayBuffer = await (fileEntry as any).arrayBuffer();\n                    const newFile = new File([arrayBuffer], `audio.${extension}`, { \n                      type: options.mediaType \n                    });\n                    result.formData.set('file', newFile);\n                    console.log('Created new file from arrayBuffer with name:', `audio.${extension}`);\n                  } catch (bufferError) {\n                    console.log('Failed to create file from arrayBuffer:', bufferError);\n                  }\n                }\n              }\n            }\n          }\n          return result;\n        };\n      }\n    }\n    \n    return super.doGenerate(options);\n  }\n}\n\n// 修复空工具时的 tool_choice 问题\nfunction transformRequestBody(body: Record<string, any>): Record<string, any> {\n  if (body.tools && Array.isArray(body.tools) && body.tools.length === 0 && body.tool_choice) {\n    const { tool_choice, ...rest } = body;\n    return rest;\n  }\n  return body;\n}export function createAihubmix(\n  options: AihubmixProviderSettings = {},\n): AihubmixProvider {\n  const getHeaders = () => ({\n    Authorization: `Bearer ${loadApiKey({\n      apiKey: options.apiKey,\n      environmentVariableName: 'AIHUBMIX_API_KEY',\n      description: 'Aihubmix',\n    })}`,\n    'APP-Code': 'WHVL9885',\n    'Content-Type': 'application/json',\n  });\n\n  const getTranscriptionHeaders = () => ({\n    Authorization: `Bearer ${loadApiKey({\n      apiKey: options.apiKey,\n      environmentVariableName: 'AIHUBMIX_API_KEY',\n      description: 'Aihubmix',\n    })}`,\n    'APP-Code': 'WHVL9885',\n  });\n\n  const url = ({ path, modelId }: { path: string; modelId: string }) => {\n    const baseURL = 'https://aihubmix.com/v1';\n    return `${baseURL}${path}`;\n  };\n\n  const createChatModel = (\n    deploymentName: string,\n    settings: OpenAIProviderSettings = {},\n  ) => {\n    const headers = getHeaders();\n    if (deploymentName.startsWith('claude-')) {\n      const { Authorization, ...restHeaders } = headers;\n      return new AnthropicMessagesLanguageModel(deploymentName, {\n        provider: 'aihubmix.chat',\n        baseURL: url({ path: '', modelId: deploymentName }),\n        headers: {\n          ...restHeaders,\n          'x-api-key': Authorization.split(' ')[1],\n        },\n        supportedUrls: () => ({\n          'image/*': [/^https?:\\/\\/.*$/],\n        }),\n      });\n    }\n    if (\n      (deploymentName.startsWith('gemini') ||\n        deploymentName.startsWith('imagen')) &&\n      !deploymentName.endsWith('-nothink') &&\n      !deploymentName.endsWith('-search')\n    ) {\n      const { Authorization, ...restHeaders } = headers;\n      return new GoogleGenerativeAILanguageModel(\n        deploymentName,\n        {\n          provider: 'aihubmix.chat',\n          baseURL: 'https://aihubmix.com/gemini/v1beta',\n          headers: {\n            ...restHeaders,\n            'x-goog-api-key': Authorization.split(' ')[1],\n          },\n          generateId: () => `aihubmix-${Date.now()}`,\n          supportedUrls: () => ({}),\n        },\n      );\n    }\n\n    return new OpenAICompatibleChatLanguageModel(deploymentName, {\n      provider: 'aihubmix.chat',\n      url,\n      headers: getHeaders,\n      fetch: options.fetch,\n      includeUsage: true,\n      supportsStructuredOutputs: true,\n      transformRequestBody,\n    });\n  };\n\n  const createCompletionModel = (\n    modelId: string,\n    settings: any = {},\n  ) =>\n    new OpenAICompatibleCompletionLanguageModel(modelId, {\n      provider: 'aihubmix.completion',\n      url,\n      headers: getHeaders,\n      fetch: options.fetch,\n      includeUsage: true,\n    });\n\n  const createEmbeddingModel = (\n    modelId: string,\n    settings: any = {},\n  ) => {\n    return new OpenAICompatibleEmbeddingModel(modelId, {\n      provider: 'aihubmix.embeddings',\n      url,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n  };\n\n  const createResponsesModel = (modelId: string) =>\n    new OpenAIResponsesLanguageModel(modelId, {\n      provider: 'aihubmix.responses',\n      url,\n      headers: getHeaders,\n    });\n\n  const createImageModel = (\n    modelId: string,\n    settings: any = {},\n  ) => {\n    return new OpenAICompatibleImageModel(modelId, {\n      provider: 'aihubmix.image',\n      url,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n  };\n\n  const createTranscriptionModel = (modelId: string) =>\n    new AihubmixTranscriptionModel(modelId, {\n      provider: 'aihubmix.transcription',\n      url,\n      headers: getTranscriptionHeaders,\n      fetch: options.fetch,\n    });\n  const createSpeechModel = (modelId: string) =>\n    new OpenAISpeechModel(modelId, {\n      provider: 'aihubmix.speech',\n      url,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const providerFn = function (\n    deploymentId: string,\n    settings?: OpenAIProviderSettings,\n  ) {\n    if (new.target) {\n      throw new Error(\n        'The Aihubmix model function cannot be called with the new keyword.',\n      );\n    }\n\n    return createChatModel(deploymentId, settings);\n  };\n\n  // 创建带有所有必需属性的 provider 对象\n  const provider = Object.assign(providerFn, {\n    specificationVersion: 'v3' as const,\n    languageModel: createChatModel,\n    chat: createChatModel,\n    completion: createCompletionModel,\n    responses: createResponsesModel,\n    embedding: createEmbeddingModel,\n    embeddingModel: createEmbeddingModel,\n    textEmbedding: createEmbeddingModel,\n    textEmbeddingModel: createEmbeddingModel,\n    image: createImageModel,\n    imageModel: createImageModel,\n    transcription: createTranscriptionModel,\n    transcriptionModel: createTranscriptionModel,\n    speech: createSpeechModel,\n    speechModel: createSpeechModel,\n    tools: aihubmixTools,\n  });\n\n  return provider as AihubmixProvider;\n}\n\nexport const aihubmix = createAihubmix();\n","import { createProviderToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\nexport const codeInterpreterInputSchema = z.object({\n  code: z.string().nullish(),\n  containerId: z.string(),\n});\n\nexport const codeInterpreterOutputSchema = z.object({\n  outputs: z\n    .array(\n      z.discriminatedUnion('type', [\n        z.object({ type: z.literal('logs'), logs: z.string() }),\n        z.object({ type: z.literal('image'), url: z.string() }),\n      ]),\n    )\n    .nullish(),\n});\n\nexport const codeInterpreterArgsSchema = z.object({\n  container: z\n    .union([\n      z.string(),\n      z.object({\n        fileIds: z.array(z.string()).optional(),\n      }),\n    ])\n    .optional(),\n});\n\ntype CodeInterpreterArgs = {\n  /**\n   * The code interpreter container.\n   * Can be a container ID\n   * or an object that specifies uploaded file IDs to make available to your code.\n   */\n  container?: string | { fileIds?: string[] };\n};\n\nexport const codeInterpreterToolFactory =\n  createProviderToolFactoryWithOutputSchema<\n    {\n      /**\n       * The code to run, or null if not available.\n       */\n      code?: string | null;\n\n      /**\n       * The ID of the container used to run the code.\n       */\n      containerId: string;\n    },\n    {\n      /**\n       * The outputs generated by the code interpreter, such as logs or images.\n       * Can be null if no outputs are available.\n       */\n      outputs?: Array<\n        | {\n            type: 'logs';\n\n            /**\n             * The logs output from the code interpreter.\n             */\n            logs: string;\n          }\n        | {\n            type: 'image';\n\n            /**\n             * The URL of the image output from the code interpreter.\n             */\n            url: string;\n          }\n      > | null;\n    },\n    CodeInterpreterArgs\n  >({\n    id: 'aihubmix.code_interpreter',\n    inputSchema: codeInterpreterInputSchema,\n    outputSchema: codeInterpreterOutputSchema,\n  });\n\nexport const codeInterpreter = (\n  args: CodeInterpreterArgs = {}, // default\n) => {\n  return codeInterpreterToolFactory(args);\n};\n","import { createProviderToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\n/**\n * A filter used to compare a specified attribute key to a given value using a defined comparison operation.\n */\nexport type OpenAIResponsesFileSearchToolComparisonFilter = {\n  /**\n   * The key to compare against the value.\n   */\n  key: string;\n\n  /**\n   * Specifies the comparison operator: eq, ne, gt, gte, lt, lte.\n   */\n  type: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte';\n\n  /**\n   * The value to compare against the attribute key; supports string, number, or boolean types.\n   */\n  value: string | number | boolean;\n};\n\n/**\n * Combine multiple filters using and or or.\n */\nexport type OpenAIResponsesFileSearchToolCompoundFilter = {\n  /**\n   * Type of operation: and or or.\n   */\n  type: 'and' | 'or';\n\n  /**\n   * Array of filters to combine. Items can be ComparisonFilter or CompoundFilter.\n   */\n  filters: Array<\n    | OpenAIResponsesFileSearchToolComparisonFilter\n    | OpenAIResponsesFileSearchToolCompoundFilter\n  >;\n};\n\nconst comparisonFilterSchema = z.object({\n  key: z.string(),\n  type: z.enum(['eq', 'ne', 'gt', 'gte', 'lt', 'lte']),\n  value: z.union([z.string(), z.number(), z.boolean()]),\n});\n\nconst compoundFilterSchema: z.ZodType<any> = z.object({\n  type: z.enum(['and', 'or']),\n  filters: z.array(\n    z.union([comparisonFilterSchema, z.lazy(() => compoundFilterSchema)]),\n  ),\n});\n\nexport const fileSearchArgsSchema = z.object({\n  vectorStoreIds: z.array(z.string()),\n  maxNumResults: z.number().optional(),\n  ranking: z\n    .object({\n      ranker: z.string().optional(),\n      scoreThreshold: z.number().optional(),\n    })\n    .optional(),\n  filters: z.union([comparisonFilterSchema, compoundFilterSchema]).optional(),\n});\n\nexport const fileSearchOutputSchema = z.object({\n  queries: z.array(z.string()),\n  results: z\n    .array(\n      z.object({\n        attributes: z.record(z.string(), z.unknown()),\n        fileId: z.string(),\n        filename: z.string(),\n        score: z.number(),\n        text: z.string(),\n      }),\n    )\n    .nullable(),\n});\n\nexport const fileSearch = createProviderToolFactoryWithOutputSchema<\n  {},\n  {\n    /**\n     * The search query to execute.\n     */\n    queries: string[];\n\n    /**\n     * The results of the file search tool call.\n     */\n    results:\n      | null\n      | {\n          /**\n           * Set of 16 key-value pairs that can be attached to an object.\n           * This can be useful for storing additional information about the object\n           * in a structured format, and querying for objects via API or the dashboard.\n           * Keys are strings with a maximum length of 64 characters.\n           * Values are strings with a maximum length of 512 characters, booleans, or numbers.\n           */\n          attributes: Record<string, unknown>;\n\n          /**\n           * The unique ID of the file.\n           */\n          fileId: string;\n\n          /**\n           * The name of the file.\n           */\n          filename: string;\n\n          /**\n           * The relevance score of the file - a value between 0 and 1.\n           */\n          score: number;\n\n          /**\n           * The text that was retrieved from the file.\n           */\n          text: string;\n        }[];\n  },\n  {\n    /**\n     * List of vector store IDs to search through.\n     */\n    vectorStoreIds: string[];\n\n    /**\n     * Maximum number of search results to return. Defaults to 10.\n     */\n    maxNumResults?: number;\n\n    /**\n     * Ranking options for the search.\n     */\n    ranking?: {\n      /**\n       * The ranker to use for the file search.\n       */\n      ranker?: string;\n\n      /**\n       * The score threshold for the file search, a number between 0 and 1.\n       * Numbers closer to 1 will attempt to return only the most relevant results,\n       * but may return fewer results.\n       */\n      scoreThreshold?: number;\n    };\n\n    /**\n     * A filter to apply.\n     */\n    filters?:\n      | OpenAIResponsesFileSearchToolComparisonFilter\n      | OpenAIResponsesFileSearchToolCompoundFilter;\n  }\n>({\n  id: 'aihubmix.file_search',\n  inputSchema: z.object({}),\n  outputSchema: fileSearchOutputSchema,\n});\n","import { createProviderToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\nexport const imageGenerationArgsSchema = z\n  .object({\n    background: z.enum(['auto', 'opaque', 'transparent']).optional(),\n    inputFidelity: z.enum(['low', 'high']).optional(),\n    inputImageMask: z\n      .object({\n        fileId: z.string().optional(),\n        imageUrl: z.string().optional(),\n      })\n      .optional(),\n    model: z.string().optional(),\n    moderation: z.enum(['auto']).optional(),\n    outputCompression: z.number().int().min(0).max(100).optional(),\n    outputFormat: z.enum(['png', 'jpeg', 'webp']).optional(),\n    quality: z.enum(['auto', 'low', 'medium', 'high']).optional(),\n    size: z.enum(['1024x1024', '1024x1536', '1536x1024', 'auto']).optional(),\n  })\n  .strict();\n\nexport const imageGenerationOutputSchema = z.object({\n  result: z.string(),\n});\n\ntype ImageGenerationArgs = {\n  /**\n   * Background type for the generated image. Default is 'auto'.\n   */\n  background?: 'auto' | 'opaque' | 'transparent';\n\n  /**\n   * Input fidelity for the generated image. Default is 'low'.\n   */\n  inputFidelity?: 'low' | 'high';\n\n  /**\n   * Optional mask for inpainting.\n   * Contains image_url (string, optional) and file_id (string, optional).\n   */\n  inputImageMask?: {\n    /**\n     * File ID for the mask image.\n     */\n    fileId?: string;\n\n    /**\n     * Base64-encoded mask image.\n     */\n    imageUrl?: string;\n  };\n\n  /**\n   * The image generation model to use. Default: gpt-image-1.\n   */\n  model?: string;\n\n  /**\n   * Moderation level for the generated image. Default: auto.\n   */\n  moderation?: 'auto';\n\n  /**\n   * Compression level for the output image. Default: 100.\n   */\n  outputCompression?: number;\n\n  /**\n   * The output format of the generated image. One of png, webp, or jpeg.\n   * Default: png\n   */\n  outputFormat?: 'png' | 'jpeg' | 'webp';\n\n  /**\n   * The quality of the generated image.\n   * One of low, medium, high, or auto. Default: auto.\n   */\n  quality?: 'auto' | 'low' | 'medium' | 'high';\n\n  /**\n   * The size of the generated image.\n   * One of 1024x1024, 1024x1536, 1536x1024, or auto.\n   * Default: auto.\n   */\n  size?: 'auto' | '1024x1024' | '1024x1536' | '1536x1024';\n};\n\nconst imageGenerationToolFactory =\n  createProviderToolFactoryWithOutputSchema<\n    {},\n    {\n      /**\n       * The generated image encoded in base64.\n       */\n      result: string;\n    },\n    ImageGenerationArgs\n  >({\n    id: 'aihubmix.image_generation',\n    inputSchema: z.object({}),\n    outputSchema: imageGenerationOutputSchema,\n  });\n\nexport const imageGeneration = (\n  args: ImageGenerationArgs = {}, // default\n) => {\n  return imageGenerationToolFactory(args);\n};\n","import { createProviderToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\nexport const webSearchArgsSchema = z.object({\n  filters: z\n    .object({\n      allowedDomains: z.array(z.string()).optional(),\n    })\n    .optional(),\n\n  searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n\n  userLocation: z\n    .object({\n      type: z.literal('approximate'),\n      country: z.string().optional(),\n      city: z.string().optional(),\n      region: z.string().optional(),\n      timezone: z.string().optional(),\n    })\n    .optional(),\n});\n\nexport const webSearchToolFactory = createProviderToolFactory<\n  {\n    // Web search doesn't take input parameters - it's controlled by the prompt\n  },\n  {\n    /**\n     * Filters for the search.\n     */\n    filters?: {\n      /**\n       * Allowed domains for the search.\n       * If not provided, all domains are allowed.\n       * Subdomains of the provided domains are allowed as well.\n       */\n      allowedDomains?: string[];\n    };\n\n    /**\n     * Search context size to use for the web search.\n     * - high: Most comprehensive context, highest cost, slower response\n     * - medium: Balanced context, cost, and latency (default)\n     * - low: Least context, lowest cost, fastest response\n     */\n    searchContextSize?: 'low' | 'medium' | 'high';\n\n    /**\n     * User location information to provide geographically relevant search results.\n     */\n    userLocation?: {\n      /**\n       * Type of location (always 'approximate')\n       */\n      type: 'approximate';\n      /**\n       * Two-letter ISO country code (e.g., 'US', 'GB')\n       */\n      country?: string;\n      /**\n       * City name (free text, e.g., 'Minneapolis')\n       */\n      city?: string;\n      /**\n       * Region name (free text, e.g., 'Minnesota')\n       */\n      region?: string;\n      /**\n       * IANA timezone (e.g., 'America/Chicago')\n       */\n      timezone?: string;\n    };\n  }\n>({\n  id: 'aihubmix.web_search',\n  inputSchema: z.object({\n    action: z\n      .discriminatedUnion('type', [\n        z.object({\n          type: z.literal('search'),\n          query: z.string().nullish(),\n        }),\n        z.object({\n          type: z.literal('open_page'),\n          url: z.string(),\n        }),\n        z.object({\n          type: z.literal('find'),\n          url: z.string(),\n          pattern: z.string(),\n        }),\n      ])\n      .nullish(),\n  }),\n});\n\nexport const webSearch = (\n  args: Parameters<typeof webSearchToolFactory>[0] = {}, // default\n) => {\n  return webSearchToolFactory(args);\n};\n","import { createProviderToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\n// Args validation schema\nexport const webSearchPreviewArgsSchema = z.object({\n  /**\n   * Search context size to use for the web search.\n   * - high: Most comprehensive context, highest cost, slower response\n   * - medium: Balanced context, cost, and latency (default)\n   * - low: Least context, lowest cost, fastest response\n   */\n  searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n\n  /**\n   * User location information to provide geographically relevant search results.\n   */\n  userLocation: z\n    .object({\n      /**\n       * Type of location (always 'approximate')\n       */\n      type: z.literal('approximate'),\n      /**\n       * Two-letter ISO country code (e.g., 'US', 'GB')\n       */\n      country: z.string().optional(),\n      /**\n       * City name (free text, e.g., 'Minneapolis')\n       */\n      city: z.string().optional(),\n      /**\n       * Region name (free text, e.g., 'Minnesota')\n       */\n      region: z.string().optional(),\n      /**\n       * IANA timezone (e.g., 'America/Chicago')\n       */\n      timezone: z.string().optional(),\n    })\n    .optional(),\n});\n\nexport const webSearchPreview = createProviderToolFactory<\n  {\n    // Web search doesn't take input parameters - it's controlled by the prompt\n  },\n  {\n    /**\n     * Search context size to use for the web search.\n     * - high: Most comprehensive context, highest cost, slower response\n     * - medium: Balanced context, cost, and latency (default)\n     * - low: Least context, lowest cost, fastest response\n     */\n    searchContextSize?: 'low' | 'medium' | 'high';\n\n    /**\n     * User location information to provide geographically relevant search results.\n     */\n    userLocation?: {\n      /**\n       * Type of location (always 'approximate')\n       */\n      type: 'approximate';\n      /**\n       * Two-letter ISO country code (e.g., 'US', 'GB')\n       */\n      country?: string;\n      /**\n       * City name (free text, e.g., 'Minneapolis')\n       */\n      city?: string;\n      /**\n       * Region name (free text, e.g., 'Minnesota')\n       */\n      region?: string;\n      /**\n       * IANA timezone (e.g., 'America/Chicago')\n       */\n      timezone?: string;\n    };\n  }\n>({\n  id: 'aihubmix.web_search_preview',\n  inputSchema: z.object({\n    action: z\n      .discriminatedUnion('type', [\n        z.object({\n          type: z.literal('search'),\n          query: z.string().nullish(),\n        }),\n        z.object({\n          type: z.literal('open_page'),\n          url: z.string(),\n        }),\n        z.object({\n          type: z.literal('find'),\n          url: z.string(),\n          pattern: z.string(),\n        }),\n      ])\n      .nullish(),\n  }),\n});\n","import { codeInterpreter } from './tool/code-interpreter';\nimport { fileSearch } from './tool/file-search';\nimport { imageGeneration } from './tool/image-generation';\nimport { webSearch } from './tool/web-search';\nimport { webSearchPreview } from './tool/web-search-preview';\n\nexport const aihubmixTools = {\n  /**\n   * The Code Interpreter tool allows models to write and run Python code in a\n   * sandboxed environment to solve complex problems in domains like data analysis,\n   * coding, and math.\n   *\n   * @param container - The container to use for the code interpreter.\n   *\n   * Must have name `code_interpreter`.\n   */\n  codeInterpreter,\n\n  /**\n   * File search is a tool available in the Responses API. It enables models to\n   * retrieve information in a knowledge base of previously uploaded files through\n   * semantic and keyword search.\n   *\n   * Must have name `file_search`.\n   *\n   * @param vectorStoreIds - The vector store IDs to use for the file search.\n   * @param maxNumResults - The maximum number of results to return.\n   * @param ranking - The ranking options to use for the file search.\n   * @param filters - The filters to use for the file search.\n   */\n  fileSearch,\n\n  /**\n   * The image generation tool allows you to generate images using a text prompt,\n   * and optionally image inputs. It leverages the GPT Image model,\n   * and automatically optimizes text inputs for improved performance.\n   *\n   * Must have name `image_generation`.\n   *\n   * @param size - Image dimensions (e.g., 1024x1024, 1024x1536)\n   * @param quality - Rendering quality (e.g. low, medium, high)\n   * @param format - File output format\n   * @param compression - Compression level (0-100%) for JPEG and WebP formats\n   * @param background - Transparent or opaque\n   */\n  imageGeneration,\n\n  /**\n   * Web search allows models to access up-to-date information from the internet\n   * and provide answers with sourced citations.\n   *\n   * Must have name `web_search_preview`.\n   *\n   * @param searchContextSize - The search context size to use for the web search.\n   * @param userLocation - The user location to use for the web search.\n   *\n   * @deprecated Use `webSearch` instead.\n   */\n  webSearchPreview,\n\n  /**\n   * Web search allows models to access up-to-date information from the internet\n   * and provide answers with sourced citations.\n   *\n   * Must have name `web_search`.\n   *\n   * @param filters - The filters to use for the web search.\n   * @param searchContextSize - The search context size to use for the web search.\n   * @param userLocation - The user location to use for the web search.\n   */\n  webSearch,\n};\n"],"mappings":"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","names":["createProviderToolFactoryWithOutputSchema","z","createProviderToolFactoryWithOutputSchema","z","z","createProviderToolFactory","z"]}