UNPKG

@nestbox-ai/cli

Version:

The cli tools that helps developers to build agents

125 lines 4.32 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAuthToken = getAuthToken; exports.listCredentials = listCredentials; exports.removeCredentials = removeCredentials; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const os_1 = __importDefault(require("os")); // Config path const CONFIG_DIR = path_1.default.join(os_1.default.homedir(), '.config', '.nestbox'); // Ensure config directory exists if (!fs_1.default.existsSync(CONFIG_DIR)) { fs_1.default.mkdirSync(CONFIG_DIR, { recursive: true }); } /** * Get authentication token for a specific domain */ function getAuthToken(domain) { try { const files = fs_1.default.readdirSync(CONFIG_DIR); if (!domain) { // If no domain is provided, return the first token found const tokenFiles = files.filter(file => file.endsWith('.json')); if (tokenFiles.length === 0) { return null; } const configData = JSON.parse(fs_1.default.readFileSync(path_1.default.join(CONFIG_DIR, tokenFiles[0])).toString()); return { token: configData.token, serverUrl: configData.apiServerUrl, accessToken: configData.accessToken, }; } const domainFiles = files.filter(file => file.endsWith(`_${domain}.json`)); if (domainFiles.length === 0) { return null; } // If multiple accounts, sort by last used and take the most recent let configData; if (domainFiles.length > 1) { const allConfigs = domainFiles.map(file => { const data = JSON.parse(fs_1.default.readFileSync(path_1.default.join(CONFIG_DIR, file)).toString()); return { file, data, }; }); // Sort by last used, most recent first configData = allConfigs[0].data; } else { // Just one file const configFile = domainFiles[0]; configData = JSON.parse(fs_1.default.readFileSync(path_1.default.join(CONFIG_DIR, configFile)).toString()); } return { token: configData.token, serverUrl: configData.apiServerUrl, accessToken: configData.accessToken, }; } catch (error) { console.error('Error getting auth token:', error); return null; } } /** * List all saved credentials */ function listCredentials() { try { const files = fs_1.default.readdirSync(CONFIG_DIR); return files.map(file => { try { const data = JSON.parse(fs_1.default.readFileSync(path_1.default.join(CONFIG_DIR, file)).toString()); return { domain: data.domain, email: data.email, name: data.name, }; } catch (error) { // Skip invalid files return null; } }).filter(Boolean); } catch (error) { console.error('Error listing credentials:', error); return []; } } /** * Remove credentials for a domain/email combination */ function removeCredentials(domain, email) { try { const files = fs_1.default.readdirSync(CONFIG_DIR); let domainFiles; if (email) { // Remove specific email for domain const emailFile = email.replace('@', '_at_'); domainFiles = files.filter(file => file === `${emailFile}_${domain}.json`); } else { // Remove all for domain domainFiles = files.filter(file => file.endsWith(`_${domain}.json`)); } if (domainFiles.length === 0) { return false; } domainFiles.forEach(file => { fs_1.default.unlinkSync(path_1.default.join(CONFIG_DIR, file)); }); return true; } catch (error) { console.error('Error removing credentials:', error); return false; } } //# sourceMappingURL=auth.js.map