@alwaysmeticulous/remote-replay-launcher 2.303.1 → 2.305.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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=trigger-test-run.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-test-run.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/trigger-test-run.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,99 @@
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]="61ee15e2-d696-59d7-b49a-31e3693ee66d")}catch(e){}}();
3
+
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ const client_1 = require("@alwaysmeticulous/client");
6
+ const vitest_1 = require("vitest");
7
+ const trigger_test_run_1 = require("../trigger-test-run");
8
+ const asset_upload_utils_1 = require("../asset-upload-utils");
9
+ vitest_1.vi.mock("@alwaysmeticulous/client", () => ({
10
+ createClient: vitest_1.vi.fn(() => "mock-client"),
11
+ getApiToken: vitest_1.vi.fn((token) => token ?? null),
12
+ agentUploadGitDiffBuild: vitest_1.vi.fn(),
13
+ agentTriggerTestRun: vitest_1.vi.fn(),
14
+ }));
15
+ vitest_1.vi.mock("@alwaysmeticulous/common", () => ({
16
+ logProgress: vitest_1.vi.fn(),
17
+ }));
18
+ vitest_1.vi.mock("../asset-upload-utils", () => ({
19
+ uploadBufferToSignedUrl: vitest_1.vi.fn(),
20
+ }));
21
+ (0, vitest_1.describe)("triggerTestRun", () => {
22
+ (0, vitest_1.beforeEach)(() => {
23
+ vitest_1.vi.clearAllMocks();
24
+ vitest_1.vi.mocked(client_1.agentTriggerTestRun).mockResolvedValue({
25
+ testRun: { id: "tr-1", url: "https://app/tr-1" },
26
+ commitSha: "sha-1",
27
+ });
28
+ });
29
+ (0, vitest_1.it)("pins the trigger call to the deployment resolved for a commitSha-based diff upload, instead of re-passing commitSha", async () => {
30
+ vitest_1.vi.mocked(client_1.agentUploadGitDiffBuild).mockResolvedValue({
31
+ uploadUrl: "https://signed",
32
+ deploymentId: "dep-resolved",
33
+ });
34
+ await (0, trigger_test_run_1.triggerTestRun)({
35
+ apiToken: "token",
36
+ commitSha: "sha-1",
37
+ baseSha: "base-1",
38
+ gitDiffOutput: "diff --git a b",
39
+ });
40
+ (0, vitest_1.expect)(client_1.agentUploadGitDiffBuild).toHaveBeenCalledWith(vitest_1.expect.objectContaining({ commitSha: "sha-1", baseSha: "base-1" }));
41
+ // The trigger call must reuse the resolved deploymentId, not commitSha —
42
+ // re-passing commitSha would let the backend re-resolve it independently
43
+ // and potentially land on a different deployment than the diff was
44
+ // attached to.
45
+ (0, vitest_1.expect)(client_1.agentTriggerTestRun).toHaveBeenCalledWith(vitest_1.expect.objectContaining({ deploymentId: "dep-resolved" }));
46
+ (0, vitest_1.expect)(client_1.agentTriggerTestRun).toHaveBeenCalledWith(vitest_1.expect.not.objectContaining({ commitSha: vitest_1.expect.anything() }));
47
+ (0, vitest_1.expect)(asset_upload_utils_1.uploadBufferToSignedUrl).toHaveBeenCalledWith("https://signed", vitest_1.expect.any(Buffer), vitest_1.expect.objectContaining({ contentType: "text/plain" }));
48
+ });
49
+ (0, vitest_1.it)("uploads the diff against an explicit deploymentId directly, without a commitSha lookup", async () => {
50
+ vitest_1.vi.mocked(client_1.agentUploadGitDiffBuild).mockResolvedValue({
51
+ uploadUrl: "https://signed",
52
+ deploymentId: "dep-1",
53
+ });
54
+ await (0, trigger_test_run_1.triggerTestRun)({
55
+ apiToken: "token",
56
+ deploymentId: "dep-1",
57
+ baseSha: "base-1",
58
+ gitDiffOutput: "diff --git a b",
59
+ });
60
+ (0, vitest_1.expect)(client_1.agentUploadGitDiffBuild).toHaveBeenCalledWith(vitest_1.expect.objectContaining({ deploymentId: "dep-1" }));
61
+ (0, vitest_1.expect)(client_1.agentUploadGitDiffBuild).toHaveBeenCalledWith(vitest_1.expect.not.objectContaining({ commitSha: vitest_1.expect.anything() }));
62
+ (0, vitest_1.expect)(client_1.agentTriggerTestRun).toHaveBeenCalledWith(vitest_1.expect.objectContaining({ deploymentId: "dep-1" }));
63
+ });
64
+ (0, vitest_1.it)("skips the diff upload and passes commitSha straight through when there is no diff", async () => {
65
+ await (0, trigger_test_run_1.triggerTestRun)({
66
+ apiToken: "token",
67
+ commitSha: "sha-1",
68
+ baseSha: "base-1",
69
+ });
70
+ (0, vitest_1.expect)(client_1.agentUploadGitDiffBuild).not.toHaveBeenCalled();
71
+ (0, vitest_1.expect)(client_1.agentTriggerTestRun).toHaveBeenCalledWith(vitest_1.expect.objectContaining({ commitSha: "sha-1" }));
72
+ });
73
+ (0, vitest_1.it)("still requires an API token", async () => {
74
+ vitest_1.vi.mocked(client_1.createClient);
75
+ await (0, vitest_1.expect)((0, trigger_test_run_1.triggerTestRun)({
76
+ apiToken: null,
77
+ commitSha: "sha-1",
78
+ baseSha: "base-1",
79
+ })).rejects.toThrow(/API token/);
80
+ });
81
+ (0, vitest_1.it)("rejects when neither deploymentId nor commitSha is provided", async () => {
82
+ await (0, vitest_1.expect)((0, trigger_test_run_1.triggerTestRun)({
83
+ apiToken: "token",
84
+ baseSha: "base-1",
85
+ })).rejects.toThrow(/Exactly one of deploymentId or commitSha/);
86
+ (0, vitest_1.expect)(client_1.agentTriggerTestRun).not.toHaveBeenCalled();
87
+ });
88
+ (0, vitest_1.it)("rejects when both deploymentId and commitSha are provided", async () => {
89
+ await (0, vitest_1.expect)((0, trigger_test_run_1.triggerTestRun)({
90
+ apiToken: "token",
91
+ deploymentId: "dep-1",
92
+ commitSha: "sha-1",
93
+ baseSha: "base-1",
94
+ })).rejects.toThrow(/Exactly one of deploymentId or commitSha/);
95
+ (0, vitest_1.expect)(client_1.agentTriggerTestRun).not.toHaveBeenCalled();
96
+ });
97
+ });
98
+ //# sourceMappingURL=trigger-test-run.spec.js.map
99
+ //# debugId=61ee15e2-d696-59d7-b49a-31e3693ee66d
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-test-run.spec.js","sources":["../../src/__tests__/trigger-test-run.spec.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"61ee15e2-d696-59d7-b49a-31e3693ee66d"}
@@ -1,8 +1,11 @@
1
1
  import type { TestRun } from "@alwaysmeticulous/api";
