patchdrill 0.1.0
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/.patchdrill.yml +33 -0
- package/CHANGELOG.md +150 -0
- package/CONTRIBUTING.md +59 -0
- package/LICENSE +21 -0
- package/README.md +601 -0
- package/SECURITY.md +28 -0
- package/action.yml +338 -0
- package/dist/baseline.d.ts +9 -0
- package/dist/baseline.js +38 -0
- package/dist/baseline.js.map +1 -0
- package/dist/cli.d.ts +19 -0
- package/dist/cli.js +662 -0
- package/dist/cli.js.map +1 -0
- package/dist/codeowners.d.ts +14 -0
- package/dist/codeowners.js +104 -0
- package/dist/codeowners.js.map +1 -0
- package/dist/command-plan.d.ts +3 -0
- package/dist/command-plan.js +26 -0
- package/dist/command-plan.js.map +1 -0
- package/dist/demo.d.ts +5 -0
- package/dist/demo.js +525 -0
- package/dist/demo.js.map +1 -0
- package/dist/dependency.d.ts +4 -0
- package/dist/dependency.js +1424 -0
- package/dist/dependency.js.map +1 -0
- package/dist/doctor.d.ts +26 -0
- package/dist/doctor.js +183 -0
- package/dist/doctor.js.map +1 -0
- package/dist/evidence.d.ts +64 -0
- package/dist/evidence.js +352 -0
- package/dist/evidence.js.map +1 -0
- package/dist/git.d.ts +16 -0
- package/dist/git.js +349 -0
- package/dist/git.js.map +1 -0
- package/dist/i18n-catalog.d.ts +8 -0
- package/dist/i18n-catalog.js +446 -0
- package/dist/i18n-catalog.js.map +1 -0
- package/dist/i18n.d.ts +20 -0
- package/dist/i18n.js +67 -0
- package/dist/i18n.js.map +1 -0
- package/dist/init.d.ts +13 -0
- package/dist/init.js +312 -0
- package/dist/init.js.map +1 -0
- package/dist/markdown-links.d.ts +18 -0
- package/dist/markdown-links.js +180 -0
- package/dist/markdown-links.js.map +1 -0
- package/dist/package-scripts.d.ts +3 -0
- package/dist/package-scripts.js +55 -0
- package/dist/package-scripts.js.map +1 -0
- package/dist/planner.d.ts +8 -0
- package/dist/planner.js +2351 -0
- package/dist/planner.js.map +1 -0
- package/dist/policy.d.ts +12 -0
- package/dist/policy.js +255 -0
- package/dist/policy.js.map +1 -0
- package/dist/project.d.ts +2 -0
- package/dist/project.js +1085 -0
- package/dist/project.js.map +1 -0
- package/dist/release-readiness.d.ts +25 -0
- package/dist/release-readiness.js +426 -0
- package/dist/release-readiness.js.map +1 -0
- package/dist/report-annotations.d.ts +3 -0
- package/dist/report-annotations.js +28 -0
- package/dist/report-annotations.js.map +1 -0
- package/dist/report-contract.d.ts +2 -0
- package/dist/report-contract.js +82 -0
- package/dist/report-contract.js.map +1 -0
- package/dist/report-html.d.ts +7 -0
- package/dist/report-html.js +706 -0
- package/dist/report-html.js.map +1 -0
- package/dist/report-sarif.d.ts +2 -0
- package/dist/report-sarif.js +90 -0
- package/dist/report-sarif.js.map +1 -0
- package/dist/report.d.ts +14 -0
- package/dist/report.js +310 -0
- package/dist/report.js.map +1 -0
- package/dist/risk.d.ts +19 -0
- package/dist/risk.js +1226 -0
- package/dist/risk.js.map +1 -0
- package/dist/runner.d.ts +8 -0
- package/dist/runner.js +113 -0
- package/dist/runner.js.map +1 -0
- package/dist/scan.d.ts +2 -0
- package/dist/scan.js +195 -0
- package/dist/scan.js.map +1 -0
- package/dist/schema.d.ts +12 -0
- package/dist/schema.js +30 -0
- package/dist/schema.js.map +1 -0
- package/dist/stack-coverage.d.ts +8 -0
- package/dist/stack-coverage.js +94 -0
- package/dist/stack-coverage.js.map +1 -0
- package/dist/types.d.ts +206 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/verification.d.ts +11 -0
- package/dist/verification.js +108 -0
- package/dist/verification.js.map +1 -0
- package/docs/ANNOTATIONS.md +34 -0
- package/docs/ARCHITECTURE.md +79 -0
- package/docs/BASELINES.md +32 -0
- package/docs/CASE_STUDIES.md +106 -0
- package/docs/CODEOWNERS.md +23 -0
- package/docs/DASHBOARD.md +87 -0
- package/docs/EVIDENCE.md +55 -0
- package/docs/LAUNCH_PLAYBOOK.md +103 -0
- package/docs/MONOREPOS.md +74 -0
- package/docs/POLICY.md +98 -0
- package/docs/PROOF_PACKS.md +57 -0
- package/docs/PR_COMMENTS.md +56 -0
- package/docs/RELEASE.md +35 -0
- package/docs/ROADMAP.md +152 -0
- package/docs/RULE_CATALOG.md +90 -0
- package/docs/SARIF.md +74 -0
- package/docs/SCHEMAS.md +49 -0
- package/docs/SECURITY_POSTURE.md +32 -0
- package/docs/STACK_COVERAGE.md +20 -0
- package/docs/assets/patchdrill-demo.svg +21 -0
- package/docs/media/patchdrill-dashboard.png +0 -0
- package/docs/media/patchdrill-demo.gif +0 -0
- package/examples/case-studies/README.md +20 -0
- package/examples/demo/README.md +21 -0
- package/examples/demo/patchdrill-demo-summary.md +35 -0
- package/examples/demo/patchdrill-demo.html +623 -0
- package/examples/demo/patchdrill-demo.json +355 -0
- package/examples/demo/patchdrill-demo.md +120 -0
- package/examples/demo/patchdrill-demo.sarif +195 -0
- package/examples/report.md +128 -0
- package/examples/risky-agent-pr/README.md +15 -0
- package/examples/risky-agent-pr/patchdrill-demo-summary.md +41 -0
- package/examples/risky-agent-pr/patchdrill-demo.html +681 -0
- package/examples/risky-agent-pr/patchdrill-demo.json +483 -0
- package/examples/risky-agent-pr/patchdrill-demo.md +140 -0
- package/examples/risky-agent-pr/patchdrill-demo.sarif +398 -0
- package/fixtures/stacks/README.md +4 -0
- package/fixtures/stacks/android-gradle/fixture.json +33 -0
- package/fixtures/stacks/aspnet-core-service/fixture.json +36 -0
- package/fixtures/stacks/bazel-workspace/fixture.json +30 -0
- package/fixtures/stacks/buck2-workspace/fixture.json +30 -0
- package/fixtures/stacks/cargo-workspace/fixture.json +48 -0
- package/fixtures/stacks/django-app/fixture.json +25 -0
- package/fixtures/stacks/docker-compose/fixture.json +17 -0
- package/fixtures/stacks/dockerfile-service/fixture.json +17 -0
- package/fixtures/stacks/dotnet-service/fixture.json +36 -0
- package/fixtures/stacks/dotnet-solution-filter/fixture.json +62 -0
- package/fixtures/stacks/fastapi-app/fixture.json +29 -0
- package/fixtures/stacks/go-workspace/fixture.json +48 -0
- package/fixtures/stacks/java-gradle/fixture.json +29 -0
- package/fixtures/stacks/java-maven/fixture.json +32 -0
- package/fixtures/stacks/kubernetes-helm/fixture.json +25 -0
- package/fixtures/stacks/kubernetes-kustomize/fixture.json +21 -0
- package/fixtures/stacks/nested-go-workspace/fixture.json +51 -0
- package/fixtures/stacks/nextjs-app/fixture.json +34 -0
- package/fixtures/stacks/node-turbo-workspace/fixture.json +39 -0
- package/fixtures/stacks/pants-python/fixture.json +33 -0
- package/fixtures/stacks/php-composer/fixture.json +31 -0
- package/fixtures/stacks/python-service/fixture.json +21 -0
- package/fixtures/stacks/rails-app/fixture.json +25 -0
- package/fixtures/stacks/spring-boot-gradle/fixture.json +29 -0
- package/fixtures/stacks/spring-boot-maven/fixture.json +43 -0
- package/fixtures/stacks/swift-package/fixture.json +21 -0
- package/fixtures/stacks/terraform-module/fixture.json +17 -0
- package/fixtures/stacks/uv-python-service/fixture.json +47 -0
- package/fixtures/stacks/xcode-app/fixture.json +72 -0
- package/package.json +80 -0
- package/schemas/patchdrill-doctor.schema.json +171 -0
- package/schemas/patchdrill-evidence.schema.json +239 -0
- package/schemas/patchdrill-policy.schema.json +170 -0
- package/schemas/patchdrill-release-check.schema.json +78 -0
- package/schemas/patchdrill-report.schema.json +647 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-html.js","sourceRoot":"","sources":["../src/report-html.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
export function renderSarif(report) {
|
|
3
|
+
const rules = new Map();
|
|
4
|
+
const results = report.findings
|
|
5
|
+
.filter((finding) => finding.file)
|
|
6
|
+
.map((finding) => {
|
|
7
|
+
const ruleId = finding.ruleId ?? slug(finding.title);
|
|
8
|
+
rules.set(ruleId, {
|
|
9
|
+
id: ruleId,
|
|
10
|
+
name: finding.title,
|
|
11
|
+
shortDescription: { text: finding.title },
|
|
12
|
+
...(finding.remediation ? { help: { text: finding.remediation } } : {}),
|
|
13
|
+
properties: {
|
|
14
|
+
severity: finding.severity,
|
|
15
|
+
tags: finding.tags ?? []
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
return {
|
|
19
|
+
ruleId,
|
|
20
|
+
level: sarifLevel(finding.severity),
|
|
21
|
+
message: {
|
|
22
|
+
text: `${finding.title}: ${finding.detail}${finding.remediation ? ` Remediation: ${finding.remediation}` : ""}`
|
|
23
|
+
},
|
|
24
|
+
locations: [
|
|
25
|
+
{
|
|
26
|
+
physicalLocation: {
|
|
27
|
+
artifactLocation: {
|
|
28
|
+
uri: finding.file
|
|
29
|
+
},
|
|
30
|
+
region: {
|
|
31
|
+
startLine: finding.line ?? 1
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
properties: {
|
|
37
|
+
severity: finding.severity,
|
|
38
|
+
tags: finding.tags ?? []
|
|
39
|
+
},
|
|
40
|
+
partialFingerprints: {
|
|
41
|
+
patchdrillFinding: stableFingerprint(ruleId, finding.file ?? "", finding.line ?? 0, finding.title)
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
return `${JSON.stringify({
|
|
46
|
+
version: "2.1.0",
|
|
47
|
+
$schema: "https://json.schemastore.org/sarif-2.1.0.json",
|
|
48
|
+
runs: [
|
|
49
|
+
{
|
|
50
|
+
tool: {
|
|
51
|
+
driver: {
|
|
52
|
+
name: "PatchDrill",
|
|
53
|
+
informationUri: "https://github.com/seungdori/patchdrill",
|
|
54
|
+
rules: [...rules.values()]
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
invocations: [
|
|
58
|
+
{
|
|
59
|
+
executionSuccessful: report.summary.failedCommandCount === 0,
|
|
60
|
+
properties: {
|
|
61
|
+
status: report.summary.status,
|
|
62
|
+
riskScore: report.summary.riskScore,
|
|
63
|
+
confidenceScore: report.summary.confidenceScore
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
results
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}, null, 2)}\n`;
|
|
71
|
+
}
|
|
72
|
+
function sarifLevel(severity) {
|
|
73
|
+
switch (severity) {
|
|
74
|
+
case "critical":
|
|
75
|
+
case "high":
|
|
76
|
+
return "error";
|
|
77
|
+
case "medium":
|
|
78
|
+
return "warning";
|
|
79
|
+
case "low":
|
|
80
|
+
case "info":
|
|
81
|
+
return "note";
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function slug(value) {
|
|
85
|
+
return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, 80) || "patchdrill-finding";
|
|
86
|
+
}
|
|
87
|
+
function stableFingerprint(ruleId, file, line, title) {
|
|
88
|
+
return createHash("sha256").update(`${ruleId}\0${file}\0${line}\0${title}`).digest("hex");
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=report-sarif.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-sarif.js","sourceRoot":"","sources":["../src/report-sarif.ts"],"names":[],"mappings":"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"}
|
package/dist/report.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Locale } from "./i18n.js";
|
|
2
|
+
import type { PatchReport, Severity, VerificationSummary } from "./types.js";
|
|
3
|
+
export { renderGitHubAnnotations } from "./report-annotations.js";
|
|
4
|
+
export { renderHtml, type HtmlOptions } from "./report-html.js";
|
|
5
|
+
export { renderSarif } from "./report-sarif.js";
|
|
6
|
+
export interface GateOptions {
|
|
7
|
+
failOn: Severity;
|
|
8
|
+
maxRisk: number;
|
|
9
|
+
maxRiskDelta?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare function shouldFail(report: PatchReport, options: GateOptions): boolean;
|
|
12
|
+
export declare function renderMarkdown(report: PatchReport, locale?: Locale): string;
|
|
13
|
+
export declare function renderSummaryMarkdown(report: PatchReport, locale?: Locale): string;
|
|
14
|
+
export declare function verificationEvidencePhrase(verification: VerificationSummary, locale: Locale): string;
|
package/dist/report.js
ADDED
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
import { t } from "./i18n.js";
|
|
2
|
+
import { formatVerificationStatus, verificationExecutions, verificationSummary } from "./verification.js";
|
|
3
|
+
export { renderGitHubAnnotations } from "./report-annotations.js";
|
|
4
|
+
export { renderHtml } from "./report-html.js";
|
|
5
|
+
export { renderSarif } from "./report-sarif.js";
|
|
6
|
+
const severityRank = {
|
|
7
|
+
info: 0,
|
|
8
|
+
low: 1,
|
|
9
|
+
medium: 2,
|
|
10
|
+
high: 3,
|
|
11
|
+
critical: 4
|
|
12
|
+
};
|
|
13
|
+
export function shouldFail(report, options) {
|
|
14
|
+
if (report.summary.failedCommandCount > 0)
|
|
15
|
+
return true;
|
|
16
|
+
if (report.summary.riskScore > options.maxRisk)
|
|
17
|
+
return true;
|
|
18
|
+
if (options.maxRiskDelta !== undefined && report.baseline && report.baseline.riskDelta > options.maxRiskDelta)
|
|
19
|
+
return true;
|
|
20
|
+
const threshold = severityRank[options.failOn];
|
|
21
|
+
return report.findings.some((finding) => severityRank[finding.severity] >= threshold);
|
|
22
|
+
}
|
|
23
|
+
export function renderMarkdown(report, locale = "en") {
|
|
24
|
+
const tr = (text) => t(locale, text);
|
|
25
|
+
const lines = [];
|
|
26
|
+
const statusIcon = tr(report.summary.status === "pass" ? "PASS" : report.summary.status === "warn" ? "WARN" : "FAIL");
|
|
27
|
+
const verification = verificationSummary(report);
|
|
28
|
+
const executions = verificationExecutions(report);
|
|
29
|
+
lines.push(`# ${tr("PatchDrill Report")}`);
|
|
30
|
+
lines.push("");
|
|
31
|
+
lines.push(`${tr("Status")}: **${statusIcon}**`);
|
|
32
|
+
lines.push(`${tr("Risk score")}: **${report.summary.riskScore}/100**`);
|
|
33
|
+
lines.push(`${tr("Confidence score")}: **${report.summary.confidenceScore}/100**`);
|
|
34
|
+
lines.push(`${tr("Generated")}: ${report.generatedAt}`);
|
|
35
|
+
lines.push(`${tr("Schema version")}: ${report.schemaVersion}`);
|
|
36
|
+
lines.push("");
|
|
37
|
+
lines.push(`## ${tr("Summary")}`);
|
|
38
|
+
lines.push("");
|
|
39
|
+
lines.push(`- ${tr("Changed files")}: ${report.summary.changedFileCount}`);
|
|
40
|
+
lines.push(`- ${tr("Additions / deletions")}: +${report.summary.additions} / -${report.summary.deletions}`);
|
|
41
|
+
lines.push(`- ${tr("Required verification commands")}: ${report.summary.requiredCommandCount}`);
|
|
42
|
+
lines.push(`- ${tr("Failed verification commands")}: ${report.summary.failedCommandCount}`);
|
|
43
|
+
lines.push(`- ${tr("Verification evidence")}: ${verificationEvidencePhrase(verification, locale)}`);
|
|
44
|
+
lines.push(`- ${tr("Added lines inspected")}: ${report.addedLines}`);
|
|
45
|
+
lines.push("");
|
|
46
|
+
if (report.policy) {
|
|
47
|
+
lines.push(`## ${tr("Policy")}`);
|
|
48
|
+
lines.push("");
|
|
49
|
+
lines.push(`- ${tr("Config")}: ${report.policy.path}`);
|
|
50
|
+
lines.push(`- ${tr("Ignored path patterns")}: ${report.policy.ignoredPaths.length}`);
|
|
51
|
+
if (report.policy.failOn)
|
|
52
|
+
lines.push(`- ${tr("Fail-on severity")}: ${report.policy.failOn}`);
|
|
53
|
+
if (report.policy.maxRisk !== undefined)
|
|
54
|
+
lines.push(`- ${tr("Max risk")}: ${report.policy.maxRisk}`);
|
|
55
|
+
lines.push(`- ${tr("Policy rules")}: ${report.policy.ruleCount}`);
|
|
56
|
+
lines.push(`- ${tr("Policy commands")}: ${report.policy.requiredCommandCount} ${tr("required")}, ${report.policy.optionalCommandCount} ${tr("optional")}`);
|
|
57
|
+
lines.push("");
|
|
58
|
+
}
|
|
59
|
+
if (report.codeOwners) {
|
|
60
|
+
lines.push(`## ${tr("Code Owners")}`);
|
|
61
|
+
lines.push("");
|
|
62
|
+
lines.push(`- ${tr("Config")}: ${report.codeOwners.path}`);
|
|
63
|
+
lines.push(`- ${tr("Rules")}: ${report.codeOwners.ruleCount}`);
|
|
64
|
+
lines.push("");
|
|
65
|
+
}
|
|
66
|
+
if (report.baseline) {
|
|
67
|
+
lines.push(`## ${tr("Baseline")}`);
|
|
68
|
+
lines.push("");
|
|
69
|
+
lines.push(`- ${tr("Baseline report")}: ${report.baseline.path}`);
|
|
70
|
+
if (report.baseline.previousStatus)
|
|
71
|
+
lines.push(`- ${tr("Status")}: ${tr(report.baseline.previousStatus)} -> ${tr(report.baseline.currentStatus)}`);
|
|
72
|
+
if (report.baseline.previousRiskScore !== undefined) {
|
|
73
|
+
lines.push(`- ${tr("Risk")}: ${report.baseline.previousRiskScore}/100 -> ${report.baseline.currentRiskScore}/100 (${formatDelta(report.baseline.riskDelta)})`);
|
|
74
|
+
}
|
|
75
|
+
lines.push(`- ${tr("Findings")}: ${report.baseline.newFindingCount} ${tr("new")}, ${report.baseline.resolvedFindingCount} ${tr("resolved")}, ${report.baseline.unchangedFindingCount} ${tr("unchanged")}`);
|
|
76
|
+
lines.push("");
|
|
77
|
+
}
|
|
78
|
+
if (report.projectSignals.length > 0) {
|
|
79
|
+
lines.push(`## ${tr("Project Signals")}`);
|
|
80
|
+
lines.push("");
|
|
81
|
+
lines.push(`| ${tr("Ecosystem")} | ${tr("Framework")} | ${tr("Entrypoint")} | ${tr("Manifest")} | ${tr("Package manager")} | ${tr("Task runner")} |`);
|
|
82
|
+
lines.push("| --- | --- | --- | --- | --- | --- |");
|
|
83
|
+
for (const signal of report.projectSignals) {
|
|
84
|
+
lines.push(`| ${signal.ecosystem} | ${signal.framework ?? ""} | ${signal.entrypoint ?? ""} | ${signal.manifestPath} | ${signal.packageManager ?? ""} | ${signal.taskRunner ?? ""} |`);
|
|
85
|
+
}
|
|
86
|
+
lines.push("");
|
|
87
|
+
}
|
|
88
|
+
if (report.affectedPackages.length > 0) {
|
|
89
|
+
lines.push(`## ${tr("Affected Workspace Packages")}`);
|
|
90
|
+
lines.push("");
|
|
91
|
+
lines.push(`| ${tr("Package")} | ${tr("Path")} |`);
|
|
92
|
+
lines.push("| --- | --- |");
|
|
93
|
+
for (const workspacePackage of report.affectedPackages) {
|
|
94
|
+
lines.push(`| ${escapePipe(workspacePackage.name)} | ${escapePipe(workspacePackage.path)} |`);
|
|
95
|
+
}
|
|
96
|
+
lines.push("");
|
|
97
|
+
}
|
|
98
|
+
if (report.dependencyChanges.length > 0) {
|
|
99
|
+
lines.push(`## ${tr("Dependency Changes")}`);
|
|
100
|
+
lines.push("");
|
|
101
|
+
lines.push(`| ${tr("File")} | ${tr("Type")} | ${tr("Package")} | ${tr("Path")} | ${tr("Change")} | ${tr("Before")} | ${tr("After")} |`);
|
|
102
|
+
lines.push("| --- | --- | --- | --- | --- | --- | --- |");
|
|
103
|
+
for (const change of report.dependencyChanges) {
|
|
104
|
+
lines.push(`| ${escapePipe(change.file)} | ${change.dependencyType} | ${escapePipe(change.packageName)} | ${escapePipe(change.packagePath ?? "")} | ${change.changeType} | ${escapePipe(change.before ?? "")} | ${escapePipe(change.after ?? "")} |`);
|
|
105
|
+
}
|
|
106
|
+
lines.push("");
|
|
107
|
+
}
|
|
108
|
+
if (report.packageScriptChanges.length > 0) {
|
|
109
|
+
lines.push(`## ${tr("Package Script Changes")}`);
|
|
110
|
+
lines.push("");
|
|
111
|
+
lines.push(`| ${tr("File")} | ${tr("Script")} | ${tr("Change")} | ${tr("Before")} | ${tr("After")} |`);
|
|
112
|
+
lines.push("| --- | --- | --- | --- | --- |");
|
|
113
|
+
for (const change of report.packageScriptChanges) {
|
|
114
|
+
lines.push(`| ${escapePipe(change.file)} | ${markdownTableCode(change.scriptName)} | ${change.changeType} | ${markdownTableCode(change.before ?? "")} | ${markdownTableCode(change.after ?? "")} |`);
|
|
115
|
+
}
|
|
116
|
+
lines.push("");
|
|
117
|
+
}
|
|
118
|
+
lines.push(`## ${tr("Changed Files")}`);
|
|
119
|
+
lines.push("");
|
|
120
|
+
if (report.changedFiles.length === 0) {
|
|
121
|
+
lines.push(tr("No changed files detected."));
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
lines.push(`| ${tr("File")} | ${tr("Status")} | ${tr("+/-")} | ${tr("Owners")} |`);
|
|
125
|
+
lines.push("| --- | --- | --- | --- |");
|
|
126
|
+
for (const file of report.changedFiles) {
|
|
127
|
+
const rename = file.previousPath ? `${escapePipe(file.previousPath)} -> ${escapePipe(file.path)}` : escapePipe(file.path);
|
|
128
|
+
lines.push(`| ${rename} | ${file.status} | +${file.additions} / -${file.deletions}${file.binary ? " (binary)" : ""} | ${escapePipe(file.owners?.join(", ") ?? "")} |`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
lines.push("");
|
|
132
|
+
lines.push(`## ${tr("Findings")}`);
|
|
133
|
+
lines.push("");
|
|
134
|
+
if (report.findings.length === 0) {
|
|
135
|
+
lines.push(tr("No risk findings."));
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
lines.push(`| ${tr("Severity")} | ${tr("Rule")} | ${tr("Finding")} | ${tr("Location")} | ${tr("Remediation")} |`);
|
|
139
|
+
lines.push("| --- | --- | --- | --- | --- |");
|
|
140
|
+
for (const finding of report.findings) {
|
|
141
|
+
const location = finding.file ? `${finding.file}${finding.line ? `:${finding.line}` : ""}` : "";
|
|
142
|
+
lines.push(`| ${tr(finding.severity)} | ${escapeText(finding.ruleId ?? "")} | ${escapeText(tr(finding.title))}: ${escapeText(tr(finding.detail))} | ${escapeText(location)} | ${escapeText(tr(finding.remediation ?? ""))} |`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
lines.push("");
|
|
146
|
+
lines.push(`## ${tr("Verification Plan")}`);
|
|
147
|
+
lines.push("");
|
|
148
|
+
if (executions.length === 0) {
|
|
149
|
+
lines.push(tr("No verification commands were inferred. This is common for docs-only patches or repos without recognized manifests."));
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
lines.push(`| ${tr("Required")} | ${tr("Package")} | ${tr("Command")} | ${tr("Result")} | ${tr("Reason")} |`);
|
|
153
|
+
lines.push("| --- | --- | --- | --- | --- |");
|
|
154
|
+
for (const command of executions) {
|
|
155
|
+
lines.push(`| ${command.required ? tr("yes") : tr("no")} | ${escapeText(command.packageName ?? command.packagePath ?? "")} | ${markdownTableCode(command.command)} | ${escapePipe(tr(formatVerificationStatus(command)))} | ${escapeText(tr(command.reason))} |`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
lines.push("");
|
|
159
|
+
if (report.commandResults.length > 0) {
|
|
160
|
+
lines.push(`## ${tr("Command Results")}`);
|
|
161
|
+
lines.push("");
|
|
162
|
+
for (const result of report.commandResults) {
|
|
163
|
+
lines.push(`### ${inlineCode(result.command)}`);
|
|
164
|
+
lines.push("");
|
|
165
|
+
lines.push(`- ${tr("Exit code")}: ${result.exitCode}`);
|
|
166
|
+
lines.push(`- ${tr("Duration")}: ${result.durationMs}ms`);
|
|
167
|
+
if (result.timedOut)
|
|
168
|
+
lines.push(`- ${tr("Timed out: yes")}`);
|
|
169
|
+
if (result.stdout.trim()) {
|
|
170
|
+
lines.push("");
|
|
171
|
+
lines.push(...fencedCodeBlock(result.stdout.trim()));
|
|
172
|
+
}
|
|
173
|
+
if (result.stderr.trim()) {
|
|
174
|
+
lines.push("");
|
|
175
|
+
lines.push(...fencedCodeBlock(result.stderr.trim()));
|
|
176
|
+
}
|
|
177
|
+
lines.push("");
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
lines.push(`## ${tr("Reviewer Notes")}`);
|
|
181
|
+
lines.push("");
|
|
182
|
+
lines.push(`- ${tr("Treat this report as triage evidence, not a replacement for review.")}`);
|
|
183
|
+
lines.push(`- ${tr("High-impact areas still need human sign-off even when automated commands pass.")}`);
|
|
184
|
+
return `${lines.join("\n")}\n`;
|
|
185
|
+
}
|
|
186
|
+
export function renderSummaryMarkdown(report, locale = "en") {
|
|
187
|
+
const tr = (text) => t(locale, text);
|
|
188
|
+
const lines = [];
|
|
189
|
+
const statusIcon = tr(report.summary.status === "pass" ? "PASS" : report.summary.status === "warn" ? "WARN" : "FAIL");
|
|
190
|
+
const requiredCommands = report.commandPlan.filter((command) => command.required);
|
|
191
|
+
const optionalCommands = report.commandPlan.filter((command) => !command.required);
|
|
192
|
+
const verification = verificationSummary(report);
|
|
193
|
+
const executions = verificationExecutions(report);
|
|
194
|
+
lines.push(`# ${tr("PatchDrill Summary")}`);
|
|
195
|
+
lines.push("");
|
|
196
|
+
lines.push(`**${statusIcon}** - ${tr("risk")} ${report.summary.riskScore}/100, ${tr("confidence")} ${report.summary.confidenceScore}/100`);
|
|
197
|
+
lines.push("");
|
|
198
|
+
lines.push(`- ${tr("Changed files")}: ${report.summary.changedFileCount} (+${report.summary.additions} / -${report.summary.deletions})`);
|
|
199
|
+
lines.push(`- ${tr("Verification plan")}: ${requiredCommands.length} ${tr("required")}, ${optionalCommands.length} ${tr("optional")}`);
|
|
200
|
+
lines.push(`- ${tr("Verification evidence")}: ${verificationEvidencePhrase(verification, locale)}`);
|
|
201
|
+
if (report.baseline) {
|
|
202
|
+
lines.push(`- ${tr("Baseline risk delta")}: ${formatDelta(report.baseline.riskDelta)} (${report.baseline.newFindingCount} ${tr("new findings")})`);
|
|
203
|
+
}
|
|
204
|
+
lines.push("");
|
|
205
|
+
lines.push(`## ${tr("Changed Files")}`);
|
|
206
|
+
lines.push("");
|
|
207
|
+
if (report.changedFiles.length === 0) {
|
|
208
|
+
lines.push(tr("No changed files detected."));
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
for (const file of report.changedFiles.slice(0, 5)) {
|
|
212
|
+
const path = file.previousPath ? `${file.previousPath} -> ${file.path}` : file.path;
|
|
213
|
+
lines.push(`- \`${escapeBackticks(path)}\` (${tr(file.status)}, +${file.additions} / -${file.deletions}${file.binary ? `, ${tr("binary")}` : ""})`);
|
|
214
|
+
}
|
|
215
|
+
if (report.changedFiles.length > 5) {
|
|
216
|
+
lines.push("");
|
|
217
|
+
lines.push(`_${report.changedFiles.length - 5} ${tr("more changed files in the full report.")}_`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
lines.push("");
|
|
221
|
+
lines.push(`## ${tr("Top Findings")}`);
|
|
222
|
+
lines.push("");
|
|
223
|
+
if (report.findings.length === 0) {
|
|
224
|
+
lines.push(tr("No risk findings."));
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
lines.push(`| ${tr("Severity")} | ${tr("Finding")} | ${tr("Location")} |`);
|
|
228
|
+
lines.push("| --- | --- | --- |");
|
|
229
|
+
for (const finding of report.findings.slice(0, 5)) {
|
|
230
|
+
lines.push(`| ${tr(finding.severity)} | ${escapeText(tr(finding.title))} | ${escapeText(tr(findingLocation(finding)))} |`);
|
|
231
|
+
}
|
|
232
|
+
if (report.findings.length > 5) {
|
|
233
|
+
lines.push("");
|
|
234
|
+
lines.push(`_${report.findings.length - 5} ${tr("more findings in the full report.")}_`);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
lines.push("");
|
|
238
|
+
lines.push(`## ${tr("Required Checks")}`);
|
|
239
|
+
lines.push("");
|
|
240
|
+
if (requiredCommands.length === 0) {
|
|
241
|
+
lines.push(tr("No required verification commands were inferred."));
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
lines.push(`| ${tr("Command")} | ${tr("Result")} |`);
|
|
245
|
+
lines.push("| --- | --- |");
|
|
246
|
+
for (const command of executions.filter((execution) => execution.required).slice(0, 5)) {
|
|
247
|
+
lines.push(`| ${markdownTableCode(command.command)} | ${escapePipe(tr(formatVerificationStatus(command)))} |`);
|
|
248
|
+
}
|
|
249
|
+
if (requiredCommands.length > 5) {
|
|
250
|
+
lines.push("");
|
|
251
|
+
lines.push(`_${requiredCommands.length - 5} ${tr("more required checks in the full report.")}_`);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
lines.push("");
|
|
255
|
+
lines.push(tr("Full Markdown, JSON, SARIF, and HTML reports remain available as CI artifacts when configured."));
|
|
256
|
+
return `${lines.join("\n")}\n`;
|
|
257
|
+
}
|
|
258
|
+
function findingLocation(finding) {
|
|
259
|
+
return finding.file ? `${finding.file}${finding.line ? `:${finding.line}` : ""}` : "Global";
|
|
260
|
+
}
|
|
261
|
+
export function verificationEvidencePhrase(verification, locale) {
|
|
262
|
+
const tr = (text) => t(locale, text);
|
|
263
|
+
return `${verification.run} ${tr("run")}, ${verification.passed} ${tr("passed")}, ${verification.failed} ${tr("failed")}, ${verification.timedOut} ${tr("timed out")}, ${verification.missingRequired} ${tr("missing required")}, ${verification.skippedOptional} ${tr("optional skipped")}`;
|
|
264
|
+
}
|
|
265
|
+
function escapePipe(value) {
|
|
266
|
+
return value.replaceAll("|", "\\|").replaceAll("\n", " ");
|
|
267
|
+
}
|
|
268
|
+
// Untrusted free text rendered as plain Markdown can carry inline HTML that
|
|
269
|
+
// renderers like GitHub permit (e.g. <img src=x>, <a href> spoofs). Neutralizing
|
|
270
|
+
// "<" breaks every tag while keeping the text legible.
|
|
271
|
+
function escapeText(value) {
|
|
272
|
+
return escapePipe(value).replaceAll("<", "<");
|
|
273
|
+
}
|
|
274
|
+
function escapeBackticks(value) {
|
|
275
|
+
return value.replaceAll("`", "\\`");
|
|
276
|
+
}
|
|
277
|
+
function markdownTableCode(value) {
|
|
278
|
+
return `\`${escapePipe(escapeBackticks(value))}\``;
|
|
279
|
+
}
|
|
280
|
+
function longestBacktickRun(value) {
|
|
281
|
+
let longest = 0;
|
|
282
|
+
let current = 0;
|
|
283
|
+
for (const char of value) {
|
|
284
|
+
if (char === "`") {
|
|
285
|
+
current += 1;
|
|
286
|
+
if (current > longest)
|
|
287
|
+
longest = current;
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
current = 0;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return longest;
|
|
294
|
+
}
|
|
295
|
+
// Untrusted command output may itself contain ``` fences; size the fence to one
|
|
296
|
+
// backtick longer than the longest run so the content cannot break out.
|
|
297
|
+
function fencedCodeBlock(content) {
|
|
298
|
+
const fence = "`".repeat(Math.max(3, longestBacktickRun(content) + 1));
|
|
299
|
+
return [`${fence}text`, content, fence];
|
|
300
|
+
}
|
|
301
|
+
function inlineCode(value) {
|
|
302
|
+
const ticks = "`".repeat(longestBacktickRun(value) + 1);
|
|
303
|
+
const single = value.replaceAll("\n", " ");
|
|
304
|
+
const padded = single.startsWith("`") || single.endsWith("`") ? ` ${single} ` : single;
|
|
305
|
+
return `${ticks}${padded}${ticks}`;
|
|
306
|
+
}
|
|
307
|
+
function formatDelta(value) {
|
|
308
|
+
return value > 0 ? `+${value}` : `${value}`;
|
|
309
|
+
}
|
|
310
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"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"}
|
package/dist/risk.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AddedLine, ChangedFile, CommandPlan, CommandResult, DependencyChange, PackageScriptChange, PatchPolicy, PatchStatus, RiskFinding } from "./types.js";
|
|
2
|
+
export interface RiskAssessment {
|
|
3
|
+
riskScore: number;
|
|
4
|
+
confidenceScore: number;
|
|
5
|
+
status: PatchStatus;
|
|
6
|
+
findings: RiskFinding[];
|
|
7
|
+
}
|
|
8
|
+
export interface RiskOptions {
|
|
9
|
+
addedLines?: AddedLine[];
|
|
10
|
+
commandPlan?: CommandPlan[];
|
|
11
|
+
dependencyChanges?: DependencyChange[];
|
|
12
|
+
workflowFiles?: {
|
|
13
|
+
file: string;
|
|
14
|
+
content: string;
|
|
15
|
+
}[];
|
|
16
|
+
packageScriptChanges?: PackageScriptChange[];
|
|
17
|
+
policy?: PatchPolicy;
|
|
18
|
+
}
|
|
19
|
+
export declare function assessRisk(changedFiles: ChangedFile[], commandResults: CommandResult[], options?: RiskOptions): RiskAssessment;
|