taskflow-ai
Version:
TaskFlow AI - 智能PRD文档解析与任务管理助手,支持多模型AI协同、MCP编辑器集成,专为开发团队设计的CLI工具
288 lines (287 loc) • 7.45 kB
TypeScript
/**
* 配置管理器 - 统一管理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>;
}