@levr-one/cli 0.9.30 → 0.10.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/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 | Alias | Description |
146
- | --------------------------- | ----- | ------------------------------------------------------------------------------------------ |
147
- | `--team-id <uuid>` | `-t` | Team ID (optional; server resolves default if omitted. Or set `LEVR_TEAM_ID`) |
148
- | `--source <name>` | `-s` | Automation source name — groups recurring imports and remembers team (auto-detected in CI) |
149
- | `--run-name <name>` | `-r` | Name for the test run |
150
- | `--format <type>` | `-f` | File format: `junit`, `gherkin`, `cucumber-json`, `ctrf-json` (auto-detected if omitted) |
151
- | `--parent-folder-id <uuid>` | | Destination folder ID |
152
- | `--create-run` | | Force run creation for structure-only imports |
153
- | `--update-mode <mode>` | | `update` (default) or `create_new` |
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-DS9P6oO_.js");
216
+ const { loginHandler } = await import("./loginHandler-CX2L4fjs.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-CoVkm9zn.js");
255
+ const { statusHandler } = await import("./statusHandler-BvK4zSEf.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-BKHPXveG.js");
359
+ const { pushHandler } = await import("./pushHandler-Ck7lMC39.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-r9ynjdNv.js");
479
+ const { importHandler } = await import("./importHandler-TVAFta_i.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-D15Qm_g3.js");
500
+ const { listHandler } = await import("./listHandler-AYN1KpE-.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-CPEvi2Zm.js");
533
+ const { selectHandler } = await import("./selectHandler-CzolM41G.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-844a5HNE.js");
619
+ const { gatesRunHandler } = await import("./runHandler-COp3W6GN.js");
633
620
  return gatesRunHandler;
634
621
  }
635
622
  });
636
623
 
637
624
  //#endregion
638
625
  //#region package.json
639
- var version = "0.9.30";
626
+ var version = "0.10.0";
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-M5r7px3O.js";
2
+ import { authGetProfileV1, configureClient, teamFindAllV1, testCaseImportCommitV1, testCaseImportPreviewV1 } from "./sdk-client-DHD7tgY0.js";
3
3
  import "./workspace-store-DDOxnut1.js";
4
- import { resolveWorkspace } from "./resolve-workspace-Lsb77Zgi.js";
4
+ import { resolveWorkspace } from "./resolve-workspace-Ba9NuCRq.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-M5r7px3O.js";
2
+ import { authGetSitesV1, configureClient } from "./sdk-client-DHD7tgY0.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-M5r7px3O.js";
2
+ import { configureClient } from "./sdk-client-DHD7tgY0.js";
3
3
  import "./workspace-store-DDOxnut1.js";
4
- import { autoSelectWorkspace } from "./resolve-workspace-Lsb77Zgi.js";
4
+ import { autoSelectWorkspace } from "./resolve-workspace-Ba9NuCRq.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-M5r7px3O.js";
2
+ import { client, configureClient, uploadImport } from "./sdk-client-DHD7tgY0.js";
3
3
  import "./workspace-store-DDOxnut1.js";
4
- import { resolveWorkspace } from "./resolve-workspace-Lsb77Zgi.js";
4
+ import { resolveWorkspace } from "./resolve-workspace-Ba9NuCRq.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,4 +1,4 @@
1
- import { authGetSitesV1 } from "./sdk-client-M5r7px3O.js";
1
+ import { authGetSitesV1 } from "./sdk-client-DHD7tgY0.js";
2
2
  import { clearWorkspace, loadWorkspace, saveWorkspace } from "./workspace-store-DDOxnut1.js";
3
3
 
4
4
  //#region src/workspace/resolve-workspace.ts
@@ -1,7 +1,7 @@
1
1
  import "./env-CHeKHu5S.js";
2
- import { client, configureClient, issueFindAllV1, issueGateVerificationReportGateResultsV1, issueGateVerificationVerifyGatesV1 } from "./sdk-client-M5r7px3O.js";
2
+ import { client, configureClient, issueFindAllV1, issueGateVerificationReportGateResultsV1, issueGateVerificationVerifyGatesV1 } from "./sdk-client-DHD7tgY0.js";
3
3
  import "./workspace-store-DDOxnut1.js";
4
- import { resolveWorkspace } from "./resolve-workspace-Lsb77Zgi.js";
4
+ import { resolveWorkspace } from "./resolve-workspace-Ba9NuCRq.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({
@@ -32035,9 +32030,7 @@ async function uploadImport(options) {
32035
32030
  file: options.file,
32036
32031
  team_id: options.teamId,
32037
32032
  format: options.format,
32038
- parent_folder_id: options.parentFolderId,
32039
32033
  run_name: options.runName,
32040
- update_mode: options.updateMode,
32041
32034
  automation_source: options.automationSource,
32042
32035
  automation_source_id: options.automationSourceId,
32043
32036
  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-M5r7px3O.js";
2
+ import { authGetSitesV1, configureClient } from "./sdk-client-DHD7tgY0.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-M5r7px3O.js";
2
+ import { authGetProfileV1, configureClient } from "./sdk-client-DHD7tgY0.js";
3
3
  import { isTokenExpired } from "./token-refresh-Cu5RpkLJ.js";
4
4
  import chalk from "chalk";
5
5
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@levr-one/cli",
3
- "version": "0.9.30",
3
+ "version": "0.10.0",
4
4
  "description": "The command-line interface for Levr",
5
5
  "type": "module",
6
6
  "license": "MIT",