behemoth-cli
Version:
🌍 BEHEMOTH CLIv3.760.4 - Level 50+ POST-SINGULARITY Intelligence Trading AI
1,159 lines (1,074 loc) • 56.9 kB
text/typescript
/**
* Natural Language Processing for conversational command parsing
* Transforms natural language queries into BEHEMOTH CLI commands
*/
interface ParsedIntent {
command: string;
confidence: number;
originalInput: string;
}
interface TradingPairMapping {
[key: string]: string;
}
const TRADING_PAIRS: TradingPairMapping = {
bitcoin: 'BTCUSDT',
btc: 'BTCUSDT',
ethereum: 'ETHUSDT',
ether: 'ETHUSDT',
eth: 'ETHUSDT',
solana: 'SOLUSDT',
sol: 'SOLUSDT',
cardano: 'ADAUSDT',
ada: 'ADAUSDT',
polkadot: 'DOTUSDT',
dot: 'DOTUSDT',
chainlink: 'LINKUSDT',
link: 'LINKUSDT',
polygon: 'MATICUSDT',
matic: 'MATICUSDT',
avalanche: 'AVAXUSDT',
avax: 'AVAXUSDT',
dogecoin: 'DOGEUSDT',
doge: 'DOGEUSDT',
};
const INTENT_PATTERNS = [
// CRITICAL SAFETY FIX: Orderbook patterns - HIGHEST PRIORITY to prevent trading accidents
{
patterns: [
/(?:get|show|display|fetch|retrieve).*?(?:order.*?book|orderbook|market.*?depth|liquidity)/i,
/(?:order.*?book|orderbook)(?:.*?for|.*?data|.*?info)?/i,
/(?:market.*?depth|bid.*?ask.*?spread|liquidity.*?depth|order.*?flow)/i,
/(?:show.*?bids|show.*?asks|check.*?orderbook|orderbook.*?analysis)/i,
],
command: 'orderbook',
confidence: 0.98, // HIGHEST priority for safety
},
// CRITICAL SAFETY FIX: Casual price request patterns - HIGH PRIORITY
{
patterns: [
/(?:yo|hey|sup)?.*?(?:check|tell me|what is|what's|show me|gimme|get me).*?(?:price|value|worth|cost)/i,
/(?:quick|fast|real quick).*?(?:price|check|look)/i,
/(?:current|latest|now).*?(?:price|value|rate)/i,
/(?:how much|what's).*?(?:worth|cost|trading|going for)/i,
],
command: 'casual_price',
confidence: 0.96, // Very high priority for casual requests
},
// MEMORY SYSTEM PATTERNS - HIGH PRIORITY to prevent routing conflicts
{
patterns: [
/^(?:remember|store|save)(?:\s+this)?[\s:]*(.+)/i,
/(?:store|save|remember).*?(?:insight|analysis|idea|observation|note)/i,
/(?:memory|memories).*?(?:store|save|add|create)/i,
],
command: 'memory',
confidence: 0.94, // High priority for memory storage
},
{
patterns: [
/^(?:recall|retrieve|find|search).*?(?:memory|memories|insight|analysis)/i,
/(?:what did|show me).*?(?:remember|store|save)/i,
/(?:find|search).*?(?:previous|past|earlier|stored)/i,
/(?:memory|memories).*?(?:recall|retrieve|find|search|about)/i,
],
command: 'memory',
confidence: 0.94, // High priority for memory recall
},
{
patterns: [
/(?:memory|memories).*?(?:stats|statistics|list|show|display)/i,
/(?:show|list|display).*?(?:memory|memories|stored)/i,
/(?:what.*?stored|what.*?remembered|memory.*?system)/i,
],
command: 'memory',
confidence: 0.94, // High priority for memory stats
},
// Support & Resistance specific patterns
{
patterns: [
/(?:support.*?resistance|resistance.*?support|support.*?levels|resistance.*?levels|sr\b)/i,
/(?:key.*?levels|price.*?levels|important.*?levels)/i,
/(?:where.*?support|where.*?resistance|find.*?support|find.*?resistance)/i,
],
command: 'support_resistance',
confidence: 0.95,
},
// Cosmic intelligence intents - HIGHER PRIORITY to avoid conflicts
{
patterns: [
/(?:cosmic|planetary|lunar|moon|astro|quantum|sacred geometry)/i,
/(?:cosmic.*signals|cosmic.*analysis|planetary.*analysis)/i,
/(?:lunar.*phase|moon.*phase|astro.*trading)/i,
/(?:quantum.*flux|quantum.*analysis|dimensional.*analysis)/i,
/(?:cosmic.*timing|energy.*vortex|harmonic.*resonance)/i,
/(?:sacred.*geometry|golden.*ratio|fibonacci.*cosmic)/i,
],
command: 'cosmic',
confidence: 0.95,
},
// Analysis intents - More conversational patterns with enhanced technical analysis detection
{
patterns: [
/(?:analyze|analysis|check|look at|examine|study|tell me about|what about|how is|how's).*?(?:bitcoin|btc|ethereum|eth|solana|sol|cardano|ada|polkadot|dot|chainlink|link|polygon|matic|avalanche|avax|dogecoin|doge)/i,
/(?:what.*?look.*?like|how.*?doing|price.*?action|technical.*?analysis|chart.*?analysis)/i,
/(?:rsi|macd|bollinger.*?band|moving.*?average|fibonacci|indicators?)/i,
/(?:should i|is it good|worth|recommend|opinion).*?(?:bitcoin|btc|ethereum|eth|solana|sol)/i,
/(?:market.*?analysis|technical.*?view|chart.*?reading)/i,
/(?:ma\b|sma|ema|bb\b|fib)/i,
],
command: 'analyze',
confidence: 0.9,
},
// Trading intents - More natural language
{
patterns: [
/(?:buy|purchase|long|go.*?long|invest in|get some).*?(?:bitcoin|btc|ethereum|eth|solana|sol)/i,
/(?:sell|short|go.*?short|dump|exit).*?(?:bitcoin|btc|ethereum|eth|solana|sol)/i,
/(?:trade|trading|position|order|execute|place.*?order)/i,
/(?:should i buy|should i sell|good time to|when to)/i,
/(?:entry.*?point|exit.*?strategy|take.*?profit|stop.*?loss)/i,
],
command: 'trade',
confidence: 0.8,
},
// Portfolio & Risk intents - More conversational
{
patterns: [
/(?:portfolio|risk|position.*?size|allocation|balance|my.*?holdings)/i,
/(?:how.*?much|what.*?size|calculate.*?risk|risk.*?management)/i,
/(?:diversification|asset.*?allocation|portfolio.*?balance)/i,
/(?:safe|risky|conservative|aggressive).*?(?:strategy|approach|investment)/i,
/(?:what.*?percentage|how.*?allocate|split.*?portfolio)/i,
],
command: 'risk',
confidence: 0.7,
},
// Market data intents - More natural queries (orderbook patterns moved to dedicated intent above)
{
patterns: [
/(?:price|ticker|current.*?value|market.*?data|quote)/i,
/(?:volume|funding.*?rate|24h.*?data)/i,
/(?:what.*?price|how.*?much|current.*?rate|market.*?cap)/i,
/(?:trading.*?volume|24h.*?volume|daily.*?volume)/i,
/(?:spread|bid.*?ask)(?!.*?depth|.*?book)/i, // Only spread patterns, not depth/book
],
command: 'ticker',
confidence: 0.75, // Lowered to avoid conflicts with higher priority patterns
},
// Sentiment intents - More emotional language
{
patterns: [
/(?:sentiment|feeling|mood|social|news|fear.*?greed|market.*?emotion)/i,
/(?:bullish|bearish|market.*?sentiment|investor.*?sentiment)/i,
/(?:optimistic|pessimistic|confident|worried|nervous)/i,
/(?:fomo|fud|hype|excitement|panic)/i,
/(?:social.*?media|twitter|reddit|community.*?feeling)/i,
],
command: 'sentiment',
confidence: 0.8,
},
// System intents - More casual language
{
patterns: [
/(?:system|health|status|performance|uptime|working)/i,
/(?:how.*?running|everything.*?working|all.*?good|system.*?ok)/i,
/(?:connection|api.*?status|server.*?status|online)/i,
/(?:check.*?system|diagnostic|test.*?connection)/i,
],
command: 'system_health',
confidence: 0.9,
},
// Greeting and conversational intents
{
patterns: [
/^(?:hi|hello|hey|good morning|good afternoon|good evening|what's up|sup)/i,
/^(?:how are you|how's it going|what's happening)/i,
],
command: 'greeting',
confidence: 0.95,
},
// Memory and learning intents
{
patterns: [
/(?:remember|store|save|memory|recall|retrieve)/i,
/(?:memory system|behemoth memory|store.*insight|remember.*that)/i,
/(?:list.*memories|show.*memories|what.*remember)/i,
/(?:forget|delete.*memory|clear.*memory)/i,
],
command: 'memory',
confidence: 0.95,
},
// Help and guidance intents
{
patterns: [
/(?:help|assist|guide|tutorial|how to|explain|what can you do)/i,
/(?:commands|features|capabilities|functions)/i,
/(?:getting started|new user|beginner)/i,
],
command: 'help',
confidence: 0.9,
},
// Advanced trading intents
{
patterns: [
/(?:arbitrage|cross.*exchange|delta.*neutral|pairs.*trading)/i,
/(?:momentum.*breakout|mean.*reversion|volume.*profile)/i,
/(?:order.*flow|market.*microstructure|liquidity.*hunting)/i,
/(?:whale.*movement|institutional.*flow|dark.*pool)/i,
],
command: 'advanced_trading',
confidence: 0.8,
},
// Adaptive learning intents - HIGH PRIORITY for machine learning operations
{
patterns: [
/(?:learn|train).*?(?:pattern|patterns|data|model|behavior)/i,
/(?:pattern|patterns).*?(?:learn|training|machine.*?learning)/i,
/(?:reinforcement.*?learning|rl\b|sac|td3|maml)/i,
/(?:train.*?on.*?data|learn.*?from.*?data|pattern.*?learning)/i,
/(?:machine.*?learning.*?pattern|ml.*?pattern|pattern.*?recognition)/i,
],
command: 'adaptive_learning',
confidence: 0.94,
},
{
patterns: [
/(?:analyze|analysis).*?(?:behavior|behavioral|user.*?behavior)/i,
/(?:behavior|behavioral).*?(?:analyze|analysis|pattern|patterns)/i,
/(?:user.*?pattern|session.*?analysis|behavioral.*?analysis)/i,
/(?:analyze.*?my.*?behavior|my.*?trading.*?behavior|behavior.*?tracking)/i,
/(?:behavioral.*?insights|behavior.*?detection)/i,
],
command: 'behavior_analysis',
confidence: 0.93,
},
{
patterns: [
/(?:adapt|optimize|improve).*?(?:strategy|strategies|approach|method)/i,
/(?:strategy|strategies).*?(?:adapt|adaptation|optimize|optimization)/i,
/(?:strategy.*?tuning|parameter.*?optimization|approach.*?improvement)/i,
/(?:optimize.*?my.*?strategy|improve.*?trading.*?strategy|adapt.*?approach)/i,
/(?:strategy.*?evolution|dynamic.*?strategy)/i,
],
command: 'strategy_adaptation',
confidence: 0.93,
},
{
patterns: [
/(?:safety|safe|safety.*?check|constitutional|constitution|ai.*?safety)/i,
/(?:check.*?safety|verify.*?safety|safety.*?review|ethical.*?check)/i,
/(?:constitutional.*?ai|constitutional.*?check|safety.*?assessment)/i,
/(?:harmless|harmful|bias.*?check|fairness.*?check)/i,
/(?:alignment.*?check|safety.*?validation)/i,
],
command: 'constitutional_safety',
confidence: 0.95,
},
{
patterns: [
/(?:neural|architecture).*?(?:search|optimization|optimize)/i,
/(?:neural.*?architecture.*?search|nas\b|architecture.*?optimization)/i,
/(?:optimize.*?neural|optimize.*?network|network.*?optimization)/i,
/(?:hyperparameter.*?search|hyperparameter.*?optimization|neural.*?tuning)/i,
/(?:architecture.*?search|search.*?architecture|neural.*?design)/i,
],
command: 'neural_optimization',
confidence: 0.93,
},
// n8n workflow automation intents
{
patterns: [
/(?:n8n|workflow|deploy.*?workflow|configure.*?n8n|list.*?workflows|create.*?workflow|run.*?workflow)/i,
/(?:build.*?automation|setup.*?alert|crypto.*?alert|smart.*?alert)/i,
/(?:integrate.*?n8n|use.*?n8n|deploy.*?crypto.*?system)/i,
/(?:workflow.*?generation|generate.*?workflow|build.*?workflow)/i,
/(?:automate.*?trading|automate.*?monitoring|automate.*?alerts)/i,
/(?:validate.*?workflow|test.*?workflow|check.*?workflow)/i,
/(?:supercode|javascript.*?node|code.*?generation)/i,
/(?:schedule.*?workflow|webhook.*?workflow|trigger.*?workflow)/i,
],
command: 'n8n',
confidence: 0.9,
},
// Intelligence module intents for AI methodology routing - HIGHER PRIORITY
{
patterns: [
/(?:use|apply|implement).*?(?:dspy|bmad|autoexpert|synapse).*?(?:optimization|optimize|workflow|methodology)/i,
/(?:route.*?(?:my|this|the).*?(?:ada|cardano|eth|ethereum|btc|bitcoin|sol|solana).*?(?:analysis|request).*?(?:to|via).*?(?:best|ai|methodology|intelligence|expert))/i,
/(?:professor.*?synapse|synapse.*?reason|expert.*?reasoning)/i,
/(?:multi.*?expert|expert.*?collaboration|reasoning.*?chain)/i,
/(?:bmad.*?workflow|meta.*?framework|optimization.*?workflow)/i,
/(?:autoexpert.*?optimize|chain.*?refinement|expert.*?optimization)/i,
/(?:dspy.*?optimize|optimization.*?pipeline|pipeline.*?optimization)/i,
/(?:route.*?request|methodology.*?routing|ai.*?routing)/i,
/(?:intelligence.*?system|expert.*?system|reasoning.*?system)/i,
],
command: 'intelligence',
confidence: 0.97, // Much higher than analyze (0.9) to ensure precedence
},
// Pattern detection intents for chart patterns and formations
{
patterns: [
/(?:pattern.*?detection|detect.*?pattern|find.*?pattern)/i,
/(?:chart.*?pattern|price.*?pattern|candlestick.*?pattern)/i,
/(?:head.*?shoulder|double.*?top|double.*?bottom|triangle)/i,
/(?:flag.*?pattern|pennant|wedge|channel)/i,
/(?:harmonic.*?pattern|gartley|butterfly|crab|bat)/i,
/(?:elliott.*?wave|wave.*?pattern|impulse.*?wave)/i,
/(?:support.*?resistance|trend.*?line|breakout)/i,
],
command: 'pattern_detection',
confidence: 0.85,
},
// Market overview intents
{
patterns: [
/(?:market.*?overview|overall.*?market|crypto.*?market|market.*?summary)/i,
/(?:what's.*?happening|market.*?update|daily.*?summary)/i,
/(?:top.*?coins|best.*?performers|worst.*?performers)/i,
],
command: 'market_overview',
confidence: 0.85,
},
{
patterns: [
/(?:arbitrage|cross.*exchange|delta.*neutral|pairs.*trading)/i,
/(?:momentum.*breakout|mean.*reversion|volume.*profile)/i,
/(?:order.*flow|market.*microstructure|liquidity.*hunting)/i,
/(?:whale.*movement|institutional.*flow|dark.*pool)/i,
/(?:machine.*learning|lstm|neural.*network|ai.*prediction)/i,
/(?:risk.*management|var|portfolio.*optimization)/i,
],
command: 'advanced_analysis',
confidence: 0.8,
},
{
patterns: [
/(?:lstm|neural.*network|deep.*learning|ai.*prediction)/i,
/(?:transformer|reinforcement.*learning|ensemble)/i,
/(?:machine.*learning|ml.*prediction|artificial.*intelligence)/i,
/(?:autoencoder|gan|attention.*mechanism)/i,
],
command: 'ml_analysis',
confidence: 0.85,
},
{
patterns: [
/(?:uniswap|aave|compound|sushiswap|curve|yearn)/i,
/(?:defi|yield.*farm|liquidity.*pool|dex)/i,
/(?:opensea|nft|web3|smart.*contract|gas.*price)/i,
/(?:mempool|wallet.*portfolio|ens.*domain)/i,
],
command: 'defi_web3_analysis',
confidence: 0.8,
},
{
patterns: [
/(?:real.*time|streaming|low.*latency|high.*frequency)/i,
/(?:tick.*data|microsecond|hft|instant.*alert)/i,
/(?:live.*pnl|real.*time.*risk|streaming.*data)/i,
],
command: 'realtime_analysis',
confidence: 0.85,
},
{
patterns: [
/(?:risk.*management|var|cvar|drawdown|sharpe.*ratio|kelly.*criterion)/i,
/(?:portfolio.*optimization|correlation.*matrix|risk.*parity|black.*litterman)/i,
/(?:monte.*carlo|stress.*test)/i,
],
command: 'risk_analysis',
confidence: 0.8,
},
{
patterns: [
/(?:system.*adaptation|adaptive.*optimization|neural.*evolution|genetic.*algorithm)/i,
/(?:performance.*auto.*analyzer|latency.*auto.*optimizer|cosmic.*strength.*enhancer)/i,
/(?:strategy.*auto.*selector|parameter.*auto.*tuner|feedback.*loop.*optimizer)/i,
/(?:adaptive.*learning.*engine|self.*healing.*monitor|auto.*scaling.*controller)/i,
/(?:dynamic.*threshold.*adjuster|performance.*predictor|optimization.*scheduler)/i,
/(?:adaptive.*risk.*manager)/i,
],
command: 'system_adaptation',
confidence: 0.8,
},
{
patterns: [
/(?:market.*structure|dark.*pool.*detection|institutional.*flow|retail.*sentiment)/i,
/(?:smart.*money.*detector|accumulation.*distribution|volume.*spread.*analysis)/i,
/(?:market.*maker.*behavior|order.*book.*dynamics)/i,
],
command: 'market_structure_analysis',
confidence: 0.8,
},
];
/**
* Extract trading pair(s) from natural language input
* Returns string for single pair, array for multiple pairs
*/
function extractTradingPair(input: string): string | string[] {
const normalizedInput = input.toLowerCase();
const foundPairs: string[] = [];
// Direct pair mentions (BTC-USDT, BTC/USDT, BTCUSDT)
const pairMatches = normalizedInput.matchAll(/([a-z]{2,10})[-\/]?usdt?/gi);
for (const match of pairMatches) {
const pair = `${match[1].toUpperCase()}USDT`;
if (!foundPairs.includes(pair)) {
foundPairs.push(pair);
}
}
// Coin name matches
for (const [coinName, pair] of Object.entries(TRADING_PAIRS)) {
if (normalizedInput.includes(coinName) && !foundPairs.includes(pair)) {
foundPairs.push(pair);
}
}
// Enhanced multi-asset detection with better comma handling
const hasMultiAssetIndicators = /(?:and|plus|,\s*|&|\+|vs|versus|compare)/.test(normalizedInput);
// Handle comma-separated lists more aggressively
const commaMatches = normalizedInput.match(/\b([a-z]{2,10})\s*,\s*([a-z]{2,10})/gi);
if (commaMatches && commaMatches.length > 0) {
// Force multi-asset mode for comma patterns
for (const match of commaMatches) {
const parts = match.split(/\s*,\s*/);
for (const part of parts) {
const trimmed = part.trim().toLowerCase();
if (TRADING_PAIRS[trimmed] && !foundPairs.includes(TRADING_PAIRS[trimmed])) {
foundPairs.push(TRADING_PAIRS[trimmed]);
}
}
}
}
if (foundPairs.length === 0) {
// Default to BTC if no specific pair found
return 'BTCUSDT';
} else if (foundPairs.length === 1 || !hasMultiAssetIndicators) {
// Single pair or no multi-asset indicators
return foundPairs[0];
} else {
// Multiple pairs found with multi-asset indicators
return foundPairs;
}
}
/**
* Extract multiple trading pairs from natural language input
* Always returns array for consistency in multi-asset handling
*/
function extractMultipleTradingPairs(input: string): string[] {
const result = extractTradingPair(input);
return Array.isArray(result) ? result : [result];
}
/**
* Extract amount/quantity from trading commands
*/
function extractAmount(input: string): string | null {
// Look for patterns like "buy 2 ETH", "$1000 worth", "100 dollars"
const amountPatterns = [
/(?:buy|sell|trade)\s+(\d+(?:\.\d+)?)\s/i,
/\$(\d+(?:,\d{3})*(?:\.\d+)?)/,
/(\d+(?:\.\d+)?)\s*(?:dollars?|usd)/i,
];
for (const pattern of amountPatterns) {
const match = input.match(pattern);
if (match) {
return match[1].replace(',', '');
}
}
return null;
}
/**
* Extract risk level from input
*/
function extractRiskLevel(input: string): string {
const riskPatterns = {
low: /(?:low|conservative|safe|minimal).*?risk/i,
medium: /(?:medium|moderate|balanced).*?risk/i,
high: /(?:high|aggressive|maximum).*?risk/i,
};
for (const [level, pattern] of Object.entries(riskPatterns)) {
if (pattern.test(input)) {
return level;
}
}
return 'medium'; // default
}
/**
* Extract exchange names from user input
*/
function extractExchanges(input: string): string[] {
const exchanges: string[] = [];
const text = input.toLowerCase();
if (text.includes('binance')) exchanges.push('binance');
if (text.includes('bybit')) exchanges.push('bybit');
if (text.includes('bitget')) exchanges.push('bitget');
// If no specific exchange mentioned, default to binance
if (exchanges.length === 0) exchanges.push('binance');
return exchanges;
}
/**
* Main NLP parser - converts natural language to CLI commands
*/
export async function parseNaturalLanguage(
input: string,
): Promise<ParsedIntent> {
const normalizedInput = input.toLowerCase().trim();
// Skip if already a command
if (input.startsWith('/')) {
return {
command: input,
confidence: 1.0,
originalInput: input,
};
}
let bestMatch = {command: input, confidence: 0.0, originalInput: input};
// Find best matching intent
for (const intent of INTENT_PATTERNS) {
for (const pattern of intent.patterns) {
if (pattern.test(input)) {
if (intent.confidence > bestMatch.confidence) {
bestMatch = {
command: intent.command,
confidence: intent.confidence,
originalInput: input,
};
}
}
}
}
// If no intent found with sufficient confidence, return original
if (bestMatch.confidence < 0.6) {
return bestMatch;
}
// Build command with extracted parameters
const tradingPairResult = extractTradingPair(input);
const tradingPairs = Array.isArray(tradingPairResult) ? tradingPairResult : [tradingPairResult];
const isMultiAsset = Array.isArray(tradingPairResult);
const tradingPair = tradingPairs[0]; // Use first pair for backward compatibility
const amount = extractAmount(input);
const riskLevel = extractRiskLevel(input);
let command = '';
let commands: string[] = []; // For multi-asset support
switch (bestMatch.command) {
case 'orderbook':
// CRITICAL SAFETY FIX: Dedicated orderbook routing
command = `trading_get_orderbook --symbol=${tradingPair} --limit=50`;
break;
case 'casual_price':
// CRITICAL SAFETY FIX: Casual price requests go to ticker, not technical analysis
// MULTI-ASSET SUPPORT: Handle multiple symbols in one request
const exchanges = extractExchanges(input);
let marketType = 'futures';
if (/spot/i.test(input)) marketType = 'spot';
if (isMultiAsset) {
// Generate multiple commands for multi-asset requests
for (const pair of tradingPairs) {
let singleCommand = '';
if (exchanges.includes('binance')) {
singleCommand = `/exchange_ticker --exchange=binance --symbol=${pair} --market_type=${marketType}`;
} else if (exchanges.includes('bitget')) {
singleCommand = `/exchange_ticker --exchange=bitget --symbol=${pair} --market_type=${marketType}`;
} else {
singleCommand = `/exchange_ticker --exchange=bybit --symbol=${pair} --market_type=${marketType}`;
}
commands.push(singleCommand);
}
command = commands.join(' && '); // Execute multiple commands
} else {
// Single asset request
if (exchanges.includes('binance')) {
command = `/exchange_ticker --exchange=binance --symbol=${tradingPair} --market_type=${marketType}`;
} else if (exchanges.includes('bitget')) {
command = `/exchange_ticker --exchange=bitget --symbol=${tradingPair} --market_type=${marketType}`;
} else {
command = `/exchange_ticker --exchange=bybit --symbol=${tradingPair} --market_type=${marketType}`;
}
}
break;
case 'support_resistance':
command = `/pattern_analysis --pattern_type=support_resistance --symbol=${tradingPair}`;
break;
case 'analyze':
// MULTI-ASSET SUPPORT: Check if this is a price analysis request first
if (/(?:price|prices).*?(?:together|compare|vs|versus)/i.test(input) && isMultiAsset) {
// Multi-asset price analysis - generate multiple ticker commands
for (const pair of tradingPairs) {
const singleCommand = `/exchange_ticker --exchange=binance --symbol=${pair} --market_type=futures`;
commands.push(singleCommand);
}
command = commands.join(' && ');
} else if (/moving.*?average|ma\b|sma|ema/i.test(input)) {
if (isMultiAsset) {
for (const pair of tradingPairs) {
commands.push(`/technical_indicator --indicator=moving_averages --symbol=${pair}`);
}
command = commands.join(' && ');
} else {
command = `/technical_indicator --indicator=moving_averages --symbol=${tradingPair}`;
}
} else if (/bollinger.*?band|bb\b/i.test(input)) {
if (isMultiAsset) {
for (const pair of tradingPairs) {
commands.push(`/technical_indicator --indicator=bollinger_bands --symbol=${pair}`);
}
command = commands.join(' && ');
} else {
command = `/technical_indicator --indicator=bollinger_bands --symbol=${tradingPair}`;
}
} else if (/macd/i.test(input)) {
command = `/technical_indicator --indicator=macd --symbol=${tradingPair}`;
} else if (/trend.*?analysis|trend/i.test(input)) {
command = `/pattern_analysis --pattern_type=trend_analysis --symbol=${tradingPair}`;
} else if (
/support.*?resistance|support.*?levels|resistance.*?levels|sr\b/i.test(
input,
)
) {
command = `/pattern_analysis --pattern_type=support_resistance --symbol=${tradingPair}`;
} else if (/momentum/i.test(input)) {
command = `/technical_indicator --indicator=momentum --symbol=${tradingPair}`;
} else if (/volatility/i.test(input)) {
command = `/technical_indicator --indicator=volatility --symbol=${tradingPair}`;
} else if (/candlestick.*?pattern|candle.*?pattern/i.test(input)) {
command = `/pattern_analysis --pattern_type=candlestick_patterns --symbol=${tradingPair}`;
} else if (/fibonacci|fib/i.test(input)) {
command = `/pattern_analysis --pattern_type=fibonacci --symbol=${tradingPair}`;
} else if (/adx|average.*directional/i.test(input)) {
command = `/technical_indicator --indicator=adx --symbol=${tradingPair}`;
} else if (/atr|average.*true.*range/i.test(input)) {
command = `/technical_indicator --indicator=atr --symbol=${tradingPair}`;
} else if (/pivot.*points/i.test(input)) {
command = `/pattern_analysis --pattern_type=pivot_points --symbol=${tradingPair}`;
} else if (/ichimoku/i.test(input)) {
command = `/pattern_analysis --pattern_type=ichimoku --symbol=${tradingPair}`;
} else if (/cosmic|planetary|lunar|quantum|astro/i.test(input)) {
command = `/cosmic_analysis --analysis_type=planetary --symbol=${tradingPair}`;
} else if (/master.*?analysis|comprehensive|complete/i.test(input)) {
command = `/fr3k_analysis --analysis_type=fr3k_master_analysis --symbol=${tradingPair}`;
} else {
// Default to RSI only if no specific pattern matches
command = `/technical_indicator --indicator=rsi --symbol=${tradingPair}`;
}
break;
case 'trade':
// CRITICAL SAFETY FIX: Add safety confirmations and analysis-only mode for trading
const action = /(?:buy|purchase|long)/i.test(input) ? 'buy' : 'sell';
// Instead of executing trades, provide analysis and require explicit confirmation
command = `/trading_analyze_entry_exit --action=${action} --symbol=${tradingPair} --analysis_mode=safety_check`;
if (amount) command += ` --amount=${amount}`;
// Add safety note in command to remind user this is analysis only
command += ` --note="ANALYSIS_ONLY_NO_EXECUTION_USE_EXPLICIT_TRADE_COMMAND_TO_EXECUTE"`;
break;
case 'risk':
command = `/risk --symbol=${tradingPair} --level=${riskLevel}`;
if (amount) command += ` --portfolio=${amount}`;
break;
case 'ticker':
// MULTI-ASSET SUPPORT: Handle multiple symbols in ticker requests
const tickerExchanges = extractExchanges(input);
let tickerMarketType = 'futures'; // Default to futures
if (/spot/i.test(input)) {
tickerMarketType = 'spot';
} else if (/futures/i.test(input)) {
tickerMarketType = 'futures';
}
if (isMultiAsset) {
// Generate multiple commands for multi-asset requests
for (const pair of tradingPairs) {
let singleCommand = '';
if (tickerExchanges.includes('binance')) {
singleCommand = `/exchange_ticker --exchange=binance --symbol=${pair} --market_type=${tickerMarketType}`;
} else if (tickerExchanges.includes('bitget')) {
singleCommand = `/exchange_ticker --exchange=bitget --symbol=${pair} --market_type=${tickerMarketType}`;
} else {
singleCommand = `/exchange_ticker --exchange=bybit --symbol=${pair} --market_type=${tickerMarketType}`;
}
commands.push(singleCommand);
}
command = commands.join(' && '); // Execute multiple commands
} else {
// Single asset request
if (tickerExchanges.includes('binance')) {
command = `/exchange_ticker --exchange=binance --symbol=${tradingPair} --market_type=${tickerMarketType}`;
} else if (tickerExchanges.includes('bitget')) {
command = `/exchange_ticker --exchange=bitget --symbol=${tradingPair} --market_type=${tickerMarketType}`;
} else {
command = `/exchange_ticker --exchange=bybit --symbol=${tradingPair} --market_type=${tickerMarketType}`;
}
}
break;
case 'sentiment':
// Use the actual MCP tool name for market sentiment analysis
command = `trading_analyze_market_sentiment --symbol=${tradingPair} --exchange=bybit`;
break;
case 'system_health':
command = `/system_monitoring --monitor_type=system_health`;
break;
case 'greeting':
command = `/help`;
break;
case 'help':
command = `/help`;
break;
case 'market_overview':
command = `market_mood`;
break;
case 'memory':
// Memory commands using unified MCP server memory tools
if (/(?:remember|store|save)/.test(input)) {
command = `memory_store_memory --content="${input}" --context={"type":"user_request","source":"nlp"} --importance=7 --tags=["nlp_generated","user_insight"]`;
} else if (/(?:recall|retrieve|find)/.test(input)) {
command = `memory_recall_memory --query="${input}" --limit=5 --min_relevance=0.3`;
} else if (/(?:stats|statistics|list|show).*?(?:memory|memories)/.test(input)) {
command = `memory_memory_stats --detailed=true`;
} else if (/(?:reflect|insights?)/.test(input)) {
command = `memory_reflect_on_memory --reflection_type=insight`;
} else {
command = `memory_store_memory --content="${input}" --context={"type":"user_request","source":"nlp"} --importance=7 --tags=["nlp_generated","user_insight"]`;
}
break;
case 'cosmic':
if (/planetary/i.test(input)) {
command = `cosmic_planetary_analysis --symbol=${tradingPair}`;
} else if (/lunar|moon/i.test(input)) {
command = `cosmic_lunar_cycle_analysis --symbol=${tradingPair}`;
} else if (/quantum/i.test(input)) {
command = `cosmic_quantum_entanglement --symbol=${tradingPair}`;
} else if (/sacred.*geometry/i.test(input)) {
command = `cosmic_sacred_geometry --symbol=${tradingPair}`;
} else {
command = `cosmic_planetary_analysis --symbol=${tradingPair}`;
}
break;
case 'advanced_trading':
if (/arbitrage/i.test(input)) {
command = `/trading_strategy --strategy_type=cross_exchange_arbitrage --symbol=${tradingPair}`;
} else if (/momentum.*breakout/i.test(input)) {
command = `/trading_strategy --strategy_type=momentum_breakout --symbol=${tradingPair}`;
} else if (/whale/i.test(input)) {
command = `/market_microstructure --analysis_type=whale_movement_tracker --symbol=${tradingPair}`;
} else if (/institutional/i.test(input)) {
command = `/market_microstructure --analysis_type=institutional_flow_detector --symbol=${tradingPair}`;
} else {
command = `/volume_analysis --volume_type=order_flow --symbol=${tradingPair}`;
}
break;
case 'advanced_analysis':
if (/arbitrage/i.test(input)) {
command = `/trading_strategy --strategy_type=cross_exchange_arbitrage --symbol=${tradingPair}`;
} else if (/whale/i.test(input)) {
command = `/market_microstructure --analysis_type=whale_movement_tracker --symbol=${tradingPair}`;
} else if (/dark.*pool/i.test(input)) {
command = `/market_microstructure --analysis_type=dark_pool_analyzer --symbol=${tradingPair}`;
} else if (/momentum.*breakout/i.test(input)) {
command = `/trading_strategy --strategy_type=momentum_breakout --symbol=${tradingPair}`;
} else if (/mean.*reversion/i.test(input)) {
command = `/trading_strategy --strategy_type=mean_reversion --symbol=${tradingPair}`;
} else if (/statistical.*arbitrage/i.test(input)) {
command = `/trading_strategy --strategy_type=statistical_arbitrage --symbol=${tradingPair}`;
} else if (/pairs.*trading/i.test(input)) {
command = `/trading_strategy --strategy_type=pairs_trading --symbol=${tradingPair}`;
} else if (/volatility.*surface/i.test(input)) {
command = `/trading_strategy --strategy_type=volatility_surface_analyzer --symbol=${tradingPair}`;
} else if (/gamma.*exposure/i.test(input)) {
command = `/trading_strategy --strategy_type=gamma_exposure_tracker --symbol=${tradingPair}`;
} else if (/delta.*hedging/i.test(input)) {
command = `/trading_strategy --strategy_type=delta_hedging --symbol=${tradingPair}`;
} else if (/liquidity.*hunting/i.test(input)) {
command = `/market_microstructure --analysis_type=liquidity_hunting_algo --symbol=${tradingPair}`;
} else if (/institutional.*flow/i.test(input)) {
command = `/market_microstructure --analysis_type=institutional_flow_detector --symbol=${tradingPair}`;
} else if (/options.*flow/i.test(input)) {
command = `/market_microstructure --analysis_type=options_flow_monitor --symbol=${tradingPair}`;
} else if (/futures.*basis/i.test(input)) {
command = `/market_microstructure --analysis_type=futures_basis_trader --symbol=${tradingPair}`;
} else if (/funding.*rate.*arbitrage/i.test(input)) {
command = `/market_microstructure --analysis_type=funding_rate_arbitrage --symbol=${tradingPair}`;
}
break;
case 'ml_analysis':
if (/lstm/i.test(input)) {
command = `/ml_prediction --model_type=lstm_price_predictor --symbol=${tradingPair}`;
} else if (/neural.*network/i.test(input)) {
command = `/ml_prediction --model_type=neural_network_optimizer --symbol=${tradingPair}`;
} else if (/transformer/i.test(input)) {
command = `/ml_prediction --model_type=transformer_pattern_recognition --symbol=${tradingPair}`;
} else if (/reinforcement.*learning/i.test(input)) {
command = `/ml_prediction --model_type=reinforcement_learning_trader --symbol=${tradingPair}`;
} else if (/deep.*learning/i.test(input)) {
command = `/ml_prediction --model_type=deep_learning_analyzer --symbol=${tradingPair}`;
} else if (/ensemble.*model/i.test(input)) {
command = `/ml_prediction --model_type=ensemble_model_predictor --symbol=${tradingPair}`;
} else if (/gradient.*boosting/i.test(input)) {
command = `/ml_prediction --model_type=gradient_boosting_signals --symbol=${tradingPair}`;
} else if (/random.*forest/i.test(input)) {
command = `/ml_prediction --model_type=random_forest_classifier --symbol=${tradingPair}`;
} else if (/svm|support.*vector/i.test(input)) {
command = `/ml_prediction --model_type=svm_trend_detector --symbol=${tradingPair}`;
} else if (/autoencoder.*anomaly/i.test(input)) {
command = `/ai_analysis --ai_type=autoencoder_anomaly_detector --symbol=${tradingPair}`;
} else if (/gan|synthetic.*data/i.test(input)) {
command = `/ai_analysis --ai_type=gan_synthetic_data --symbol=${tradingPair}`;
} else if (/attention.*mechanism/i.test(input)) {
command = `/ai_analysis --ai_type=attention_mechanism_analyzer --symbol=${tradingPair}`;
} else if (/federated.*learning/i.test(input)) {
command = `/ai_analysis --ai_type=federated_learning_coordinator --symbol=${tradingPair}`;
} else if (/transfer.*learning/i.test(input)) {
command = `/ai_analysis --ai_type=transfer_learning_adapter --symbol=${tradingPair}`;
} else if (/active.*learning/i.test(input)) {
command = `/ai_analysis --ai_type=active_learning_selector --symbol=${tradingPair}`;
} else if (/meta.*learning/i.test(input)) {
command = `/ai_analysis --ai_type=meta_learning_optimizer --symbol=${tradingPair}`;
} else if (/continual.*learning/i.test(input)) {
command = `/ai_analysis --ai_type=continual_learning_engine --symbol=${tradingPair}`;
} else if (/multimodal.*fusion/i.test(input)) {
command = `/ai_analysis --ai_type=multimodal_fusion_analyzer --symbol=${tradingPair}`;
}
break;
case 'defi_web3_analysis':
if (/uniswap/i.test(input)) {
command = `/defi_analysis --protocol=uniswap_liquidity_analyzer --symbol=${tradingPair}`;
} else if (/aave/i.test(input)) {
command = `/defi_analysis --protocol=aave_lending_optimizer --symbol=${tradingPair}`;
} else if (/compound/i.test(input)) {
command = `/defi_analysis --protocol=compound_yield_farmer --symbol=${tradingPair}`;
} else if (/sushiswap/i.test(input)) {
command = `/defi_analysis --protocol=sushiswap_arbitrage_finder --symbol=${tradingPair}`;
} else if (/curve/i.test(input)) {
command = `/defi_analysis --protocol=curve_pool_analyzer --symbol=${tradingPair}`;
} else if (/yearn/i.test(input)) {
command = `/defi_analysis --protocol=yearn_vault_tracker --symbol=${tradingPair}`;
} else if (/pancakeswap/i.test(input)) {
command = `/defi_analysis --protocol=pancakeswap_sniper_bot --symbol=${tradingPair}`;
} else if (/balancer/i.test(input)) {
command = `/defi_analysis --protocol=balancer_pool_optimizer --symbol=${tradingPair}`;
} else if (/dydx/i.test(input)) {
command = `/defi_analysis --protocol=dydx_margin_trader --symbol=${tradingPair}`;
} else if (/gmx/i.test(input)) {
command = `/defi_analysis --protocol=gmx_perp_analyzer --symbol=${tradingPair}`;
} else if (/opensea|nft/i.test(input)) {
command = `/web3_tools --tool_type=opensea_floor_tracker`;
} else if (/rarity/i.test(input)) {
command = `/web3_tools --tool_type=nft_rarity_analyzer`;
} else if (/gas.*price/i.test(input)) {
command = `/web3_tools --tool_type=gas_price_optimizer`;
} else if (/mempool/i.test(input)) {
command = `/web3_tools --tool_type=mempool_transaction_scanner`;
} else if (/wallet.*portfolio/i.test(input)) {
command = `/web3_tools --tool_type=wallet_portfolio_tracker`;
} else if (/ens.*domain/i.test(input)) {
command = `/web3_tools --tool_type=ens_domain_monitor`;
} else if (/smart.*contract.*audit/i.test(input)) {
command = `/web3_tools --tool_type=smart_contract_auditor`;
} else if (/dapp.*interaction/i.test(input)) {
command = `/web3_tools --tool_type=dapp_interaction_logger`;
} else if (/ipfs/i.test(input)) {
command = `/web3_tools --tool_type=ipfs_data_fetcher`;
} else if (/polygon.*bridge/i.test(input)) {
command = `/web3_tools --tool_type=polygon_bridge_monitor`;
}
break;
case 'realtime_analysis':
if (/streaming/i.test(input)) {
command = `/realtime_processing --processing_type=streaming_data_processor --symbol=${tradingPair}`;
} else if (/low.*latency/i.test(input)) {
command = `/realtime_processing --processing_type=low_latency_executor --symbol=${tradingPair}`;
} else if (/real.*time.*aggregator/i.test(input)) {
command = `/realtime_processing --processing_type=real_time_aggregator --symbol=${tradingPair}`;
} else if (/tick.*data/i.test(input)) {
command = `/realtime_processing --processing_type=tick_data_analyzer --symbol=${tradingPair}`;
} else if (/microsecond.*timer/i.test(input)) {
command = `/realtime_processing --processing_type=microsecond_timer --symbol=${tradingPair}`;
} else if (/high.*frequency.*monitor/i.test(input)) {
command = `/realtime_processing --processing_type=high_frequency_monitor --symbol=${tradingPair}`;
} else if (/real.*time.*risk.*monitor/i.test(input)) {
command = `/realtime_processing --processing_type=real_time_risk_monitor --symbol=${tradingPair}`;
} else if (/live.*pnl/i.test(input)) {
command = `/realtime_processing --processing_type=live_pnl_tracker --symbol=${tradingPair}`;
} else if (/instant.*alert/i.test(input)) {
command = `/realtime_processing --processing_type=instant_alert_system --symbol=${tradingPair}`;
} else if (/real.*time.*cosmic.*sync/i.test(input)) {
command = `/realtime_processing --processing_type=real_time_cosmic_sync --symbol=${tradingPair}`;
}
break;
case 'risk_analysis':
if (/var/i.test(input)) {
command = `/risk_analysis --risk_type=var_calculator --symbol=${tradingPair}`;
} else if (/cvar/i.test(input)) {
command = `/risk_analysis --risk_type=cvar_analyzer --symbol=${tradingPair}`;
} else if (/drawdown/i.test(input)) {
command = `/risk_analysis --risk_type=maximum_drawdown_tracker --symbol=${tradingPair}`;
} else if (/sharpe.*ratio/i.test(input)) {
command = `/risk_analysis --risk_type=sharpe_ratio_optimizer --symbol=${tradingPair}`;
} else if (/kelly.*criterion/i.test(input)) {
command = `/risk_analysis --risk_type=kelly_criterion_calculator --symbol=${tradingPair}`;
} else if (/position.*sizing/i.test(input)) {
command = `/risk_analysis --risk_type=position_sizing_optimizer --symbol=${tradingPair}`;
} else if (/correlation.*matrix/i.test(input)) {
command = `/portfolio_optimization --optimization_type=correlation_matrix_analyzer --symbols=${tradingPair}`;
} else if (/portfolio.*rebalancer/i.test(input)) {
command = `/portfolio_optimization --optimization_type=portfolio_rebalancer --symbols=${tradingPair}`;
} else if (/risk.*parity/i.test(input)) {
command = `/portfolio_optimization --optimization_type=risk_parity_allocator --symbols=${tradingPair}`;
} else if (/black.*litterman/i.test(input)) {
command = `/portfolio_optimization --optimization_type=black_litterman_optimizer --symbols=${tradingPair}`;
} else if (/monte.*carlo/i.test(input)) {
command = `/portfolio_optimization --optimization_type=monte_carlo_simulator --symbols=${tradingPair}`;
} else if (/stress.*test/i.test(input)) {
command = `/portfolio_optimization --optimization_type=stress_testing_engine --symbols=${tradingPair}`;
}
break;
case 'system_adaptation':
if (/neural.*evolution/i.test(input)) {
command = `/adaptive_optimization --optimization_type=neural_evolution_optimizer`;
} else if (/genetic.*algorithm/i.test(input)) {
command = `/adaptive_optimization --optimization_type=genetic_algorithm_tuner`;
} else if (/performance.*auto.*analyzer/i.test(input)) {
command = `/adaptive_optimization --optimization_type=performance_auto_analyzer`;
} else if (/latency.*auto.*optimizer/i.test(input)) {
command = `/adaptive_optimization --optimization_type=latency_auto_optimizer`;
} else if (/cosmic.*strength.*enhancer/i.test(input)) {
command = `/adaptive_optimization --optimization_type=cosmic_strength_enhancer`;
} else if (/strategy.*auto.*selector/i.test(input)) {
command = `/adaptive_optimization --optimization_type=strategy_auto_selector`;
} else if (/parameter.*auto.*tuner/i.test(input)) {
command = `/adaptive_optimization --optimization_type=parameter_auto_tuner`;
} else if (/feedback.*loop.*optimizer/i.test(input)) {
command = `/adaptive_optimization --optimization_type=feedback_loop_optimizer`;
} else if (/adaptive.*learning.*engine/i.test(input)) {
command = `/adaptive_optimization --optimization_type=adaptive_learning_engine`;
} else if (/self.*healing.*monitor/i.test(input)) {
command = `/adaptive_optimization --optimization_type=self_healing_monitor`;
} else if (/auto.*scaling.*controller/i.test(input)) {
command = `/adaptive_optimization --optimization_type=auto_scaling_controller`;
} else if (/dynamic.*threshold.*adjuster/i.test(input)) {
command = `/adaptive_optimization --optimization_type=dynamic_threshold_adjuster`;
} else if (/performance.*predictor/i.test(input)) {
command = `/adaptive_optimization --optimization_type=performance_predictor`;
} else if (/optimization.*scheduler/i.test(input)) {
command = `/adaptive_optimization --optimization_type=optimization_scheduler`;
} else if (/adaptive.*risk.*manager/i.test(input)) {
command = `/adaptive_optimization --optimization_type=adaptive_risk_manager`;
}
break;
case 'market_structure_analysis':
if (/dark.*pool.*detection/i.test(input)) {
command = `/market_structure_analysis --structure_type=dark_pool_detection --symbol=${tradingPair}`;
} else if (/institutional.*flow/i.test(input)) {
command = `/market_structure_analysis --structure_type=institutional_flow --symbol=${tradingPair}`;
} else if (/retail.*sentiment/i.test(input)) {
command = `/market_structure_analysis --structure_type=retail_sentiment_tracker --symbol=${tradingPair}`;
} else if (/smart.*money.*detector/i.test(input)) {
command = `/market_structure_analysis --structure_type=smart_money_detector --symbol=${tradingPair}`;
} else if (/accumulation.*distribution/i.test(input)) {
command = `/market_structure_analysis --structure_type=accumulation_distribution --symbol=${tradingPair}`;
} else if (/volume.*spread.*analysis/i.test(input)) {
command = `/market_structure_analysis --structure_type=volume_spread_analysis --symbol=${tradingPair}`;
} else if (/market.*maker.*behavior/i.test(input)) {
command = `/market_structure_analysis --structure_type=market_maker_behavior --symbol=${tradingPair}`;
} else if (/order.*book.*dynamics/i.test(input)) {
command = `/market_structure_analysis --structure_type=order_book_dynamics --symbol=${tradingPair}`;
}
break;
case 'intelligence':
// CRITICAL FIX: Preserve trading pair in intelligence routing
if (/professor.*?synapse|synapse.*?reason/i.test(input)) {
command = `intel_synapse_reason --query="${input}" --context="crypto_analysis" --symbol=${tradingPair}`;
} else if (/bmad.*?workflow|meta.*?framework/i.test(input)) {
command = `intel_bmad_workflow --task="${input}" --optimization_level="high" --symbol=${tradingPair}`;
} else if (/autoexpert.*?optimize|expert.*?optimization/i.test(input)) {
command = `intel_autoexpert_optimize --domain="crypto_trading" --query="${input}" --symbol=${tradingPair}`;
} else if (/dspy.*?optimize|pipeline.*?optimization/i.test(input)) {
command = `intel_dspy_optimize --task="${input}" --optimization_type="reasoning" --symbol=${tradingPair}`;
} else if (/route.*?request|methodology.*?routing/i.test(input)) {
command = `intel_route_request --query="${input}" --domain="crypto_trading" --symbol=${tradingPair}`;
} else {
command = `intel_route_request --query="${input}" --domain="crypto_trading" --symbol=${tradingPair}`;
}
break;
case 'pattern_detection':
if (/head.*?shoulder/i.test(input)) {
command = `trading_detect_patterns --pattern_type=head_and_shoulders --symbol=${tradingPair} --timeframe=1h`;
} else if (/double.*?top|double.*?bottom/i.test(input)) {
command = `trading_detect_patterns --pattern_type=double_top_bottom --symbol=${tradingPair} --timeframe=1h`;
} else if (/triangle/i.test(input)) {
command = `trading_detect_patterns --pattern_type=triangle --symbol=${tradingPair} --timeframe=1h`;
} else if (/harmonic.*?pattern|gartley|butterfly/i.test(input)) {
command = `trading_detect_patterns --pattern_type=harmonic --symbol=${tradingPair} --timeframe=1h`;
} else if (/elliott.*?wave/i.test(input)) {
command = `trading_detect_patterns --pattern_type=elliott_wave --symbol=${tradingPair} --timeframe=1h`;
} else if (/candlestick/i.test(input)) {
command = `trading_detect_patterns --pattern_type=candlestick --symbol=${tradingPair} --timeframe=1h`;
} else {
command = `trading_detect_patterns --pattern_type=all --symbol=${tradingPair} --timeframe=1h`;
}
break;
case 'adaptive_learning':
// Map to adaptive learning MCP tools - pattern learning and machine learning
if (/reinforcement.*?learning|rl\b|sac|td3|maml/i.test(input)) {
const algorithm = /sac/i.test(input) ? 'sac' : /td3/i.test(input) ? 'td3' : /maml/i.test(input) ? 'maml' : 'sac';
command = `adaptive_learn_pattern --pattern_data=[{"input":[1,2,3],"output":[0.8]},{"input":[2,3,4],"output":[0.9]}] --algorithm=${algorithm} --learning_rate=0.1`;
} else {
command = `adaptive_learn_pattern --pattern_data=[{"input":[1,2,3],"output":[0.8]},{"input":[2,3,4],"output":[0.9]}] --algorithm=sac --learning_rate=0.1`;
}
break;
case 'behavior_analysis':
// Map to behavioral analysis MCP tools
const sessionId = `session_${Date.now()}`;
const analysisDepth = /detailed|deep/i.test(input) ? 'detailed' : /deep/i.test(input) ? 'deep' : 'basic';
command = `adaptive_analyze_behavior --behavior_data={"actions":["analyze","trade","check"],"risk_level":0.3} --session_id=${sessionId} --analysis_depth=${analysisDepth}`;
break;
case 'strategy_adaptation':
// Map to strategy adaptation MCP tools
const adaptationStrength = /aggressive|strong/i.test(input) ? 0.8 : /gentle|light/i.test(input) ? 0.3 : 0.5;
command = `adaptive_adapt_strategy --current_strategy={"risk_threshold":0.1,"position_size":0.02} --adaptation_strength=${adaptationStrength} --performance_data=[{"profit":0.05},{"profit":-0.02}]`;
break;
case 'constitutional_safety':
// Map to constitutional AI safety checks
const safetyLevel = /strict|high/i.test(input) ? 'strict' : /permissive|low/i.test(input) ? 'permissive' : 'moderate';
command = `adaptive_constitutional_check --proposed_change={"parameter_adjustment":"increase_risk_threshold","new_value":0.15} --safety_level=${safetyLevel}`;
break;
case 'neural_optimization':
// Map to neural architecture search and optimization
const epochs = /quick|fast/i.test(input) ? 5 : /thorough|deep/i.test(input) ? 50 : 20;
const taskType = /classification/i.test(input) ? 'classification' : /regression/i.test(input) ? 'regression' : 'optimization';
command = `adaptive_neural_search --task_type=${taskType} --epochs=${epochs} --search_space={"max_layers":5,"max_neurons":128}`;
break;
case 'n8n':
if (/create.*?workflow|generate.*?workflow|build.*?workflow/i.test(input)) {
command = `n8n_create_workflow --description="${input}"`;
} else if (/list.*?workflows|show.*?workflows/i.test(input)) {
command = `n8n_list_workflows`;
} else if (/validate.*?workflow|check.*?workflow/i.test(input)) {
command = `n8n_validate_workflow --workflow_path="${input}"`;
} else if (/deploy.*?workflow|upload.*?workflow/i.test(input)) {
command = `n8n_deploy_workflow --workflow_path="${input}"`;
} else if (/supercode|javascript.*?node/i.test(input)) {
command = `n8n_generate_supercode --description="${input}"`;
} else if (/test.*?workflow/i.test(input)) {
command = `n8n_test_workflow --workflow_path="${input}"`;
} else if (/status|health|check.*?n8n/i.test(input)) {
command = `n8n_check_status`;
} else {
command = `n8n_create_workflow --description="${input}"`;
}
break;
default:
command = input;
}
return {
command,
confidence: bestMatch.confidence,
originalInput: input,
};
}
/**
* Generate conversational response for successful command parsing
*/
export function generateParsingResponse(parsed: ParsedIntent): string {
if (parsed.confidence < 0.6) {
const helpResponses = [
"I'm not quite sure what you're looking for. Could you try asking something like 'analyze Bitcoin' or 'check ETH price'?",
"Hmm, I didn't catch that. You can ask me about crypto analysis, prices, trading, or just say 'help' to see what I can do!",
"I'm still learning! Try asking me to analyze a coin, check market sentiment, or use a slash command like /help",
'Not sure I understood that. Feel free to ask about crypto prices, market analysis, or trading strategies!',
];