agentic-flow 2.0.13 → 2.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/agents/directApiAgent.d.ts.map +1 -1
- package/dist/agents/directApiAgent.js +37 -19
- package/dist/agents/directApiAgent.js.map +1 -1
- package/dist/cli/commands/hooks.d.ts.map +1 -1
- package/dist/cli/commands/hooks.js +4 -1
- package/dist/cli/commands/hooks.js.map +1 -1
- package/dist/cli/mcp-manager.js +13 -6
- package/dist/cli/mcp-manager.js.map +1 -1
- package/dist/intelligence/EmbeddingService.js +3 -3
- package/dist/intelligence/EmbeddingService.js.map +1 -1
- package/dist/intelligence/agent-booster-enhanced.d.ts.map +1 -1
- package/dist/intelligence/agent-booster-enhanced.js +5 -3
- package/dist/intelligence/agent-booster-enhanced.js.map +1 -1
- package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
- package/dist/mcp/claudeFlowSdkServer.js +76 -29
- package/dist/mcp/claudeFlowSdkServer.js.map +1 -1
- package/dist/mcp/fastmcp/servers/claude-flow-sdk.js +27 -22
- package/dist/mcp/fastmcp/servers/claude-flow-sdk.js.map +1 -1
- package/dist/mcp/fastmcp/servers/http-sse.js +31 -20
- package/dist/mcp/fastmcp/servers/http-sse.js.map +1 -1
- package/dist/mcp/fastmcp/servers/http-streaming-updated.js +33 -32
- package/dist/mcp/fastmcp/servers/http-streaming-updated.js.map +1 -1
- package/dist/mcp/fastmcp/servers/poc-stdio.js +10 -11
- package/dist/mcp/fastmcp/servers/poc-stdio.js.map +1 -1
- package/dist/mcp/fastmcp/servers/stdio-full.js +33 -32
- package/dist/mcp/fastmcp/servers/stdio-full.js.map +1 -1
- package/dist/mcp/fastmcp/tools/agent/execute.d.ts.map +1 -1
- package/dist/mcp/fastmcp/tools/agent/execute.js +8 -5
- package/dist/mcp/fastmcp/tools/agent/execute.js.map +1 -1
- package/dist/mcp/fastmcp/tools/agent/list.d.ts.map +1 -1
- package/dist/mcp/fastmcp/tools/agent/list.js +4 -2
- package/dist/mcp/fastmcp/tools/agent/list.js.map +1 -1
- package/dist/mcp/fastmcp/tools/agent/parallel.d.ts.map +1 -1
- package/dist/mcp/fastmcp/tools/agent/parallel.js +4 -2
- package/dist/mcp/fastmcp/tools/agent/parallel.js.map +1 -1
- package/dist/mcp/fastmcp/tools/hooks/pretrain.d.ts.map +1 -1
- package/dist/mcp/fastmcp/tools/hooks/pretrain.js +11 -3
- package/dist/mcp/fastmcp/tools/hooks/pretrain.js.map +1 -1
- package/dist/mcp/fastmcp/tools/swarm/orchestrate.d.ts.map +1 -1
- package/dist/mcp/fastmcp/tools/swarm/orchestrate.js +9 -5
- package/dist/mcp/fastmcp/tools/swarm/orchestrate.js.map +1 -1
- package/dist/mcp/standalone-stdio.js +72 -57
- package/dist/mcp/standalone-stdio.js.map +1 -1
- package/dist/reasoningbank/utils/embeddings.d.ts +0 -6
- package/dist/reasoningbank/utils/embeddings.d.ts.map +1 -1
- package/dist/reasoningbank/utils/embeddings.js +9 -43
- package/dist/reasoningbank/utils/embeddings.js.map +1 -1
- package/dist/router/providers/onnx-local-optimized.d.ts +1 -10
- package/dist/router/providers/onnx-local-optimized.d.ts.map +1 -1
- package/dist/router/providers/onnx-local-optimized.js +9 -10
- package/dist/router/providers/onnx-local-optimized.js.map +1 -1
- package/dist/router/providers/onnx-local.d.ts +0 -9
- package/dist/router/providers/onnx-local.d.ts.map +1 -1
- package/dist/router/providers/onnx-local.js +7 -22
- package/dist/router/providers/onnx-local.js.map +1 -1
- package/dist/sdk/plugins.d.ts +6 -6
- package/dist/sdk/plugins.d.ts.map +1 -1
- package/dist/sdk/plugins.js +37 -0
- package/dist/sdk/plugins.js.map +1 -1
- package/dist/transport/index.d.ts +1 -0
- package/dist/transport/index.d.ts.map +1 -1
- package/dist/transport/index.js +1 -0
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/quic-loader.d.ts +217 -0
- package/dist/transport/quic-loader.d.ts.map +1 -0
- package/dist/transport/quic-loader.js +412 -0
- package/dist/transport/quic-loader.js.map +1 -0
- package/dist/utils/agentBoosterPreprocessor.js +16 -22
- package/dist/utils/agentBoosterPreprocessor.js.map +1 -1
- package/package.json +5 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/cli/commands/hooks.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * CLI Hooks Commands\n * Provides CLI interface for agentic-flow hook tools\n *\n * NOW WITH FULL RUVECTOR INTELLIGENCE:\n * - @ruvector/sona: Micro-LoRA (~0.05ms), EWC++, Trajectory tracking\n * - @ruvector/attention: MoE, Flash, Hyperbolic, Graph attention\n * - ruvector core: HNSW indexing (150x faster)\n *\n * Available as BOTH:\n * 1. CLI Commands (agentic-flow hooks ...)\n * 2. MCP Tools (via hooks-server.ts)\n */\n\nimport { Command } from 'commander';\nimport * as path from 'path';\n\n// Import hook tools\nimport { hookPreEditTool } from '../../mcp/fastmcp/tools/hooks/pre-edit.js';\nimport { hookPostEditTool } from '../../mcp/fastmcp/tools/hooks/post-edit.js';\nimport { hookPreCommandTool } from '../../mcp/fastmcp/tools/hooks/pre-command.js';\nimport { hookPostCommandTool } from '../../mcp/fastmcp/tools/hooks/post-command.js';\nimport { hookRouteTool } from '../../mcp/fastmcp/tools/hooks/route.js';\nimport { hookExplainTool } from '../../mcp/fastmcp/tools/hooks/explain.js';\nimport { hookPretrainTool } from '../../mcp/fastmcp/tools/hooks/pretrain.js';\nimport { hookBuildAgentsTool } from '../../mcp/fastmcp/tools/hooks/build-agents.js';\nimport { hookMetricsTool } from '../../mcp/fastmcp/tools/hooks/metrics.js';\nimport { hookTransferTool } from '../../mcp/fastmcp/tools/hooks/transfer.js';\n\n// Import intelligence tools (RuVector SONA + Attention + HNSW)\nimport {\n intelligenceRouteTool,\n intelligenceTrajectoryStartTool,\n intelligenceTrajectoryStepTool,\n intelligenceTrajectoryEndTool,\n intelligencePatternStoreTool,\n intelligencePatternSearchTool,\n intelligenceStatsTool,\n intelligenceLearnTool,\n intelligenceAttentionTool\n} from '../../mcp/fastmcp/tools/hooks/intelligence-tools.js';\n\nconst mockContext = {\n onProgress: (update: { progress: number; message: string }) => {\n if (process.env.VERBOSE) {\n console.log(`[${Math.round(update.progress * 100)}%] ${update.message}`);\n }\n }\n};\n\nexport function createHooksCommand(): Command {\n const hooks = new Command('hooks')\n .description('Self-learning intelligence hooks for agent routing and optimization')\n .addHelpCommand(true) // Enable 'hooks help <subcommand>'\n .action(() => {\n // Default action when no subcommand provided - show help\n hooks.outputHelp();\n });\n\n // Pre-edit hook\n hooks\n .command('pre-edit <filePath>')\n .description('Get context and agent suggestion before editing a file')\n .option('-t, --task <task>', 'Task description')\n .option('-j, --json', 'Output as JSON')\n .action(async (filePath: string, options: { task?: string; json?: boolean }) => {\n try {\n const result = await hookPreEditTool.execute(\n { filePath, task: options.task },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n🎯 Suggested Agent: ${result.suggestedAgent}`);\n console.log(`📊 Confidence: ${(result.confidence * 100).toFixed(1)}%`);\n if (result.relatedFiles?.length > 0) {\n console.log(`📁 Related Files:`);\n result.relatedFiles.forEach((f: string) => console.log(` - ${f}`));\n }\n console.log(`⏱️ Latency: ${result.latencyMs}ms`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Post-edit hook\n hooks\n .command('post-edit <filePath>')\n .description('Record edit outcome for learning')\n .option('-s, --success', 'Mark as successful edit')\n .option('-f, --fail', 'Mark as failed edit')\n .option('-a, --agent <agent>', 'Agent that performed the edit')\n .option('-d, --duration <ms>', 'Edit duration in milliseconds', parseInt)\n .option('-e, --error <message>', 'Error message if failed')\n .option('-j, --json', 'Output as JSON')\n .action(async (filePath: string, options: {\n success?: boolean;\n fail?: boolean;\n agent?: string;\n duration?: number;\n error?: string;\n json?: boolean;\n }) => {\n try {\n const success = options.success || !options.fail;\n const result = await hookPostEditTool.execute(\n {\n filePath,\n success,\n agent: options.agent,\n duration: options.duration,\n errorMessage: options.error\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n${success ? '✅' : '❌'} Edit recorded: ${filePath}`);\n console.log(`📈 Pattern updated: ${result.newPatternValue?.toFixed(2) || 'N/A'}`);\n console.log(`📊 Routing accuracy: ${(result.routingAccuracy * 100).toFixed(1)}%`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Pre-command hook\n hooks\n .command('pre-command <command>')\n .description('Assess command risk before execution')\n .option('-j, --json', 'Output as JSON')\n .action(async (command: string, options: { json?: boolean }) => {\n try {\n const result = await hookPreCommandTool.execute({ command }, mockContext);\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n const riskIcon = result.blocked ? '🚫' :\n result.riskCategory === 'safe' ? '✅' :\n result.riskCategory === 'caution' ? '⚠️' : '❌';\n console.log(`\\n${riskIcon} Risk Level: ${result.riskCategory.toUpperCase()} (${(result.riskLevel * 100).toFixed(0)}%)`);\n if (result.blocked) {\n console.log(`🚫 Command BLOCKED - dangerous operation detected`);\n } else if (result.approved) {\n console.log(`✅ Command APPROVED`);\n }\n if (result.suggestions?.length > 0) {\n console.log(`💡 Suggestions:`);\n result.suggestions.forEach((s: string) => console.log(` - ${s}`));\n }\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Post-command hook\n hooks\n .command('post-command <command>')\n .description('Record command outcome for learning')\n .option('-c, --exit-code <code>', 'Exit code', parseInt, 0)\n .option('-o, --stdout <output>', 'Command stdout')\n .option('-e, --stderr <error>', 'Command stderr')\n .option('-j, --json', 'Output as JSON')\n .action(async (command: string, options: {\n exitCode?: number;\n stdout?: string;\n stderr?: string;\n json?: boolean;\n }) => {\n try {\n const result = await hookPostCommandTool.execute(\n {\n command,\n exitCode: options.exitCode ?? 0,\n stdout: options.stdout,\n stderr: options.stderr\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n${result.commandSuccess ? '✅' : '❌'} Command outcome recorded`);\n console.log(`📚 Learned: ${result.learned ? 'Yes' : 'No'}`);\n if (result.errorType) {\n console.log(`🔍 Error type: ${result.errorType}`);\n }\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Route hook\n hooks\n .command('route <task>')\n .description('Route task to optimal agent using learned patterns')\n .option('-f, --file <filePath>', 'Context file path')\n .option('-e, --explore', 'Enable exploration mode')\n .option('-j, --json', 'Output as JSON')\n .action(async (task: string, options: {\n file?: string;\n explore?: boolean;\n json?: boolean;\n }) => {\n try {\n const result = await hookRouteTool.execute(\n {\n task,\n context: options.file ? { file: options.file } : undefined,\n explore: options.explore\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n🎯 Recommended Agent: ${result.agent}`);\n console.log(`📊 Confidence: ${(result.confidence * 100).toFixed(1)}%`);\n if (result.explored) {\n console.log(`🔍 Exploration mode: Active`);\n }\n console.log(`\\n📋 Routing Factors:`);\n result.factors.forEach((f: { name: string; score: number }) => {\n console.log(` • ${f.name}: ${(f.score * 100).toFixed(0)}%`);\n });\n if (result.alternatives?.length > 0) {\n console.log(`\\n🔄 Alternatives:`);\n result.alternatives.forEach((a: { agent: string; score: number }) => {\n console.log(` - ${a.agent} (${(a.score * 100).toFixed(0)}%)`);\n });\n }\n console.log(`\\n⏱️ Latency: ${result.latencyMs}ms`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Explain hook\n hooks\n .command('explain <task>')\n .description('Explain routing decision with full transparency')\n .option('-f, --file <filePath>', 'Context file path')\n .option('-j, --json', 'Output as JSON')\n .action(async (task: string, options: {\n file?: string;\n json?: boolean;\n }) => {\n try {\n const result = await hookExplainTool.execute(\n { task, file: options.file },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n📝 Summary: ${result.summary}`);\n console.log(`\\n🎯 Recommended: ${result.recommendedAgent}`);\n console.log(`\\n💡 Reasons:`);\n result.reasons.forEach((r: string) => console.log(` • ${r}`));\n console.log(`\\n🏆 Agent Ranking:`);\n result.ranking.forEach((r: { rank: number; agent: string; score: number }) => {\n console.log(` ${r.rank}. ${r.agent} - ${(r.score * 100).toFixed(1)}%`);\n });\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Pretrain hook\n hooks\n .command('pretrain')\n .description('Analyze repository to bootstrap intelligence')\n .option('-d, --depth <n>', 'Git history depth', parseInt, 50)\n .option('--skip-git', 'Skip git history analysis')\n .option('--skip-files', 'Skip file structure analysis')\n .option('-j, --json', 'Output as JSON')\n .action(async (options: {\n depth?: number;\n skipGit?: boolean;\n skipFiles?: boolean;\n json?: boolean;\n }) => {\n try {\n console.log('🧠 Analyzing repository...\\n');\n const result = await hookPretrainTool.execute(\n {\n depth: options.depth ?? 50,\n skipGit: options.skipGit ?? false,\n skipFiles: options.skipFiles ?? false\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n📊 Pretrain Complete!`);\n console.log(` 📁 Files analyzed: ${result.filesAnalyzed}`);\n console.log(` 🧩 Patterns created: ${result.patternsCreated}`);\n console.log(` 💾 Memories stored: ${result.memoriesStored}`);\n console.log(` 🔗 Co-edits found: ${result.coEditsFound || 0}`);\n if (result.languages?.length > 0) {\n console.log(` 🌐 Languages: ${result.languages.join(', ')}`);\n }\n console.log(` ⏱️ Duration: ${result.durationMs}ms`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Build-agents hook\n hooks\n .command('build-agents')\n .description('Generate optimized agent configurations from pretrain data')\n .option('-f, --focus <mode>', 'Focus mode: quality|speed|security|testing|fullstack', 'quality')\n .option('-o, --output <dir>', 'Output directory', '.claude/agents')\n .option('--format <fmt>', 'Output format: yaml|json', 'yaml')\n .option('--no-prompts', 'Exclude system prompts')\n .option('-j, --json', 'Output as JSON')\n .action(async (options: {\n focus?: string;\n output?: string;\n format?: string;\n prompts?: boolean;\n json?: boolean;\n }) => {\n try {\n console.log(`🏗️ Building agents with focus: ${options.focus}...\\n`);\n const result = await hookBuildAgentsTool.execute(\n {\n focus: options.focus as 'quality' | 'speed' | 'security' | 'testing' | 'fullstack',\n output: options.output,\n format: options.format as 'yaml' | 'json',\n includePrompts: options.prompts !== false\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n✅ Agents Generated!`);\n console.log(` 📦 Total: ${result.agentsGenerated}`);\n console.log(` 📂 Output: ${result.outputDir}`);\n console.log(` 🎯 Focus: ${result.focus}`);\n console.log(`\\n Agents created:`);\n result.agents.forEach((a: string) => console.log(` • ${a}`));\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Metrics hook\n hooks\n .command('metrics')\n .alias('stats')\n .description('View learning metrics and performance dashboard')\n .option('-t, --timeframe <period>', 'Timeframe: 1h|24h|7d|30d', '24h')\n .option('-d, --detailed', 'Show detailed metrics')\n .option('-j, --json', 'Output as JSON')\n .action(async (options: {\n timeframe?: string;\n detailed?: boolean;\n json?: boolean;\n }) => {\n try {\n const result = await hookMetricsTool.execute(\n {\n timeframe: options.timeframe as '1h' | '24h' | '7d' | '30d',\n detailed: options.detailed\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n📊 Learning Metrics (${options.timeframe || '24h'})\\n`);\n console.log(`🎯 Routing:`);\n console.log(` Total routes: ${result.routing.total}`);\n console.log(` Successful: ${result.routing.successful}`);\n console.log(` Accuracy: ${(result.routing.accuracy * 100).toFixed(1)}%`);\n\n console.log(`\\n📚 Learning:`);\n console.log(` Patterns: ${result.learning.patterns}`);\n console.log(` Memories: ${result.learning.memories}`);\n console.log(` Error patterns: ${result.learning.errorPatterns}`);\n\n console.log(`\\n💚 Health: ${result.health.status.toUpperCase()}`);\n if (result.health.issues?.length > 0) {\n console.log(` Issues:`);\n result.health.issues.forEach((i: string) => console.log(` ⚠️ ${i}`));\n }\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Transfer hook\n hooks\n .command('transfer <sourceProject>')\n .description('Transfer learned patterns from another project')\n .option('-c, --min-confidence <n>', 'Minimum confidence threshold', parseFloat, 0.7)\n .option('-m, --max-patterns <n>', 'Maximum patterns to transfer', parseInt, 50)\n .option('--mode <mode>', 'Transfer mode: merge|replace|additive', 'merge')\n .option('-j, --json', 'Output as JSON')\n .action(async (sourceProject: string, options: {\n minConfidence?: number;\n maxPatterns?: number;\n mode?: string;\n json?: boolean;\n }) => {\n try {\n console.log(`📤 Transferring patterns from: ${sourceProject}...\\n`);\n const result = await hookTransferTool.execute(\n {\n sourceProject,\n minConfidence: options.minConfidence,\n maxPatterns: options.maxPatterns,\n mode: options.mode as 'merge' | 'replace' | 'additive'\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n✅ Transfer Complete!`);\n console.log(` 📥 Patterns transferred: ${result.transferred}`);\n console.log(` 🔄 Patterns adapted: ${result.adapted}`);\n console.log(` 🎯 Mode: ${result.mode}`);\n if (result.targetStack?.length > 0) {\n console.log(` 🛠️ Target stack: ${result.targetStack.join(', ')}`);\n }\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Init command (creates .claude/settings.json with hooks)\n hooks\n .command('init')\n .description('Initialize hooks in project with .claude/settings.json')\n .option('--minimal', 'Minimal configuration')\n .option('--force', 'Overwrite existing configuration')\n .option('--no-statusline', 'Skip statusline generation')\n .action(async (options: { minimal?: boolean; force?: boolean; statusline?: boolean }) => {\n try {\n const fs = await import('fs');\n const settingsPath = path.join(process.cwd(), '.claude', 'settings.json');\n const statuslinePath = path.join(process.cwd(), '.claude', 'statusline.mjs');\n const claudeDir = path.dirname(settingsPath);\n\n // Check if exists\n if (fs.existsSync(settingsPath) && !options.force) {\n console.log('⚠️ Settings file already exists. Use --force to overwrite.');\n return;\n }\n\n // Create .claude directory\n if (!fs.existsSync(claudeDir)) {\n fs.mkdirSync(claudeDir, { recursive: true });\n }\n\n // Create statusline.mjs (compact colored format with agent stats)\n if (options.statusline !== false) {\n const statuslineContent = `#!/usr/bin/env node\n// Agentic Flow Intelligence Status Line - Compact Format with Colors\n// Works on Windows, Mac, and Linux - Queries SQLite for real stats\n\nimport { readFileSync, statSync, existsSync } from 'fs';\nimport { execSync } from 'child_process';\n\nconst INTEL_FILE = '.agentic-flow/intelligence.json';\nconst INTEL_DB = '.agentic-flow/intelligence.db';\n\n// Detect dark/light mode\nconst isDarkMode = (() => {\n const colorScheme = process.env.COLORFGBG || '';\n const termBg = process.env.TERM_BACKGROUND || '';\n const vscodeTheme = process.env.VSCODE_TERMINAL_COLOR_THEME || '';\n if (termBg === 'light') return false;\n if (vscodeTheme.toLowerCase().includes('light')) return false;\n if (colorScheme.startsWith('0;') || colorScheme.includes(';15')) return false;\n if (process.env.CLAUDE_CODE_THEME === 'light') return false;\n return true;\n})();\n\n// Color palettes\nconst colors = {\n dark: {\n reset: '\\\\x1b[0m', dim: '\\\\x1b[2m', bold: '\\\\x1b[1m',\n model: '\\\\x1b[38;5;208m', project: '\\\\x1b[38;5;39m', branch: '\\\\x1b[38;5;156m',\n brain: '\\\\x1b[38;5;213m', patterns: '\\\\x1b[38;5;220m', memory: '\\\\x1b[38;5;117m',\n trajectories: '\\\\x1b[38;5;183m', agents: '\\\\x1b[38;5;156m',\n target: '\\\\x1b[38;5;196m', learning: '\\\\x1b[38;5;226m', epsilon: '\\\\x1b[38;5;51m',\n success: '\\\\x1b[38;5;46m', symbol: '\\\\x1b[38;5;245m'\n },\n light: {\n reset: '\\\\x1b[0m', dim: '\\\\x1b[2m', bold: '\\\\x1b[1m',\n model: '\\\\x1b[38;5;166m', project: '\\\\x1b[38;5;27m', branch: '\\\\x1b[38;5;28m',\n brain: '\\\\x1b[38;5;129m', patterns: '\\\\x1b[38;5;136m', memory: '\\\\x1b[38;5;30m',\n trajectories: '\\\\x1b[38;5;91m', agents: '\\\\x1b[38;5;28m',\n target: '\\\\x1b[38;5;160m', learning: '\\\\x1b[38;5;136m', epsilon: '\\\\x1b[38;5;31m',\n success: '\\\\x1b[38;5;28m', symbol: '\\\\x1b[38;5;240m'\n }\n};\nconst c = isDarkMode ? colors.dark : colors.light;\n\nfunction readJson(file) {\n try { return JSON.parse(readFileSync(file, 'utf8')); } catch { return null; }\n}\n\nfunction querySqlite(db, sql) {\n try {\n return execSync(\\`sqlite3 \"\\${db}\" \"\\${sql}\"\\`, { encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 1000 }).trim();\n } catch { return null; }\n}\n\nfunction getGitBranch() {\n try { return execSync('git branch --show-current', { encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'] }).trim(); }\n catch { return ''; }\n}\n\nfunction getProjectName() {\n try { return process.cwd().split('/').pop() || 'project'; } catch { return 'project'; }\n}\n\nfunction formatSize(bytes) {\n if (bytes < 1024) return \\`\\${bytes}B\\`;\n if (bytes < 1024 * 1024) return \\`\\${Math.round(bytes / 1024)}K\\`;\n return \\`\\${(bytes / (1024 * 1024)).toFixed(1)}M\\`;\n}\n\nconst LEARNING_RATE = parseFloat(process.env.AGENTIC_FLOW_LEARNING_RATE || '0.1');\nconst EPSILON = parseFloat(process.env.AGENTIC_FLOW_EPSILON || '0.1');\n\nconst intel = readJson(INTEL_FILE);\nlet dbStats = { totalTrajectories: 0, successfulRoutings: 0, totalRoutings: 0, totalPatterns: 0, totalAgents: 0, activeAgents: 0 };\n\nif (existsSync(INTEL_DB)) {\n const statsRow = querySqlite(INTEL_DB, 'SELECT * FROM stats LIMIT 1');\n if (statsRow) {\n const cols = statsRow.split('|');\n dbStats.totalTrajectories = parseInt(cols[1]) || 0;\n dbStats.totalRoutings = parseInt(cols[3]) || 0;\n dbStats.successfulRoutings = parseInt(cols[4]) || 0;\n dbStats.totalPatterns = parseInt(cols[5]) || 0;\n }\n const trajCount = querySqlite(INTEL_DB, 'SELECT COUNT(*) FROM trajectories');\n if (trajCount) dbStats.totalTrajectories = parseInt(trajCount) || dbStats.totalTrajectories;\n const patternCount = querySqlite(INTEL_DB, 'SELECT COUNT(*) FROM patterns');\n if (patternCount) dbStats.totalPatterns = parseInt(patternCount) || 0;\n}\n\nconst routes = dbStats.totalRoutings > 0 ? dbStats.totalRoutings : (intel?.metrics?.totalRoutes || 0);\nconst patterns = dbStats.totalPatterns > 0 ? dbStats.totalPatterns : (intel?.patterns ? Object.keys(intel.patterns).length : 0);\nconst memories = intel?.memories?.length || 0;\nconst trajectories = dbStats.totalTrajectories;\n\nlet agents = intel?.agents ? Object.keys(intel.agents).length : 66;\nlet activeAgents = intel?.agents ? Object.values(intel.agents).filter(a => a.status === 'active').length : 0;\n\nconst branch = getGitBranch();\nconst project = getProjectName();\n\nlet dbSize = 0;\nif (existsSync(INTEL_DB)) {\n try { dbSize = statSync(INTEL_DB).size; } catch {}\n}\n\nconst lines = [];\n\n// Line 1: Model + project + branch (colored)\nlet line1 = \\`\\${c.model}\\${c.bold}Opus 4.5\\${c.reset}\\`;\nline1 += \\` \\${c.dim}in\\${c.reset} \\${c.project}\\${project}\\${c.reset}\\`;\nif (branch) line1 += \\` \\${c.dim}on\\${c.reset} \\${c.symbol}⎇\\${c.reset} \\${c.branch}\\${branch}\\${c.reset}\\`;\nlines.push(line1);\n\n// Line 2: RuVector stats (compact with symbols)\nlet line2 = \\`\\${c.brain}🧠 RuVector\\${c.reset}\\`;\nline2 += \\` \\${c.symbol}◆\\${c.reset} \\${c.patterns}\\${patterns}\\${c.reset} \\${c.dim}patterns\\${c.reset}\\`;\nif (memories > 0 || dbSize > 0) {\n line2 += \\` \\${c.symbol}⬡\\${c.reset} \\${c.memory}\\${memories > 0 ? memories : formatSize(dbSize)}\\${c.reset} \\${c.dim}mem\\${c.reset}\\`;\n}\nif (trajectories > 0) line2 += \\` \\${c.symbol}↝\\${c.reset}\\${c.trajectories}\\${trajectories}\\${c.reset}\\`;\nif (agents > 0) line2 += \\` \\${c.symbol}#\\${c.reset}\\${c.agents}\\${activeAgents > 0 ? activeAgents + '/' : ''}\\${agents}\\${c.reset}\\`;\nlines.push(line2);\n\n// Line 3: Routing info (compact)\nconst lrPercent = Math.round(LEARNING_RATE * 100);\nconst epsPercent = Math.round(EPSILON * 100);\nlet line3 = \\`\\${c.target}🎯 Routing\\${c.reset} \\${c.dim}q-learning\\${c.reset}\\`;\nline3 += \\` \\${c.learning}lr:\\${lrPercent}%\\${c.reset} \\${c.epsilon}ε:\\${epsPercent}%\\${c.reset}\\`;\nif (routes > 0) {\n const successRate = dbStats.successfulRoutings > 0 ? Math.round((dbStats.successfulRoutings / routes) * 100) : 100;\n line3 += \\` \\${c.symbol}|\\${c.reset} \\${c.success}\\${successRate}% ✓\\${c.reset}\\`;\n}\nlines.push(line3);\n\nconsole.log(lines.join('\\\\n'));\n`;\n fs.writeFileSync(statuslinePath, statuslineContent);\n console.log(` 📊 Created: ${statuslinePath}`);\n }\n\n // Create settings with full capabilities\n const settings = {\n env: {\n AGENTIC_FLOW_INTELLIGENCE: 'true',\n AGENTIC_FLOW_LEARNING_RATE: '0.1',\n AGENTIC_FLOW_MEMORY_BACKEND: 'agentdb',\n AGENTIC_FLOW_WORKERS_ENABLED: 'true',\n AGENTIC_FLOW_MAX_WORKERS: '10'\n },\n hooks: {\n PreToolUse: [\n {\n matcher: 'Edit|Write',\n hooks: [\n {\n type: 'command',\n command: 'npx agentic-flow hooks pre-edit \"$TOOL_INPUT_file_path\"'\n }\n ]\n },\n {\n matcher: 'Bash',\n hooks: [\n {\n type: 'command',\n command: 'npx agentic-flow hooks pre-command \"$TOOL_INPUT_command\"'\n }\n ]\n }\n ],\n PostToolUse: [\n {\n matcher: 'Edit|Write',\n hooks: [\n {\n type: 'command',\n command: 'npx agentic-flow hooks post-edit \"$TOOL_INPUT_file_path\" --success'\n }\n ]\n }\n ],\n PostToolUseFailure: [\n {\n matcher: 'Edit|Write',\n hooks: [\n {\n type: 'command',\n command: 'npx agentic-flow hooks post-edit \"$TOOL_INPUT_file_path\" --fail --error \"$ERROR_MESSAGE\"'\n }\n ]\n }\n ],\n SessionStart: [\n {\n hooks: [\n {\n type: 'command',\n command: 'npx agentic-flow hooks intelligence stats'\n }\n ]\n },\n {\n hooks: [\n {\n type: 'command',\n command: 'npx agentic-flow workers status --active --json 2>/dev/null || true'\n }\n ]\n }\n ],\n SessionEnd: [\n {\n hooks: [\n {\n type: 'command',\n command: 'npx agentic-flow workers cleanup --age 24 2>/dev/null || true'\n }\n ]\n }\n ],\n UserPromptSubmit: [\n {\n hooks: [\n {\n type: 'command',\n timeout: 2000,\n command: 'npx agentic-flow hooks intelligence stats'\n }\n ]\n },\n {\n hooks: [\n {\n type: 'command',\n timeout: 5000,\n background: true,\n command: 'npx agentic-flow workers dispatch-prompt \"$USER_PROMPT\" --session \"$SESSION_ID\" --json 2>/dev/null || true'\n }\n ]\n }\n ]\n },\n permissions: {\n allow: [\n 'Bash(npx:*)',\n 'Bash(agentic-flow:*)',\n 'Bash(npm run:*)',\n 'mcp__agentic-flow',\n 'mcp__claude-flow',\n 'mcp__ruv-swarm'\n ]\n },\n statusLine: options.statusline !== false ? {\n type: 'command',\n command: 'node .claude/statusline.mjs'\n } : undefined\n };\n\n fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));\n console.log('✅ Hooks initialized!');\n console.log(` 📁 Created: ${settingsPath}`);\n console.log('\\n💡 Next steps:');\n console.log(' 1. Run: npx agentic-flow hooks pretrain');\n console.log(' 2. Run: npx agentic-flow hooks build-agents');\n console.log(' 3. Start using Claude Code with intelligent routing!');\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // ============================================\n // RUVECTOR INTELLIGENCE COMMANDS\n // SONA Micro-LoRA + MoE Attention + HNSW\n // ============================================\n\n // Create intelligence subcommand group\n const intelligence = new Command('intelligence')\n .alias('intel')\n .description('RuVector intelligence: SONA Micro-LoRA (~0.05ms) + MoE attention + HNSW (150x faster)');\n\n // Intelligence route command\n intelligence\n .command('route <task>')\n .description('Route task using SONA + MoE + HNSW (150x faster than brute force)')\n .option('-f, --file <path>', 'File context')\n .option('-e, --error <context>', 'Error context for debugging')\n .option('-k, --top-k <n>', 'Number of candidates', parseInt, 5)\n .option('-j, --json', 'Output as JSON')\n .action(async (task: string, options: {\n file?: string;\n error?: string;\n topK?: number;\n json?: boolean;\n }) => {\n try {\n const result = await intelligenceRouteTool.execute(\n { task, file: options.file, errorContext: options.error, topK: options.topK },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n⚡ RuVector Intelligence Route`);\n console.log(`🎯 Agent: ${result.agent}`);\n console.log(`📊 Confidence: ${((result.confidence || 0) * 100).toFixed(1)}%`);\n console.log(`🔧 Engine: ${result.engine}`);\n console.log(`⏱️ Latency: ${result.latencyMs?.toFixed(2)}ms`);\n if (result.features?.length > 0) {\n console.log(`🧠 Features: ${result.features.join(', ')}`);\n }\n if (result.alternatives?.length > 0) {\n console.log(`\\n🔄 Alternatives:`);\n result.alternatives.forEach((a: any) => {\n console.log(` - ${a.agent} (${((a.confidence || 0) * 100).toFixed(1)}%)`);\n });\n }\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Trajectory start command\n intelligence\n .command('trajectory-start <task>')\n .description('Begin SONA trajectory for reinforcement learning')\n .requiredOption('-a, --agent <name>', 'Agent executing the task')\n .option('-c, --context <text>', 'Additional context')\n .option('-j, --json', 'Output as JSON')\n .action(async (task: string, options: {\n agent: string;\n context?: string;\n json?: boolean;\n }) => {\n try {\n const result = await intelligenceTrajectoryStartTool.execute(\n { task, agent: options.agent, context: options.context },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n🎬 Trajectory Started`);\n console.log(`📝 ID: ${result.trajectoryId}`);\n console.log(`🤖 Agent: ${options.agent}`);\n console.log(`🧠 Features: ${result.features?.join(', ')}`);\n console.log(`\\n💡 Use this ID with trajectory-step and trajectory-end commands`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Trajectory step command\n intelligence\n .command('trajectory-step <trajectoryId>')\n .description('Record step in trajectory for reinforcement learning')\n .requiredOption('-a, --action <action>', 'Action taken')\n .requiredOption('-r, --reward <n>', 'Reward signal (-1 to 1)', parseFloat)\n .option('-f, --file <path>', 'File involved')\n .option('--error-fixed', 'Mark as error fix')\n .option('--test-passed', 'Mark as test passed')\n .option('-j, --json', 'Output as JSON')\n .action(async (trajectoryId: string, options: {\n action: string;\n reward: number;\n file?: string;\n errorFixed?: boolean;\n testPassed?: boolean;\n json?: boolean;\n }) => {\n try {\n const result = await intelligenceTrajectoryStepTool.execute(\n {\n trajectoryId: parseInt(trajectoryId),\n action: options.action,\n reward: options.reward,\n file: options.file,\n errorFixed: options.errorFixed,\n testPassed: options.testPassed\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n📍 Step Recorded`);\n console.log(` Action: ${options.action}`);\n console.log(` Reward: ${options.reward}`);\n console.log(` Trajectory: ${trajectoryId}`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Trajectory end command\n intelligence\n .command('trajectory-end <trajectoryId>')\n .description('End trajectory and trigger SONA learning with EWC++')\n .option('-s, --success', 'Mark as successful')\n .option('-f, --fail', 'Mark as failed')\n .option('-q, --quality <n>', 'Quality score (0-1)', parseFloat, 0.8)\n .option('-j, --json', 'Output as JSON')\n .action(async (trajectoryId: string, options: {\n success?: boolean;\n fail?: boolean;\n quality?: number;\n json?: boolean;\n }) => {\n try {\n const success = options.success || !options.fail;\n const result = await intelligenceTrajectoryEndTool.execute(\n { trajectoryId: parseInt(trajectoryId), success, quality: options.quality },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n🏁 Trajectory Completed`);\n console.log(` ${success ? '✅ Success' : '❌ Failed'}`);\n console.log(` Quality: ${(options.quality || 0.8) * 100}%`);\n console.log(` Learning: EWC++ consolidation applied`);\n if (result.learningOutcome) {\n console.log(` Outcome: ${JSON.stringify(result.learningOutcome)}`);\n }\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Pattern store command\n intelligence\n .command('pattern-store')\n .description('Store pattern in ReasoningBank (HNSW-indexed)')\n .requiredOption('-t, --task <task>', 'Task description')\n .requiredOption('-r, --resolution <text>', 'How it was resolved')\n .option('-s, --score <n>', 'Success score (0-1)', parseFloat, 0.9)\n .option('-j, --json', 'Output as JSON')\n .action(async (options: {\n task: string;\n resolution: string;\n score?: number;\n json?: boolean;\n }) => {\n try {\n const result = await intelligencePatternStoreTool.execute(\n { task: options.task, resolution: options.resolution, reward: options.score || 0.9 },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n💾 Pattern Stored`);\n console.log(` Task: ${options.task.slice(0, 50)}...`);\n console.log(` Score: ${((options.score || 0.9) * 100).toFixed(0)}%`);\n console.log(` Index: HNSW (150x faster retrieval)`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Pattern search command\n intelligence\n .command('pattern-search <query>')\n .description('Search ReasoningBank using HNSW (150x faster)')\n .option('-k, --top-k <n>', 'Number of results', parseInt, 5)\n .option('-m, --min-reward <n>', 'Minimum reward filter', parseFloat)\n .option('-j, --json', 'Output as JSON')\n .action(async (query: string, options: {\n topK?: number;\n minReward?: number;\n json?: boolean;\n }) => {\n try {\n const result = await intelligencePatternSearchTool.execute(\n { query, topK: options.topK, minReward: options.minReward },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n🔍 Pattern Search Results`);\n console.log(` Query: \"${query.slice(0, 50)}\"`);\n console.log(` Engine: ${result.searchEngine}`);\n console.log(` Found: ${result.count} patterns`);\n if (result.patterns?.length > 0) {\n console.log(`\\n 📋 Results:`);\n result.patterns.forEach((p: any, i: number) => {\n console.log(` ${i + 1}. [${((p.similarity || 0) * 100).toFixed(0)}%] ${p.resolution?.slice(0, 40)}...`);\n });\n }\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Intelligence stats command\n intelligence\n .command('stats')\n .description('Get RuVector intelligence layer statistics')\n .option('-j, --json', 'Output as JSON')\n .action(async (options: { json?: boolean }) => {\n try {\n const result = await intelligenceStatsTool.execute({}, mockContext);\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n📊 RuVector Intelligence Stats`);\n console.log(`\\n🧠 SONA Engine:`);\n console.log(` Micro-LoRA: ${result.features?.sona?.microLora || 'rank-1 (~0.05ms)'}`);\n console.log(` Base-LoRA: ${result.features?.sona?.baseLora || 'rank-8'}`);\n console.log(` EWC Lambda: ${result.features?.sona?.ewcLambda || 1000.0}`);\n console.log(`\\n⚡ Attention:`);\n console.log(` Type: ${result.features?.attention?.type || 'moe'}`);\n console.log(` Experts: ${result.features?.attention?.experts || 4}`);\n console.log(` Top-K: ${result.features?.attention?.topK || 2}`);\n console.log(`\\n🔍 HNSW:`);\n console.log(` Enabled: ${result.features?.hnsw?.enabled ?? true}`);\n console.log(` Speedup: ${result.features?.hnsw?.speedup || '150x vs brute-force'}`);\n console.log(`\\n📈 Learning:`);\n console.log(` Trajectories: ${result.persistence?.trajectories ?? result.stats?.trajectoryCount ?? 0}`);\n console.log(` Active: ${result.stats?.activeTrajectories || 0}`);\n console.log(`\\n💾 Persistence (SQLite):`);\n console.log(` Backend: ${result.persistence?.backend || 'sqlite'}`);\n console.log(` Routings: ${result.persistence?.routings ?? 0}`);\n console.log(` Patterns: ${result.persistence?.patterns ?? 0}`);\n console.log(` Operations: ${result.persistence?.operations ?? 0}`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Force learning command\n intelligence\n .command('learn')\n .description('Force immediate SONA learning cycle with EWC++ consolidation')\n .option('-r, --reason <text>', 'Reason for forcing learning')\n .option('-j, --json', 'Output as JSON')\n .action(async (options: { reason?: string; json?: boolean }) => {\n try {\n const result = await intelligenceLearnTool.execute(\n { reason: options.reason },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n🎓 Learning Cycle Complete`);\n console.log(` ${result.success ? '✅' : '❌'} ${result.message}`);\n console.log(` Reason: ${result.reason || 'manual trigger'}`);\n console.log(` Features: ${result.features?.join(', ')}`);\n console.log(` Latency: ${result.latencyMs?.toFixed(2)}ms`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Attention compute command\n intelligence\n .command('attention <query>')\n .description('Compute attention-weighted similarity using MoE/Flash/Hyperbolic')\n .requiredOption('-c, --candidates <texts...>', 'Candidate texts to score')\n .option('-t, --type <type>', 'Attention type: moe|flash|hyperbolic|graph|dual', 'moe')\n .option('-j, --json', 'Output as JSON')\n .action(async (query: string, options: {\n candidates: string[];\n type?: string;\n json?: boolean;\n }) => {\n try {\n const result = await intelligenceAttentionTool.execute(\n {\n query,\n candidates: options.candidates,\n attentionType: options.type as 'moe' | 'flash' | 'hyperbolic' | 'graph' | 'dual'\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n🧠 Attention Scores (${options.type || 'moe'})`);\n console.log(` Query: \"${query.slice(0, 40)}...\"`);\n console.log(`\\n 📊 Results:`);\n result.results?.forEach((r: any, i: number) => {\n const bar = '█'.repeat(Math.round(r.score * 20));\n console.log(` ${i + 1}. ${bar} ${(r.score * 100).toFixed(1)}% \"${r.text}\"`);\n });\n console.log(`\\n ⏱️ Latency: ${result.latencyMs?.toFixed(2)}ms`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Add intelligence subcommand to hooks\n hooks.addCommand(intelligence);\n\n return hooks;\n}\n\nexport default createHooksCommand;\n\n// CLI entry point when run directly\nconst isDirectRun = import.meta.url === `file://${process.argv[1]}`;\nif (isDirectRun) {\n const hooks = createHooksCommand();\n hooks.parse(process.argv);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/cli/commands/hooks.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * CLI Hooks Commands\n * Provides CLI interface for agentic-flow hook tools\n *\n * NOW WITH FULL RUVECTOR INTELLIGENCE:\n * - @ruvector/sona: Micro-LoRA (~0.05ms), EWC++, Trajectory tracking\n * - @ruvector/attention: MoE, Flash, Hyperbolic, Graph attention\n * - ruvector core: HNSW indexing (150x faster)\n *\n * Available as BOTH:\n * 1. CLI Commands (agentic-flow hooks ...)\n * 2. MCP Tools (via hooks-server.ts)\n */\n\nimport { Command } from 'commander';\nimport * as path from 'path';\n\n// Import hook tools\nimport { hookPreEditTool } from '../../mcp/fastmcp/tools/hooks/pre-edit.js';\nimport { hookPostEditTool } from '../../mcp/fastmcp/tools/hooks/post-edit.js';\nimport { hookPreCommandTool } from '../../mcp/fastmcp/tools/hooks/pre-command.js';\nimport { hookPostCommandTool } from '../../mcp/fastmcp/tools/hooks/post-command.js';\nimport { hookRouteTool } from '../../mcp/fastmcp/tools/hooks/route.js';\nimport { hookExplainTool } from '../../mcp/fastmcp/tools/hooks/explain.js';\nimport { hookPretrainTool } from '../../mcp/fastmcp/tools/hooks/pretrain.js';\nimport { hookBuildAgentsTool } from '../../mcp/fastmcp/tools/hooks/build-agents.js';\nimport { hookMetricsTool } from '../../mcp/fastmcp/tools/hooks/metrics.js';\nimport { hookTransferTool } from '../../mcp/fastmcp/tools/hooks/transfer.js';\n\n// Import intelligence tools (RuVector SONA + Attention + HNSW)\nimport {\n intelligenceRouteTool,\n intelligenceTrajectoryStartTool,\n intelligenceTrajectoryStepTool,\n intelligenceTrajectoryEndTool,\n intelligencePatternStoreTool,\n intelligencePatternSearchTool,\n intelligenceStatsTool,\n intelligenceLearnTool,\n intelligenceAttentionTool\n} from '../../mcp/fastmcp/tools/hooks/intelligence-tools.js';\n\nconst mockContext = {\n onProgress: (update: { progress: number; message: string }) => {\n if (process.env.VERBOSE) {\n console.log(`[${Math.round(update.progress * 100)}%] ${update.message}`);\n }\n }\n};\n\nexport function createHooksCommand(): Command {\n const hooks = new Command('hooks')\n .description('Self-learning intelligence hooks for agent routing and optimization')\n .addHelpCommand(true) // Enable 'hooks help <subcommand>'\n .action(() => {\n // Default action when no subcommand provided - show help\n hooks.outputHelp();\n });\n\n // Pre-edit hook\n hooks\n .command('pre-edit <filePath>')\n .description('Get context and agent suggestion before editing a file')\n .option('-t, --task <task>', 'Task description')\n .option('-j, --json', 'Output as JSON')\n .action(async (filePath: string, options: { task?: string; json?: boolean }) => {\n try {\n const result = await hookPreEditTool.execute(\n { filePath, task: options.task },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n🎯 Suggested Agent: ${result.suggestedAgent}`);\n console.log(`📊 Confidence: ${(result.confidence * 100).toFixed(1)}%`);\n if (result.relatedFiles?.length > 0) {\n console.log(`📁 Related Files:`);\n result.relatedFiles.forEach((f: string) => console.log(` - ${f}`));\n }\n console.log(`⏱️ Latency: ${result.latencyMs}ms`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Post-edit hook\n hooks\n .command('post-edit <filePath>')\n .description('Record edit outcome for learning')\n .option('-s, --success', 'Mark as successful edit')\n .option('-f, --fail', 'Mark as failed edit')\n .option('-a, --agent <agent>', 'Agent that performed the edit')\n .option('-d, --duration <ms>', 'Edit duration in milliseconds', parseInt)\n .option('-e, --error <message>', 'Error message if failed')\n .option('-j, --json', 'Output as JSON')\n .action(async (filePath: string, options: {\n success?: boolean;\n fail?: boolean;\n agent?: string;\n duration?: number;\n error?: string;\n json?: boolean;\n }) => {\n try {\n const success = options.success || !options.fail;\n const result = await hookPostEditTool.execute(\n {\n filePath,\n success,\n agent: options.agent,\n duration: options.duration,\n errorMessage: options.error\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n${success ? '✅' : '❌'} Edit recorded: ${filePath}`);\n console.log(`📈 Pattern updated: ${result.newPatternValue?.toFixed(2) || 'N/A'}`);\n console.log(`📊 Routing accuracy: ${(result.routingAccuracy * 100).toFixed(1)}%`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Pre-command hook\n hooks\n .command('pre-command <command>')\n .description('Assess command risk before execution')\n .option('-j, --json', 'Output as JSON')\n .action(async (command: string, options: { json?: boolean }) => {\n try {\n const result = await hookPreCommandTool.execute({ command }, mockContext);\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n const riskIcon = result.blocked ? '🚫' :\n result.riskCategory === 'safe' ? '✅' :\n result.riskCategory === 'caution' ? '⚠️' : '❌';\n console.log(`\\n${riskIcon} Risk Level: ${result.riskCategory.toUpperCase()} (${(result.riskLevel * 100).toFixed(0)}%)`);\n if (result.blocked) {\n console.log(`🚫 Command BLOCKED - dangerous operation detected`);\n } else if (result.approved) {\n console.log(`✅ Command APPROVED`);\n }\n if (result.suggestions?.length > 0) {\n console.log(`💡 Suggestions:`);\n result.suggestions.forEach((s: string) => console.log(` - ${s}`));\n }\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Post-command hook\n hooks\n .command('post-command <command>')\n .description('Record command outcome for learning')\n .option('-c, --exit-code <code>', 'Exit code', parseInt, 0)\n .option('-o, --stdout <output>', 'Command stdout')\n .option('-e, --stderr <error>', 'Command stderr')\n .option('-j, --json', 'Output as JSON')\n .action(async (command: string, options: {\n exitCode?: number;\n stdout?: string;\n stderr?: string;\n json?: boolean;\n }) => {\n try {\n const result = await hookPostCommandTool.execute(\n {\n command,\n exitCode: options.exitCode ?? 0,\n stdout: options.stdout,\n stderr: options.stderr\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n${result.commandSuccess ? '✅' : '❌'} Command outcome recorded`);\n console.log(`📚 Learned: ${result.learned ? 'Yes' : 'No'}`);\n if (result.errorType) {\n console.log(`🔍 Error type: ${result.errorType}`);\n }\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Route hook\n hooks\n .command('route <task>')\n .description('Route task to optimal agent using learned patterns')\n .option('-f, --file <filePath>', 'Context file path')\n .option('-e, --explore', 'Enable exploration mode')\n .option('-j, --json', 'Output as JSON')\n .action(async (task: string, options: {\n file?: string;\n explore?: boolean;\n json?: boolean;\n }) => {\n try {\n const result = await hookRouteTool.execute(\n {\n task,\n context: options.file ? { file: options.file } : undefined,\n explore: options.explore\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n🎯 Recommended Agent: ${result.agent}`);\n console.log(`📊 Confidence: ${(result.confidence * 100).toFixed(1)}%`);\n if (result.explored) {\n console.log(`🔍 Exploration mode: Active`);\n }\n console.log(`\\n📋 Routing Factors:`);\n result.factors.forEach((f: { name: string; score: number }) => {\n console.log(` • ${f.name}: ${(f.score * 100).toFixed(0)}%`);\n });\n if (result.alternatives?.length > 0) {\n console.log(`\\n🔄 Alternatives:`);\n result.alternatives.forEach((a: { agent: string; score: number }) => {\n console.log(` - ${a.agent} (${(a.score * 100).toFixed(0)}%)`);\n });\n }\n console.log(`\\n⏱️ Latency: ${result.latencyMs}ms`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Explain hook\n hooks\n .command('explain <task>')\n .description('Explain routing decision with full transparency')\n .option('-f, --file <filePath>', 'Context file path')\n .option('-j, --json', 'Output as JSON')\n .action(async (task: string, options: {\n file?: string;\n json?: boolean;\n }) => {\n try {\n const result = await hookExplainTool.execute(\n { task, file: options.file },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n📝 Summary: ${result.summary}`);\n console.log(`\\n🎯 Recommended: ${result.recommendedAgent}`);\n console.log(`\\n💡 Reasons:`);\n result.reasons.forEach((r: string) => console.log(` • ${r}`));\n console.log(`\\n🏆 Agent Ranking:`);\n result.ranking.forEach((r: { rank: number; agent: string; score: number }) => {\n console.log(` ${r.rank}. ${r.agent} - ${(r.score * 100).toFixed(1)}%`);\n });\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Pretrain hook\n hooks\n .command('pretrain')\n .description('Analyze repository to bootstrap intelligence')\n .option('-d, --depth <n>', 'Git history depth', parseInt, 50)\n .option('--skip-git', 'Skip git history analysis')\n .option('--skip-files', 'Skip file structure analysis')\n .option('-j, --json', 'Output as JSON')\n .action(async (options: {\n depth?: number;\n skipGit?: boolean;\n skipFiles?: boolean;\n json?: boolean;\n }) => {\n try {\n console.log('🧠 Analyzing repository...\\n');\n const result = await hookPretrainTool.execute(\n {\n depth: options.depth ?? 50,\n skipGit: options.skipGit ?? false,\n skipFiles: options.skipFiles ?? false\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n📊 Pretrain Complete!`);\n console.log(` 📁 Files analyzed: ${result.filesAnalyzed}`);\n console.log(` 🧩 Patterns created: ${result.patternsCreated}`);\n console.log(` 💾 Memories stored: ${result.memoriesStored}`);\n console.log(` 🔗 Co-edits found: ${result.coEditsFound || 0}`);\n if (result.languages?.length > 0) {\n console.log(` 🌐 Languages: ${result.languages.join(', ')}`);\n }\n console.log(` ⏱️ Duration: ${result.durationMs}ms`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Build-agents hook\n hooks\n .command('build-agents')\n .description('Generate optimized agent configurations from pretrain data')\n .option('-f, --focus <mode>', 'Focus mode: quality|speed|security|testing|fullstack', 'quality')\n .option('-o, --output <dir>', 'Output directory', '.claude/agents')\n .option('--format <fmt>', 'Output format: yaml|json', 'yaml')\n .option('--no-prompts', 'Exclude system prompts')\n .option('-j, --json', 'Output as JSON')\n .action(async (options: {\n focus?: string;\n output?: string;\n format?: string;\n prompts?: boolean;\n json?: boolean;\n }) => {\n try {\n console.log(`🏗️ Building agents with focus: ${options.focus}...\\n`);\n const result = await hookBuildAgentsTool.execute(\n {\n focus: options.focus as 'quality' | 'speed' | 'security' | 'testing' | 'fullstack',\n output: options.output,\n format: options.format as 'yaml' | 'json',\n includePrompts: options.prompts !== false\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n✅ Agents Generated!`);\n console.log(` 📦 Total: ${result.agentsGenerated}`);\n console.log(` 📂 Output: ${result.outputDir}`);\n console.log(` 🎯 Focus: ${result.focus}`);\n console.log(`\\n Agents created:`);\n result.agents.forEach((a: string) => console.log(` • ${a}`));\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Metrics hook\n hooks\n .command('metrics')\n .alias('stats')\n .description('View learning metrics and performance dashboard')\n .option('-t, --timeframe <period>', 'Timeframe: 1h|24h|7d|30d', '24h')\n .option('-d, --detailed', 'Show detailed metrics')\n .option('-j, --json', 'Output as JSON')\n .action(async (options: {\n timeframe?: string;\n detailed?: boolean;\n json?: boolean;\n }) => {\n try {\n const result = await hookMetricsTool.execute(\n {\n timeframe: options.timeframe as '1h' | '24h' | '7d' | '30d',\n detailed: options.detailed\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n📊 Learning Metrics (${options.timeframe || '24h'})\\n`);\n console.log(`🎯 Routing:`);\n console.log(` Total routes: ${result.routing.total}`);\n console.log(` Successful: ${result.routing.successful}`);\n console.log(` Accuracy: ${(result.routing.accuracy * 100).toFixed(1)}%`);\n\n console.log(`\\n📚 Learning:`);\n console.log(` Patterns: ${result.learning.patterns}`);\n console.log(` Memories: ${result.learning.memories}`);\n console.log(` Error patterns: ${result.learning.errorPatterns}`);\n\n console.log(`\\n💚 Health: ${result.health.status.toUpperCase()}`);\n if (result.health.issues?.length > 0) {\n console.log(` Issues:`);\n result.health.issues.forEach((i: string) => console.log(` ⚠️ ${i}`));\n }\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Transfer hook\n hooks\n .command('transfer <sourceProject>')\n .description('Transfer learned patterns from another project')\n .option('-c, --min-confidence <n>', 'Minimum confidence threshold', parseFloat, 0.7)\n .option('-m, --max-patterns <n>', 'Maximum patterns to transfer', parseInt, 50)\n .option('--mode <mode>', 'Transfer mode: merge|replace|additive', 'merge')\n .option('-j, --json', 'Output as JSON')\n .action(async (sourceProject: string, options: {\n minConfidence?: number;\n maxPatterns?: number;\n mode?: string;\n json?: boolean;\n }) => {\n try {\n console.log(`📤 Transferring patterns from: ${sourceProject}...\\n`);\n const result = await hookTransferTool.execute(\n {\n sourceProject,\n minConfidence: options.minConfidence,\n maxPatterns: options.maxPatterns,\n mode: options.mode as 'merge' | 'replace' | 'additive'\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n✅ Transfer Complete!`);\n console.log(` 📥 Patterns transferred: ${result.transferred}`);\n console.log(` 🔄 Patterns adapted: ${result.adapted}`);\n console.log(` 🎯 Mode: ${result.mode}`);\n if (result.targetStack?.length > 0) {\n console.log(` 🛠️ Target stack: ${result.targetStack.join(', ')}`);\n }\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Init command (creates .claude/settings.json with hooks)\n hooks\n .command('init')\n .description('Initialize hooks in project with .claude/settings.json')\n .option('--minimal', 'Minimal configuration')\n .option('--force', 'Overwrite existing configuration')\n .option('--no-statusline', 'Skip statusline generation')\n .action(async (options: { minimal?: boolean; force?: boolean; statusline?: boolean }) => {\n try {\n const fs = await import('fs');\n const settingsPath = path.join(process.cwd(), '.claude', 'settings.json');\n const statuslinePath = path.join(process.cwd(), '.claude', 'statusline.mjs');\n const claudeDir = path.dirname(settingsPath);\n\n // Check if exists\n if (fs.existsSync(settingsPath) && !options.force) {\n console.log('⚠️ Settings file already exists. Use --force to overwrite.');\n return;\n }\n\n // Create .claude directory\n if (!fs.existsSync(claudeDir)) {\n fs.mkdirSync(claudeDir, { recursive: true });\n }\n\n // Create statusline.mjs (compact colored format with agent stats)\n if (options.statusline !== false) {\n const statuslineContent = `#!/usr/bin/env node\n// Agentic Flow Intelligence Status Line - Compact Format with Colors\n// Works on Windows, Mac, and Linux - Queries SQLite for real stats\n\nimport { readFileSync, statSync, existsSync } from 'fs';\nimport { execSync } from 'child_process';\n\nconst INTEL_FILE = '.agentic-flow/intelligence.json';\nconst INTEL_DB = '.agentic-flow/intelligence.db';\n\n// Detect dark/light mode\nconst isDarkMode = (() => {\n const colorScheme = process.env.COLORFGBG || '';\n const termBg = process.env.TERM_BACKGROUND || '';\n const vscodeTheme = process.env.VSCODE_TERMINAL_COLOR_THEME || '';\n if (termBg === 'light') return false;\n if (vscodeTheme.toLowerCase().includes('light')) return false;\n if (colorScheme.startsWith('0;') || colorScheme.includes(';15')) return false;\n if (process.env.CLAUDE_CODE_THEME === 'light') return false;\n return true;\n})();\n\n// Color palettes\nconst colors = {\n dark: {\n reset: '\\\\x1b[0m', dim: '\\\\x1b[2m', bold: '\\\\x1b[1m',\n model: '\\\\x1b[38;5;208m', project: '\\\\x1b[38;5;39m', branch: '\\\\x1b[38;5;156m',\n brain: '\\\\x1b[38;5;213m', patterns: '\\\\x1b[38;5;220m', memory: '\\\\x1b[38;5;117m',\n trajectories: '\\\\x1b[38;5;183m', agents: '\\\\x1b[38;5;156m',\n target: '\\\\x1b[38;5;196m', learning: '\\\\x1b[38;5;226m', epsilon: '\\\\x1b[38;5;51m',\n success: '\\\\x1b[38;5;46m', symbol: '\\\\x1b[38;5;245m'\n },\n light: {\n reset: '\\\\x1b[0m', dim: '\\\\x1b[2m', bold: '\\\\x1b[1m',\n model: '\\\\x1b[38;5;166m', project: '\\\\x1b[38;5;27m', branch: '\\\\x1b[38;5;28m',\n brain: '\\\\x1b[38;5;129m', patterns: '\\\\x1b[38;5;136m', memory: '\\\\x1b[38;5;30m',\n trajectories: '\\\\x1b[38;5;91m', agents: '\\\\x1b[38;5;28m',\n target: '\\\\x1b[38;5;160m', learning: '\\\\x1b[38;5;136m', epsilon: '\\\\x1b[38;5;31m',\n success: '\\\\x1b[38;5;28m', symbol: '\\\\x1b[38;5;240m'\n }\n};\nconst c = isDarkMode ? colors.dark : colors.light;\n\nfunction readJson(file) {\n try { return JSON.parse(readFileSync(file, 'utf8')); } catch { return null; }\n}\n\nfunction querySqlite(db, sql) {\n // Pass db path and sql as separate arguments to avoid shell injection\n try {\n const { spawnSync } = require('child_process');\n const result = spawnSync('sqlite3', [db, sql], { encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'], timeout: 1000 });\n return result.stdout ? result.stdout.trim() : null;\n } catch { return null; }\n}\n\nfunction getGitBranch() {\n try { return execSync('git branch --show-current', { encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'] }).trim(); }\n catch { return ''; }\n}\n\nfunction getProjectName() {\n try { return process.cwd().split('/').pop() || 'project'; } catch { return 'project'; }\n}\n\nfunction formatSize(bytes) {\n if (bytes < 1024) return \\`\\${bytes}B\\`;\n if (bytes < 1024 * 1024) return \\`\\${Math.round(bytes / 1024)}K\\`;\n return \\`\\${(bytes / (1024 * 1024)).toFixed(1)}M\\`;\n}\n\nconst LEARNING_RATE = parseFloat(process.env.AGENTIC_FLOW_LEARNING_RATE || '0.1');\nconst EPSILON = parseFloat(process.env.AGENTIC_FLOW_EPSILON || '0.1');\n\nconst intel = readJson(INTEL_FILE);\nlet dbStats = { totalTrajectories: 0, successfulRoutings: 0, totalRoutings: 0, totalPatterns: 0, totalAgents: 0, activeAgents: 0 };\n\nif (existsSync(INTEL_DB)) {\n const statsRow = querySqlite(INTEL_DB, 'SELECT * FROM stats LIMIT 1');\n if (statsRow) {\n const cols = statsRow.split('|');\n dbStats.totalTrajectories = parseInt(cols[1]) || 0;\n dbStats.totalRoutings = parseInt(cols[3]) || 0;\n dbStats.successfulRoutings = parseInt(cols[4]) || 0;\n dbStats.totalPatterns = parseInt(cols[5]) || 0;\n }\n const trajCount = querySqlite(INTEL_DB, 'SELECT COUNT(*) FROM trajectories');\n if (trajCount) dbStats.totalTrajectories = parseInt(trajCount) || dbStats.totalTrajectories;\n const patternCount = querySqlite(INTEL_DB, 'SELECT COUNT(*) FROM patterns');\n if (patternCount) dbStats.totalPatterns = parseInt(patternCount) || 0;\n}\n\nconst routes = dbStats.totalRoutings > 0 ? dbStats.totalRoutings : (intel?.metrics?.totalRoutes || 0);\nconst patterns = dbStats.totalPatterns > 0 ? dbStats.totalPatterns : (intel?.patterns ? Object.keys(intel.patterns).length : 0);\nconst memories = intel?.memories?.length || 0;\nconst trajectories = dbStats.totalTrajectories;\n\nlet agents = intel?.agents ? Object.keys(intel.agents).length : 66;\nlet activeAgents = intel?.agents ? Object.values(intel.agents).filter(a => a.status === 'active').length : 0;\n\nconst branch = getGitBranch();\nconst project = getProjectName();\n\nlet dbSize = 0;\nif (existsSync(INTEL_DB)) {\n try { dbSize = statSync(INTEL_DB).size; } catch {}\n}\n\nconst lines = [];\n\n// Line 1: Model + project + branch (colored)\nlet line1 = \\`\\${c.model}\\${c.bold}Opus 4.5\\${c.reset}\\`;\nline1 += \\` \\${c.dim}in\\${c.reset} \\${c.project}\\${project}\\${c.reset}\\`;\nif (branch) line1 += \\` \\${c.dim}on\\${c.reset} \\${c.symbol}⎇\\${c.reset} \\${c.branch}\\${branch}\\${c.reset}\\`;\nlines.push(line1);\n\n// Line 2: RuVector stats (compact with symbols)\nlet line2 = \\`\\${c.brain}🧠 RuVector\\${c.reset}\\`;\nline2 += \\` \\${c.symbol}◆\\${c.reset} \\${c.patterns}\\${patterns}\\${c.reset} \\${c.dim}patterns\\${c.reset}\\`;\nif (memories > 0 || dbSize > 0) {\n line2 += \\` \\${c.symbol}⬡\\${c.reset} \\${c.memory}\\${memories > 0 ? memories : formatSize(dbSize)}\\${c.reset} \\${c.dim}mem\\${c.reset}\\`;\n}\nif (trajectories > 0) line2 += \\` \\${c.symbol}↝\\${c.reset}\\${c.trajectories}\\${trajectories}\\${c.reset}\\`;\nif (agents > 0) line2 += \\` \\${c.symbol}#\\${c.reset}\\${c.agents}\\${activeAgents > 0 ? activeAgents + '/' : ''}\\${agents}\\${c.reset}\\`;\nlines.push(line2);\n\n// Line 3: Routing info (compact)\nconst lrPercent = Math.round(LEARNING_RATE * 100);\nconst epsPercent = Math.round(EPSILON * 100);\nlet line3 = \\`\\${c.target}🎯 Routing\\${c.reset} \\${c.dim}q-learning\\${c.reset}\\`;\nline3 += \\` \\${c.learning}lr:\\${lrPercent}%\\${c.reset} \\${c.epsilon}ε:\\${epsPercent}%\\${c.reset}\\`;\nif (routes > 0) {\n const successRate = dbStats.successfulRoutings > 0 ? Math.round((dbStats.successfulRoutings / routes) * 100) : 100;\n line3 += \\` \\${c.symbol}|\\${c.reset} \\${c.success}\\${successRate}% ✓\\${c.reset}\\`;\n}\nlines.push(line3);\n\nconsole.log(lines.join('\\\\n'));\n`;\n fs.writeFileSync(statuslinePath, statuslineContent);\n console.log(` 📊 Created: ${statuslinePath}`);\n }\n\n // Create settings with full capabilities\n const settings = {\n env: {\n AGENTIC_FLOW_INTELLIGENCE: 'true',\n AGENTIC_FLOW_LEARNING_RATE: '0.1',\n AGENTIC_FLOW_MEMORY_BACKEND: 'agentdb',\n AGENTIC_FLOW_WORKERS_ENABLED: 'true',\n AGENTIC_FLOW_MAX_WORKERS: '10'\n },\n hooks: {\n PreToolUse: [\n {\n matcher: 'Edit|Write',\n hooks: [\n {\n type: 'command',\n command: 'npx agentic-flow hooks pre-edit \"$TOOL_INPUT_file_path\"'\n }\n ]\n },\n {\n matcher: 'Bash',\n hooks: [\n {\n type: 'command',\n command: 'npx agentic-flow hooks pre-command \"$TOOL_INPUT_command\"'\n }\n ]\n }\n ],\n PostToolUse: [\n {\n matcher: 'Edit|Write',\n hooks: [\n {\n type: 'command',\n command: 'npx agentic-flow hooks post-edit \"$TOOL_INPUT_file_path\" --success'\n }\n ]\n }\n ],\n PostToolUseFailure: [\n {\n matcher: 'Edit|Write',\n hooks: [\n {\n type: 'command',\n command: 'npx agentic-flow hooks post-edit \"$TOOL_INPUT_file_path\" --fail --error \"$ERROR_MESSAGE\"'\n }\n ]\n }\n ],\n SessionStart: [\n {\n hooks: [\n {\n type: 'command',\n command: 'npx agentic-flow hooks intelligence stats'\n }\n ]\n },\n {\n hooks: [\n {\n type: 'command',\n command: 'npx agentic-flow workers status --active --json 2>/dev/null || true'\n }\n ]\n }\n ],\n SessionEnd: [\n {\n hooks: [\n {\n type: 'command',\n command: 'npx agentic-flow workers cleanup --age 24 2>/dev/null || true'\n }\n ]\n }\n ],\n UserPromptSubmit: [\n {\n hooks: [\n {\n type: 'command',\n timeout: 2000,\n command: 'npx agentic-flow hooks intelligence stats'\n }\n ]\n },\n {\n hooks: [\n {\n type: 'command',\n timeout: 5000,\n background: true,\n command: 'npx agentic-flow workers dispatch-prompt \"$USER_PROMPT\" --session \"$SESSION_ID\" --json 2>/dev/null || true'\n }\n ]\n }\n ]\n },\n permissions: {\n allow: [\n 'Bash(npx:*)',\n 'Bash(agentic-flow:*)',\n 'Bash(npm run:*)',\n 'mcp__agentic-flow',\n 'mcp__claude-flow',\n 'mcp__ruv-swarm'\n ]\n },\n statusLine: options.statusline !== false ? {\n type: 'command',\n command: 'node .claude/statusline.mjs'\n } : undefined\n };\n\n fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));\n console.log('✅ Hooks initialized!');\n console.log(` 📁 Created: ${settingsPath}`);\n console.log('\\n💡 Next steps:');\n console.log(' 1. Run: npx agentic-flow hooks pretrain');\n console.log(' 2. Run: npx agentic-flow hooks build-agents');\n console.log(' 3. Start using Claude Code with intelligent routing!');\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // ============================================\n // RUVECTOR INTELLIGENCE COMMANDS\n // SONA Micro-LoRA + MoE Attention + HNSW\n // ============================================\n\n // Create intelligence subcommand group\n const intelligence = new Command('intelligence')\n .alias('intel')\n .description('RuVector intelligence: SONA Micro-LoRA (~0.05ms) + MoE attention + HNSW (150x faster)');\n\n // Intelligence route command\n intelligence\n .command('route <task>')\n .description('Route task using SONA + MoE + HNSW (150x faster than brute force)')\n .option('-f, --file <path>', 'File context')\n .option('-e, --error <context>', 'Error context for debugging')\n .option('-k, --top-k <n>', 'Number of candidates', parseInt, 5)\n .option('-j, --json', 'Output as JSON')\n .action(async (task: string, options: {\n file?: string;\n error?: string;\n topK?: number;\n json?: boolean;\n }) => {\n try {\n const result = await intelligenceRouteTool.execute(\n { task, file: options.file, errorContext: options.error, topK: options.topK },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n⚡ RuVector Intelligence Route`);\n console.log(`🎯 Agent: ${result.agent}`);\n console.log(`📊 Confidence: ${((result.confidence || 0) * 100).toFixed(1)}%`);\n console.log(`🔧 Engine: ${result.engine}`);\n console.log(`⏱️ Latency: ${result.latencyMs?.toFixed(2)}ms`);\n if (result.features?.length > 0) {\n console.log(`🧠 Features: ${result.features.join(', ')}`);\n }\n if (result.alternatives?.length > 0) {\n console.log(`\\n🔄 Alternatives:`);\n result.alternatives.forEach((a: any) => {\n console.log(` - ${a.agent} (${((a.confidence || 0) * 100).toFixed(1)}%)`);\n });\n }\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Trajectory start command\n intelligence\n .command('trajectory-start <task>')\n .description('Begin SONA trajectory for reinforcement learning')\n .requiredOption('-a, --agent <name>', 'Agent executing the task')\n .option('-c, --context <text>', 'Additional context')\n .option('-j, --json', 'Output as JSON')\n .action(async (task: string, options: {\n agent: string;\n context?: string;\n json?: boolean;\n }) => {\n try {\n const result = await intelligenceTrajectoryStartTool.execute(\n { task, agent: options.agent, context: options.context },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n🎬 Trajectory Started`);\n console.log(`📝 ID: ${result.trajectoryId}`);\n console.log(`🤖 Agent: ${options.agent}`);\n console.log(`🧠 Features: ${result.features?.join(', ')}`);\n console.log(`\\n💡 Use this ID with trajectory-step and trajectory-end commands`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Trajectory step command\n intelligence\n .command('trajectory-step <trajectoryId>')\n .description('Record step in trajectory for reinforcement learning')\n .requiredOption('-a, --action <action>', 'Action taken')\n .requiredOption('-r, --reward <n>', 'Reward signal (-1 to 1)', parseFloat)\n .option('-f, --file <path>', 'File involved')\n .option('--error-fixed', 'Mark as error fix')\n .option('--test-passed', 'Mark as test passed')\n .option('-j, --json', 'Output as JSON')\n .action(async (trajectoryId: string, options: {\n action: string;\n reward: number;\n file?: string;\n errorFixed?: boolean;\n testPassed?: boolean;\n json?: boolean;\n }) => {\n try {\n const result = await intelligenceTrajectoryStepTool.execute(\n {\n trajectoryId: parseInt(trajectoryId),\n action: options.action,\n reward: options.reward,\n file: options.file,\n errorFixed: options.errorFixed,\n testPassed: options.testPassed\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n📍 Step Recorded`);\n console.log(` Action: ${options.action}`);\n console.log(` Reward: ${options.reward}`);\n console.log(` Trajectory: ${trajectoryId}`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Trajectory end command\n intelligence\n .command('trajectory-end <trajectoryId>')\n .description('End trajectory and trigger SONA learning with EWC++')\n .option('-s, --success', 'Mark as successful')\n .option('-f, --fail', 'Mark as failed')\n .option('-q, --quality <n>', 'Quality score (0-1)', parseFloat, 0.8)\n .option('-j, --json', 'Output as JSON')\n .action(async (trajectoryId: string, options: {\n success?: boolean;\n fail?: boolean;\n quality?: number;\n json?: boolean;\n }) => {\n try {\n const success = options.success || !options.fail;\n const result = await intelligenceTrajectoryEndTool.execute(\n { trajectoryId: parseInt(trajectoryId), success, quality: options.quality },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n🏁 Trajectory Completed`);\n console.log(` ${success ? '✅ Success' : '❌ Failed'}`);\n console.log(` Quality: ${(options.quality || 0.8) * 100}%`);\n console.log(` Learning: EWC++ consolidation applied`);\n if (result.learningOutcome) {\n console.log(` Outcome: ${JSON.stringify(result.learningOutcome)}`);\n }\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Pattern store command\n intelligence\n .command('pattern-store')\n .description('Store pattern in ReasoningBank (HNSW-indexed)')\n .requiredOption('-t, --task <task>', 'Task description')\n .requiredOption('-r, --resolution <text>', 'How it was resolved')\n .option('-s, --score <n>', 'Success score (0-1)', parseFloat, 0.9)\n .option('-j, --json', 'Output as JSON')\n .action(async (options: {\n task: string;\n resolution: string;\n score?: number;\n json?: boolean;\n }) => {\n try {\n const result = await intelligencePatternStoreTool.execute(\n { task: options.task, resolution: options.resolution, reward: options.score || 0.9 },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n💾 Pattern Stored`);\n console.log(` Task: ${options.task.slice(0, 50)}...`);\n console.log(` Score: ${((options.score || 0.9) * 100).toFixed(0)}%`);\n console.log(` Index: HNSW (150x faster retrieval)`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Pattern search command\n intelligence\n .command('pattern-search <query>')\n .description('Search ReasoningBank using HNSW (150x faster)')\n .option('-k, --top-k <n>', 'Number of results', parseInt, 5)\n .option('-m, --min-reward <n>', 'Minimum reward filter', parseFloat)\n .option('-j, --json', 'Output as JSON')\n .action(async (query: string, options: {\n topK?: number;\n minReward?: number;\n json?: boolean;\n }) => {\n try {\n const result = await intelligencePatternSearchTool.execute(\n { query, topK: options.topK, minReward: options.minReward },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n🔍 Pattern Search Results`);\n console.log(` Query: \"${query.slice(0, 50)}\"`);\n console.log(` Engine: ${result.searchEngine}`);\n console.log(` Found: ${result.count} patterns`);\n if (result.patterns?.length > 0) {\n console.log(`\\n 📋 Results:`);\n result.patterns.forEach((p: any, i: number) => {\n console.log(` ${i + 1}. [${((p.similarity || 0) * 100).toFixed(0)}%] ${p.resolution?.slice(0, 40)}...`);\n });\n }\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Intelligence stats command\n intelligence\n .command('stats')\n .description('Get RuVector intelligence layer statistics')\n .option('-j, --json', 'Output as JSON')\n .action(async (options: { json?: boolean }) => {\n try {\n const result = await intelligenceStatsTool.execute({}, mockContext);\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n📊 RuVector Intelligence Stats`);\n console.log(`\\n🧠 SONA Engine:`);\n console.log(` Micro-LoRA: ${result.features?.sona?.microLora || 'rank-1 (~0.05ms)'}`);\n console.log(` Base-LoRA: ${result.features?.sona?.baseLora || 'rank-8'}`);\n console.log(` EWC Lambda: ${result.features?.sona?.ewcLambda || 1000.0}`);\n console.log(`\\n⚡ Attention:`);\n console.log(` Type: ${result.features?.attention?.type || 'moe'}`);\n console.log(` Experts: ${result.features?.attention?.experts || 4}`);\n console.log(` Top-K: ${result.features?.attention?.topK || 2}`);\n console.log(`\\n🔍 HNSW:`);\n console.log(` Enabled: ${result.features?.hnsw?.enabled ?? true}`);\n console.log(` Speedup: ${result.features?.hnsw?.speedup || '150x vs brute-force'}`);\n console.log(`\\n📈 Learning:`);\n console.log(` Trajectories: ${result.persistence?.trajectories ?? result.stats?.trajectoryCount ?? 0}`);\n console.log(` Active: ${result.stats?.activeTrajectories || 0}`);\n console.log(`\\n💾 Persistence (SQLite):`);\n console.log(` Backend: ${result.persistence?.backend || 'sqlite'}`);\n console.log(` Routings: ${result.persistence?.routings ?? 0}`);\n console.log(` Patterns: ${result.persistence?.patterns ?? 0}`);\n console.log(` Operations: ${result.persistence?.operations ?? 0}`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Force learning command\n intelligence\n .command('learn')\n .description('Force immediate SONA learning cycle with EWC++ consolidation')\n .option('-r, --reason <text>', 'Reason for forcing learning')\n .option('-j, --json', 'Output as JSON')\n .action(async (options: { reason?: string; json?: boolean }) => {\n try {\n const result = await intelligenceLearnTool.execute(\n { reason: options.reason },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n🎓 Learning Cycle Complete`);\n console.log(` ${result.success ? '✅' : '❌'} ${result.message}`);\n console.log(` Reason: ${result.reason || 'manual trigger'}`);\n console.log(` Features: ${result.features?.join(', ')}`);\n console.log(` Latency: ${result.latencyMs?.toFixed(2)}ms`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Attention compute command\n intelligence\n .command('attention <query>')\n .description('Compute attention-weighted similarity using MoE/Flash/Hyperbolic')\n .requiredOption('-c, --candidates <texts...>', 'Candidate texts to score')\n .option('-t, --type <type>', 'Attention type: moe|flash|hyperbolic|graph|dual', 'moe')\n .option('-j, --json', 'Output as JSON')\n .action(async (query: string, options: {\n candidates: string[];\n type?: string;\n json?: boolean;\n }) => {\n try {\n const result = await intelligenceAttentionTool.execute(\n {\n query,\n candidates: options.candidates,\n attentionType: options.type as 'moe' | 'flash' | 'hyperbolic' | 'graph' | 'dual'\n },\n mockContext\n );\n\n if (options.json) {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`\\n🧠 Attention Scores (${options.type || 'moe'})`);\n console.log(` Query: \"${query.slice(0, 40)}...\"`);\n console.log(`\\n 📊 Results:`);\n result.results?.forEach((r: any, i: number) => {\n const bar = '█'.repeat(Math.round(r.score * 20));\n console.log(` ${i + 1}. ${bar} ${(r.score * 100).toFixed(1)}% \"${r.text}\"`);\n });\n console.log(`\\n ⏱️ Latency: ${result.latencyMs?.toFixed(2)}ms`);\n }\n process.exit(0);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Add intelligence subcommand to hooks\n hooks.addCommand(intelligence);\n\n return hooks;\n}\n\nexport default createHooksCommand;\n\n// CLI entry point when run directly\nconst isDirectRun = import.meta.url === `file://${process.argv[1]}`;\nif (isDirectRun) {\n const hooks = createHooksCommand();\n hooks.parse(process.argv);\n}\n"]}
|
package/dist/cli/mcp-manager.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
import fs from 'fs';
|
|
12
12
|
import path from 'path';
|
|
13
13
|
import os from 'os';
|
|
14
|
-
|
|
14
|
+
// child_process is imported dynamically where needed (spawnSync via import())
|
|
15
15
|
import { Command } from 'commander';
|
|
16
16
|
// Configuration file location
|
|
17
17
|
const CONFIG_DIR = path.join(os.homedir(), '.agentic-flow');
|
|
@@ -269,7 +269,7 @@ function updateServer(name, options) {
|
|
|
269
269
|
/**
|
|
270
270
|
* Test MCP server
|
|
271
271
|
*/
|
|
272
|
-
function testServer(name, options) {
|
|
272
|
+
async function testServer(name, options) {
|
|
273
273
|
const config = loadConfig();
|
|
274
274
|
if (!config.servers[name]) {
|
|
275
275
|
console.error(`❌ MCP server '${name}' not found`);
|
|
@@ -281,18 +281,25 @@ function testServer(name, options) {
|
|
|
281
281
|
try {
|
|
282
282
|
// Build environment
|
|
283
283
|
const env = { ...process.env, ...server.env };
|
|
284
|
-
// Test if server responds (send tools/list request)
|
|
284
|
+
// Test if server responds (send tools/list request).
|
|
285
|
+
// Use spawnSync with stdio pipe instead of a shell command to avoid injection
|
|
286
|
+
// via testRequest JSON or server.command/args values.
|
|
287
|
+
const { spawnSync } = await import('child_process');
|
|
285
288
|
const testRequest = JSON.stringify({
|
|
286
289
|
jsonrpc: '2.0',
|
|
287
290
|
method: 'tools/list',
|
|
288
291
|
id: 1
|
|
289
292
|
});
|
|
290
|
-
const
|
|
291
|
-
const result = execSync(cmd, {
|
|
293
|
+
const spawnResult = spawnSync(server.command, server.args, {
|
|
292
294
|
encoding: 'utf-8',
|
|
295
|
+
input: testRequest + '\n',
|
|
293
296
|
env,
|
|
294
|
-
timeout: 5000
|
|
297
|
+
timeout: 5000,
|
|
295
298
|
});
|
|
299
|
+
if (spawnResult.error) {
|
|
300
|
+
throw spawnResult.error;
|
|
301
|
+
}
|
|
302
|
+
const result = spawnResult.stdout || '';
|
|
296
303
|
if (options.verbose) {
|
|
297
304
|
console.log('Response:', result);
|
|
298
305
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-manager.js","sourceRoot":"","sources":["../../src/cli/mcp-manager.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * MCP Server Manager - CLI for adding/managing MCP servers\n *\n * Allows end users to add custom MCP servers without editing code:\n * - npx agentic-flow mcp add weather --npm weather-mcp\n * - npx agentic-flow mcp add local --local /path/to/server.js\n * - npx agentic-flow mcp list\n * - npx agentic-flow mcp remove weather\n */\n\nimport fs from 'fs';\nimport path from 'path';\nimport os from 'os';\nimport { execSync } from 'child_process';\nimport { Command } from 'commander';\n\n// Configuration file location\nconst CONFIG_DIR = path.join(os.homedir(), '.agentic-flow');\nconst CONFIG_FILE = path.join(CONFIG_DIR, 'mcp-config.json');\n\ninterface MCPServerConfig {\n enabled: boolean;\n type: 'npm' | 'local';\n package?: string;\n command: string;\n args: string[];\n env: Record<string, string>;\n description?: string;\n}\n\ninterface MCPConfig {\n servers: Record<string, MCPServerConfig>;\n}\n\n/**\n * Load MCP configuration\n */\nfunction loadConfig(): MCPConfig {\n if (!fs.existsSync(CONFIG_FILE)) {\n return { servers: {} };\n }\n\n try {\n const content = fs.readFileSync(CONFIG_FILE, 'utf-8');\n return JSON.parse(content);\n } catch (error) {\n console.error('❌ Error loading MCP config:', error);\n return { servers: {} };\n }\n}\n\n/**\n * Save MCP configuration\n */\nfunction saveConfig(config: MCPConfig): void {\n // Ensure directory exists\n if (!fs.existsSync(CONFIG_DIR)) {\n fs.mkdirSync(CONFIG_DIR, { recursive: true });\n }\n\n fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2), 'utf-8');\n}\n\n/**\n * Add MCP server from JSON config (Claude-style)\n */\nfunction addServerFromJson(name: string, configJson: string): void {\n const config = loadConfig();\n\n // Check if already exists\n if (config.servers[name]) {\n console.error(`❌ MCP server '${name}' already exists`);\n console.log('💡 Use update command or remove first');\n process.exit(1);\n }\n\n try {\n const serverConfig = JSON.parse(configJson);\n\n // Validate required fields\n if (!serverConfig.command) {\n console.error('❌ Config must include \"command\" field');\n process.exit(1);\n }\n\n // Build MCP server config\n const mcpConfig: MCPServerConfig = {\n enabled: true,\n type: serverConfig.npm ? 'npm' : 'local',\n package: serverConfig.npm,\n command: serverConfig.command,\n args: serverConfig.args || [],\n env: serverConfig.env || {},\n description: serverConfig.description || `MCP server: ${name}`\n };\n\n config.servers[name] = mcpConfig;\n saveConfig(config);\n\n console.log(`✅ Added MCP server: ${name}`);\n console.log(` Type: ${mcpConfig.type}`);\n console.log(` Command: ${mcpConfig.command} ${mcpConfig.args.join(' ')}`);\n if (Object.keys(mcpConfig.env).length > 0) {\n console.log(` Environment: ${Object.keys(mcpConfig.env).length} vars`);\n }\n console.log('\\n💡 Use it with: npx agentic-flow --agent coder --task \"your task\"');\n } catch (error: any) {\n console.error('❌ Invalid JSON config:', error.message);\n console.log('\\nExpected format:');\n console.log(' \\'{\"command\":\"npx\",\"args\":[\"-y\",\"weather-mcp\"],\"env\":{\"API_KEY\":\"xxx\"}}\\'');\n process.exit(1);\n }\n}\n\n/**\n * Add MCP server (flag-based)\n */\nfunction addServer(options: {\n name: string;\n npm?: string;\n local?: string;\n command?: string;\n args?: string;\n env?: string[];\n desc?: string;\n}): void {\n const config = loadConfig();\n\n // Check if already exists\n if (config.servers[options.name]) {\n console.error(`❌ MCP server '${options.name}' already exists`);\n console.log('💡 Use update command or remove first');\n process.exit(1);\n }\n\n let serverConfig: MCPServerConfig;\n\n if (options.npm) {\n // NPM package\n serverConfig = {\n enabled: true,\n type: 'npm',\n package: options.npm,\n command: 'npx',\n args: ['-y', options.npm],\n env: {},\n description: options.desc || `MCP server from ${options.npm}`\n };\n } else if (options.local) {\n // Local path\n serverConfig = {\n enabled: true,\n type: 'local',\n command: options.command || 'node',\n args: [options.local],\n env: {},\n description: options.desc || `Local MCP server at ${options.local}`\n };\n } else if (options.command) {\n // Custom command\n const args = options.args ? options.args.split(' ') : [];\n serverConfig = {\n enabled: true,\n type: 'local',\n command: options.command,\n args,\n env: {},\n description: options.desc || `Custom MCP server: ${options.command}`\n };\n } else {\n console.error('❌ Must specify --npm, --local, or --command');\n process.exit(1);\n }\n\n // Add environment variables\n if (options.env) {\n for (const envStr of options.env) {\n const [key, ...valueParts] = envStr.split('=');\n const value = valueParts.join('=');\n serverConfig.env[key] = value;\n }\n }\n\n config.servers[options.name] = serverConfig;\n saveConfig(config);\n\n console.log(`✅ Added MCP server: ${options.name}`);\n console.log(` Type: ${serverConfig.type}`);\n if (serverConfig.package) {\n console.log(` Package: ${serverConfig.package}`);\n }\n console.log(` Command: ${serverConfig.command} ${serverConfig.args.join(' ')}`);\n if (Object.keys(serverConfig.env).length > 0) {\n console.log(` Environment: ${Object.keys(serverConfig.env).length} vars`);\n }\n console.log('\\n💡 Run tests with: npx agentic-flow mcp test ' + options.name);\n}\n\n/**\n * List MCP servers\n */\nfunction listServers(options: { enabled?: boolean; verbose?: boolean }): void {\n const config = loadConfig();\n const servers = Object.entries(config.servers);\n\n if (servers.length === 0) {\n console.log('No MCP servers configured');\n console.log('\\n💡 Add a server with: npx agentic-flow mcp add NAME --npm PACKAGE');\n return;\n }\n\n console.log('Configured MCP Servers:\\n');\n\n for (const [name, server] of servers) {\n // Filter by enabled status\n if (options.enabled && !server.enabled) {\n continue;\n }\n\n const status = server.enabled ? '✅' : '❌';\n const state = server.enabled ? 'enabled' : 'disabled';\n\n console.log(`${status} ${name} (${state})`);\n console.log(` Type: ${server.type}`);\n\n if (server.package) {\n console.log(` Package: ${server.package}`);\n } else {\n console.log(` Command: ${server.command} ${server.args.join(' ')}`);\n }\n\n if (server.description) {\n console.log(` Description: ${server.description}`);\n }\n\n if (options.verbose) {\n console.log(` Environment:`);\n for (const [key, value] of Object.entries(server.env)) {\n const masked = value.length > 10 ? `${value.slice(0, 4)}***${value.slice(-4)}` : '***';\n console.log(` ${key}: ${masked}`);\n }\n }\n\n console.log('');\n }\n}\n\n/**\n * Remove MCP server\n */\nfunction removeServer(name: string, options: { confirm?: boolean }): void {\n const config = loadConfig();\n\n if (!config.servers[name]) {\n console.error(`❌ MCP server '${name}' not found`);\n process.exit(1);\n }\n\n if (!options.confirm) {\n console.log(`⚠️ This will remove MCP server: ${name}`);\n console.log(' Use --confirm to proceed');\n process.exit(0);\n }\n\n delete config.servers[name];\n saveConfig(config);\n\n console.log(`✅ Removed MCP server: ${name}`);\n}\n\n/**\n * Enable/disable MCP server\n */\nfunction toggleServer(name: string, enabled: boolean): void {\n const config = loadConfig();\n\n if (!config.servers[name]) {\n console.error(`❌ MCP server '${name}' not found`);\n process.exit(1);\n }\n\n config.servers[name].enabled = enabled;\n saveConfig(config);\n\n const action = enabled ? 'Enabled' : 'Disabled';\n console.log(`✅ ${action} MCP server: ${name}`);\n}\n\n/**\n * Update MCP server\n */\nfunction updateServer(name: string, options: {\n version?: string;\n env?: string[];\n command?: string;\n args?: string;\n}): void {\n const config = loadConfig();\n\n if (!config.servers[name]) {\n console.error(`❌ MCP server '${name}' not found`);\n process.exit(1);\n }\n\n const server = config.servers[name];\n\n // Update version for NPM packages\n if (options.version && server.type === 'npm' && server.package) {\n const packageName = server.package.split('@')[0];\n server.package = `${packageName}@${options.version}`;\n server.args = ['-y', server.package];\n }\n\n // Update environment variables\n if (options.env) {\n for (const envStr of options.env) {\n const [key, ...valueParts] = envStr.split('=');\n const value = valueParts.join('=');\n server.env[key] = value;\n }\n }\n\n // Update command\n if (options.command) {\n server.command = options.command;\n }\n\n // Update args\n if (options.args) {\n server.args = options.args.split(' ');\n }\n\n saveConfig(config);\n console.log(`✅ Updated MCP server: ${name}`);\n}\n\n/**\n * Test MCP server\n */\nfunction testServer(name: string, options: { verbose?: boolean }): void {\n const config = loadConfig();\n\n if (!config.servers[name]) {\n console.error(`❌ MCP server '${name}' not found`);\n process.exit(1);\n }\n\n const server = config.servers[name];\n\n console.log(`Testing MCP server: ${name}`);\n console.log(`Command: ${server.command} ${server.args.join(' ')}\\n`);\n\n try {\n // Build environment\n const env = { ...process.env, ...server.env };\n\n // Test if server responds (send tools/list request)\n const testRequest = JSON.stringify({\n jsonrpc: '2.0',\n method: 'tools/list',\n id: 1\n });\n\n const cmd = `echo '${testRequest}' | ${server.command} ${server.args.join(' ')}`;\n\n const result = execSync(cmd, {\n encoding: 'utf-8',\n env,\n timeout: 5000\n });\n\n if (options.verbose) {\n console.log('Response:', result);\n }\n\n // Try to parse response\n const response = JSON.parse(result.split('\\n')[0]);\n\n if (response.result?.tools) {\n console.log(`✅ Server started successfully`);\n console.log(`✅ Responds to tools/list`);\n console.log(`✅ Found ${response.result.tools.length} tools:`);\n\n for (const tool of response.result.tools) {\n console.log(` - ${tool.name}: ${tool.description || 'No description'}`);\n }\n\n console.log('\\n✅ Server is working correctly');\n } else {\n console.log('⚠️ Server responded but no tools found');\n }\n } catch (error: any) {\n console.error('❌ Server test failed:', error.message);\n process.exit(1);\n }\n}\n\n/**\n * Show server info\n */\nfunction showInfo(name: string): void {\n const config = loadConfig();\n\n if (!config.servers[name]) {\n console.error(`❌ MCP server '${name}' not found`);\n process.exit(1);\n }\n\n const server = config.servers[name];\n\n console.log(`MCP Server: ${name}`);\n console.log(`Status: ${server.enabled ? '✅ Enabled' : '❌ Disabled'}`);\n console.log(`Type: ${server.type}`);\n\n if (server.package) {\n console.log(`Package: ${server.package}`);\n }\n\n console.log(`Command: ${server.command} ${server.args.join(' ')}`);\n\n if (Object.keys(server.env).length > 0) {\n console.log(`Environment:`);\n for (const [key, value] of Object.entries(server.env)) {\n const masked = value.length > 10 ? `***${key.slice(0, 3)}***` : '***';\n console.log(` ${key}: ${masked}`);\n }\n }\n\n if (server.description) {\n console.log(`Description: ${server.description}`);\n }\n\n console.log(`\\nConfig file: ${CONFIG_FILE}`);\n}\n\n/**\n * Export configuration\n */\nfunction exportConfig(): void {\n const config = loadConfig();\n console.log(JSON.stringify(config, null, 2));\n}\n\n/**\n * Import configuration\n */\nfunction importConfig(configJson: string): void {\n try {\n const importedConfig: MCPConfig = JSON.parse(configJson);\n\n // Validate structure\n if (!importedConfig.servers || typeof importedConfig.servers !== 'object') {\n throw new Error('Invalid config format');\n }\n\n const config = loadConfig();\n\n // Merge configs\n for (const [name, server] of Object.entries(importedConfig.servers)) {\n config.servers[name] = server;\n }\n\n saveConfig(config);\n\n const count = Object.keys(importedConfig.servers).length;\n console.log(`✅ Imported ${count} MCP server(s)`);\n } catch (error: any) {\n console.error('❌ Import failed:', error.message);\n process.exit(1);\n }\n}\n\n// CLI setup\nconst program = new Command();\n\nprogram\n .name('agentic-flow mcp')\n .description('Manage MCP servers for agentic-flow')\n .version('1.0.0')\n .addHelpText('after', `\nExamples:\n # Add MCP server (Claude-style JSON config)\n $ npx agentic-flow mcp add weather '{\"command\":\"npx\",\"args\":[\"-y\",\"weather-mcp\"],\"env\":{\"API_KEY\":\"xxx\"}}'\n\n # Add MCP server (simple flags)\n $ npx agentic-flow mcp add weather --npm weather-mcp --env \"API_KEY=xxx\"\n\n # Add local MCP server\n $ npx agentic-flow mcp add my-tools --local /path/to/server.js\n\n # List all configured servers\n $ npx agentic-flow mcp list\n\n # Test server\n $ npx agentic-flow mcp test weather\n\n # Use in agents (automatic)\n $ npx agentic-flow --agent researcher --task \"Get weather for Tokyo\"\n\nConfig file: ~/.agentic-flow/mcp-config.json\n`);\n\nprogram\n .command('add <name> [config]')\n .description('Add a new MCP server (config as JSON string or options)')\n .option('--npm <package>', 'NPM package name (e.g., weather-mcp@latest)')\n .option('--local <path>', 'Local file path (e.g., /path/to/server.js)')\n .option('--command <cmd>', 'Custom command (e.g., python3)')\n .option('--args <args>', 'Command arguments')\n .option('--env <key=value>', 'Environment variable (can use multiple times)')\n .option('--desc <description>', 'Server description')\n .action((name, config, options) => {\n if (config) {\n // JSON config format (like Claude MCP)\n addServerFromJson(name, config);\n } else {\n // Flag-based format\n addServer({ name, ...options });\n }\n });\n\nprogram\n .command('list')\n .description('List configured MCP servers')\n .option('--enabled', 'Show only enabled servers')\n .option('--verbose', 'Show detailed information')\n .action((options) => listServers(options));\n\nprogram\n .command('remove <name>')\n .description('Remove an MCP server')\n .option('--confirm', 'Confirm removal')\n .action((name, options) => removeServer(name, options));\n\nprogram\n .command('enable <name>')\n .description('Enable an MCP server')\n .action((name) => toggleServer(name, true));\n\nprogram\n .command('disable <name>')\n .description('Disable an MCP server')\n .action((name) => toggleServer(name, false));\n\nprogram\n .command('update <name>')\n .description('Update MCP server configuration')\n .option('--version <version>', 'Update NPM package version')\n .option('--env <key=value>', 'Update environment variable (can use multiple times)')\n .option('--command <cmd>', 'Update command')\n .option('--args <args>', 'Update arguments')\n .action((name, options) => updateServer(name, options));\n\nprogram\n .command('test <name>')\n .description('Test if MCP server works')\n .option('--verbose', 'Show detailed output')\n .action((name, options) => testServer(name, options));\n\nprogram\n .command('info <name>')\n .description('Show MCP server information')\n .action((name) => showInfo(name));\n\nprogram\n .command('export')\n .description('Export MCP configuration to stdout')\n .action(() => exportConfig());\n\nprogram\n .command('import')\n .description('Import MCP configuration from stdin')\n .action(() => {\n let data = '';\n process.stdin.on('data', (chunk) => (data += chunk));\n process.stdin.on('end', () => importConfig(data));\n });\n\nprogram.parse();\n"]}
|
|
1
|
+
{"version":3,"file":"mcp-manager.js","sourceRoot":"","sources":["../../src/cli/mcp-manager.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * MCP Server Manager - CLI for adding/managing MCP servers\n *\n * Allows end users to add custom MCP servers without editing code:\n * - npx agentic-flow mcp add weather --npm weather-mcp\n * - npx agentic-flow mcp add local --local /path/to/server.js\n * - npx agentic-flow mcp list\n * - npx agentic-flow mcp remove weather\n */\n\nimport fs from 'fs';\nimport path from 'path';\nimport os from 'os';\n// child_process is imported dynamically where needed (spawnSync via import())\nimport { Command } from 'commander';\n\n// Configuration file location\nconst CONFIG_DIR = path.join(os.homedir(), '.agentic-flow');\nconst CONFIG_FILE = path.join(CONFIG_DIR, 'mcp-config.json');\n\ninterface MCPServerConfig {\n enabled: boolean;\n type: 'npm' | 'local';\n package?: string;\n command: string;\n args: string[];\n env: Record<string, string>;\n description?: string;\n}\n\ninterface MCPConfig {\n servers: Record<string, MCPServerConfig>;\n}\n\n/**\n * Load MCP configuration\n */\nfunction loadConfig(): MCPConfig {\n if (!fs.existsSync(CONFIG_FILE)) {\n return { servers: {} };\n }\n\n try {\n const content = fs.readFileSync(CONFIG_FILE, 'utf-8');\n return JSON.parse(content);\n } catch (error) {\n console.error('❌ Error loading MCP config:', error);\n return { servers: {} };\n }\n}\n\n/**\n * Save MCP configuration\n */\nfunction saveConfig(config: MCPConfig): void {\n // Ensure directory exists\n if (!fs.existsSync(CONFIG_DIR)) {\n fs.mkdirSync(CONFIG_DIR, { recursive: true });\n }\n\n fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2), 'utf-8');\n}\n\n/**\n * Add MCP server from JSON config (Claude-style)\n */\nfunction addServerFromJson(name: string, configJson: string): void {\n const config = loadConfig();\n\n // Check if already exists\n if (config.servers[name]) {\n console.error(`❌ MCP server '${name}' already exists`);\n console.log('💡 Use update command or remove first');\n process.exit(1);\n }\n\n try {\n const serverConfig = JSON.parse(configJson);\n\n // Validate required fields\n if (!serverConfig.command) {\n console.error('❌ Config must include \"command\" field');\n process.exit(1);\n }\n\n // Build MCP server config\n const mcpConfig: MCPServerConfig = {\n enabled: true,\n type: serverConfig.npm ? 'npm' : 'local',\n package: serverConfig.npm,\n command: serverConfig.command,\n args: serverConfig.args || [],\n env: serverConfig.env || {},\n description: serverConfig.description || `MCP server: ${name}`\n };\n\n config.servers[name] = mcpConfig;\n saveConfig(config);\n\n console.log(`✅ Added MCP server: ${name}`);\n console.log(` Type: ${mcpConfig.type}`);\n console.log(` Command: ${mcpConfig.command} ${mcpConfig.args.join(' ')}`);\n if (Object.keys(mcpConfig.env).length > 0) {\n console.log(` Environment: ${Object.keys(mcpConfig.env).length} vars`);\n }\n console.log('\\n💡 Use it with: npx agentic-flow --agent coder --task \"your task\"');\n } catch (error: any) {\n console.error('❌ Invalid JSON config:', error.message);\n console.log('\\nExpected format:');\n console.log(' \\'{\"command\":\"npx\",\"args\":[\"-y\",\"weather-mcp\"],\"env\":{\"API_KEY\":\"xxx\"}}\\'');\n process.exit(1);\n }\n}\n\n/**\n * Add MCP server (flag-based)\n */\nfunction addServer(options: {\n name: string;\n npm?: string;\n local?: string;\n command?: string;\n args?: string;\n env?: string[];\n desc?: string;\n}): void {\n const config = loadConfig();\n\n // Check if already exists\n if (config.servers[options.name]) {\n console.error(`❌ MCP server '${options.name}' already exists`);\n console.log('💡 Use update command or remove first');\n process.exit(1);\n }\n\n let serverConfig: MCPServerConfig;\n\n if (options.npm) {\n // NPM package\n serverConfig = {\n enabled: true,\n type: 'npm',\n package: options.npm,\n command: 'npx',\n args: ['-y', options.npm],\n env: {},\n description: options.desc || `MCP server from ${options.npm}`\n };\n } else if (options.local) {\n // Local path\n serverConfig = {\n enabled: true,\n type: 'local',\n command: options.command || 'node',\n args: [options.local],\n env: {},\n description: options.desc || `Local MCP server at ${options.local}`\n };\n } else if (options.command) {\n // Custom command\n const args = options.args ? options.args.split(' ') : [];\n serverConfig = {\n enabled: true,\n type: 'local',\n command: options.command,\n args,\n env: {},\n description: options.desc || `Custom MCP server: ${options.command}`\n };\n } else {\n console.error('❌ Must specify --npm, --local, or --command');\n process.exit(1);\n }\n\n // Add environment variables\n if (options.env) {\n for (const envStr of options.env) {\n const [key, ...valueParts] = envStr.split('=');\n const value = valueParts.join('=');\n serverConfig.env[key] = value;\n }\n }\n\n config.servers[options.name] = serverConfig;\n saveConfig(config);\n\n console.log(`✅ Added MCP server: ${options.name}`);\n console.log(` Type: ${serverConfig.type}`);\n if (serverConfig.package) {\n console.log(` Package: ${serverConfig.package}`);\n }\n console.log(` Command: ${serverConfig.command} ${serverConfig.args.join(' ')}`);\n if (Object.keys(serverConfig.env).length > 0) {\n console.log(` Environment: ${Object.keys(serverConfig.env).length} vars`);\n }\n console.log('\\n💡 Run tests with: npx agentic-flow mcp test ' + options.name);\n}\n\n/**\n * List MCP servers\n */\nfunction listServers(options: { enabled?: boolean; verbose?: boolean }): void {\n const config = loadConfig();\n const servers = Object.entries(config.servers);\n\n if (servers.length === 0) {\n console.log('No MCP servers configured');\n console.log('\\n💡 Add a server with: npx agentic-flow mcp add NAME --npm PACKAGE');\n return;\n }\n\n console.log('Configured MCP Servers:\\n');\n\n for (const [name, server] of servers) {\n // Filter by enabled status\n if (options.enabled && !server.enabled) {\n continue;\n }\n\n const status = server.enabled ? '✅' : '❌';\n const state = server.enabled ? 'enabled' : 'disabled';\n\n console.log(`${status} ${name} (${state})`);\n console.log(` Type: ${server.type}`);\n\n if (server.package) {\n console.log(` Package: ${server.package}`);\n } else {\n console.log(` Command: ${server.command} ${server.args.join(' ')}`);\n }\n\n if (server.description) {\n console.log(` Description: ${server.description}`);\n }\n\n if (options.verbose) {\n console.log(` Environment:`);\n for (const [key, value] of Object.entries(server.env)) {\n const masked = value.length > 10 ? `${value.slice(0, 4)}***${value.slice(-4)}` : '***';\n console.log(` ${key}: ${masked}`);\n }\n }\n\n console.log('');\n }\n}\n\n/**\n * Remove MCP server\n */\nfunction removeServer(name: string, options: { confirm?: boolean }): void {\n const config = loadConfig();\n\n if (!config.servers[name]) {\n console.error(`❌ MCP server '${name}' not found`);\n process.exit(1);\n }\n\n if (!options.confirm) {\n console.log(`⚠️ This will remove MCP server: ${name}`);\n console.log(' Use --confirm to proceed');\n process.exit(0);\n }\n\n delete config.servers[name];\n saveConfig(config);\n\n console.log(`✅ Removed MCP server: ${name}`);\n}\n\n/**\n * Enable/disable MCP server\n */\nfunction toggleServer(name: string, enabled: boolean): void {\n const config = loadConfig();\n\n if (!config.servers[name]) {\n console.error(`❌ MCP server '${name}' not found`);\n process.exit(1);\n }\n\n config.servers[name].enabled = enabled;\n saveConfig(config);\n\n const action = enabled ? 'Enabled' : 'Disabled';\n console.log(`✅ ${action} MCP server: ${name}`);\n}\n\n/**\n * Update MCP server\n */\nfunction updateServer(name: string, options: {\n version?: string;\n env?: string[];\n command?: string;\n args?: string;\n}): void {\n const config = loadConfig();\n\n if (!config.servers[name]) {\n console.error(`❌ MCP server '${name}' not found`);\n process.exit(1);\n }\n\n const server = config.servers[name];\n\n // Update version for NPM packages\n if (options.version && server.type === 'npm' && server.package) {\n const packageName = server.package.split('@')[0];\n server.package = `${packageName}@${options.version}`;\n server.args = ['-y', server.package];\n }\n\n // Update environment variables\n if (options.env) {\n for (const envStr of options.env) {\n const [key, ...valueParts] = envStr.split('=');\n const value = valueParts.join('=');\n server.env[key] = value;\n }\n }\n\n // Update command\n if (options.command) {\n server.command = options.command;\n }\n\n // Update args\n if (options.args) {\n server.args = options.args.split(' ');\n }\n\n saveConfig(config);\n console.log(`✅ Updated MCP server: ${name}`);\n}\n\n/**\n * Test MCP server\n */\nasync function testServer(name: string, options: { verbose?: boolean }): Promise<void> {\n const config = loadConfig();\n\n if (!config.servers[name]) {\n console.error(`❌ MCP server '${name}' not found`);\n process.exit(1);\n }\n\n const server = config.servers[name];\n\n console.log(`Testing MCP server: ${name}`);\n console.log(`Command: ${server.command} ${server.args.join(' ')}\\n`);\n\n try {\n // Build environment\n const env = { ...process.env, ...server.env };\n\n // Test if server responds (send tools/list request).\n // Use spawnSync with stdio pipe instead of a shell command to avoid injection\n // via testRequest JSON or server.command/args values.\n const { spawnSync } = await import('child_process');\n const testRequest = JSON.stringify({\n jsonrpc: '2.0',\n method: 'tools/list',\n id: 1\n });\n\n const spawnResult = spawnSync(server.command, server.args, {\n encoding: 'utf-8',\n input: testRequest + '\\n',\n env,\n timeout: 5000,\n });\n\n if (spawnResult.error) {\n throw spawnResult.error;\n }\n const result = spawnResult.stdout || '';\n\n if (options.verbose) {\n console.log('Response:', result);\n }\n\n // Try to parse response\n const response = JSON.parse(result.split('\\n')[0]);\n\n if (response.result?.tools) {\n console.log(`✅ Server started successfully`);\n console.log(`✅ Responds to tools/list`);\n console.log(`✅ Found ${response.result.tools.length} tools:`);\n\n for (const tool of response.result.tools) {\n console.log(` - ${tool.name}: ${tool.description || 'No description'}`);\n }\n\n console.log('\\n✅ Server is working correctly');\n } else {\n console.log('⚠️ Server responded but no tools found');\n }\n } catch (error: any) {\n console.error('❌ Server test failed:', error.message);\n process.exit(1);\n }\n}\n\n/**\n * Show server info\n */\nfunction showInfo(name: string): void {\n const config = loadConfig();\n\n if (!config.servers[name]) {\n console.error(`❌ MCP server '${name}' not found`);\n process.exit(1);\n }\n\n const server = config.servers[name];\n\n console.log(`MCP Server: ${name}`);\n console.log(`Status: ${server.enabled ? '✅ Enabled' : '❌ Disabled'}`);\n console.log(`Type: ${server.type}`);\n\n if (server.package) {\n console.log(`Package: ${server.package}`);\n }\n\n console.log(`Command: ${server.command} ${server.args.join(' ')}`);\n\n if (Object.keys(server.env).length > 0) {\n console.log(`Environment:`);\n for (const [key, value] of Object.entries(server.env)) {\n const masked = value.length > 10 ? `***${key.slice(0, 3)}***` : '***';\n console.log(` ${key}: ${masked}`);\n }\n }\n\n if (server.description) {\n console.log(`Description: ${server.description}`);\n }\n\n console.log(`\\nConfig file: ${CONFIG_FILE}`);\n}\n\n/**\n * Export configuration\n */\nfunction exportConfig(): void {\n const config = loadConfig();\n console.log(JSON.stringify(config, null, 2));\n}\n\n/**\n * Import configuration\n */\nfunction importConfig(configJson: string): void {\n try {\n const importedConfig: MCPConfig = JSON.parse(configJson);\n\n // Validate structure\n if (!importedConfig.servers || typeof importedConfig.servers !== 'object') {\n throw new Error('Invalid config format');\n }\n\n const config = loadConfig();\n\n // Merge configs\n for (const [name, server] of Object.entries(importedConfig.servers)) {\n config.servers[name] = server;\n }\n\n saveConfig(config);\n\n const count = Object.keys(importedConfig.servers).length;\n console.log(`✅ Imported ${count} MCP server(s)`);\n } catch (error: any) {\n console.error('❌ Import failed:', error.message);\n process.exit(1);\n }\n}\n\n// CLI setup\nconst program = new Command();\n\nprogram\n .name('agentic-flow mcp')\n .description('Manage MCP servers for agentic-flow')\n .version('1.0.0')\n .addHelpText('after', `\nExamples:\n # Add MCP server (Claude-style JSON config)\n $ npx agentic-flow mcp add weather '{\"command\":\"npx\",\"args\":[\"-y\",\"weather-mcp\"],\"env\":{\"API_KEY\":\"xxx\"}}'\n\n # Add MCP server (simple flags)\n $ npx agentic-flow mcp add weather --npm weather-mcp --env \"API_KEY=xxx\"\n\n # Add local MCP server\n $ npx agentic-flow mcp add my-tools --local /path/to/server.js\n\n # List all configured servers\n $ npx agentic-flow mcp list\n\n # Test server\n $ npx agentic-flow mcp test weather\n\n # Use in agents (automatic)\n $ npx agentic-flow --agent researcher --task \"Get weather for Tokyo\"\n\nConfig file: ~/.agentic-flow/mcp-config.json\n`);\n\nprogram\n .command('add <name> [config]')\n .description('Add a new MCP server (config as JSON string or options)')\n .option('--npm <package>', 'NPM package name (e.g., weather-mcp@latest)')\n .option('--local <path>', 'Local file path (e.g., /path/to/server.js)')\n .option('--command <cmd>', 'Custom command (e.g., python3)')\n .option('--args <args>', 'Command arguments')\n .option('--env <key=value>', 'Environment variable (can use multiple times)')\n .option('--desc <description>', 'Server description')\n .action((name, config, options) => {\n if (config) {\n // JSON config format (like Claude MCP)\n addServerFromJson(name, config);\n } else {\n // Flag-based format\n addServer({ name, ...options });\n }\n });\n\nprogram\n .command('list')\n .description('List configured MCP servers')\n .option('--enabled', 'Show only enabled servers')\n .option('--verbose', 'Show detailed information')\n .action((options) => listServers(options));\n\nprogram\n .command('remove <name>')\n .description('Remove an MCP server')\n .option('--confirm', 'Confirm removal')\n .action((name, options) => removeServer(name, options));\n\nprogram\n .command('enable <name>')\n .description('Enable an MCP server')\n .action((name) => toggleServer(name, true));\n\nprogram\n .command('disable <name>')\n .description('Disable an MCP server')\n .action((name) => toggleServer(name, false));\n\nprogram\n .command('update <name>')\n .description('Update MCP server configuration')\n .option('--version <version>', 'Update NPM package version')\n .option('--env <key=value>', 'Update environment variable (can use multiple times)')\n .option('--command <cmd>', 'Update command')\n .option('--args <args>', 'Update arguments')\n .action((name, options) => updateServer(name, options));\n\nprogram\n .command('test <name>')\n .description('Test if MCP server works')\n .option('--verbose', 'Show detailed output')\n .action((name, options) => testServer(name, options));\n\nprogram\n .command('info <name>')\n .description('Show MCP server information')\n .action((name) => showInfo(name));\n\nprogram\n .command('export')\n .description('Export MCP configuration to stdout')\n .action(() => exportConfig());\n\nprogram\n .command('import')\n .description('Import MCP configuration from stdin')\n .action(() => {\n let data = '';\n process.stdin.on('data', (chunk) => (data += chunk));\n process.stdin.on('end', () => importConfig(data));\n });\n\nprogram.parse();\n"]}
|