MCP Terminal Server

/** * Copyright 2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { Genkit } from 'genkit'; import { GenkitPlugin, genkitPlugin } from 'genkit/plugin'; import { getDerivedParams } from '../common/index.js'; import { SUPPORTED_ANTHROPIC_MODELS, anthropicModel } from './anthropic.js'; import { SUPPORTED_MISTRAL_MODELS, mistralModel } from './mistral.js'; import { SUPPORTED_OPENAI_FORMAT_MODELS, modelGardenOpenaiCompatibleModel, } from './model_garden.js'; import { PluginOptions } from './types.js'; /** * Add Google Cloud Vertex AI Rerankers API to Genkit. */ export function vertexAIModelGarden(options: PluginOptions): GenkitPlugin { return genkitPlugin('vertexAIModelGarden', async (ai: Genkit) => { const { projectId, location, authClient } = await getDerivedParams(options); options.models.forEach((m) => { const anthropicEntry = Object.entries(SUPPORTED_ANTHROPIC_MODELS).find( ([_, value]) => value.name === m.name ); if (anthropicEntry) { anthropicModel(ai, anthropicEntry[0], projectId, location); return; } const mistralEntry = Object.entries(SUPPORTED_MISTRAL_MODELS).find( ([_, value]) => value.name === m.name ); if (mistralEntry) { mistralModel(ai, mistralEntry[0], projectId, location); return; } const openaiModel = Object.entries(SUPPORTED_OPENAI_FORMAT_MODELS).find( ([_, value]) => value.name === m.name ); if (openaiModel) { modelGardenOpenaiCompatibleModel( ai, openaiModel[0], projectId, location, authClient, options.openAiBaseUrlTemplate ); return; } throw new Error(`Unsupported model garden model: ${m.name}`); }); }); } export { claude35Sonnet, claude35SonnetV2, claude3Haiku, claude3Opus, claude3Sonnet, } from './anthropic.js'; export { codestral, mistralLarge, mistralNemo } from './mistral.js'; export { llama3, llama31, llama32 } from './model_garden.js'; export type { PluginOptions };