@levr-one/cli 0.9.17 → 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.
- package/dist/{addHandler-BlZQkDtP.js → addHandler-D6OI7Mx7.js} +22 -40
- package/dist/cli.js +8 -8
- package/dist/{importHandler-BOeatReV.js → importHandler-Cj7roVu2.js} +2 -2
- package/dist/{listHandler-BmScgMlI.js → listHandler-zitcaXoW.js} +1 -1
- package/dist/{loginHandler-CubmtHgD.js → loginHandler-B3pMuG5a.js} +2 -2
- package/dist/{pushHandler-C_aoYn2d.js → pushHandler-CSJ9QIfr.js} +2 -2
- package/dist/{resolve-workspace-DLUMQYp4.js → resolve-workspace-B5UavWiC.js} +1 -1
- package/dist/{sdk-client-DNDMNs0m.js → sdk-client-BjT8rMhF.js} +1 -2
- package/dist/{selectHandler-Cx7960Rx.js → selectHandler-CY0ilgYD.js} +1 -1
- package/dist/{statusHandler-tNFnC0fb.js → statusHandler-DWGj7Faz.js} +1 -1
- package/package.json +1 -1
|
@@ -155,12 +155,15 @@ const CLAUDE_CODE_LOCATIONS = [
|
|
|
155
155
|
/**
|
|
156
156
|
* The catalog. Order is presentation order (most common first).
|
|
157
157
|
*
|
|
158
|
-
*
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
*
|
|
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: "
|
|
588
|
-
transport: "
|
|
582
|
+
serverPropertyName: "servers",
|
|
583
|
+
transport: "native-http",
|
|
589
584
|
docsUrl: "https://code.visualstudio.com/docs/copilot/chat/mcp-servers",
|
|
590
|
-
|
|
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 ||
|
|
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
|
|
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
|
|
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
|
|
1962
|
-
|
|
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
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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.
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
2
|
+
import { configureClient } from "./sdk-client-BjT8rMhF.js";
|
|
3
3
|
import "./workspace-store-DDOxnut1.js";
|
|
4
|
-
import { autoSelectWorkspace } from "./resolve-workspace-
|
|
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-
|
|
2
|
+
import { client, configureClient, uploadAutomationIngest, uploadImport } from "./sdk-client-BjT8rMhF.js";
|
|
3
3
|
import "./workspace-store-DDOxnut1.js";
|
|
4
|
-
import { resolveWorkspace } from "./resolve-workspace-
|
|
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";
|
|
@@ -12913,8 +12913,7 @@ const zFirstRunStatusDto = z.object({
|
|
|
12913
12913
|
label: z.string(),
|
|
12914
12914
|
installKind: z.enum(["config-file", "cli-command"]),
|
|
12915
12915
|
snippet: z.string(),
|
|
12916
|
-
docsUrl: z.string()
|
|
12917
|
-
comingSoon: z.boolean()
|
|
12916
|
+
docsUrl: z.string()
|
|
12918
12917
|
}))
|
|
12919
12918
|
});
|
|
12920
12919
|
const zFirstRunGetStatusV1Data = z.object({ url: z.literal("/v1/first-run/mcp") });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./env-CHeKHu5S.js";
|
|
2
|
-
import { authGetSitesV1, configureClient } from "./sdk-client-
|
|
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-
|
|
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
|
|