2
+ import type { ChunkPathOverlap } from "@alwaysmeticulous/client";
2
3
  type PollResult = {
3
4
  testRun?: TestRun | null;
4
5
  baseNotFound?: boolean | undefined;
5
6
  message?: string | undefined;
7
+ overlaps?: ChunkPathOverlap[] | undefined;
8
+ overlapsTruncated?: boolean | undefined;
6
9
  };
7
10
  /**
8
11
  * Polls by repeatedly calling `retryFn` until a test run is found or the timeout is reached.
@@ -1 +1 @@
1
- {"version":3,"file":"poll-for-base-test-run.d.ts","sourceRoot":"","sources":["../src/poll-for-base-test-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAMrD,KAAK,UAAU,GAAG;IAChB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,4CAI/B;IACD,aAAa,EAAE,UAAU,CAAC;IAC1B,OAAO,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;CACvC,KAAG,OAAO,CAAC,UAAU,CAgDrB,CAAC"}
1
+ {"version":3,"file":"poll-for-base-test-run.d.ts","sourceRoot":"","sources":["../src/poll-for-base-test-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAMjE,KAAK,UAAU,GAAG;IAChB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;IAC1C,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,4CAI/B;IACD,aAAa,EAAE,UAAU,CAAC;IAC1B,OAAO,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;CACvC,KAAG,OAAO,CAAC,UAAU,CAwDrB,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]="f16367ce-8108-5475-bdc7-80f2e3bd9d89")}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]="49986435-5989-5702-aa7d-5cd382384bf5")}catch(e){}}();
3
3
 
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.pollWhileBaseNotFound = void 0;
@@ -15,6 +15,10 @@ const pollWhileBaseNotFound = async ({ initialResult, retryFn, fallbackFn, }) =>
15
15
  let testRun = initialResult.testRun ?? null;
16
16
  let baseNotFound = initialResult.baseNotFound;
17
17
  let message = initialResult.message;
18
+ // Track overlaps from whichever attempt ultimately resolves the manifest;
19
+ // they aren't known on a baseNotFound response but arrive once it succeeds.
20
+ let overlaps = initialResult.overlaps;
21
+ let overlapsTruncated = initialResult.overlapsTruncated;
18
22
  if (!testRun && baseNotFound) {
19
23
  const startTime = Date.now();
20
24
  let lastTimeElapsed = 0;
@@ -34,17 +38,21 @@ const pollWhileBaseNotFound = async ({ initialResult, retryFn, fallbackFn, }) =>
34
38
  testRun = retryResult.testRun ?? null;
35
39
  baseNotFound = retryResult.baseNotFound;
36
40
  message = retryResult.message;
41
+ overlaps = retryResult.overlaps;
42
+ overlapsTruncated = retryResult.overlapsTruncated;
37
43
  }
38
44
  if (baseNotFound && !testRun) {
39
45
  logger.info("Base test run not found, proceeding without it.");
40
46
  const fallbackResult = await fallbackFn();
41
47
  testRun = fallbackResult.testRun ?? null;
42
48
  message = fallbackResult.message;
43
- baseNotFound = false;
49
+ overlaps = fallbackResult.overlaps;
50
+ overlapsTruncated = fallbackResult.overlapsTruncated;
51
+ baseNotFound = fallbackResult.baseNotFound ?? false;
44
52
  }
45
53
  }
46
- return { testRun, baseNotFound, message };
54
+ return { testRun, baseNotFound, message, overlaps, overlapsTruncated };
47
55
  };
48
56
  exports.pollWhileBaseNotFound = pollWhileBaseNotFound;
49
57
  //# sourceMappingURL=poll-for-base-test-run.js.map
50
- //# debugId=f16367ce-8108-5475-bdc7-80f2e3bd9d89
58
+ //# debugId=49986435-5989-5702-aa7d-5cd382384bf5
@@ -1 +1 @@
1
- {"version":3,"file":"poll-for-base-test-run.js","sources":["../src/poll-for-base-test-run.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AACA,qDAAsD;AAEtD,MAAM,kCAAkC,GAAG,MAAM,CAAC;AAClD,MAAM,qCAAqC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAQzE;;;GAGG;AACI,MAAM,qBAAqB,GAAG,KAAK,EAAE,EAC1C,aAAa,EACb,OAAO,EACP,UAAU,GAKX,EAAuB,EAAE;IACxB,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;IAE5B,IAAI,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,IAAI,CAAC;IAC5C,IAAI,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;IAC9C,IAAI,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;IAEpC,IAAI,CAAC,OAAO,IAAI,YAAY,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAE1D,OAAO,CAAC,OAAO,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC3C,IAAI,WAAW,GAAG,qCAAqC,EAAE,CAAC;gBACxD,MAAM,CAAC,IAAI,CACT,mBACE,qCAAqC,GAAG,IAC1C,oCAAoC,CACrC,CAAC;gBACF,MAAM;YACR,CAAC;YACD,IAAI,eAAe,KAAK,CAAC,IAAI,WAAW,GAAG,eAAe,IAAI,MAAM,EAAE,CAAC;gBACrE,MAAM,CAAC,IAAI,CACT,0DAA0D,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAC5F,CAAC;gBACF,eAAe,GAAG,WAAW,CAAC;YAChC,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5B,UAAU,CAAC,OAAO,EAAE,kCAAkC,CAAC,CACxD,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAC;YACpC,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC;YACtC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;YACxC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QAChC,CAAC;QAED,IAAI,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAC/D,MAAM,cAAc,GAAG,MAAM,UAAU,EAAE,CAAC;YAC1C,OAAO,GAAG,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC;YACzC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;YACjC,YAAY,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AAC5C,CAAC,CAAC;AAxDW,QAAA,qBAAqB,yBAwDhC","debugId":"f16367ce-8108-5475-bdc7-80f2e3bd9d89"}
1
+ {"version":3,"file":"poll-for-base-test-run.js","sources":["../src/poll-for-base-test-run.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAEA,qDAAsD;AAEtD,MAAM,kCAAkC,GAAG,MAAM,CAAC;AAClD,MAAM,qCAAqC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAUzE;;;GAGG;AACI,MAAM,qBAAqB,GAAG,KAAK,EAAE,EAC1C,aAAa,EACb,OAAO,EACP,UAAU,GAKX,EAAuB,EAAE;IACxB,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;IAE5B,IAAI,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,IAAI,CAAC;IAC5C,IAAI,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;IAC9C,IAAI,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;IACpC,0EAA0E;IAC1E,4EAA4E;IAC5E,IAAI,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;IACtC,IAAI,iBAAiB,GAAG,aAAa,CAAC,iBAAiB,CAAC;IAExD,IAAI,CAAC,OAAO,IAAI,YAAY,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAE1D,OAAO,CAAC,OAAO,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC3C,IAAI,WAAW,GAAG,qCAAqC,EAAE,CAAC;gBACxD,MAAM,CAAC,IAAI,CACT,mBACE,qCAAqC,GAAG,IAC1C,oCAAoC,CACrC,CAAC;gBACF,MAAM;YACR,CAAC;YACD,IAAI,eAAe,KAAK,CAAC,IAAI,WAAW,GAAG,eAAe,IAAI,MAAM,EAAE,CAAC;gBACrE,MAAM,CAAC,IAAI,CACT,0DAA0D,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAC5F,CAAC;gBACF,eAAe,GAAG,WAAW,CAAC;YAChC,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5B,UAAU,CAAC,OAAO,EAAE,kCAAkC,CAAC,CACxD,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAC;YACpC,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC;YACtC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;YACxC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;YAC9B,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;YAChC,iBAAiB,GAAG,WAAW,CAAC,iBAAiB,CAAC;QACpD,CAAC;QAED,IAAI,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAC/D,MAAM,cAAc,GAAG,MAAM,UAAU,EAAE,CAAC;YAC1C,OAAO,GAAG,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC;YACzC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;YACjC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;YACnC,iBAAiB,GAAG,cAAc,CAAC,iBAAiB,CAAC;YACrD,YAAY,GAAG,cAAc,CAAC,YAAY,IAAI,KAAK,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;AACzE,CAAC,CAAC;AAhEW,QAAA,qBAAqB,yBAgEhC","debugId":"49986435-5989-5702-aa7d-5cd382384bf5"}
@@ -1,5 +1,5 @@
1
1
  import type { AssetUploadMetadata, TestRun } from "@alwaysmeticulous/api";
2
- import type { ChunkPathOverlap, createClient, ProjectAssetChunkReference, ProjectIdentifier } from "@alwaysmeticulous/client";
2
+ import type { ChunkPathOverlap, createClient, RequestedProjectAssetChunkReference, ProjectIdentifier } from "@alwaysmeticulous/client";
3
3
  export interface RunWithUploadedAssetChunksOptions extends ProjectIdentifier {
4
4
  client: ReturnType<typeof createClient>;
5
5
  commitSha: string;
@@ -8,7 +8,7 @@ export interface RunWithUploadedAssetChunksOptions extends ProjectIdentifier {
8
8
  waitForBase: boolean;
9
9
  rewrites: AssetUploadMetadata["rewrites"];
10
10
  createDeployment?: boolean;
11
- assetReferencesManifest: ProjectAssetChunkReference[];
11
+ assetReferencesManifest: RequestedProjectAssetChunkReference[];
12
12
  }
13
13
  export interface RunWithUploadedAssetChunksResult {
14
14
  testRun: TestRun | null;
@@ -1 +1 @@
1
- {"version":3,"file":"run-with-uploaded-asset-chunks.d.ts","sourceRoot":"","sources":["../src/run-with-uploaded-asset-chunks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,0BAA0B,EAC1B,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAUlC,MAAM,WAAW,iCAAkC,SAAQ,iBAAiB;IAC1E,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC1C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uBAAuB,EAAE,0BAA0B,EAAE,CAAC;CACvD;AAED,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,gIAUpC,iCAAiC,KAAG,OAAO,CAAC,gCAAgC,CAkF9E,CAAC"}
1
+ {"version":3,"file":"run-with-uploaded-asset-chunks.d.ts","sourceRoot":"","sources":["../src/run-with-uploaded-asset-chunks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,mCAAmC,EACnC,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAUlC,MAAM,WAAW,iCAAkC,SAAQ,iBAAiB;IAC1E,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC1C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uBAAuB,EAAE,mCAAmC,EAAE,CAAC;CAChE;AAED,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,gIAUpC,iCAAiC,KAAG,OAAO,CAAC,gCAAgC,CAsG9E,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]="824ef4a8-86e4-5d8e-b5a4-696e9c425ff4")}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]="3ea754d6-f1e7-5300-aa4b-53b95bdc6a2f")}catch(e){}}();
3
3
 
4
4
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
5
  if (k2 === undefined) k2 = k;
@@ -60,15 +60,17 @@ const runWithUploadedAssetChunks = async ({ client, commitSha, baseSha, gitDiffO
60
60
  rewrites,
61
61
  ...(projectId ? { projectId } : {}),
62
62
  });
63
- // Overlaps are computed on the phase-1 response only; they describe the
64
- // manifest itself, which doesn't change when triggering the run.
65
- const overlapsResult = overlaps && overlaps.length > 0
66
- ? { overlaps, ...(overlapsTruncated ? { overlapsTruncated: true } : {}) }
67
- : {};
68
63
  // Dry run (createDeployment: false) creates no deployment, so there is no
69
- // diff to upload and no run to trigger — just surface the overlaps.
64
+ // diff to upload and no run to trigger — just surface the upload endpoint's
65
+ // best-effort (concrete-only) overlap preview.
70
66
  if (createDeployment === false || !sourceDeploymentId) {
71
- return { testRun: null, ...overlapsResult };
67
+ const dryRunOverlaps = overlaps && overlaps.length > 0
68
+ ? {
69
+ overlaps,
70
+ ...(overlapsTruncated ? { overlapsTruncated: true } : {}),
71
+ }
72
+ : {};
73
+ return { testRun: null, ...dryRunOverlaps };
72
74
  }
73
75
  // Upload the git diff to S3, keyed by the deployment id, so the replay can
74
76
  // read it. Mirrors uploadAssetsStreaming / uploadContainerAndTriggerTestRun.
@@ -92,15 +94,26 @@ const runWithUploadedAssetChunks = async ({ client, commitSha, baseSha, gitDiffO
92
94
  ...(projectId ? { projectId } : {}),
93
95
  };
94
96
  const initialResult = await (0, client_1.triggerRunWithUploadedAssetChunks)(args);
95
- const { testRun, baseNotFound, message } = await (0, poll_for_base_test_run_1.pollWhileBaseNotFound)({
97
+ const { testRun, baseNotFound, message, overlaps: triggerOverlaps, overlapsTruncated: triggerOverlapsTruncated, } = await (0, poll_for_base_test_run_1.pollWhileBaseNotFound)({
96
98
  initialResult: {
97
99
  testRun: initialResult?.testRun ?? null,
98
100
  baseNotFound: initialResult?.baseNotFound,
99
101
  message: initialResult?.message,
102
+ overlaps: initialResult?.overlaps,
103
+ overlapsTruncated: initialResult?.overlapsTruncated,
100
104
  },
101
105
  retryFn: () => (0, client_1.triggerRunWithUploadedAssetChunks)(args),
102
106
  fallbackFn: () => (0, client_1.triggerRunWithUploadedAssetChunks)({ ...args, mustHaveBase: false }),
103
107
  });
108
+ // The trigger computes overlaps over the fully resolved manifest and is the
109
+ // single authoritative source for a real run — an omitted/empty result means
110
+ // no collisions (the concrete-only phase-1 preview is used only for dry runs).
111
+ const resolvedOverlaps = triggerOverlaps && triggerOverlaps.length > 0
112
+ ? {
113
+ overlaps: triggerOverlaps,
114
+ ...(triggerOverlapsTruncated ? { overlapsTruncated: true } : {}),
115
+ }
116
+ : {};
104
117
  Sentry.captureMessage("Test run triggered against uploaded asset chunks", {
105
118
  level: "debug",
106
119
  extra: {
@@ -114,9 +127,9 @@ const runWithUploadedAssetChunks = async ({ client, commitSha, baseSha, gitDiffO
114
127
  return {
115
128
  testRun: testRun ?? null,
116
129
  ...(message ? { message } : {}),
117
- ...overlapsResult,
130
+ ...resolvedOverlaps,
118
131
  };
119
132
  };
120
133
  exports.runWithUploadedAssetChunks = runWithUploadedAssetChunks;
121
134
  //# sourceMappingURL=run-with-uploaded-asset-chunks.js.map
122
- //# debugId=824ef4a8-86e4-5d8e-b5a4-696e9c425ff4
135
+ //# debugId=3ea754d6-f1e7-5300-aa4b-53b95bdc6a2f
@@ -1 +1 @@
1
- {"version":3,"file":"run-with-uploaded-asset-chunks.js","sources":["../src/run-with-uploaded-asset-chunks.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"824ef4a8-86e4-5d8e-b5a4-696e9c425ff4"}
1
+ {"version":3,"file":"run-with-uploaded-asset-chunks.js","sources":["../src/run-with-uploaded-asset-chunks.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"3ea754d6-f1e7-5300-aa4b-53b95bdc6a2f"}
@@ -9,9 +9,10 @@ export interface TriggerTestRunOptions extends ProjectIdentifier {
9
9
  deploymentId?: string | undefined;
10
10
  /**
11
11
  * Alternative to `deploymentId`: resolves to the most recent non-ephemeral
12
- * deployment already uploaded for this commit in the project. Cannot be
13
- * combined with `gitDiffOutput`, since uploading a diff requires an
14
- * already-known deployment to key it by.
12
+ * deployment already uploaded for this commit in the project. Can be
13
+ * combined with `gitDiffOutput`: the diff upload resolves `commitSha` to a
14
+ * deployment first, and that resolved id is then reused for the trigger
15
+ * call too, so both requests target the same deployment row.
15
16
  */
