Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/agions_taskflow-ai.json
T

1 line
33 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"repo": "agions/taskflow-ai", "files": {"src/constants/index.ts": {"d728967214d3d933e0a86ae686ed2833f6d18843": {"t": 1785746049.2317736, "n": 6329, "h": "8452fc8a6390ae52", "c": "/**\n * TaskFlow AI 常量定义\n */\n\nexport const APP_NAME = 'TaskFlow AI';\nexport const APP_VERSION = '2.0.0';\nexport const APP_DESCRIPTION = '智能PRD文档解析与任务管理助手';\n\nexport const CONFIG_DIR = '.taskflow';\nexport const CONFIG_FILE = 'config.json';\nexport const CACHE_DIR = 'cache';\nexport const LOGS_DIR = 'logs';\nexport const TEMPLATES_DIR = 'templates';\nexport const PLUGINS_DIR = 'plugins';\n\nexport const DEFAULT_OUTPUT_DIR = 'output';\nexport const DEFAULT_REPORTS_DIR = 'reports';\n\nexport const SUPPORTED_PRD_FORMATS = [\n '.md',\n '.markdown',\n '.txt',\n '.doc',\n '.docx',\n '.pdf',\n '.html',\n '.htm',\n] as const;\n\nexport const SUPPORTED_OUTPUT_FORMATS = [\n 'json',\n 'yaml',\n 'markdown',\n 'html',\n 'csv',\n 'excel',\n] as const;\n\nexport const AI_PROVIDERS = {\n DEEPSEEK: 'deepseek',\n ZHIPU: 'zhipu',\n QWEN: 'qwen',\n BAIDU: 'baidu',\n MOONSHOT: 'moonshot',\n SPARK: 'spark',\n OPENAI: 'openai',\n CLAUDE: 'claude',\n} as const;\n\nexport const DEFAULT_AI_SETTINGS = {\n maxTokens: 4000,\n temperature: 0.7,\n timeout: 30000,\n retryAttempts: 3,\n retryDelay: 1000,\n};\n\nexport const AI_MODEL_ENDPOINTS = {\n [AI_PROVIDERS.DEEPSEEK]: 'https://api.deepseek.com/v1',\n [AI_PROVIDERS.ZHIPU]: 'https://open.bigmodel.cn/api/paas/v4',\n [AI_PROVIDERS.QWEN]: 'https://dashscope.aliyuncs.com/api/v1',\n [AI_PROVIDERS.BAIDU]: 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1',\n [AI_PROVIDERS.MOONSHOT]: 'https://api.moonshot.cn/v1',\n [AI_PROVIDERS.SPARK]: 'https://spark-api.xf-yun.com/v1.1',\n};\n\nexport const MCP_CONFIG = {\n DEFAULT_PORT: 3000,\n DEFAULT_HOST: 'localhost',\n SERVER_NAME: 'taskflow-ai',\n PROTOCOL_VERSION: '2024-11-05',\n TIMEOUT: 30000,\n MAX_REQUESTS_PER_MINUTE: 100,\n};\n\nexport const MCP_TOOLS = {\n FILE_READ: 'file_read',\n FILE_WRITE: 'file_write',\n FILE_LIST: 'file_list',\n SHELL_EXEC: 'shell_exec',\n PROJECT_ANALYZE: 'project_analyze',\n TASK_CREATE: 'task_create',\n TASK_UPDATE: 'task_update',\n TASK_LIST: 'task_list',\n PRD_PARSE: 'prd_parse',\n VISUALIZE: 'visualize',\n} as const;\n\nexport const MCP_RESOURCES = {\n TASKS: '/tasks',\n PROJECTS: '/projects',\n MODELS: '/models',\n CONFIG: '/config',\n STATUS: '/status',\n HEALTH: '/health',\n} as const;\n\nexport const TASK_TYPES = {\n FRONTEND: 'frontend',\n BACKEND: 'backend',\n DATABASE: 'database',\n TESTING: 'testing',\n DEPLOYMENT: 'deployment',\n DOCUMENTATION: 'documentation',\n RESEARCH: 'research',\n DESIGN: 'design',\n} as const;\n\nexport const TASK_STATUSES = {\n TODO: 'todo',\n IN_PROGRESS: 'in-progress',\n REVIEW: 'review',\n TESTING: 'testing',\n DONE: 'done',\n BLOCKED: 'blocked',\n CANCELLED: 'cancelled',\n} as const;\n\nexport const PRIORITY_LEVELS = {\n LOW: 'low',\n MEDIUM: 'medium',\n HIGH: 'high',\n CRITICAL: 'critical',\n} as const;\n\nexport const COMPLEXITY_LEVELS = {\n SIMPLE: 'simple',\n MEDIUM: 'medium',\n COMPLEX: 'complex',\n EPIC: 'epic',\n} as const;\n\nexport const CHART_TYPES = {\n GANTT: 'gantt',\n BURNDOWN: 'burndown',\n PIE: 'pie',\n BAR: 'bar',\n LINE: 'line',\n TIMELINE: 'timeline',\n KANBAN: 'kanban',\n} as const;\n\nexport const CHART_THEMES = {\n LIGHT: 'light',\n DARK: 'dark',\n} as const;\n\nexport const DEFAULT_COLORS = [\n '#3B82F6', // Blue\n '#10B981', // Green\n '#F59E0B', // Yellow\n '#EF4444', // Red\n '#8B5CF6', // Purple\n '#06B6D4', // Cyan\n '#84CC16', // Lime\n '#F97316', // Orange\n '#EC4899', // Pink\n '#6B7280', // Gray\n];\n\nexport const ERROR_CODES = {\n CONFIG_NOT_FOUND: 1001,\n CONFIG_INVALID: 1002,\n CONFIG_PARSE_ERROR: 1003,\n\n FILE_NOT_FOUND: 2001,\n FILE_READ_ERROR: 2002,\n FILE_WRITE_ERROR: 2003,\n\n UNSUPPORTED_FORMAT: 2004,\n\n PRD_PARSE_ERROR: 3001,\n PRD_FORMAT_UNSUPPORTED: 3002,\n PRD_CONTENT_INVALID: 3003,\n\n AI_MODEL_ERROR: 4001,\n AI_API_ERROR: 4002,\n AI_RATE_LIMIT: 4003,\n AI_TIMEOUT: 4004,\n\n MCP_SERVER_ERROR: 5001,\n MCP_TOOL_ERROR: 5002,\n MCP_RESOURCE_ERROR: 5003,\n\n VALIDATION_ERROR: 6001,\n REQUIRED_FIELD_MISSING: 6002,\n INVALID_FORMAT: 6003,\n\n NETWORK_ERROR: 7001,\n CONNECTION_TIMEOUT: 7002,\n\n PLUGIN_NOT_FOUND: 8001,\n PLUGIN_LOAD_ERROR: 8002,\n PLUGIN_EXECUTION_ERROR: 8003,\n} as const;\n\nimport { TaskFlowConfig } from '../types';\n\nexport const DEFAULT_CONFIG: TaskFlowConfig = {\n projectName: '',\n version: '1.0.0',\n workspace: '',\n environment: 'development',\n models: [],\n aiModels: [],\n cache: {\n enabled: false,\n l1: { enabled: false, maxSize: 0, ttl: 0 },\n l2: { enabled: false, ttl: 0 },\n },\n logging: { level: 'info', console: true, format: 'text' },\n plugins: { enabled: [], directory: './plugins', autoLoad: false },\n extensions: {\n tools: { directory: './tools', autoDiscover: false },\n workflows: { directory: './workflows', autoDiscover: false },\n },\n security: {\n enableCommandWhitelist: false,\n enablePrivateIPRestriction: false,\n enablePathTraversalProtection: true,\n enableCredentialMasking: true,\n },\n mcpSettings: {\n enabled: true,\n port: MCP_CONFIG.DEFAULT_PORT,\n host: MCP_CONFIG.DEFAULT_HOST,\n serverName: MCP_CONFIG.SERVER_NAME,\n version: MCP_CONFIG.PROTOCOL_VERSION,\n capabilities: [],\n security: {\n authRequired: false,\n allowedOrigins: ['*'],\n rateLimit: {\n requestsPerMinute: MCP_CONFIG.MAX_REQUESTS_PER_MINUTE,\n tokensPerMinute: 10000,\n },\n sandbox: {\n enabled: true,\n timeout: 30000,\n },\n },\n tools: [],\n resources: [],\n },\n};\n\nexport const CLI_COLORS = {\n PRIMARY: '#3B82F6',\n SUCCESS: '#10B981',\n WARNING: '#F59E0B',\n ERROR: '#EF4444',\n INFO: '#06B6D4',\n MUTED: '#6B7280',\n};\n\nexport const CLI_SYMBOLS = {\n SUCCESS: '✅',\n ERROR: '❌',\n WARNING: '⚠️',\n INFO: 'ℹ️',\n LOADING: '⏳',\n ARROW: '➜',\n BULLET: '•',\n};\n\nexport const REGEX_PATTERNS = {\n EMAIL: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/,\n URL: /^https?:\\/\\/.+/,\n SEMVER: /^\\d+\\.\\d+\\.\\d+$/,\n TASK_ID: /^[a-zA-Z0-9-_]+$/,\n PROJECT_NAME: /^[a-zA-Z0-9-_\\s]+$/,\n};\n\nexport const PERFORMANCE = {\n CACHE_TTL: 60 * 60 * 1000, // 1小时\n MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB\n MAX_BATCH_SIZE: 100,\n DEBOUNCE_DELAY: 300,\n THROTTLE_DELAY: 1000,\n};\n\nexport const ENV_VARS = {\n NODE_ENV: 'NODE_ENV',\n DEBUG: 'DEBUG',\n CONFIG_PATH: 'TASKFLOW_CONFIG_PATH',\n DATA_DIR: 'TASKFLOW_DATA_DIR',\n CACHE_DIR: 'TASKFLOW_CACHE_DIR',\n LOG_LEVEL: 'TASKFLOW_LOG_LEVEL',\n MCP_PORT: 'TASKFLOW_MCP_PORT',\n MCP_HOST: 'TASKFLOW_MCP_HOST',\n} as const;\n"}, "b6e944d2e095265ba56e6145431a77c136eea518": {"t": 1785759209.7170212, "n": 6329, "h": "8452fc8a6390ae52", "c": "/**\n * TaskFlow AI 常量定义\n */\n\nexport const APP_NAME = 'TaskFlow AI';\nexport const APP_VERSION = '2.0.0';\nexport const APP_DESCRIPTION = '智能PRD文档解析与任务管理助手';\n\nexport const CONFIG_DIR = '.taskflow';\nexport const CONFIG_FILE = 'config.json';\nexport const CACHE_DIR = 'cache';\nexport const LOGS_DIR = 'logs';\nexport const TEMPLATES_DIR = 'templates';\nexport const PLUGINS_DIR = 'plugins';\n\nexport const DEFAULT_OUTPUT_DIR = 'output';\nexport const DEFAULT_REPORTS_DIR = 'reports';\n\nexport const SUPPORTED_PRD_FORMATS = [\n '.md',\n '.markdown',\n '.txt',\n '.doc',\n '.docx',\n '.pdf',\n '.html',\n '.htm',\n] as const;\n\nexport const SUPPORTED_OUTPUT_FORMATS = [\n 'json',\n 'yaml',\n 'markdown',\n 'html',\n 'csv',\n 'excel',\n] as const;\n\nexport const AI_PROVIDERS = {\n DEEPSEEK: 'deepseek',\n ZHIPU: 'zhipu',\n QWEN: 'qwen',\n BAIDU: 'baidu',\n MOONSHOT: 'moonshot',\n SPARK: 'spark',\n OPENAI: 'openai',\n CLAUDE: 'claude',\n} as const;\n\nexport const DEFAULT_AI_SETTINGS = {\n maxTokens: 4000,\n temperature: 0.7,\n timeout: 30000,\n retryAttempts: 3,\n retryDelay: 1000,\n};\n\nexport const AI_MODEL_ENDPOINTS = {\n [AI_PROVIDERS.DEEPSEEK]: 'https://api.deepseek.com/v1',\n [AI_PROVIDERS.ZHIPU]: 'https://open.bigmodel.cn/api/paas/v4',\n [AI_PROVIDERS.QWEN]: 'https://dashscope.aliyuncs.com/api/v1',\n [AI_PROVIDERS.BAIDU]: 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1',\n [AI_PROVIDERS.MOONSHOT]: 'https://api.moonshot.cn/v1',\n [AI_PROVIDERS.SPARK]: 'https://spark-api.xf-yun.com/v1.1',\n};\n\nexport const MCP_CONFIG = {\n DEFAULT_PORT: 3000,\n DEFAULT_HOST: 'localhost',\n SERVER_NAME: 'taskflow-ai',\n PROTOCOL_VERSION: '2024-11-05',\n TIMEOUT: 30000,\n MAX_REQUESTS_PER_MINUTE: 100,\n};\n\nexport const MCP_TOOLS = {\n FILE_READ: 'file_read',\n FILE_WRITE: 'file_write',\n FILE_LIST: 'file_list',\n SHELL_EXEC: 'shell_exec',\n PROJECT_ANALYZE: 'project_analyze',\n TASK_CREATE: 'task_create',\n TASK_UPDATE: 'task_update',\n TASK_LIST: 'task_list',\n PRD_PARSE: 'prd_parse',\n VISUALIZE: 'visualize',\n} as const;\n\nexport const MCP_RESOURCES = {\n TASKS: '/tasks',\n PROJECTS: '/projects',\n MODELS: '/models',\n CONFIG: '/config',\n STATUS: '/status',\n HEALTH: '/health',\n} as const;\n\nexport const TASK_TYPES = {\n FRONTEND: 'frontend',\n BACKEND: 'backend',\n DATABASE: 'database',\n TESTING: 'testing',\n DEPLOYMENT: 'deployment',\n DOCUMENTATION: 'documentation',\n RESEARCH: 'research',\n DESIGN: 'design',\n} as const;\n\nexport const TASK_STATUSES = {\n TODO: 'todo',\n IN_PROGRESS: 'in-progress',\n REVIEW: 'review',\n TESTING: 'testing',\n DONE: 'done',\n BLOCKED: 'blocked',\n CANCELLED: 'cancelled',\n} as const;\n\nexport const PRIORITY_LEVELS = {\n LOW: 'low',\n MEDIUM: 'medium',\n HIGH: 'high',\n CRITICAL: 'critical',\n} as const;\n\nexport const COMPLEXITY_LEVELS = {\n SIMPLE: 'simple',\n MEDIUM: 'medium',\n COMPLEX: 'complex',\n EPIC: 'epic',\n} as const;\n\nexport const CHART_TYPES = {\n GANTT: 'gantt',\n BURNDOWN: 'burndown',\n PIE: 'pie',\n BAR: 'bar',\n LINE: 'line',\n TIMELINE: 'timeline',\n KANBAN: 'kanban',\n} as const;\n\nexport const CHART_THEMES = {\n LIGHT: 'light',\n DARK: 'dark',\n} as const;\n\nexport const DEFAULT_COLORS = [\n '#3B82F6', // Blue\n '#10B981', // Green\n '#F59E0B', // Yellow\n '#EF4444', // Red\n '#8B5CF6', // Purple\n '#06B6D4', // Cyan\n '#84CC16', // Lime\n '#F97316', // Orange\n '#EC4899', // Pink\n '#6B7280', // Gray\n];\n\nexport const ERROR_CODES = {\n CONFIG_NOT_FOUND: 1001,\n CONFIG_INVALID: 1002,\n CONFIG_PARSE_ERROR: 1003,\n\n FILE_NOT_FOUND: 2001,\n FILE_READ_ERROR: 2002,\n FILE_WRITE_ERROR: 2003,\n\n UNSUPPORTED_FORMAT: 2004,\n\n PRD_PARSE_ERROR: 3001,\n PRD_FORMAT_UNSUPPORTED: 3002,\n PRD_CONTENT_INVALID: 3003,\n\n AI_MODEL_ERROR: 4001,\n AI_API_ERROR: 4002,\n AI_RATE_LIMIT: 4003,\n AI_TIMEOUT: 4004,\n\n MCP_SERVER_ERROR: 5001,\n MCP_TOOL_ERROR: 5002,\n MCP_RESOURCE_ERROR: 5003,\n\n VALIDATION_ERROR: 6001,\n REQUIRED_FIELD_MISSING: 6002,\n INVALID_FORMAT: 6003,\n\n NETWORK_ERROR: 7001,\n CONNECTION_TIMEOUT: 7002,\n\n PLUGIN_NOT_FOUND: 8001,\n PLUGIN_LOAD_ERROR: 8002,\n PLUGIN_EXECUTION_ERROR: 8003,\n} as const;\n\nimport { TaskFlowConfig } from '../types';\n\nexport const DEFAULT_CONFIG: TaskFlowConfig = {\n projectName: '',\n version: '1.0.0',\n workspace: '',\n environment: 'development',\n models: [],\n aiModels: [],\n cache: {\n enabled: false,\n l1: { enabled: false, maxSize: 0, ttl: 0 },\n l2: { enabled: false, ttl: 0 },\n },\n logging: { level: 'info', console: true, format: 'text' },\n plugins: { enabled: [], directory: './plugins', autoLoad: false },\n extensions: {\n tools: { directory: './tools', autoDiscover: false },\n workflows: { directory: './workflows', autoDiscover: false },\n },\n security: {\n enableCommandWhitelist: false,\n enablePrivateIPRestriction: false,\n enablePathTraversalProtection: true,\n enableCredentialMasking: true,\n },\n mcpSettings: {\n enabled: true,\n port: MCP_CONFIG.DEFAULT_PORT,\n host: MCP_CONFIG.DEFAULT_HOST,\n serverName: MCP_CONFIG.SERVER_NAME,\n version: MCP_CONFIG.PROTOCOL_VERSION,\n capabilities: [],\n security: {\n authRequired: false,\n allowedOrigins: ['*'],\n rateLimit: {\n requestsPerMinute: MCP_CONFIG.MAX_REQUESTS_PER_MINUTE,\n tokensPerMinute: 10000,\n },\n sandbox: {\n enabled: true,\n timeout: 30000,\n },\n },\n tools: [],\n resources: [],\n },\n};\n\nexport const CLI_COLORS = {\n PRIMARY: '#3B82F6',\n SUCCESS: '#10B981',\n WARNING: '#F59E0B',\n ERROR: '#EF4444',\n INFO: '#06B6D4',\n MUTED: '#6B7280',\n};\n\nexport const CLI_SYMBOLS = {\n SUCCESS: '✅',\n ERROR: '❌',\n WARNING: '⚠️',\n INFO: 'ℹ️',\n LOADING: '⏳',\n ARROW: '➜',\n BULLET: '•',\n};\n\nexport const REGEX_PATTERNS = {\n EMAIL: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/,\n URL: /^https?:\\/\\/.+/,\n SEMVER: /^\\d+\\.\\d+\\.\\d+$/,\n TASK_ID: /^[a-zA-Z0-9-_]+$/,\n PROJECT_NAME: /^[a-zA-Z0-9-_\\s]+$/,\n};\n\nexport const PERFORMANCE = {\n CACHE_TTL: 60 * 60 * 1000, // 1小时\n MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB\n MAX_BATCH_SIZE: 100,\n DEBOUNCE_DELAY: 300,\n THROTTLE_DELAY: 1000,\n};\n\nexport const ENV_VARS = {\n NODE_ENV: 'NODE_ENV',\n DEBUG: 'DEBUG',\n CONFIG_PATH: 'TASKFLOW_CONFIG_PATH',\n DATA_DIR: 'TASKFLOW_DATA_DIR',\n CACHE_DIR: 'TASKFLOW_CACHE_DIR',\n LOG_LEVEL: 'TASKFLOW_LOG_LEVEL',\n MCP_PORT: 'TASKFLOW_MCP_PORT',\n MCP_HOST: 'TASKFLOW_MCP_HOST',\n} as const;\n"}, "769fa517333d6fedb851372deb361e87d34e0913": {"t": 1785759212.2895746, "n": 6284, "h": "18b87c1708df41d4", "c": "/**\n * TaskFlow AI 常量定义\n */\n\nexport const APP_NAME = 'TaskFlow AI';\nexport const APP_VERSION = '2.0.0';\nexport const APP_DESCRIPTION = '智能PRD文档解析与任务管理助手';\n\nexport const CONFIG_DIR = '.taskflow';\nexport const CONFIG_FILE = 'config.json';\nexport const CACHE_DIR = 'cache';\nexport const LOGS_DIR = 'logs';\nexport const TEMPLATES_DIR = 'templates';\nexport const PLUGINS_DIR = 'plugins';\n\nexport const DEFAULT_OUTPUT_DIR = 'output';\nexport const DEFAULT_REPORTS_DIR = 'reports';\n\nexport const SUPPORTED_PRD_FORMATS = [\n '.md',\n '.markdown',\n '.txt',\n '.doc',\n '.docx',\n '.pdf',\n '.html',\n '.htm',\n] as const;\n\nexport const SUPPORTED_OUTPUT_FORMATS = [\n 'json',\n 'yaml',\n 'markdown',\n 'html',\n 'csv',\n 'excel',\n] as const;\n\nexport const AI_PROVIDERS = {\n DEEPSEEK: 'deepseek',\n ZHIPU: 'zhipu',\n QWEN: 'qwen',\n BAIDU: 'baidu',\n MOONSHOT: 'moonshot',\n SPARK: 'spark',\n OPENAI: 'openai',\n CLAUDE: 'claude',\n} as const;\n\nexport const DEFAULT_AI_SETTINGS = {\n maxTokens: 4000,\n temperature: 0.7,\n timeout: 30000,\n retryAttempts: 3,\n retryDelay: 1000,\n};\n\nexport const AI_MODEL_ENDPOINTS = {\n [AI_PROVIDERS.DEEPSEEK]: 'https://api.deepseek.com/v1',\n [AI_PROVIDERS.ZHIPU]: 'https://open.bigmodel.cn/api/paas/v4',\n [AI_PROVIDERS.QWEN]: 'https://dashscope.aliyuncs.com/api/v1',\n [AI_PROVIDERS.BAIDU]: 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1',\n [AI_PROVIDERS.MOONSHOT]: 'https://api.moonshot.cn/v1',\n [AI_PROVIDERS.SPARK]: 'https://spark-api.xf-yun.com/v1.1',\n};\n\nexport const MCP_CONFIG = {\n DEFAULT_PORT: 3000,\n DEFAULT_HOST: 'localhost',\n SERVER_NAME: 'taskflow-ai',\n PROTOCOL_VERSION: '2024-11-05',\n TIMEOUT: 30000,\n MAX_REQUESTS_PER_MINUTE: 100,\n};\n\nexport const MCP_TOOLS = {\n FILE_READ: 'file_read',\n FILE_WRITE: 'file_write',\n FILE_LIST: 'file_list',\n SHELL_EXEC: 'shell_exec',\n PROJECT_ANALYZE: 'project_analyze',\n TASK_CREATE: 'task_create',\n TASK_UPDATE: 'task_update',\n TASK_LIST: 'task_list',\n PRD_PARSE: 'prd_parse',\n VISUALIZE: 'visualize',\n} as const;\n\nexport const MCP_RESOURCES = {\n TASKS: '/tasks',\n PROJECTS: '/projects',\n MODELS: '/models',\n CONFIG: '/config',\n STATUS: '/status',\n HEALTH: '/health',\n} as const;\n\nexport const TASK_TYPES = {\n FRONTEND: 'frontend',\n BACKEND: 'backend',\n DATABASE: 'database',\n TESTING: 'testing',\n DEPLOYMENT: 'deployment',\n DOCUMENTATION: 'documentation',\n RESEARCH: 'research',\n DESIGN: 'design',\n} as const;\n\nexport const TASK_STATUSES = {\n TODO: 'todo',\n IN_PROGRESS: 'in-progress',\n REVIEW: 'review',\n TESTING: 'testing',\n DONE: 'done',\n BLOCKED: 'blocked',\n CANCELLED: 'cancelled',\n} as const;\n\nexport const PRIORITY_LEVELS = {\n LOW: 'low',\n MEDIUM: 'medium',\n HIGH: 'high',\n CRITICAL: 'critical',\n} as const;\n\nexport const COMPLEXITY_LEVELS = {\n SIMPLE: 'simple',\n MEDIUM: 'medium',\n COMPLEX: 'complex',\n EPIC: 'epic',\n} as const;\n\nexport const CHART_TYPES = {\n GANTT: 'gantt',\n BURNDOWN: 'burndown',\n PIE: 'pie',\n BAR: 'bar',\n LINE: 'line',\n TIMELINE: 'timeline',\n KANBAN: 'kanban',\n} as const;\n\nexport const CHART_THEMES = {\n LIGHT: 'light',\n DARK: 'dark',\n} as const;\n\nexport const DEFAULT_COLORS = [\n '#3B82F6', // Blue\n '#10B981', // Green\n '#F59E0B', // Yellow\n '#EF4444', // Red\n '#8B5CF6', // Purple\n '#06B6D4', // Cyan\n '#84CC16', // Lime\n '#F97316', // Orange\n '#EC4899', // Pink\n '#6B7280', // Gray\n];\n\nexport const ERROR_CODES = {\n CONFIG_NOT_FOUND: 1001,\n CONFIG_INVALID: 1002,\n CONFIG_PARSE_ERROR: 1003,\n\n FILE_NOT_FOUND: 2001,\n FILE_READ_ERROR: 2002,\n FILE_WRITE_ERROR: 2003,\n\n UNSUPPORTED_FORMAT: 2004,\n\n PRD_PARSE_ERROR: 3001,\n PRD_FORMAT_UNSUPPORTED: 3002,\n PRD_CONTENT_INVALID: 3003,\n\n AI_MODEL_ERROR: 4001,\n AI_API_ERROR: 4002,\n AI_RATE_LIMIT: 4003,\n AI_TIMEOUT: 4004,\n\n MCP_SERVER_ERROR: 5001,\n MCP_TOOL_ERROR: 5002,\n MCP_RESOURCE_ERROR: 5003,\n\n VALIDATION_ERROR: 6001,\n REQUIRED_FIELD_MISSING: 6002,\n INVALID_FORMAT: 6003,\n\n NETWORK_ERROR: 7001,\n CONNECTION_TIMEOUT: 7002,\n\n PLUGIN_NOT_FOUND: 8001,\n PLUGIN_LOAD_ERROR: 8002,\n PLUGIN_EXECUTION_ERROR: 8003,\n} as const;\n\nimport { TaskFlowConfig } from '../types';\n\nexport const DEFAULT_CONFIG: TaskFlowConfig = {\n projectName: '',\n version: '1.0.0',\n workspace: '',\n environment: 'development',\n models: [],\n aiModels: [],\n cache: { enabled: false, l1: { enabled: false, maxSize: 0, ttl: 0 }, l2: { enabled: false, ttl: 0 } },\n logging: { level: 'info', console: true, format: 'text' },\n plugins: { enabled: [], directory: './plugins', autoLoad: false },\n extensions: { tools: { directory: './tools', autoDiscover: false }, workflows: { directory: './workflows', autoDiscover: false } },\n security: { enableCommandWhitelist: false, enablePrivateIPRestriction: false, enablePathTraversalProtection: true, enableCredentialMasking: true },\n mcpSettings: {\n enabled: true,\n port: MCP_CONFIG.DEFAULT_PORT,\n host: MCP_CONFIG.DEFAULT_HOST,\n serverName: MCP_CONFIG.SERVER_NAME,\n version: MCP_CONFIG.PROTOCOL_VERSION,\n capabilities: [],\n security: {\n authRequired: false,\n allowedOrigins: ['*'],\n rateLimit: {\n requestsPerMinute: MCP_CONFIG.MAX_REQUESTS_PER_MINUTE,\n tokensPerMinute: 10000,\n },\n sandbox: {\n enabled: true,\n timeout: 30000,\n },\n },\n tools: [],\n resources: [],\n },\n};\n\nexport const CLI_COLORS = {\n PRIMARY: '#3B82F6',\n SUCCESS: '#10B981',\n WARNING: '#F59E0B',\n ERROR: '#EF4444',\n INFO: '#06B6D4',\n MUTED: '#6B7280',\n};\n\nexport const CLI_SYMBOLS = {\n SUCCESS: '✅',\n ERROR: '❌',\n WARNING: '⚠️',\n INFO: 'ℹ️',\n LOADING: '⏳',\n ARROW: '➜',\n BULLET: '•',\n};\n\nexport const REGEX_PATTERNS = {\n EMAIL: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/,\n URL: /^https?:\\/\\/.+/,\n SEMVER: /^\\d+\\.\\d+\\.\\d+$/,\n TASK_ID: /^[a-zA-Z0-9-_]+$/,\n PROJECT_NAME: /^[a-zA-Z0-9-_\\s]+$/,\n};\n\nexport const PERFORMANCE = {\n CACHE_TTL: 60 * 60 * 1000, // 1小时\n MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB\n MAX_BATCH_SIZE: 100,\n DEBOUNCE_DELAY: 300,\n THROTTLE_DELAY: 1000,\n};\n\nexport const ENV_VARS = {\n NODE_ENV: 'NODE_ENV',\n DEBUG: 'DEBUG',\n CONFIG_PATH: 'TASKFLOW_CONFIG_PATH',\n DATA_DIR: 'TASKFLOW_DATA_DIR',\n CACHE_DIR: 'TASKFLOW_CACHE_DIR',\n LOG_LEVEL: 'TASKFLOW_LOG_LEVEL',\n MCP_PORT: 'TASKFLOW_MCP_PORT',\n MCP_HOST: 'TASKFLOW_MCP_HOST',\n} as const;\n"}, "dba32f34205e255827da75891a9fcfc65e70ad21": {"t": 1785759214.185841, "n": 6340, "h": "43411613374de2e6", "c": "/**\n * TaskFlow AI 常量定义\n */\n\nexport const APP_NAME = 'TaskFlow AI';\nexport const APP_VERSION = '2.0.0';\nexport const APP_DESCRIPTION = '智能PRD文档解析与任务管理助手';\n\nexport const CONFIG_DIR = '.taskflow';\nexport const CONFIG_FILE = 'config.json';\nexport const CACHE_DIR = 'cache';\nexport const LOGS_DIR = 'logs';\nexport const TEMPLATES_DIR = 'templates';\nexport const PLUGINS_DIR = 'plugins';\n\nexport const DEFAULT_OUTPUT_DIR = 'output';\nexport const DEFAULT_REPORTS_DIR = 'reports';\n\nexport const SUPPORTED_PRD_FORMATS = [\n '.md',\n '.markdown',\n '.txt',\n '.doc',\n '.docx',\n '.pdf',\n '.html',\n '.htm',\n] as const;\n\nexport const SUPPORTED_OUTPUT_FORMATS = [\n 'json',\n 'yaml',\n 'markdown',\n 'html',\n 'csv',\n 'excel',\n] as const;\n\nexport const AI_PROVIDERS = {\n DEEPSEEK: 'deepseek',\n ZHIPU: 'zhipu',\n QWEN: 'qwen',\n BAIDU: 'baidu',\n MOONSHOT: 'moonshot',\n SPARK: 'spark',\n OPENAI: 'openai',\n CLAUDE: 'claude',\n} as const;\n\nexport const DEFAULT_AI_SETTINGS = {\n maxTokens: 4000,\n temperature: 0.7,\n timeout: 30000,\n retryAttempts: 3,\n retryDelay: 1000,\n};\n\nexport const AI_MODEL_ENDPOINTS = {\n [AI_PROVIDERS.DEEPSEEK]: 'https://api.deepseek.com/v1',\n [AI_PROVIDERS.ZHIPU]: 'https://open.bigmodel.cn/api/paas/v4',\n [AI_PROVIDERS.QWEN]: 'https://dashscope.aliyuncs.com/api/v1',\n [AI_PROVIDERS.BAIDU]: 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1',\n [AI_PROVIDERS.MOONSHOT]: 'https://api.moonshot.cn/v1',\n [AI_PROVIDERS.SPARK]: 'https://spark-api.xf-yun.com/v1.1',\n};\n\nexport const MCP_CONFIG = {\n DEFAULT_PORT: 3000,\n DEFAULT_HOST: 'localhost',\n SERVER_NAME: 'taskflow-ai',\n PROTOCOL_VERSION: '2024-11-05',\n TIMEOUT: 30000,\n MAX_REQUESTS_PER_MINUTE: 100,\n};\n\nexport const MCP_TOOLS = {\n FILE_READ: 'file_read',\n FILE_WRITE: 'file_write',\n FILE_LIST: 'file_list',\n SHELL_EXEC: 'shell_exec',\n PROJECT_ANALYZE: 'project_analyze',\n TASK_CREATE: 'task_create',\n TASK_UPDATE: 'task_update',\n TASK_LIST: 'task_list',\n PRD_PARSE: 'prd_parse',\n VISUALIZE: 'visualize',\n} as const;\n\nexport const MCP_RESOURCES = {\n TASKS: '/tasks',\n PROJECTS: '/projects',\n MODELS: '/models',\n CONFIG: '/config',\n STATUS: '/status',\n HEALTH: '/health',\n} as const;\n\nexport const TASK_TYPES = {\n FRONTEND: 'frontend',\n BACKEND: 'backend',\n DATABASE: 'database',\n TESTING: 'testing',\n DEPLOYMENT: 'deployment',\n DOCUMENTATION: 'documentation',\n RESEARCH: 'research',\n DESIGN: 'design',\n} as const;\n\nexport const TASK_STATUSES = {\n TODO: 'todo',\n IN_PROGRESS: 'in-progress',\n REVIEW: 'review',\n TESTING: 'testing',\n DONE: 'done',\n BLOCKED: 'blocked',\n CANCELLED: 'cancelled',\n} as const;\n\nexport const PRIORITY_LEVELS = {\n LOW: 'low',\n MEDIUM: 'medium',\n HIGH: 'high',\n CRITICAL: 'critical',\n} as const;\n\nexport const COMPLEXITY_LEVELS = {\n SIMPLE: 'simple',\n MEDIUM: 'medium',\n COMPLEX: 'complex',\n EPIC: 'epic',\n} as const;\n\nexport const CHART_TYPES = {\n GANTT: 'gantt',\n BURNDOWN: 'burndown',\n PIE: 'pie',\n BAR: 'bar',\n LINE: 'line',\n TIMELINE: 'timeline',\n KANBAN: 'kanban',\n} as const;\n\nexport const CHART_THEMES = {\n LIGHT: 'light',\n DARK: 'dark',\n} as const;\n\nexport const DEFAULT_COLORS = [\n '#3B82F6', // Blue\n '#10B981', // Green\n '#F59E0B', // Yellow\n '#EF4444', // Red\n '#8B5CF6', // Purple\n '#06B6D4', // Cyan\n '#84CC16', // Lime\n '#F97316', // Orange\n '#EC4899', // Pink\n '#6B7280', // Gray\n];\n\nexport const ERROR_CODES = {\n CONFIG_NOT_FOUND: 1001,\n CONFIG_INVALID: 1002,\n CONFIG_PARSE_ERROR: 1003,\n\n FILE_NOT_FOUND: 2001,\n FILE_READ_ERROR: 2002,\n FILE_WRITE_ERROR: 2003,\n\n UNSUPPORTED_FORMAT: 2004,\n\n PRD_PARSE_ERROR: 3001,\n PRD_FORMAT_UNSUPPORTED: 3002,\n PRD_CONTENT_INVALID: 3003,\n\n AI_MODEL_ERROR: 4001,\n AI_API_ERROR: 4002,\n AI_RATE_LIMIT: 4003,\n AI_TIMEOUT: 4004,\n\n MCP_SERVER_ERROR: 5001,\n MCP_TOOL_ERROR: 5002,\n MCP_RESOURCE_ERROR: 5003,\n\n VALIDATION_ERROR: 6001,\n REQUIRED_FIELD_MISSING: 6002,\n INVALID_FORMAT: 6003,\n\n NETWORK_ERROR: 7001,\n CONNECTION_TIMEOUT: 7002,\n\n PLUGIN_NOT_FOUND: 8001,\n PLUGIN_LOAD_ERROR: 8002,\n PLUGIN_EXECUTION_ERROR: 8003,\n} as const;\n\nimport { TaskFlowConfig } from '../types';\n\nexport const DEFAULT_CONFIG: TaskFlowConfig = {\n projectName: '',\n version: '1.0.0',\n workspace: '',\n environment: 'development',\n models: [],\n aiModels: [],\n cache: { enabled: false, l1: { enabled: false, maxSize: 0, ttl: 0 }, l2: { enabled: false, ttl: 0 } },\n logging: { level: 'info', console: true, format: 'text' },\n plugins: { enabled: [], directory: './plugins', autoLoad: false },\n extensions: { agents: { directory: './agents', autoDiscover: false }, tools: { directory: './tools', autoDiscover: false }, workflows: { directory: './workflows', autoDiscover: false } },\n security: { enableCommandWhitelist: false, enablePrivateIPRestriction: false, enablePathTraversalProtection: true, enableCredentialMasking: true },\n mcpSettings: {\n enabled: true,\n port: MCP_CONFIG.DEFAULT_PORT,\n host: MCP_CONFIG.DEFAULT_HOST,\n serverName: MCP_CONFIG.SERVER_NAME,\n version: MCP_CONFIG.PROTOCOL_VERSION,\n capabilities: [],\n security: {\n authRequired: false,\n allowedOrigins: ['*'],\n rateLimit: {\n requestsPerMinute: MCP_CONFIG.MAX_REQUESTS_PER_MINUTE,\n tokensPerMinute: 10000,\n },\n sandbox: {\n enabled: true,\n timeout: 30000,\n },\n },\n tools: [],\n resources: [],\n },\n};\n\nexport const CLI_COLORS = {\n PRIMARY: '#3B82F6',\n SUCCESS: '#10B981',\n WARNING: '#F59E0B',\n ERROR: '#EF4444',\n INFO: '#06B6D4',\n MUTED: '#6B7280',\n};\n\nexport const CLI_SYMBOLS = {\n SUCCESS: '✅',\n ERROR: '❌',\n WARNING: '⚠️',\n INFO: 'ℹ️',\n LOADING: '⏳',\n ARROW: '➜',\n BULLET: '•',\n};\n\nexport const REGEX_PATTERNS = {\n EMAIL: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/,\n URL: /^https?:\\/\\/.+/,\n SEMVER: /^\\d+\\.\\d+\\.\\d+$/,\n TASK_ID: /^[a-zA-Z0-9-_]+$/,\n PROJECT_NAME: /^[a-zA-Z0-9-_\\s]+$/,\n};\n\nexport const PERFORMANCE = {\n CACHE_TTL: 60 * 60 * 1000, // 1小时\n MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB\n MAX_BATCH_SIZE: 100,\n DEBOUNCE_DELAY: 300,\n THROTTLE_DELAY: 1000,\n};\n\nexport const ENV_VARS = {\n NODE_ENV: 'NODE_ENV',\n DEBUG: 'DEBUG',\n CONFIG_PATH: 'TASKFLOW_CONFIG_PATH',\n DATA_DIR: 'TASKFLOW_DATA_DIR',\n CACHE_DIR: 'TASKFLOW_CACHE_DIR',\n LOG_LEVEL: 'TASKFLOW_LOG_LEVEL',\n MCP_PORT: 'TASKFLOW_MCP_PORT',\n MCP_HOST: 'TASKFLOW_MCP_HOST',\n} as const;\n"}, "651ad66dc8ef0f53db828963e684f77b36e45c23": {"t": 1785759216.0954819, "n": 6108, "h": "3d6e24375581e8bc", "c": "/**\n * TaskFlow AI 常量定义\n */\n\nexport const APP_NAME = 'TaskFlow AI';\nexport const APP_VERSION = '2.0.0';\nexport const APP_DESCRIPTION = '智能PRD文档解析与任务管理助手';\n\nexport const CONFIG_DIR = '.taskflow';\nexport const CONFIG_FILE = 'config.json';\nexport const CACHE_DIR = 'cache';\nexport const LOGS_DIR = 'logs';\nexport const TEMPLATES_DIR = 'templates';\nexport const PLUGINS_DIR = 'plugins';\n\nexport const DEFAULT_OUTPUT_DIR = 'output';\nexport const DEFAULT_REPORTS_DIR = 'reports';\n\nexport const SUPPORTED_PRD_FORMATS = [\n '.md',\n '.markdown',\n '.txt',\n '.doc',\n '.docx',\n '.pdf',\n '.html',\n '.htm',\n] as const;\n\nexport const SUPPORTED_OUTPUT_FORMATS = [\n 'json',\n 'yaml',\n 'markdown',\n 'html',\n 'csv',\n 'excel',\n] as const;\n\nexport const AI_PROVIDERS = {\n DEEPSEEK: 'deepseek',\n ZHIPU: 'zhipu',\n QWEN: 'qwen',\n BAIDU: 'baidu',\n MOONSHOT: 'moonshot',\n SPARK: 'spark',\n OPENAI: 'openai',\n CLAUDE: 'claude',\n} as const;\n\nexport const DEFAULT_AI_SETTINGS = {\n maxTokens: 4000,\n temperature: 0.7,\n timeout: 30000,\n retryAttempts: 3,\n retryDelay: 1000,\n};\n\nexport const AI_MODEL_ENDPOINTS = {\n [AI_PROVIDERS.DEEPSEEK]: 'https://api.deepseek.com/v1',\n [AI_PROVIDERS.ZHIPU]: 'https://open.bigmodel.cn/api/paas/v4',\n [AI_PROVIDERS.QWEN]: 'https://dashscope.aliyuncs.com/api/v1',\n [AI_PROVIDERS.BAIDU]: 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1',\n [AI_PROVIDERS.MOONSHOT]: 'https://api.moonshot.cn/v1',\n [AI_PROVIDERS.SPARK]: 'https://spark-api.xf-yun.com/v1.1',\n};\n\nexport const MCP_CONFIG = {\n DEFAULT_PORT: 3000,\n DEFAULT_HOST: 'localhost',\n SERVER_NAME: 'taskflow-ai',\n PROTOCOL_VERSION: '2024-11-05',\n TIMEOUT: 30000,\n MAX_REQUESTS_PER_MINUTE: 100,\n};\n\nexport const MCP_TOOLS = {\n FILE_READ: 'file_read',\n FILE_WRITE: 'file_write',\n FILE_LIST: 'file_list',\n SHELL_EXEC: 'shell_exec',\n PROJECT_ANALYZE: 'project_analyze',\n TASK_CREATE: 'task_create',\n TASK_UPDATE: 'task_update',\n TASK_LIST: 'task_list',\n PRD_PARSE: 'prd_parse',\n VISUALIZE: 'visualize',\n} as const;\n\nexport const MCP_RESOURCES = {\n TASKS: '/tasks',\n PROJECTS: '/projects',\n MODELS: '/models',\n CONFIG: '/config',\n STATUS: '/status',\n HEALTH: '/health',\n} as const;\n\nexport const TASK_TYPES = {\n FRONTEND: 'frontend',\n BACKEND: 'backend',\n DATABASE: 'database',\n TESTING: 'testing',\n DEPLOYMENT: 'deployment',\n DOCUMENTATION: 'documentation',\n RESEARCH: 'research',\n DESIGN: 'design',\n} as const;\n\nexport const TASK_STATUSES = {\n TODO: 'todo',\n IN_PROGRESS: 'in-progress',\n REVIEW: 'review',\n TESTING: 'testing',\n DONE: 'done',\n BLOCKED: 'blocked',\n CANCELLED: 'cancelled',\n} as const;\n\nexport const PRIORITY_LEVELS = {\n LOW: 'low',\n MEDIUM: 'medium',\n HIGH: 'high',\n CRITICAL: 'critical',\n} as const;\n\nexport const COMPLEXITY_LEVELS = {\n SIMPLE: 'simple',\n MEDIUM: 'medium',\n COMPLEX: 'complex',\n EPIC: 'epic',\n} as const;\n\nexport const CHART_TYPES = {\n GANTT: 'gantt',\n BURNDOWN: 'burndown',\n PIE: 'pie',\n BAR: 'bar',\n LINE: 'line',\n TIMELINE: 'timeline',\n KANBAN: 'kanban',\n} as const;\n\nexport const CHART_THEMES = {\n LIGHT: 'light',\n DARK: 'dark',\n} as const;\n\nexport const DEFAULT_COLORS = [\n '#3B82F6', // Blue\n '#10B981', // Green\n '#F59E0B', // Yellow\n '#EF4444', // Red\n '#8B5CF6', // Purple\n '#06B6D4', // Cyan\n '#84CC16', // Lime\n '#F97316', // Orange\n '#EC4899', // Pink\n '#6B7280', // Gray\n];\n\nexport const ERROR_CODES = {\n CONFIG_NOT_FOUND: 'CONFIG_NOT_FOUND',\n CONFIG_INVALID: 'CONFIG_INVALID',\n CONFIG_PARSE_ERROR: 'CONFIG_PARSE_ERROR',\n\n FILE_NOT_FOUND: 'FILE_NOT_FOUND',\n FILE_READ_ERROR: 'FILE_READ_ERROR',\n FILE_WRITE_ERROR: 'FILE_WRITE_ERROR',\n\n PRD_PARSE_ERROR: 'PRD_PARSE_ERROR',\n PRD_FORMAT_UNSUPPORTED: 'PRD_FORMAT_UNSUPPORTED',\n PRD_CONTENT_INVALID: 'PRD_CONTENT_INVALID',\n\n AI_MODEL_ERROR: 'AI_MODEL_ERROR',\n AI_API_ERROR: 'AI_API_ERROR',\n AI_RATE_LIMIT: 'AI_RATE_LIMIT',\n AI_TIMEOUT: 'AI_TIMEOUT',\n\n MCP_SERVER_ERROR: 'MCP_SERVER_ERROR',\n MCP_TOOL_ERROR: 'MCP_TOOL_ERROR',\n MCP_RESOURCE_ERROR: 'MCP_RESOURCE_ERROR',\n\n VALIDATION_ERROR: 'VALIDATION_ERROR',\n REQUIRED_FIELD_MISSING: 'REQUIRED_FIELD_MISSING',\n INVALID_FORMAT: 'INVALID_FORMAT',\n\n NETWORK_ERROR: 'NETWORK_ERROR',\n CONNECTION_TIMEOUT: 'CONNECTION_TIMEOUT',\n\n PLUGIN_NOT_FOUND: 'PLUGIN_NOT_FOUND',\n PLUGIN_LOAD_ERROR: 'PLUGIN_LOAD_ERROR',\n PLUGIN_EXECUTION_ERROR: 'PLUGIN_EXECUTION_ERROR',\n} as const;\n\nimport { TaskFlowConfig } from '../types';\n\nexport const DEFAULT_CONFIG = {\n projectName: '',\n version: '1.0.0',\n aiModels: [],\n mcpSettings: {\n enabled: true,\n port: MCP_CONFIG.DEFAULT_PORT,\n host: MCP_CONFIG.DEFAULT_HOST,\n serverName: MCP_CONFIG.SERVER_NAME,\n version: MCP_CONFIG.PROTOCOL_VERSION,\n capabilities: [],\n security: {\n authRequired: false,\n allowedOrigins: ['*'],\n rateLimit: {\n enabled: true,\n maxRequests: MCP_CONFIG.MAX_REQUESTS_PER_MINUTE,\n windowMs: 60000,\n },\n sandbox: {\n enabled: true,\n timeout: 30000,\n memoryLimit: 512 * 1024 * 1024, // 512MB\n },\n },\n tools: [],\n resources: [],\n },\n outputFormats: ['json', 'markdown'],\n plugins: [],\n};\n\nexport const CLI_COLORS = {\n PRIMARY: '#3B82F6',\n SUCCESS: '#10B981',\n WARNING: '#F59E0B',\n ERROR: '#EF4444',\n INFO: '#06B6D4',\n MUTED: '#6B7280',\n};\n\nexport const CLI_SYMBOLS = {\n SUCCESS: '✅',\n ERROR: '❌',\n WARNING: '⚠️',\n INFO: 'ℹ️',\n LOADING: '⏳',\n ARROW: '➜',\n BULLET: '•',\n};\n\nexport const REGEX_PATTERNS = {\n EMAIL: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/,\n URL: /^https?:\\/\\/.+/,\n SEMVER: /^\\d+\\.\\d+\\.\\d+$/,\n TASK_ID: /^[a-zA-Z0-9-_]+$/,\n PROJECT_NAME: /^[a-zA-Z0-9-_\\s]+$/,\n};\n\nexport const PERFORMANCE = {\n CACHE_TTL: 60 * 60 * 1000, // 1小时\n MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB\n MAX_BATCH_SIZE: 100,\n DEBOUNCE_DELAY: 300,\n THROTTLE_DELAY: 1000,\n};\n\nexport const ENV_VARS = {\n NODE_ENV: 'NODE_ENV',\n DEBUG: 'DEBUG',\n CONFIG_PATH: 'TASKFLOW_CONFIG_PATH',\n DATA_DIR: 'TASKFLOW_DATA_DIR',\n CACHE_DIR: 'TASKFLOW_CACHE_DIR',\n LOG_LEVEL: 'TASKFLOW_LOG_LEVEL',\n MCP_PORT: 'TASKFLOW_MCP_PORT',\n MCP_HOST: 'TASKFLOW_MCP_HOST',\n} as const;\n"}}}}