@levr-one/cli 0.9.16 → 0.9.18

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.
@@ -155,12 +155,15 @@ const CLAUDE_CODE_LOCATIONS = [
155
155
  /**
156
156
  * The catalog. Order is presentation order (most common first).
157
157
  *
158
- * `comingSoon` clients (VS Code) are listed but not installable: their config
159
- * format differs enough (VS Code's `servers`/native-http schema) that a
160
- * faithful write is deferred. Their SCOPES are declared as data regardless, so
161
- * the support matrix stays complete and turning them on later is a builder
162
- * change, not a catalog change. Codex left this list in ENG-5264 once the TOML
163
- * adapter existed.
158
+ * Every entry is installable, and there is no deferral flag: the old
159
+ * coming-soon flag was retired in ENG-5558 once its last member left. Codex
160
+ * became installable in ENG-5264 when the TOML adapter existed, and VS Code
161
+ * in ENG-5558 when its file was observed — its `servers` key and native-http
162
+ * entry were already expressible as declared data (`serverPropertyName`,
163
+ * {@link DEFAULT_NATIVE_HTTP_ENTRY}), so enabling it was a catalog change and
164
+ * nothing under `src/node/` moved. A client whose file cannot be written
165
+ * faithfully yet does not belong in this list; add it when its bytes have
166
+ * been observed, born with real provenance.
164
167
  */
165
168
  const HARNESSES = [
166
169
  {
@@ -174,7 +177,6 @@ const HARNESSES = [
174
177
  serverPropertyName: "mcpServers",
175
178
  transport: "mcp-remote",
176
179
  docsUrl: "https://modelcontextprotocol.io/quickstart/user",
177
- comingSoon: false,
178
180
  verifiedVersion: UNVERIFIED_LEGACY,
179
181
  verifiedOn: UNVERIFIED_LEGACY,
180
182
  detectSignals: [
@@ -222,7 +224,6 @@ const HARNESSES = [
222
224
  serverPropertyName: "mcpServers",
223
225
  transport: "native-http",
224
226
  docsUrl: "https://docs.anthropic.com/en/docs/claude-code/mcp",
225
- comingSoon: false,
226
227
  verifiedVersion: UNVERIFIED_LEGACY,
227
228
  verifiedOn: UNVERIFIED_LEGACY,
228
229
  detectSignals: [
@@ -279,7 +280,6 @@ const HARNESSES = [
279
280
  serverPropertyName: "mcpServers",
280
281
  transport: "mcp-remote",
281
282
  docsUrl: "https://cursor.com/docs/mcp",
282
- comingSoon: false,
283
283
  verifiedVersion: UNVERIFIED_LEGACY,
284
284
  verifiedOn: UNVERIFIED_LEGACY,
285
285
  detectSignals: [
@@ -330,7 +330,6 @@ const HARNESSES = [
330
330
  serverPropertyName: "mcpServers",
331
331
  transport: "mcp-remote",
332
332
  docsUrl: "https://docs.windsurf.com/windsurf/mcp",
333
- comingSoon: false,
334
333
  verifiedVersion: UNVERIFIED_LEGACY,
335
334
  verifiedOn: UNVERIFIED_LEGACY,
336
335
  detectSignals: [
@@ -377,7 +376,6 @@ const HARNESSES = [
377
376
  serverPropertyName: "context_servers",
378
377
  transport: "mcp-remote",
379
378
  docsUrl: "https://zed.dev/docs/ai/mcp",
380
- comingSoon: false,
381
379
  verifiedVersion: UNVERIFIED_LEGACY,
382
380
  verifiedOn: UNVERIFIED_LEGACY,
383
381
  detectSignals: [
@@ -428,7 +426,6 @@ const HARNESSES = [
428
426
  serverPropertyName: "mcpServers",
429
427
  transport: "native-http",
430
428
  docsUrl: "https://github.com/google-gemini/gemini-cli/blob/main/docs/tools/mcp-server.md",
431
- comingSoon: false,
432
429
  verifiedVersion: "0.35.1",
433
430
  verifiedOn: "2026-09-17",
434
431
  detectSignals: [
@@ -480,7 +477,6 @@ const HARNESSES = [
480
477
  },
481
478
  configFormat: "toml",
482
479
  docsUrl: "https://docs.x.ai/build/overview",
483
- comingSoon: false,
484
480
  verifiedVersion: "1.0.34",
485
481
  verifiedOn: "2026-09-17",
486
482
  detectSignals: [
@@ -531,7 +527,6 @@ const HARNESSES = [
531
527
  constants: { disabled: false }
532
528
  },
533
529
  docsUrl: "https://antigravity.google/docs/mcp",
534
- comingSoon: false,
535
530
  verifiedVersion: "1.2.5",
536
531
  verifiedOn: "2026-09-17",
537
532
  detectSignals: [
@@ -584,10 +579,11 @@ const HARNESSES = [
584
579
  "vs code",
585
580
  "visual studio code"
586
581
  ],
587
- serverPropertyName: "mcpServers",
588
- transport: "mcp-remote",
582
+ serverPropertyName: "servers",
583
+ transport: "native-http",
589
584
  docsUrl: "https://code.visualstudio.com/docs/copilot/chat/mcp-servers",
590
- comingSoon: true,
585
+ verifiedVersion: "1.111.0",
586
+ verifiedOn: "2026-09-21",
591
587
  detectSignals: [
592
588
  {
593
589
  platform: "darwin",
@@ -634,7 +630,6 @@ const HARNESSES = [
634
630
  nativeHttpEntry: { urlKey: "url" },
635
631
  configFormat: "toml",
636
632
  docsUrl: "https://github.com/openai/codex",
637
- comingSoon: false,
638
633
  verifiedVersion: "0.154.0",
639
634
  verifiedOn: "2026-09-17",
640
635
  detectSignals: [
@@ -1453,8 +1448,7 @@ function detectOne(harness, env) {
1453
1448
  scopes,
1454
1449
  alreadyConfigured: fallback?.alreadyConfigured ?? false,
1455
1450
  configPath: fallback?.configPath ?? "",
1456
- available,
1457
- comingSoon: harness.comingSoon
1451
+ available
1458
1452
  };
1459
1453
  }
1460
1454
  /** Synchronous detection over the whole catalog. Exported for tests. */
@@ -1912,7 +1906,7 @@ const DEFAULT_SCOPE = "user";
1912
1906
  * about to install into, not the harness's default one. */
1913
1907
  function autoSelectIds(detected, scope) {
1914
1908
  return detected.filter((d) => {
1915
- if (!d.available || d.comingSoon || !d.installed) return false;
1909
+ if (!d.available || !d.installed) return false;
1916
1910
  const inScope = scope ? d.scopes.find((s) => s.scope === scope) : void 0;
1917
1911
  return !(inScope ? inScope.alreadyConfigured : d.alreadyConfigured);
1918
1912
  }).map((d) => d.id);
@@ -1928,7 +1922,7 @@ function autoSelectIds(detected, scope) {
1928
1922
  */
1929
1923
  function clientChoices(detected, scope) {
1930
1924
  const preselect = new Set(autoSelectIds(detected, scope));
1931
- return detected.filter((d) => d.available && !d.comingSoon).map((d) => {
1925
+ return detected.filter((d) => d.available).map((d) => {
1932
1926
  const inScope = d.scopes.find((s) => s.scope === scope);
1933
1927
  const harness = getHarness(d.id);
1934
1928
  let hint;
@@ -1952,23 +1946,16 @@ function offerableScopes(selectedIds, detected) {
1952
1946
  /** Resolve `--all` / `--client` into concrete, installable harness ids. */
1953
1947
  function resolveRequestedIds(options, detected) {
1954
1948
  if (options.all) return {
1955
- ids: detected.filter((d) => d.available && !d.comingSoon).map((d) => d.id),
1956
- unknown: [],
1957
- comingSoon: []
1949
+ ids: detected.filter((d) => d.available).map((d) => d.id),
1950
+ unknown: []
1958
1951
  };
1959
1952
  const ids = [];
1960
1953
  const unknown = [];
1961
- const comingSoon = [];
1962
- for (const c of options.clients ?? []) {
1963
- const harness = getHarness(c);
1964
- if (!harness) unknown.push(c);
1965
- else if (harness.comingSoon) comingSoon.push(c);
1966
- else ids.push(c);
1967
- }
1954
+ for (const c of options.clients ?? []) if (!getHarness(c)) unknown.push(c);
1955
+ else ids.push(c);
1968
1956
  return {
1969
1957
  ids,
1970
- unknown,
1971
- comingSoon
1958
+ unknown
1972
1959
  };
1973
1960
  }
1974
1961
  /**
@@ -2011,13 +1998,11 @@ function runNonInteractive(options, url, urlSource, deps) {
2011
1998
  const scope = options.scope ?? DEFAULT_SCOPE;
2012
1999
  let ids;
2013
2000
  let unknown = [];
2014
- let comingSoon = [];
2015
2001
  const byName = !options.all && (options.clients?.length ?? 0) > 0;
2016
2002
  if (options.all || byName) {
2017
2003
  const requested = resolveRequestedIds(options, detected);
2018
2004
  ids = requested.ids;
2019
2005
  unknown = requested.unknown;
2020
- comingSoon = requested.comingSoon;
2021
2006
  } else ids = autoSelectIds(detected, scope);
2022
2007
  return {
2023
2008
  url,
@@ -2030,7 +2015,6 @@ function runNonInteractive(options, url, urlSource, deps) {
2030
2015
  namedIds: new Set(byName ? ids : [])
2031
2016
  }, deps.install),
2032
2017
  unknownClients: unknown,
2033
- comingSoonClients: comingSoon,
2034
2018
  dryRun: options.dryRun
2035
2019
  };
2036
2020
  }
@@ -2073,7 +2057,6 @@ function formatReport(report) {
2073
2057
  if (report.outcomes.length === 0) lines.push("No clients selected.");
2074
2058
  else for (const o of report.outcomes) lines.push(outcomeLine(o, report.dryRun));
2075
2059
  if (report.unknownClients.length > 0) lines.push(`Unknown clients (skipped): ${report.unknownClients.join(", ")}`);
2076
- if (report.comingSoonClients.length > 0) lines.push(`Coming soon (skipped): ${report.comingSoonClients.join(", ")}`);
2077
2060
  return lines.join("\n");
2078
2061
  }
2079
2062
  /** Next-steps blurb after a run. */
@@ -2145,7 +2128,7 @@ async function interactive(ctx, dryRun, url, urlSource, requestedScope) {
2145
2128
  p.intro("Levr MCP setup");
2146
2129
  p.note(`${url}\n(${urlSource})`, "MCP endpoint");
2147
2130
  const detected = defaultDeps.detect();
2148
- const installable = detected.filter((d) => d.available && !d.comingSoon);
2131
+ const installable = detected.filter((d) => d.available);
2149
2132
  if (installable.length === 0) {
2150
2133
  p.outro("No supported MCP clients found on this machine.");
2151
2134
  return;
@@ -2204,7 +2187,6 @@ async function interactive(ctx, dryRun, url, urlSource, requestedScope) {
2204
2187
  scope,
2205
2188
  outcomes,
2206
2189
  unknownClients: [],
2207
- comingSoonClients: [],
2208
2190
  dryRun
2209
2191
  };
2210
2192
  p.note(formatReport(report), "Results");
package/dist/cli.js CHANGED
@@ -175,7 +175,7 @@ Examples:
175
175
  aliases: { y: "yes" }
176
176
  },
177
177
  loader: async () => {
178
- const { mcpAddHandler } = await import("./addHandler-BlZQkDtP.js");
178
+ const { mcpAddHandler } = await import("./addHandler-D6OI7Mx7.js");
179
179
  return mcpAddHandler;
180
180
  }
181
181
  });
@@ -213,7 +213,7 @@ Examples:
213
213
  aliases: { d: "device-code" }
214
214
  },
215
215
  loader: async () => {
216
- const { loginHandler } = await import("./loginHandler-C8f4O_GL.js");
216
+ const { loginHandler } = await import("./loginHandler-B3pMuG5a.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-BZbHhWmF.js");
255
+ const { statusHandler } = await import("./statusHandler-DWGj7Faz.js");
256
256
  return statusHandler;
257
257
  }
258
258
  });
@@ -364,7 +364,7 @@ Examples:
364
364
  }
365
365
  },
366
366
  loader: async () => {
367
- const { pushHandler } = await import("./pushHandler-B-GGC-Qc.js");
367
+ const { pushHandler } = await import("./pushHandler-CSJ9QIfr.js");
368
368
  return pushHandler;
369
369
  }
370
370
  });
@@ -484,7 +484,7 @@ Examples:
484
484
  }
485
485
  },
486
486
  loader: async () => {
487
- const { importHandler } = await import("./importHandler-CsMiEAD7.js");
487
+ const { importHandler } = await import("./importHandler-Cj7roVu2.js");
488
488
  return importHandler;
489
489
  }
490
490
  });
@@ -505,7 +505,7 @@ Examples:
505
505
  },
506
506
  parameters: {},
507
507
  loader: async () => {
508
- const { listHandler } = await import("./listHandler-ItVPaAzR.js");
508
+ const { listHandler } = await import("./listHandler-zitcaXoW.js");
509
509
  return listHandler;
510
510
  }
511
511
  });
@@ -538,7 +538,7 @@ Examples:
538
538
  flags: {}
539
539
  },
540
540
  loader: async () => {
541
- const { selectHandler } = await import("./selectHandler-BZ8uzy81.js");
541
+ const { selectHandler } = await import("./selectHandler-CY0ilgYD.js");
542
542
  return selectHandler;
543
543
  }
544
544
  });
@@ -562,7 +562,7 @@ Examples:
562
562
 
563
563
  //#endregion
564
564
  //#region package.json
565
- var version = "0.9.16";
565
+ var version = "0.9.18";
566
566
 
567
567
  //#endregion
568
568
  //#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-pfFJmNaX.js";
2
+ import { authGetProfileV1, configureClient, teamFindAllV1, testCaseImportCommitV1, testCaseImportPreviewV1 } from "./sdk-client-BjT8rMhF.js";
3
3
  import "./workspace-store-DDOxnut1.js";
4
- import { resolveWorkspace } from "./resolve-workspace-D0xYKcDn.js";
4
+ import { resolveWorkspace } from "./resolve-workspace-B5UavWiC.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-pfFJmNaX.js";
2
+ import { authGetSitesV1, configureClient } from "./sdk-client-BjT8rMhF.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-pfFJmNaX.js";
2
+ import { configureClient } from "./sdk-client-BjT8rMhF.js";
3
3
  import "./workspace-store-DDOxnut1.js";
4
- import { autoSelectWorkspace } from "./resolve-workspace-D0xYKcDn.js";
4
+ import { autoSelectWorkspace } from "./resolve-workspace-B5UavWiC.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, uploadAutomationIngest, uploadImport } from "./sdk-client-pfFJmNaX.js";
2
+ import { client, configureClient, uploadAutomationIngest, uploadImport } from "./sdk-client-BjT8rMhF.js";
3
3
  import "./workspace-store-DDOxnut1.js";
4
- import { resolveWorkspace } from "./resolve-workspace-D0xYKcDn.js";
4
+ import { resolveWorkspace } from "./resolve-workspace-B5UavWiC.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";
@@ -1,4 +1,4 @@
1
- import { authGetSitesV1 } from "./sdk-client-pfFJmNaX.js";
1
+ import { authGetSitesV1 } from "./sdk-client-BjT8rMhF.js";
2
2
  import { clearWorkspace, loadWorkspace, saveWorkspace } from "./workspace-store-DDOxnut1.js";
3
3
 
4
4
  //#region src/workspace/resolve-workspace.ts
@@ -37,6 +37,7 @@ const zResponseIssueDto = z.object({
37
37
  gate_set_id: z.string().nullable().optional().describe(""),
38
38
  milestone_id: z.string().nullable().optional().describe(""),
39
39
  spoke_key: z.string().nullable().optional().describe(""),
40
+ gate_run_id: z.string().nullable().optional().describe(""),
40
41
  project_id: z.string().nullable().optional(),
41
42
  assignee_id: z.string().nullable().optional(),
42
43
  parent_id: z.string().nullable().optional(),
@@ -12912,8 +12913,7 @@ const zFirstRunStatusDto = z.object({
12912
12913
  label: z.string(),
12913
12914
  installKind: z.enum(["config-file", "cli-command"]),
12914
12915
  snippet: z.string(),
12915
- docsUrl: z.string(),
12916
- comingSoon: z.boolean()
12916
+ docsUrl: z.string()
12917
12917
  }))
12918
12918
  });
12919
12919
  const zFirstRunGetStatusV1Data = z.object({ url: z.literal("/v1/first-run/mcp") });
@@ -13845,6 +13845,7 @@ const zCreateGateInstanceDto = z.object({
13845
13845
  required: z.boolean().optional().describe(""),
13846
13846
  last_checked_at: z.unknown().optional().describe(""),
13847
13847
  issue_id: z.string(),
13848
+ issue_test_link_id: z.string().nullable().optional(),
13848
13849
  gate_definition_id: z.string(),
13849
13850
  gate_set_id: z.string().nullable().optional(),
13850
13851
  verified_by: z.string().nullable().optional(),
@@ -13862,6 +13863,7 @@ const zResponseGateInstanceDto = z.object({
13862
13863
  required: z.boolean().optional().describe(""),
13863
13864
  last_checked_at: z.unknown().optional().describe(""),
13864
13865
  issue_id: z.string(),
13866
+ issue_test_link_id: z.string().nullable().optional(),
13865
13867
  gate_definition_id: z.string(),
13866
13868
  gate_set_id: z.string().nullable().optional(),
13867
13869
  verified_by: z.string().nullable().optional(),
@@ -13887,6 +13889,7 @@ const zUpdateGateInstanceDto = z.object({
13887
13889
  required: z.boolean().optional().describe(""),
13888
13890
  last_checked_at: z.unknown().optional().describe(""),
13889
13891
  issue_id: z.string().optional(),
13892
+ issue_test_link_id: z.string().nullable().optional(),
13890
13893
  gate_definition_id: z.string().optional(),
13891
13894
  gate_set_id: z.string().nullable().optional(),
13892
13895
  verified_by: z.string().nullable().optional(),
@@ -13923,15 +13926,6 @@ const zBulkGateInstanceResponseDto = z.object({
13923
13926
  savepoints_used: z.number().describe("")
13924
13927
  }).describe("")
13925
13928
  });
13926
- const zGateInstanceWaiveGateV1Data = z.object({
13927
- body: zGateInstanceWaiveGateV1Body,
13928
- path: z.object({ "id": z.string() }),
13929
- url: z.literal("/v1/gate-instance/{id}/waive")
13930
- });
13931
- const zGateInstanceRevokeWaiverV1Data = z.object({
13932
- path: z.object({ "id": z.string() }),
13933
- url: z.literal("/v1/gate-instance/{id}/revoke-waiver")
13934
- });
13935
13929
  const zGateInstanceCreateV1Data = z.object({
13936
13930
  body: zCreateGateInstanceDto,
13937
13931
  url: z.literal("/v1/gate-instance")
@@ -13951,6 +13945,7 @@ const zGateInstanceFindAllV1Data = z.object({
13951
13945
  "filter.required": z.array(z.string()).optional(),
13952
13946
  "filter.last_checked_at": z.array(z.string()).optional(),
13953
13947
  "filter.issue_id": z.array(z.string()).optional(),
13948
+ "filter.issue_test_link_id": z.array(z.string()).optional(),
13954
13949
  "filter.gate_definition_id": z.array(z.string()).optional(),
13955
13950
  "filter.gate_set_id": z.array(z.string()).optional(),
13956
13951
  "filter.verified_by": z.array(z.string()).optional(),
@@ -13975,6 +13970,8 @@ const zGateInstanceFindAllV1Data = z.object({
13975
13970
  "consecutive_fails:DESC",
13976
13971
  "last_checked_at:ASC",
13977
13972
  "last_checked_at:DESC",
13973
+ "issue_test_link_id:ASC",
13974
+ "issue_test_link_id:DESC",
13978
13975
  "gate_set_id:ASC",
13979
13976
  "gate_set_id:DESC",
13980
13977
  "verified_by:ASC",
@@ -14015,6 +14012,15 @@ const zGateInstanceRestoreV1Data = z.object({
14015
14012
  path: z.object({ "id": z.string() }),
14016
14013
  url: z.literal("/v1/gate-instance/{id}/restore")
14017
14014
  });
14015
+ const zGateInstanceWaiveGateV1Data = z.object({
14016
+ body: zGateInstanceWaiveGateV1Body,
14017
+ path: z.object({ "id": z.string() }),
14018
+ url: z.literal("/v1/gate-instance/{id}/waive")
14019
+ });
14020
+ const zGateInstanceRevokeWaiverV1Data = z.object({
14021
+ path: z.object({ "id": z.string() }),
14022
+ url: z.literal("/v1/gate-instance/{id}/revoke-waiver")
14023
+ });
14018
14024
 
14019
14025
  //#endregion
14020
14026
  //#region ../sdk/dist/gen/gate-result/zod.js
@@ -15790,6 +15796,7 @@ const zIssueFindAllV1Data = z.object({
15790
15796
  "filter.gate_set_id": z.array(z.string()).optional(),
15791
15797
  "filter.milestone_id": z.array(z.string()).optional(),
15792
15798
  "filter.spoke_key": z.array(z.string()).optional(),
15799
+ "filter.gate_run_id": z.array(z.string()).optional(),
15793
15800
  "filter.assignee_id": z.array(z.string()).optional(),
15794
15801
  "filter.parent_id": z.array(z.string()).optional(),
15795
15802
  "filter.cycle_id": z.array(z.string()).optional(),
@@ -15870,6 +15877,8 @@ const zIssueFindAllV1Data = z.object({
15870
15877
  "gate_set_id:DESC",
15871
15878
  "milestone_id:ASC",
15872
15879
  "milestone_id:DESC",
15880
+ "gate_run_id:ASC",
15881
+ "gate_run_id:DESC",
15873
15882
  "created_at:ASC",
15874
15883
  "created_at:DESC",
15875
15884
  "updated_at:ASC",
@@ -16237,8 +16246,24 @@ const zIssueGateVerificationReportGateResultsV1Body = z.object({ results: z.arra
16237
16246
  "fail",
16238
16247
  "error"
16239
16248
  ]),
16240
- output: z.string()
16249
+ output: z.string(),
16250
+ expected: z.string().optional(),
16251
+ steps: z.array(z.object({
16252
+ command: z.string(),
16253
+ exit_code: z.number(),
16254
+ stdout_tail: z.string(),
16255
+ stderr_tail: z.string()
16256
+ })).optional()
16241
16257
  })) });
16258
+ const zIssueGateVerificationGateStatusV1Data = z.object({
16259
+ path: z.object({ "id": z.string() }),
16260
+ query: z.object({ "executor_type": z.enum([
16261
+ "human",
16262
+ "agent",
16263
+ "ci"
16264
+ ]).optional() }).optional(),
16265
+ url: z.literal("/v1/issue/{id}/gate-status")
16266
+ });
16242
16267
  const zIssueGateVerificationVerifyGatesV1Data = z.object({
16243
16268
  path: z.object({ "id": z.string() }),
16244
16269
  url: z.literal("/v1/issue/{id}/verify-gates")
@@ -16775,6 +16800,11 @@ const zResponseIssueTestEvidenceDto = z.object({
16775
16800
  "blocked"
16776
16801
  ]).describe(""),
16777
16802
  status_id: z.string().describe(""),
16803
+ executor_type: z.enum([
16804
+ "human",
16805
+ "agent",
16806
+ "ci"
16807
+ ]).nullable().optional().describe(""),
16778
16808
  context: z.unknown().optional().describe(""),
16779
16809
  recorded_at: z.unknown().describe(""),
16780
16810
  reason: z.string().nullable().optional().describe(""),
@@ -16913,7 +16943,8 @@ const zCreateIssueTestLinkDto = z.object({
16913
16943
  "reproduces",
16914
16944
  "verifies",
16915
16945
  "accepts",
16916
- "regresses"
16946
+ "regresses",
16947
+ "gates"
16917
16948
  ]).describe(""),
16918
16949
  verification_rule: z.unknown().optional().describe(""),
16919
16950
  origin_run_result_id: z.string().nullable().optional().describe(""),
@@ -16924,7 +16955,10 @@ const zCreateIssueTestLinkDto = z.object({
16924
16955
  automation_test_id: z.string().nullable().optional(),
16925
16956
  created_by_user_id: z.string().nullable().optional(),
16926
16957
  origin_automation_run_result_id: z.string().nullable().optional(),
16927
- latest_automation_run_result_id: z.string().nullable().optional()
16958
+ latest_automation_run_result_id: z.string().nullable().optional(),
16959
+ gate_definition_id: z.string().nullable().optional(),
16960
+ waived_by: z.string().nullable().optional(),
16961
+ verified_by_user_id: z.string().nullable().optional()
16928
16962
  });
16929
16963
  const zResponseIssueTestLinkDto = z.object({
16930
16964
  id: z.string().describe(""),
@@ -16932,7 +16966,8 @@ const zResponseIssueTestLinkDto = z.object({
16932
16966
  "reproduces",
16933
16967
  "verifies",
16934
16968
  "accepts",
16935
- "regresses"
16969
+ "regresses",
16970
+ "gates"
16936
16971
  ]).describe(""),
16937
16972
  verification_rule: z.unknown().optional().describe(""),
16938
16973
  current_status: z.string().optional().describe(""),
@@ -16943,12 +16978,24 @@ const zResponseIssueTestLinkDto = z.object({
16943
16978
  origin_run_result_id: z.string().nullable().optional().describe(""),
16944
16979
  latest_run_result_id: z.string().nullable().optional().describe(""),
16945
16980
  verified_at: z.unknown().optional().describe(""),
16981
+ gate_slot: z.string().nullable().optional().describe(""),
16982
+ gate_content_hash: z.string().nullable().optional().describe(""),
16983
+ gate_drifted: z.boolean().nullable().optional().describe(""),
16984
+ required: z.boolean().nullable().optional().describe(""),
16985
+ required_override: z.boolean().nullable().optional().describe(""),
16986
+ waived_reason: z.string().nullable().optional().describe(""),
16987
+ waived_at: z.unknown().optional().describe(""),
16988
+ last_attempt_at: z.unknown().optional().describe(""),
16989
+ last_executor_type: z.string().nullable().optional().describe(""),
16946
16990
  issue_id: z.string(),
16947
16991
  test_id: z.string().nullable().optional(),
16948
16992
  automation_test_id: z.string().nullable().optional(),
16949
16993
  created_by_user_id: z.string().nullable().optional(),
16950
16994
  origin_automation_run_result_id: z.string().nullable().optional(),
16951
16995
  latest_automation_run_result_id: z.string().nullable().optional(),
16996
+ gate_definition_id: z.string().nullable().optional(),
16997
+ waived_by: z.string().nullable().optional(),
16998
+ verified_by_user_id: z.string().nullable().optional(),
16952
16999
  created_at: z.unknown().describe(""),
16953
17000
  updated_at: z.unknown().describe(""),
16954
17001
  epoch: z.number().describe(""),
@@ -16962,7 +17009,8 @@ const zUpdateIssueTestLinkDto = z.object({
16962
17009
  "reproduces",
16963
17010
  "verifies",
16964
17011
  "accepts",
16965
- "regresses"
17012
+ "regresses",
17013
+ "gates"
16966
17014
  ]).optional().describe(""),
16967
17015
  verification_rule: z.unknown().optional().describe(""),
16968
17016
  origin_run_result_id: z.string().nullable().optional().describe(""),
@@ -16973,7 +17021,10 @@ const zUpdateIssueTestLinkDto = z.object({
16973
17021
  automation_test_id: z.string().nullable().optional(),
16974
17022
  created_by_user_id: z.string().nullable().optional(),
16975
17023
  origin_automation_run_result_id: z.string().nullable().optional(),
16976
- latest_automation_run_result_id: z.string().nullable().optional()
17024
+ latest_automation_run_result_id: z.string().nullable().optional(),
17025
+ gate_definition_id: z.string().nullable().optional(),
17026
+ waived_by: z.string().nullable().optional(),
17027
+ verified_by_user_id: z.string().nullable().optional()
16977
17028
  });
16978
17029
  const zIssueTestLinkBulkOperationDto = z.object({
16979
17030
  op: z.enum([
@@ -17024,12 +17075,24 @@ const zIssueTestLinkFindAllV1Data = z.object({
17024
17075
  "filter.origin_run_result_id": z.array(z.string()).optional(),
17025
17076
  "filter.latest_run_result_id": z.array(z.string()).optional(),
17026
17077
  "filter.verified_at": z.array(z.string()).optional(),
17078
+ "filter.gate_slot": z.array(z.string()).optional(),
17079
+ "filter.gate_content_hash": z.array(z.string()).optional(),
17080
+ "filter.gate_drifted": z.array(z.string()).optional(),
17081
+ "filter.required": z.array(z.string()).optional(),
17082
+ "filter.required_override": z.array(z.string()).optional(),
17083
+ "filter.waived_reason": z.array(z.string()).optional(),
17084
+ "filter.waived_at": z.array(z.string()).optional(),
17085
+ "filter.last_attempt_at": z.array(z.string()).optional(),
17086
+ "filter.last_executor_type": z.array(z.string()).optional(),
17027
17087
  "filter.issue_id": z.array(z.string()).optional(),
17028
17088
  "filter.test_id": z.array(z.string()).optional(),
17029
17089
  "filter.automation_test_id": z.array(z.string()).optional(),
17030
17090
  "filter.created_by_user_id": z.array(z.string()).optional(),
17031
17091
  "filter.origin_automation_run_result_id": z.array(z.string()).optional(),
17032
17092
  "filter.latest_automation_run_result_id": z.array(z.string()).optional(),
17093
+ "filter.gate_definition_id": z.array(z.string()).optional(),
17094
+ "filter.waived_by": z.array(z.string()).optional(),
17095
+ "filter.verified_by_user_id": z.array(z.string()).optional(),
17033
17096
  "filter.created_at": z.array(z.string()).optional(),
17034
17097
  "filter.updated_at": z.array(z.string()).optional(),
17035
17098
  "sortBy": z.array(z.enum([
@@ -17047,6 +17110,18 @@ const zIssueTestLinkFindAllV1Data = z.object({
17047
17110
  "verified_by:DESC",
17048
17111
  "verified_at:ASC",
17049
17112
  "verified_at:DESC",
17113
+ "gate_slot:ASC",
17114
+ "gate_slot:DESC",
17115
+ "gate_content_hash:ASC",
17116
+ "gate_content_hash:DESC",
17117
+ "waived_reason:ASC",
17118
+ "waived_reason:DESC",
17119
+ "waived_at:ASC",
17120
+ "waived_at:DESC",
17121
+ "last_attempt_at:ASC",
17122
+ "last_attempt_at:DESC",
17123
+ "last_executor_type:ASC",
17124
+ "last_executor_type:DESC",
17050
17125
  "test_id:ASC",
17051
17126
  "test_id:DESC",
17052
17127
  "automation_test_id:ASC",
@@ -17061,6 +17136,12 @@ const zIssueTestLinkFindAllV1Data = z.object({
17061
17136
  "origin_automation_run_result_id:DESC",
17062
17137
  "latest_automation_run_result_id:ASC",
17063
17138
  "latest_automation_run_result_id:DESC",
17139
+ "gate_definition_id:ASC",
17140
+ "gate_definition_id:DESC",
17141
+ "waived_by:ASC",
17142
+ "waived_by:DESC",
17143
+ "verified_by_user_id:ASC",
17144
+ "verified_by_user_id:DESC",
17064
17145
  "created_at:ASC",
17065
17146
  "created_at:DESC",
17066
17147
  "updated_at:ASC",
@@ -28110,6 +28191,7 @@ const zTestResponseDto = z.object({
28110
28191
  folder_id: z.string().nullable().optional().describe(""),
28111
28192
  sequence: z.string().nullable().optional().describe(""),
28112
28193
  spoke_key: z.string().nullable().optional().describe(""),
28194
+ content_hash: z.string().nullable().optional().describe(""),
28113
28195
  team_id: z.string().optional().describe(""),
28114
28196
  created_at: z.unknown().describe(""),
28115
28197
  updated_at: z.unknown().describe(""),
@@ -28180,8 +28262,10 @@ const zCreateTestDto = z.object({
28180
28262
  folder_id: z.string().optional(),
28181
28263
  sequence: z.string().nullable().optional().describe(""),
28182
28264
  spoke_key: z.string().nullable().optional().describe(""),
28265
+ content_hash: z.string().nullable().optional().describe(""),
28183
28266
  team_id: z.string().optional().describe(""),
28184
28267
  steps: z.array(z.object({
28268
+ type: z.enum(["guided"]).optional(),
28185
28269
  step: z.string().optional(),
28186
28270
  expected_result: z.string().optional(),
28187
28271
  sequence: z.string().optional(),
@@ -28224,27 +28308,37 @@ const zUpdateTestDto = z.object({
28224
28308
  ]).optional(),
28225
28309
  data_table: z.object({ rows: z.array(z.array(z.string())) }).optional()
28226
28310
  })).optional(),
28227
- steps: z.array(z.union([z.object({
28228
- id: z.string().optional(),
28229
- method: z.string(),
28230
- expected_result: z.string().optional(),
28231
- shared_step_id: z.string().optional(),
28232
- keyword: z.enum([
28233
- "Given",
28234
- "When",
28235
- "Then",
28236
- "And",
28237
- "But",
28238
- "*"
28239
- ]).optional(),
28240
- data_table: z.object({ rows: z.array(z.array(z.string())) }).optional()
28241
- }), z.object({
28242
- id: z.string().optional(),
28243
- type: z.string(),
28244
- params: z.record(z.string(), z.unknown()).optional(),
28245
- expected_result: z.string().optional(),
28246
- layer: z.string().optional()
28247
- })])).optional()
28311
+ steps: z.array(z.union([
28312
+ z.object({
28313
+ id: z.string().optional(),
28314
+ type: z.enum(["guided"]),
28315
+ step: z.string(),
28316
+ expected_result: z.string().optional(),
28317
+ result: z.string().optional()
28318
+ }),
28319
+ z.object({
28320
+ id: z.string().optional(),
28321
+ method: z.string(),
28322
+ expected_result: z.string().optional(),
28323
+ shared_step_id: z.string().optional(),
28324
+ keyword: z.enum([
28325
+ "Given",
28326
+ "When",
28327
+ "Then",
28328
+ "And",
28329
+ "But",
28330
+ "*"
28331
+ ]).optional(),
28332
+ data_table: z.object({ rows: z.array(z.array(z.string())) }).optional()
28333
+ }),
28334
+ z.object({
28335
+ id: z.string().optional(),
28336
+ type: z.string(),
28337
+ params: z.record(z.string(), z.unknown()).optional(),
28338
+ expected_result: z.string().optional(),
28339
+ layer: z.string().optional()
28340
+ })
28341
+ ])).optional()
28248
28342
  }).optional(),
28249
28343
  priority: z.number().optional(),
28250
28344
  case_type_id: z.string().nullable().optional(),
@@ -1,5 +1,5 @@
1
1
  import "./env-CHeKHu5S.js";
2
- import { authGetSitesV1, configureClient } from "./sdk-client-pfFJmNaX.js";
2
+ import { authGetSitesV1, configureClient } from "./sdk-client-BjT8rMhF.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-pfFJmNaX.js";
2
+ import { authGetProfileV1, configureClient } from "./sdk-client-BjT8rMhF.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.16",
3
+ "version": "0.9.18",
4
4
  "description": "The command-line interface for Levr",
5
5
  "type": "module",
6
6
  "license": "MIT",