16
17
  commitSha?: string | undefined;
17
18
  /** Required: an agent (custom-trigger) run is only useful with a base. */
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-test-run.d.ts","sourceRoot":"","sources":["../src/trigger-test-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAUlE,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,0EAA0E;IAC1E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,qGAQxB,qBAAqB,KAAG,OAAO,CAAC,oBAAoB,CA8DtD,CAAC"}
1
+ {"version":3,"file":"trigger-test-run.d.ts","sourceRoot":"","sources":["../src/trigger-test-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAUlE,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,0EAA0E;IAC1E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAoBD;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,qGAQxB,qBAAqB,KAAG,OAAO,CAAC,oBAAoB,CAiEtD,CAAC"}
@@ -1,11 +1,25 @@
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]="4e31f6f1-481e-5dd8-b1af-571071296476")}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]="62481984-57ef-57aa-a33c-9ccc87fafbea")}catch(e){}}();
3
3
 
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.triggerTestRun = void 0;
6
6
  const client_1 = require("@alwaysmeticulous/client");
7
7
  const common_1 = require("@alwaysmeticulous/common");
8
8
  const asset_upload_utils_1 = require("./asset-upload-utils");
9
+ /**
10
+ * Builds the `{ deploymentId }` or `{ commitSha }` param to spread into a
11
+ * request body — exactly one of the two is ever sent, since the backend
12
+ * treats both-or-neither as a client error.
13
+ */
14
+ const identifierParams = (deploymentId, commitSha) => {
15
+ if (deploymentId) {
16
+ return { deploymentId };
17
+ }
18
+ if (commitSha) {
19
+ return { commitSha };
20
+ }
21
+ throw new Error("Provide either deploymentId or commitSha.");
22
+ };
9
23
  /**
10
24
  * Triggers a test run against a previously-uploaded deployment, uploading the
11
25
  * git diff (keyed by the deployment) first when provided.
@@ -16,24 +30,26 @@ const asset_upload_utils_1 = require("./asset-upload-utils");
16
30
  * rejects with a clear error.
17
31
  */
