{"version":3,"sources":["../../src/providers/google.ts"],"sourcesContent":["import { createGoogleGenerativeAI } from '@ai-sdk/google';\nimport type { wrapLanguageModel } from 'ai';\nimport { NoSuchModelError } from 'ai';\nimport { resolveFoundryConfig } from '../config.js';\nimport { wrapFoundryLanguageModel } from '../middleware.js';\nimport { resolveModelTarget } from '../models/catalog.js';\nimport type { GoogleModelId } from '../models/google-models.js';\nimport type { FoundryConfig } from '../types.js';\n\ntype FoundryLanguageModel = Parameters<typeof wrapLanguageModel>[0]['model'];\n\nexport interface FoundryGoogleProvider {\n  (modelId: GoogleModelId): FoundryLanguageModel;\n  specificationVersion: 'v3';\n  languageModel(modelId: GoogleModelId): FoundryLanguageModel;\n  chat(modelId: GoogleModelId): FoundryLanguageModel;\n  generativeAI(modelId: GoogleModelId): FoundryLanguageModel;\n  embeddingModel(modelId: string): never;\n  imageModel(modelId: string): never;\n}\n\nexport function createFoundryGoogle(config: FoundryConfig): FoundryGoogleProvider {\n  const providerId = 'foundry-google';\n  const resolvedConfig = resolveFoundryConfig(config, 'createFoundryGoogle');\n  const baseProvider = createGoogleGenerativeAI({\n    apiKey: resolvedConfig.token,\n    baseURL: `${resolvedConfig.foundryUrl}/api/v2/llm/proxy/google/v1`,\n    fetch: createGoogleProxyFetch(resolvedConfig.token),\n    headers: resolvedConfig.attributionRid\n      ? { attribution: resolvedConfig.attributionRid }\n      : undefined,\n    name: providerId,\n  });\n\n  const createLanguageModel = (modelId: GoogleModelId): FoundryLanguageModel => {\n    const resolvedModel = resolveModelTarget(modelId);\n\n    return wrapFoundryLanguageModel(baseProvider.chat(resolvedModel.rid), {\n      modelId,\n      providerId,\n    });\n  };\n\n  function provider(modelId: GoogleModelId): FoundryLanguageModel {\n    return createLanguageModel(modelId);\n  }\n\n  const callableProvider = provider as FoundryGoogleProvider;\n\n  callableProvider.specificationVersion = 'v3';\n  callableProvider.languageModel = createLanguageModel;\n  callableProvider.chat = createLanguageModel;\n  callableProvider.generativeAI = createLanguageModel;\n  callableProvider.embeddingModel = (modelId: string) => {\n    throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n  };\n  callableProvider.imageModel = (modelId: string) => {\n    throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n  };\n\n  return callableProvider;\n}\n\nfunction createGoogleProxyFetch(token: string): typeof fetch {\n  return async (input, init) => {\n    const request = new Request(input, init);\n    const headers = new Headers(request.headers);\n\n    headers.delete('x-goog-api-key');\n    headers.set('Authorization', `Bearer ${token}`);\n\n    return fetch(new Request(request, { headers }));\n  };\n}\n"],"mappings":";;;;;;;;;AAAA,SAAS,gCAAgC;AAEzC,SAAS,wBAAwB;AAmB1B,SAAS,oBAAoB,QAA8C;AAChF,QAAM,aAAa;AACnB,QAAM,iBAAiB,qBAAqB,QAAQ,qBAAqB;AACzE,QAAM,eAAe,yBAAyB;AAAA,IAC5C,QAAQ,eAAe;AAAA,IACvB,SAAS,GAAG,eAAe,UAAU;AAAA,IACrC,OAAO,uBAAuB,eAAe,KAAK;AAAA,IAClD,SAAS,eAAe,iBACpB,EAAE,aAAa,eAAe,eAAe,IAC7C;AAAA,IACJ,MAAM;AAAA,EACR,CAAC;AAED,QAAM,sBAAsB,CAAC,YAAiD;AAC5E,UAAM,gBAAgB,mBAAmB,OAAO;AAEhD,WAAO,yBAAyB,aAAa,KAAK,cAAc,GAAG,GAAG;AAAA,MACpE;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAEA,WAAS,SAAS,SAA8C;AAC9D,WAAO,oBAAoB,OAAO;AAAA,EACpC;AAEA,QAAM,mBAAmB;AAEzB,mBAAiB,uBAAuB;AACxC,mBAAiB,gBAAgB;AACjC,mBAAiB,OAAO;AACxB,mBAAiB,eAAe;AAChC,mBAAiB,iBAAiB,CAAC,YAAoB;AACrD,UAAM,IAAI,iBAAiB,EAAE,SAAS,WAAW,iBAAiB,CAAC;AAAA,EACrE;AACA,mBAAiB,aAAa,CAAC,YAAoB;AACjD,UAAM,IAAI,iBAAiB,EAAE,SAAS,WAAW,aAAa,CAAC;AAAA,EACjE;AAEA,SAAO;AACT;AAEA,SAAS,uBAAuB,OAA6B;AAC3D,SAAO,OAAO,OAAO,SAAS;AAC5B,UAAM,UAAU,IAAI,QAAQ,OAAO,IAAI;AACvC,UAAM,UAAU,IAAI,QAAQ,QAAQ,OAAO;AAE3C,YAAQ,OAAO,gBAAgB;AAC/B,YAAQ,IAAI,iBAAiB,UAAU,KAAK,EAAE;AAE9C,WAAO,MAAM,IAAI,QAAQ,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,EAChD;AACF;","names":[]}