@hivetechs/hive-ai
Version:
Real-time streaming AI consensus platform with HTTP+SSE MCP integration for Claude Code, VS Code, Cursor, and Windsurf - powered by OpenRouter's unified API
145 lines • 7.83 kB
JavaScript
/**
* Intelligent Setup Wizard
*
* Integrates question analysis with Expert Profile Template recommendations
* Provides smart guidance based on user needs and budget constraints
*/
import { z } from "zod";
export const IntelligentSetupSchema = z.object({
user_question: z.string().optional().describe('Sample question to analyze for recommendations'),
budget_preference: z.enum(['low', 'medium', 'high', 'unlimited']).optional().describe('Budget preference'),
use_case: z.enum(['coding', 'research', 'creative', 'business', 'general']).optional().describe('Primary use case'),
experience_level: z.enum(['beginner', 'intermediate', 'expert']).optional().describe('User experience level')
});
export async function runIntelligentSetup(args) {
const { user_question, budget_preference, use_case, experience_level } = args;
try {
const { getConfig, setConfig } = await import('../../storage/unified-database.js');
const { EXPERT_TEMPLATES, filterTemplates } = await import('./expert-profile-templates.js');
let result = `🧙♂️ **Intelligent Setup Wizard**\n\n`;
// Step 1: Basic question analysis if provided
let questionCategory = 'general';
if (user_question) {
const question = user_question.toLowerCase();
if (question.includes('code') || question.includes('programming') || question.includes('react') || question.includes('javascript')) {
questionCategory = 'coding';
}
else if (question.includes('research') || question.includes('analyze') || question.includes('study')) {
questionCategory = 'research';
}
else if (question.includes('creative') || question.includes('write') || question.includes('content')) {
questionCategory = 'creative';
}
else if (question.includes('business') || question.includes('strategy') || question.includes('plan')) {
questionCategory = 'business';
}
result += `🔍 **Question Analysis:**\n`;
result += `• Question: "${user_question}"\n`;
result += `• Detected Category: ${questionCategory}\n`;
result += `• Use Case: ${use_case || questionCategory}\n\n`;
}
// Step 2: Budget configuration
let budgetGuidance = '';
if (budget_preference) {
const budgetLimits = {
low: 0.005, // $0.005 per consensus
medium: 0.015, // $0.015 per consensus
high: 0.030, // $0.030 per consensus
unlimited: null // No limit
};
const budgetLimit = budgetLimits[budget_preference];
if (budgetLimit) {
await setConfig('consensus_budget_limit', budgetLimit.toString());
budgetGuidance = `💰 **Budget Configuration:**\n`;
budgetGuidance += `• Limit set to $${budgetLimit.toFixed(3)} per consensus\n`;
budgetGuidance += `• Dynamic mode will optimize for cost efficiency\n\n`;
}
}
// Step 3: Template recommendations based on use case
const effectiveUseCase = use_case || questionCategory;
let recommendedTemplates = [];
if (effectiveUseCase === 'coding') {
recommendedTemplates = ['expert-coding', 'complex-coding', 'coding-architecture'];
}
else if (effectiveUseCase === 'research') {
recommendedTemplates = ['expert-research', 'research-deep-dive'];
}
else if (effectiveUseCase === 'creative') {
recommendedTemplates = ['creative-innovator', 'expert-creative'];
}
else if (effectiveUseCase === 'business') {
recommendedTemplates = ['enterprise-grade', 'expert-research'];
}
else {
recommendedTemplates = ['expert-coding', 'expert-research', 'expert-fast'];
}
result += budgetGuidance;
result += `🎯 **Recommended Expert Templates:**\n\n`;
// Find matching templates from available ones
const availableTemplates = EXPERT_TEMPLATES.filter(t => recommendedTemplates.some(rec => t.id.includes(rec.replace('expert-', '').replace('-', '_'))));
if (availableTemplates.length > 0) {
availableTemplates.slice(0, 3).forEach((template, index) => {
result += `**${index + 1}. ${template.name}**\n`;
result += ` • ${template.description}\n`;
result += ` • Use case: ${template.useCase}\n`;
result += ` • ID: \`${template.id}\`\n\n`;
});
}
else {
result += `**Top General Recommendations:**\n`;
EXPERT_TEMPLATES.slice(0, 3).forEach((template, index) => {
result += `**${index + 1}. ${template.name}**\n`;
result += ` • ${template.description}\n`;
result += ` • ID: \`${template.id}\`\n\n`;
});
}
// Step 4: Mode recommendation
result += `🤖 **Mode Recommendation:**\n`;
if (experience_level === 'beginner') {
await setConfig('consensus_mode', 'auto');
result += `• **AUTO mode** enabled - perfect for beginners\n`;
result += `• System automatically selects optimal models based on question complexity\n`;
result += `• No need to manage profiles manually\n\n`;
}
else if (experience_level === 'expert') {
result += `• Consider **MANUAL mode** for full control\n`;
result += `• You can fine-tune profiles for specific use cases\n`;
result += `• Switch anytime with \`hive mode manual\`\n\n`;
}
else {
await setConfig('consensus_mode', 'auto');
result += `• **AUTO mode** recommended - best of both worlds\n`;
result += `• Intelligent model selection with manual override options\n`;
result += `• Use \`--manual\` flag when you want specific control\n\n`;
}
// Step 5: Next steps
result += `📋 **Next Steps:**\n`;
if (availableTemplates.length > 0) {
const topTemplate = availableTemplates[0];
result += `1. Create your first profile:\n`;
result += ` \`hive templates apply ${topTemplate.id} MyProfile\`\n\n`;
}
result += `2. Test the system:\n`;
result += ` \`hive consensus "${user_question || 'How do I get started with programming?'}"\`\n\n`;
result += `3. Monitor costs:\n`;
result += ` \`hive cost estimate "your next question"\`\n\n`;
result += `4. Adjust settings:\n`;
result += ` \`hive mode auto|manual\` - Switch between modes\n`;
result += ` \`hive cost settings [amount]\` - Update budget limits\n\n`;
result += `💡 **Pro Tips:**\n`;
result += `• Use \`hive help getting-started\` for detailed guidance\n`;
result += `• The system learns from your usage patterns over time\n`;
result += `• AUTO mode gets smarter as you use different types of questions\n`;
result += `• Budget limits help control costs while maintaining quality\n`;
return { result };
}
catch (error) {
return {
result: `❌ Error running intelligent setup: ${error instanceof Error ? error.message : 'Unknown error'}`
};
}
}
// Tool exports
export const intelligentSetupToolName = 'hive_intelligent_setup';
export const intelligentSetupToolDescription = 'Smart setup wizard that analyzes your needs and recommends optimal Expert Profile Templates, budget settings, and mode configuration';
//# sourceMappingURL=intelligent-setup-wizard.js.map