UNPKG

@wityai/root2-cli

Version:

Command-line interface for Root2 vector memory layer

156 lines • 7.06 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.configCommand = configCommand; const chalk_1 = __importDefault(require("chalk")); const inquirer_1 = __importDefault(require("inquirer")); const config_1 = require("../utils/config"); const formatting_1 = require("../utils/formatting"); const spinner_1 = require("../utils/spinner"); function configCommand(program) { const configCmd = program .command("config") .description("Manage Root2 CLI configuration"); configCmd .command("set") .description("Update specific configuration values") .option("--client-id <id>", "Root2 Client ID") .option("--api-key <key>", "Root2 API Key") .option("--api-host <host>", "API host URL") .option("--verbose <boolean>", "Enable verbose logging (true/false)") .option("--output-format <format>", "Default output format (json|table|text)") .action(async (options) => { try { const configManager = (0, config_1.getConfigManager)(); const config = {}; if (options.clientId) config.clientId = options.clientId; if (options.apiKey) config.apiKey = options.apiKey; if (options.apiHost) config.apiHost = options.apiHost; if (options.verbose !== undefined) config.verbose = options.verbose === "true"; if (options.outputFormat) config.outputFormat = options.outputFormat; if (Object.keys(config).length === 0) { console.log(formatting_1.format.warning("No configuration options provided.")); console.log(formatting_1.format.info("Available options: --client-id, --api-key, --api-host, --verbose, --output-format")); console.log(formatting_1.format.info("For initial setup, use: root2 init")); return; } spinner_1.spinner.start("Updating configuration..."); await configManager.saveConfig(config); spinner_1.spinner.succeed("Configuration updated successfully"); console.log(formatting_1.format.info("Updated configuration:")); Object.entries(config).forEach(([key, value]) => { if (key === "apiKey") { console.log(` ${key}: ${"*".repeat(20)}`); } else { console.log(` ${key}: ${value}`); } }); } catch (error) { spinner_1.spinner.fail("Failed to update configuration"); console.error(formatting_1.format.error(error instanceof Error ? error.message : "Unknown error")); process.exit(1); } }); configCmd .command("get") .description("Display current configuration") .option("--key <key>", "Get specific configuration key") .option("--show-secrets", "Show API key (otherwise masked)") .action(async (options) => { try { const configManager = (0, config_1.getConfigManager)(); const config = await configManager.loadConfig(); if (options.key) { const value = config[options.key]; if (value === undefined) { console.log(formatting_1.format.warning(`Configuration key '${options.key}' not found`)); } else { if (options.key === "apiKey" && !options.showSecrets) { console.log("*".repeat(20)); } else { console.log(value); } } return; } console.log(chalk_1.default.cyan("\nšŸ“‹ Current Configuration:")); console.log(chalk_1.default.gray("─".repeat(40))); if (Object.keys(config).length === 0) { console.log(formatting_1.format.warning('No configuration found. Run "root2 config set --interactive" to get started.')); return; } const configEntries = Object.entries(config); configEntries.forEach(([key, value]) => { if (value !== undefined) { let displayValue = value; if (key === "apiKey" && !options.showSecrets) { displayValue = "*".repeat(20); } console.log(` ${chalk_1.default.blue(key.padEnd(12))}: ${displayValue}`); } }); const isComplete = !!(config.clientId && config.apiKey); console.log(chalk_1.default.gray("─".repeat(40))); console.log(` ${chalk_1.default.blue("Status".padEnd(12))}: ${isComplete ? chalk_1.default.green("āœ… Complete") : chalk_1.default.yellow("āš ļø Incomplete")}`); if (!isComplete) { console.log(formatting_1.format.warning('\nMissing required configuration. Run "root2 init" to complete setup.')); } } catch (error) { console.error(formatting_1.format.error(error instanceof Error ? error.message : "Unknown error")); process.exit(1); } }); configCmd .command("clear") .description("Clear all configuration") .option("--force", "Skip confirmation prompt") .action(async (options) => { try { if (!options.force) { const { confirm } = await inquirer_1.default.prompt([ { type: "confirm", name: "confirm", message: "Are you sure you want to clear all configuration?", default: false, }, ]); if (!confirm) { console.log(formatting_1.format.info("Configuration clear cancelled.")); return; } } const configManager = (0, config_1.getConfigManager)(); spinner_1.spinner.start("Clearing configuration..."); await configManager.clearConfig(); spinner_1.spinner.succeed("Configuration cleared successfully"); } catch (error) { spinner_1.spinner.fail("Failed to clear configuration"); console.error(formatting_1.format.error(error instanceof Error ? error.message : "Unknown error")); process.exit(1); } }); configCmd .command("path") .description("Show configuration file path") .action(() => { const configManager = (0, config_1.getConfigManager)(); console.log(formatting_1.format.filePath(configManager.getConfigPath())); }); } //# sourceMappingURL=config.js.map