ai-persona-hub
Version:
AI Profile CLI - Create custom AI profiles run against dynamic LLM providers
119 lines ⢠5.5 kB
JavaScript
;
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