UNPKG

agentic-qe

Version:

Agentic Quality Engineering Fleet System - AI-driven quality management platform

89 lines 3.03 kB
"use strict"; /** * Fleet Backup Command * Create complete fleet state backup */ Object.defineProperty(exports, "__esModule", { value: true }); exports.backup = void 0; const Logger_1 = require("../../../utils/Logger"); const promises_1 = require("fs/promises"); const zlib_1 = require("zlib"); const util_1 = require("util"); const gzipAsync = (0, util_1.promisify)(zlib_1.gzip); async function backup(options) { const logger = Logger_1.Logger.getInstance(); try { const status = options.fleetManager.getStatus(); const agents = options.fleetManager.getAllAgents(); const tasks = options.fleetManager.getAllTasks(); // Build backup data const agentBackups = agents.map(agent => ({ id: agent.getId(), type: agent.getType(), status: agent.getStatus(), config: agent.config || {}, metrics: agent.metrics || {} })); const taskBackups = tasks.map(task => ({ id: task.getId(), type: task.getType(), status: task.getStatus(), data: task.getData() })); // Get recent metrics from database const metricsRows = await options.database.all(` SELECT metric_type, metric_name, metric_value, timestamp FROM metrics WHERE timestamp > datetime('now', '-7 days') ORDER BY timestamp DESC LIMIT 1000 `); const metricBackups = metricsRows.map(row => ({ type: row.metric_type, name: row.metric_name, value: row.metric_value, timestamp: row.timestamp })); const backup = { version: '1.0.0', timestamp: new Date().toISOString(), config: { fleetId: status.id, status: status.status }, agents: agentBackups, tasks: taskBackups, metrics: metricBackups }; // Serialize backup let backupData = JSON.stringify(backup, null, 2); // Compress if requested let compressed = false; if (options.compress) { const buffer = await gzipAsync(Buffer.from(backupData)); backupData = buffer.toString('base64'); compressed = true; } // Write to file await (0, promises_1.writeFile)(options.output, backupData, 'utf-8'); logger.info(`Fleet backup created: ${options.output} (${compressed ? 'compressed' : 'uncompressed'})`); return { success: true, backupPath: options.output, compressed, backup }; } catch (error) { logger.error('Failed to create backup:', error); return { success: false, backupPath: options.output, compressed: false, backup: {}, error: error instanceof Error ? error.message : String(error) }; } } exports.backup = backup; //# sourceMappingURL=backup.js.map