hatch-slidev-builder-mcp
Version:
A comprehensive MCP server for creating Slidev presentations with component library, interactive elements, and team collaboration features
82 lines (81 loc) • 2.33 kB
TypeScript
/**
* Layer 3: Asset Intelligence Engine
* Smart asset curation and management with semantic matching
*/
export interface AssetMetadata {
id: string;
type: 'icon' | 'image' | 'video' | 'chart' | 'diagram' | 'logo';
source: 'unsplash' | 'iconify' | 'freepik' | 'huggingface' | 'local' | 'supabase';
url: string;
thumbnail_url?: string;
alt_text: string;
tags: string[];
semantic_score: number;
brand_compliance: boolean;
cultural_appropriateness: boolean;
license: 'free' | 'attribution' | 'premium';
dimensions?: {
width: number;
height: number;
};
}
export interface AssetRecommendation {
assets: AssetMetadata[];
reasoning: string;
confidence_score: number;
fallback_options: AssetMetadata[];
}
export interface AssetQuery {
content_context: string;
slide_type: string;
target_audience: string;
brand_guidelines?: string;
cultural_context?: string;
preferred_style?: 'professional' | 'casual' | 'technical' | 'creative';
}
export declare class AssetIntelligenceEngine {
/**
* Curate assets based on content context and brand guidelines
*/
static curateAssets(query: AssetQuery): Promise<AssetRecommendation>;
/**
* Extract search terms from content context
*/
private static extractSearchTerms;
/**
* Get style filter based on preferences
*/
private static getStyleFilter;
/**
* Search Unsplash for relevant images
*/
private static searchUnsplash;
/**
* Search Iconify for relevant icons
*/
private static searchIconify;
/**
* Search Freepik for premium assets
*/
private static searchFreepik;
/**
* Score assets based on relevance and context
*/
private static scoreAssets;
/**
* Generate reasoning for asset recommendations
*/
private static generateReasoning;
/**
* Calculate confidence score for recommendations
*/
private static calculateConfidenceScore;
/**
* Validate asset against brand guidelines
*/
static validateBrandCompliance(asset: AssetMetadata, brandGuidelines: any): boolean;
/**
* Check cultural appropriateness
*/
static checkCulturalAppropriateness(asset: AssetMetadata, context: string): boolean;
}