UNPKG

claritykit-svelte

Version:

A comprehensive Svelte component library focused on accessibility, ADHD-optimized design, developer experience, and full SSR compatibility

534 lines 15.6 kB
import type { HTMLAttributes } from 'svelte/elements'; export type DiscoveryMethod = 'url' | 'domain' | 'search' | 'auto'; export type DiscoveryStatus = 'pending' | 'discovering' | 'completed' | 'failed'; export type APIComplexity = 'simple' | 'moderate' | 'complex'; export interface DiscoveryRequest { id: string; method: DiscoveryMethod; input: string; serviceName: string; customHeaders?: Record<string, string>; followRedirects?: boolean; validateSchema?: boolean; timeout?: number; status: DiscoveryStatus; startedAt: Date; completedAt?: Date; error?: string; retryCount?: number; } export interface DiscoveryResult { requestId: string; specifications: APISpecification[]; discoveryMetadata: { methodUsed: DiscoveryMethod; urlsTested?: string[]; searchQuery?: string; totalAttempts: number; executionTime: number; }; fastmcpAnalysis?: FastMCPAnalysis; qualityAssessment?: { overallScore: number; completeness: number; documentation: number; standardCompliance: number; issues: string[]; recommendations: string[]; }; } export interface APISpecification { id: string; serviceName: string; title: string; version: string; description?: string; baseUrl: string; specUrl: string; openApiVersion: string; discoveredAt: Date; discoveryMethod?: DiscoveryMethod; endpoints: APIEndpoint[]; schemas: Record<string, SchemaDefinition>; authMethods: AuthenticationMethod[]; category?: string; tags?: string[]; complexity: APIComplexity; quality?: { score: number; issues: QualityIssue[]; suggestions: string[]; }; capabilities?: { crud: boolean; realtime: boolean; webhooks: boolean; pagination: boolean; filtering: boolean; rateLimit: boolean; caching: boolean; }; technicalDetails?: { dataFormats: string[]; compressionSupport: boolean; httpMethods: string[]; statusCodes: number[]; contentTypes: string[]; }; } export interface APIEndpoint { path: string; method: string; operationId: string; summary?: string; description?: string; tags?: string[]; parameters: EndpointParameter[]; requestBody?: { required: boolean; contentType: string; schema: SchemaDefinition; examples?: Record<string, any>; }; responses: Record<string, { description: string; schema?: SchemaDefinition; examples?: Record<string, any>; headers?: Record<string, ParameterDefinition>; }>; security?: Array<Record<string, string[]>>; deprecated?: boolean; externalDocs?: { description: string; url: string; }; } export interface EndpointParameter { name: string; in: 'path' | 'query' | 'header' | 'cookie'; type: string; required: boolean; description?: string; schema?: SchemaDefinition; examples?: Record<string, any>; minimum?: number; maximum?: number; pattern?: string; enum?: any[]; default?: any; } export interface SchemaDefinition { type: string; format?: string; description?: string; properties?: Record<string, SchemaDefinition>; required?: string[]; items?: SchemaDefinition; additionalProperties?: boolean | SchemaDefinition; enum?: any[]; example?: any; minimum?: number; maximum?: number; exclusiveMinimum?: boolean; exclusiveMaximum?: boolean; minLength?: number; maxLength?: number; pattern?: string; minItems?: number; maxItems?: number; uniqueItems?: boolean; } export interface ParameterDefinition { type: string; description?: string; required?: boolean; schema?: SchemaDefinition; } export interface AuthenticationMethod { type: 'apiKey' | 'oauth2' | 'bearer' | 'basic' | 'mutual' | 'openIdConnect'; name: string; location?: 'header' | 'query' | 'cookie'; description?: string; flows?: { implicit?: OAuth2Flow; password?: OAuth2Flow; clientCredentials?: OAuth2Flow; authorizationCode?: OAuth2Flow; }; openIdConnectUrl?: string; scheme?: string; bearerFormat?: string; } export interface OAuth2Flow { authorizationUrl?: string; tokenUrl?: string; refreshUrl?: string; scopes: Record<string, string>; } export interface QualityIssue { type: 'missing_description' | 'invalid_schema' | 'broken_reference' | 'inconsistent_naming' | 'security_issue'; severity: 'low' | 'medium' | 'high' | 'critical'; location: string; message: string; suggestion?: string; } export interface FastMCPAnalysis { complexity: APIComplexity; generationStrategy: 'direct' | 'templated' | 'custom'; estimatedGenerationTime: number; recommendedTemplate: string; capabilities: { crud: boolean; authentication: boolean; pagination: boolean; filtering: boolean; realtime: boolean; webhooks: boolean; fileUpload: boolean; bulkOperations: boolean; }; requirements: { dependencies: string[]; environment: string[]; configuration: string[]; }; codeGenerationHints?: { clientPattern: 'singleton' | 'factory' | 'builder'; errorHandling: 'basic' | 'comprehensive'; retryStrategy: 'none' | 'exponential' | 'linear'; caching: 'none' | 'memory' | 'persistent'; logging: 'minimal' | 'detailed'; }; integrationAssessment?: { bmsSuitability: number; oracleIntegration: boolean; scribeIntegration: boolean; architectIntegration: boolean; recommendedUseCases: string[]; potentialChallenges: string[]; }; } export interface APIDiscovererProps extends HTMLAttributes<HTMLDivElement> { /** * History of discovery requests */ discoveryHistory?: DiscoveryRequest[]; /** * Known API specifications */ knownAPIs?: APISpecification[]; /** * Available discovery methods */ discoveryMethods?: DiscoveryMethod[]; /** * Show specification viewer * @default true */ showSpecViewer?: boolean; /** * Show discovery logs * @default true */ showDiscoveryLogs?: boolean; /** * Enable automatic discovery suggestions * @default true */ enableAutoDiscovery?: boolean; /** * FastMCP configuration */ fastmcpConfig?: { timeout: number; retries: number; followRedirects: boolean; validateSchema: boolean; cacheResults?: boolean; cacheTTL?: number; }; /** * Callback when discovery starts */ onDiscoveryStart?: (request: DiscoveryRequest) => void; /** * Callback when discovery completes */ onDiscoveryComplete?: (request: DiscoveryRequest, result: DiscoveryResult) => void; /** * Callback when specification is found */ onSpecificationFound?: (specifications: APISpecification[]) => void; /** * Callback when discovery fails */ onDiscoveryError?: (request: DiscoveryRequest, error: Error) => void; /** * Callback when specification is selected for integration */ onSpecificationSelect?: (specification: APISpecification) => void; } export interface DiscoveryEngine { /** * Discover API specification by URL */ discoverByUrl: (url: string, options?: DiscoveryOptions) => Promise<DiscoveryResult>; /** * Discover API specifications by domain scanning */ discoverByDomain: (domain: string, options?: DiscoveryOptions) => Promise<DiscoveryResult>; /** * Discover API specifications by search */ discoverBySearch: (query: string, options?: DiscoveryOptions) => Promise<DiscoveryResult>; /** * Auto-discovery with intelligent method selection */ discoverAuto: (input: string, options?: DiscoveryOptions) => Promise<DiscoveryResult>; /** * Validate and analyze discovered specification */ analyzeSpecification: (spec: APISpecification) => Promise<FastMCPAnalysis>; /** * Get discovery suggestions for a service */ getSuggestions: (serviceName: string) => Promise<DiscoverySuggestion[]>; } export interface DiscoveryOptions { timeout?: number; retries?: number; followRedirects?: boolean; validateSchema?: boolean; customHeaders?: Record<string, string>; userAgent?: string; includePaths?: string[]; excludePaths?: string[]; } export interface DiscoverySuggestion { type: 'common_path' | 'known_service' | 'similar_domain' | 'search_result'; url: string; confidence: number; description: string; source: string; } export interface FastMCPIntegration { /** * Introspect OpenAPI specification using FastMCP */ introspectAPI: (url: string, options?: IntrospectionOptions) => Promise<FastMCPIntrospectionResult>; /** * Validate OpenAPI specification */ validateSpecification: (spec: any) => Promise<ValidationResult>; /** * Generate MCP server code from specification */ generateMCPServer: (spec: APISpecification, config: MCPGenerationConfig) => Promise<string>; /** * Analyze API for BMS integration suitability */ analyzeBMSSuitability: (spec: APISpecification) => Promise<BMSSuitabilityAnalysis>; } export interface IntrospectionOptions { timeout?: number; validateSchema?: boolean; includeExamples?: boolean; resolveReferences?: boolean; customHeaders?: Record<string, string>; } export interface FastMCPIntrospectionResult { specification: APISpecification; analysis: FastMCPAnalysis; metadata: { processingTime: number; schemaVersion: string; toolsGenerated: number; complexityScore: number; }; warnings: string[]; errors: string[]; } export interface ValidationResult { valid: boolean; errors: Array<{ path: string; message: string; severity: 'error' | 'warning' | 'info'; }>; warnings: string[]; score: number; } export interface MCPGenerationConfig { templateType: 'universal' | 'rest' | 'graphql' | 'webhook'; includeTests: boolean; includeDocumentation: boolean; errorHandling: 'basic' | 'comprehensive'; authenticationMethods: string[]; outputFormat: 'python' | 'typescript' | 'javascript'; } export interface BMSSuitabilityAnalysis { overallScore: number; oracleIntegration: { suitable: boolean; score: number; capabilities: string[]; limitations: string[]; }; scribeIntegration: { suitable: boolean; score: number; dataTypes: string[]; accessPatterns: string[]; }; architectIntegration: { suitable: boolean; score: number; workflowCapabilities: string[]; orchestrationPotential: string[]; }; recommendations: Array<{ type: 'enhancement' | 'limitation' | 'optimization'; description: string; priority: 'low' | 'medium' | 'high'; effort: 'minimal' | 'moderate' | 'significant'; }>; } export interface APIRegistry { /** * Register discovered API specification */ registerAPI: (spec: APISpecification) => Promise<void>; /** * Search registered APIs */ searchAPIs: (query: string, filters?: APISearchFilters) => Promise<APISpecification[]>; /** * Get API by service name */ getAPI: (serviceName: string) => Promise<APISpecification | null>; /** * Update API specification */ updateAPI: (id: string, updates: Partial<APISpecification>) => Promise<APISpecification>; /** * Delete API specification */ deleteAPI: (id: string) => Promise<void>; /** * Get API categories */ getCategories: () => Promise<Array<{ name: string; count: number; }>>; /** * Get API statistics */ getStatistics: () => Promise<APIRegistryStats>; } export interface APISearchFilters { category?: string; complexity?: APIComplexity[]; authMethods?: string[]; capabilities?: string[]; tags?: string[]; minQualityScore?: number; discoveredAfter?: Date; discoveredBefore?: Date; } export interface APIRegistryStats { totalAPIs: number; categoriesCount: number; averageQualityScore: number; authMethodsDistribution: Record<string, number>; complexityDistribution: Record<APIComplexity, number>; capabilitiesDistribution: Record<string, number>; discoveryMethodsDistribution: Record<DiscoveryMethod, number>; recentDiscoveries: number; } export interface DiscoveryScheduler { /** * Schedule periodic discovery for a service */ scheduleDiscovery: (serviceName: string, schedule: DiscoverySchedule) => Promise<string>; /** * Cancel scheduled discovery */ cancelSchedule: (scheduleId: string) => Promise<void>; /** * Get active schedules */ getSchedules: () => Promise<DiscoverySchedule[]>; /** * Trigger immediate discovery */ triggerDiscovery: (scheduleId: string) => Promise<DiscoveryResult>; } export interface DiscoverySchedule { id: string; serviceName: string; method: DiscoveryMethod; input: string; frequency: 'hourly' | 'daily' | 'weekly' | 'monthly'; enabled: boolean; lastRun?: Date; nextRun: Date; options?: DiscoveryOptions; notificationSettings?: { onSuccess: boolean; onFailure: boolean; onChanges: boolean; recipients: string[]; }; } export interface BMSDiscoveryIntegration { /** * Discover APIs based on Oracle agent requirements */ discoverForOracle: (requirements: string[]) => Promise<APISpecification[]>; /** * Discover APIs suitable for Scribe data access */ discoverForScribe: (dataTypes: string[]) => Promise<APISpecification[]>; /** * Discover APIs for Architect workflow orchestration */ discoverForArchitect: (workflowTypes: string[]) => Promise<APISpecification[]>; /** * Get discovery recommendations based on BMS usage patterns */ getRecommendations: () => Promise<DiscoveryRecommendation[]>; /** * Validate API compatibility with BMS agents */ validateBMSCompatibility: (spec: APISpecification) => Promise<BMSCompatibilityResult>; } export interface DiscoveryRecommendation { type: 'service_integration' | 'workflow_enhancement' | 'data_source' | 'automation_opportunity'; serviceName: string; description: string; confidence: number; suggestedAPIs: string[]; benefits: string[]; effort: 'low' | 'medium' | 'high'; priority: 'low' | 'medium' | 'high'; } export interface BMSCompatibilityResult { compatible: boolean; compatibilityScore: number; agentCompatibility: { oracle: boolean; scribe: boolean; architect: boolean; loopDiagnostic: boolean; }; supportedCapabilities: string[]; missingCapabilities: string[]; requiredModifications: string[]; recommendations: Array<{ type: 'enhancement' | 'workaround' | 'alternative'; description: string; impact: 'low' | 'medium' | 'high'; }>; } //# sourceMappingURL=types.d.ts.map