@juspay/neurolink
Version:
Universal AI Development Platform with working MCP integration, multi-provider support, and professional CLI. Built-in tools operational, 58+ external MCP servers discoverable. Connect to filesystem, GitHub, database operations, and more. Build, test, and
83 lines (82 loc) โข 3.2 kB
JavaScript
/**
* Complete Setup Integration for NeuroLink CLI
*
* Orchestrates the entire setup process: interactive wizard, environment management,
* provider testing, and summary display.
*/
import { runInteractiveSetup, testProviderConnectivity, displaySetupSummary, } from "./interactiveSetup.js";
import { updateEnvFile, displayEnvUpdateSummary } from "./envManager.js";
import chalk from "chalk";
import { logger } from "../../lib/utils/logger.js";
/**
* Run the complete interactive setup process
*/
export async function runCompleteSetup(quiet = false) {
try {
// Step 1: Run interactive setup wizard
if (!quiet) {
logger.always(chalk.blue("๐ Starting NeuroLink Configuration Setup...\n"));
}
const setupResult = await runInteractiveSetup(quiet);
// If no providers selected, exit early
if (setupResult.selectedProviders.length === 0) {
if (!quiet) {
logger.always(chalk.yellow("โ ๏ธ No providers selected. Setup cancelled."));
}
return setupResult;
}
// Step 2: Update environment file with credentials
if (Object.keys(setupResult.credentials).length > 0) {
if (!quiet) {
logger.always(chalk.blue("\n๐พ Updating environment configuration...\n"));
}
try {
const envResult = updateEnvFile(setupResult.credentials, ".env", true);
setupResult.envFileBackup = envResult.backup.backupPath;
if (!quiet) {
displayEnvUpdateSummary(envResult, false);
}
// Update process.env for immediate testing
for (const [key, value] of Object.entries(setupResult.credentials)) {
process.env[key] = value;
}
}
catch (error) {
if (!quiet) {
logger.error(chalk.red(`โ Failed to update environment file: ${error instanceof Error ? error.message : String(error)}`));
}
throw error;
}
}
// Step 3: Test provider connectivity
if (!quiet) {
logger.always(chalk.blue("\n๐งช Testing configured providers...\n"));
}
setupResult.testResults = await testProviderConnectivity(setupResult.selectedProviders, quiet);
// Step 4: Display summary
displaySetupSummary(setupResult, quiet);
return setupResult;
}
catch (error) {
if (!quiet) {
logger.error(chalk.red(`โ Setup failed: ${error instanceof Error ? error.message : String(error)}`));
logger.always(chalk.yellow("๐ก You can retry setup with: neurolink config setup"));
}
throw error;
}
}
/**
* Wrapper for config setup command
*/
export async function configSetup(quiet = false) {
await runCompleteSetup(quiet);
}
/**
* Wrapper for config init command (alias for setup)
*/
export async function configInit(quiet = false) {
if (!quiet) {
logger.always(chalk.gray("๐ config init is an alias for config setup\n"));
}
await runCompleteSetup(quiet);
}