UNPKG

taskflow-ai

Version:

TaskFlow AI - 智能PRD文档解析与任务管理助手,支持多模型AI协同、MCP编辑器集成,专为开发团队设计的CLI工具

288 lines (287 loc) 7.45 kB
/** * 配置管理器 - 统一管理TaskFlow AI的所有配置 * 支持多环境配置、动态配置更新、配置验证等功能 */ import { Logger } from '../logger'; import { JSONValue } from '../../types/strict-types'; import { EditorType, MCPConfig, MCPConfigOptions, ValidationResult, TestResult } from '../../types/mcp'; /** * 配置环境枚举 */ export declare enum ConfigEnvironment { DEVELOPMENT = "development", TESTING = "testing", STAGING = "staging", PRODUCTION = "production" } /** * 配置源类型 */ export declare enum ConfigSource { FILE = "file", ENVIRONMENT = "environment", DATABASE = "database", REMOTE = "remote", MEMORY = "memory" } /** * 配置项接口 */ export interface ConfigItem { key: string; value: JSONValue; type: 'string' | 'number' | 'boolean' | 'object' | 'array'; description?: string; required?: boolean; defaultValue?: JSONValue; validation?: ConfigValidation; source: ConfigSource; lastModified: Date; environment?: ConfigEnvironment; } /** * 配置验证规则 */ export interface ConfigValidation { type?: 'string' | 'number' | 'boolean' | 'object' | 'array' | 'email' | 'url' | 'regex'; min?: number; max?: number; pattern?: string; enum?: JSONValue[]; required?: boolean; custom?: (value: JSONValue) => boolean | string; } /** * 配置变更事件 */ export interface ConfigChangeEvent { key: string; oldValue: JSONValue | undefined; newValue: JSONValue | undefined; source: ConfigSource; timestamp: Date; environment: ConfigEnvironment; } /** * 配置管理器选项 */ export interface ConfigManagerOptions { environment: ConfigEnvironment; configDir: string; enableFileWatch: boolean; enableValidation: boolean; enableCache: boolean; cacheTimeout: number; autoSave: boolean; backupEnabled: boolean; encryptSensitive: boolean; } /** * 配置管理器类 */ export declare class ConfigManager { private logger; private options; private configs; private watchers; private cache; private validationRules; private changeListeners; private mcpGenerator; constructor(logger: Logger, options?: Partial<ConfigManagerOptions>); /** * 获取配置值 * @param key 配置键 * @param defaultValue 默认值 */ get<T extends JSONValue = JSONValue>(key: string, defaultValue?: T): T; /** * 设置配置值 * @param key 配置键 * @param value 配置值 * @param source 配置源 */ set(key: string, value: JSONValue, source?: ConfigSource): void; /** * 检查配置是否存在 * @param key 配置键 */ has(key: string): boolean; /** * 删除配置 * @param key 配置键 */ delete(key: string): boolean; /** * 清空所有配置 */ clear(): void; /** * 获取所有配置 */ getAll(): Record<string, JSONValue>; /** * 批量设置配置 * @param configs 配置对象 * @param source 配置源 */ setMany(configs: Record<string, JSONValue>, source?: ConfigSource): void; /** * 监听配置变更 * @param key 配置键,为空则监听所有变更 * @param callback 回调函数 */ watch(key: string | null, callback: (event: ConfigChangeEvent) => void): () => void; /** * 添加配置验证规则 * @param key 配置键 * @param validation 验证规则 */ addValidation(key: string, validation: ConfigValidation): void; /** * 验证所有配置 */ validateAll(): { valid: boolean; errors: string[]; }; /** * 从文件加载配置 * @param filePath 文件路径 */ loadFromFile(filePath?: string): void; /** * 保存配置到文件 * @param filePath 文件路径 */ saveToFile(filePath?: string): void; /** * 重新加载配置 */ reload(): void; /** * 获取配置统计信息 */ getStats(): { totalConfigs: number; configsBySource: Record<ConfigSource, number>; configsByType: Record<string, number>; cacheHitRate: number; }; /** * 初始化默认配置 */ private initializeDefaultConfigs; /** * 添加验证规则 */ private addValidationRules; /** * 加载配置 */ private loadConfigurations; /** * 从环境变量加载配置 */ private loadFromEnvironment; /** * 从环境变量获取值 * @param key 配置键 */ private getFromEnvironment; /** * 解析环境变量值 * @param value 环境变量值 */ private parseEnvironmentValue; /** * 推断值类型 * @param value 值 */ private inferType; /** * 验证配置值 * @param value 配置值 * @param validation 验证规则 */ private validateValue; /** * 获取配置文件路径 */ private getConfigFilePath; /** * 设置文件监听 */ private setupFileWatching; /** * 通知配置变更 * @param event 变更事件 */ private notifyChange; /** * 为指定编辑器生成MCP配置 * @param editor 编辑器类型 * @param options 配置选项 * @returns MCP配置对象 */ generateMCPConfig(editor: EditorType, options?: MCPConfigOptions): MCPConfig; /** * 验证MCP配置 * @param config MCP配置对象 * @returns 验证结果 */ validateMCPConfig(config: MCPConfig): ValidationResult; /** * 导出MCP配置为JSON字符串 * @param editor 编辑器类型 * @param options 配置选项 * @returns JSON格式的配置字符串 */ exportMCPConfig(editor: EditorType, options?: MCPConfigOptions): string; /** * 导入MCP配置 * @param editor 编辑器类型 * @param configJson JSON格式的配置字符串 */ importMCPConfig(editor: EditorType, configJson: string): void; /** * 测试MCP配置 * @param editor 编辑器类型 * @param options 配置选项 * @returns 测试结果 */ testMCPConfiguration(editor: EditorType, options?: MCPConfigOptions): Promise<TestResult>; /** * 获取MCP服务支持的能力 * @returns MCP能力对象 */ getMCPCapabilities(): { supportedEditors: string[]; supportedModels: string[]; features: { prdParsing: boolean; taskManagement: boolean; codeAnalysis: boolean; multiModelOrchestration: boolean; streamingResponse: boolean; configurationGeneration: boolean; }; resources: boolean; tools: boolean; prompts: boolean; streaming: boolean; }; /** * 写入MCP配置文件到磁盘 * @param editor 编辑器类型 * @param projectRoot 项目根目录 * @param options 配置选项 */ writeMCPConfigFiles(editor: EditorType, projectRoot?: string, options?: MCPConfigOptions): Promise<void>; /** * 为所有支持的编辑器生成MCP配置文件 * @param projectRoot 项目根目录 * @param options 配置选项 */ generateAllMCPConfigs(projectRoot?: string, options?: MCPConfigOptions): Promise<void>; }