@alwaysmeticulous/cli 2.329.0 → 2.331.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/commands/agent/complete-base-run.command.d.ts +27 -0
- package/dist/commands/agent/complete-base-run.command.d.ts.map +1 -0
- package/dist/commands/agent/complete-base-run.command.js +255 -0
- package/dist/commands/agent/complete-base-run.command.js.map +1 -0
- package/dist/commands/agent/complete-base-run.command.spec.d.ts +2 -0
- package/dist/commands/agent/complete-base-run.command.spec.d.ts.map +1 -0
- package/dist/commands/agent/complete-base-run.command.spec.js +421 -0
- package/dist/commands/agent/complete-base-run.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/js-coverage.command.d.ts +16 -33
- package/dist/commands/agent/js-coverage.command.d.ts.map +1 -1
- package/dist/commands/agent/js-coverage.command.handler.spec.js +88 -97
- package/dist/commands/agent/js-coverage.command.handler.spec.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.js +79 -118
- package/dist/commands/agent/js-coverage.command.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.spec.js +33 -55
- package/dist/commands/agent/js-coverage.command.spec.js.map +1 -1
- package/dist/commands/ci/agent-test.command.d.ts.map +1 -1
- package/dist/commands/ci/agent-test.command.js +19 -6
- package/dist/commands/ci/agent-test.command.js.map +1 -1
- package/dist/commands/ci/agent-test.command.spec.js +46 -2
- package/dist/commands/ci/agent-test.command.spec.js.map +1 -1
- package/dist/commands/onboard/templates/agents/ci-setup.md +6 -2
- package/dist/commands/onboard/templates/docs/additional-guides/backend-recorder.ts +31 -0
- package/dist/commands/onboard/templates/docs/reference/cli-commands.ts +2 -0
- package/dist/utils/error-response-body.d.ts +11 -0
- package/dist/utils/error-response-body.d.ts.map +1 -0
- package/dist/utils/error-response-body.js +18 -0
- package/dist/utils/error-response-body.js.map +1 -0
- package/dist/utils/resolve-test-run-from-commit.d.ts +28 -12
- package/dist/utils/resolve-test-run-from-commit.d.ts.map +1 -1
- package/dist/utils/resolve-test-run-from-commit.js +32 -18
- package/dist/utils/resolve-test-run-from-commit.js.map +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,421 @@
|
|
|
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]="38ddbdd0-4427-5c9e-8d10-795044fa7641")}catch(e){}}();
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
const vitest_1 = require("vitest");
|
|
6
|
+
const cli_user_error_1 = require("../../utils/cli-user-error");
|
|
7
|
+
const complete_base_run_command_1 = require("./complete-base-run.command");
|
|
8
|
+
// Make wrapHandler a passthrough so handler errors propagate directly to tests
|
|
9
|
+
// rather than being swallowed by process.exit().
|
|
10
|
+
vitest_1.vi.mock("../../command-utils/sentry.utils", () => ({
|
|
11
|
+
wrapHandler: (fn) => fn,
|
|
12
|
+
}));
|
|
13
|
+
const mocks = vitest_1.vi.hoisted(() => ({
|
|
14
|
+
createClientWithOAuth: vitest_1.vi.fn(),
|
|
15
|
+
completeBaseRun: vitest_1.vi.fn(),
|
|
16
|
+
getTestRun: vitest_1.vi.fn(),
|
|
17
|
+
getTestRunForCommit: vitest_1.vi.fn(),
|
|
18
|
+
isFetchError: vitest_1.vi.fn(),
|
|
19
|
+
logNotice: vitest_1.vi.fn(),
|
|
20
|
+
logProgress: vitest_1.vi.fn(),
|
|
21
|
+
getCommitSha: vitest_1.vi.fn(),
|
|
22
|
+
}));
|
|
23
|
+
vitest_1.vi.mock("@alwaysmeticulous/client", async (importOriginal) => ({
|
|
24
|
+
...(await importOriginal()),
|
|
25
|
+
createClientWithOAuth: mocks.createClientWithOAuth,
|
|
26
|
+
completeBaseRun: mocks.completeBaseRun,
|
|
27
|
+
getTestRun: mocks.getTestRun,
|
|
28
|
+
getTestRunForCommit: mocks.getTestRunForCommit,
|
|
29
|
+
isFetchError: mocks.isFetchError,
|
|
30
|
+
}));
|
|
31
|
+
vitest_1.vi.mock("@alwaysmeticulous/common", () => ({
|
|
32
|
+
logNotice: mocks.logNotice,
|
|
33
|
+
logProgress: mocks.logProgress,
|
|
34
|
+
initLogger: vitest_1.vi.fn(),
|
|
35
|
+
getCommitSha: mocks.getCommitSha,
|
|
36
|
+
getUntrackedFiles: vitest_1.vi.fn().mockResolvedValue([]),
|
|
37
|
+
hasUncommittedChanges: vitest_1.vi.fn().mockResolvedValue(false),
|
|
38
|
+
}));
|
|
39
|
+
const runHandler = (overrides = {}) => complete_base_run_command_1.completeBaseRunCommand.handler({
|
|
40
|
+
apiToken: undefined,
|
|
41
|
+
testRunId: "tr-base",
|
|
42
|
+
commitSha: undefined,
|
|
43
|
+
project: undefined,
|
|
44
|
+
dontWaitForTestRunToComplete: true,
|
|
45
|
+
json: false,
|
|
46
|
+
...overrides,
|
|
47
|
+
});
|
|
48
|
+
const CONFIGURED_SESSION_IDS = ["sess-1", "sess-2", "sess-3"];
|
|
49
|
+
/**
|
|
50
|
+
* A `getTestRun` fixture: `waitForBaseRunCompletion` polls this (not
|
|
51
|
+
* `completeBaseRun`) to compute `unexecutedSessionCount` by diffing
|
|
52
|
+
* `configData.testCases` against `resultData.results`, mirroring the
|
|
53
|
+
* backend's own `findBaseRunSessionCompleteness`.
|
|
54
|
+
*/
|
|
55
|
+
const testRunFixture = ({ status, executedSessionIds = [], }) => ({
|
|
56
|
+
status,
|
|
57
|
+
configData: {
|
|
58
|
+
testCases: CONFIGURED_SESSION_IDS.map((sessionId) => ({ sessionId })),
|
|
59
|
+
},
|
|
60
|
+
resultData: {
|
|
61
|
+
results: executedSessionIds.map((sessionId) => ({ sessionId })),
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
(0, vitest_1.describe)("complete-base-run handler", () => {
|
|
65
|
+
(0, vitest_1.beforeEach)(() => {
|
|
66
|
+
vitest_1.vi.clearAllMocks();
|
|
67
|
+
mocks.createClientWithOAuth.mockResolvedValue({});
|
|
68
|
+
mocks.getCommitSha.mockResolvedValue("sha-1");
|
|
69
|
+
mocks.completeBaseRun.mockResolvedValue({
|
|
70
|
+
testRunId: "tr-base",
|
|
71
|
+
status: "Partial",
|
|
72
|
+
sessionsScheduled: 2,
|
|
73
|
+
configuredSessionCount: 3,
|
|
74
|
+
unexecutedSessionCount: 2,
|
|
75
|
+
});
|
|
76
|
+
mocks.getTestRun.mockResolvedValue(testRunFixture({
|
|
77
|
+
status: "Success",
|
|
78
|
+
executedSessionIds: CONFIGURED_SESSION_IDS,
|
|
79
|
+
}));
|
|
80
|
+
mocks.getTestRunForCommit.mockResolvedValue({
|
|
81
|
+
testRunId: "tr-base",
|
|
82
|
+
status: "Partial",
|
|
83
|
+
});
|
|
84
|
+
mocks.isFetchError.mockImplementation((error) => typeof error === "object" && error != null && "response" in error);
|
|
85
|
+
vitest_1.vi.spyOn(console, "log").mockImplementation(() => undefined);
|
|
86
|
+
});
|
|
87
|
+
(0, vitest_1.it)("completes the run named by --testRunId without a commit lookup", async () => {
|
|
88
|
+
await runHandler();
|
|
89
|
+
(0, vitest_1.expect)(mocks.completeBaseRun).toHaveBeenCalledWith({}, "tr-base");
|
|
90
|
+
(0, vitest_1.expect)(mocks.getTestRunForCommit).not.toHaveBeenCalled();
|
|
91
|
+
});
|
|
92
|
+
(0, vitest_1.it)("resolves the run from the current commit when no id is given", async () => {
|
|
93
|
+
await runHandler({ testRunId: undefined });
|
|
94
|
+
(0, vitest_1.expect)(mocks.completeBaseRun).toHaveBeenCalledWith({}, "tr-base");
|
|
95
|
+
});
|
|
96
|
+
(0, vitest_1.it)("rejects naming the run two ways at once", async () => {
|
|
97
|
+
await (0, vitest_1.expect)(runHandler({ commitSha: "sha-2" })).rejects.toBeInstanceOf(cli_user_error_1.CliUserError);
|
|
98
|
+
(0, vitest_1.expect)(mocks.completeBaseRun).not.toHaveBeenCalled();
|
|
99
|
+
});
|
|
100
|
+
(0, vitest_1.it)("says how much of the selected set it scheduled", async () => {
|
|
101
|
+
await runHandler();
|
|
102
|
+
(0, vitest_1.expect)(mocks.logNotice).toHaveBeenCalledWith(vitest_1.expect.stringMatching(/Scheduled 2 of test run tr-base's 3/));
|
|
103
|
+
});
|
|
104
|
+
// Idempotent: asking again must read as "nothing to do", not as an error or as
|
|
105
|
+
// work that was scheduled.
|
|
106
|
+
(0, vitest_1.it)("reports an already-complete run as nothing to do", async () => {
|
|
107
|
+
mocks.completeBaseRun.mockResolvedValue({
|
|
108
|
+
testRunId: "tr-base",
|
|
109
|
+
status: "Success",
|
|
110
|
+
sessionsScheduled: 0,
|
|
111
|
+
configuredSessionCount: 3,
|
|
112
|
+
unexecutedSessionCount: 0,
|
|
113
|
+
});
|
|
114
|
+
await runHandler();
|
|
115
|
+
(0, vitest_1.expect)(mocks.logNotice).toHaveBeenCalledWith(vitest_1.expect.stringMatching(/already replayed all 3/));
|
|
116
|
+
});
|
|
117
|
+
// sessionsScheduled === 0 is also what a call sees while earlier-scheduled
|
|
118
|
+
// work is still in flight — must not be read as "nothing to do" just
|
|
119
|
+
// because this call itself scheduled nothing.
|
|
120
|
+
(0, vitest_1.it)("reports a remainder still in flight distinctly from a complete run", async () => {
|
|
121
|
+
mocks.completeBaseRun.mockResolvedValue({
|
|
122
|
+
testRunId: "tr-base",
|
|
123
|
+
status: "Partial",
|
|
124
|
+
sessionsScheduled: 0,
|
|
125
|
+
configuredSessionCount: 3,
|
|
126
|
+
unexecutedSessionCount: 2,
|
|
127
|
+
});
|
|
128
|
+
await runHandler();
|
|
129
|
+
(0, vitest_1.expect)(mocks.logNotice).toHaveBeenCalledWith(vitest_1.expect.stringMatching(/2 of its 3 selected sessions still lack a result/));
|
|
130
|
+
(0, vitest_1.expect)(mocks.logNotice).not.toHaveBeenCalledWith(vitest_1.expect.stringMatching(/already replayed all/));
|
|
131
|
+
});
|
|
132
|
+
// The point of completing a run is being able to ask for its coverage, so
|
|
133
|
+
// the default is to wait for it to finish — by polling the read-only
|
|
134
|
+
// getTestRun (not re-posting complete-base-run) until both
|
|
135
|
+
// `unexecutedSessionCount` reaches 0 AND `status` has left `Partial`
|
|
136
|
+
// (coverage is only servable once post-process has caught up with the
|
|
137
|
+
// fully-covered set — see `isCoverageServable`).
|
|
138
|
+
(0, vitest_1.it)("waits for the run to finish by default", async () => {
|
|
139
|
+
mocks.completeBaseRun.mockResolvedValue({
|
|
140
|
+
testRunId: "tr-base",
|
|
141
|
+
status: "Partial",
|
|
142
|
+
sessionsScheduled: 2,
|
|
143
|
+
configuredSessionCount: 3,
|
|
144
|
+
unexecutedSessionCount: 2,
|
|
145
|
+
});
|
|
146
|
+
mocks.getTestRun
|
|
147
|
+
.mockResolvedValueOnce(testRunFixture({ status: "Partial", executedSessionIds: ["sess-1"] }))
|
|
148
|
+
.mockResolvedValue(testRunFixture({
|
|
149
|
+
status: "Success",
|
|
150
|
+
executedSessionIds: CONFIGURED_SESSION_IDS,
|
|
151
|
+
}));
|
|
152
|
+
vitest_1.vi.useFakeTimers();
|
|
153
|
+
try {
|
|
154
|
+
const handled = runHandler({ dontWaitForTestRunToComplete: false });
|
|
155
|
+
await vitest_1.vi.runAllTimersAsync();
|
|
156
|
+
await handled;
|
|
157
|
+
}
|
|
158
|
+
finally {
|
|
159
|
+
vitest_1.vi.useRealTimers();
|
|
160
|
+
}
|
|
161
|
+
(0, vitest_1.expect)(mocks.getTestRun.mock.calls.length).toBeGreaterThan(1);
|
|
162
|
+
// The whole point of polling getTestRun: no need to re-post
|
|
163
|
+
// complete-base-run just to observe progress.
|
|
164
|
+
(0, vitest_1.expect)(mocks.completeBaseRun).toHaveBeenCalledTimes(1);
|
|
165
|
+
});
|
|
166
|
+
// Progress must be read off the session-result diff, not the run's status —
|
|
167
|
+
// which can stay put (or even look terminal) the entire time work is still
|
|
168
|
+
// in flight, since a newly appended chunk's status transition happens
|
|
169
|
+
// independently of the run-level status field.
|
|
170
|
+
(0, vitest_1.it)("keeps polling while sessions remain unexecuted, even though the run's own status never changes", async () => {
|
|
171
|
+
mocks.completeBaseRun.mockResolvedValue({
|
|
172
|
+
testRunId: "tr-base",
|
|
173
|
+
status: "Success",
|
|
174
|
+
sessionsScheduled: 2,
|
|
175
|
+
configuredSessionCount: 3,
|
|
176
|
+
unexecutedSessionCount: 2,
|
|
177
|
+
});
|
|
178
|
+
mocks.getTestRun
|
|
179
|
+
.mockResolvedValueOnce(testRunFixture({
|
|
180
|
+
status: "Success",
|
|
181
|
+
executedSessionIds: ["sess-1"],
|
|
182
|
+
}))
|
|
183
|
+
.mockResolvedValueOnce(testRunFixture({
|
|
184
|
+
status: "Success",
|
|
185
|
+
executedSessionIds: ["sess-1", "sess-2"],
|
|
186
|
+
}))
|
|
187
|
+
.mockResolvedValue(testRunFixture({
|
|
188
|
+
status: "Success",
|
|
189
|
+
executedSessionIds: CONFIGURED_SESSION_IDS,
|
|
190
|
+
}));
|
|
191
|
+
vitest_1.vi.useFakeTimers();
|
|
192
|
+
try {
|
|
193
|
+
const handled = runHandler({
|
|
194
|
+
dontWaitForTestRunToComplete: false,
|
|
195
|
+
json: true,
|
|
196
|
+
});
|
|
197
|
+
await vitest_1.vi.runAllTimersAsync();
|
|
198
|
+
await handled;
|
|
199
|
+
}
|
|
200
|
+
finally {
|
|
201
|
+
vitest_1.vi.useRealTimers();
|
|
202
|
+
}
|
|
203
|
+
(0, vitest_1.expect)(mocks.getTestRun.mock.calls.length).toBeGreaterThanOrEqual(3);
|
|
204
|
+
(0, vitest_1.expect)(console.log).toHaveBeenCalledWith(vitest_1.expect.stringContaining('"unexecutedSessionCount": 0'));
|
|
205
|
+
});
|
|
206
|
+
// `unexecutedSessionCount` reaching 0 doesn't mean coverage is servable
|
|
207
|
+
// yet: session results land per-chunk as soon as replays finish, but the
|
|
208
|
+
// coverage artifact is only rewritten by a later post-process run — which
|
|
209
|
+
// is also what moves `status` off `Partial`. Must keep polling through that
|
|
210
|
+
// gap rather than treating a flat 0 as done.
|
|
211
|
+
(0, vitest_1.it)("keeps waiting once sessions are all executed but status is still Partial", async () => {
|
|
212
|
+
mocks.completeBaseRun.mockResolvedValue({
|
|
213
|
+
testRunId: "tr-base",
|
|
214
|
+
status: "Partial",
|
|
215
|
+
sessionsScheduled: 2,
|
|
216
|
+
configuredSessionCount: 3,
|
|
217
|
+
unexecutedSessionCount: 2,
|
|
218
|
+
});
|
|
219
|
+
mocks.getTestRun
|
|
220
|
+
.mockResolvedValueOnce(testRunFixture({
|
|
221
|
+
status: "Partial",
|
|
222
|
+
executedSessionIds: CONFIGURED_SESSION_IDS,
|
|
223
|
+
}))
|
|
224
|
+
.mockResolvedValue(testRunFixture({
|
|
225
|
+
status: "Success",
|
|
226
|
+
executedSessionIds: CONFIGURED_SESSION_IDS,
|
|
227
|
+
}));
|
|
228
|
+
vitest_1.vi.useFakeTimers();
|
|
229
|
+
try {
|
|
230
|
+
const handled = runHandler({ dontWaitForTestRunToComplete: false });
|
|
231
|
+
await vitest_1.vi.runAllTimersAsync();
|
|
232
|
+
await handled;
|
|
233
|
+
}
|
|
234
|
+
finally {
|
|
235
|
+
vitest_1.vi.useRealTimers();
|
|
236
|
+
}
|
|
237
|
+
(0, vitest_1.expect)(mocks.getTestRun.mock.calls.length).toBeGreaterThanOrEqual(2);
|
|
238
|
+
(0, vitest_1.expect)(mocks.getTestRun).toHaveBeenCalledWith({
|
|
239
|
+
client: {},
|
|
240
|
+
testRunId: "tr-base",
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
// Appending chunks takes a pool through `Running`/`PostProcessing` before
|
|
244
|
+
// post-process next rewrites the coverage artifact, mirroring the backend's
|
|
245
|
+
// own gate (`AgentApiService.assertBaseRunCoverageComplete`) — a status
|
|
246
|
+
// merely `!== "Partial"` would wrongly treat `Running` as settled and return
|
|
247
|
+
// before `js-coverage` can actually serve this run.
|
|
248
|
+
(0, vitest_1.it)("keeps waiting once sessions are all executed but status is still in-progress (Running)", async () => {
|
|
249
|
+
mocks.getTestRun
|
|
250
|
+
.mockResolvedValueOnce(testRunFixture({
|
|
251
|
+
status: "Running",
|
|
252
|
+
executedSessionIds: CONFIGURED_SESSION_IDS,
|
|
253
|
+
}))
|
|
254
|
+
.mockResolvedValue(testRunFixture({
|
|
255
|
+
status: "Success",
|
|
256
|
+
executedSessionIds: CONFIGURED_SESSION_IDS,
|
|
257
|
+
}));
|
|
258
|
+
vitest_1.vi.useFakeTimers();
|
|
259
|
+
try {
|
|
260
|
+
const handled = runHandler({ dontWaitForTestRunToComplete: false });
|
|
261
|
+
await vitest_1.vi.runAllTimersAsync();
|
|
262
|
+
await handled;
|
|
263
|
+
}
|
|
264
|
+
finally {
|
|
265
|
+
vitest_1.vi.useRealTimers();
|
|
266
|
+
}
|
|
267
|
+
(0, vitest_1.expect)(mocks.getTestRun.mock.calls.length).toBeGreaterThanOrEqual(2);
|
|
268
|
+
});
|
|
269
|
+
// complete-base-run keeps finding nothing further to schedule, so waiting
|
|
270
|
+
// out the full 45-minute timeout would be a long time to learn that. But a
|
|
271
|
+
// healthy chunk can also show no progress for minutes at a time (it only
|
|
272
|
+
// reports once the whole chunk finishes, and an ExecutionError chunk gets
|
|
273
|
+
// retried automatically), so this must not fire quickly or claim certainty
|
|
274
|
+
// about why it's stuck.
|
|
275
|
+
(0, vitest_1.it)("gives up early, rather than waiting out the timeout, once polling shows no progress for the full stall grace period", async () => {
|
|
276
|
+
// Both the read-only poll and the periodic reschedule report the same
|
|
277
|
+
// stuck state throughout — nothing ever moves.
|
|
278
|
+
mocks.completeBaseRun.mockResolvedValue({
|
|
279
|
+
testRunId: "tr-base",
|
|
280
|
+
status: "Partial",
|
|
281
|
+
sessionsScheduled: 0,
|
|
282
|
+
configuredSessionCount: 3,
|
|
283
|
+
unexecutedSessionCount: 1,
|
|
284
|
+
});
|
|
285
|
+
mocks.getTestRun.mockResolvedValue(testRunFixture({
|
|
286
|
+
status: "Partial",
|
|
287
|
+
executedSessionIds: ["sess-1", "sess-2"],
|
|
288
|
+
}));
|
|
289
|
+
vitest_1.vi.useFakeTimers();
|
|
290
|
+
try {
|
|
291
|
+
const handled = runHandler({ dontWaitForTestRunToComplete: false });
|
|
292
|
+
const assertion = (0, vitest_1.expect)(handled).rejects.toThrow(/nothing further to schedule/);
|
|
293
|
+
await vitest_1.vi.runAllTimersAsync();
|
|
294
|
+
await assertion;
|
|
295
|
+
}
|
|
296
|
+
finally {
|
|
297
|
+
vitest_1.vi.useRealTimers();
|
|
298
|
+
}
|
|
299
|
+
// The stall grace period is minutes, not seconds — assert on call count
|
|
300
|
+
// (10s polls) rather than a hardcoded duration, so this doesn't silently
|
|
301
|
+
// stop exercising the real constant if it's retuned again later.
|
|
302
|
+
(0, vitest_1.expect)(mocks.getTestRun.mock.calls.length).toBeGreaterThan(30);
|
|
303
|
+
// Re-invoked periodically (every 60s) to retry anything newly eligible,
|
|
304
|
+
// but far less often than every 10s poll.
|
|
305
|
+
(0, vitest_1.expect)(mocks.completeBaseRun.mock.calls.length).toBeGreaterThan(1);
|
|
306
|
+
(0, vitest_1.expect)(mocks.completeBaseRun.mock.calls.length).toBeLessThan(20);
|
|
307
|
+
});
|
|
308
|
+
// The periodic reschedule can pick up a session newly eligible again (e.g.
|
|
309
|
+
// one whose only chunk reconciled to ExecutionError) well before the stall
|
|
310
|
+
// grace period expires — real progress, even though the read-only poll
|
|
311
|
+
// won't see `unexecutedSessionCount` move until that fresh chunk lands a
|
|
312
|
+
// result. That must reset the grace period rather than let it expire
|
|
313
|
+
// underneath work that was in fact just picked back up.
|
|
314
|
+
(0, vitest_1.it)("does not give up when a periodic reschedule finds new work mid-stall", async () => {
|
|
315
|
+
const start = performance.now();
|
|
316
|
+
let hasRescheduled = false;
|
|
317
|
+
mocks.completeBaseRun.mockImplementation(() => {
|
|
318
|
+
let sessionsScheduled = 0;
|
|
319
|
+
// Just before the original 10-minute grace period would otherwise
|
|
320
|
+
// expire (counted from the first no-progress poll, a few seconds in).
|
|
321
|
+
if (!hasRescheduled && performance.now() - start >= 9 * 60 * 1000) {
|
|
322
|
+
sessionsScheduled = 1;
|
|
323
|
+
hasRescheduled = true;
|
|
324
|
+
}
|
|
325
|
+
return {
|
|
326
|
+
testRunId: "tr-base",
|
|
327
|
+
status: "Partial",
|
|
328
|
+
sessionsScheduled,
|
|
329
|
+
configuredSessionCount: 3,
|
|
330
|
+
unexecutedSessionCount: 1,
|
|
331
|
+
};
|
|
332
|
+
});
|
|
333
|
+
mocks.getTestRun.mockResolvedValue(testRunFixture({
|
|
334
|
+
status: "Partial",
|
|
335
|
+
executedSessionIds: ["sess-1", "sess-2"],
|
|
336
|
+
}));
|
|
337
|
+
vitest_1.vi.useFakeTimers();
|
|
338
|
+
try {
|
|
339
|
+
const handled = runHandler({ dontWaitForTestRunToComplete: false });
|
|
340
|
+
const assertion = (0, vitest_1.expect)(handled).resolves.toBeUndefined();
|
|
341
|
+
// Past the point the original grace period would have expired — without
|
|
342
|
+
// the reset this would already have thrown "nothing further to
|
|
343
|
+
// schedule".
|
|
344
|
+
await vitest_1.vi.advanceTimersByTimeAsync(11 * 60 * 1000);
|
|
345
|
+
mocks.getTestRun.mockResolvedValue(testRunFixture({
|
|
346
|
+
status: "Success",
|
|
347
|
+
executedSessionIds: CONFIGURED_SESSION_IDS,
|
|
348
|
+
}));
|
|
349
|
+
await vitest_1.vi.runAllTimersAsync();
|
|
350
|
+
await assertion;
|
|
351
|
+
}
|
|
352
|
+
finally {
|
|
353
|
+
vitest_1.vi.useRealTimers();
|
|
354
|
+
}
|
|
355
|
+
(0, vitest_1.expect)(hasRescheduled).toBe(true);
|
|
356
|
+
});
|
|
357
|
+
// A chunk bundling many sessions can plausibly go several minutes between
|
|
358
|
+
// polls without any progress before it finishes — that must not be
|
|
359
|
+
// mistaken for a permanent failure.
|
|
360
|
+
(0, vitest_1.it)("does not give up during a stall shorter than the grace period", async () => {
|
|
361
|
+
mocks.completeBaseRun.mockResolvedValue({
|
|
362
|
+
testRunId: "tr-base",
|
|
363
|
+
status: "Partial",
|
|
364
|
+
sessionsScheduled: 0,
|
|
365
|
+
configuredSessionCount: 3,
|
|
366
|
+
unexecutedSessionCount: 2,
|
|
367
|
+
});
|
|
368
|
+
mocks.getTestRun.mockResolvedValue(testRunFixture({
|
|
369
|
+
status: "Partial",
|
|
370
|
+
executedSessionIds: ["sess-1"],
|
|
371
|
+
}));
|
|
372
|
+
vitest_1.vi.useFakeTimers();
|
|
373
|
+
try {
|
|
374
|
+
const handled = runHandler({ dontWaitForTestRunToComplete: false });
|
|
375
|
+
// ~5 minutes of no visible progress — comfortably past the old
|
|
376
|
+
// 30s/3-poll threshold, well short of the new grace period — before the
|
|
377
|
+
// remaining sessions' chunk finally reports.
|
|
378
|
+
await vitest_1.vi.advanceTimersByTimeAsync(5 * 60 * 1000);
|
|
379
|
+
mocks.getTestRun.mockResolvedValue(testRunFixture({
|
|
380
|
+
status: "Success",
|
|
381
|
+
executedSessionIds: CONFIGURED_SESSION_IDS,
|
|
382
|
+
}));
|
|
383
|
+
await vitest_1.vi.runAllTimersAsync();
|
|
384
|
+
await handled;
|
|
385
|
+
}
|
|
386
|
+
finally {
|
|
387
|
+
vitest_1.vi.useRealTimers();
|
|
388
|
+
}
|
|
389
|
+
(0, vitest_1.expect)(mocks.getTestRun).toHaveBeenCalled();
|
|
390
|
+
});
|
|
391
|
+
(0, vitest_1.it)("does not wait when nothing was scheduled and nothing remains unexecuted", async () => {
|
|
392
|
+
mocks.completeBaseRun.mockResolvedValue({
|
|
393
|
+
testRunId: "tr-base",
|
|
394
|
+
status: "Success",
|
|
395
|
+
sessionsScheduled: 0,
|
|
396
|
+
configuredSessionCount: 3,
|
|
397
|
+
unexecutedSessionCount: 0,
|
|
398
|
+
});
|
|
399
|
+
await runHandler({ dontWaitForTestRunToComplete: false });
|
|
400
|
+
(0, vitest_1.expect)(mocks.getTestRun).not.toHaveBeenCalled();
|
|
401
|
+
});
|
|
402
|
+
vitest_1.it.each(["not-a-base-run", "ephemeral-deployment"])("turns the backend's %s refusal into a CliUserError", async (reason) => {
|
|
403
|
+
mocks.completeBaseRun.mockRejectedValue({
|
|
404
|
+
response: {
|
|
405
|
+
status: 400,
|
|
406
|
+
data: { reason, message: "Test run tr-base cannot be completed." },
|
|
407
|
+
},
|
|
408
|
+
});
|
|
409
|
+
await (0, vitest_1.expect)(runHandler()).rejects.toBeInstanceOf(cli_user_error_1.CliUserError);
|
|
410
|
+
await (0, vitest_1.expect)(runHandler()).rejects.toThrow(/tr-base cannot be completed/);
|
|
411
|
+
});
|
|
412
|
+
// Anything else is a genuine failure and must keep reaching the generic
|
|
413
|
+
// (Sentry) path rather than being dressed up as a user error.
|
|
414
|
+
(0, vitest_1.it)("leaves an unexpected failure alone", async () => {
|
|
415
|
+
const serverError = { response: { status: 500, data: {} } };
|
|
416
|
+
mocks.completeBaseRun.mockRejectedValue(serverError);
|
|
417
|
+
await (0, vitest_1.expect)(runHandler()).rejects.toBe(serverError);
|
|
418
|
+
});
|
|
419
|
+
});
|
|
420
|
+
//# sourceMappingURL=complete-base-run.command.spec.js.map
|
|
421
|
+
//# debugId=38ddbdd0-4427-5c9e-8d10-795044fa7641
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complete-base-run.command.spec.js","sources":["../../../src/commands/agent/complete-base-run.command.spec.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"38ddbdd0-4427-5c9e-8d10-795044fa7641"}
|
|
@@ -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;AAqB3C,eAAO,MAAM,YAAY,EAAE,aA4C1B,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]="d5d2564d-8b89-5e6a-832b-801fcd1ffd65")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.agentCommand = void 0;
|
|
6
|
+
const complete_base_run_command_1 = require("./complete-base-run.command");
|
|
6
7
|
const diff_comments_command_1 = require("./diff-comments.command");
|
|
7
8
|
const js_coverage_diff_command_1 = require("./js-coverage-diff.command");
|
|
8
9
|
const js_coverage_command_1 = require("./js-coverage.command");
|
|
@@ -42,6 +43,7 @@ exports.agentCommand = {
|
|
|
42
43
|
.command(sessions_command_1.sessionsCommand)
|
|
43
44
|
.command(upload_build_command_1.uploadBuildCommand)
|
|
44
45
|
.command(trigger_test_run_command_1.triggerTestRunCommand)
|
|
46
|
+
.command(complete_base_run_command_1.completeBaseRunCommand)
|
|
45
47
|
.command(submit_feedback_command_1.submitFeedbackCommand)
|
|
46
48
|
.option("verbose", {
|
|
47
49
|
boolean: true,
|
|
@@ -62,4 +64,4 @@ exports.agentCommand = {
|
|
|
62
64
|
},
|
|
63
65
|
};
|
|
64
66
|
//# sourceMappingURL=index.js.map
|
|
65
|
-
//# debugId=
|
|
67
|
+
//# debugId=d5d2564d-8b89-5e6a-832b-801fcd1ffd65
|
|
@@ -1 +1 @@
|
|
|
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,qEAA+D;AAC/D,+EAAwE;AACxE,yDAAyD;AACzD,yEAAmE;AACnE,iEAA4D;AAC5D,+DAA0D;AAC1D,+DAA0D;AAC1D,+EAAyE;AACzE,mFAA4E;AAE/D,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,4CAAmB,CAAC;SAC5B,OAAO,CAAC,kDAAiB,CAAC;SAC1B,OAAO,CAAC,2CAAgB,CAAC;SACzB,OAAO,CAAC,4CAAc,CAAC;SACvB,OAAO,CAAC,sCAAmB,CAAC;SAC5B,OAAO,CAAC,2CAAmB,CAAC;SAC5B,OAAO,CAAC,uCAAiB,CAAC;SAC1B,OAAO,CAAC,uCAAiB,CAAC;SAC1B,OAAO,CAAC,sDAAwB,CAAC;SACjC,OAAO,CAAC,yDAAyB,CAAC;SAClC,OAAO,CAAC,uCAAiB,CAAC;SAC1B,OAAO,CAAC,gDAAqB,CAAC;SAC9B,OAAO,CAAC,kCAAe,CAAC;SACxB,OAAO,CAAC,yCAAkB,CAAC;SAC3B,OAAO,CAAC,gDAAqB,CAAC;SAC9B,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,2EAAqE;AACrE,mEAA8D;AAC9D,yEAAmE;AACnE,+DAA0D;AAC1D,+EAA+D;AAC/D,qFAAqE;AACrE,yEAA8D;AAC9D,yDAAqD;AACrD,uEAAkE;AAClE,qEAA+D;AAC/D,qEAA+D;AAC/D,+EAAwE;AACxE,yDAAyD;AACzD,yEAAmE;AACnE,iEAA4D;AAC5D,+DAA0D;AAC1D,+DAA0D;AAC1D,+EAAyE;AACzE,mFAA4E;AAE/D,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,4CAAmB,CAAC;SAC5B,OAAO,CAAC,kDAAiB,CAAC;SAC1B,OAAO,CAAC,2CAAgB,CAAC;SACzB,OAAO,CAAC,4CAAc,CAAC;SACvB,OAAO,CAAC,sCAAmB,CAAC;SAC5B,OAAO,CAAC,2CAAmB,CAAC;SAC5B,OAAO,CAAC,uCAAiB,CAAC;SAC1B,OAAO,CAAC,uCAAiB,CAAC;SAC1B,OAAO,CAAC,sDAAwB,CAAC;SACjC,OAAO,CAAC,yDAAyB,CAAC;SAClC,OAAO,CAAC,uCAAiB,CAAC;SAC1B,OAAO,CAAC,gDAAqB,CAAC;SAC9B,OAAO,CAAC,kCAAe,CAAC;SACxB,OAAO,CAAC,yCAAkB,CAAC;SAC3B,OAAO,CAAC,gDAAqB,CAAC;SAC9B,OAAO,CAAC,kDAAsB,CAAC;SAC/B,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":"d5d2564d-8b89-5e6a-832b-801fcd1ffd65"}
|
|
@@ -24,42 +24,25 @@ export interface Options {
|
|
|
24
24
|
json: boolean;
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
|
-
* Whether a run
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
27
|
+
* Whether a run has produced the artifacts a replay's coverage can be resolved
|
|
28
|
+
* against (its clone-and-parse source-map→repo-path dictionary). A `Partial`
|
|
29
|
+
* base run has: those artifacts are produced up front, so it can anchor a
|
|
30
|
+
* replay even though its own coverage total isn't worth reporting on its own
|
|
31
|
+
* (see {@link assertTestRunCoverageResolvable}).
|
|
31
32
|
*/
|
|
32
|
-
export declare const
|
|
33
|
+
export declare const canAnchorReplayCoverage: (status: TestRunStatus) => boolean;
|
|
33
34
|
/**
|
|
34
|
-
* Asserts a resolved run
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
35
|
+
* Asserts a resolved run's own coverage is resolvable at all, throwing for a
|
|
36
|
+
* fatal or unfinished one. `Partial` is deliberately not rejected here — a
|
|
37
|
+
* base run session pool sits in `Partial` indefinitely between requests, which
|
|
38
|
+
* is not "unfinished" the way an in-progress run is, and whether its coverage
|
|
39
|
+
* is complete enough to serve depends on how much of its selected set has
|
|
40
|
+
* actually replayed, which only the backend knows. So the request is sent
|
|
41
|
+
* through, and the backend refuses it with `incomplete-base-run` (see
|
|
42
|
+
* {@link fetchTestRunCoverage}) if it isn't ready — the CLI doesn't need to
|
|
43
|
+
* know "is this a base run" up front to decide whether to even send it.
|
|
39
44
|
*/
|
|
40
|
-
export declare const
|
|
41
|
-
/**
|
|
42
|
-
* A base run keeps executing sessions on demand, so its coverage is a moving
|
|
43
|
-
* total rather than a fixed one — say so rather than letting the numbers read
|
|
44
|
-
* as final. Emitted per base run involved (the primary and/or any unioned
|
|
45
|
-
* in). Status isn't named here: a `Partial` run is still accumulating
|
|
46
|
-
* sessions, but a settled session-pool base (status Success/Failure) can
|
|
47
|
-
* reach here too, so the wording has to hold for either.
|
|
48
|
-
*/
|
|
49
|
-
export declare const logBaseRunCoverageNotice: (baseRunIds: string[]) => void;
|
|
50
|
-
/**
|
|
51
|
-
* A base run has no PR, so its `coverage.pr.json` is written empty — scoping
|
|
52
|
-
* coverage to it would answer "nothing covered" to a question that doesn't
|
|
53
|
-
* apply to this kind of run. Rejected client-side to save the round trip; the
|
|
54
|
-
* backend enforces the same rule for the MCP surface.
|
|
55
|
-
*
|
|
56
|
-
* A session-pool base can settle into Success/Failure without ever becoming
|
|
57
|
-
* Partial, and it still has no PR once settled, so `isSessionPoolRun` is
|
|
58
|
-
* checked independently of status (mirrors the backend's `getTestRunJsCoverageV2`).
|
|
59
|
-
*/
|
|
60
|
-
export declare const assertPrDiffOnlyCompatible: (testRunId: string, status: TestRunStatus, { prDiffOnly }: Pick<Options, "prDiffOnly">, { isSessionPoolRun }: {
|
|
61
|
-
isSessionPoolRun: boolean;
|
|
62
|
-
}) => void;
|
|
45
|
+
export declare const assertTestRunCoverageResolvable: (testRunId: string, status: TestRunStatus) => void;
|
|
63
46
|
export declare const assertLatestForProjectCompatible: (options: Options) => void;
|
|
64
47
|
export declare const assertTestRunOnlyFlagsUnsetForReplay: (options: Options) => void;
|
|
65
48
|
export declare const parseHeadPlusTestRunIds: (raw: string | undefined) => string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js-coverage.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/js-coverage.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EACV,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EAI1B,MAAM,0BAA0B,CAAC;AAUlC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAe3C,OAAO,EAEL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAEhB,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;AAErE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,uBAAuB,EAAE,OAAO,CAAC;IACjC,sBAAsB,EAAE,OAAO,CAAC;IAChC,yBAAyB,EAAE,OAAO,CAAC;IACnC,4BAA4B,EAAE,OAAO,CAAC;IACtC,IAAI,EAAE,OAAO,CAAC;CACf;
|
|
1
|
+
{"version":3,"file":"js-coverage.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/js-coverage.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EACV,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EAI1B,MAAM,0BAA0B,CAAC;AAUlC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAe3C,OAAO,EAEL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAEhB,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;AAErE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,uBAAuB,EAAE,OAAO,CAAC;IACjC,sBAAsB,EAAE,OAAO,CAAC;IAChC,yBAAyB,EAAE,OAAO,CAAC;IACnC,4BAA4B,EAAE,OAAO,CAAC;IACtC,IAAI,EAAE,OAAO,CAAC;CACf;AAgLD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,WAAY,aAAa,KAAG,OACT,CAAC;AAExD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,+BAA+B,cAC/B,MAAM,UACT,aAAa,KACpB,IAKF,CAAC;AAyCF,eAAO,MAAM,gCAAgC,YAAa,OAAO,KAAG,IAuBnE,CAAC;AAMF,eAAO,MAAM,oCAAoC,YACtC,OAAO,KACf,IAkBF,CAAC;AAOF,eAAO,MAAM,uBAAuB,QAAS,MAAM,GAAG,SAAS,KAAG,MAAM,EAcvE,CAAC;AASF,eAAO,MAAM,eAAe,QAAS,MAAM,KAAG,MAAM,EAWnD,CAAC;AAgIF,eAAO,MAAM,kCAAkC,YACpC,OAAO,WACP,cAAc,EAAE,KACxB,wBAUF,CAAC;AAEF,eAAO,MAAM,oBAAoB,WACvB,gBAAgB,WACf,MAAM,GAAG,SAAS,UACnB,yBAAyB,WACxB,cAAc,EAAE,QACnB,OAAO,KACZ,OAAO,CAAC,IAAI,CAkBd,CAAC;AAkFF,eAAO,MAAM,uBAAuB,UAAW,OAAO,KAAG,OAGjC,CAAC;AAEzB,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CA2G7D,CAAC"}
|