@nestbox-ai/cli
Version:
The cli tools that helps developers to build agents
125 lines • 4.32 kB
JavaScript
;
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