@alwaysmeticulous/cli 2.309.0 → 2.312.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/command-utils/__tests__/parse-rewrites.spec.d.ts +2 -0
- package/dist/command-utils/__tests__/parse-rewrites.spec.d.ts.map +1 -0
- package/dist/command-utils/__tests__/parse-rewrites.spec.js +31 -0
- package/dist/command-utils/__tests__/parse-rewrites.spec.js.map +1 -0
- package/dist/command-utils/__tests__/warn-regex-rewrites.spec.d.ts +2 -0
- package/dist/command-utils/__tests__/warn-regex-rewrites.spec.d.ts.map +1 -0
- package/dist/command-utils/__tests__/warn-regex-rewrites.spec.js +140 -0
- package/dist/command-utils/__tests__/warn-regex-rewrites.spec.js.map +1 -0
- package/dist/command-utils/parse-rewrites.d.ts.map +1 -1
- package/dist/command-utils/parse-rewrites.js +6 -3
- package/dist/command-utils/parse-rewrites.js.map +1 -1
- package/dist/command-utils/warn-regex-rewrites.d.ts +3 -0
- package/dist/command-utils/warn-regex-rewrites.d.ts.map +1 -0
- package/dist/command-utils/warn-regex-rewrites.js +50 -0
- package/dist/command-utils/warn-regex-rewrites.js.map +1 -0
- package/dist/commands/agent/coverage-columns.util.d.ts +14 -0
- package/dist/commands/agent/coverage-columns.util.d.ts.map +1 -0
- package/dist/commands/agent/coverage-columns.util.js +85 -0
- package/dist/commands/agent/coverage-columns.util.js.map +1 -0
- package/dist/commands/agent/index.d.ts.map +1 -1
- package/dist/commands/agent/index.js +7 -5
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/agent/js-coverage-diff.command.d.ts +0 -1
- package/dist/commands/agent/js-coverage-diff.command.d.ts.map +1 -1
- package/dist/commands/agent/js-coverage-diff.command.js +9 -16
- package/dist/commands/agent/js-coverage-diff.command.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.d.ts +12 -11
- package/dist/commands/agent/js-coverage.command.d.ts.map +1 -1
- package/dist/commands/agent/js-coverage.command.js +113 -126
- package/dist/commands/agent/js-coverage.command.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.spec.js +92 -2
- package/dist/commands/agent/js-coverage.command.spec.js.map +1 -1
- package/dist/commands/agent/screenshot-dom-diff.command.d.ts +0 -1
- package/dist/commands/agent/screenshot-dom-diff.command.d.ts.map +1 -1
- package/dist/commands/agent/screenshot-dom-diff.command.js +12 -26
- package/dist/commands/agent/screenshot-dom-diff.command.js.map +1 -1
- package/dist/commands/agent/screenshot-image-files.command.d.ts.map +1 -1
- package/dist/commands/agent/screenshot-image-files.command.js +8 -11
- package/dist/commands/agent/screenshot-image-files.command.js.map +1 -1
- package/dist/commands/agent/screenshot-image.command.d.ts.map +1 -1
- package/dist/commands/agent/screenshot-image.command.js +10 -13
- package/dist/commands/agent/screenshot-image.command.js.map +1 -1
- package/dist/commands/agent/sessions.command.d.ts +20 -0
- package/dist/commands/agent/sessions.command.d.ts.map +1 -0
- package/dist/commands/agent/sessions.command.js +173 -0
- package/dist/commands/agent/sessions.command.js.map +1 -0
- package/dist/commands/agent/sessions.command.spec.d.ts +2 -0
- package/dist/commands/agent/sessions.command.spec.d.ts.map +1 -0
- package/dist/commands/agent/sessions.command.spec.js +215 -0
- package/dist/commands/agent/sessions.command.spec.js.map +1 -0
- package/dist/commands/agent/test-run-diffs.command.d.ts.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.js +27 -28
- package/dist/commands/agent/test-run-diffs.command.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.spec.js +8 -8
- package/dist/commands/agent/test-run-diffs.command.spec.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.d.ts +5 -10
- package/dist/commands/agent/test-run-diffs.utils.d.ts.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.js +31 -45
- package/dist/commands/agent/test-run-diffs.utils.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.spec.js +37 -100
- package/dist/commands/agent/test-run-diffs.utils.spec.js.map +1 -1
- package/dist/commands/agent/test-run-for-commit.command.js +9 -9
- package/dist/commands/agent/test-run-for-commit.command.js.map +1 -1
- package/dist/commands/agent/timeline.command.d.ts.map +1 -1
- package/dist/commands/agent/timeline.command.js +8 -12
- package/dist/commands/agent/timeline.command.js.map +1 -1
- package/dist/commands/agent/timeline.command.spec.js +9 -9
- package/dist/commands/agent/timeline.command.spec.js.map +1 -1
- package/dist/commands/agent/trigger-test-run.command.d.ts +20 -0
- package/dist/commands/agent/trigger-test-run.command.d.ts.map +1 -1
- package/dist/commands/agent/trigger-test-run.command.js +55 -6
- package/dist/commands/agent/trigger-test-run.command.js.map +1 -1
- package/dist/commands/agent/trigger-test-run.command.spec.js +57 -2
- package/dist/commands/agent/trigger-test-run.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/login.command.spec.js +29 -5
- package/dist/commands/auth/__tests__/login.command.spec.js.map +1 -1
- package/dist/commands/auth/login.command.d.ts +1 -0
- package/dist/commands/auth/login.command.d.ts.map +1 -1
- package/dist/commands/auth/login.command.js +31 -18
- package/dist/commands/auth/login.command.js.map +1 -1
- package/dist/commands/ci/generate-sessions.command.d.ts +16 -0
- package/dist/commands/ci/generate-sessions.command.d.ts.map +1 -0
- package/dist/commands/ci/generate-sessions.command.js +136 -0
- package/dist/commands/ci/generate-sessions.command.js.map +1 -0
- package/dist/commands/ci/index.d.ts.map +1 -1
- package/dist/commands/ci/index.js +4 -2
- package/dist/commands/ci/index.js.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.d.ts.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js +27 -22
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.spec.d.ts +2 -0
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.spec.d.ts.map +1 -0
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.spec.js +37 -0
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.spec.js.map +1 -0
- package/dist/commands/ci/run-with-uploaded-asset-chunks.utils.d.ts +8 -0
- package/dist/commands/ci/run-with-uploaded-asset-chunks.utils.d.ts.map +1 -0
- package/dist/commands/ci/run-with-uploaded-asset-chunks.utils.js +57 -0
- package/dist/commands/ci/run-with-uploaded-asset-chunks.utils.js.map +1 -0
- package/package.json +13 -13
|
@@ -6,6 +6,7 @@ interface Options {
|
|
|
6
6
|
baseSha?: string | undefined;
|
|
7
7
|
gitDiffOutput?: string | undefined;
|
|
8
8
|
sessionIds?: string | undefined;
|
|
9
|
+
maxDurationSeconds?: string | undefined;
|
|
9
10
|
dontWaitForTestRunToComplete: boolean;
|
|
10
11
|
json: boolean;
|
|
11
12
|
dryRun?: boolean;
|
|
@@ -38,6 +39,25 @@ export declare const shouldWarnOfHeadDrift: ({ headIsEphemeral, head, headCommit
|
|
|
38
39
|
head: string | undefined;
|
|
39
40
|
headCommitSha: string | null;
|
|
40
41
|
}) => boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Parses the raw `--maxDurationSeconds` value into what's sent to the API:
|
|
44
|
+
* `undefined` when omitted (use the platform default, currently 300s/5min),
|
|
45
|
+
* `null` for the explicit "unlimited" sentinel ('none'), or a positive integer
|
|
46
|
+
* number of seconds otherwise. Bounds (beyond positivity) are enforced
|
|
47
|
+
* server-side, so a value outside them still round-trips to a clear backend
|
|
48
|
+
* error rather than being silently clamped here.
|
|
49
|
+
*/
|
|
50
|
+
export declare const parseMaxDurationSecondsArg: (raw: string | undefined) => number | null | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* --maxDurationSeconds only makes sense for explicitly pinned sessions: the
|
|
53
|
+
* auto-selected golden set is already curated to fit under the default cap,
|
|
54
|
+
* so overriding it there would be a silent, project-wide behavior change
|
|
55
|
+
* rather than a deliberate choice about specific sessions.
|
|
56
|
+
*/
|
|
57
|
+
export declare const shouldRejectMaxDurationWithoutSessionIds: ({ maxDurationSeconds, hasPinnedSessionIds, }: {
|
|
58
|
+
maxDurationSeconds: number | null | undefined;
|
|
59
|
+
hasPinnedSessionIds: boolean;
|
|
60
|
+
}) => boolean;
|
|
41
61
|
export declare const triggerTestRunCommand: CommandModule<unknown, Options>;
|
|
42
62
|
export {};
|
|
43
63
|
//# sourceMappingURL=trigger-test-run.command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger-test-run.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/trigger-test-run.command.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAe3C,UAAU,OAAO;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,4BAA4B,EAAE,OAAO,CAAC;IACtC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,+EAMnC;IACD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,mBAAmB,EAAE,OAAO,CAAC;CAC9B,KAAG,OAKkB,CAAC;AAEvB;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,8CAI/B;IACD,eAAe,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,KAAG,OAIoB,CAAC;
|
|
1
|
+
{"version":3,"file":"trigger-test-run.command.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/trigger-test-run.command.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAe3C,UAAU,OAAO;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,4BAA4B,EAAE,OAAO,CAAC;IACtC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,+EAMnC;IACD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,mBAAmB,EAAE,OAAO,CAAC;CAC9B,KAAG,OAKkB,CAAC;AAEvB;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,8CAI/B;IACD,eAAe,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,KAAG,OAIoB,CAAC;AAEzB;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,QAChC,MAAM,GAAG,SAAS,KACtB,MAAM,GAAG,IAAI,GAAG,SAelB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wCAAwC,iDAGlD;IACD,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9C,mBAAmB,EAAE,OAAO,CAAC;CAC9B,KAAG,OAAmE,CAAC;AAkMxE,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAuEjE,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
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]="323928d6-d49a-5a26-ba96-1f76fda47a5e")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.triggerTestRunCommand = exports.shouldWarnOfHeadDrift = exports.shouldSkipAsNothingToTest = void 0;
|
|
5
|
+
exports.triggerTestRunCommand = exports.shouldRejectMaxDurationWithoutSessionIds = exports.parseMaxDurationSecondsArg = exports.shouldWarnOfHeadDrift = exports.shouldSkipAsNothingToTest = void 0;
|
|
6
6
|
const client_1 = require("@alwaysmeticulous/client");
|
|
7
7
|
const common_1 = require("@alwaysmeticulous/common");
|
|
8
8
|
const remote_replay_launcher_1 = require("@alwaysmeticulous/remote-replay-launcher");
|
|
@@ -39,7 +39,38 @@ const shouldWarnOfHeadDrift = ({ headIsEphemeral, head, headCommitSha, }) => !he
|
|
|
39
39
|
Boolean(headCommitSha) &&
|
|
40
40
|
head !== headCommitSha;
|
|
41
41
|
exports.shouldWarnOfHeadDrift = shouldWarnOfHeadDrift;
|
|
42
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Parses the raw `--maxDurationSeconds` value into what's sent to the API:
|
|
44
|
+
* `undefined` when omitted (use the platform default, currently 300s/5min),
|
|
45
|
+
* `null` for the explicit "unlimited" sentinel ('none'), or a positive integer
|
|
46
|
+
* number of seconds otherwise. Bounds (beyond positivity) are enforced
|
|
47
|
+
* server-side, so a value outside them still round-trips to a clear backend
|
|
48
|
+
* error rather than being silently clamped here.
|
|
49
|
+
*/
|
|
50
|
+
const parseMaxDurationSecondsArg = (raw) => {
|
|
51
|
+
if (raw == null) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
const normalized = raw.trim().toLowerCase();
|
|
55
|
+
if (normalized === "none") {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
const parsed = Number(normalized);
|
|
59
|
+
if (!Number.isInteger(parsed) || parsed <= 0) {
|
|
60
|
+
throw new cli_user_error_1.CliUserError(`--maxDurationSeconds must be a positive integer number of seconds, or 'none' for unlimited. Got: "${raw}"`);
|
|
61
|
+
}
|
|
62
|
+
return parsed;
|
|
63
|
+
};
|
|
64
|
+
exports.parseMaxDurationSecondsArg = parseMaxDurationSecondsArg;
|
|
65
|
+
/**
|
|
66
|
+
* --maxDurationSeconds only makes sense for explicitly pinned sessions: the
|
|
67
|
+
* auto-selected golden set is already curated to fit under the default cap,
|
|
68
|
+
* so overriding it there would be a silent, project-wide behavior change
|
|
69
|
+
* rather than a deliberate choice about specific sessions.
|
|
70
|
+
*/
|
|
71
|
+
const shouldRejectMaxDurationWithoutSessionIds = ({ maxDurationSeconds, hasPinnedSessionIds, }) => maxDurationSeconds !== undefined && !hasPinnedSessionIds;
|
|
72
|
+
exports.shouldRejectMaxDurationWithoutSessionIds = shouldRejectMaxDurationWithoutSessionIds;
|
|
73
|
+
const handler = async ({ apiToken, deploymentId, commitSha: commitSha_, baseSha: baseSha_, gitDiffOutput: gitDiffOutput_, sessionIds: sessionIds_, maxDurationSeconds: maxDurationSeconds_, dontWaitForTestRunToComplete, json, dryRun, project, }) => {
|
|
43
74
|
if (deploymentId && commitSha_) {
|
|
44
75
|
throw new cli_user_error_1.CliUserError("--deploymentId and --commitSha are mutually exclusive. Pass --deploymentId for a build from 'agent upload-build', " +
|
|
45
76
|
"or --commitSha to find an existing deployment already uploaded for that commit.");
|
|
@@ -92,6 +123,13 @@ const handler = async ({ apiToken, deploymentId, commitSha: commitSha_, baseSha:
|
|
|
92
123
|
// shouldSkipAsNothingToTest for the exemptions).
|
|
93
124
|
const effectiveHead = head ?? commitSha;
|
|
94
125
|
const hasPinnedSessionIds = sessionIds != null && sessionIds.length > 0;
|
|
126
|
+
const maxDurationSeconds = (0, exports.parseMaxDurationSecondsArg)(maxDurationSeconds_);
|
|
127
|
+
if ((0, exports.shouldRejectMaxDurationWithoutSessionIds)({
|
|
128
|
+
maxDurationSeconds,
|
|
129
|
+
hasPinnedSessionIds,
|
|
130
|
+
})) {
|
|
131
|
+
throw new cli_user_error_1.CliUserError("--maxDurationSeconds requires --sessionIds — it only applies to explicitly pinned sessions, not the project's auto-selected golden set.");
|
|
132
|
+
}
|
|
95
133
|
if ((0, exports.shouldSkipAsNothingToTest)({
|
|
96
134
|
commitSha,
|
|
97
135
|
effectiveHead,
|
|
@@ -133,6 +171,7 @@ const handler = async ({ apiToken, deploymentId, commitSha: commitSha_, baseSha:
|
|
|
133
171
|
baseSha,
|
|
134
172
|
...(gitDiffOutput ? { gitDiffOutput } : {}),
|
|
135
173
|
...(hasPinnedSessionIds ? { sessionIds } : {}),
|
|
174
|
+
...(maxDurationSeconds !== undefined ? { maxDurationSeconds } : {}),
|
|
136
175
|
...(project ? { project } : {}),
|
|
137
176
|
});
|
|
138
177
|
testRunId = testRun?.id ?? null;
|
|
@@ -208,7 +247,17 @@ exports.triggerTestRunCommand = {
|
|
|
208
247
|
string: true,
|
|
209
248
|
description: "Comma-separated list of session IDs to replay, instead of the project's auto-selected sessions. Replayed on the base too, unless the run ends up head-only (see below). " +
|
|
210
249
|
"When omitted, the project's auto-selected ('golden set') sessions are used. " +
|
|
211
|
-
"When non-empty and --baseSha equals the head commit with no diff, the run proceeds head-only (no base run or comparison) instead of failing with 'nothing to do'."
|
|
250
|
+
"When non-empty and --baseSha equals the head commit with no diff, the run proceeds head-only (no base run or comparison) instead of failing with 'nothing to do'. " +
|
|
251
|
+
"If these sessions were newly custom-recorded (e.g. deliberately long flows), pair this with --maxDurationSeconds — the default 300s (5 minute) cap may cut them short.",
|
|
252
|
+
},
|
|
253
|
+
maxDurationSeconds: {
|
|
254
|
+
string: true,
|
|
255
|
+
description: "Cap each session replay at this many seconds; sessions longer than the cap are trimmed (surfaced as a flakiness warning in the " +
|
|
256
|
+
"replay's timeline, viewable in the webapp). Requires --sessionIds — it only applies to those explicitly pinned sessions, not the project's " +
|
|
257
|
+
"auto-selected golden set. Intended for newly custom-recorded sessions: the cap is applied to both the head run and any fresh base run created " +
|
|
258
|
+
"to compare against, but a pre-existing base run reused for the comparison keeps whatever cap it originally ran under. Defaults to 300 seconds " +
|
|
259
|
+
"(5 minutes) when omitted, matching the platform default. If your pinned sessions were custom-recorded with unusually long durations, pass " +
|
|
260
|
+
"'none' for unlimited. Overrides any project-configured cap.",
|
|
212
261
|
},
|
|
213
262
|
dontWaitForTestRunToComplete: {
|
|
214
263
|
boolean: true,
|
|
@@ -223,10 +272,10 @@ exports.triggerTestRunCommand = {
|
|
|
223
272
|
},
|
|
224
273
|
project: {
|
|
225
274
|
string: true,
|
|
226
|
-
description: "
|
|
275
|
+
description: "The project to look up the commit for (id, 'org/proj', or simply 'proj'). One-off override, when omitted uses the user-configured default project.",
|
|
227
276
|
},
|
|
228
277
|
},
|
|
229
278
|
handler: (0, sentry_utils_1.wrapHandler)(handler),
|
|
230
279
|
};
|
|
231
280
|
//# sourceMappingURL=trigger-test-run.command.js.map
|
|
232
|
-
//# debugId=
|
|
281
|
+
//# debugId=323928d6-d49a-5a26-ba96-1f76fda47a5e
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger-test-run.command.js","sources":["../../../src/commands/agent/trigger-test-run.command.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAAA,qDAGkC;AAClC,qDAAkE;AAClE,qFAA0E;AAE1E,uEAA6D;AAC7D,+DAA2D;AAC3D,mEAA+D;AAC/D,+DAA0D;AAC1D,mFAG8C;AAC9C,2FAAkF;AAClF,2DAG6B;
|
|
1
|
+
{"version":3,"file":"trigger-test-run.command.js","sources":["../../../src/commands/agent/trigger-test-run.command.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"323928d6-d49a-5a26-ba96-1f76fda47a5e"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ff14e10b-25f9-59eb-a6cc-9300c35df3fd")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
const vitest_1 = require("vitest");
|
|
@@ -84,5 +84,60 @@ const trigger_test_run_command_1 = require("./trigger-test-run.command");
|
|
|
84
84
|
})).toBe(false);
|
|
85
85
|
});
|
|
86
86
|
});
|
|
87
|
+
(0, vitest_1.describe)("parseMaxDurationSecondsArg", () => {
|
|
88
|
+
(0, vitest_1.test)("returns undefined when omitted", () => {
|
|
89
|
+
(0, vitest_1.expect)((0, trigger_test_run_command_1.parseMaxDurationSecondsArg)(undefined)).toBeUndefined();
|
|
90
|
+
});
|
|
91
|
+
(0, vitest_1.test)("parses a positive integer string", () => {
|
|
92
|
+
(0, vitest_1.expect)((0, trigger_test_run_command_1.parseMaxDurationSecondsArg)("120")).toBe(120);
|
|
93
|
+
});
|
|
94
|
+
(0, vitest_1.test)("returns null for 'none'", () => {
|
|
95
|
+
(0, vitest_1.expect)((0, trigger_test_run_command_1.parseMaxDurationSecondsArg)("none")).toBeNull();
|
|
96
|
+
});
|
|
97
|
+
(0, vitest_1.test)("returns null for 'NONE' (case-insensitive)", () => {
|
|
98
|
+
(0, vitest_1.expect)((0, trigger_test_run_command_1.parseMaxDurationSecondsArg)("NONE")).toBeNull();
|
|
99
|
+
});
|
|
100
|
+
(0, vitest_1.test)("throws on '0' ('none' is the only unlimited spelling)", () => {
|
|
101
|
+
(0, vitest_1.expect)(() => (0, trigger_test_run_command_1.parseMaxDurationSecondsArg)("0")).toThrow(/must be a positive integer/);
|
|
102
|
+
});
|
|
103
|
+
(0, vitest_1.test)("throws on a non-numeric value", () => {
|
|
104
|
+
(0, vitest_1.expect)(() => (0, trigger_test_run_command_1.parseMaxDurationSecondsArg)("abc")).toThrow(/must be a positive integer/);
|
|
105
|
+
});
|
|
106
|
+
(0, vitest_1.test)("throws on a negative value", () => {
|
|
107
|
+
(0, vitest_1.expect)(() => (0, trigger_test_run_command_1.parseMaxDurationSecondsArg)("-5")).toThrow(/must be a positive integer/);
|
|
108
|
+
});
|
|
109
|
+
(0, vitest_1.test)("throws on a non-integer value", () => {
|
|
110
|
+
(0, vitest_1.expect)(() => (0, trigger_test_run_command_1.parseMaxDurationSecondsArg)("5.5")).toThrow(/must be a positive integer/);
|
|
111
|
+
});
|
|
112
|
+
(0, vitest_1.test)("throws on an empty string", () => {
|
|
113
|
+
(0, vitest_1.expect)(() => (0, trigger_test_run_command_1.parseMaxDurationSecondsArg)("")).toThrow(/must be a positive integer/);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
(0, vitest_1.describe)("shouldRejectMaxDurationWithoutSessionIds", () => {
|
|
117
|
+
(0, vitest_1.test)("rejects when maxDurationSeconds is set without pinned sessionIds", () => {
|
|
118
|
+
(0, vitest_1.expect)((0, trigger_test_run_command_1.shouldRejectMaxDurationWithoutSessionIds)({
|
|
119
|
+
maxDurationSeconds: 120,
|
|
120
|
+
hasPinnedSessionIds: false,
|
|
121
|
+
})).toBe(true);
|
|
122
|
+
});
|
|
123
|
+
(0, vitest_1.test)("rejects an explicit unlimited (null) without pinned sessionIds", () => {
|
|
124
|
+
(0, vitest_1.expect)((0, trigger_test_run_command_1.shouldRejectMaxDurationWithoutSessionIds)({
|
|
125
|
+
maxDurationSeconds: null,
|
|
126
|
+
hasPinnedSessionIds: false,
|
|
127
|
+
})).toBe(true);
|
|
128
|
+
});
|
|
129
|
+
(0, vitest_1.test)("allows maxDurationSeconds when sessionIds are pinned", () => {
|
|
130
|
+
(0, vitest_1.expect)((0, trigger_test_run_command_1.shouldRejectMaxDurationWithoutSessionIds)({
|
|
131
|
+
maxDurationSeconds: 120,
|
|
132
|
+
hasPinnedSessionIds: true,
|
|
133
|
+
})).toBe(false);
|
|
134
|
+
});
|
|
135
|
+
(0, vitest_1.test)("allows omitting maxDurationSeconds regardless of sessionIds", () => {
|
|
136
|
+
(0, vitest_1.expect)((0, trigger_test_run_command_1.shouldRejectMaxDurationWithoutSessionIds)({
|
|
137
|
+
maxDurationSeconds: undefined,
|
|
138
|
+
hasPinnedSessionIds: false,
|
|
139
|
+
})).toBe(false);
|
|
140
|
+
});
|
|
141
|
+
});
|
|
87
142
|
//# sourceMappingURL=trigger-test-run.command.spec.js.map
|
|
88
|
-
//# debugId=
|
|
143
|
+
//# debugId=ff14e10b-25f9-59eb-a6cc-9300c35df3fd
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger-test-run.command.spec.js","sources":["../../../src/commands/agent/trigger-test-run.command.spec.ts"],"sourceRoot":"","names":[],"mappings":";;;;AAAA,mCAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"trigger-test-run.command.spec.js","sources":["../../../src/commands/agent/trigger-test-run.command.spec.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"ff14e10b-25f9-59eb-a6cc-9300c35df3fd"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="212a7e35-3f4f-5fc5-9f29-3964a9501af3")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
const vitest_1 = require("vitest");
|
|
@@ -18,6 +18,7 @@ const mocks = vitest_1.vi.hoisted(() => ({
|
|
|
18
18
|
createClient: vitest_1.vi.fn(),
|
|
19
19
|
isInteractiveContext: vitest_1.vi.fn(),
|
|
20
20
|
performOAuthLogin: vitest_1.vi.fn(),
|
|
21
|
+
performDeviceLogin: vitest_1.vi.fn(),
|
|
21
22
|
selectProjectOnLogin: vitest_1.vi.fn(),
|
|
22
23
|
logNotice: vitest_1.vi.fn(),
|
|
23
24
|
}));
|
|
@@ -29,6 +30,7 @@ vitest_1.vi.mock("@alwaysmeticulous/client", () => ({
|
|
|
29
30
|
createClient: mocks.createClient,
|
|
30
31
|
isInteractiveContext: mocks.isInteractiveContext,
|
|
31
32
|
performOAuthLogin: mocks.performOAuthLogin,
|
|
33
|
+
performDeviceLogin: mocks.performDeviceLogin,
|
|
32
34
|
}));
|
|
33
35
|
vitest_1.vi.mock("../../../utils/select-project", () => ({
|
|
34
36
|
selectProjectOnLogin: mocks.selectProjectOnLogin,
|
|
@@ -39,27 +41,45 @@ const runHandler = (args = {}) => login_command_1.loginCommand.handler(args);
|
|
|
39
41
|
vitest_1.vi.clearAllMocks();
|
|
40
42
|
mocks.createClient.mockReturnValue({});
|
|
41
43
|
mocks.performOAuthLogin.mockResolvedValue({ accessToken: "fresh-jwt" });
|
|
44
|
+
mocks.performDeviceLogin.mockResolvedValue({ accessToken: "fresh-jwt" });
|
|
42
45
|
mocks.selectProjectOnLogin.mockResolvedValue(undefined);
|
|
43
46
|
});
|
|
44
47
|
(0, vitest_1.it)("throws a CliUserError in a non-interactive context and does not log in", async () => {
|
|
45
48
|
mocks.isInteractiveContext.mockReturnValue(false);
|
|
46
49
|
await (0, vitest_1.expect)(runHandler()).rejects.toBeInstanceOf(cli_user_error_1.CliUserError);
|
|
47
50
|
(0, vitest_1.expect)(mocks.performOAuthLogin).not.toHaveBeenCalled();
|
|
51
|
+
(0, vitest_1.expect)(mocks.performDeviceLogin).not.toHaveBeenCalled();
|
|
48
52
|
});
|
|
49
|
-
(0, vitest_1.it)("with --non-interactive, bypasses the TTY guard and runs headlessly", async () => {
|
|
53
|
+
(0, vitest_1.it)("with --non-interactive, bypasses the TTY guard and runs headlessly via the loopback flow", async () => {
|
|
50
54
|
mocks.isInteractiveContext.mockReturnValue(false);
|
|
51
55
|
await runHandler({ nonInteractive: true });
|
|
52
56
|
(0, vitest_1.expect)(mocks.performOAuthLogin).toHaveBeenCalledWith({
|
|
53
57
|
openBrowserAutomatically: false,
|
|
54
58
|
});
|
|
59
|
+
(0, vitest_1.expect)(mocks.performDeviceLogin).not.toHaveBeenCalled();
|
|
55
60
|
(0, vitest_1.expect)(mocks.selectProjectOnLogin).toHaveBeenCalledWith(vitest_1.expect.objectContaining({ interactive: false }));
|
|
56
61
|
});
|
|
57
|
-
(0, vitest_1.it)("with --non-interactive on a real TTY, still prints the URL and skips the picker", async () => {
|
|
62
|
+
(0, vitest_1.it)("with --non-interactive on a real TTY, still prints the URL via the loopback flow and skips the picker", async () => {
|
|
58
63
|
mocks.isInteractiveContext.mockReturnValue(true);
|
|
59
64
|
await runHandler({ nonInteractive: true });
|
|
60
65
|
(0, vitest_1.expect)(mocks.performOAuthLogin).toHaveBeenCalledWith({
|
|
61
66
|
openBrowserAutomatically: false,
|
|
62
67
|
});
|
|
68
|
+
(0, vitest_1.expect)(mocks.performDeviceLogin).not.toHaveBeenCalled();
|
|
69
|
+
(0, vitest_1.expect)(mocks.selectProjectOnLogin).toHaveBeenCalledWith(vitest_1.expect.objectContaining({ interactive: false }));
|
|
70
|
+
});
|
|
71
|
+
(0, vitest_1.it)("with --device on a TTY, uses the device flow but keeps the interactive picker", async () => {
|
|
72
|
+
mocks.isInteractiveContext.mockReturnValue(true);
|
|
73
|
+
await runHandler({ device: true });
|
|
74
|
+
(0, vitest_1.expect)(mocks.performDeviceLogin).toHaveBeenCalledWith();
|
|
75
|
+
(0, vitest_1.expect)(mocks.performOAuthLogin).not.toHaveBeenCalled();
|
|
76
|
+
(0, vitest_1.expect)(mocks.selectProjectOnLogin).toHaveBeenCalledWith(vitest_1.expect.objectContaining({ interactive: true }));
|
|
77
|
+
});
|
|
78
|
+
(0, vitest_1.it)("with --device and no TTY, bypasses the guard and uses the device flow", async () => {
|
|
79
|
+
mocks.isInteractiveContext.mockReturnValue(false);
|
|
80
|
+
await runHandler({ device: true });
|
|
81
|
+
(0, vitest_1.expect)(mocks.performDeviceLogin).toHaveBeenCalledWith();
|
|
82
|
+
(0, vitest_1.expect)(mocks.performOAuthLogin).not.toHaveBeenCalled();
|
|
63
83
|
(0, vitest_1.expect)(mocks.selectProjectOnLogin).toHaveBeenCalledWith(vitest_1.expect.objectContaining({ interactive: false }));
|
|
64
84
|
});
|
|
65
85
|
(0, vitest_1.it)("propagates the error and skips the hint when no project could be selected", async () => {
|
|
@@ -73,9 +93,13 @@ const runHandler = (args = {}) => login_command_1.loginCommand.handler(args);
|
|
|
73
93
|
await runHandler();
|
|
74
94
|
(0, vitest_1.expect)(mocks.logNotice).toHaveBeenCalledWith(vitest_1.expect.stringContaining("auth set-project"));
|
|
75
95
|
});
|
|
76
|
-
(0, vitest_1.it)("logs in, then builds a client from the fresh token and selects a project", async () => {
|
|
96
|
+
(0, vitest_1.it)("with no flags on a TTY, logs in via the loopback flow, then builds a client from the fresh token and selects a project", async () => {
|
|
77
97
|
mocks.isInteractiveContext.mockReturnValue(true);
|
|
78
98
|
await runHandler();
|
|
99
|
+
(0, vitest_1.expect)(mocks.performOAuthLogin).toHaveBeenCalledWith({
|
|
100
|
+
openBrowserAutomatically: true,
|
|
101
|
+
});
|
|
102
|
+
(0, vitest_1.expect)(mocks.performDeviceLogin).not.toHaveBeenCalled();
|
|
79
103
|
(0, vitest_1.expect)(mocks.createClient).toHaveBeenCalledWith({ apiToken: "fresh-jwt" });
|
|
80
104
|
(0, vitest_1.expect)(mocks.selectProjectOnLogin).toHaveBeenCalledWith(vitest_1.expect.objectContaining({ project: undefined, interactive: true }));
|
|
81
105
|
});
|
|
@@ -92,4 +116,4 @@ const runHandler = (args = {}) => login_command_1.loginCommand.handler(args);
|
|
|
92
116
|
});
|
|
93
117
|
});
|
|
94
118
|
//# sourceMappingURL=login.command.spec.js.map
|
|
95
|
-
//# debugId=
|
|
119
|
+
//# debugId=212a7e35-3f4f-5fc5-9f29-3964a9501af3
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.command.spec.js","sources":["../../../../src/commands/auth/__tests__/login.command.spec.ts"],"sourceRoot":"","names":[],"mappings":";;;;AAAA,mCAA8D;AAC9D,kEAA6D;AAC7D,oDAAgD;AAEhD,WAAE,CAAC,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE,CAAC,CAAC;IACpD,WAAW,EAAE,CAAC,EAAyC,EAAE,EAAE,CAAC,EAAE;CAC/D,CAAC,CAAC,CAAC;AAEJ,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,WAAE,CAAC,EAAE,EAAE;IACb,IAAI,EAAE,WAAE,CAAC,EAAE,EAAE;IACb,KAAK,EAAE,WAAE,CAAC,EAAE,EAAE;IACd,KAAK,EAAE,WAAE,CAAC,EAAE,EAAE;CACf,CAAC;AAEF,MAAM,KAAK,GAAG,WAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,YAAY,EAAE,WAAE,CAAC,EAAE,EAAE;IACrB,oBAAoB,EAAE,WAAE,CAAC,EAAE,EAAE;IAC7B,iBAAiB,EAAE,WAAE,CAAC,EAAE,EAAE;IAC1B,oBAAoB,EAAE,WAAE,CAAC,EAAE,EAAE;IAC7B,SAAS,EAAE,WAAE,CAAC,EAAE,EAAE;CACnB,CAAC,CAAC,CAAC;AAEJ,WAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU;IAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;CAC3B,CAAC,CAAC,CAAC;AAEJ,WAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,YAAY,EAAE,KAAK,CAAC,YAAY;IAChC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;IAChD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;
|
|
1
|
+
{"version":3,"file":"login.command.spec.js","sources":["../../../../src/commands/auth/__tests__/login.command.spec.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"212a7e35-3f4f-5fc5-9f29-3964a9501af3"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.command.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/login.command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"login.command.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/login.command.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAK3C,UAAU,OAAO;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CA2ExD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="66f1b24a-ff93-5892-a12b-d796d27ec400")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.loginCommand = void 0;
|
|
@@ -17,6 +17,14 @@ exports.loginCommand = {
|
|
|
17
17
|
description: "Project to select in 'organization/project' format (e.g. 'MyOrg/My App'). " +
|
|
18
18
|
"When provided, skips the interactive picker after logging in.",
|
|
19
19
|
},
|
|
20
|
+
device: {
|
|
21
|
+
boolean: true,
|
|
22
|
+
default: false,
|
|
23
|
+
description: "Log in using the OAuth device flow: the CLI prints a URL and code " +
|
|
24
|
+
"you open/confirm in a browser on any device. Use this on remote or " +
|
|
25
|
+
"sandboxed machines (SSH, containers, cloud agents) where a browser " +
|
|
26
|
+
"can't reach this machine's localhost.",
|
|
27
|
+
},
|
|
20
28
|
nonInteractive: {
|
|
21
29
|
boolean: true,
|
|
22
30
|
default: false,
|
|
@@ -25,36 +33,41 @@ exports.loginCommand = {
|
|
|
25
33
|
"when there is no TTY (e.g. an agent starts the flow and a human " +
|
|
26
34
|
"completes it by opening the printed URL). The URL must be opened on " +
|
|
27
35
|
"the same machine as the CLI: login completes via a local callback on " +
|
|
28
|
-
"127.0.0.1, so a browser on a different machine cannot finish it
|
|
36
|
+
"127.0.0.1, so a browser on a different machine cannot finish it — use " +
|
|
37
|
+
"`--device` instead for that case.",
|
|
29
38
|
},
|
|
30
39
|
},
|
|
31
|
-
handler: (0, sentry_utils_1.wrapHandler)(async ({ project, nonInteractive = false }) => {
|
|
40
|
+
handler: (0, sentry_utils_1.wrapHandler)(async ({ project, nonInteractive = false, device = false }) => {
|
|
32
41
|
(0, common_1.initLogger)();
|
|
33
|
-
// Treat an explicit `--non-interactive` as authoritative;
|
|
34
|
-
// back to detecting whether we're attached to a real
|
|
42
|
+
// Treat an explicit `--non-interactive` or `--device` as authoritative;
|
|
43
|
+
// otherwise fall back to detecting whether we're attached to a real
|
|
44
|
+
// terminal.
|
|
35
45
|
const hasTty = (0, client_1.isInteractiveContext)();
|
|
36
46
|
const interactive = !nonInteractive && hasTty;
|
|
37
|
-
if (!nonInteractive && !hasTty) {
|
|
47
|
+
if (!device && !nonInteractive && !hasTty) {
|
|
38
48
|
throw new cli_user_error_1.CliUserError("`meticulous auth login` requires an interactive terminal. In " +
|
|
39
|
-
"non-interactive environments, pass `--non-interactive` to print
|
|
40
|
-
"login URL,
|
|
49
|
+
"non-interactive environments, pass `--non-interactive` to print " +
|
|
50
|
+
"the login URL (same machine only), `--device` to log in from a " +
|
|
51
|
+
"different device, or set METICULOUS_API_TOKEN or pass " +
|
|
52
|
+
"`--apiToken` instead.");
|
|
41
53
|
}
|
|
42
|
-
// Force a fresh
|
|
43
|
-
//
|
|
54
|
+
// Force a fresh login. Don't clear anything beforehand: if the flow is
|
|
55
|
+
// cancelled, times out, or token exchange fails, the existing session
|
|
44
56
|
// and default project must survive. A successful login overwrites the
|
|
45
57
|
// stored OAuth tokens anyway.
|
|
46
|
-
const tokens =
|
|
47
|
-
|
|
48
|
-
|
|
58
|
+
const tokens = device
|
|
59
|
+
? await (0, client_1.performDeviceLogin)()
|
|
60
|
+
: await (0, client_1.performOAuthLogin)({ openBrowserAutomatically: interactive });
|
|
49
61
|
const client = (0, client_1.createClient)({ apiToken: tokens.accessToken });
|
|
50
62
|
// Pick a project for the freshly logged-in user. An explicit `--project`
|
|
51
|
-
// is persisted; an existing server-side default is respected as-is; a
|
|
52
|
-
// accessible project is auto-selected and persisted; and a
|
|
53
|
-
// account with no default is prompted interactively (or,
|
|
54
|
-
// pointed at `auth set-project`). See
|
|
63
|
+
// is persisted; an existing server-side default is respected as-is; a
|
|
64
|
+
// sole accessible project is auto-selected and persisted; and a
|
|
65
|
+
// multi-project account with no default is prompted interactively (or,
|
|
66
|
+
// when headless, pointed at `auth set-project`). See
|
|
67
|
+
// `selectProjectOnLogin`.
|
|
55
68
|
await (0, select_project_1.selectProjectOnLogin)({ client, project, interactive });
|
|
56
69
|
(0, common_1.logNotice)("You can change the selected project at any time with `meticulous auth set-project`.");
|
|
57
70
|
}),
|
|
58
71
|
};
|
|
59
72
|
//# sourceMappingURL=login.command.js.map
|
|
60
|
-
//# debugId=
|
|
73
|
+
//# debugId=66f1b24a-ff93-5892-a12b-d796d27ec400
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.command.js","sources":["../../../src/commands/auth/login.command.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"login.command.js","sources":["../../../src/commands/auth/login.command.ts"],"sourceRoot":"","names":[],"mappings":";;;;;AAAA,qDAKkC;AAClC,qDAAiE;AAEjE,mEAA+D;AAC/D,+DAA0D;AAC1D,+DAAkE;AAQrD,QAAA,YAAY,GAAoC;IAC3D,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,8CAA8C;IACxD,OAAO,EAAE;QACP,OAAO,EAAE;YACP,MAAM,EAAE,IAAI;YACZ,WAAW,EACT,4EAA4E;gBAC5E,+DAA+D;SAClE;QACD,MAAM,EAAE;YACN,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK;YACd,WAAW,EACT,oEAAoE;gBACpE,qEAAqE;gBACrE,qEAAqE;gBACrE,uCAAuC;SAC1C;QACD,cAAc,EAAE;YACd,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK;YACd,WAAW,EACT,sEAAsE;gBACtE,uEAAuE;gBACvE,kEAAkE;gBAClE,sEAAsE;gBACtE,uEAAuE;gBACvE,wEAAwE;gBACxE,mCAAmC;SACtC;KACF;IACD,OAAO,EAAE,IAAA,0BAAW,EAClB,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAW,EAAE,EAAE;QACrE,IAAA,mBAAU,GAAE,CAAC;QAEb,wEAAwE;QACxE,oEAAoE;QACpE,YAAY;QACZ,MAAM,MAAM,GAAG,IAAA,6BAAoB,GAAE,CAAC;QACtC,MAAM,WAAW,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC;QAE9C,IAAI,CAAC,MAAM,IAAI,CAAC,cAAc,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,IAAI,6BAAY,CACpB,+DAA+D;gBAC7D,kEAAkE;gBAClE,iEAAiE;gBACjE,wDAAwD;gBACxD,uBAAuB,CAC1B,CAAC;QACJ,CAAC;QAED,uEAAuE;QACvE,sEAAsE;QACtE,sEAAsE;QACtE,8BAA8B;QAC9B,MAAM,MAAM,GAAG,MAAM;YACnB,CAAC,CAAC,MAAM,IAAA,2BAAkB,GAAE;YAC5B,CAAC,CAAC,MAAM,IAAA,0BAAiB,EAAC,EAAE,wBAAwB,EAAE,WAAW,EAAE,CAAC,CAAC;QAEvE,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAE9D,yEAAyE;QACzE,sEAAsE;QACtE,gEAAgE;QAChE,uEAAuE;QACvE,qDAAqD;QACrD,0BAA0B;QAC1B,MAAM,IAAA,qCAAoB,EAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QAE7D,IAAA,kBAAS,EACP,qFAAqF,CACtF,CAAC;IACJ,CAAC,CACF;CACF,CAAC","debugId":"66f1b24a-ff93-5892-a12b-d796d27ec400"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ContainerEnvVariable } from "@alwaysmeticulous/client";
|
|
2
|
+
import type { CommandModule } from "yargs";
|
|
3
|
+
interface Options {
|
|
4
|
+
apiToken?: string | undefined;
|
|
5
|
+
commitSha?: string | undefined;
|
|
6
|
+
repoDirectory?: string | undefined;
|
|
7
|
+
localImageTag: string;
|
|
8
|
+
instructionsFile?: string | undefined;
|
|
9
|
+
containerPort?: number | undefined;
|
|
10
|
+
containerEnv?: ContainerEnvVariable[] | undefined;
|
|
11
|
+
containerHealthCheckEndpoint?: string | undefined;
|
|
12
|
+
dryRun?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const ciGenerateSessionsCommand: CommandModule<unknown, Options>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=generate-sessions.command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-sessions.command.d.ts","sourceRoot":"","sources":["../../../src/commands/ci/generate-sessions.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAKrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAU3C,UAAU,OAAO;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,YAAY,CAAC,EAAE,oBAAoB,EAAE,GAAG,SAAS,CAAC;IAClD,4BAA4B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAiED,eAAO,MAAM,yBAAyB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAiDrE,CAAC"}
|