@dollhousemcp/mcp-server
Version:
DollhouseMCP - A Model Context Protocol (MCP) server that enables dynamic AI persona management from markdown files, allowing Claude and other compatible AI assistants to activate and switch between different behavioral personas.
79 lines âĸ 12.6 kB
JavaScript
/**
* Markdown Reporter - Generates markdown reports for GitHub
* Placeholder implementation - to be completed
*/
export class MarkdownReporter {
result;
constructor(result) {
this.result = result;
}
generate() {
const lines = [];
// Header
lines.push('# Security Audit Report');
lines.push('');
lines.push(`Generated: ${new Date().toISOString()}`);
lines.push(`Duration: ${this.result.duration}ms`);
lines.push('');
// Summary
lines.push('## Summary');
lines.push('');
lines.push(`- **Total Findings**: ${this.result.findings.length}`);
lines.push(`- **Files Scanned**: ${this.result.scannedFiles}`);
lines.push('');
// Findings by severity
lines.push('### Findings by Severity');
lines.push('');
lines.push(`- đ´ **Critical**: ${this.result.summary.bySeverity.critical}`);
lines.push(`- đ **High**: ${this.result.summary.bySeverity.high}`);
lines.push(`- đĄ **Medium**: ${this.result.summary.bySeverity.medium}`);
lines.push(`- đĸ **Low**: ${this.result.summary.bySeverity.low}`);
lines.push(`- âšī¸ **Info**: ${this.result.summary.bySeverity.info}`);
lines.push('');
// Detailed findings
if (this.result.findings.length > 0) {
lines.push('## Detailed Findings');
lines.push('');
// Group by severity
const severityOrder = ['critical', 'high', 'medium', 'low', 'info'];
for (const severity of severityOrder) {
const findings = this.result.findings.filter(f => f.severity === severity);
if (findings.length === 0)
continue;
lines.push(`### ${severity.toUpperCase()} (${findings.length})`);
lines.push('');
for (const finding of findings) {
lines.push(`#### ${finding.ruleId}: ${finding.message}`);
lines.push('');
lines.push(`- **File**: \`${finding.file}\``);
if (finding.line)
lines.push(`- **Line**: ${finding.line}`);
if (finding.column)
lines.push(`- **Column**: ${finding.column}`);
if (finding.code)
lines.push(`- **Code**: \`${finding.code.substring(0, 100)}${finding.code.length > 100 ? '...' : ''}\``);
lines.push(`- **Confidence**: ${finding.confidence || 'medium'}`);
if (finding.remediation)
lines.push(`- **Remediation**: ${finding.remediation}`);
lines.push('');
}
}
}
// Recommendations
lines.push('## Recommendations');
lines.push('');
lines.push('1. Address all critical and high severity issues immediately');
lines.push('2. Review medium severity issues and plan remediation');
lines.push('3. Consider adding suppressions for false positives');
lines.push('4. Run security audit regularly (e.g., in CI/CD pipeline)');
lines.push('');
return lines.join('\n');
}
getSummary() {
return `Found ${this.result.findings.length} security issues`;
}
getFindings() {
return this.result.findings;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFya2Rvd25SZXBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZWN1cml0eS9hdWRpdC9yZXBvcnRlcnMvTWFya2Rvd25SZXBvcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ25CLE1BQU0sQ0FBYTtJQUUzQixZQUFZLE1BQWtCO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1FBRTNCLFNBQVM7UUFDVCxLQUFLLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDdEMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNmLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRCxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ2xELEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFZixVQUFVO1FBQ1YsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN6QixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNuRSxLQUFLLENBQUMsSUFBSSxDQUFDLHdCQUF3QixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDL0QsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVmLHVCQUF1QjtRQUN2QixLQUFL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QUksQ0FBQyxxQkFBcUIsT0FBTyxDQUFDLFVBQVUsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDO29CQUNsRSxJQUFJLE9BQU8sQ0FBQyxXQUFXO3dCQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsc0JBQXNCLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO29CQUNqRixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxrQkFBa0I7UUFDbEIsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDZixLQUFLLENBQUMsSUFBSSxDQUFDLDhEQUE4RCxDQUFDLENBQUM7UUFDM0UsS0FBSyxDQUFDLElBQUksQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1FBQ3BFLEtBQUssQ0FBQyxJQUFJLENBQUMscURBQXFELENBQUMsQ0FBQztRQUNsRSxLQUFLLENBQUMsSUFBSSxDQUFDLDJEQUEyRCxDQUFDLENBQUM7UUFDeEUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVmLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sU0FBUyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLGtCQUFrQixDQUFDO0lBQ2hFLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUM5QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1hcmtkb3duIFJlcG9ydGVyIC0gR2VuZXJhdGVzIG1hcmtkb3duIHJlcG9ydHMgZm9yIEdpdEh1YlxuICogUGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24gLSB0byBiZSBjb21wbGV0ZWRcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFNlY3VyaXR5UmVwb3J0LCBTY2FuUmVzdWx0LCBTZWN1cml0eUZpbmRpbmcgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBNYXJrZG93blJlcG9ydGVyIGltcGxlbWVudHMgU2VjdXJpdHlSZXBvcnQge1xuICBwcml2YXRlIHJlc3VsdDogU2NhblJlc3VsdDtcblxuICBjb25zdHJ1Y3RvcihyZXN1bHQ6IFNjYW5SZXN1bHQpIHtcbiAgICB0aGlzLnJlc3VsdCA9IHJlc3VsdDtcbiAgfVxuXG4gIGdlbmVyYXRlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG4gICAgXG4gICAgLy8gSGVhZGVyXG4gICAgbGluZXMucHVzaCgnIyBTZWN1cml0eSBBdWRpdCBSZXBvcnQnKTtcbiAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICBsaW5lcy5wdXNoKGBHZW5lcmF0ZWQ6ICR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpfWApO1xuICAgIGxpbmVzLnB1c2goYER1cmF0aW9uOiAke3RoaXMucmVzdWx0LmR1cmF0aW9ufW1zYCk7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgXG4gICAgLy8gU3VtbWFyeVxuICAgIGxpbmVzLnB1c2goJyMjIFN1bW1hcnknKTtcbiAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICBsaW5lcy5wdXNoKGAtICoqVG90YWwgRmluZGluZ3MqKjogJHt0aGlzLnJlc3VsdC5maW5kaW5ncy5sZW5ndGh9YCk7XG4gICAgbGluZXMucHVzaChgLSAqKkZpbGVzIFNjYW5uZWQqKjogJHt0aGlzLnJlc3VsdC5zY2FubmVkRmlsZXN9YCk7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgXG4gICAgLy8gRmluZGluZ3MgYnkgc2V2ZXJpdHlcbiAgICBsaW5lcy5wdXNoKCcjIyMgRmluZGluZ3MgYnkgU2V2ZXJpdHknKTtcbiAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICBsaW5lcy5wdXNoKGAtIPCflLQgKipDcml0aWNhbCoqOiAke3RoaXMucmVzdWx0LnN1bW1hcnkuYnlTZXZlcml0eS5jcml0aWNhbH1gKTtcbiAgICBsaW5lcy5wdXNoKGAtIPCfn6AgKipIaWdoKio6ICR7dGhpcy5yZXN1bHQuc3VtbWFyeS5ieVNldmVyaXR5LmhpZ2h9YCk7XG4gICAgbGluZXMucHVzaChgLSDwn5+hICoqTWVkaXVtKio6ICR7dGhpcy5yZXN1bHQuc3VtbWFyeS5ieVNldmVyaXR5Lm1lZGl1bX1gKTtcbiAgICBsaW5lcy5wdXNoKGAtIPCfn6IgKipMb3cqKjogJHt0aGlzLnJlc3VsdC5zdW1tYXJ5LmJ5U2V2ZXJpdHkubG93fWApO1xuICAgIGxpbmVzLnB1c2goYC0g4oS577iPICoqSW5mbyoqOiAke3RoaXMucmVzdWx0LnN1bW1hcnkuYnlTZXZlcml0eS5pbmZvfWApO1xuICAgIGxpbmVzLnB1c2goJycpO1xuICAgIFxuICAgIC8vIERldGFpbGVkIGZpbmRpbmdzXG4gICAgaWYgKHRoaXMucmVzdWx0LmZpbmRpbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGxpbmVzLnB1c2goJyMjIERldGFpbGVkIEZpbmRpbmdzJyk7XG4gICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgIFxuICAgICAgLy8gR3JvdXAgYnkgc2V2ZXJpdHlcbiAgICAgIGNvbnN0IHNldmVyaXR5T3JkZXI6IEFycmF5PGltcG9ydCgnLi4vdHlwZXMuanMnKS5TZXZlcml0eUxldmVsPiA9IFsnY3JpdGljYWwnLCAnaGlnaCcsICdtZWRpdW0nLCAnbG93JywgJ2luZm8nXTtcbiAgICAgIFxuICAgICAgZm9yIChjb25zdCBzZXZlcml0eSBvZiBzZXZlcml0eU9yZGVyKSB7XG4gICAgICAgIGNvbnN0IGZpbmRpbmdzID0gdGhpcy5yZXN1bHQuZmluZGluZ3MuZmlsdGVyKGYgPT4gZi5zZXZlcml0eSA9PT0gc2V2ZXJpdHkpO1xuICAgICAgICBpZiAoZmluZGluZ3MubGVuZ3RoID09PSAwKSBjb250aW51ZTtcbiAgICAgICAgXG4gICAgICAgIGxpbmVzLnB1c2goYCMjIyAke3NldmVyaXR5LnRvVXBwZXJDYXNlKCl9ICgke2ZpbmRpbmdzLmxlbmd0aH0pYCk7XG4gICAgICAgIGxpbmVzLnB1c2goJycpO1xuICAgICAgICBcbiAgICAgICAgZm9yIChjb25zdCBmaW5kaW5nIG9mIGZpbmRpbmdzKSB7XG4gICAgICAgICAgbGluZXMucHVzaChgIyMjIyAke2ZpbmRpbmcucnVsZUlkfTogJHtmaW5kaW5nLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICAgICAgbGluZXMucHVzaChgLSAqKkZpbGUqKjogXFxgJHtmaW5kaW5nLmZpbGV9XFxgYCk7XG4gICAgICAgICAgaWYgKGZpbmRpbmcubGluZSkgbGluZXMucHVzaChgLSAqKkxpbmUqKjogJHtmaW5kaW5nLmxpbmV9YCk7XG4gICAgICAgICAgaWYgKGZpbmRpbmcuY29sdW1uKSBsaW5lcy5wdXNoKGAtICoqQ29sdW1uKio6ICR7ZmluZGluZy5jb2x1bW59YCk7XG4gICAgICAgICAgaWYgKGZpbmRpbmcuY29kZSkgbGluZXMucHVzaChgLSAqKkNvZGUqKjogXFxgJHtmaW5kaW5nLmNvZGUuc3Vic3RyaW5nKDAsIDEwMCl9JHtmaW5kaW5nLmNvZGUubGVuZ3RoID4gMTAwID8gJy4uLicgOiAnJ31cXGBgKTtcbiAgICAgICAgICBsaW5lcy5wdXNoKGAtICoqQ29uZmlkZW5jZSoqOiAke2ZpbmRpbmcuY29uZmlkZW5jZSB8fCAnbWVkaXVtJ31gKTtcbiAgICAgICAgICBpZiAoZmluZGluZy5yZW1lZGlhdGlvbikgbGluZXMucHVzaChgLSAqKlJlbWVkaWF0aW9uKio6ICR7ZmluZGluZy5yZW1lZGlhdGlvbn1gKTtcbiAgICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBSZWNvbW1lbmRhdGlvbnNcbiAgICBsaW5lcy5wdXNoKCcjIyBSZWNvbW1lbmRhdGlvbnMnKTtcbiAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICBsaW5lcy5wdXNoKCcxLiBBZGRyZXNzIGFsbCBjcml0aWNhbCBhbmQgaGlnaCBzZXZlcml0eSBpc3N1ZXMgaW1tZWRpYXRlbHknKTtcbiAgICBsaW5lcy5wdXNoKCcyLiBSZXZpZXcgbWVkaXVtIHNldmVyaXR5IGlzc3VlcyBhbmQgcGxhbiByZW1lZGlhdGlvbicpO1xuICAgIGxpbmVzLnB1c2goJzMuIENvbnNpZGVyIGFkZGluZyBzdXBwcmVzc2lvbnMgZm9yIGZhbHNlIHBvc2l0aXZlcycpO1xuICAgIGxpbmVzLnB1c2goJzQuIFJ1biBzZWN1cml0eSBhdWRpdCByZWd1bGFybHkgKGUuZy4sIGluIENJL0NEIHBpcGVsaW5lKScpO1xuICAgIGxpbmVzLnB1c2goJycpO1xuICAgIFxuICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIGdldFN1bW1hcnkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYEZvdW5kICR7dGhpcy5yZXN1bHQuZmluZGluZ3MubGVuZ3RofSBzZWN1cml0eSBpc3N1ZXNgO1xuICB9XG5cbiAgZ2V0RmluZGluZ3MoKTogU2VjdXJpdHlGaW5kaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnJlc3VsdC5maW5kaW5ncztcbiAgfVxufSJdfQ==