@juangadm/pre-post 1.3.0 → 1.5.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/README.md +43 -288
- package/assets/labels/post.png +0 -0
- package/assets/labels/pre.png +0 -0
- package/dist/attach.d.ts +59 -0
- package/dist/attach.d.ts.map +1 -0
- package/dist/attach.js +137 -0
- package/dist/attach.js.map +1 -0
- package/dist/baseline.d.ts +26 -1
- package/dist/baseline.d.ts.map +1 -1
- package/dist/baseline.js +92 -19
- package/dist/baseline.js.map +1 -1
- package/dist/bin/cli.js +40 -16
- package/dist/bin/cli.js.map +1 -1
- package/dist/browser.d.ts +79 -3
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +179 -38
- package/dist/browser.js.map +1 -1
- package/dist/commands/compare.d.ts.map +1 -1
- package/dist/commands/compare.js +5 -5
- package/dist/commands/compare.js.map +1 -1
- package/dist/commands/detect.d.ts +5 -0
- package/dist/commands/detect.d.ts.map +1 -1
- package/dist/commands/detect.js +3 -0
- package/dist/commands/detect.js.map +1 -1
- package/dist/commands/doctor.d.ts +6 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +21 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/pr.d.ts +5 -0
- package/dist/commands/pr.d.ts.map +1 -1
- package/dist/commands/pr.js +167 -113
- package/dist/commands/pr.js.map +1 -1
- package/dist/comparison.d.ts +5 -0
- package/dist/comparison.d.ts.map +1 -1
- package/dist/comparison.js +5 -5
- package/dist/comparison.js.map +1 -1
- package/dist/compose.d.ts +72 -0
- package/dist/compose.d.ts.map +1 -0
- package/dist/compose.js +237 -0
- package/dist/compose.js.map +1 -0
- package/dist/diff-worker.d.ts +1 -0
- package/dist/diff-worker.d.ts.map +1 -1
- package/dist/diff-worker.js +1 -0
- package/dist/diff-worker.js.map +1 -1
- package/dist/diff.d.ts +42 -0
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +142 -24
- package/dist/diff.js.map +1 -1
- package/dist/doctor.d.ts +4 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +5 -1
- package/dist/doctor.js.map +1 -1
- package/dist/drift.d.ts +29 -0
- package/dist/drift.d.ts.map +1 -0
- package/dist/drift.js +106 -0
- package/dist/drift.js.map +1 -0
- package/dist/errors.d.ts +6 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +6 -0
- package/dist/errors.js.map +1 -1
- package/dist/ffmpeg.d.ts +35 -0
- package/dist/ffmpeg.d.ts.map +1 -0
- package/dist/ffmpeg.js +143 -0
- package/dist/ffmpeg.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/moments.d.ts +83 -0
- package/dist/moments.d.ts.map +1 -0
- package/dist/moments.js +170 -0
- package/dist/moments.js.map +1 -0
- package/dist/record.d.ts +69 -0
- package/dist/record.d.ts.map +1 -0
- package/dist/record.js +223 -0
- package/dist/record.js.map +1 -0
- package/dist/report.d.ts +29 -1
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +174 -42
- package/dist/report.js.map +1 -1
- package/dist/routes/imports.d.ts +21 -1
- package/dist/routes/imports.d.ts.map +1 -1
- package/dist/routes/imports.js +32 -2
- package/dist/routes/imports.js.map +1 -1
- package/dist/routes.d.ts +18 -0
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +110 -29
- package/dist/routes.js.map +1 -1
- package/dist/run.d.ts +48 -12
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +140 -18
- package/dist/run.js.map +1 -1
- package/dist/timeline.d.ts +46 -0
- package/dist/timeline.d.ts.map +1 -0
- package/dist/timeline.js +80 -0
- package/dist/timeline.js.map +1 -0
- package/dist/types.d.ts +95 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -1
- package/dist/video.d.ts +19 -0
- package/dist/video.d.ts.map +1 -0
- package/dist/video.js +109 -0
- package/dist/video.js.map +1 -0
- package/package.json +4 -2
- package/skill/SKILL.md +38 -10
|
@@ -20,6 +20,11 @@ export declare function runDetect(opts?: {
|
|
|
20
20
|
confidence: "high" | "medium" | "low";
|
|
21
21
|
reason: string;
|
|
22
22
|
}[];
|
|
23
|
+
omitted: {
|
|
24
|
+
path: string;
|
|
25
|
+
confidence: "high" | "medium" | "low";
|
|
26
|
+
reason: string;
|
|
27
|
+
}[];
|
|
23
28
|
skippedDynamic: string[];
|
|
24
29
|
};
|
|
25
30
|
//# sourceMappingURL=detect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKxC,wBAAgB,SAAS,CAAC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKxC,wBAAgB,SAAS,CAAC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO;;;;;;;;;;;;;;;;;;;EAgB9G"}
|
package/dist/commands/detect.js
CHANGED
|
@@ -16,6 +16,9 @@ export function runDetect(opts = {}) {
|
|
|
16
16
|
// cannot tell "nothing changed" from "compared against the wrong thing".
|
|
17
17
|
base: detection.base && { sha: detection.base.sha.slice(0, 7), source: detection.base.source },
|
|
18
18
|
routes: detection.routes.map(r => ({ path: r.path, confidence: r.confidence, reason: r.reason })),
|
|
19
|
+
// Affected but not captured: over the maxRoutes cap. Listed so that a
|
|
20
|
+
// short `routes` is never mistaken for everything the branch touches.
|
|
21
|
+
omitted: detection.omitted.map(r => ({ path: r.path, confidence: r.confidence, reason: r.reason })),
|
|
19
22
|
skippedDynamic: detection.skippedDynamic,
|
|
20
23
|
};
|
|
21
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,UAAU,SAAS,CAAC,OAAmF,EAAE;IAC7G,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,mBAAmB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5J,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,GAAG;QACtD,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,MAAM;QAC3C,sEAAsE;QACtE,yEAAyE;QACzE,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE;QAC9F,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACjG,cAAc,EAAE,SAAS,CAAC,cAAc;KACzC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,UAAU,SAAS,CAAC,OAAmF,EAAE;IAC7G,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,mBAAmB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5J,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,GAAG;QACtD,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,MAAM;QAC3C,sEAAsE;QACtE,yEAAyE;QACzE,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE;QAC9F,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACjG,sEAAsE;QACtE,sEAAsE;QACtE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACnG,cAAc,EAAE,SAAS,CAAC,cAAc;KACzC,CAAC;AACJ,CAAC"}
|
|
@@ -38,5 +38,11 @@ export declare function doctorExitCode(checks: DoctorCheck[]): number;
|
|
|
38
38
|
* "ready" there is exactly the lie the exit-code contract exists to prevent.
|
|
39
39
|
*/
|
|
40
40
|
export declare function repoIdentityCheck(root: string): DoctorCheck;
|
|
41
|
+
/**
|
|
42
|
+
* Advisory, like everything about video: a run with Moments still records
|
|
43
|
+
* without either (ffmpeg installs itself on first use), and a clip that cannot
|
|
44
|
+
* play inline is linked instead.
|
|
45
|
+
*/
|
|
46
|
+
export declare function videoCheck(): DoctorCheck;
|
|
41
47
|
export declare function runDoctor(cwd?: string): Promise<DoctorCheck[]>;
|
|
42
48
|
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAE5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAM3D;AAkCD;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,WAAW,CAKxC;AAED,wBAAsB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA2CpE"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -10,6 +10,9 @@ import { repoRoot, resolveOwnerRepo } from '../git.js';
|
|
|
10
10
|
import { servableDir } from '../baseline.js';
|
|
11
11
|
import { cannotPublishHint, checkWriteAccess, findToken, GitHub, loginHint } from '../github.js';
|
|
12
12
|
import { closeBrowser } from '../browser.js';
|
|
13
|
+
import { driftNotes, ownVersion } from '../drift.js';
|
|
14
|
+
import { findFfmpeg } from '../ffmpeg.js';
|
|
15
|
+
import { ghAttachSupport } from '../attach.js';
|
|
13
16
|
/**
|
|
14
17
|
* doctor's contract, relied on by anything that runs it before a run:
|
|
15
18
|
*
|
|
@@ -75,6 +78,17 @@ async function githubCheck(cwd) {
|
|
|
75
78
|
return { name: 'github', ok: false, detail: cannotPublishHint(ownerRepo, found.source), required: true };
|
|
76
79
|
return { name: 'github', ok: false, detail: `could not reach GitHub to check the token (${access.detail})` };
|
|
77
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Advisory, like everything about video: a run with Moments still records
|
|
83
|
+
* without either (ffmpeg installs itself on first use), and a clip that cannot
|
|
84
|
+
* play inline is linked instead.
|
|
85
|
+
*/
|
|
86
|
+
export function videoCheck() {
|
|
87
|
+
const ffmpeg = findFfmpeg();
|
|
88
|
+
const attach = ghAttachSupport();
|
|
89
|
+
const parts = [ffmpeg ? 'ffmpeg ready' : 'ffmpeg installs on first recording (~2 MB)', attach.ok ? 'gh can attach videos inline' : attach.reason];
|
|
90
|
+
return { name: 'video', ok: attach.ok, detail: parts.join('; ') };
|
|
91
|
+
}
|
|
78
92
|
export async function runDoctor(cwd) {
|
|
79
93
|
const checks = [];
|
|
80
94
|
try {
|
|
@@ -88,6 +102,7 @@ export async function runDoctor(cwd) {
|
|
|
88
102
|
await closeBrowser();
|
|
89
103
|
}
|
|
90
104
|
checks.push(await githubCheck(cwd));
|
|
105
|
+
checks.push(videoCheck());
|
|
91
106
|
// Name the ports that answered but were passed over. "None found on the
|
|
92
107
|
// usual ports" reads as a lie to anyone who knows something is listening on
|
|
93
108
|
// one of them, and the usual something is a macOS system service on 5000.
|
|
@@ -102,6 +117,12 @@ export async function runDoctor(cwd) {
|
|
|
102
117
|
const cfg = loadConfig(root);
|
|
103
118
|
checks.push(cfg.before ? { name: 'before', ok: true, detail: cfg.before } : { name: 'before', ok: false, detail: 'not set — pass --before once and it is saved' });
|
|
104
119
|
checks.push({ name: 'config', ok: true, detail: fs.existsSync(configPath(root)) ? CONFIG_FILENAME : 'none (defaults)' });
|
|
120
|
+
// Advisory: a stale skill copy or pinned range does not stop a run, but it
|
|
121
|
+
// is why an agent follows instructions for a CLI that no longer exists.
|
|
122
|
+
const drift = driftNotes({ repoRoot: root });
|
|
123
|
+
checks.push(drift.length
|
|
124
|
+
? { name: 'version', ok: false, detail: drift.join(' ') }
|
|
125
|
+
: { name: 'version', ok: true, detail: `skill and project agree with ${ownVersion()}` });
|
|
105
126
|
// The last-resort baseline serves the base commit itself, so knowing
|
|
106
127
|
// whether anything here *can* be served is worth reporting before a run
|
|
107
128
|
// needs it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/pr.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { Framework, PrePostConfig, PrRunResult } from '../types.js';
|
|
5
5
|
import { Settings } from '../config.js';
|
|
6
|
+
import { Moment } from '../moments.js';
|
|
6
7
|
export interface PrCommandOptions extends Partial<Settings> {
|
|
7
8
|
cwd?: string;
|
|
8
9
|
before?: string;
|
|
@@ -30,6 +31,10 @@ export interface PrCommandOptions extends Partial<Settings> {
|
|
|
30
31
|
/** Rebuild the baseline from the base commit when no URL is reachable. Default true. */
|
|
31
32
|
localBaseline?: boolean;
|
|
32
33
|
version?: string;
|
|
34
|
+
/** Moments to record, already validated (a `--moments` file). Default: `.pre-post.json` "moments". */
|
|
35
|
+
moments?: Moment[];
|
|
36
|
+
/** False to record no video this run. */
|
|
37
|
+
video?: boolean;
|
|
33
38
|
log?: (msg: string) => void;
|
|
34
39
|
}
|
|
35
40
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,
|
|
1
|
+
{"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAA+C,SAAS,EAAmB,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClI,OAAO,EAA+B,QAAQ,EAAgB,MAAM,cAAc,CAAC;AAenF,OAAO,EAAE,MAAM,EAA4C,MAAM,eAAe,CAAC;AAIjF,MAAM,WAAW,gBAAiB,SAAQ,OAAO,CAAC,QAAQ,CAAC;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wFAAwF;IACxF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sGAAsG;IACtG,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAaD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAElI;AAMD,wBAAsB,KAAK,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CA8W7E"}
|
package/dist/commands/pr.js
CHANGED
|
@@ -4,21 +4,25 @@
|
|
|
4
4
|
import fs from 'fs';
|
|
5
5
|
import os from 'os';
|
|
6
6
|
import path from 'path';
|
|
7
|
-
import { ARTIFACT_KINDS, artifactSuffix } from '../types.js';
|
|
7
|
+
import { ARTIFACT_KINDS, artifactSuffix, isBrokenVerdict } from '../types.js';
|
|
8
8
|
import { loadConfig, resolveSettings, updateConfig } from '../config.js';
|
|
9
9
|
import { currentBranch, headSha, repoRoot, resolveOwnerRepo } from '../git.js';
|
|
10
|
-
import { detectRoutesForRepo, resolveSample } from '../routes.js';
|
|
10
|
+
import { capNotice, detectRoutesForRepo, resolveSample } from '../routes.js';
|
|
11
11
|
import { closeBrowser } from '../browser.js';
|
|
12
12
|
import { parseViewport } from '../viewport.js';
|
|
13
13
|
import { authHint, detectDevServer, ensureBrowser, NeedsHumanError, probeUrl } from '../doctor.js';
|
|
14
14
|
import { API_BASE, cannotPublishHint, checkWriteAccess, findOpenPr, findOpenPrForCommit, findToken, getPr, GitHub, GitHubError, loginHint, publishAssets, upsertPrDescription, upsertStickyComment } from '../github.js';
|
|
15
|
-
import { buildComment, STICKY_MARKER } from '../report.js';
|
|
15
|
+
import { buildComment, groupChanges, STICKY_MARKER } from '../report.js';
|
|
16
16
|
import { resolveAuth } from '../sessions.js';
|
|
17
|
-
import { routeSlug, runTasks } from '../run.js';
|
|
17
|
+
import { routeSlug, runTasks, throwIfBlocked } from '../run.js';
|
|
18
18
|
import { joinUrl } from '../url.js';
|
|
19
19
|
import { describeComparison, resolveComparison } from '../comparison.js';
|
|
20
20
|
import { Stopwatch } from '../timings.js';
|
|
21
|
+
import { driftNotes } from '../drift.js';
|
|
21
22
|
import { buildSheet } from '../sheet.js';
|
|
23
|
+
import { parseMoments, selectMoments, skippedNote } from '../moments.js';
|
|
24
|
+
import { recordMoments } from '../video.js';
|
|
25
|
+
import { attachClips } from '../attach.js';
|
|
22
26
|
/**
|
|
23
27
|
* What ends up on the assets branch. The diff overlay is an intermediate used
|
|
24
28
|
* to locate the changed region; Pre beside Post is the comparison a reviewer
|
|
@@ -53,6 +57,10 @@ export async function runPr(opts = {}) {
|
|
|
53
57
|
// PR's branch in GITHUB_HEAD_REF.
|
|
54
58
|
const branch = currentBranch(root) ?? (process.env.GITHUB_HEAD_REF?.trim() || null);
|
|
55
59
|
const head = headSha(root);
|
|
60
|
+
// Validated before anything slow: a typo in a step should cost a second,
|
|
61
|
+
// not a whole capture pass.
|
|
62
|
+
const { run: moments, skipped: momentsSkipped } = selectMoments(opts.video === false ? []
|
|
63
|
+
: opts.moments ?? (config.moments ? parseMoments(config.moments, '.pre-post.json "moments"') : []));
|
|
56
64
|
/** Tears down anything resolution started (a local dev server). */
|
|
57
65
|
let cleanupComparison = async () => undefined;
|
|
58
66
|
// --- GitHub access (checked before any time is spent) -----------------------
|
|
@@ -125,10 +133,55 @@ export async function runPr(opts = {}) {
|
|
|
125
133
|
delivery: { status: 'no-pr' },
|
|
126
134
|
};
|
|
127
135
|
}
|
|
128
|
-
//
|
|
129
|
-
//
|
|
130
|
-
|
|
131
|
-
const
|
|
136
|
+
// Local detection runs regardless: it is cheap, and it is the fallback when
|
|
137
|
+
// the PR has no preview deployment.
|
|
138
|
+
const explicitAfter = afterFor(opts, config);
|
|
139
|
+
const devServer = explicitAfter ? Promise.resolve(explicitAfter) : detectDevServer();
|
|
140
|
+
// A skill copy or a pinned range from another release is why an agent
|
|
141
|
+
// follows instructions for a CLI that no longer exists. Say so up front.
|
|
142
|
+
for (const note of driftNotes({ version: opts.version, repoRoot: root }))
|
|
143
|
+
log(`Note: ${note}`);
|
|
144
|
+
// Detection is synchronous git + fs work, so run it while the PR lookup is in
|
|
145
|
+
// flight rather than after it.
|
|
146
|
+
const detection = detectRoutesForRepo({ cwd: root, config, maxRoutes: settings.maxRoutes, framework: opts.framework, diffTarget: opts.base, log });
|
|
147
|
+
timings.add('detect', detection.durationMs);
|
|
148
|
+
const appPrefix = path.relative(root, detection.appRoot) || undefined;
|
|
149
|
+
// --- Routes --------------------------------------------------------------------
|
|
150
|
+
// Settled before anything slow starts: a branch whose only affected page
|
|
151
|
+
// still needs a sample URL gets that answer in a second, not after a browser
|
|
152
|
+
// and two dev servers have started for nothing.
|
|
153
|
+
const explicitRoutes = Boolean(opts.routes?.length);
|
|
154
|
+
// A Moment names its page, so a branch whose changes detection cannot place
|
|
155
|
+
// (a shared component, a style) still has something to capture.
|
|
156
|
+
const momentRoutes = [...new Set(moments.map(m => m.route))];
|
|
157
|
+
const detected = detection.routes.map(r => r.path);
|
|
158
|
+
const routes = explicitRoutes ? opts.routes : detected.length ? detected : momentRoutes;
|
|
159
|
+
const skippedDynamic = explicitRoutes ? [] : detection.skippedDynamic;
|
|
160
|
+
const omitted = !explicitRoutes && detection.omitted.length
|
|
161
|
+
? { routes: detection.omitted.map(r => r.path), cap: settings.maxRoutes }
|
|
162
|
+
: undefined;
|
|
163
|
+
if (!explicitRoutes) {
|
|
164
|
+
log(`Routes (${detection.framework}, ${detection.durationMs}ms): ${detected.length ? detected.join(', ') : 'none detected'}`);
|
|
165
|
+
for (const r of detection.routes)
|
|
166
|
+
log(` ${r.path.padEnd(28)} ${r.confidence.padEnd(6)} ${r.reason}`);
|
|
167
|
+
if (omitted)
|
|
168
|
+
log(` ${capNotice(omitted.routes, omitted.cap)}`);
|
|
169
|
+
if (!detected.length && routes.length) {
|
|
170
|
+
log(`Capturing the pages the Moments use: ${routes.join(', ')}`);
|
|
171
|
+
}
|
|
172
|
+
else if (!routes.length) {
|
|
173
|
+
log(skippedDynamic.length
|
|
174
|
+
? `Nothing to capture until ${skippedDynamic.join(', ')} ${skippedDynamic.length === 1 ? 'has' : 'have'} a sample URL.`
|
|
175
|
+
: 'Nothing this branch changed renders on a page; nothing to capture.');
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const momentsSkippedNote = skippedNote(momentsSkipped);
|
|
179
|
+
if (momentsSkippedNote)
|
|
180
|
+
log(momentsSkippedNote);
|
|
181
|
+
// --- Start the slow, independent things now; they overlap resolution -------
|
|
182
|
+
// Only after the --require-pr answer and only with a page to capture: a
|
|
183
|
+
// fresh runner would otherwise download and launch Chromium for nothing.
|
|
184
|
+
const browserReady = routes.length ? timings.time('browser', ensureBrowser(), { background: true }) : Promise.resolve();
|
|
132
185
|
/**
|
|
133
186
|
* Everything this run started, in a form every early exit can call.
|
|
134
187
|
*
|
|
@@ -140,19 +193,13 @@ export async function runPr(opts = {}) {
|
|
|
140
193
|
* nothing, and the launch then resolves into an orphan.
|
|
141
194
|
*/
|
|
142
195
|
const stopEverything = async () => {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
await
|
|
196
|
+
// Independent, so side by side: the browser and the servers each take
|
|
197
|
+
// their own time to go, and neither needs the other gone first.
|
|
198
|
+
await Promise.all([
|
|
199
|
+
browserReady.catch(() => undefined).then(() => closeBrowser()),
|
|
200
|
+
cleanupComparison(),
|
|
201
|
+
]);
|
|
146
202
|
};
|
|
147
|
-
// Local detection runs regardless: it is cheap, and it is the fallback when
|
|
148
|
-
// the PR has no preview deployment.
|
|
149
|
-
const explicitAfter = afterFor(opts, config);
|
|
150
|
-
const devServer = explicitAfter ? Promise.resolve(explicitAfter) : detectDevServer();
|
|
151
|
-
// Detection is synchronous git + fs work, so run it while the PR lookup is in
|
|
152
|
-
// flight rather than after it.
|
|
153
|
-
const detection = detectRoutesForRepo({ cwd: root, config, maxRoutes: settings.maxRoutes, framework: opts.framework, diffTarget: opts.base, log });
|
|
154
|
-
timings.add('detect', detection.durationMs);
|
|
155
|
-
const appPrefix = path.relative(root, detection.appRoot) || undefined;
|
|
156
203
|
const pr = await timings.time('github', prLookup);
|
|
157
204
|
// Whatever refused the lookup refuses every later read too: resolution would
|
|
158
205
|
// only spend time asking GitHub for deployments it cannot see.
|
|
@@ -176,6 +223,58 @@ export async function runPr(opts = {}) {
|
|
|
176
223
|
writeGh = null;
|
|
177
224
|
log('GitHub will not accept this run\'s screenshots; capturing anyway, nothing will be published.');
|
|
178
225
|
}
|
|
226
|
+
const now = new Date();
|
|
227
|
+
const id = runId(now);
|
|
228
|
+
/** Assemble the result from whatever was captured, write it to the PR, and time it. */
|
|
229
|
+
const finish = async (captured) => {
|
|
230
|
+
const result = {
|
|
231
|
+
repo: ownerRepo,
|
|
232
|
+
prNumber: pr?.number,
|
|
233
|
+
...captured,
|
|
234
|
+
momentsSkipped: momentsSkipped.length ? momentsSkipped : undefined,
|
|
235
|
+
skippedDynamic,
|
|
236
|
+
omitted,
|
|
237
|
+
durationMs: Date.now() - started,
|
|
238
|
+
markdown: '',
|
|
239
|
+
timings: timings.toJSON(),
|
|
240
|
+
delivery: opts.dryRun ? { status: 'dry-run' } : skipReason ? { status: 'skipped', hint: skipReason } : { status: 'published' },
|
|
241
|
+
};
|
|
242
|
+
result.markdown = buildComment(result, { version: opts.version, headSha: head, now, filesDir: result.outputDir });
|
|
243
|
+
if (writeGh && (opts.comment ?? true))
|
|
244
|
+
await timings.time('describe', async () => {
|
|
245
|
+
if (pr) {
|
|
246
|
+
// The description is what a reviewer reads first, so put the images there
|
|
247
|
+
// and fall back to a comment only when the PR cannot be edited.
|
|
248
|
+
const described = await upsertPrDescription(writeGh, ownerRepo, pr.number, result.markdown, 'pre-post');
|
|
249
|
+
if (described.updated) {
|
|
250
|
+
result.commentUrl = described.html_url;
|
|
251
|
+
result.commentKind = 'description';
|
|
252
|
+
log(`Updated PR description: ${described.html_url}`);
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
const comment = await upsertStickyComment(writeGh, ownerRepo, pr.number, result.markdown, STICKY_MARKER);
|
|
256
|
+
result.commentUrl = comment.html_url;
|
|
257
|
+
result.commentKind = 'comment';
|
|
258
|
+
log(`Cannot edit the PR description; ${comment.created ? 'posted' : 'updated'} a comment instead: ${comment.html_url}`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
log(`No open PR for branch "${branch}". Open one and re-run, or paste the markdown below.`);
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
// Measured again after the description update, so the summary's total and
|
|
266
|
+
// the Timings line below describe the same span. The markdown above keeps
|
|
267
|
+
// the earlier figure: it had to be written before this step could run.
|
|
268
|
+
result.durationMs = Date.now() - started;
|
|
269
|
+
result.timings = timings.toJSON();
|
|
270
|
+
const [first, ...rest] = timings.summary(result.durationMs);
|
|
271
|
+
log(`Timings: ${first}`);
|
|
272
|
+
for (const line of rest)
|
|
273
|
+
log(line);
|
|
274
|
+
return result;
|
|
275
|
+
};
|
|
276
|
+
if (!routes.length)
|
|
277
|
+
return finish({ outcomes: [], beforeBase: '', afterBase: '', outputDir: '' });
|
|
179
278
|
// --- What are we comparing? ---------------------------------------------------
|
|
180
279
|
const headers = headersFor(config, opts);
|
|
181
280
|
// Resolution can throw (no baseline, an install that failed): the browser was
|
|
@@ -204,24 +303,6 @@ export async function runPr(opts = {}) {
|
|
|
204
303
|
updateConfig(root, { before });
|
|
205
304
|
log('Saved production URL to .pre-post.json');
|
|
206
305
|
}
|
|
207
|
-
// --- Routes (sync: git + import graph) ----------------------------------------
|
|
208
|
-
const samples = config.samples || {};
|
|
209
|
-
let routes;
|
|
210
|
-
let skippedDynamic = [];
|
|
211
|
-
if (opts.routes?.length) {
|
|
212
|
-
routes = opts.routes;
|
|
213
|
-
}
|
|
214
|
-
else {
|
|
215
|
-
routes = detection.routes.map(r => r.path);
|
|
216
|
-
skippedDynamic = detection.skippedDynamic;
|
|
217
|
-
log(`Routes (${detection.framework}, ${detection.durationMs}ms): ${routes.length ? routes.join(', ') : 'none detected'}`);
|
|
218
|
-
for (const r of detection.routes)
|
|
219
|
-
log(` ${r.path.padEnd(28)} ${r.confidence.padEnd(6)} ${r.reason}`);
|
|
220
|
-
if (routes.length === 0) {
|
|
221
|
-
routes = ['/'];
|
|
222
|
-
log('No routes detected from the diff; capturing / only.');
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
306
|
// --- Reachability ---------------------------------------------------------------
|
|
226
307
|
// Resolution already probed whatever it chose; this catches a side that died
|
|
227
308
|
// in between, and names which one so the message is actionable.
|
|
@@ -243,10 +324,9 @@ export async function runPr(opts = {}) {
|
|
|
243
324
|
await fail(authHint({ url: after, vercel: afterProbe.vercel }));
|
|
244
325
|
const auth = resolveAuth({ configHeaders: config.headers, headers: opts.headers, cookies: opts.cookies, cookieUrl: before, urls: [before, after] });
|
|
245
326
|
// --- Capture -------------------------------------------------------------------
|
|
246
|
-
const now = new Date();
|
|
247
|
-
const id = runId(now);
|
|
248
327
|
const outputDir = opts.output || path.join(os.tmpdir(), 'pre-post', ownerRepo.replace('/', '__'), id);
|
|
249
328
|
const viewports = settings.viewports.map(parseViewport);
|
|
329
|
+
const samples = config.samples || {};
|
|
250
330
|
const tasks = [];
|
|
251
331
|
for (const route of routes) {
|
|
252
332
|
const resolved = resolveSample(route, samples);
|
|
@@ -258,6 +338,7 @@ export async function runPr(opts = {}) {
|
|
|
258
338
|
await browserReady;
|
|
259
339
|
let run;
|
|
260
340
|
let sheetPath;
|
|
341
|
+
let momentOutcomes;
|
|
261
342
|
try {
|
|
262
343
|
run = await timings.time('capture', runTasks(tasks, {
|
|
263
344
|
outputDir, ...settings, wait: opts.wait, auth, log,
|
|
@@ -265,94 +346,67 @@ export async function runPr(opts = {}) {
|
|
|
265
346
|
sides: { before: comparison.before, after: comparison.after },
|
|
266
347
|
}));
|
|
267
348
|
// Drawn while the browser is still open. A convenience, so a failure to
|
|
268
|
-
// draw it is logged and never costs the run its result.
|
|
349
|
+
// draw it is logged and never costs the run its result. The clips follow
|
|
350
|
+
// the same rule, and run beside it: neither needs the other.
|
|
269
351
|
if (!run.verdict) {
|
|
270
|
-
sheetPath = await
|
|
271
|
-
.
|
|
272
|
-
|
|
352
|
+
[sheetPath, momentOutcomes] = await Promise.all([
|
|
353
|
+
timings.time('sheet', buildSheet(run.outcomes, outputDir))
|
|
354
|
+
.then(p => p ?? undefined)
|
|
355
|
+
.catch(err => { log(`Could not draw the summary sheet (${err instanceof Error ? err.message : err}).`); return undefined; }),
|
|
356
|
+
moments.length
|
|
357
|
+
? timings.time('video', recordMoments(moments, { before, after, auth, outputDir, log }))
|
|
358
|
+
.catch(err => { log(`Could not record the Moments (${err instanceof Error ? err.message : err}).`); return undefined; })
|
|
359
|
+
: Promise.resolve(undefined),
|
|
360
|
+
]);
|
|
273
361
|
}
|
|
274
362
|
}
|
|
275
363
|
finally {
|
|
276
|
-
// Timed on its own:
|
|
277
|
-
//
|
|
364
|
+
// Timed on its own: stopping the servers and the browser is real wall
|
|
365
|
+
// clock that used to show up under no step at all.
|
|
278
366
|
await timings.time('cleanup', stopEverything());
|
|
279
367
|
}
|
|
280
|
-
const { outcomes } = run;
|
|
281
|
-
//
|
|
282
|
-
//
|
|
283
|
-
//
|
|
284
|
-
//
|
|
285
|
-
|
|
286
|
-
throw new NeedsHumanError(run.verdict.hint);
|
|
368
|
+
const { outcomes, verdict } = run;
|
|
369
|
+
// A wall or a wrong baseline means there is no honest result to publish, so
|
|
370
|
+
// stop with the one thing a human has to do. A broken page is not thrown: it
|
|
371
|
+
// is a finding about the code, and the PR says so in one sentence with no
|
|
372
|
+
// images — no picture of an error page is ever published.
|
|
373
|
+
throwIfBlocked(verdict);
|
|
287
374
|
// --- Publish -------------------------------------------------------------------
|
|
288
|
-
|
|
289
|
-
|
|
375
|
+
// A change shown on several routes is published once, for the route that
|
|
376
|
+
// leads its group in the PR; the rest would be images nothing links to.
|
|
377
|
+
const leads = new Set(groupChanges(outcomes).map(g => g.lead));
|
|
378
|
+
const changed = isBrokenVerdict(verdict) ? [] : outcomes.filter(o => (leads.has(o) || o.status === 'added' || o.status === 'removed') && o.files);
|
|
379
|
+
const clips = (momentOutcomes ?? []).filter(m => m.status === 'recorded');
|
|
380
|
+
const placed = writeGh && clips.length
|
|
381
|
+
? await timings.time('attach', attachClips(clips, { gh: writeGh, ownerRepo, pr: pr?.number, token: found?.token, log }))
|
|
382
|
+
: { linked: [] };
|
|
383
|
+
if (writeGh && (changed.length || placed.linked.length)) {
|
|
290
384
|
const folder = pr ? `pr-${pr.number}/${id}` : `branch/${routeSlug(branch || 'detached')}/${id}`;
|
|
291
|
-
|
|
292
|
-
|
|
385
|
+
// One list for everything this run publishes: where it goes, what it
|
|
386
|
+
// is, and where its URL lands once GitHub has it.
|
|
387
|
+
const uploads = [];
|
|
293
388
|
for (const o of changed) {
|
|
294
389
|
for (const kind of PUBLISHED_KINDS) {
|
|
295
390
|
const local = o.files[kind];
|
|
296
391
|
if (local)
|
|
297
|
-
|
|
392
|
+
uploads.push({ path: `${folder}/${routeSlug(o.route)}-${o.viewport}-${artifactSuffix(kind)}.png`, local, assign: url => { o.urls = { ...o.urls, [kind]: url }; } });
|
|
298
393
|
}
|
|
299
394
|
}
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
const urls = {};
|
|
304
|
-
for (const kind of PUBLISHED_KINDS)
|
|
305
|
-
if (o.files[kind])
|
|
306
|
-
urls[kind] = published.urls.get(keyFor(o, kind));
|
|
307
|
-
o.urls = urls;
|
|
395
|
+
for (const m of placed.linked) {
|
|
396
|
+
uploads.push({ path: `${folder}/${path.basename(m.file)}`, local: m.file, assign: url => { m.videoUrl = url; } });
|
|
397
|
+
uploads.push({ path: `${folder}/${path.basename(m.poster)}`, local: m.poster, assign: url => { m.posterUrl = url; } });
|
|
308
398
|
}
|
|
399
|
+
const files = uploads.map(u => ({ path: u.path, content: fs.readFileSync(u.local) }));
|
|
400
|
+
log(`Publishing ${files.length} file(s) to ${ownerRepo}@${settings.assetsBranch} ...`);
|
|
401
|
+
const published = await timings.time('publish', () => publishAssets(writeGh, ownerRepo, settings.assetsBranch, files, pr ? `Screenshots for #${pr.number} (${id})` : `Screenshots for ${branch || 'detached'} (${id})`));
|
|
402
|
+
for (const u of uploads)
|
|
403
|
+
u.assign(published.urls.get(u.path));
|
|
309
404
|
}
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
skippedDynamic,
|
|
317
|
-
durationMs: Date.now() - started,
|
|
318
|
-
markdown: '',
|
|
319
|
-
outputDir,
|
|
320
|
-
sheetPath,
|
|
321
|
-
timings: timings.toJSON(),
|
|
322
|
-
delivery: opts.dryRun ? { status: 'dry-run' } : skipReason ? { status: 'skipped', hint: skipReason } : { status: 'published' },
|
|
323
|
-
};
|
|
324
|
-
result.markdown = buildComment(result, { version: opts.version, headSha: head, now, filesDir: outputDir });
|
|
325
|
-
if (writeGh && (opts.comment ?? true))
|
|
326
|
-
await timings.time('describe', async () => {
|
|
327
|
-
if (pr) {
|
|
328
|
-
// The description is what a reviewer reads first, so put the images there
|
|
329
|
-
// and fall back to a comment only when the PR cannot be edited.
|
|
330
|
-
const described = await upsertPrDescription(writeGh, ownerRepo, pr.number, result.markdown, 'pre-post');
|
|
331
|
-
if (described.updated) {
|
|
332
|
-
result.commentUrl = described.html_url;
|
|
333
|
-
result.commentKind = 'description';
|
|
334
|
-
log(`Updated PR description: ${described.html_url}`);
|
|
335
|
-
}
|
|
336
|
-
else {
|
|
337
|
-
const comment = await upsertStickyComment(writeGh, ownerRepo, pr.number, result.markdown, STICKY_MARKER);
|
|
338
|
-
result.commentUrl = comment.html_url;
|
|
339
|
-
result.commentKind = 'comment';
|
|
340
|
-
log(`Cannot edit the PR description; ${comment.created ? 'posted' : 'updated'} a comment instead: ${comment.html_url}`);
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
else {
|
|
344
|
-
log(`No open PR for branch "${branch}". Open one and re-run, or paste the markdown below.`);
|
|
345
|
-
}
|
|
346
|
-
});
|
|
347
|
-
// Measured again after the description update, so the summary's total and
|
|
348
|
-
// the Timings line below describe the same span. The markdown above keeps
|
|
349
|
-
// the earlier figure: it had to be written before this step could run.
|
|
350
|
-
result.durationMs = Date.now() - started;
|
|
351
|
-
result.timings = timings.toJSON();
|
|
352
|
-
const [first, ...rest] = timings.summary(result.durationMs);
|
|
353
|
-
log(`Timings: ${first}`);
|
|
354
|
-
for (const line of rest)
|
|
355
|
-
log(line);
|
|
356
|
-
return result;
|
|
405
|
+
return finish({
|
|
406
|
+
outcomes, beforeBase: before, afterBase: after,
|
|
407
|
+
beforeLabel: comparison.before.label, afterLabel: comparison.after.label,
|
|
408
|
+
outputDir, sheetPath, verdict: verdict ?? undefined,
|
|
409
|
+
moments: momentOutcomes?.length ? momentOutcomes : undefined, momentsHint: placed.hint,
|
|
410
|
+
});
|
|
357
411
|
}
|
|
358
412
|
//# sourceMappingURL=pr.js.map
|
package/dist/commands/pr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr.js","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pr.js","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"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"}
|
package/dist/comparison.d.ts
CHANGED
|
@@ -23,6 +23,11 @@ export interface Side {
|
|
|
23
23
|
detail: string;
|
|
24
24
|
/** The probe resolution already took, so callers need not repeat it. */
|
|
25
25
|
probe?: ProbeResult;
|
|
26
|
+
/**
|
|
27
|
+
* What a reviewer should call this side, when the URL would not tell them:
|
|
28
|
+
* "base `38d9f0b`" rather than the throwaway port it was served on.
|
|
29
|
+
*/
|
|
30
|
+
label?: string;
|
|
26
31
|
}
|
|
27
32
|
export interface Comparison {
|
|
28
33
|
strategy: StrategyName;
|