{"version":3,"sources":["../../src/vertexai/index.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module /\n */\n\nimport { EmbedderReference, ModelReference, z } from 'genkit';\nimport {\n  genkitPluginV2,\n  type GenkitPluginV2,\n  type ResolvableAction,\n} from 'genkit/plugin';\nimport { type ActionType } from 'genkit/registry';\nimport { listModels } from './client.mjs';\n\nimport * as embedder from './embedder.mjs';\nimport * as gemini from './gemini.mjs';\nimport * as imagen from './imagen.mjs';\nimport * as lyria from './lyria.mjs';\nimport * as veo from './veo.mjs';\n\nimport { VertexPluginOptions } from './types.mjs';\nimport { getDerivedOptions } from './utils.mjs';\n\nexport { type EmbeddingConfig } from './embedder.mjs';\nexport {\n  type GeminiConfig,\n  type GeminiImageConfig,\n  type GeminiTtsConfig,\n  type GeminiVideoConfig,\n} from './gemini.mjs';\nexport { type ImagenConfig } from './imagen.mjs';\nexport { type LyriaConfig } from './lyria.mjs';\nexport { type VertexPluginOptions } from './types.mjs';\nexport { type VeoConfig } from './veo.mjs';\n\nasync function initializer(pluginOptions?: VertexPluginOptions) {\n  const clientOptions = await getDerivedOptions(pluginOptions);\n  return [\n    ...veo.listKnownModels(clientOptions, pluginOptions),\n    ...imagen.listKnownModels(clientOptions, pluginOptions),\n    ...lyria.listKnownModels(clientOptions, pluginOptions),\n    ...gemini.listKnownModels(clientOptions, pluginOptions),\n    ...embedder.listKnownModels(clientOptions, pluginOptions),\n  ];\n}\n\nasync function resolver(\n  actionType: ActionType,\n  actionName: string,\n  pluginOptions?: VertexPluginOptions\n): Promise<ResolvableAction | undefined> {\n  const clientOptions = await getDerivedOptions(pluginOptions);\n  switch (actionType) {\n    case 'model':\n      if (lyria.isLyriaModelName(actionName)) {\n        return lyria.defineModel(actionName, clientOptions, pluginOptions);\n      } else if (imagen.isImagenModelName(actionName)) {\n        return imagen.defineModel(actionName, clientOptions, pluginOptions);\n      } else if (veo.isVeoModelName(actionName)) {\n        return undefined;\n      } else {\n        return gemini.defineModel(actionName, clientOptions, pluginOptions);\n      }\n      break;\n    case 'background-model':\n      if (veo.isVeoModelName(actionName)) {\n        return veo.defineModel(actionName, clientOptions, pluginOptions);\n      }\n      break;\n    case 'embedder':\n      return embedder.defineEmbedder(actionName, clientOptions, pluginOptions);\n      break;\n  }\n  return undefined;\n}\n\nasync function listActions(options?: VertexPluginOptions) {\n  try {\n    const clientOptions = await getDerivedOptions(options);\n    const models = await listModels(clientOptions);\n    return [\n      ...gemini.listActions(models),\n      ...imagen.listActions(models),\n      ...lyria.listActions(models),\n      ...veo.listActions(models),\n      // We don't list embedders here\n    ];\n  } catch (e: unknown) {\n    // Errors are already logged in the client code.\n    return [];\n  }\n}\n\n/**\n * Add Google Cloud Vertex AI to Genkit. Includes Gemini and Imagen models and text embedder.\n */\nfunction vertexAIPlugin(options?: VertexPluginOptions): GenkitPluginV2 {\n  let listActionsCache;\n  return genkitPluginV2({\n    name: 'vertexai',\n    init: async () => await initializer(options),\n    resolve: async (actionType: ActionType, actionName: string) =>\n      await resolver(actionType, actionName, options),\n    list: async () => {\n      if (listActionsCache) return listActionsCache;\n      listActionsCache = await listActions(options);\n      return listActionsCache;\n    },\n  });\n}\n\nexport type VertexAIPlugin = {\n  (pluginOptions?: VertexPluginOptions): GenkitPluginV2;\n  model(\n    name: gemini.KnownTtsModels | (gemini.TTSModelName & {}),\n    config?: gemini.GeminiTtsConfig\n  ): ModelReference<gemini.GeminiTtsConfigSchemaType>;\n  model(\n    name: gemini.KnownImageModels | (gemini.ImageModelName & {}),\n    config?: gemini.GeminiImageConfig\n  ): ModelReference<gemini.GeminiImageConfigSchemaType>;\n  model(\n    name: gemini.KnownVideoModels | (gemini.VideoModelName & {}),\n    config?: gemini.GeminiVideoConfig\n  ): ModelReference<gemini.GeminiVideoConfigSchemaType>;\n  model(\n    name: gemini.KnownGeminiModels | (gemini.GeminiModelName & {}),\n    config?: gemini.GeminiConfig\n  ): ModelReference<gemini.GeminiConfigSchemaType>;\n  model(\n    name: imagen.KnownModels | (imagen.ImagenModelName & {}),\n    config?: imagen.ImagenConfig\n  ): ModelReference<imagen.ConfigSchemaType>;\n  model(\n    name: lyria.KnownModels | (lyria.LyriaModelName & {}),\n    config: lyria.LyriaConfig\n  ): ModelReference<lyria.LyriaConfigSchemaType>;\n  model(\n    name: veo.KnownModels | (veo.VeoModelName & {}),\n    config: veo.VeoConfig\n  ): ModelReference<veo.VeoConfigSchemaType>;\n  model(name: string, config?: any): ModelReference<z.ZodTypeAny>;\n\n  embedder(\n    name: embedder.KnownModels | (embedder.EmbedderModelName & {}),\n    config?: embedder.EmbeddingConfig\n  ): EmbedderReference<embedder.EmbeddingConfigSchemaType>;\n};\n\n/**\n * Google Cloud Vertex AI plugin for Genkit.\n * Includes Gemini and Imagen models and text embedder.\n */\nexport const vertexAI = vertexAIPlugin as VertexAIPlugin;\n// provide generic implementation for the model function overloads.\n(vertexAI as any).model = (\n  name: string,\n  config?: any\n): ModelReference<z.ZodTypeAny> => {\n  if (imagen.isImagenModelName(name)) {\n    return imagen.model(name, config);\n  }\n  if (lyria.isLyriaModelName(name)) {\n    return lyria.model(name, config);\n  }\n  if (veo.isVeoModelName(name)) {\n    return veo.model(name, config);\n  }\n  // gemini, image, TTS and unknown model families\n  return gemini.model(name, config);\n};\nvertexAI.embedder = (\n  name: string,\n  config?: embedder.EmbeddingConfig\n): EmbedderReference<embedder.EmbeddingConfigSchemaType> => {\n  return embedder.model(name, config);\n};\n\nexport default vertexAI;\n"],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBA;AAAA,EACE;AAAA,OAGK;AAEP,SAAS,kBAAkB;AAE3B,YAAY,cAAc;AAC1B,YAAY,YAAY;AACxB,YAAY,YAAY;AACxB,YAAY,WAAW;AACvB,YAAY,SAAS;AAGrB,SAAS,yBAAyB;AAclC,eAAe,YAAY,eAAqC;AAC9D,QAAM,gBAAgB,MAAM,kBAAkB,aAAa;AAC3D,SAAO;AAAA,IACL,GAAG,IAAI,gBAAgB,eAAe,aAAa;AAAA,IACnD,GAAG,OAAO,gBAAgB,eAAe,aAAa;AAAA,IACtD,GAAG,MAAM,gBAAgB,eAAe,aAAa;AAAA,IACrD,GAAG,OAAO,gBAAgB,eAAe,aAAa;AAAA,IACtD,GAAG,SAAS,gBAAgB,eAAe,aAAa;AAAA,EAC1D;AACF;AAEA,eAAe,SACb,YACA,YACA,eACuC;AACvC,QAAM,gBAAgB,MAAM,kBAAkB,aAAa;AAC3D,UAAQ,YAAY;AAAA,IAClB,KAAK;AACH,UAAI,MAAM,iBAAiB,UAAU,GAAG;AACtC,eAAO,MAAM,YAAY,YAAY,eAAe,aAAa;AAAA,MACnE,WAAW,OAAO,kBAAkB,UAAU,GAAG;AAC/C,eAAO,OAAO,YAAY,YAAY,eAAe,aAAa;AAAA,MACpE,WAAW,IAAI,eAAe,UAAU,GAAG;AACzC,eAAO;AAAA,MACT,OAAO;AACL,eAAO,OAAO,YAAY,YAAY,eAAe,aAAa;AAAA,MACpE;AACA;AAAA,IACF,KAAK;AACH,UAAI,IAAI,eAAe,UAAU,GAAG;AAClC,eAAO,IAAI,YAAY,YAAY,eAAe,aAAa;AAAA,MACjE;AACA;AAAA,IACF,KAAK;AACH,aAAO,SAAS,eAAe,YAAY,eAAe,aAAa;AACvE;AAAA,EACJ;AACA,SAAO;AACT;AAEA,eAAe,YAAY,SAA+B;AACxD,MAAI;AACF,UAAM,gBAAgB,MAAM,kBAAkB,OAAO;AACrD,UAAM,SAAS,MAAM,WAAW,aAAa;AAC7C,WAAO;AAAA,MACL,GAAG,OAAO,YAAY,MAAM;AAAA,MAC5B,GAAG,OAAO,YAAY,MAAM;AAAA,MAC5B,GAAG,MAAM,YAAY,MAAM;AAAA,MAC3B,GAAG,IAAI,YAAY,MAAM;AAAA;AAAA,IAE3B;AAAA,EACF,SAAS,GAAY;AAEnB,WAAO,CAAC;AAAA,EACV;AACF;AAKA,SAAS,eAAe,SAA+C;AACrE,MAAI;AACJ,SAAO,eAAe;AAAA,IACpB,MAAM;AAAA,IACN,MAAM,YAAY,MAAM,YAAY,OAAO;AAAA,IAC3C,SAAS,OAAO,YAAwB,eACtC,MAAM,SAAS,YAAY,YAAY,OAAO;AAAA,IAChD,MAAM,YAAY;AAChB,UAAI,iBAAkB,QAAO;AAC7B,yBAAmB,MAAM,YAAY,OAAO;AAC5C,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;AA4CO,MAAM,WAAW;AAEvB,SAAiB,QAAQ,CACxB,MACA,WACiC;AACjC,MAAI,OAAO,kBAAkB,IAAI,GAAG;AAClC,WAAO,OAAO,MAAM,MAAM,MAAM;AAAA,EAClC;AACA,MAAI,MAAM,iBAAiB,IAAI,GAAG;AAChC,WAAO,MAAM,MAAM,MAAM,MAAM;AAAA,EACjC;AACA,MAAI,IAAI,eAAe,IAAI,GAAG;AAC5B,WAAO,IAAI,MAAM,MAAM,MAAM;AAAA,EAC/B;AAEA,SAAO,OAAO,MAAM,MAAM,MAAM;AAClC;AACA,SAAS,WAAW,CAClB,MACA,WAC0D;AAC1D,SAAO,SAAS,MAAM,MAAM,MAAM;AACpC;AAEA,IAAO,mBAAQ;","names":[]}