sverklo 0.12.0 → 0.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/server/audit-html.d.ts +2 -0
- package/dist/src/server/audit-html.js +152 -7
- package/dist/src/server/audit-html.js.map +1 -1
- package/dist/src/server/audit-html.test.d.ts +1 -0
- package/dist/src/server/audit-html.test.js +80 -0
- package/dist/src/server/audit-html.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -3,3 +3,5 @@
|
|
|
3
3
|
* Dark theme matching sverklo.com branding. Google Fonts for typography.
|
|
4
4
|
*/
|
|
5
5
|
export declare function generateAuditHtml(markdownContent: string, projectName: string, projectPath: string): string;
|
|
6
|
+
export declare function cleanProjectName(projectName: string, projectPath: string): string;
|
|
7
|
+
export declare function deriveSourceLink(projectName: string, projectPath: string): string;
|
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export function generateAuditHtml(markdownContent, projectName, projectPath) {
|
|
6
6
|
const now = new Date().toISOString().slice(0, 19).replace("T", " ");
|
|
7
|
+
// Clean up project name (prefer basename of projectPath with known temp
|
|
8
|
+
// prefixes like "report-", "regen-", "rpt-", "final-", "v12-", "bench-"
|
|
9
|
+
// stripped). This prevents leaking benchmark scratch directory names into
|
|
10
|
+
// published reports.
|
|
11
|
+
const displayName = cleanProjectName(projectName, projectPath);
|
|
12
|
+
const sourceLink = deriveSourceLink(projectName, projectPath);
|
|
7
13
|
// Parse structured data from the markdown
|
|
8
14
|
const parsed = parseAuditMarkdown(markdownContent);
|
|
9
15
|
// Build dimension cards
|
|
@@ -25,12 +31,30 @@ export function generateAuditHtml(markdownContent, projectName, projectPath) {
|
|
|
25
31
|
.join("\n");
|
|
26
32
|
// Badge markdown (extracted from last section if present)
|
|
27
33
|
const badgeSection = parsed.badgeMarkdown;
|
|
34
|
+
const canonicalPath = displayName.toLowerCase();
|
|
35
|
+
const canonicalUrl = `https://sverklo.com/report/${canonicalPath}/`;
|
|
36
|
+
const seoTitle = `Sverklo Audit — ${displayName} — Grade ${parsed.overallGrade}`;
|
|
37
|
+
const seoDescription = `Sverklo code-intelligence audit of ${displayName}. Overall grade ${parsed.overallGrade}. Dead code, circular dependencies, coupling, and security analysis with reproducer.`;
|
|
28
38
|
return `<!DOCTYPE html>
|
|
29
39
|
<html lang="en">
|
|
30
40
|
<head>
|
|
31
41
|
<meta charset="UTF-8">
|
|
32
42
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
33
|
-
<title>Sverklo Audit — ${esc(
|
|
43
|
+
<title>Sverklo Audit — ${esc(displayName)}</title>
|
|
44
|
+
<meta name="description" content="${esc(seoDescription)}">
|
|
45
|
+
<link rel="canonical" href="${esc(canonicalUrl)}">
|
|
46
|
+
<meta property="og:title" content="${esc(seoTitle)}">
|
|
47
|
+
<meta property="og:description" content="${esc(seoDescription)}">
|
|
48
|
+
<meta property="og:type" content="article">
|
|
49
|
+
<meta property="og:url" content="${esc(canonicalUrl)}">
|
|
50
|
+
<meta property="og:site_name" content="Sverklo">
|
|
51
|
+
<meta property="og:image" content="https://sverklo.com/og.png">
|
|
52
|
+
<meta property="og:image:width" content="1200">
|
|
53
|
+
<meta property="og:image:height" content="630">
|
|
54
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
55
|
+
<meta name="twitter:title" content="${esc(seoTitle)}">
|
|
56
|
+
<meta name="twitter:description" content="${esc(seoDescription)}">
|
|
57
|
+
<meta name="twitter:image" content="https://sverklo.com/og.png">
|
|
34
58
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
35
59
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
36
60
|
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600&family=Public+Sans:wght@400;500;600;700&display=swap" rel="stylesheet">
|
|
@@ -80,6 +104,51 @@ export function generateAuditHtml(markdownContent, projectName, projectPath) {
|
|
|
80
104
|
padding: 48px 24px 64px;
|
|
81
105
|
}
|
|
82
106
|
|
|
107
|
+
/* ── Top bar (site-standard header) ── */
|
|
108
|
+
header.top {
|
|
109
|
+
border-bottom: 1px solid var(--border);
|
|
110
|
+
padding: 16px 0;
|
|
111
|
+
position: sticky;
|
|
112
|
+
top: 0;
|
|
113
|
+
background: rgba(14, 13, 11, 0.92);
|
|
114
|
+
backdrop-filter: blur(10px);
|
|
115
|
+
-webkit-backdrop-filter: blur(10px);
|
|
116
|
+
z-index: 100;
|
|
117
|
+
}
|
|
118
|
+
header.top .wrap {
|
|
119
|
+
max-width: 960px;
|
|
120
|
+
margin: 0 auto;
|
|
121
|
+
padding: 0 32px;
|
|
122
|
+
display: flex;
|
|
123
|
+
align-items: center;
|
|
124
|
+
justify-content: space-between;
|
|
125
|
+
}
|
|
126
|
+
.brand {
|
|
127
|
+
font-family: 'JetBrains Mono', monospace;
|
|
128
|
+
font-size: 18px;
|
|
129
|
+
font-weight: 700;
|
|
130
|
+
letter-spacing: -0.02em;
|
|
131
|
+
color: var(--text);
|
|
132
|
+
text-decoration: none;
|
|
133
|
+
border: none;
|
|
134
|
+
}
|
|
135
|
+
.brand::before {
|
|
136
|
+
content: "\\25CC ";
|
|
137
|
+
color: var(--accent);
|
|
138
|
+
}
|
|
139
|
+
.top-nav {
|
|
140
|
+
display: flex;
|
|
141
|
+
gap: 24px;
|
|
142
|
+
font-family: 'JetBrains Mono', monospace;
|
|
143
|
+
font-size: 13px;
|
|
144
|
+
}
|
|
145
|
+
.top-nav a {
|
|
146
|
+
color: var(--muted);
|
|
147
|
+
text-decoration: none;
|
|
148
|
+
border: none;
|
|
149
|
+
}
|
|
150
|
+
.top-nav a:hover { color: var(--text); }
|
|
151
|
+
|
|
83
152
|
/* ── Header ── */
|
|
84
153
|
.header {
|
|
85
154
|
text-align: center;
|
|
@@ -355,6 +424,18 @@ export function generateAuditHtml(markdownContent, projectName, projectPath) {
|
|
|
355
424
|
</style>
|
|
356
425
|
</head>
|
|
357
426
|
<body>
|
|
427
|
+
<header class="top">
|
|
428
|
+
<div class="wrap">
|
|
429
|
+
<a class="brand" href="https://sverklo.com/">sverklo</a>
|
|
430
|
+
<nav class="top-nav">
|
|
431
|
+
<a href="https://sverklo.com/report/">← All reports</a>
|
|
432
|
+
<a href="https://sverklo.com/vs/">compare</a>
|
|
433
|
+
<a href="https://sverklo.com/benchmarks/">benchmarks</a>
|
|
434
|
+
<a href="https://sverklo.com/blog/">blog</a>
|
|
435
|
+
<a href="https://github.com/sverklo/sverklo">GitHub</a>
|
|
436
|
+
</nav>
|
|
437
|
+
</div>
|
|
438
|
+
</header>
|
|
358
439
|
<div class="wrapper">
|
|
359
440
|
|
|
360
441
|
<div class="header">
|
|
@@ -364,8 +445,8 @@ export function generateAuditHtml(markdownContent, projectName, projectPath) {
|
|
|
364
445
|
</div>
|
|
365
446
|
<div class="grade-label">Overall Health</div>
|
|
366
447
|
<div class="meta">
|
|
367
|
-
<span class="project-name">${esc(
|
|
368
|
-
${esc(
|
|
448
|
+
<span class="project-name">${esc(displayName)}</span><br>
|
|
449
|
+
${sourceLink ? `<a href="${esc(sourceLink)}">${esc(sourceLink)}</a><br>` : ""}
|
|
369
450
|
${now}
|
|
370
451
|
</div>
|
|
371
452
|
</div>
|
|
@@ -415,6 +496,53 @@ function inline(text) {
|
|
|
415
496
|
.replace(/_(.+?)_/g, "<em>$1</em>")
|
|
416
497
|
.replace(/`([^`]+)`/g, "<code>$1</code>");
|
|
417
498
|
}
|
|
499
|
+
// Known temp/scratch directory prefixes produced by benchmark scripts. These
|
|
500
|
+
// must not leak into published audit reports.
|
|
501
|
+
const TEMP_PREFIXES = [
|
|
502
|
+
"report-",
|
|
503
|
+
"regen-",
|
|
504
|
+
"rpt-",
|
|
505
|
+
"final-",
|
|
506
|
+
"bench-",
|
|
507
|
+
// versioned variants: v12-, v9-, v0.12-, etc.
|
|
508
|
+
];
|
|
509
|
+
export function cleanProjectName(projectName, projectPath) {
|
|
510
|
+
// Prefer basename of the absolute path; fall back to the provided name.
|
|
511
|
+
const base = basename(projectPath) || projectName || "project";
|
|
512
|
+
const stripped = stripTempPrefix(base);
|
|
513
|
+
// Convert "expressjs_express" style separators used by benchmark scripts
|
|
514
|
+
// into "expressjs/express".
|
|
515
|
+
return stripped.replace(/_/g, "/");
|
|
516
|
+
}
|
|
517
|
+
export function deriveSourceLink(projectName, projectPath) {
|
|
518
|
+
const base = basename(projectPath) || projectName || "";
|
|
519
|
+
const stripped = stripTempPrefix(base);
|
|
520
|
+
// Must look like "owner_repo" to derive a GitHub URL.
|
|
521
|
+
const parts = stripped.split("_");
|
|
522
|
+
if (parts.length === 2 && parts[0] && parts[1]) {
|
|
523
|
+
return `https://github.com/${parts[0]}/${parts[1]}`;
|
|
524
|
+
}
|
|
525
|
+
return "";
|
|
526
|
+
}
|
|
527
|
+
function stripTempPrefix(name) {
|
|
528
|
+
for (const prefix of TEMP_PREFIXES) {
|
|
529
|
+
if (name.startsWith(prefix))
|
|
530
|
+
return name.slice(prefix.length);
|
|
531
|
+
}
|
|
532
|
+
// Strip "vN-" / "vN.N-" style version prefixes.
|
|
533
|
+
const versioned = name.match(/^v\d+(?:\.\d+)?-(.+)$/);
|
|
534
|
+
if (versioned)
|
|
535
|
+
return versioned[1];
|
|
536
|
+
return name;
|
|
537
|
+
}
|
|
538
|
+
function basename(p) {
|
|
539
|
+
if (!p)
|
|
540
|
+
return "";
|
|
541
|
+
// Strip trailing slashes, then return everything after the last "/".
|
|
542
|
+
const trimmed = p.replace(/\/+$/, "");
|
|
543
|
+
const idx = trimmed.lastIndexOf("/");
|
|
544
|
+
return idx === -1 ? trimmed : trimmed.slice(idx + 1);
|
|
545
|
+
}
|
|
418
546
|
function parseAuditMarkdown(md) {
|
|
419
547
|
const lines = md.split("\n");
|
|
420
548
|
let overallGrade = "?";
|
|
@@ -433,27 +561,44 @@ function parseAuditMarkdown(md) {
|
|
|
433
561
|
}
|
|
434
562
|
i++;
|
|
435
563
|
}
|
|
436
|
-
// Parse dimension table
|
|
564
|
+
// Parse dimension table. Skip blank lines between the grade heading and the
|
|
565
|
+
// table; only stop once we've seen at least one table row and then hit a
|
|
566
|
+
// non-table line (or a "## " section heading, which starts the next block).
|
|
567
|
+
let sawTableRow = false;
|
|
437
568
|
while (i < lines.length) {
|
|
438
569
|
const line = lines[i];
|
|
570
|
+
const trimmed = line.trim();
|
|
571
|
+
if (trimmed === "") {
|
|
572
|
+
// A blank line after the table ends it; before the table, keep scanning.
|
|
573
|
+
if (sawTableRow)
|
|
574
|
+
break;
|
|
575
|
+
i++;
|
|
576
|
+
continue;
|
|
577
|
+
}
|
|
578
|
+
if (line.startsWith("## ") || line.startsWith("# "))
|
|
579
|
+
break;
|
|
439
580
|
// Skip table header/separator rows
|
|
440
|
-
if (line.startsWith("| Dimension") || line
|
|
581
|
+
if (line.startsWith("| Dimension") || /^\|\s*-/.test(line)) {
|
|
441
582
|
i++;
|
|
442
583
|
continue;
|
|
443
584
|
}
|
|
444
585
|
if (line.startsWith("|")) {
|
|
445
586
|
const cells = line.split("|").filter(Boolean).map((c) => c.trim());
|
|
446
|
-
if (cells.length >= 3) {
|
|
587
|
+
if (cells.length >= 3 && /^[A-F]$/.test(cells[1])) {
|
|
447
588
|
dimensions.push({
|
|
448
589
|
name: cells[0],
|
|
449
590
|
grade: cells[1],
|
|
450
591
|
detail: cells[2],
|
|
451
592
|
});
|
|
593
|
+
sawTableRow = true;
|
|
452
594
|
}
|
|
453
595
|
i++;
|
|
454
596
|
continue;
|
|
455
597
|
}
|
|
456
|
-
|
|
598
|
+
// Non-table, non-blank, non-heading line — if we've seen rows, stop.
|
|
599
|
+
if (sawTableRow)
|
|
600
|
+
break;
|
|
601
|
+
i++;
|
|
457
602
|
}
|
|
458
603
|
// Parse remaining sections (## headings)
|
|
459
604
|
let currentTitle = "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-html.js","sourceRoot":"","sources":["../../../src/server/audit-html.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audit-html.js","sourceRoot":"","sources":["../../../src/server/audit-html.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { generateAuditHtml, cleanProjectName, deriveSourceLink, } from "./audit-html.js";
|
|
3
|
+
const SAMPLE_MD = `# Sverklo Project Audit — Grade: B
|
|
4
|
+
|
|
5
|
+
| Dimension | Score | Detail |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| Dead code | B | 8 of 415 symbols unreferenced |
|
|
8
|
+
| Circular deps | A | No cycles detected |
|
|
9
|
+
| Coupling | C | Top file has PageRank 1.00 |
|
|
10
|
+
| Security | F | 4 critical issues |
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
- **141** files indexed
|
|
15
|
+
- **415** code symbols extracted
|
|
16
|
+
`;
|
|
17
|
+
describe("cleanProjectName", () => {
|
|
18
|
+
it("strips 'report-' prefix", () => {
|
|
19
|
+
expect(cleanProjectName("report-expressjs_express", "/private/tmp/report-expressjs_express")).toBe("expressjs/express");
|
|
20
|
+
});
|
|
21
|
+
it("strips 'regen-' prefix", () => {
|
|
22
|
+
expect(cleanProjectName("regen-claude-mem", "/private/tmp/regen-claude-mem")).toBe("claude-mem");
|
|
23
|
+
});
|
|
24
|
+
it("strips 'bench-' prefix", () => {
|
|
25
|
+
expect(cleanProjectName("bench-nest", "/tmp/bench-nest")).toBe("nest");
|
|
26
|
+
});
|
|
27
|
+
it("strips version-style prefixes like 'v12-'", () => {
|
|
28
|
+
expect(cleanProjectName("v12-foo_bar", "/tmp/v12-foo_bar")).toBe("foo/bar");
|
|
29
|
+
});
|
|
30
|
+
it("leaves a clean name untouched", () => {
|
|
31
|
+
expect(cleanProjectName("sverklo", "/Users/nikita/projects/sverklo")).toBe("sverklo");
|
|
32
|
+
});
|
|
33
|
+
it("prefers basename of projectPath over projectName", () => {
|
|
34
|
+
expect(cleanProjectName("report-expressjs_express", "/Users/me/real-project")).toBe("real-project");
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe("deriveSourceLink", () => {
|
|
38
|
+
it("builds a GitHub URL from 'owner_repo' form", () => {
|
|
39
|
+
expect(deriveSourceLink("report-expressjs_express", "/private/tmp/report-expressjs_express")).toBe("https://github.com/expressjs/express");
|
|
40
|
+
});
|
|
41
|
+
it("returns empty string when owner/repo can't be derived", () => {
|
|
42
|
+
expect(deriveSourceLink("regen-claude-mem", "/private/tmp/regen-claude-mem")).toBe("");
|
|
43
|
+
});
|
|
44
|
+
it("returns empty string for regular project paths", () => {
|
|
45
|
+
expect(deriveSourceLink("sverklo", "/Users/nikita/projects/sverklo")).toBe("");
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe("generateAuditHtml", () => {
|
|
49
|
+
const html = generateAuditHtml(SAMPLE_MD, "report-expressjs_express", "/private/tmp/report-expressjs_express");
|
|
50
|
+
it("renders the site-standard top header with brand + nav", () => {
|
|
51
|
+
expect(html).toContain('<header class="top">');
|
|
52
|
+
expect(html).toContain('class="brand"');
|
|
53
|
+
expect(html).toContain('class="top-nav"');
|
|
54
|
+
expect(html).toContain("All reports");
|
|
55
|
+
expect(html).toContain("https://github.com/sverklo/sverklo");
|
|
56
|
+
expect(html).toContain("https://www.npmjs.com/package/sverklo");
|
|
57
|
+
});
|
|
58
|
+
it("populates dimension cards (P0-1 fix)", () => {
|
|
59
|
+
expect(html).toContain("Dead code");
|
|
60
|
+
expect(html).toContain("Circular deps");
|
|
61
|
+
expect(html).toContain("Coupling");
|
|
62
|
+
expect(html).toContain("Security");
|
|
63
|
+
// Empty dimensions block regression check:
|
|
64
|
+
expect(html).not.toMatch(/<div class="dimensions">\s*<\/div>/);
|
|
65
|
+
});
|
|
66
|
+
it("uses a clean owner/repo display name in title and header (P0-7 fix)", () => {
|
|
67
|
+
expect(html).toContain("<title>Sverklo Audit — expressjs/express</title>");
|
|
68
|
+
expect(html).toContain('<span class="project-name">expressjs/express</span>');
|
|
69
|
+
expect(html).not.toContain("report-expressjs_express");
|
|
70
|
+
});
|
|
71
|
+
it("replaces the /private/tmp path with the GitHub URL (P1-7 fix)", () => {
|
|
72
|
+
expect(html).not.toContain("/private/tmp/");
|
|
73
|
+
expect(html).toContain("https://github.com/expressjs/express");
|
|
74
|
+
});
|
|
75
|
+
it("still renders overall grade ring", () => {
|
|
76
|
+
expect(html).toContain("grade-letter");
|
|
77
|
+
expect(html).toMatch(/>B</);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=audit-html.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-html.test.js","sourceRoot":"","sources":["../../../src/server/audit-html.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sverklo",
|
|
3
3
|
"mcpName": "io.github.sverklo/sverklo",
|
|
4
|
-
"version": "0.12.
|
|
4
|
+
"version": "0.12.2",
|
|
5
5
|
"description": "Sverklo — local-first code intelligence MCP server. Diff-aware MR review, risk scoring, hybrid semantic search, PageRank ranking, persistent memory. Zero config.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|