@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.
Files changed (36) hide show
  1. package/dist/commands/agent/complete-base-run.command.d.ts +27 -0
  2. package/dist/commands/agent/complete-base-run.command.d.ts.map +1 -0
  3. package/dist/commands/agent/complete-base-run.command.js +255 -0
  4. package/dist/commands/agent/complete-base-run.command.js.map +1 -0
  5. package/dist/commands/agent/complete-base-run.command.spec.d.ts +2 -0
  6. package/dist/commands/agent/complete-base-run.command.spec.d.ts.map +1 -0
  7. package/dist/commands/agent/complete-base-run.command.spec.js +421 -0
  8. package/dist/commands/agent/complete-base-run.command.spec.js.map +1 -0
  9. package/dist/commands/agent/index.d.ts.map +1 -1
  10. package/dist/commands/agent/index.js +4 -2
  11. package/dist/commands/agent/index.js.map +1 -1
  12. package/dist/commands/agent/js-coverage.command.d.ts +16 -33
  13. package/dist/commands/agent/js-coverage.command.d.ts.map +1 -1
  14. package/dist/commands/agent/js-coverage.command.handler.spec.js +88 -97
  15. package/dist/commands/agent/js-coverage.command.handler.spec.js.map +1 -1
  16. package/dist/commands/agent/js-coverage.command.js +79 -118
  17. package/dist/commands/agent/js-coverage.command.js.map +1 -1
  18. package/dist/commands/agent/js-coverage.command.spec.js +33 -55
  19. package/dist/commands/agent/js-coverage.command.spec.js.map +1 -1
  20. package/dist/commands/ci/agent-test.command.d.ts.map +1 -1
  21. package/dist/commands/ci/agent-test.command.js +19 -6
  22. package/dist/commands/ci/agent-test.command.js.map +1 -1
  23. package/dist/commands/ci/agent-test.command.spec.js +46 -2
  24. package/dist/commands/ci/agent-test.command.spec.js.map +1 -1
  25. package/dist/commands/onboard/templates/agents/ci-setup.md +6 -2
  26. package/dist/commands/onboard/templates/docs/additional-guides/backend-recorder.ts +31 -0
  27. package/dist/commands/onboard/templates/docs/reference/cli-commands.ts +2 -0
  28. package/dist/utils/error-response-body.d.ts +11 -0
  29. package/dist/utils/error-response-body.d.ts.map +1 -0
  30. package/dist/utils/error-response-body.js +18 -0
  31. package/dist/utils/error-response-body.js.map +1 -0
  32. package/dist/utils/resolve-test-run-from-commit.d.ts +28 -12
  33. package/dist/utils/resolve-test-run-from-commit.d.ts.map +1 -1
  34. package/dist/utils/resolve-test-run-from-commit.js +32 -18
  35. package/dist/utils/resolve-test-run-from-commit.js.map +1 -1
  36. 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;AAoB3C,eAAO,MAAM,YAAY,EAAE,aA2C1B,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]="fd06ac8e-4f16-59af-abf3-8548bd0388ff")}catch(e){}}();
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=fd06ac8e-4f16-59af-abf3-8548bd0388ff
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":"fd06ac8e-4f16-59af-abf3-8548bd0388ff"}
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 can serve coverage. `Partial` base runs can: coverage is
28
- * recorded per replay as sessions execute, so a session pool that has replayed
29
- * anything has coverage even though it never reaches a verdict the backend
30
- * serves it, and the webapp and Relevant Session Execution both read it.
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 canServeCoverage: (status: TestRunStatus) => boolean;
33
+ export declare const canAnchorReplayCoverage: (status: TestRunStatus) => boolean;
33
34
  /**
34
- * Asserts a resolved run can serve coverage, throwing for a fatal or unfinished
35
- * one and accepting a `Partial` base run. Throw-only: the base run is explained
36
- * by {@link logBaseRunCoverageNotice} once coverage has actually been returned,
37
- * since a run with nothing recorded yet fails instead and shouldn't first be
38
- * told its coverage "grows over time".
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 assertTestRunCoverageAvailable: (testRunId: string, status: TestRunStatus) => void;
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;AAqMD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,WAAY,aAAa,KAAG,OACF,CAAC;AAExD;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,cAC9B,MAAM,UACT,aAAa,KACpB,IAKF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,eAAgB,MAAM,EAAE,KAAG,IAM/D,CAAC;AAsBF;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,cAC1B,MAAM,UACT,aAAa,kBACL,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,wBACrB;IAAE,gBAAgB,EAAE,OAAO,CAAA;CAAE,KAClD,IAIF,CAAC;AAmBF,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;AA+HF,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,CAcd,CAAC;AA0FF,eAAO,MAAM,uBAAuB,UAAW,OAAO,KAAG,OAGjC,CAAC;AAEzB,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CA2G7D,CAAC"}
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"}