UNPKG

superjolt

Version:

AI-powered deployment platform with MCP support - Deploy JavaScript apps using natural language with Claude Desktop

278 lines 13.1 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.StatusCommand = void 0; const nest_commander_1 = require("nest-commander"); const common_1 = require("@nestjs/common"); const auth_service_1 = require("../services/auth.service"); const logger_service_1 = require("../services/logger.service"); const storage_service_1 = require("../services/storage.service"); const config_service_1 = require("../services/config.service"); const chalk_1 = __importDefault(require("chalk")); const fs = __importStar(require("fs")); const path = __importStar(require("path")); const os = __importStar(require("os")); const project_1 = require("../utils/project"); const table_utils_1 = require("../utils/table.utils"); const cli_table3_1 = __importDefault(require("cli-table3")); let StatusCommand = class StatusCommand extends nest_commander_1.CommandRunner { authService; storageService; configService; logger; constructor(authService, storageService, configService, logger) { super(); this.authService = authService; this.storageService = storageService; this.configService = configService; this.logger = logger; } async run() { this.logger.log(chalk_1.default.cyan('\n━━━ Superjolt CLI Status ━━━\n')); const pkgPath = path.join(__dirname, '..', '..', 'package.json'); const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8')); this.logger.log(chalk_1.default.bold.cyan('🔧 System Information\n')); const versionTable = (0, table_utils_1.createInfoTable)(); versionTable.push([chalk_1.default.bold('CLI Version'), chalk_1.default.green(pkg.version)], [chalk_1.default.bold('Node Version'), chalk_1.default.green(process.version)], [ chalk_1.default.bold('Platform'), chalk_1.default.green(`${process.platform} ${os.release()}`), ], [chalk_1.default.bold('Architecture'), chalk_1.default.green(process.arch)]); this.logger.log(versionTable.toString()); this.logger.log(chalk_1.default.bold.cyan('\n🌐 API Configuration\n')); const apiTable = (0, table_utils_1.createInfoTable)(); const apiUrl = this.configService.getApiUrl(); const baseUrl = this.configService.getBaseUrl(); const isDefault = baseUrl === 'https://api.superjolt.com'; apiTable.push([ chalk_1.default.bold('API URL'), `${chalk_1.default.green(apiUrl)} ${isDefault ? chalk_1.default.dim('(default)') : chalk_1.default.yellow('(custom)')}`, ]); if (process.env.SUPERJOLT_API_URL) { apiTable.push([ chalk_1.default.bold('Source'), chalk_1.default.yellow('Environment variable'), ]); } this.logger.log(apiTable.toString()); this.logger.log(chalk_1.default.bold.cyan('\n🔐 Authentication\n')); const authTable = (0, table_utils_1.createInfoTable)(); const token = await this.authService.getToken(); if (token) { const maskedToken = `${token.substring(0, 8)}...${token.substring(token.length - 8)}`; authTable.push([chalk_1.default.bold('Status'), chalk_1.default.green('Authenticated')], [chalk_1.default.bold('Token'), chalk_1.default.dim(maskedToken)]); try { const keytar = require('keytar'); const keytarToken = await keytar.getPassword('superjolt-cli', 'token'); if (keytarToken) { authTable.push([ chalk_1.default.bold('Storage'), chalk_1.default.green('System Keychain (secure)'), ]); } else { authTable.push([ chalk_1.default.bold('Storage'), chalk_1.default.yellow('File (fallback)'), ]); } } catch { authTable.push([ chalk_1.default.bold('Storage'), chalk_1.default.yellow('File (keytar unavailable)'), ]); } } else { authTable.push([chalk_1.default.bold('Status'), chalk_1.default.red('Not authenticated')], [ chalk_1.default.bold('Action'), chalk_1.default.dim('Run "superjolt login" to authenticate'), ]); } this.logger.log(authTable.toString()); this.logger.log(chalk_1.default.bold.cyan('\n📁 Project Configuration\n')); const projectTable = (0, table_utils_1.createInfoTable)(); const projectConfig = (0, project_1.readSuperjoltConfig)(); if (projectConfig) { projectTable.push([chalk_1.default.bold('Service ID'), chalk_1.default.green(projectConfig.serviceId)], [chalk_1.default.bold('Config File'), chalk_1.default.dim('.superjolt')]); } else { projectTable.push([chalk_1.default.bold('Status'), chalk_1.default.dim('No project configuration found')], [ chalk_1.default.bold('Action'), chalk_1.default.dim('Run "superjolt deploy" to initialize'), ]); } this.logger.log(projectTable.toString()); this.logger.log(chalk_1.default.bold.cyan('\n💾 Local Storage\n')); const storageTable = new cli_table3_1.default({ head: [chalk_1.default.bold.cyan('Type'), chalk_1.default.bold.cyan('Description')], style: { head: [], border: [] }, chars: { top: '─', 'top-mid': '┬', 'top-left': '┌', 'top-right': '┐', bottom: '─', 'bottom-mid': '┴', 'bottom-left': '└', 'bottom-right': '┘', left: '│', 'left-mid': '├', mid: '─', 'mid-mid': '┼', right: '│', 'right-mid': '┤', middle: '│', }, }); const configDir = path.join(os.homedir(), '.config', 'superjolt'); storageTable.push([chalk_1.default.bold('Config Directory'), chalk_1.default.dim(configDir)]); const storedKeys = this.storageService.listKeys(); if (storedKeys.length > 0) { for (const key of storedKeys) { if (key === 'token') { storageTable.push(['token', chalk_1.default.dim('Authentication credentials')]); } else if (key === 'update-check') { const updateData = await this.storageService.getJson('update-check'); if (updateData) { const lastCheck = new Date(updateData.lastCheck).toLocaleString(); storageTable.push([ 'update-check', chalk_1.default.dim(`Last checked: ${lastCheck}`), ]); } else { storageTable.push([ 'update-check', chalk_1.default.dim('Update check cache'), ]); } } else { storageTable.push([key, chalk_1.default.dim('Cached data')]); } } } else { storageTable.push([chalk_1.default.dim('Empty'), chalk_1.default.dim('No stored data')]); } this.logger.log(storageTable.toString()); this.logger.log(chalk_1.default.bold.cyan('\n🔧 Environment Variables\n')); const envTable = (0, table_utils_1.createInfoTable)(); const envVars = [ 'SUPERJOLT_API_URL', 'SUPERJOLT_NO_UPDATE_CHECK', 'CI', 'CONTINUOUS_INTEGRATION', ]; let hasEnvVars = false; for (const envVar of envVars) { if (process.env[envVar]) { envTable.push([chalk_1.default.bold(envVar), chalk_1.default.green(process.env[envVar])]); hasEnvVars = true; } } if (!hasEnvVars) { envTable.push([ chalk_1.default.dim('Status'), chalk_1.default.dim('No Superjolt environment variables set'), ]); } this.logger.log(envTable.toString()); this.logger.log(chalk_1.default.bold.cyan('\n🔄 Update Settings\n')); const updateTable = (0, table_utils_1.createInfoTable)(); const updateCache = await this.storageService.getJson('update-check'); const actualCurrentVersion = pkg.version; if (updateCache) { updateTable.push([ chalk_1.default.bold('Last Check'), chalk_1.default.green(new Date(updateCache.lastCheck).toLocaleString()), ]); if (updateCache.latestVersion) { const isOutdated = updateCache.latestVersion !== actualCurrentVersion; if (isOutdated) { updateTable.push([ chalk_1.default.bold('Latest Version'), `${chalk_1.default.yellow(updateCache.latestVersion)} ${chalk_1.default.yellow('(update available)')}`, ]); } else { updateTable.push([ chalk_1.default.bold('Latest Version'), `${chalk_1.default.green(updateCache.latestVersion)} ${chalk_1.default.green('(up to date)')}`, ]); } } } else { updateTable.push([chalk_1.default.bold('Last Check'), chalk_1.default.dim('Never')]); } updateTable.push([ chalk_1.default.bold('Auto-Update'), process.env.SUPERJOLT_NO_UPDATE_CHECK ? chalk_1.default.red('Disabled') : chalk_1.default.green('Enabled'), ]); this.logger.log(updateTable.toString()); this.logger.log(chalk_1.default.cyan('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n')); } }; exports.StatusCommand = StatusCommand; exports.StatusCommand = StatusCommand = __decorate([ (0, common_1.Injectable)(), (0, nest_commander_1.Command)({ name: 'status', aliases: ['info', 'config'], description: 'Display CLI status, configuration, and stored data', }), __metadata("design:paramtypes", [auth_service_1.AuthService, storage_service_1.StorageService, config_service_1.ConfigService, logger_service_1.LoggerService]) ], StatusCommand); //# sourceMappingURL=status.command.js.map