@wityai/root2-cli
Version:
Command-line interface for Root2 vector memory layer
196 lines ⢠8.97 kB
JavaScript
;
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