@alwaysmeticulous/cli 2.320.0 → 2.323.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/dist/command-utils/print-json.d.ts.map +1 -1
- package/dist/command-utils/print-json.js +4 -3
- package/dist/command-utils/print-json.js.map +1 -1
- package/dist/commands/agent/diff-comments.command.d.ts +11 -0
- package/dist/commands/agent/diff-comments.command.d.ts.map +1 -0
- package/dist/commands/agent/diff-comments.command.js +83 -0
- package/dist/commands/agent/diff-comments.command.js.map +1 -0
- package/dist/commands/agent/diff-comments.command.spec.d.ts +2 -0
- package/dist/commands/agent/diff-comments.command.spec.d.ts.map +1 -0
- package/dist/commands/agent/diff-comments.command.spec.js +128 -0
- package/dist/commands/agent/diff-comments.command.spec.js.map +1 -0
- package/dist/commands/agent/index.d.ts.map +1 -1
- package/dist/commands/agent/index.js +4 -2
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.d.ts +4 -0
- package/dist/commands/agent/test-run-diffs.command.d.ts.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.js +51 -26
- package/dist/commands/agent/test-run-diffs.command.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.spec.js +110 -8
- package/dist/commands/agent/test-run-diffs.command.spec.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.d.ts +7 -26
- package/dist/commands/agent/test-run-diffs.utils.d.ts.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.js +18 -72
- package/dist/commands/agent/test-run-diffs.utils.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.spec.js +50 -228
- package/dist/commands/agent/test-run-diffs.utils.spec.js.map +1 -1
- package/dist/commands/ci/label-commit.command.d.ts +2 -7
- package/dist/commands/ci/label-commit.command.d.ts.map +1 -1
- package/dist/commands/ci/label-commit.command.js +5 -15
- package/dist/commands/ci/label-commit.command.js.map +1 -1
- package/dist/commands/ci/label-commit.core.d.ts +7 -0
- package/dist/commands/ci/label-commit.core.d.ts.map +1 -0
- package/dist/commands/ci/label-commit.core.js +28 -0
- package/dist/commands/ci/label-commit.core.js.map +1 -0
- package/dist/commands/ci/label-commit.types.d.ts +10 -0
- package/dist/commands/ci/label-commit.types.d.ts.map +1 -0
- package/dist/commands/ci/label-commit.types.js +6 -0
- package/dist/commands/ci/label-commit.types.js.map +1 -0
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.d.ts.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js +22 -14
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js.map +1 -1
- package/dist/commands/ci/run.command.d.ts.map +1 -1
- package/dist/commands/ci/run.command.js +6 -4
- package/dist/commands/ci/run.command.js.map +1 -1
- package/dist/commands/ci/trigger-test-run.core.js +25 -3
- package/dist/commands/ci/trigger-test-run.core.js.map +1 -1
- package/dist/commands/ci/trigger-test-run.types.d.ts +11 -0
- package/dist/commands/ci/trigger-test-run.types.d.ts.map +1 -1
- package/dist/commands/ci/upload-container.command.d.ts +4 -0
- package/dist/commands/ci/upload-container.command.d.ts.map +1 -1
- package/dist/commands/ci/upload-container.command.js +18 -2
- package/dist/commands/ci/upload-container.command.js.map +1 -1
- package/dist/commands/record/__tests__/backend.command.spec.js +54 -4
- package/dist/commands/record/__tests__/backend.command.spec.js.map +1 -1
- package/dist/commands/record/backend.command.d.ts.map +1 -1
- package/dist/commands/record/backend.command.js +196 -100
- package/dist/commands/record/backend.command.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js +9 -2
- package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js.map +1 -1
- package/dist/utils/resolve-test-run-from-commit.d.ts.map +1 -1
- package/dist/utils/resolve-test-run-from-commit.js +5 -2
- package/dist/utils/resolve-test-run-from-commit.js.map +1 -1
- package/package.json +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print-json.d.ts","sourceRoot":"","sources":["../../src/command-utils/print-json.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"print-json.d.ts","sourceRoot":"","sources":["../../src/command-utils/print-json.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,SAAS,UAAW,OAAO,KAAG,IAE1C,CAAC"}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="2b5cc120-f13a-5096-8d83-5f4feb3c2cd8")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.printJson = void 0;
|
|
6
|
+
const json_1 = require("@alwaysmeticulous/common/json");
|
|
6
7
|
/**
|
|
7
8
|
* Prints a value as pretty-printed JSON on stdout — the single formatting
|
|
8
9
|
* decision (2-space indent, trailing newline) shared by every command's
|
|
9
10
|
* `--json` output, so machine-readable output stays consistent.
|
|
10
11
|
*/
|
|
11
12
|
const printJson = (value) => {
|
|
12
|
-
console.log(
|
|
13
|
+
console.log((0, json_1.serializeJson)(value));
|
|
13
14
|
};
|
|
14
15
|
exports.printJson = printJson;
|
|
15
16
|
//# sourceMappingURL=print-json.js.map
|
|
16
|
-
//# debugId=
|
|
17
|
+
//# debugId=2b5cc120-f13a-5096-8d83-5f4feb3c2cd8
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print-json.js","sources":["../../src/command-utils/print-json.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAAA;;;;GAIG;AACI,MAAM,SAAS,GAAG,CAAC,KAAc,EAAQ,EAAE;IAChD,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"print-json.js","sources":["../../src/command-utils/print-json.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAAA,wDAA8D;AAE9D;;;;GAIG;AACI,MAAM,SAAS,GAAG,CAAC,KAAc,EAAQ,EAAE;IAChD,OAAO,CAAC,GAAG,CAAC,IAAA,oBAAa,EAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB","debugId":"2b5cc120-f13a-5096-8d83-5f4feb3c2cd8"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CommandModule } from "yargs";
|
|
2
|
+
interface Options {
|
|
3
|
+
apiToken?: string | null | undefined;
|
|
4
|
+
replayDiffId: string;
|
|
5
|
+
screenshotName: string;
|
|
6
|
+
includeResolved: boolean;
|
|
7
|
+
json: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const diffCommentsCommand: CommandModule<unknown, Options>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=diff-comments.command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-comments.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/diff-comments.command.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI3C,UAAU,OAAO;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;CACf;AAyED,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAyB/D,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="2cf7770d-d89b-57a1-9000-d495a4dad27d")}catch(e){}}();
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.diffCommentsCommand = void 0;
|
|
6
|
+
const client_1 = require("@alwaysmeticulous/client");
|
|
7
|
+
const common_1 = require("@alwaysmeticulous/common");
|
|
8
|
+
const print_json_1 = require("../../command-utils/print-json");
|
|
9
|
+
const sentry_utils_1 = require("../../command-utils/sentry.utils");
|
|
10
|
+
const handler = async ({ apiToken, replayDiffId, screenshotName, includeResolved, json, }) => {
|
|
11
|
+
(0, common_1.initLogger)();
|
|
12
|
+
const client = await (0, client_1.createClientWithOAuth)({
|
|
13
|
+
apiToken,
|
|
14
|
+
enableOAuthLogin: true,
|
|
15
|
+
});
|
|
16
|
+
const comments = await (0, client_1.getDiffComments)(client, replayDiffId, screenshotName, {
|
|
17
|
+
includeResolved,
|
|
18
|
+
});
|
|
19
|
+
if (json) {
|
|
20
|
+
(0, print_json_1.printJson)(comments);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const columns = ["id", "replyToCommentId", "author", "text", "x", "y"];
|
|
24
|
+
if (includeResolved)
|
|
25
|
+
columns.push("isResolved");
|
|
26
|
+
console.log(columns.join("\t"));
|
|
27
|
+
for (const comment of flattenCommentsForTsv(comments)) {
|
|
28
|
+
console.log([
|
|
29
|
+
comment.id,
|
|
30
|
+
comment.replyToCommentId ?? "",
|
|
31
|
+
comment.author ?? "",
|
|
32
|
+
// Preserve a one-row-per-comment TSV shape for multiline/tabbed text.
|
|
33
|
+
JSON.stringify(comment.text),
|
|
34
|
+
comment.x.toFixed(5),
|
|
35
|
+
comment.y.toFixed(5),
|
|
36
|
+
...(includeResolved ? [comment.isResolved ?? false] : []),
|
|
37
|
+
].join("\t"));
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const flattenCommentsForTsv = (comments) => comments.flatMap((comment) => [
|
|
41
|
+
{
|
|
42
|
+
id: comment.id,
|
|
43
|
+
...(comment.author != null ? { author: comment.author } : {}),
|
|
44
|
+
text: comment.text,
|
|
45
|
+
x: comment.x,
|
|
46
|
+
y: comment.y,
|
|
47
|
+
...(comment.isResolved != null ? { isResolved: comment.isResolved } : {}),
|
|
48
|
+
},
|
|
49
|
+
...comment.replies.map((reply) => ({
|
|
50
|
+
id: reply.id,
|
|
51
|
+
replyToCommentId: comment.id,
|
|
52
|
+
...(reply.author != null ? { author: reply.author } : {}),
|
|
53
|
+
text: reply.text,
|
|
54
|
+
x: comment.x,
|
|
55
|
+
y: comment.y,
|
|
56
|
+
...(comment.isResolved != null ? { isResolved: comment.isResolved } : {}),
|
|
57
|
+
})),
|
|
58
|
+
]);
|
|
59
|
+
exports.diffCommentsCommand = {
|
|
60
|
+
command: "diff-comments",
|
|
61
|
+
describe: "Get the list of review comments for a given screenshot diff. Outputs a TSV table with columns id, replyToCommentId, author, text, x, y plus the requested additional columns, with each comment followed by its replies; comments and replies are in oldest-first order. replyToCommentId is TSV-only (blank for top-level comments, no JSON/MCP equivalent) so a reply row can be linked back to its parent; a reply's x/y repeat the parent's, since replies don't carry their own coordinates. Outputs only open comments by default. The text column is JSON-quoted (the only column that is) to keep multiline/tabbed comment bodies on one row.",
|
|
62
|
+
builder: {
|
|
63
|
+
apiToken: { string: true, description: "Meticulous API token." },
|
|
64
|
+
replayDiffId: {
|
|
65
|
+
string: true,
|
|
66
|
+
description: "The replay diff ID.",
|
|
67
|
+
demandOption: true,
|
|
68
|
+
},
|
|
69
|
+
screenshotName: {
|
|
70
|
+
string: true,
|
|
71
|
+
description: 'The screenshot name, as listed in the screenshotName column of `agent test-run-diffs` (e.g. "after-event-5" or "end-state").',
|
|
72
|
+
demandOption: true,
|
|
73
|
+
},
|
|
74
|
+
includeResolved: {
|
|
75
|
+
boolean: true,
|
|
76
|
+
description: "Output resolved comments in addition to open comments; adds an isResolved column with the comment's resolved state.",
|
|
77
|
+
default: false,
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
handler: (0, sentry_utils_1.wrapHandler)(handler),
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=diff-comments.command.js.map
|
|
83
|
+
//# debugId=2cf7770d-d89b-57a1-9000-d495a4dad27d
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-comments.command.js","sources":["../../../src/commands/agent/diff-comments.command.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"2cf7770d-d89b-57a1-9000-d495a4dad27d"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-comments.command.spec.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/diff-comments.command.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4763084d-90c5-5042-a6d2-8404245a39a1")}catch(e){}}();
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
const vitest_1 = require("vitest");
|
|
6
|
+
const json_1 = require("@alwaysmeticulous/common/json");
|
|
7
|
+
const diff_comments_command_1 = require("./diff-comments.command");
|
|
8
|
+
vitest_1.vi.mock("../../command-utils/sentry.utils", () => ({
|
|
9
|
+
wrapHandler: (fn) => fn,
|
|
10
|
+
}));
|
|
11
|
+
const mocks = vitest_1.vi.hoisted(() => ({
|
|
12
|
+
createClientWithOAuth: vitest_1.vi.fn(),
|
|
13
|
+
getDiffComments: vitest_1.vi.fn(),
|
|
14
|
+
}));
|
|
15
|
+
vitest_1.vi.mock("@alwaysmeticulous/common", () => ({ initLogger: vitest_1.vi.fn() }));
|
|
16
|
+
vitest_1.vi.mock("@alwaysmeticulous/client", () => ({
|
|
17
|
+
createClientWithOAuth: mocks.createClientWithOAuth,
|
|
18
|
+
getDiffComments: mocks.getDiffComments,
|
|
19
|
+
}));
|
|
20
|
+
const runHandler = (json, includeResolved = false) => diff_comments_command_1.diffCommentsCommand.handler({
|
|
21
|
+
replayDiffId: "rd-1",
|
|
22
|
+
screenshotName: "after-event-5",
|
|
23
|
+
includeResolved,
|
|
24
|
+
json,
|
|
25
|
+
});
|
|
26
|
+
const comments = [
|
|
27
|
+
{
|
|
28
|
+
id: "comment-1",
|
|
29
|
+
x: 0.25,
|
|
30
|
+
y: 0.5,
|
|
31
|
+
text: "first\tline\nsecond line",
|
|
32
|
+
author: "Ada Lovelace",
|
|
33
|
+
replies: [
|
|
34
|
+
{
|
|
35
|
+
id: "reply-1",
|
|
36
|
+
author: "Grace Hopper",
|
|
37
|
+
text: "first reply",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: "reply-2",
|
|
41
|
+
text: "second reply",
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: "comment-2",
|
|
47
|
+
x: 0.75,
|
|
48
|
+
y: 0.8,
|
|
49
|
+
text: "second comment",
|
|
50
|
+
replies: [],
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
(0, vitest_1.describe)("diff-comments command", () => {
|
|
54
|
+
let logSpy;
|
|
55
|
+
const stdoutText = () => logSpy.mock.calls.map(([value]) => String(value)).join("\n");
|
|
56
|
+
const stdoutBytes = () => logSpy.mock.calls.map(([value]) => `${String(value)}\n`).join("");
|
|
57
|
+
(0, vitest_1.beforeEach)(() => {
|
|
58
|
+
vitest_1.vi.clearAllMocks();
|
|
59
|
+
mocks.createClientWithOAuth.mockResolvedValue({});
|
|
60
|
+
mocks.getDiffComments.mockResolvedValue(comments);
|
|
61
|
+
logSpy = vitest_1.vi.spyOn(console, "log").mockImplementation(() => { });
|
|
62
|
+
});
|
|
63
|
+
(0, vitest_1.afterEach)(() => logSpy.mockRestore());
|
|
64
|
+
(0, vitest_1.it)("emits JSON byte-identical to the MCP tool result", async () => {
|
|
65
|
+
await runHandler(true);
|
|
66
|
+
(0, vitest_1.expect)(stdoutBytes()).toBe(`${(0, json_1.serializeJson)(comments)}\n`);
|
|
67
|
+
(0, vitest_1.expect)(mocks.getDiffComments).toHaveBeenCalledWith(vitest_1.expect.anything(), "rd-1", "after-event-5", { includeResolved: false });
|
|
68
|
+
});
|
|
69
|
+
(0, vitest_1.it)("flattens each comment followed by its replies in oldest-first order", async () => {
|
|
70
|
+
await runHandler(false);
|
|
71
|
+
const lines = stdoutText().split("\n");
|
|
72
|
+
(0, vitest_1.expect)(lines).toHaveLength(5);
|
|
73
|
+
(0, vitest_1.expect)(lines[0]).toBe(["id", "replyToCommentId", "author", "text", "x", "y"].join("\t"));
|
|
74
|
+
(0, vitest_1.expect)(lines[1].split("\t")).toEqual([
|
|
75
|
+
"comment-1",
|
|
76
|
+
"",
|
|
77
|
+
"Ada Lovelace",
|
|
78
|
+
'"first\\tline\\nsecond line"',
|
|
79
|
+
"0.25000",
|
|
80
|
+
"0.50000",
|
|
81
|
+
]);
|
|
82
|
+
(0, vitest_1.expect)(lines.slice(1).map((line) => line.split("\t")[0])).toEqual([
|
|
83
|
+
"comment-1",
|
|
84
|
+
"reply-1",
|
|
85
|
+
"reply-2",
|
|
86
|
+
"comment-2",
|
|
87
|
+
]);
|
|
88
|
+
(0, vitest_1.expect)(lines[2].split("\t")).toEqual([
|
|
89
|
+
"reply-1",
|
|
90
|
+
"comment-1",
|
|
91
|
+
"Grace Hopper",
|
|
92
|
+
'"first reply"',
|
|
93
|
+
"0.25000",
|
|
94
|
+
"0.50000",
|
|
95
|
+
]);
|
|
96
|
+
(0, vitest_1.expect)(lines[3].split("\t")).toEqual([
|
|
97
|
+
"reply-2",
|
|
98
|
+
"comment-1",
|
|
99
|
+
"",
|
|
100
|
+
'"second reply"',
|
|
101
|
+
"0.25000",
|
|
102
|
+
"0.50000",
|
|
103
|
+
]);
|
|
104
|
+
});
|
|
105
|
+
(0, vitest_1.it)("adds resolved comments and the isResolved column only when requested", async () => {
|
|
106
|
+
mocks.getDiffComments.mockResolvedValue(comments.map((comment, index) => ({
|
|
107
|
+
...comment,
|
|
108
|
+
isResolved: index === 0,
|
|
109
|
+
})));
|
|
110
|
+
await runHandler(false, true);
|
|
111
|
+
const lines = stdoutText().split("\n");
|
|
112
|
+
(0, vitest_1.expect)(lines[0]).toBe(["id", "replyToCommentId", "author", "text", "x", "y", "isResolved"].join("\t"));
|
|
113
|
+
(0, vitest_1.expect)(lines.slice(1).map((line) => line.split("\t").at(-1))).toEqual([
|
|
114
|
+
"true",
|
|
115
|
+
"true",
|
|
116
|
+
"true",
|
|
117
|
+
"false",
|
|
118
|
+
]);
|
|
119
|
+
(0, vitest_1.expect)(mocks.getDiffComments).toHaveBeenCalledWith(vitest_1.expect.anything(), "rd-1", "after-event-5", { includeResolved: true });
|
|
120
|
+
});
|
|
121
|
+
(0, vitest_1.it)("emits a header-only table when there are no comments", async () => {
|
|
122
|
+
mocks.getDiffComments.mockResolvedValue([]);
|
|
123
|
+
await runHandler(false);
|
|
124
|
+
(0, vitest_1.expect)(logSpy).toHaveBeenCalledTimes(1);
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
//# sourceMappingURL=diff-comments.command.spec.js.map
|
|
128
|
+
//# debugId=4763084d-90c5-5042-a6d2-8404245a39a1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-comments.command.spec.js","sources":["../../../src/commands/agent/diff-comments.command.spec.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"4763084d-90c5-5042-a6d2-8404245a39a1"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAe3C,eAAO,MAAM,YAAY,EAAE,aAsC1B,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a9218534-e158-59cf-8f4a-98eb28e0efee")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.agentCommand = void 0;
|
|
6
|
+
const diff_comments_command_1 = require("./diff-comments.command");
|
|
6
7
|
const js_coverage_diff_command_1 = require("./js-coverage-diff.command");
|
|
7
8
|
const js_coverage_command_1 = require("./js-coverage.command");
|
|
8
9
|
const screenshot_dom_diff_command_1 = require("./screenshot-dom-diff.command");
|
|
@@ -21,6 +22,7 @@ exports.agentCommand = {
|
|
|
21
22
|
builder: (yargs) => yargs
|
|
22
23
|
.command(test_run_for_commit_command_1.testRunForCommitCommand)
|
|
23
24
|
.command(test_run_diffs_command_1.testRunDiffsCommand)
|
|
25
|
+
.command(diff_comments_command_1.diffCommentsCommand)
|
|
24
26
|
.command(js_coverage_command_1.jsCoverageCommand)
|
|
25
27
|
.command(js_coverage_diff_command_1.jsCoverageDiffCommand)
|
|
26
28
|
.command(screenshot_image_files_command_1.imageFilesCommand)
|
|
@@ -50,4 +52,4 @@ exports.agentCommand = {
|
|
|
50
52
|
},
|
|
51
53
|
};
|
|
52
54
|
//# sourceMappingURL=index.js.map
|
|
53
|
-
//# debugId=
|
|
55
|
+
//# debugId=a9218534-e158-59cf-8f4a-98eb28e0efee
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/commands/agent/index.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AACA,yEAAmE;AACnE,+DAA0D;AAC1D,+EAA+D;AAC/D,qFAAqE;AACrE,yEAA8D;AAC9D,yDAAqD;AACrD,uEAAkE;AAClE,qEAA+D;AAC/D,+EAAwE;AACxE,yDAAyD;AACzD,yEAAmE;AACnE,iEAA4D;AAE/C,QAAA,YAAY,GAAkB;IACzC,OAAO,EAAE,OAAO;IAChB,QAAQ,EACN,0EAA0E;IAC5E,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,OAAO,CAAC,qDAAuB,CAAC;SAChC,OAAO,CAAC,4CAAmB,CAAC;SAC5B,OAAO,CAAC,uCAAiB,CAAC;SAC1B,OAAO,CAAC,gDAAqB,CAAC;SAC9B,OAAO,CAAC,kDAAiB,CAAC;SAC1B,OAAO,CAAC,2CAAgB,CAAC;SACzB,OAAO,CAAC,4CAAc,CAAC;SACvB,OAAO,CAAC,sCAAmB,CAAC;SAC5B,OAAO,CAAC,yCAAkB,CAAC;SAC3B,OAAO,CAAC,gDAAqB,CAAC;SAC9B,OAAO,CAAC,kCAAe,CAAC;SACxB,OAAO,CAAC,+CAAqB,CAAC;SAC9B,MAAM,CAAC,SAAS,EAAE;QACjB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,WAAW,EACT,4GAA4G;KAC/G,CAAC;SACD,MAAM,CAAC,MAAM,EAAE;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,WAAW,EACT,oEAAoE;YACpE,gEAAgE;YAChE,0DAA0D;KAC7D,CAAC;SACD,aAAa,EAAE;SACf,IAAI,EAAE;IACX,OAAO,EAAE,GAAG,EAAE;QACZ,0BAA0B;IAC5B,CAAC;CACF,CAAC","debugId":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/commands/agent/index.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AACA,mEAA8D;AAC9D,yEAAmE;AACnE,+DAA0D;AAC1D,+EAA+D;AAC/D,qFAAqE;AACrE,yEAA8D;AAC9D,yDAAqD;AACrD,uEAAkE;AAClE,qEAA+D;AAC/D,+EAAwE;AACxE,yDAAyD;AACzD,yEAAmE;AACnE,iEAA4D;AAE/C,QAAA,YAAY,GAAkB;IACzC,OAAO,EAAE,OAAO;IAChB,QAAQ,EACN,0EAA0E;IAC5E,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,OAAO,CAAC,qDAAuB,CAAC;SAChC,OAAO,CAAC,4CAAmB,CAAC;SAC5B,OAAO,CAAC,2CAAmB,CAAC;SAC5B,OAAO,CAAC,uCAAiB,CAAC;SAC1B,OAAO,CAAC,gDAAqB,CAAC;SAC9B,OAAO,CAAC,kDAAiB,CAAC;SAC1B,OAAO,CAAC,2CAAgB,CAAC;SACzB,OAAO,CAAC,4CAAc,CAAC;SACvB,OAAO,CAAC,sCAAmB,CAAC;SAC5B,OAAO,CAAC,yCAAkB,CAAC;SAC3B,OAAO,CAAC,gDAAqB,CAAC;SAC9B,OAAO,CAAC,kCAAe,CAAC;SACxB,OAAO,CAAC,+CAAqB,CAAC;SAC9B,MAAM,CAAC,SAAS,EAAE;QACjB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,WAAW,EACT,4GAA4G;KAC/G,CAAC;SACD,MAAM,CAAC,MAAM,EAAE;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,WAAW,EACT,oEAAoE;YACpE,gEAAgE;YAChE,0DAA0D;KAC7D,CAAC;SACD,aAAa,EAAE;SACf,IAAI,EAAE;IACX,OAAO,EAAE,GAAG,EAAE;QACZ,0BAA0B;IAC5B,CAAC;CACF,CAAC","debugId":"a9218534-e158-59cf-8f4a-98eb28e0efee"}
|
|
@@ -5,10 +5,14 @@ interface Options {
|
|
|
5
5
|
commitSha: string | undefined;
|
|
6
6
|
dontWaitForTestRunToComplete: boolean;
|
|
7
7
|
includeReplayIds: boolean;
|
|
8
|
+
includeMismatchFraction: boolean;
|
|
9
|
+
includeReviews: boolean;
|
|
8
10
|
includeReviewDecisions: boolean;
|
|
9
11
|
includeDomDiffIds: boolean;
|
|
10
12
|
includeAllDiffs: boolean;
|
|
11
13
|
onlyUnreviewed: boolean;
|
|
14
|
+
onlyRejected: boolean;
|
|
15
|
+
onlyWithComments: boolean;
|
|
12
16
|
orderByReplayDiffs: boolean;
|
|
13
17
|
counts: boolean;
|
|
14
18
|
json: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-run-diffs.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/test-run-diffs.command.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"test-run-diffs.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/test-run-diffs.command.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAgB3C,UAAU,OAAO;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,4BAA4B,EAAE,OAAO,CAAC;IACtC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uBAAuB,EAAE,OAAO,CAAC;IACjC,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,OAAO,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAiQD,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAgG/D,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="038998bd-a46c-5863-855f-760472c4af2c")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.testRunDiffsCommand = void 0;
|
|
@@ -13,7 +13,7 @@ const test_run_diffs_utils_1 = require("./test-run-diffs.utils");
|
|
|
13
13
|
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
14
14
|
/** Give up polling the diffs summary after this long, rather than forever. */
|
|
15
15
|
const SUMMARY_POLL_TIMEOUT_MS = 10 * 60_000;
|
|
16
|
-
const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToComplete, includeReplayIds, includeReviewDecisions, includeDomDiffIds, includeAllDiffs, onlyUnreviewed, orderByReplayDiffs, counts, json, project, }) => {
|
|
16
|
+
const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToComplete, includeReplayIds, includeMismatchFraction, includeReviews, includeReviewDecisions, includeDomDiffIds, includeAllDiffs, onlyUnreviewed, onlyRejected, onlyWithComments, orderByReplayDiffs, counts, json, project, }) => {
|
|
17
17
|
if (testRunId != null && commitSha != null) {
|
|
18
18
|
throw new cli_user_error_1.CliUserError("Pass either --testRunId or --commitSha, not both.");
|
|
19
19
|
}
|
|
@@ -24,11 +24,15 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
|
|
|
24
24
|
if (counts) {
|
|
25
25
|
const incompatible = [
|
|
26
26
|
[includeReplayIds, "--includeReplayIds"],
|
|
27
|
+
[includeMismatchFraction, "--includeMismatchFraction"],
|
|
27
28
|
[includeDomDiffIds, "--includeDomDiffIds"],
|
|
28
29
|
[includeAllDiffs, "--includeAllDiffs"],
|
|
29
30
|
[orderByReplayDiffs, "--orderByReplayDiffs"],
|
|
31
|
+
[includeReviews, "--includeReviews"],
|
|
30
32
|
[includeReviewDecisions, "--includeReviewDecisions"],
|
|
31
33
|
[onlyUnreviewed, "--onlyUnreviewed"],
|
|
34
|
+
[onlyRejected, "--onlyRejected"],
|
|
35
|
+
[onlyWithComments, "--onlyWithComments"],
|
|
32
36
|
]
|
|
33
37
|
.filter(([enabled]) => enabled)
|
|
34
38
|
.map(([, name]) => name);
|
|
@@ -66,15 +70,12 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
|
|
|
66
70
|
resolvedTestRunId = run.testRunId;
|
|
67
71
|
status = run.status;
|
|
68
72
|
}
|
|
69
|
-
|
|
70
|
-
// implies --includeAllDiffs: the isSelected column is included to tell them
|
|
71
|
-
// apart, matching the backend, which resolves the same implication.
|
|
72
|
-
const includeAllDiffsResolved = includeAllDiffs || onlyUnreviewed;
|
|
73
|
+
const includeReviewsResolved = includeReviews || includeReviewDecisions;
|
|
73
74
|
const columns = {
|
|
74
75
|
includeDomDiffIds,
|
|
75
|
-
includeAllDiffs: includeAllDiffsResolved,
|
|
76
76
|
includeReplayIds,
|
|
77
|
-
|
|
77
|
+
includeMismatchFraction,
|
|
78
|
+
includeReviews: includeReviewsResolved,
|
|
78
79
|
};
|
|
79
80
|
// Diffs are only meaningful once the run has finished with a verdict
|
|
80
81
|
// (Success/Failure). Block until it finishes (default) or, with
|
|
@@ -117,11 +118,14 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
|
|
|
117
118
|
(0, common_1.logProgress)(`Fetching diffs summary for test run ${resolvedTestRunId}...`);
|
|
118
119
|
const diffsSummaryOptions = {
|
|
119
120
|
includeReplayIds,
|
|
121
|
+
includeMismatchFraction,
|
|
120
122
|
includeDomDiffIds,
|
|
121
|
-
includeAllDiffs
|
|
123
|
+
includeAllDiffs,
|
|
122
124
|
orderByReplayDiffs,
|
|
123
|
-
|
|
125
|
+
includeReviews: includeReviewsResolved,
|
|
124
126
|
onlyUnreviewed,
|
|
127
|
+
onlyRejected,
|
|
128
|
+
onlyWithComments,
|
|
125
129
|
};
|
|
126
130
|
let response = await (0, client_1.getTestRunDiffsSummary)(client, resolvedTestRunId, diffsSummaryOptions);
|
|
127
131
|
// A cold start finding the last computation already `failed` retriggers
|
|
@@ -162,32 +166,32 @@ const handler = async ({ apiToken, testRunId, commitSha, dontWaitForTestRunToCom
|
|
|
162
166
|
response = await (0, client_1.getTestRunDiffsSummary)(client, resolvedTestRunId, diffsSummaryOptions);
|
|
163
167
|
}
|
|
164
168
|
const data = response.data ?? [];
|
|
165
|
-
// The backend sets `index` to a global rank — a flat priority rank by default,
|
|
166
|
-
// or a replayDiff-grouped rank under orderByReplayDiffs; rows sort by it.
|
|
167
|
-
const rows = (0, test_run_diffs_utils_1.flattenDiffRows)(data);
|
|
168
169
|
if (json) {
|
|
169
|
-
(0, print_json_1.printJson)(
|
|
170
|
+
(0, print_json_1.printJson)(data);
|
|
170
171
|
}
|
|
171
172
|
else {
|
|
172
173
|
// Always emit the TSV header so a zero-diff run is a header with no rows (the
|
|
173
174
|
// same shape as the in-progress short-circuit above), never empty stdout.
|
|
174
175
|
console.log((0, test_run_diffs_utils_1.buildDiffsSummaryHeader)(columns).join("\t"));
|
|
175
|
-
for (const
|
|
176
|
-
console.log((0, test_run_diffs_utils_1.formatDiffRow)(
|
|
176
|
+
for (const diff of data) {
|
|
177
|
+
console.log((0, test_run_diffs_utils_1.formatDiffRow)(diff, columns).join("\t"));
|
|
177
178
|
}
|
|
178
179
|
}
|
|
180
|
+
if (response.selectionApplied) {
|
|
181
|
+
(0, common_1.logNotice)("Only selected representative diffs are included. Set includeAllDiffs to true to return all diffs.");
|
|
182
|
+
}
|
|
179
183
|
// Summaries on stderr regardless of --json (which only changes stdout).
|
|
180
184
|
if (data.length === 0) {
|
|
181
|
-
(0, common_1.logNotice)(`Test run ${resolvedTestRunId} does not have diffs.`);
|
|
185
|
+
(0, common_1.logNotice)(`Test run ${resolvedTestRunId} does not have any diffs matching the query.`);
|
|
182
186
|
return;
|
|
183
187
|
}
|
|
184
|
-
const
|
|
188
|
+
const numReplayDiffs = new Set(data.map((diff) => diff.replayDiffId)).size;
|
|
185
189
|
const tEnd = performance.now();
|
|
186
|
-
(0, common_1.logNotice)(`${
|
|
190
|
+
(0, common_1.logNotice)(`${numReplayDiffs} replay diff(s), ${data.length} screenshot diff(s), total ${((tEnd - t0) / 1000).toFixed(1)}s`);
|
|
187
191
|
};
|
|
188
192
|
exports.testRunDiffsCommand = {
|
|
189
193
|
command: "test-run-diffs",
|
|
190
|
-
describe: "Get the list of screenshot diffs for a given test run (by default a selected
|
|
194
|
+
describe: "Get the list of screenshot diffs for a given test run (by default all diffs when there are at most five; above that, a selected representative subset in priority order). Outputs a priority-ordered TSV table with columns replayDiffId and screenshotName plus the requested additional columns. Pass --counts to print just the totals instead of the list.",
|
|
191
195
|
builder: {
|
|
192
196
|
apiToken: { string: true, description: "Meticulous API token." },
|
|
193
197
|
testRunId: {
|
|
@@ -205,12 +209,22 @@ exports.testRunDiffsCommand = {
|
|
|
205
209
|
},
|
|
206
210
|
includeAllDiffs: {
|
|
207
211
|
boolean: true,
|
|
208
|
-
description: "Output all screenshot diffs instead of only the selected representative subset
|
|
212
|
+
description: "Output all screenshot diffs instead of only the selected representative subset.",
|
|
209
213
|
default: false,
|
|
210
214
|
},
|
|
211
215
|
onlyUnreviewed: {
|
|
212
216
|
boolean: true,
|
|
213
|
-
description: "Output only screenshot diffs still awaiting review (decision unreviewed)
|
|
217
|
+
description: "Output only screenshot diffs still awaiting review (decision unreviewed). The --only* flags are additive: when several are set, diffs matching any of them are output, so combining them widens the output rather than narrowing it.",
|
|
218
|
+
default: false,
|
|
219
|
+
},
|
|
220
|
+
onlyRejected: {
|
|
221
|
+
boolean: true,
|
|
222
|
+
description: "Output only screenshot diffs rejected during review (decision rejected). The --only* flags are additive: when several are set, diffs matching any of them are output, so combining them widens the output rather than narrowing it.",
|
|
223
|
+
default: false,
|
|
224
|
+
},
|
|
225
|
+
onlyWithComments: {
|
|
226
|
+
boolean: true,
|
|
227
|
+
description: "Output only screenshot diffs with one or more open review comments. The --only* flags are additive: when several are set, diffs matching any of them are output, so combining them widens the output rather than narrowing it.",
|
|
214
228
|
default: false,
|
|
215
229
|
},
|
|
216
230
|
includeReplayIds: {
|
|
@@ -218,9 +232,20 @@ exports.testRunDiffsCommand = {
|
|
|
218
232
|
description: "Add baseReplayId and headReplayId columns with each diff's base and head replay IDs.",
|
|
219
233
|
default: false,
|
|
220
234
|
},
|
|
235
|
+
includeMismatchFraction: {
|
|
236
|
+
boolean: true,
|
|
237
|
+
description: "Add a mismatchFraction column with the fraction of pixels that differ between the before and after screenshots.",
|
|
238
|
+
default: false,
|
|
239
|
+
},
|
|
240
|
+
includeReviews: {
|
|
241
|
+
boolean: true,
|
|
242
|
+
description: "Add decision and openComments columns with the PR review decision and number of open review comments per diff.",
|
|
243
|
+
default: false,
|
|
244
|
+
},
|
|
221
245
|
includeReviewDecisions: {
|
|
222
246
|
boolean: true,
|
|
223
|
-
description: "
|
|
247
|
+
description: "Deprecated alias for --includeReviews.",
|
|
248
|
+
deprecated: "use --includeReviews instead",
|
|
224
249
|
default: false,
|
|
225
250
|
},
|
|
226
251
|
includeDomDiffIds: {
|
|
@@ -230,7 +255,7 @@ exports.testRunDiffsCommand = {
|
|
|
230
255
|
},
|
|
231
256
|
orderByReplayDiffs: {
|
|
232
257
|
boolean: true,
|
|
233
|
-
description: "Order the list by replay diff (a replay diff's differences
|
|
258
|
+
description: "Order the list by replay diff (a replay diff's differences are consecutive) instead of the default global priority order.",
|
|
234
259
|
default: false,
|
|
235
260
|
},
|
|
236
261
|
dontWaitForTestRunToComplete: {
|
|
@@ -240,11 +265,11 @@ exports.testRunDiffsCommand = {
|
|
|
240
265
|
},
|
|
241
266
|
counts: {
|
|
242
267
|
boolean: true,
|
|
243
|
-
description: "Get the aggregate diff counts for a given test run instead of the per-diff list: number of replays, number of differences,
|
|
268
|
+
description: "Get the aggregate diff counts for a given test run instead of the per-diff list: number of replays, number of differences, the PR review-decision breakdown (approved/ignored/rejected/unreviewed), and the number of differences with open review comments. Cannot be combined with the list/filter flags, only with --json.",
|
|
244
269
|
default: false,
|
|
245
270
|
},
|
|
246
271
|
},
|
|
247
272
|
handler: (0, sentry_utils_1.wrapHandler)(handler),
|
|
248
273
|
};
|
|
249
274
|
//# sourceMappingURL=test-run-diffs.command.js.map
|
|
250
|
-
//# debugId=
|
|
275
|
+
//# debugId=038998bd-a46c-5863-855f-760472c4af2c
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-run-diffs.command.js","sources":["../../../src/commands/agent/test-run-diffs.command.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AACA,qDAMkC;AAClC,qDAAkE;AAElE,+DAA2D;AAC3D,mEAA+D;AAC/D,+DAA0D;AAC1D,2FAKkD;AAClD,
|
|
1
|
+
{"version":3,"file":"test-run-diffs.command.js","sources":["../../../src/commands/agent/test-run-diffs.command.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"038998bd-a46c-5863-855f-760472c4af2c"}
|