/** * Drop-in replacement for Google's Generative AI SDK. * Swap your import to get permit-first governance transparently. * * BEFORE: import { GoogleGenerativeAI } from "@google/generative-ai"; * AFTER: import { GoogleGenerativeAI } from "keel-sdk/providers/google"; * * The wrapper does NOT depend on the `@google/generative-ai` npm package. * It talks to Keel's proxy endpoint, which handles the provider call. */ import { KeelClient } from "../client"; export interface Part { text?: string; inlineData?: { mimeType: string; data: string; }; } export interface Content { role?: "user" | "model"; parts: Part[]; } export interface GenerateContentRequest { contents: Content[]; generationConfig?: GenerationConfig; safetySettings?: SafetySetting[]; systemInstruction?: Content; [key: string]: unknown; } export interface GenerationConfig { temperature?: number; topP?: number; topK?: number; maxOutputTokens?: number; stopSequences?: string[]; candidateCount?: number; [key: string]: unknown; } export interface SafetySetting { category: string; threshold: string; } export interface GenerateContentCandidate { content: Content; finishReason: string; index: number; safetyRatings?: Array<{ category: string; probability: string; }>; } export interface UsageMetadata { promptTokenCount: number; candidatesTokenCount: number; totalTokenCount: number; } export interface GenerateContentResponse { candidates: GenerateContentCandidate[]; usageMetadata?: UsageMetadata; } export interface GenerateContentResult { response: GenerateContentResponse; } export interface GenerateContentChunk { candidates: GenerateContentCandidate[]; usageMetadata?: UsageMetadata; } export interface GoogleConfig { /** Ignored -- Keel manages provider keys. Accepted for API compatibility. */ apiKey?: string; /** Keel API base URL. Defaults to KEEL_BASE_URL env var. */ keelBaseUrl?: string; /** Keel API key. Defaults to KEEL_API_KEY env var. */ keelApiKey?: string; /** Keel project ID. Defaults to KEEL_PROJECT_ID env var. */ keelProjectId?: string; /** Subject for permit requests. */ keelSubject?: { type: string; id: string; }; /** Request timeout in milliseconds. */ timeout?: number; /** Maximum retries on transient errors. */ maxRetries?: number; } export declare class GenerativeModel { private readonly keel; private readonly projectId; private readonly subject; readonly model: string; /** @internal — use GoogleGenerativeAI.getGenerativeModel() instead. */ constructor(keel: KeelClient, projectId: string, subject: { type: string; id: string; }, model: string); generateContent(request: GenerateContentRequest): Promise; generateContentStream(request: GenerateContentRequest): Promise>; } export declare class GoogleGenerativeAI { private readonly keel; private readonly projectId; private readonly subject; constructor(config?: GoogleConfig); getGenerativeModel(params: { model: string; }): GenerativeModel; }