18
32
  const triggerTestRun = async ({ apiToken: apiToken_, deploymentId, commitSha, baseSha, gitDiffOutput, sessionIds, projectId, }) => {
33
+ if (Boolean(deploymentId) === Boolean(commitSha)) {
34
+ throw new Error("Exactly one of deploymentId or commitSha must be provided.");
35
+ }
19
36
  const apiToken = (0, client_1.getApiToken)(apiToken_);
20
37
  if (!apiToken) {
21
38
  throw new Error("You must provide an API token by using the --apiToken parameter");
22
39
  }
23
- if (gitDiffOutput && !deploymentId) {
24
- // Uploading a diff requires an already-known deploymentId to key it by
25
- // (see agentUploadGitDiffBuild); a commitSha is only resolved to a
26
- // deployment server-side, at trigger time.
27
- throw new Error("gitDiffOutput requires an explicit deploymentId (from `uploadBuild`); it cannot be combined with commitSha.");
28
- }
29
40
  const client = (0, client_1.createClient)({ apiToken });
30
41
  const projectIdentifier = projectId ? { projectId } : {};
31
- if (gitDiffOutput && deploymentId) {
42
+ // Pins the deployment the diff was attached to, so the trigger call below
43
+ // reuses that exact row instead of re-resolving `commitSha` a second time —
44
+ // closing the race window where a newer deployment for that commit could be
45
+ // uploaded between the two calls.
46
+ let resolvedDeploymentId = deploymentId;
47
+ if (gitDiffOutput) {
32
48
  const buffer = Buffer.from(gitDiffOutput, "utf-8");
33
49
  (0, common_1.logProgress)(`Uploading git diff (${buffer.length} bytes)...`);
34
- const { uploadUrl } = await (0, client_1.agentUploadGitDiffBuild)({
50
+ const { uploadUrl, deploymentId: uploadedDeploymentId } = await (0, client_1.agentUploadGitDiffBuild)({
35
51
  client,
36
- deploymentId,
52
+ ...identifierParams(deploymentId, commitSha),
37
53
  baseSha,
38
54
  size: buffer.length,
39
55
  ...projectIdentifier,
@@ -41,11 +57,11 @@ const triggerTestRun = async ({ apiToken: apiToken_, deploymentId, commitSha, ba
41
57
  await (0, asset_upload_utils_1.uploadBufferToSignedUrl)(uploadUrl, buffer, {
42
58
  contentType: "text/plain",
43
59
  });
60
+ resolvedDeploymentId = uploadedDeploymentId;
44
61
  }
45
62
  const result = await (0, client_1.agentTriggerTestRun)({
46
63
  client,
47
- ...(deploymentId ? { deploymentId } : {}),
48
- ...(commitSha ? { commitSha } : {}),
64
+ ...identifierParams(resolvedDeploymentId, commitSha),
49
65
  baseSha,
50
66
  // Forward the list whenever it's present (even if empty) rather than
51
67
  // silently dropping an empty one: "provided" means "pin exactly these", so
@@ -69,4 +85,4 @@ const triggerTestRun = async ({ apiToken: apiToken_, deploymentId, commitSha, ba
69
85
  };
70
86
  exports.triggerTestRun = triggerTestRun;
71
87
  //# sourceMappingURL=trigger-test-run.js.map
72
- //# debugId=4e31f6f1-481e-5dd8-b1af-571071296476
88
+ //# debugId=62481984-57ef-57aa-a33c-9ccc87fafbea
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-test-run.js","sources":["../src/trigger-test-run.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAEA,qDAKkC;AAClC,qDAAuD;AACvD,6DAA+D;AAkC/D;;;;;;;;GAQG;AACI,MAAM,cAAc,GAAG,KAAK,EAAE,EACnC,QAAQ,EAAE,SAAS,EACnB,YAAY,EACZ,SAAS,EACT,OAAO,EACP,aAAa,EACb,UAAU,EACV,SAAS,GACa,EAAiC,EAAE;IACzD,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,IAAI,CAAC,YAAY,EAAE,CAAC;QACnC,uEAAuE;QACvE,mEAAmE;QACnE,2CAA2C;QAC3C,MAAM,IAAI,KAAK,CACb,6GAA6G,CAC9G,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1C,MAAM,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzD,IAAI,aAAa,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACnD,IAAA,oBAAW,EAAC,uBAAuB,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC;QAC9D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,gCAAuB,EAAC;YAClD,MAAM;YACN,YAAY;YACZ,OAAO;YACP,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,GAAG,iBAAiB;SACrB,CAAC,CAAC;QACH,MAAM,IAAA,4CAAuB,EAAC,SAAS,EAAE,MAAM,EAAE;YAC/C,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAmB,EAAC;QACvC,MAAM;QACN,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,OAAO;QACP,qEAAqE;QACrE,2EAA2E;QAC3E,0EAA0E;QAC1E,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,iBAAiB;KACrB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,0EAA0E;QAC1E,4EAA4E;QAC5E,4EAA4E;QAC5E,2DAA2D;QAC3D,MAAM,IAAI,KAAK,CACb,iIAAiI,CAClI,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;IAE/C,8EAA8E;IAC9E,6EAA6E;IAC7E,IAAA,oBAAW,EAAC,uBAAuB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAElD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;AACpC,CAAC,CAAC;AAtEW,QAAA,cAAc,kBAsEzB","debugId":"4e31f6f1-481e-5dd8-b1af-571071296476"}
1
+ {"version":3,"file":"trigger-test-run.js","sources":["../src/trigger-test-run.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAEA,qDAKkC;AAClC,qDAAuD;AACvD,6DAA+D;AAmC/D;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CACvB,YAAgC,EAChC,SAA6B,EACqB,EAAE;IACpD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,EAAE,YAAY,EAAE,CAAC;IAC1B,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACI,MAAM,cAAc,GAAG,KAAK,EAAE,EACnC,QAAQ,EAAE,SAAS,EACnB,YAAY,EACZ,SAAS,EACT,OAAO,EACP,aAAa,EACb,UAAU,EACV,SAAS,GACa,EAAiC,EAAE;IACzD,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1C,MAAM,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzD,0EAA0E;IAC1E,4EAA4E;IAC5E,4EAA4E;IAC5E,kCAAkC;IAClC,IAAI,oBAAoB,GAAG,YAAY,CAAC;IACxC,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACnD,IAAA,oBAAW,EAAC,uBAAuB,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC;QAC9D,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,oBAAoB,EAAE,GACrD,MAAM,IAAA,gCAAuB,EAAC;YAC5B,MAAM;YACN,GAAG,gBAAgB,CAAC,YAAY,EAAE,SAAS,CAAC;YAC5C,OAAO;YACP,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,GAAG,iBAAiB;SACrB,CAAC,CAAC;QACL,MAAM,IAAA,4CAAuB,EAAC,SAAS,EAAE,MAAM,EAAE;YAC/C,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;QACH,oBAAoB,GAAG,oBAAoB,CAAC;IAC9C,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAmB,EAAC;QACvC,MAAM;QACN,GAAG,gBAAgB,CAAC,oBAAoB,EAAE,SAAS,CAAC;QACpD,OAAO;QACP,qEAAqE;QACrE,2EAA2E;QAC3E,0EAA0E;QAC1E,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,iBAAiB;KACrB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,0EAA0E;QAC1E,4EAA4E;QAC5E,4EAA4E;QAC5E,2DAA2D;QAC3D,MAAM,IAAI,KAAK,CACb,iIAAiI,CAClI,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;IAE/C,8EAA8E;IAC9E,6EAA6E;IAC7E,IAAA,oBAAW,EAAC,uBAAuB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAElD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;AACpC,CAAC,CAAC;AAzEW,QAAA,cAAc,kBAyEzB","debugId":"62481984-57ef-57aa-a33c-9ccc87fafbea"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alwaysmeticulous/remote-replay-launcher",
3
- "version": "2.303.1",
3
+ "version": "2.305.0",
4
4
  "description": "Executes a remote replay on Meticulous' infrastructure",
5
5
  "license": "ISC",
6
6
  "main": "dist/index.js",
@@ -17,7 +17,7 @@
17
17
  "systeminformation": "^5.25.11",
18
18
  "tar": "^7.5.8",
19
19
  "@alwaysmeticulous/api": "2.301.0",
20
- "@alwaysmeticulous/client": "2.303.1",
20
+ "@alwaysmeticulous/client": "2.305.0",
21
21
  "@alwaysmeticulous/common": "2.301.0",
22
22
  "@alwaysmeticulous/tunnels-client": "2.301.0"
23
23
  },