UNPKG

@wityai/root2-cli

Version:

Command-line interface for Root2 vector memory layer

196 lines • 8.97 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.program = void 0; const commander_1 = require("commander"); const chalk_1 = __importDefault(require("chalk")); const init_1 = require("./commands/init"); const config_1 = require("./commands/config"); const query_1 = require("./commands/query"); const import_file_1 = require("./commands/import-file"); const import_dir_1 = require("./commands/import-dir"); const import_web_1 = require("./commands/import-web"); const memory_blocks_1 = require("./commands/memory-blocks"); const config_2 = require("./utils/config"); const formatting_1 = require("./utils/formatting"); const program = new commander_1.Command(); exports.program = program; program .name("root2") .description("CLI for Root2 AI knowledge base") .version("1.0.0") .helpOption("-h, --help", "Display help for command"); program .option("--verbose", "Enable verbose logging") .option("--config-path <path>", "Path to config file"); (0, init_1.initCommand)(program); (0, config_1.configCommand)(program); (0, query_1.queryCommand)(program); (0, memory_blocks_1.memoryBlocksCommand)(program); (0, import_file_1.importFileCommand)(program); (0, import_dir_1.importDirCommand)(program); (0, import_web_1.importWebCommand)(program); program .command("help") .description("Display help information") .argument("[command]", "Command to show help for") .action((command) => { if (command) { program.outputHelp(); } else { showMainHelp(); } }); program .command("status") .description("Show configuration and system status") .action(async () => { try { console.log(chalk_1.default.cyan("\nšŸš€ Root2 CLI Status\n")); const configured = await (0, config_2.isConfigured)(); console.log(`Configuration: ${configured ? chalk_1.default.green("āœ… Complete") : chalk_1.default.yellow("āš ļø Incomplete")}`); if (!configured) { console.log(formatting_1.format.warning("\nTo get started, run: root2 init")); console.log(formatting_1.format.info("Get your API credentials at: https://account.wity.ai/api-clients")); } else { console.log(formatting_1.format.success("\n✨ Ready to use! Try:")); console.log(' • root2 query "your question here"'); console.log(" • root2 import-file ./document.pdf"); console.log(" • root2 import-dir ./my-docs --recursive"); console.log(" • root2 import-web https://example.com"); } } catch (error) { console.error(formatting_1.format.error(error instanceof Error ? error.message : "Unknown error")); process.exit(1); } }); program .command("version") .description("Show version information") .action(() => { console.log(chalk_1.default.cyan("\nšŸš€ Root2 CLI")); console.log(`Version: ${chalk_1.default.green("1.0.0")}`); console.log(`Node.js: ${chalk_1.default.green(process.version)}`); console.log(`Platform: ${chalk_1.default.green(process.platform)}`); console.log(`Architecture: ${chalk_1.default.green(process.arch)}`); console.log(chalk_1.default.gray("\nFor support, visit: https://root2.ai/support")); }); program.on("command:*", (args) => { console.error(formatting_1.format.error(`Unknown command: ${args[0]}`)); console.log('\nRun "root2 help" to see available commands.'); process.exit(1); }); function showMainHelp() { console.log(chalk_1.default.cyan("\nšŸš€ Root2 CLI - AI Knowledge Base Management\n")); console.log(chalk_1.default.bold("USAGE")); console.log(" root2 [command] [options]\n"); console.log(chalk_1.default.bold("QUICK START")); console.log(" 1. Set up your API credentials:"); console.log(chalk_1.default.gray(" root2 init\n")); console.log(" 2. Import some content:"); console.log(chalk_1.default.gray(" root2 import-file ./document.pdf")); console.log(chalk_1.default.gray(" root2 import-dir ./docs --recursive")); console.log(chalk_1.default.gray(" root2 import-web https://example.com\n")); console.log(" 3. Query your knowledge base:"); console.log(chalk_1.default.gray(' root2 query "What is the main topic?"\n')); console.log(chalk_1.default.bold("COMMANDS")); console.log(chalk_1.default.cyan(" Setup & Management:")); console.log(" init Initialize Root2 CLI with API credentials"); console.log(" config get Display current configuration"); console.log(" config set Update specific configuration values"); console.log(" config clear Clear all configuration"); console.log(" list-memory-blocks List available memory blocks"); console.log(" status Show system status\n"); console.log(chalk_1.default.cyan(" Import Content:")); console.log(" import-file Import a single file"); console.log(" import-dir Import a directory and its contents"); console.log(" import-web Import a webpage\n"); console.log(chalk_1.default.cyan(" Query Knowledge:")); console.log(" query Search your knowledge base"); console.log(" ask Start interactive query session\n"); console.log(chalk_1.default.cyan(" Utility:")); console.log(" help Show this help message"); console.log(" version Show version information\n"); console.log(chalk_1.default.bold("GLOBAL OPTIONS")); console.log(" --verbose Enable verbose logging"); console.log(" --config-path Specify config file path"); console.log(" -h, --help Show help for command\n"); console.log(chalk_1.default.bold("EXAMPLES")); console.log(chalk_1.default.gray(" # Initialize CLI")); console.log(chalk_1.default.gray(" root2 init\n")); console.log(chalk_1.default.gray(" # Import various content types")); console.log(chalk_1.default.gray(' root2 import-file presentation.pdf --metadata \'{"type":"presentation"}\'')); console.log(chalk_1.default.gray(' root2 import-dir ./research --recursive --include "*.{pdf,md}"')); console.log(chalk_1.default.gray(" root2 import-web https://docs.example.com --include-links\n")); console.log(chalk_1.default.gray(" # Query with different formats")); console.log(chalk_1.default.gray(' root2 query "summarize the main findings" --output table')); console.log(chalk_1.default.gray(' root2 query "list all projects" --format structured --max-results 20\n')); console.log(chalk_1.default.bold("GETTING API CREDENTIALS")); console.log(chalk_1.default.gray(" Visit: https://account.wity.ai/api-clients")); console.log(chalk_1.default.gray(" Create a new client to get your Client ID and API Key\n")); console.log(chalk_1.default.bold("LEARN MORE")); console.log(chalk_1.default.gray(" Documentation: https://root2.ai/docs")); console.log(chalk_1.default.gray(" Support: https://root2.ai/support")); console.log(chalk_1.default.gray(" API Reference: https://api.wity.ai/docs\n")); } process.on("uncaughtException", (error) => { console.error(formatting_1.format.error("\nUncaught Exception:")); console.error(error.stack || error.message); process.exit(1); }); process.on("unhandledRejection", (reason, promise) => { console.error(formatting_1.format.error("\nUnhandled Rejection:")); console.error(reason); process.exit(1); }); process.on("SIGINT", () => { console.log(formatting_1.format.info("\n\nšŸ‘‹ Goodbye!")); process.exit(0); }); async function checkConfigurationOnStartup() { const args = process.argv.slice(2); const command = args[0]; const skipConfigCommands = [ "config", "help", "version", "status", "--help", "-h", ]; if (!command || skipConfigCommands.includes(command)) { return; } try { const configured = await (0, config_2.isConfigured)(); if (!configured) { console.log(formatting_1.format.warning("āš ļø Root2 CLI is not configured yet.")); console.log(formatting_1.format.info('Run "root2 init" to get started.')); console.log(formatting_1.format.info("Get your API credentials at: https://account.wity.ai/api-clients\n")); } } catch (error) { } } async function main() { try { await checkConfigurationOnStartup(); await program.parseAsync(); } catch (error) { console.error(formatting_1.format.error(error instanceof Error ? error.message : "Unknown error")); process.exit(1); } } if (require.main === module) { main(); } //# sourceMappingURL=index.js.map