import { BaseCommand } from '../../base/BaseCommand.js';
import { CommandResult, CommandContext } from '../../../core/interfaces/ICommand.js';
import { SecurityService } from '../../../core/services/security/SecurityService.js';
const SecurityAuditArgsSchema = {
type: 'object',
properties: {
// TODO: Add properties from Zod schema
}
};
export class SecurityAuditCommand extends BaseCommand {
readonly name = 'security_audit';
readonly description = 'Perform a comprehensive security audit on a directory';
readonly inputSchema = {
type: 'object',
properties: {},
additionalProperties: false
};
protected validateArgs(args: Record<string, any>): void {
// No required fields to validate
}
protected async executeCommand(context: CommandContext): Promise<CommandResult> {
try {
const securityService = context.container.getService<SecurityService>('securityService');
const report = await securityService.performSecurityAudit(
context.args.directory,
{
recursive: context.args.includeSubdirectories,
checkPermissions: context.args.checkPermissions,
checkSecrets: context.args.checkSecrets,
checkVulnerabilities: context.args.checkVulnerabilities
}
);
return {
content: [{
type: 'text',
text: JSON.stringify({
summary: {
totalFiles: report.totalFiles,
issues: report.issues.length,
critical: report.issues.filter(i => i.severity === 'critical').length,
high: report.issues.filter(i => i.severity === 'high').length,
medium: report.issues.filter(i => i.severity === 'medium').length,
low: report.issues.filter(i => i.severity === 'low').length
},
issues: report.issues,
recommendations: report.recommendations
}, null, 2)
}]
};
} catch (error) {
return {
content: [{
type: 'text',
text: `Failed to perform security audit: ${error instanceof Error ? error.message : String(error)}`
}]
};
}
}
}