UNPKG

ai-persona-hub

Version:

AI Profile CLI - Create custom AI profiles run against dynamic LLM providers

119 lines • 5.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.modelCommand = modelCommand; exports.modelListCommand = modelListCommand; const inquirer_1 = __importDefault(require("inquirer")); const chalk_1 = __importDefault(require("chalk")); const config_1 = require("../utils/config"); const types_1 = require("../types"); async function modelCommand() { const configManager = new config_1.ConfigManager(); const availableProviders = configManager.getAvailableProviders(); if (availableProviders.length === 0) { console.error(chalk_1.default.red('āŒ No AI providers configured')); console.log(chalk_1.default.gray('Please set up API keys for at least one provider:')); console.log(chalk_1.default.gray('- OpenAI: OPENAI_API_KEY')); console.log(chalk_1.default.gray('- Anthropic: ANTHROPIC_API_KEY')); console.log(chalk_1.default.gray('- Google: GOOGLE_GENERATIVE_AI_API_KEY')); process.exit(1); } console.log(chalk_1.default.blue('šŸ¤– Configure AI model settings\n')); // Show current settings const currentProvider = configManager.getCurrentProvider(); const currentModel = configManager.getCurrentModel(); if (currentProvider && currentModel) { console.log(chalk_1.default.gray(`Current: ${currentProvider} - ${currentModel}`)); console.log(); } // Get provider const provider = await inquirer_1.default.prompt([ { type: 'list', name: 'value', message: 'Select AI provider:', choices: availableProviders.map(p => ({ name: p === 'openai' ? 'OpenAI' : p === 'anthropic' ? 'Anthropic (Claude)' : 'Google (Gemini)', value: p, })), default: currentProvider, }, ]); // Get model based on selected provider const selectedProvider = provider.value; const availableModels = types_1.PROVIDER_MODELS[selectedProvider]; if (!availableModels || availableModels.length === 0) { console.error(chalk_1.default.red(`No models available for provider: ${selectedProvider}`)); process.exit(1); } const model = await inquirer_1.default.prompt([ { type: 'list', name: 'value', message: 'Select model:', choices: availableModels, default: currentModel && availableModels && availableModels.includes(currentModel) ? currentModel : availableModels && availableModels[0], }, ]); try { configManager.setCurrentProviderAndModel(provider.value, model.value); console.log(chalk_1.default.green('\nāœ… Model configuration updated!')); console.log(chalk_1.default.gray(`Provider: ${provider.value}`)); console.log(chalk_1.default.gray(`Model: ${model.value}`)); console.log(chalk_1.default.gray('\nYou can now chat with any profile using this model.')); } catch (error) { console.error(chalk_1.default.red('\nāŒ Error updating model configuration:')); console.error(chalk_1.default.red(error instanceof Error ? error.message : 'Unknown error')); process.exit(1); } } async function modelListCommand() { const configManager = new config_1.ConfigManager(); const availableProviders = configManager.getAvailableProviders(); const currentProvider = configManager.getCurrentProvider(); const currentModel = configManager.getCurrentModel(); console.log(chalk_1.default.blue('šŸ¤– Available AI models\n')); if (currentProvider && currentModel) { console.log(chalk_1.default.green(`āœ“ Current: ${currentProvider} - ${currentModel}\n`)); } else { console.log(chalk_1.default.yellow('āš ļø No model configured. Use "cgem model" to set one.\n')); } if (availableProviders.length === 0) { console.error(chalk_1.default.red('āŒ No AI providers configured')); console.log(chalk_1.default.gray('Please set up API keys for at least one provider:')); console.log(chalk_1.default.gray('- OpenAI: OPENAI_API_KEY')); console.log(chalk_1.default.gray('- Anthropic: ANTHROPIC_API_KEY')); console.log(chalk_1.default.gray('- Google: GOOGLE_GENERATIVE_AI_API_KEY')); return; } console.log(chalk_1.default.blue('Available providers and models:\n')); availableProviders.forEach(provider => { const providerName = provider === 'openai' ? 'OpenAI' : provider === 'anthropic' ? 'Anthropic (Claude)' : 'Google (Gemini)'; console.log(chalk_1.default.white(`• ${providerName}:`)); types_1.PROVIDER_MODELS[provider].forEach(model => { const isCurrent = provider === currentProvider && model === currentModel; const marker = isCurrent ? chalk_1.default.green(' āœ“ ') : ' '; const color = isCurrent ? chalk_1.default.green : chalk_1.default.gray; console.log(`${marker}${color(model)}`); }); console.log(); }); console.log(chalk_1.default.gray('Use "cgem model" to change your model selection.')); } //# sourceMappingURL=model.js.map