@knn_labs/conduit-core-client
Version:
Official Node.js client library for Conduit Core API - OpenAI-compatible multi-provider LLM gateway
1 lines • 62 kB
Source Map (JSON)
{"version":3,"sources":["../src/utils/errors.ts","../src/client/BaseClient.ts","../src/models/images.ts","../src/utils/validation.ts","../src/utils/streaming.ts","../src/services/ChatService.ts","../src/services/ModelsService.ts","../src/services/ImagesService.ts","../src/client/ConduitCoreClient.ts","../src/utils/capabilities.ts"],"names":["CoreModelCapability"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ErrorResponse } from '../models/common';\n\nexport class ConduitError extends Error {\n public readonly statusCode?: number;\n public readonly code?: string;\n public readonly type?: string;\n public readonly param?: string;\n\n constructor(message: string, statusCode?: number, code?: string, type?: string, param?: string) {\n super(message);\n this.name = 'ConduitError';\n this.statusCode = statusCode;\n this.code = code;\n this.type = type;\n this.param = param;\n Object.setPrototypeOf(this, ConduitError.prototype);\n }\n\n static fromErrorResponse(response: ErrorResponse, statusCode?: number): ConduitError {\n return new ConduitError(\n response.error.message,\n statusCode,\n response.error.code || undefined,\n response.error.type,\n response.error.param || undefined\n );\n }\n}\n\nexport class AuthenticationError extends ConduitError {\n constructor(message: string = 'Authentication failed') {\n super(message, 401, 'authentication_error', 'invalid_request_error');\n this.name = 'AuthenticationError';\n Object.setPrototypeOf(this, AuthenticationError.prototype);\n }\n}\n\nexport class RateLimitError extends ConduitError {\n public readonly retryAfter?: number;\n\n constructor(message: string = 'Rate limit exceeded', retryAfter?: number) {\n super(message, 429, 'rate_limit_error', 'rate_limit_error');\n this.name = 'RateLimitError';\n this.retryAfter = retryAfter;\n Object.setPrototypeOf(this, RateLimitError.prototype);\n }\n}\n\nexport class ValidationError extends ConduitError {\n constructor(message: string, param?: string) {\n super(message, 400, 'validation_error', 'invalid_request_error', param);\n this.name = 'ValidationError';\n Object.setPrototypeOf(this, ValidationError.prototype);\n }\n}\n\nexport class NetworkError extends ConduitError {\n constructor(message: string = 'Network request failed') {\n super(message);\n this.name = 'NetworkError';\n Object.setPrototypeOf(this, NetworkError.prototype);\n }\n}\n\nexport class StreamError extends ConduitError {\n constructor(message: string = 'Stream processing failed') {\n super(message);\n this.name = 'StreamError';\n Object.setPrototypeOf(this, StreamError.prototype);\n }\n}","import type { AxiosInstance, AxiosRequestConfig } from 'axios';\nimport axios, { AxiosError } from 'axios';\nimport type { ClientConfig, RequestOptions, RetryConfig } from './types';\nimport type { ErrorResponse } from '../models/common';\nimport { \n ConduitError, \n AuthenticationError, \n RateLimitError, \n NetworkError \n} from '../utils/errors';\n\nexport abstract class BaseClient {\n protected readonly client: AxiosInstance;\n protected readonly config: Required<ClientConfig>;\n protected readonly retryConfig: RetryConfig;\n\n constructor(config: ClientConfig) {\n this.config = {\n apiKey: config.apiKey,\n baseURL: config.baseURL || 'https://api.conduit.ai',\n timeout: config.timeout || 60000,\n maxRetries: config.maxRetries || 3,\n headers: config.headers || {},\n debug: config.debug || false,\n };\n\n this.retryConfig = {\n maxRetries: this.config.maxRetries,\n initialDelay: 1000,\n maxDelay: 30000,\n factor: 2,\n };\n\n this.client = axios.create({\n baseURL: this.config.baseURL,\n timeout: this.config.timeout,\n headers: {\n 'Authorization': `Bearer ${this.config.apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': '@conduit/core/0.1.0',\n ...this.config.headers,\n },\n });\n\n this.setupInterceptors();\n }\n\n private setupInterceptors(): void {\n this.client.interceptors.request.use(\n (config) => {\n if (this.config.debug) {\n console.debug(`[Conduit] ${config.method?.toUpperCase()} ${config.url}`);\n }\n return config;\n },\n (error) => {\n if (this.config.debug) {\n console.error('[Conduit] Request error:', error);\n }\n return Promise.reject(error);\n }\n );\n\n this.client.interceptors.response.use(\n (response) => {\n if (this.config.debug) {\n console.debug(`[Conduit] Response ${response.status} from ${response.config.url}`);\n }\n return response;\n },\n (error) => {\n if (this.config.debug) {\n console.error('[Conduit] Response error:', error);\n }\n return Promise.reject(error);\n }\n );\n }\n\n protected async request<T>(\n config: AxiosRequestConfig,\n options?: RequestOptions\n ): Promise<T> {\n const requestConfig: AxiosRequestConfig = {\n ...config,\n signal: options?.signal,\n timeout: options?.timeout || this.config.timeout,\n headers: {\n ...config.headers,\n ...options?.headers,\n ...(options?.correlationId && { 'X-Correlation-Id': options.correlationId }),\n },\n };\n\n return this.executeWithRetry<T>(requestConfig);\n }\n\n private async executeWithRetry<T>(\n config: AxiosRequestConfig,\n attempt: number = 1\n ): Promise<T> {\n try {\n const response = await this.client.request<T>(config);\n return response.data;\n } catch (error) {\n if (attempt >= this.retryConfig.maxRetries) {\n throw this.handleError(error);\n }\n\n if (this.shouldRetry(error)) {\n const delay = this.calculateDelay(attempt);\n if (this.config.debug) {\n console.debug(`[Conduit] Retrying request (attempt ${attempt + 1}) after ${delay}ms`);\n }\n await this.sleep(delay);\n return this.executeWithRetry<T>(config, attempt + 1);\n }\n\n throw this.handleError(error);\n }\n }\n\n private shouldRetry(error: unknown): boolean {\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n if (status === 429 || status === 503 || status === 504) {\n return true;\n }\n if (!error.response && error.code === 'ECONNABORTED') {\n return true;\n }\n }\n return false;\n }\n\n private calculateDelay(attempt: number): number {\n const delay = Math.min(\n this.retryConfig.initialDelay * Math.pow(this.retryConfig.factor, attempt - 1),\n this.retryConfig.maxDelay\n );\n return delay + Math.random() * 1000;\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n private handleError(error: unknown): Error {\n if (error instanceof AxiosError) {\n const status = error.response?.status;\n const data = error.response?.data as unknown;\n\n if (data && this.isErrorResponse(data)) {\n const errorData = data;\n if (status === 401) {\n return new AuthenticationError(errorData.error.message);\n }\n if (status === 429) {\n const retryAfter = error.response?.headers['retry-after'] as string | undefined;\n return new RateLimitError(\n errorData.error.message,\n retryAfter ? parseInt(retryAfter, 10) : undefined\n );\n }\n return ConduitError.fromErrorResponse(errorData, status);\n }\n\n if (!error.response) {\n return new NetworkError(error.message || 'Network request failed');\n }\n\n return new ConduitError(\n error.message || 'Request failed',\n status,\n error.code\n );\n }\n\n if (error instanceof Error) {\n return error;\n }\n\n return new ConduitError('An unknown error occurred');\n }\n\n private isErrorResponse(data: unknown): data is ErrorResponse {\n return !!data && typeof data === 'object' && 'error' in data;\n }\n}","/**\n * Image generation models and interfaces for OpenAI-compatible API\n */\n\nexport interface ImageGenerationRequest {\n /**\n * A text description of the desired image(s). The maximum length is 1000 characters for dall-e-2 and 4000 characters for dall-e-3.\n */\n prompt: string;\n\n /**\n * The model to use for image generation.\n */\n model?: string;\n\n /**\n * The number of images to generate. Must be between 1 and 10. For dall-e-3, only n=1 is supported.\n */\n n?: number;\n\n /**\n * The quality of the image that will be generated. hd creates images with finer details and greater consistency across the image. This param is only supported for dall-e-3.\n */\n quality?: 'standard' | 'hd';\n\n /**\n * The format in which the generated images are returned. Must be one of url or b64_json.\n */\n response_format?: 'url' | 'b64_json';\n\n /**\n * The size of the generated images. Must be one of 256x256, 512x512, or 1024x1024 for dall-e-2. Must be one of 1024x1024, 1792x1024, or 1024x1792 for dall-e-3 models.\n */\n size?: '256x256' | '512x512' | '1024x1024' | '1792x1024' | '1024x1792';\n\n /**\n * The style of the generated images. Must be one of vivid or natural. Vivid causes the model to lean towards generating hyper-real and dramatic images. Natural causes the model to produce more natural, less hyper-real looking images. This param is only supported for dall-e-3.\n */\n style?: 'vivid' | 'natural';\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. Learn more.\n */\n user?: string;\n}\n\nexport interface ImageData {\n /**\n * The base64-encoded JSON of the generated image, if response_format is b64_json.\n */\n b64_json?: string;\n\n /**\n * The URL of the generated image, if response_format is url (default).\n */\n url?: string;\n\n /**\n * The prompt that was used to generate the image, if there was any revision to the prompt.\n */\n revised_prompt?: string;\n}\n\nexport interface ImageGenerationResponse {\n /**\n * The Unix timestamp (in seconds) when the image was created.\n */\n created: number;\n\n /**\n * The list of generated images.\n */\n data: ImageData[];\n}\n\nexport interface ImageEditRequest {\n /**\n * The image to edit. Must be a valid PNG file, less than 4MB, and square. If mask is not provided, image must have transparency, which will be used as the mask.\n */\n image: File | Blob;\n\n /**\n * A text description of the desired image(s). The maximum length is 1000 characters.\n */\n prompt: string;\n\n /**\n * An additional image whose fully transparent areas (e.g. where alpha is zero) indicate where image should be edited. Must be a valid PNG file, less than 4MB, and have the same dimensions as image.\n */\n mask?: File | Blob;\n\n /**\n * The model to use for image editing. Only dall-e-2 is supported at this time.\n */\n model?: string;\n\n /**\n * The number of images to generate. Must be between 1 and 10.\n */\n n?: number;\n\n /**\n * The format in which the generated images are returned. Must be one of url or b64_json.\n */\n response_format?: 'url' | 'b64_json';\n\n /**\n * The size of the generated images. Must be one of 256x256, 512x512, or 1024x1024.\n */\n size?: '256x256' | '512x512' | '1024x1024';\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse.\n */\n user?: string;\n}\n\nexport interface ImageVariationRequest {\n /**\n * The image to use as the basis for the variation(s). Must be a valid PNG file, less than 4MB, and square.\n */\n image: File | Blob;\n\n /**\n * The model to use for image variation. Only dall-e-2 is supported at this time.\n */\n model?: string;\n\n /**\n * The number of images to generate. Must be between 1 and 10.\n */\n n?: number;\n\n /**\n * The format in which the generated images are returned. Must be one of url or b64_json.\n */\n response_format?: 'url' | 'b64_json';\n\n /**\n * The size of the generated images. Must be one of 256x256, 512x512, or 1024x1024.\n */\n size?: '256x256' | '512x512' | '1024x1024';\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse.\n */\n user?: string;\n}\n\nexport type ImageEditResponse = ImageGenerationResponse;\nexport type ImageVariationResponse = ImageGenerationResponse;\n\n/**\n * Supported image generation models\n */\nexport const IMAGE_MODELS = {\n DALL_E_2: 'dall-e-2',\n DALL_E_3: 'dall-e-3',\n MINIMAX_IMAGE: 'minimax-image',\n} as const;\n\nexport type ImageModel = typeof IMAGE_MODELS[keyof typeof IMAGE_MODELS];\n\n/**\n * Model-specific capabilities and constraints\n */\nexport const IMAGE_MODEL_CAPABILITIES = {\n [IMAGE_MODELS.DALL_E_2]: {\n maxPromptLength: 1000,\n supportedSizes: ['256x256', '512x512', '1024x1024'] as const,\n supportedQualities: ['standard'] as const,\n supportedStyles: [] as const,\n maxImages: 10,\n supportsEdit: true,\n supportsVariation: true,\n },\n [IMAGE_MODELS.DALL_E_3]: {\n maxPromptLength: 4000,\n supportedSizes: ['1024x1024', '1792x1024', '1024x1792'] as const,\n supportedQualities: ['standard', 'hd'] as const,\n supportedStyles: ['vivid', 'natural'] as const,\n maxImages: 1,\n supportsEdit: false,\n supportsVariation: false,\n },\n [IMAGE_MODELS.MINIMAX_IMAGE]: {\n maxPromptLength: 2000,\n supportedSizes: ['1024x1024', '1792x1024', '1024x1792'] as const,\n supportedQualities: ['standard', 'hd'] as const,\n supportedStyles: ['vivid', 'natural'] as const,\n maxImages: 4,\n supportsEdit: false,\n supportsVariation: false,\n },\n} as const;\n\n/**\n * Default values for image generation requests\n */\nexport const IMAGE_DEFAULTS = {\n model: IMAGE_MODELS.DALL_E_3,\n n: 1,\n quality: 'standard' as const,\n response_format: 'url' as const,\n size: '1024x1024' as const,\n style: 'vivid' as const,\n} as const;","import type { ChatCompletionRequest } from '../models/chat';\nimport type { ImageGenerationRequest } from '../models/images';\nimport { ValidationError } from './errors';\nimport { IMAGE_MODEL_CAPABILITIES } from '../models/images';\n\nexport function validateChatCompletionRequest(request: ChatCompletionRequest): void {\n if (!request.model) {\n throw new ValidationError('Model is required', 'model');\n }\n\n if (!request.messages || !Array.isArray(request.messages)) {\n throw new ValidationError('Messages must be an array', 'messages');\n }\n\n if (request.messages.length === 0) {\n throw new ValidationError('Messages array cannot be empty', 'messages');\n }\n\n for (let i = 0; i < request.messages.length; i++) {\n const message = request.messages[i];\n \n if (!message.role) {\n throw new ValidationError(`Message at index ${i} must have a role`, 'messages');\n }\n\n const validRoles = ['system', 'user', 'assistant', 'tool'];\n if (!validRoles.includes(message.role)) {\n throw new ValidationError(\n `Invalid role '${message.role}' at index ${i}. Must be one of: ${validRoles.join(', ')}`,\n 'messages'\n );\n }\n\n if (message.content === null && !message.tool_calls) {\n throw new ValidationError(\n `Message at index ${i} must have content or tool_calls`,\n 'messages'\n );\n }\n\n if (message.role === 'tool' && !message.tool_call_id) {\n throw new ValidationError(\n `Tool message at index ${i} must have tool_call_id`,\n 'messages'\n );\n }\n }\n\n if (request.temperature !== undefined) {\n if (request.temperature < 0 || request.temperature > 2) {\n throw new ValidationError('Temperature must be between 0 and 2', 'temperature');\n }\n }\n\n if (request.top_p !== undefined) {\n if (request.top_p < 0 || request.top_p > 1) {\n throw new ValidationError('top_p must be between 0 and 1', 'top_p');\n }\n }\n\n if (request.frequency_penalty !== undefined) {\n if (request.frequency_penalty < -2 || request.frequency_penalty > 2) {\n throw new ValidationError('frequency_penalty must be between -2 and 2', 'frequency_penalty');\n }\n }\n\n if (request.presence_penalty !== undefined) {\n if (request.presence_penalty < -2 || request.presence_penalty > 2) {\n throw new ValidationError('presence_penalty must be between -2 and 2', 'presence_penalty');\n }\n }\n\n if (request.n !== undefined && request.n < 1) {\n throw new ValidationError('n must be at least 1', 'n');\n }\n\n if (request.max_tokens !== undefined && request.max_tokens < 1) {\n throw new ValidationError('max_tokens must be at least 1', 'max_tokens');\n }\n}\n\nexport function validateImageGenerationRequest(request: ImageGenerationRequest): void {\n if (!request.prompt) {\n throw new ValidationError('Prompt is required', 'prompt');\n }\n\n if (request.prompt.trim().length === 0) {\n throw new ValidationError('Prompt cannot be empty', 'prompt');\n }\n\n // Validate model-specific constraints\n if (request.model && IMAGE_MODEL_CAPABILITIES[request.model as keyof typeof IMAGE_MODEL_CAPABILITIES]) {\n const capabilities = IMAGE_MODEL_CAPABILITIES[request.model as keyof typeof IMAGE_MODEL_CAPABILITIES];\n \n if (request.prompt.length > capabilities.maxPromptLength) {\n throw new ValidationError(\n `Prompt exceeds maximum length of ${capabilities.maxPromptLength} characters for model ${request.model}`,\n 'prompt'\n );\n }\n\n if (request.n !== undefined && request.n > capabilities.maxImages) {\n throw new ValidationError(\n `Number of images (${request.n}) exceeds maximum of ${capabilities.maxImages} for model ${request.model}`,\n 'n'\n );\n }\n\n if (request.size && !capabilities.supportedSizes.includes(request.size as any)) {\n throw new ValidationError(\n `Size '${request.size}' is not supported for model ${request.model}. Supported sizes: ${capabilities.supportedSizes.join(', ')}`,\n 'size'\n );\n }\n\n if (request.quality && !capabilities.supportedQualities.includes(request.quality as any)) {\n throw new ValidationError(\n `Quality '${request.quality}' is not supported for model ${request.model}. Supported qualities: ${capabilities.supportedQualities.join(', ')}`,\n 'quality'\n );\n }\n\n if (request.style && capabilities.supportedStyles.length > 0 && !capabilities.supportedStyles.includes(request.style as any)) {\n throw new ValidationError(\n `Style '${request.style}' is not supported for model ${request.model}. Supported styles: ${capabilities.supportedStyles.join(', ')}`,\n 'style'\n );\n }\n }\n\n // General validations\n if (request.n !== undefined && (request.n < 1 || request.n > 10)) {\n throw new ValidationError('Number of images must be between 1 and 10', 'n');\n }\n\n if (request.response_format && !['url', 'b64_json'].includes(request.response_format)) {\n throw new ValidationError('response_format must be either \"url\" or \"b64_json\"', 'response_format');\n }\n\n if (request.quality && !['standard', 'hd'].includes(request.quality)) {\n throw new ValidationError('quality must be either \"standard\" or \"hd\"', 'quality');\n }\n\n if (request.style && !['vivid', 'natural'].includes(request.style)) {\n throw new ValidationError('style must be either \"vivid\" or \"natural\"', 'style');\n }\n\n const validSizes = ['256x256', '512x512', '1024x1024', '1792x1024', '1024x1792'];\n if (request.size && !validSizes.includes(request.size)) {\n throw new ValidationError(\n `size must be one of: ${validSizes.join(', ')}`,\n 'size'\n );\n }\n}","import type { SSEMessage, StreamEvent } from '../models/streaming';\nimport type { ChatCompletionChunk } from '../models/chat';\nimport { StreamError } from './errors';\n\nexport function parseSSEMessage(line: string): SSEMessage | null {\n if (!line || line.startsWith(':')) {\n return null;\n }\n\n const message: SSEMessage = { data: '' };\n const colonIndex = line.indexOf(':');\n\n if (colonIndex === -1) {\n message.data = line;\n } else {\n const field = line.substring(0, colonIndex);\n const value = line.substring(colonIndex + 1).trim();\n\n switch (field) {\n case 'data':\n message.data = value;\n break;\n case 'event':\n message.event = value;\n break;\n case 'id':\n message.id = value;\n break;\n case 'retry':\n message.retry = parseInt(value, 10);\n break;\n }\n }\n\n return message;\n}\n\nexport function parseSSEStream(text: string): SSEMessage[] {\n const lines = text.split('\\n');\n const messages: SSEMessage[] = [];\n let currentMessage: Partial<SSEMessage> = {};\n\n for (const line of lines) {\n if (line.trim() === '') {\n if (currentMessage.data !== undefined) {\n messages.push(currentMessage as SSEMessage);\n currentMessage = {};\n }\n continue;\n }\n\n const parsed = parseSSEMessage(line);\n if (parsed) {\n Object.assign(currentMessage, parsed);\n }\n }\n\n if (currentMessage.data !== undefined) {\n messages.push(currentMessage as SSEMessage);\n }\n\n return messages;\n}\n\nexport function parseStreamEvent(data: string): StreamEvent | null {\n if (data === '[DONE]') {\n return '[DONE]';\n }\n\n try {\n return JSON.parse(data) as ChatCompletionChunk;\n } catch (error) {\n throw new StreamError(`Failed to parse stream event: ${data}`);\n }\n}\n\nexport async function* streamAsyncIterator(\n stream: NodeJS.ReadableStream\n): AsyncGenerator<ChatCompletionChunk, void, unknown> {\n let buffer = '';\n\n for await (const chunk of stream) {\n buffer += chunk.toString();\n const lines = buffer.split('\\n');\n \n buffer = lines.pop() || '';\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n if (trimmedLine === '' || trimmedLine.startsWith(':')) {\n continue;\n }\n\n if (trimmedLine.startsWith('data: ')) {\n const data = trimmedLine.slice(6);\n \n if (data === '[DONE]') {\n return;\n }\n\n try {\n const event = JSON.parse(data) as ChatCompletionChunk;\n yield event;\n } catch (error) {\n console.error('Failed to parse SSE data:', data);\n throw new StreamError(`Failed to parse stream event: ${data}`);\n }\n }\n }\n }\n\n if (buffer.trim()) {\n console.warn('Unprocessed data in buffer:', buffer);\n }\n}","import type { BaseClient } from '../client/BaseClient';\nimport type { RequestOptions } from '../client/types';\nimport type { \n ChatCompletionRequest, \n ChatCompletionResponse,\n ChatCompletionChunk \n} from '../models/chat';\nimport { validateChatCompletionRequest } from '../utils/validation';\nimport { streamAsyncIterator } from '../utils/streaming';\n\nexport class ChatService {\n constructor(private readonly client: BaseClient) {}\n\n async create(\n request: ChatCompletionRequest & { stream?: false },\n options?: RequestOptions\n ): Promise<ChatCompletionResponse>;\n async create(\n request: ChatCompletionRequest & { stream: true },\n options?: RequestOptions\n ): Promise<AsyncGenerator<ChatCompletionChunk, void, unknown>>;\n async create(\n request: ChatCompletionRequest,\n options?: RequestOptions\n ): Promise<ChatCompletionResponse | AsyncGenerator<ChatCompletionChunk, void, unknown>> {\n validateChatCompletionRequest(request);\n\n if (request.stream === true) {\n return this.createStream(request as ChatCompletionRequest & { stream: true }, options);\n }\n\n return this.createCompletion(request, options);\n }\n\n private async createCompletion(\n request: ChatCompletionRequest,\n options?: RequestOptions\n ): Promise<ChatCompletionResponse> {\n return this.client['request']<ChatCompletionResponse>(\n {\n method: 'POST',\n url: '/v1/chat/completions',\n data: request,\n },\n options\n );\n }\n\n private async createStream(\n request: ChatCompletionRequest & { stream: true },\n options?: RequestOptions\n ): Promise<AsyncGenerator<ChatCompletionChunk, void, unknown>> {\n const response = await this.client['client'].post('/v1/chat/completions', request, {\n responseType: 'stream',\n signal: options?.signal,\n timeout: 0,\n headers: {\n ...options?.headers,\n ...(options?.correlationId && { 'X-Correlation-Id': options.correlationId }),\n },\n });\n\n return streamAsyncIterator(response.data as NodeJS.ReadableStream);\n }\n}","import type { BaseClient } from '../client/BaseClient';\nimport type { RequestOptions } from '../client/types';\nimport type { Model, ModelsResponse } from '../models/models';\n\nexport class ModelsService {\n private cachedModels?: Model[];\n private cacheExpiry?: number;\n private readonly cacheTTL = 5 * 60 * 1000; // 5 minutes\n\n constructor(private readonly client: BaseClient) {}\n\n async list(options?: RequestOptions & { useCache?: boolean }): Promise<Model[]> {\n if (options?.useCache !== false && this.isCacheValid()) {\n return this.cachedModels as Model[];\n }\n\n const response = await this.client['request']<ModelsResponse>(\n {\n method: 'GET',\n url: '/v1/models',\n },\n options\n );\n\n this.cachedModels = response.data;\n this.cacheExpiry = Date.now() + this.cacheTTL;\n\n return response.data;\n }\n\n async get(modelId: string, options?: RequestOptions): Promise<Model | null> {\n const models = await this.list(options);\n return models.find(model => model.id === modelId) || null;\n }\n\n async exists(modelId: string, options?: RequestOptions): Promise<boolean> {\n const model = await this.get(modelId, options);\n return model !== null;\n }\n\n clearCache(): void {\n this.cachedModels = undefined;\n this.cacheExpiry = undefined;\n }\n\n private isCacheValid(): boolean {\n return !!(this.cachedModels && this.cacheExpiry && Date.now() < this.cacheExpiry);\n }\n}","import type { BaseClient } from '../client/BaseClient';\nimport type { RequestOptions } from '../client/types';\nimport type { \n ImageGenerationRequest, \n ImageGenerationResponse,\n ImageEditRequest,\n ImageEditResponse,\n ImageVariationRequest,\n ImageVariationResponse\n} from '../models/images';\nimport { validateImageGenerationRequest } from '../utils/validation';\n\nexport class ImagesService {\n constructor(private readonly client: BaseClient) {}\n\n /**\n * Creates an image given a text prompt.\n * @param request The image generation request\n * @param options Optional request options\n * @returns Promise resolving to image generation response\n */\n async generate(\n request: ImageGenerationRequest,\n options?: RequestOptions\n ):