UNPKG

@vibeship/devtools

Version:

Comprehensive markdown-based project management system with AI capabilities for Next.js applications

137 lines (135 loc) 3.7 kB
interface VibeshipConfig { scanPaths: string[]; include: string[]; exclude: string[]; features: FeatureFlags; security: SecurityConfig; taskPatterns: TaskPatterns; ui: UIConfig; api: APIConfig; cache: CacheConfig; experimental?: ExperimentalConfig; } interface FeatureFlags { tasks: boolean; ai: boolean; realtime: boolean; commandPalette: boolean; fileEditing: boolean; markdownPreview: boolean; } interface SecurityConfig { authentication: boolean; auth?: AuthConfig; rateLimit: boolean; rateLimitConfig?: RateLimitConfig; cors: boolean; corsConfig?: CORSConfig; allowedPaths?: string[]; blockedPatterns?: string[]; } interface AuthConfig { jwtSecret?: string; apiKey?: string; session?: { secret: string; maxAge?: number; }; providers?: AuthProvider[]; } interface AuthProvider { id: string; type: 'oauth' | 'oidc' | 'saml'; clientId: string; clientSecret?: string; issuer?: string; } interface RateLimitConfig { windowMs: number; maxRequests: number; skipSuccessfulRequests?: boolean; skipFailedRequests?: boolean; tiers?: { anonymous?: { windowMs: number; maxRequests: number; }; authenticated?: { windowMs: number; maxRequests: number; }; premium?: { windowMs: number; maxRequests: number; }; }; } interface CORSConfig { allowedOrigins: string[] | string | ((origin: string) => boolean); allowedMethods?: string[]; allowedHeaders?: string[]; exposedHeaders?: string[]; credentials?: boolean; maxAge?: number; } interface TaskPatterns { todo: boolean; fixme: boolean; hack: boolean; note: boolean; warning?: boolean; optimize?: boolean; custom?: CustomTaskPattern[]; } interface CustomTaskPattern { name: string; pattern: string | RegExp; priority?: 'low' | 'medium' | 'high'; color?: string; } interface UIConfig { theme?: 'light' | 'dark' | 'system'; position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; defaultSize?: { width?: number | string; height?: number | string; }; hotkey?: string; showInProduction?: boolean; customCSS?: string; } interface APIConfig { basePath: string; version?: string; documentation?: boolean; middleware?: string[]; timeout?: number; } interface CacheConfig { enabled: boolean; directory: string; maxSize: number; ttl: number; strategy: 'lru' | 'fifo' | 'lfu'; } interface ExperimentalConfig { markdownExtensions?: boolean; customTaskProviders?: boolean; plugins?: boolean; pluginConfigs?: Record<string, any>; } type PartialVibeshipConfig = DeepPartial<VibeshipConfig>; type DefineConfigFunction = (config: PartialVibeshipConfig) => PartialVibeshipConfig; type DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P]; }; interface EnvConfig { VIBESHIP_AUTH_SECRET?: string; VIBESHIP_API_KEY?: string; VIBESHIP_ALLOWED_ORIGINS?: string; VIBESHIP_RATE_LIMIT?: string; VIBESHIP_CACHE_ENABLED?: string; VIBESHIP_AI_PROVIDER?: string; VIBESHIP_AI_API_KEY?: string; } export type { AuthConfig as A, CORSConfig as C, DeepPartial as D, ExperimentalConfig as E, FeatureFlags as F, PartialVibeshipConfig as P, RateLimitConfig as R, SecurityConfig as S, TaskPatterns as T, UIConfig as U, VibeshipConfig as V, DefineConfigFunction as a, AuthProvider as b, CustomTaskPattern as c, APIConfig as d, CacheConfig as e, EnvConfig as f };