@levr-one/cli 0.9.30 → 0.10.1
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/README.md +10 -10
- package/dist/cli.js +8 -21
- package/dist/{importHandler-r9ynjdNv.js → importHandler-CQbaNHj-.js} +2 -2
- package/dist/{listHandler-D15Qm_g3.js → listHandler-CjHqlDZB.js} +1 -1
- package/dist/{loginHandler-DS9P6oO_.js → loginHandler-CpQbMScm.js} +2 -2
- package/dist/{pushHandler-BKHPXveG.js → pushHandler-PQl_1eST.js} +2 -5
- package/dist/{resolve-workspace-Lsb77Zgi.js → resolve-workspace-B7fQ-s23.js} +1 -1
- package/dist/{runHandler-844a5HNE.js → runHandler-DWrAGJUF.js} +2 -2
- package/dist/{sdk-client-M5r7px3O.js → sdk-client-BdHH-6QE.js} +4 -7
- package/dist/{selectHandler-CPEvi2Zm.js → selectHandler-FStngcLv.js} +1 -1
- package/dist/{statusHandler-CoVkm9zn.js → statusHandler-BLVWsfNB.js} +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -142,16 +142,15 @@ levr push ./results.xml --source "backend-unit-tests" --run-name "nightly"
|
|
|
142
142
|
|
|
143
143
|
**Flags:**
|
|
144
144
|
|
|
145
|
-
| Flag
|
|
146
|
-
|
|
|
147
|
-
| `--
|
|
148
|
-
| `--
|
|
149
|
-
| `--
|
|
150
|
-
| `--
|
|
151
|
-
| `--
|
|
152
|
-
| `--
|
|
153
|
-
| `--
|
|
154
|
-
| `--verbose` | `-v` | Show detailed output |
|
|
145
|
+
| Flag | Alias | Description |
|
|
146
|
+
| ---------------------------- | ----- | ------------------------------------------------------------------------------------------------------------ |
|
|
147
|
+
| `--workspace-id <uuid>` | `-w` | Workspace ID (required for multi-workspace JWT auth) |
|
|
148
|
+
| `--team-id <uuid>` | `-t` | Team ID (optional; server resolves default if omitted. Or set `LEVR_TEAM_ID`) |
|
|
149
|
+
| `--source <name>` | `-s` | Automation source name — groups recurring imports and remembers team (auto-detected in CI). Required unless `--automation-source` is set |
|
|
150
|
+
| `--automation-source <uuid>` | `-a` | UUID of an existing automation source (never creates one). Used instead of `--source`. Or set `LEVR_AUTOMATION_SOURCE_ID` |
|
|
151
|
+
| `--run-name <name>` | `-r` | Name for the test run |
|
|
152
|
+
| `--format <type>` | `-f` | File format: `junit`, `gherkin`, `cucumber-json`, `ctrf-json` (auto-detected if omitted) |
|
|
153
|
+
| `--verbose` | `-v` | Show detailed output |
|
|
155
154
|
|
|
156
155
|
### Automation sources
|
|
157
156
|
|
|
@@ -352,6 +351,7 @@ All configuration is via environment variables. Flags take precedence.
|
|
|
352
351
|
| `LEVR_MCP_URL` | MCP server URL written by `levr mcp add` (derived from the API URL when unset) | derived |
|
|
353
352
|
| `LEVR_TEAM_ID` | Default team ID (optional; server resolves from automation source or workspace default) | |
|
|
354
353
|
| `LEVR_SOURCE` | Automation source name override (groups imports, remembers team) | |
|
|
354
|
+
| `LEVR_AUTOMATION_SOURCE_ID` | UUID of an existing automation source; used instead of the source name (same as `--automation-source`) | |
|
|
355
355
|
|
|
356
356
|
## Troubleshooting
|
|
357
357
|
|
package/dist/cli.js
CHANGED
|
@@ -213,7 +213,7 @@ Examples:
|
|
|
213
213
|
aliases: { d: "device-code" }
|
|
214
214
|
},
|
|
215
215
|
loader: async () => {
|
|
216
|
-
const { loginHandler } = await import("./loginHandler-
|
|
216
|
+
const { loginHandler } = await import("./loginHandler-CpQbMScm.js");
|
|
217
217
|
return loginHandler;
|
|
218
218
|
}
|
|
219
219
|
});
|
|
@@ -252,7 +252,7 @@ Examples:
|
|
|
252
252
|
},
|
|
253
253
|
parameters: {},
|
|
254
254
|
loader: async () => {
|
|
255
|
-
const { statusHandler } = await import("./statusHandler-
|
|
255
|
+
const { statusHandler } = await import("./statusHandler-BLVWsfNB.js");
|
|
256
256
|
return statusHandler;
|
|
257
257
|
}
|
|
258
258
|
});
|
|
@@ -339,19 +339,6 @@ Examples:
|
|
|
339
339
|
brief: "File format (auto-detected if omitted)",
|
|
340
340
|
optional: true
|
|
341
341
|
},
|
|
342
|
-
"parent-folder-id": {
|
|
343
|
-
kind: "parsed",
|
|
344
|
-
parse: String,
|
|
345
|
-
brief: "Destination folder ID",
|
|
346
|
-
placeholder: "uuid",
|
|
347
|
-
optional: true
|
|
348
|
-
},
|
|
349
|
-
"update-mode": {
|
|
350
|
-
kind: "enum",
|
|
351
|
-
values: ["update", "create_new"],
|
|
352
|
-
default: "update",
|
|
353
|
-
brief: "How to handle existing tests"
|
|
354
|
-
},
|
|
355
342
|
verbose: {
|
|
356
343
|
kind: "boolean",
|
|
357
344
|
default: false,
|
|
@@ -369,7 +356,7 @@ Examples:
|
|
|
369
356
|
}
|
|
370
357
|
},
|
|
371
358
|
loader: async () => {
|
|
372
|
-
const { pushHandler } = await import("./pushHandler-
|
|
359
|
+
const { pushHandler } = await import("./pushHandler-PQl_1eST.js");
|
|
373
360
|
return pushHandler;
|
|
374
361
|
}
|
|
375
362
|
});
|
|
@@ -489,7 +476,7 @@ Examples:
|
|
|
489
476
|
}
|
|
490
477
|
},
|
|
491
478
|
loader: async () => {
|
|
492
|
-
const { importHandler } = await import("./importHandler-
|
|
479
|
+
const { importHandler } = await import("./importHandler-CQbaNHj-.js");
|
|
493
480
|
return importHandler;
|
|
494
481
|
}
|
|
495
482
|
});
|
|
@@ -510,7 +497,7 @@ Examples:
|
|
|
510
497
|
},
|
|
511
498
|
parameters: {},
|
|
512
499
|
loader: async () => {
|
|
513
|
-
const { listHandler } = await import("./listHandler-
|
|
500
|
+
const { listHandler } = await import("./listHandler-CjHqlDZB.js");
|
|
514
501
|
return listHandler;
|
|
515
502
|
}
|
|
516
503
|
});
|
|
@@ -543,7 +530,7 @@ Examples:
|
|
|
543
530
|
flags: {}
|
|
544
531
|
},
|
|
545
532
|
loader: async () => {
|
|
546
|
-
const { selectHandler } = await import("./selectHandler-
|
|
533
|
+
const { selectHandler } = await import("./selectHandler-FStngcLv.js");
|
|
547
534
|
return selectHandler;
|
|
548
535
|
}
|
|
549
536
|
});
|
|
@@ -629,14 +616,14 @@ Examples:
|
|
|
629
616
|
}
|
|
630
617
|
},
|
|
631
618
|
loader: async () => {
|
|
632
|
-
const { gatesRunHandler } = await import("./runHandler-
|
|
619
|
+
const { gatesRunHandler } = await import("./runHandler-DWrAGJUF.js");
|
|
633
620
|
return gatesRunHandler;
|
|
634
621
|
}
|
|
635
622
|
});
|
|
636
623
|
|
|
637
624
|
//#endregion
|
|
638
625
|
//#region package.json
|
|
639
|
-
var version = "0.
|
|
626
|
+
var version = "0.10.1";
|
|
640
627
|
|
|
641
628
|
//#endregion
|
|
642
629
|
//#region src/app.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getApiUrl, getTeamId } from "./env-CHeKHu5S.js";
|
|
2
|
-
import { authGetProfileV1, configureClient, teamFindAllV1, testCaseImportCommitV1, testCaseImportPreviewV1 } from "./sdk-client-
|
|
2
|
+
import { authGetProfileV1, configureClient, teamFindAllV1, testCaseImportCommitV1, testCaseImportPreviewV1 } from "./sdk-client-BdHH-6QE.js";
|
|
3
3
|
import "./workspace-store-DDOxnut1.js";
|
|
4
|
-
import { resolveWorkspace } from "./resolve-workspace-
|
|
4
|
+
import { resolveWorkspace } from "./resolve-workspace-B7fQ-s23.js";
|
|
5
5
|
import "./token-refresh-Cu5RpkLJ.js";
|
|
6
6
|
import { resolveToken } from "./resolve-token-DbQsmn03.js";
|
|
7
7
|
import chalk from "chalk";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./env-CHeKHu5S.js";
|
|
2
|
-
import { authGetSitesV1, configureClient } from "./sdk-client-
|
|
2
|
+
import { authGetSitesV1, configureClient } from "./sdk-client-BdHH-6QE.js";
|
|
3
3
|
import { loadWorkspace } from "./workspace-store-DDOxnut1.js";
|
|
4
4
|
import "./token-refresh-Cu5RpkLJ.js";
|
|
5
5
|
import { resolveToken } from "./resolve-token-DbQsmn03.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CLI_CLIENT_ID, getApiUrl, getAuthUrl, setSessionApiUrl, writeCredentials } from "./env-CHeKHu5S.js";
|
|
2
|
-
import { configureClient } from "./sdk-client-
|
|
2
|
+
import { configureClient } from "./sdk-client-BdHH-6QE.js";
|
|
3
3
|
import "./workspace-store-DDOxnut1.js";
|
|
4
|
-
import { autoSelectWorkspace } from "./resolve-workspace-
|
|
4
|
+
import { autoSelectWorkspace } from "./resolve-workspace-B7fQ-s23.js";
|
|
5
5
|
import chalk from "chalk";
|
|
6
6
|
import { createHash, randomBytes } from "node:crypto";
|
|
7
7
|
import { createServer } from "node:http";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getApiUrl, getAutomationSourceIdOverride, getSourceOverride, getTeamId } from "./env-CHeKHu5S.js";
|
|
2
|
-
import { client, configureClient, uploadImport } from "./sdk-client-
|
|
2
|
+
import { client, configureClient, uploadImport } from "./sdk-client-BdHH-6QE.js";
|
|
3
3
|
import "./workspace-store-DDOxnut1.js";
|
|
4
|
-
import { resolveWorkspace } from "./resolve-workspace-
|
|
4
|
+
import { resolveWorkspace } from "./resolve-workspace-B7fQ-s23.js";
|
|
5
5
|
import "./token-refresh-Cu5RpkLJ.js";
|
|
6
6
|
import { resolveToken } from "./resolve-token-DbQsmn03.js";
|
|
7
7
|
import { readFileSync, statSync } from "node:fs";
|
|
@@ -429,7 +429,6 @@ async function pushHandler(flags, file) {
|
|
|
429
429
|
this.logger.debug(`Team: ${uploadTeamId ?? (automationSourceId ? "(automation source's team)" : "(server default)")}`);
|
|
430
430
|
this.logger.debug(`File: ${file} (${formatBytes(fileStat.size)})`);
|
|
431
431
|
if (flags.format) this.logger.debug(`Format: ${flags.format}`);
|
|
432
|
-
if (flags["update-mode"]) this.logger.debug(`Update mode: ${flags["update-mode"]}`);
|
|
433
432
|
if (automationSourceId) this.logger.debug(`Automation source: ${automationSourceId} (${automationSourceOrigin})`);
|
|
434
433
|
else if (sourceName) this.logger.debug(`Source: ${sourceName} (${sourceOrigin})`);
|
|
435
434
|
if (ciMeta) {
|
|
@@ -452,9 +451,7 @@ async function pushHandler(flags, file) {
|
|
|
452
451
|
file: new File([fileBuffer], fileName),
|
|
453
452
|
fileName,
|
|
454
453
|
format: flags.format,
|
|
455
|
-
parentFolderId: flags["parent-folder-id"],
|
|
456
454
|
runName: flags["run-name"],
|
|
457
|
-
updateMode: flags["update-mode"],
|
|
458
455
|
...automationSourceId ? { automationSourceId } : { automationSource: sourceName },
|
|
459
456
|
importMetadata: ciMeta
|
|
460
457
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./env-CHeKHu5S.js";
|
|
2
|
-
import { client, configureClient, issueFindAllV1, issueGateVerificationReportGateResultsV1, issueGateVerificationVerifyGatesV1 } from "./sdk-client-
|
|
2
|
+
import { client, configureClient, issueFindAllV1, issueGateVerificationReportGateResultsV1, issueGateVerificationVerifyGatesV1 } from "./sdk-client-BdHH-6QE.js";
|
|
3
3
|
import "./workspace-store-DDOxnut1.js";
|
|
4
|
-
import { resolveWorkspace } from "./resolve-workspace-
|
|
4
|
+
import { resolveWorkspace } from "./resolve-workspace-B7fQ-s23.js";
|
|
5
5
|
import "./token-refresh-Cu5RpkLJ.js";
|
|
6
6
|
import { resolveToken } from "./resolve-token-DbQsmn03.js";
|
|
7
7
|
import { existsSync } from "node:fs";
|
|
@@ -15124,9 +15124,7 @@ const zImportCreateV1Body = z.object({
|
|
|
15124
15124
|
"cucumber-json",
|
|
15125
15125
|
"ctrf-json"
|
|
15126
15126
|
]).optional().describe(""),
|
|
15127
|
-
parent_folder_id: z.string().optional().describe(""),
|
|
15128
15127
|
run_name: z.string().max(250).optional().describe(""),
|
|
15129
|
-
update_mode: z.enum(["update", "create_new"]).optional().describe(""),
|
|
15130
15128
|
automation_source: z.string().max(100).optional().describe(""),
|
|
15131
15129
|
automation_source_id: z.string().optional().describe(""),
|
|
15132
15130
|
import_metadata: z.string().optional().describe("")
|
|
@@ -27787,9 +27785,6 @@ const zOpenStreamingRunDto = z.object({
|
|
|
27787
27785
|
team_id: z.string().optional().describe(""),
|
|
27788
27786
|
automation_source: z.string().max(100).describe(""),
|
|
27789
27787
|
run_name: z.string().max(250).optional().describe(""),
|
|
27790
|
-
parent_folder_id: z.string().optional().describe(""),
|
|
27791
|
-
parent_folder_name: z.string().max(250).optional().describe(""),
|
|
27792
|
-
update_mode: z.enum(["update", "create_new"]).optional().describe(""),
|
|
27793
27788
|
metadata: z.record(z.string(), z.unknown()).optional().describe("")
|
|
27794
27789
|
});
|
|
27795
27790
|
const zStreamingRunResponseDto = z.object({
|
|
@@ -30602,12 +30597,14 @@ const zCreateUserPreferenceDto = z.object({
|
|
|
30602
30597
|
id: z.string().optional().describe(""),
|
|
30603
30598
|
auto_assign_on_start: z.boolean().nullable().optional().describe(""),
|
|
30604
30599
|
auto_assign_on_result: z.boolean().nullable().optional().describe(""),
|
|
30600
|
+
auto_assign_on_done: z.boolean().nullable().optional().describe(""),
|
|
30605
30601
|
user_id: z.string()
|
|
30606
30602
|
});
|
|
30607
30603
|
const zResponseUserPreferenceDto = z.object({
|
|
30608
30604
|
id: z.string().describe(""),
|
|
30609
30605
|
auto_assign_on_start: z.boolean().nullable().optional().describe(""),
|
|
30610
30606
|
auto_assign_on_result: z.boolean().nullable().optional().describe(""),
|
|
30607
|
+
auto_assign_on_done: z.boolean().nullable().optional().describe(""),
|
|
30611
30608
|
user_id: z.string(),
|
|
30612
30609
|
created_at: z.unknown().describe(""),
|
|
30613
30610
|
updated_at: z.unknown().describe(""),
|
|
@@ -30622,6 +30619,7 @@ const zUpdateUserPreferenceDto = z.object({
|
|
|
30622
30619
|
id: z.string().optional().describe(""),
|
|
30623
30620
|
auto_assign_on_start: z.boolean().nullable().optional().describe(""),
|
|
30624
30621
|
auto_assign_on_result: z.boolean().nullable().optional().describe(""),
|
|
30622
|
+
auto_assign_on_done: z.boolean().nullable().optional().describe(""),
|
|
30625
30623
|
user_id: z.string().optional()
|
|
30626
30624
|
});
|
|
30627
30625
|
const zUserPreferenceBulkOperationDto = z.object({
|
|
@@ -30667,6 +30665,7 @@ const zUserPreferenceFindAllV1Data = z.object({
|
|
|
30667
30665
|
"filter.id": z.array(z.string()).optional(),
|
|
30668
30666
|
"filter.auto_assign_on_start": z.array(z.string()).optional(),
|
|
30669
30667
|
"filter.auto_assign_on_result": z.array(z.string()).optional(),
|
|
30668
|
+
"filter.auto_assign_on_done": z.array(z.string()).optional(),
|
|
30670
30669
|
"filter.user_id": z.array(z.string()).optional(),
|
|
30671
30670
|
"filter.created_at": z.array(z.string()).optional(),
|
|
30672
30671
|
"filter.updated_at": z.array(z.string()).optional(),
|
|
@@ -32035,9 +32034,7 @@ async function uploadImport(options) {
|
|
|
32035
32034
|
file: options.file,
|
|
32036
32035
|
team_id: options.teamId,
|
|
32037
32036
|
format: options.format,
|
|
32038
|
-
parent_folder_id: options.parentFolderId,
|
|
32039
32037
|
run_name: options.runName,
|
|
32040
|
-
update_mode: options.updateMode,
|
|
32041
32038
|
automation_source: options.automationSource,
|
|
32042
32039
|
automation_source_id: options.automationSourceId,
|
|
32043
32040
|
import_metadata: options.importMetadata ? JSON.stringify(options.importMetadata) : void 0
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./env-CHeKHu5S.js";
|
|
2
|
-
import { authGetSitesV1, configureClient } from "./sdk-client-
|
|
2
|
+
import { authGetSitesV1, configureClient } from "./sdk-client-BdHH-6QE.js";
|
|
3
3
|
import { saveWorkspace } from "./workspace-store-DDOxnut1.js";
|
|
4
4
|
import "./token-refresh-Cu5RpkLJ.js";
|
|
5
5
|
import { resolveToken } from "./resolve-token-DbQsmn03.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getApiUrl, getPatToken, readCredentials } from "./env-CHeKHu5S.js";
|
|
2
|
-
import { authGetProfileV1, configureClient } from "./sdk-client-
|
|
2
|
+
import { authGetProfileV1, configureClient } from "./sdk-client-BdHH-6QE.js";
|
|
3
3
|
import { isTokenExpired } from "./token-refresh-Cu5RpkLJ.js";
|
|
4
4
|
import chalk from "chalk";
|
|
5
5
|
|