vaultace-cli
Version:
AI-powered security scanner that detects vulnerabilities in AI-generated code. Proactive scanning, autonomous fixing, and emergency response for modern development teams.
172 lines (143 loc) ⢠6.06 kB
JavaScript
/**
* Server Command - Local development server for testing backend integration
*/
const { Command } = require('commander')
const chalk = require('chalk')
const ora = require('ora')
const { getAPIClient } = require('../services/api-client')
const logger = require('../utils/logger')
const serverCommand = new Command('server')
.description('đ Local development and testing utilities')
// Test connection to your FastAPI backend
serverCommand
.command('test')
.description('Test connection to Vaultace API')
.option('--api-url <url>', 'API endpoint to test', 'https://api.vaultace.co')
.action(async (options) => {
const spinner = ora('Testing connection to Vaultace API...').start()
try {
const apiClient = getAPIClient({ baseURL: options.apiUrl })
// Test health endpoint
const healthResult = await apiClient.healthCheck()
if (healthResult.success) {
spinner.succeed('API connection successful')
console.log(chalk.green('\nâ
Vaultace API Health Check'))
console.log(`Endpoint: ${options.apiUrl}`)
console.log(`Status: ${healthResult.data.status}`)
if (healthResult.data.version) {
console.log(`Version: ${healthResult.data.version}`)
}
if (healthResult.data.timestamp) {
console.log(`Server Time: ${healthResult.data.timestamp}`)
}
} else {
spinner.fail('API connection failed')
console.error(chalk.red(`\nâ Connection Error: ${healthResult.error}`))
process.exit(1)
}
} catch (error) {
spinner.fail('API connection failed')
logger.error('API test error:', error)
console.error(chalk.red(`\nError: ${error.message}`))
process.exit(1)
}
})
// Test authentication flow
serverCommand
.command('auth-test')
.description('Test authentication flow')
.option('--api-url <url>', 'API endpoint to test')
.action(async (options) => {
const spinner = ora('Testing authentication flow...').start()
try {
const apiClient = getAPIClient(options.apiUrl ? { baseURL: options.apiUrl } : {})
// Check if already authenticated
if (apiClient.isAuthenticated()) {
spinner.succeed('Already authenticated')
// Test authenticated endpoint
const userResult = await apiClient.getCurrentUser()
if (userResult.success) {
console.log(chalk.green('\nâ
Authentication Valid'))
console.log(`User: ${userResult.user.email}`)
console.log(`Role: ${userResult.user.role}`)
} else {
console.log(chalk.yellow('\nâ ď¸ Authentication token invalid'))
console.log('Please login again with: vaultace auth login')
}
} else {
spinner.succeed('No active authentication')
console.log(chalk.yellow('\nâ ď¸ Not authenticated'))
console.log('Login with: vaultace auth login')
}
} catch (error) {
spinner.fail('Authentication test failed')
logger.error('Auth test error:', error)
console.error(chalk.red(`\nError: ${error.message}`))
process.exit(1)
}
})
// Test AI intelligence endpoints
serverCommand
.command('intelligence-test')
.description('Test AI intelligence endpoints')
.option('--api-url <url>', 'API endpoint to test')
.action(async (options) => {
const spinner = ora('Testing AI intelligence endpoints...').start()
try {
const apiClient = getAPIClient(options.apiUrl ? { baseURL: options.apiUrl } : {})
if (!apiClient.isAuthenticated()) {
spinner.fail('Authentication required')
console.log(chalk.yellow('Please login first: vaultace auth login'))
process.exit(1)
}
// Test vulnerability analysis
const testVulnData = {
vulnerability_id: 'test-vuln-001',
threat_category: 'vibe_coding',
severity: 'medium',
context: 'Testing AI intelligence integration'
}
const analysisResult = await apiClient.analyzeVulnerability(testVulnData)
if (analysisResult.success) {
spinner.succeed('AI intelligence endpoints working')
console.log(chalk.green('\nâ
AI Intelligence Test Successful'))
console.log('Risk assessment capabilities are operational')
} else {
spinner.warn('AI intelligence endpoints not fully operational')
console.log(chalk.yellow('\nâ ď¸ Some intelligence features may not be available'))
console.log(`Details: ${analysisResult.error}`)
}
} catch (error) {
spinner.fail('Intelligence test failed')
logger.error('Intelligence test error:', error)
console.error(chalk.red(`\nError: ${error.message}`))
}
})
// Development info
serverCommand
.command('info')
.description('Show development environment info')
.action(async () => {
console.log(chalk.bold.cyan('\nđ§ Vaultace Development Environment\n'))
const apiClient = getAPIClient()
const config = apiClient.config
console.log('CLI Configuration:')
console.log(` API Endpoint: ${apiClient.baseURL}`)
console.log(` Config Path: ${config.path}`)
console.log(` Authenticated: ${apiClient.isAuthenticated() ? 'â
' : 'â'}`)
if (apiClient.isAuthenticated()) {
const authData = config.get('auth')
console.log(` User: ${authData.user?.email || 'Unknown'}`)
console.log(` Login Time: ${authData.loginTime || 'Unknown'}`)
}
console.log('\nBackend Integration:')
console.log(' FastAPI Backend: AWS Lambda')
console.log(' Database: PostgreSQL + Redis')
console.log(' AI Models: GPT-4, Claude, Custom Risk Models')
console.log(' Security Features: FAIR Risk Engine, GBM Simulation')
console.log(chalk.blue('\nQuick Commands:'))
console.log(' vaultace server test # Test API connection')
console.log(' vaultace intelligence vibe-coding # Test AI risk assessment')
console.log(' vaultace scan --remote # Test full integration')
})
module.exports = serverCommand