supa-seed
Version:
A constraint-aware, framework-agnostic database seeding framework with deep PostgreSQL business logic discovery and MakerKit integration support
128 lines • 3.77 kB
TypeScript
/**
* AI-Powered Asset Generation System
* Phase 5, Checkpoint E1 - Complete AI integration for intelligent asset and template generation
*/
import { OllamaClient } from './ollama-client';
import { DomainPromptEngine, PromptContext } from './prompt-engine';
import { AIResponseCache } from './response-cache';
import { SchemaInfo } from '../core/schema-adapter';
import { Template } from '../features/generation/template-engine';
export interface GenerationOptions {
useCache?: boolean;
cacheTimeout?: number;
fallbackToFaker?: boolean;
maxRetries?: number;
qualityThreshold?: number;
model?: string;
temperature?: number;
tags?: string[];
}
export interface AssetGenerationResult {
success: boolean;
data?: any;
metadata: {
source: 'ai' | 'cache' | 'fallback';
model?: string;
responseTime: number;
quality?: number;
tokensUsed?: number;
cacheHit: boolean;
};
errors: string[];
warnings: string[];
}
export interface TemplateRecommendation {
template: Partial<Template>;
confidence: number;
reasoning: string;
suggestedVariables: Array<{
name: string;
type: string;
description: string;
required: boolean;
suggestedDefault?: any;
}>;
}
export interface SchemaAnalysis {
improvements: Array<{
category: 'relationships' | 'indexes' | 'constraints' | 'seeding';
title: string;
description: string;
priority: 'low' | 'medium' | 'high';
implementation: string;
}>;
seedingStrategy: {
order: string[];
relationships: Array<{
from: string;
to: string;
type: string;
}>;
estimatedTime: number;
};
qualityScore: number;
}
export declare class AIAssetGenerator {
private ollama;
private promptEngine;
private cache;
constructor(ollama?: OllamaClient, promptEngine?: DomainPromptEngine, cache?: AIResponseCache);
/**
* Generate realistic seed data using AI
*/
generateSeedData(table: string, count: number, context: PromptContext, options?: GenerationOptions): Promise<AssetGenerationResult>;
/**
* Generate intelligent template recommendations
*/
recommendTemplate(context: PromptContext, templateType: string, options?: GenerationOptions): Promise<TemplateRecommendation | null>;
/**
* Analyze schema and suggest improvements
*/
analyzeSchema(schema: SchemaInfo, options?: GenerationOptions): Promise<SchemaAnalysis | null>;
/**
* Generate contextual field suggestions
*/
suggestFields(table: string, existingColumns: Array<{
name: string;
type: string;
}>, domain: string, options?: GenerationOptions): Promise<Array<{
name: string;
type: string;
description: string;
required: boolean;
}>>;
/**
* Get AI service status
*/
getStatus(): Promise<{
ai_available: boolean;
model: string;
cache_stats: any;
recommendations: string[];
}>;
/**
* Clear AI cache
*/
clearCache(criteria?: {
tags?: string[];
model?: string;
}): number;
/**
* Private: Fallback to Faker.js generation
*/
private fallbackToFaker;
/**
* Private: Assess quality of generated data
*/
private assessDataQuality;
/**
* Private: Parse template recommendation from AI response
*/
private parseTemplateRecommendation;
/**
* Private: Parse schema analysis from AI response
*/
private parseSchemaAnalysis;
}
export declare const aiAssetGenerator: AIAssetGenerator;
//# sourceMappingURL=asset-generator.d.ts.map