/** * @license * Copyright 2025 OSAgent OC * SPDX-License-Identifier: Apache-2.0 */ import type { CountTokensParameters, CountTokensResponse, EmbedContentParameters, EmbedContentResponse, GenerateContentParameters, GenerateContentResponse } from '@google/genai'; import type { Config } from '../config/config.js'; import type { UserTierId } from '../code_assist/types.js'; /** * Interface abstracting the core functionalities for generating content and counting tokens. */ export interface ContentGenerator { generateContent(request: GenerateContentParameters, userPromptId: string): Promise; generateContentStream(request: GenerateContentParameters, userPromptId: string): Promise>; countTokens(request: CountTokensParameters): Promise; embedContent(request: EmbedContentParameters): Promise; userTier?: UserTierId; } export declare enum AuthType { LOGIN_WITH_OSAGENT = "oauth-personal", USE_OSA = "OSA-api-key", USE_VERTEX_AI = "vertex-ai", CLOUD_SHELL = "cloud-shell", USE_OPENAI = "openai", OSA_OAUTH = "OSA-oauth", OLLAMA_CLOUD = "ollama-cloud", OLLAMA_LOCAL = "ollama-local", USE_GROQ = "groq" } export type ContentGeneratorConfig = { model: string; apiKey?: string; baseUrl?: string; vertexai?: boolean; authType?: AuthType | undefined; enableOpenAILogging?: boolean; openAILoggingDir?: string; timeout?: number; maxRetries?: number; disableCacheControl?: boolean; samplingParams?: { top_p?: number; top_k?: number; repetition_penalty?: number; presence_penalty?: number; frequency_penalty?: number; temperature?: number; max_tokens?: number; }; proxy?: string | undefined; userAgent?: string; }; export declare function createContentGeneratorConfig(config: Config, authType: AuthType | undefined, generationConfig?: Partial): ContentGeneratorConfig; export declare function createContentGenerator(config: ContentGeneratorConfig, gcConfig: Config, sessionId?: string, isInitialAuth?: boolean): Promise;