@indigoai-us/hq-cli 5.300.0 → 5.302.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/CHANGELOG.md +42 -0
- package/assets/scaffold/core/scripts/rebuild-projects-index.sh +99 -12
- package/assets/scaffold/core/scripts/token-usage-report.sh +9 -0
- package/dist/command-catalog.generated.d.ts +32 -3
- package/dist/command-catalog.generated.js +39 -3
- package/dist/commands/__fixtures__/access-vault.d.ts +2 -0
- package/dist/commands/__fixtures__/access-vault.js +1 -1
- package/dist/commands/access.d.ts +2 -1
- package/dist/commands/access.js +58 -49
- package/dist/commands/bot.js +1 -0
- package/dist/commands/cloud-provision.js +51 -2
- package/dist/commands/core-checkpoint.js +1 -0
- package/dist/commands/core-company-index-scope-flag.d.ts +3 -0
- package/dist/commands/core-company-index-scope-flag.js +6 -0
- package/dist/commands/core-handoff-fast.js +1 -0
- package/dist/commands/core-handoff.js +2 -0
- package/dist/commands/core-job-native-utils.d.ts +6 -0
- package/dist/commands/core-job-native-utils.js +80 -0
- package/dist/commands/core-job-native.d.ts +2 -4
- package/dist/commands/core-job-native.js +6 -10
- package/dist/commands/core-job-notify-native.d.ts +36 -0
- package/dist/commands/core-job-notify-native.js +359 -0
- package/dist/commands/core-job-remediate-native.d.ts +26 -0
- package/dist/commands/core-job-remediate-native.js +374 -0
- package/dist/commands/core.js +26 -8
- package/dist/commands/deploy-comments.js +5 -2
- package/dist/commands/files.js +31 -14
- package/dist/commands/integrations-api.d.ts +6 -6
- package/dist/commands/integrations-api.js +4 -13
- package/dist/commands/integrations-connect.d.ts +3 -0
- package/dist/commands/integrations-connect.js +21 -2
- package/dist/commands/integrations-manage.js +1 -4
- package/dist/commands/lanes-message.js +43 -5
- package/dist/commands/lanes-questions.d.ts +4 -2
- package/dist/commands/lanes-questions.js +123 -2
- package/dist/commands/lanes-resume.js +25 -4
- package/dist/commands/lanes-shared.d.ts +15 -1
- package/dist/commands/lanes-watch.js +5 -1
- package/dist/commands/lanes.d.ts +2 -0
- package/dist/commands/lanes.js +92 -9
- package/dist/commands/meetings.js +35 -16
- package/dist/commands/monitor.js +17 -2
- package/dist/commands/report.js +5 -2
- package/dist/commands/rescue.d.ts +4 -0
- package/dist/commands/rescue.js +27 -17
- package/dist/commands/safe-extract.d.ts +4 -4
- package/dist/commands/safe-extract.js +6 -7
- package/dist/lib/agent-kit/fallback.d.ts +1 -0
- package/dist/lib/agent-kit/fallback.js +1 -0
- package/dist/lib/bot/daemon.d.ts +5 -1
- package/dist/lib/bot/daemon.js +4 -4
- package/dist/lib/core-utils/soft-timeout.js +1 -1
- package/dist/lib/core-utils/token-usage-report.js +17 -3
- package/dist/lib/deploy-apps.d.ts +13 -0
- package/dist/lib/deploy-apps.js +24 -0
- package/dist/lib/index-render/companies.d.ts +4 -1
- package/dist/lib/index-render/companies.js +66 -3
- package/dist/lib/index-render/index.d.ts +1 -0
- package/dist/lib/index-render/index.js +2 -1
- package/dist/lib/index-render/projects.js +82 -5
- package/dist/lib/index-render/shared.d.ts +1 -1
- package/dist/lib/index-render/shared.js +4 -2
- package/dist/lib/lanes/delivery.d.ts +7 -3
- package/dist/lib/lanes/delivery.js +18 -8
- package/dist/lib/lanes/index.d.ts +1 -1
- package/dist/lib/lanes/keep-alive.d.ts +13 -3
- package/dist/lib/lanes/keep-alive.js +29 -5
- package/dist/lib/lanes/outpost-dispatch.d.ts +5 -0
- package/dist/lib/lanes/outpost-dispatch.js +12 -0
- package/dist/lib/lanes/reconcile.d.ts +1 -0
- package/dist/lib/lanes/reconcile.js +358 -38
- package/dist/lib/lanes/spawn.d.ts +1 -0
- package/dist/lib/lanes/spawn.js +20 -10
- package/dist/lib/lanes/store.js +24 -0
- package/dist/lib/lanes/story-ledger.d.ts +2 -0
- package/dist/lib/lanes/story-ledger.js +8 -0
- package/dist/lib/lanes/types.d.ts +26 -4
- package/dist/lib/lanes/types.js +33 -1
- package/dist/lib/lanes/watch.d.ts +1 -0
- package/dist/lib/lanes/watch.js +19 -6
- package/dist/lib/lanes/watcher.js +139 -9
- package/dist/lib/mesh/live/daemon/mqtt-events.d.ts +7 -0
- package/dist/lib/mesh/live/daemon/mqtt-events.js +2 -0
- package/dist/lib/mesh/live/daemon/mqtt-events.test-d.d.ts +2 -0
- package/dist/lib/mesh/live/daemon/mqtt-events.test-d.js +10 -0
- package/dist/lib/mesh/live/daemon/presence.d.ts +2 -2
- package/dist/lib/mesh/live/daemon/run.js +36 -2
- package/dist/lib/mesh/live/daemon/work-subscribe.d.ts +2 -2
- package/dist/lib/search-index/background.d.ts +1 -0
- package/dist/lib/search-index/background.js +1 -0
- package/dist/utils/self-update.js +51 -4
- package/dist/utils/staged-npm-install.d.ts +16 -0
- package/dist/utils/staged-npm-install.js +264 -0
- package/dist/utils/update-command-supervisor.cjs +54 -1
- package/dist/utils/version-gate.d.ts +8 -0
- package/dist/utils/version-gate.js +83 -16
- package/package.json +2 -2
- package/dist/lib/install-path-compatibility-flag.d.ts +0 -9
- package/dist/lib/install-path-compatibility-flag.js +0 -12
|
@@ -28,7 +28,6 @@
|
|
|
28
28
|
* to silence both check + gate).
|
|
29
29
|
*/
|
|
30
30
|
import { spawnSync } from "node:child_process";
|
|
31
|
-
import { installPathCompatibilityEnabled } from "../lib/install-path-compatibility-flag.js";
|
|
32
31
|
import { buildSpawnPlan, quoteForWindowsShell } from "./windows-spawn.js";
|
|
33
32
|
import { accessSync, closeSync, constants as fsConstants, copyFileSync, existsSync, mkdtempSync, openSync, readdirSync, realpathSync, readFileSync, rmSync, } from "node:fs";
|
|
34
33
|
import os from "node:os";
|
|
@@ -106,8 +105,7 @@ function findPackageRootForExecutable(bin) {
|
|
|
106
105
|
path.join(storeRoot, "node_modules", ...packageSegments),
|
|
107
106
|
];
|
|
108
107
|
// pnpm v11 adds a hash between its global store version and node_modules.
|
|
109
|
-
// Its `vN` layout
|
|
110
|
-
// PNPM_HOME itself authorizes the global root via isPnpmManagedPackageDir.
|
|
108
|
+
// Its documented `vN` global layout is recognized unconditionally below.
|
|
111
109
|
if (/^v\d+$/.test(storeVersion)) {
|
|
112
110
|
try {
|
|
113
111
|
for (const hash of readdirSync(storeRoot)) {
|
|
@@ -122,7 +120,7 @@ function findPackageRootForExecutable(bin) {
|
|
|
122
120
|
const packageRoot = findCliPackageRoot(candidate);
|
|
123
121
|
if (packageRoot &&
|
|
124
122
|
samePath(packageRoot, candidate) &&
|
|
125
|
-
isPnpmManagedPackageDir(packageRoot,
|
|
123
|
+
isPnpmManagedPackageDir(packageRoot, true)) {
|
|
126
124
|
return packageRoot;
|
|
127
125
|
}
|
|
128
126
|
}
|
|
@@ -145,7 +143,7 @@ function samePath(left, right) {
|
|
|
145
143
|
: a === b;
|
|
146
144
|
}
|
|
147
145
|
function globalInstallManagerForPath(bin, packageRoot) {
|
|
148
|
-
if (isPnpmManagedPackageDir(packageRoot,
|
|
146
|
+
if (isPnpmManagedPackageDir(packageRoot, true)) {
|
|
149
147
|
return "pnpm";
|
|
150
148
|
}
|
|
151
149
|
if (isBunManagedPackageDir(packageRoot))
|
|
@@ -209,13 +207,13 @@ function pnpmHomeGlobalRoot() {
|
|
|
209
207
|
* i.e. the gate would re-fire and re-install globally on every subsequent run.
|
|
210
208
|
* Those layouts fall through to the ordinary npm-prefix/manual handling.
|
|
211
209
|
*/
|
|
212
|
-
export function isPnpmManagedPackageDir(pkgDir, acceptVersionPrefixedGlobalDir =
|
|
210
|
+
export function isPnpmManagedPackageDir(pkgDir, acceptVersionPrefixedGlobalDir = true) {
|
|
213
211
|
const normalized = pkgDir.replace(/\\/g, "/").replace(/\/+$/, "");
|
|
214
212
|
const segments = normalized.split("/").filter(Boolean);
|
|
215
213
|
// pnpm through v10 uses `global/<digits>`; pnpm v11+ uses
|
|
216
|
-
// `global/v<major>`.
|
|
217
|
-
//
|
|
218
|
-
//
|
|
214
|
+
// `global/v<major>`. Recognize both documented layouts, and require a
|
|
215
|
+
// version segment so `global/next` or a `v11` directory elsewhere cannot be
|
|
216
|
+
// mistaken for a global install.
|
|
219
217
|
for (let i = 0; i < segments.length - 1; i += 1) {
|
|
220
218
|
if (segments[i] !== "global")
|
|
221
219
|
continue;
|
|
@@ -355,7 +353,7 @@ export function resolveRunningInstall() {
|
|
|
355
353
|
const packageRoot = findRunningPackageRoot();
|
|
356
354
|
if (!packageRoot)
|
|
357
355
|
return { manager: "npm", prefix: null, packageRoot: null };
|
|
358
|
-
if (isPnpmManagedPackageDir(packageRoot,
|
|
356
|
+
if (isPnpmManagedPackageDir(packageRoot, true)) {
|
|
359
357
|
return { manager: "pnpm", prefix: null, packageRoot };
|
|
360
358
|
}
|
|
361
359
|
if (isBunManagedPackageDir(packageRoot)) {
|
|
@@ -639,10 +637,51 @@ export { buildSpawnPlan, quoteForWindowsShell };
|
|
|
639
637
|
* protection silently disappearing.
|
|
640
638
|
*/
|
|
641
639
|
export function inOwnProcessGroup(options) {
|
|
642
|
-
return { ...options, detached: true };
|
|
640
|
+
return { ...options, detached: true, windowsHide: true };
|
|
643
641
|
}
|
|
644
642
|
/** Tail of captured installer stderr kept to explain a failure. */
|
|
645
643
|
const INSTALL_DETAIL_MAX_CHARS = 400;
|
|
644
|
+
const KNOWN_NPM_UPDATE_ERROR_CODES = new Set([
|
|
645
|
+
"E404",
|
|
646
|
+
"EACCES",
|
|
647
|
+
"EAI_AGAIN",
|
|
648
|
+
"ECONNREFUSED",
|
|
649
|
+
"ECONNRESET",
|
|
650
|
+
"ENOTFOUND",
|
|
651
|
+
"EPERM",
|
|
652
|
+
"ETARGET",
|
|
653
|
+
"ETIMEDOUT",
|
|
654
|
+
]);
|
|
655
|
+
function knownNpmUpdateErrorCode(stderr) {
|
|
656
|
+
const escape = String.fromCharCode(0x1b);
|
|
657
|
+
const plainStderr = stderr.replace(new RegExp(`${escape}\\[[0-9;]*m`, "g"), "");
|
|
658
|
+
const match = /^[ \t]*npm[ \t]+(?:ERR!|error)[ \t]+code[ \t]+([A-Z0-9_]{1,32})[ \t]*$/im.exec(plainStderr);
|
|
659
|
+
const code = match?.[1]?.toUpperCase();
|
|
660
|
+
return code && KNOWN_NPM_UPDATE_ERROR_CODES.has(code) ? code : undefined;
|
|
661
|
+
}
|
|
662
|
+
function readKnownNpmDiagnosticCode(filename) {
|
|
663
|
+
if (!existsSync(filename))
|
|
664
|
+
return undefined;
|
|
665
|
+
try {
|
|
666
|
+
const contents = readFileSync(filename, "utf-8").trim();
|
|
667
|
+
if (KNOWN_NPM_UPDATE_ERROR_CODES.has(contents))
|
|
668
|
+
return contents;
|
|
669
|
+
return knownNpmUpdateErrorCode(contents);
|
|
670
|
+
}
|
|
671
|
+
catch (error) {
|
|
672
|
+
const code = error &&
|
|
673
|
+
typeof error === "object" &&
|
|
674
|
+
"code" in error &&
|
|
675
|
+
typeof error.code === "string" &&
|
|
676
|
+
/^[A-Z0-9_]{1,32}$/.test(error.code)
|
|
677
|
+
? error.code
|
|
678
|
+
: error instanceof Error
|
|
679
|
+
? "Error"
|
|
680
|
+
: "UnknownError";
|
|
681
|
+
console.error(chalk.yellow(`Could not read update diagnostic output (${code}).`));
|
|
682
|
+
return undefined;
|
|
683
|
+
}
|
|
684
|
+
}
|
|
646
685
|
/** Give a package-manager update ample time without letting it wedge every CLI call. */
|
|
647
686
|
const DEFAULT_UPDATE_TIMEOUT_MS = 30 * 60 * 1_000;
|
|
648
687
|
/** Node clamps longer timer delays to 1ms, so accepting them would invert the deadline. */
|
|
@@ -753,9 +792,12 @@ export function openInstallOutput(verbose, isTty = process.stdout.isTTY === true
|
|
|
753
792
|
const dir = mkdtempSync(path.join(os.tmpdir(), "hq-cli-install-"));
|
|
754
793
|
const timeoutMarker = path.join(dir, "timed-out");
|
|
755
794
|
const errorMarker = path.join(dir, "spawn-error.json");
|
|
795
|
+
const diagnosticMarker = path.join(dir, "npm-error-code");
|
|
756
796
|
return {
|
|
757
797
|
stdio: ["ignore", "inherit", "inherit"],
|
|
758
798
|
stderrTail: () => "",
|
|
799
|
+
diagnosticCode: () => readKnownNpmDiagnosticCode(diagnosticMarker),
|
|
800
|
+
diagnosticMarker,
|
|
759
801
|
timeoutMarker,
|
|
760
802
|
errorMarker,
|
|
761
803
|
timedOut: () => existsSync(timeoutMarker),
|
|
@@ -786,6 +828,7 @@ export function openInstallOutput(verbose, isTty = process.stdout.isTTY === true
|
|
|
786
828
|
return "";
|
|
787
829
|
}
|
|
788
830
|
},
|
|
831
|
+
diagnosticCode: () => readKnownNpmDiagnosticCode(errPath),
|
|
789
832
|
timeoutMarker: timeoutPath,
|
|
790
833
|
errorMarker: errorPath,
|
|
791
834
|
timedOut: () => existsSync(timeoutPath),
|
|
@@ -827,6 +870,7 @@ export function runSupervisedUpdateCommand(cmd, args, output, env) {
|
|
|
827
870
|
reapMs: UPDATE_REAP_GRACE_MS,
|
|
828
871
|
timeoutMarker: output.timeoutMarker,
|
|
829
872
|
errorMarker: output.errorMarker,
|
|
873
|
+
diagnosticMarker: output.diagnosticMarker,
|
|
830
874
|
}),
|
|
831
875
|
], inOwnProcessGroup({
|
|
832
876
|
stdio: output.stdio,
|
|
@@ -863,6 +907,8 @@ export function runSupervisedUpdateCommand(cmd, args, output, env) {
|
|
|
863
907
|
const captured = output.stderrTail();
|
|
864
908
|
return {
|
|
865
909
|
ok: false,
|
|
910
|
+
diagnosticCode: output.diagnosticCode(),
|
|
911
|
+
failureKind: "package_manager_exit",
|
|
866
912
|
detail: captured || `exit ${result.status ?? "signal"}`,
|
|
867
913
|
};
|
|
868
914
|
}
|
|
@@ -1214,6 +1260,7 @@ function attemptRequiredUpdate(decision, deps, install) {
|
|
|
1214
1260
|
const command = decision.updateCommand;
|
|
1215
1261
|
const isManagedOutsideNpm = install.manager !== "npm";
|
|
1216
1262
|
const prefix = install.prefix;
|
|
1263
|
+
const stagedNpmPrefix = Boolean(!isManagedOutsideNpm && prefix && /\s/.test(prefix));
|
|
1217
1264
|
const runner = deps.runner ?? runUpdateCommand;
|
|
1218
1265
|
// Resolve the concrete install argv once so the sudo fallback below can re-run
|
|
1219
1266
|
// the EXACT same command under elevation.
|
|
@@ -1250,8 +1297,20 @@ function attemptRequiredUpdate(decision, deps, install) {
|
|
|
1250
1297
|
}
|
|
1251
1298
|
else if (prefix) {
|
|
1252
1299
|
console.error(chalk.dim(` Installing into npm prefix: ${prefix}`));
|
|
1253
|
-
|
|
1254
|
-
|
|
1300
|
+
if (stagedNpmPrefix) {
|
|
1301
|
+
console.error(chalk.dim(" Building in a space-free temporary prefix before activation."));
|
|
1302
|
+
const installStaged = deps.installNpmPackageStaged;
|
|
1303
|
+
if (!installStaged) {
|
|
1304
|
+
result = { ok: false, detail: "staged npm installer was not loaded" };
|
|
1305
|
+
}
|
|
1306
|
+
else {
|
|
1307
|
+
result = installStaged(prefix, LATEST_PACKAGE_SPEC, runner);
|
|
1308
|
+
}
|
|
1309
|
+
}
|
|
1310
|
+
else {
|
|
1311
|
+
console.error(chalk.dim(` Running: npm ${primaryArgs.join(" ")}`));
|
|
1312
|
+
result = performUpdateCommand("npm", primaryArgs, runner);
|
|
1313
|
+
}
|
|
1255
1314
|
}
|
|
1256
1315
|
else {
|
|
1257
1316
|
console.error(chalk.dim(` Running: ${command}`));
|
|
@@ -1267,7 +1326,7 @@ function attemptRequiredUpdate(decision, deps, install) {
|
|
|
1267
1326
|
// artifacts and retry the install ONCE. Guarded on `cleaned.length > 0` so a
|
|
1268
1327
|
// plain EACCES on an otherwise-healthy prefix falls straight through to the
|
|
1269
1328
|
// sudo retry below without a redundant reinstall attempt.
|
|
1270
|
-
if (!result.ok && result.code !== "ETIMEDOUT" && prefix) {
|
|
1329
|
+
if (!result.ok && result.code !== "ETIMEDOUT" && prefix && !stagedNpmPrefix) {
|
|
1271
1330
|
const cleaner = deps.cleanStale ?? cleanStalePartialInstall;
|
|
1272
1331
|
const cleaned = cleaner(prefix);
|
|
1273
1332
|
if (cleaned.length > 0) {
|
|
@@ -1292,7 +1351,8 @@ function attemptRequiredUpdate(decision, deps, install) {
|
|
|
1292
1351
|
!result.ok &&
|
|
1293
1352
|
result.code !== "ETIMEDOUT" &&
|
|
1294
1353
|
primaryCmd &&
|
|
1295
|
-
!isManagedOutsideNpm
|
|
1354
|
+
!isManagedOutsideNpm &&
|
|
1355
|
+
!stagedNpmPrefix) {
|
|
1296
1356
|
console.error(chalk.dim(` Update failed unprivileged; retrying with: sudo -n ${primaryCmd} ${primaryArgs.join(" ")}`));
|
|
1297
1357
|
const sudoResult = performUpdateCommand("sudo", ["-n", primaryCmd, ...primaryArgs], runner);
|
|
1298
1358
|
if (sudoResult.ok)
|
|
@@ -1358,9 +1418,16 @@ export async function enforceVersionGate(onUpdateRecommended, options = {}) {
|
|
|
1358
1418
|
// neither downstream path repeats it.
|
|
1359
1419
|
const install = resolveRunningInstall();
|
|
1360
1420
|
if (decision.updateRequired) {
|
|
1421
|
+
// Load the staged installer only for the uncommon spaced npm-prefix path.
|
|
1422
|
+
// The version gate is imported during every CLI startup, including native
|
|
1423
|
+
// fast routes, so eagerly importing this filesystem-heavy module adds cost
|
|
1424
|
+
// to commands that never update.
|
|
1425
|
+
const installNpmPackageStaged = install.manager === "npm" && install.prefix && /\s/.test(install.prefix)
|
|
1426
|
+
? (await import("./staged-npm-install.js")).installNpmPackageStaged
|
|
1427
|
+
: undefined;
|
|
1361
1428
|
// Exits the process, EXCEPT when another updater holds the shared update
|
|
1362
1429
|
// lock — then it returns and the CLI continues on the current version.
|
|
1363
|
-
enforceUpdateRequired(decision, { resolveInstall: () => install });
|
|
1430
|
+
enforceUpdateRequired(decision, { resolveInstall: () => install, installNpmPackageStaged });
|
|
1364
1431
|
return "continue";
|
|
1365
1432
|
}
|
|
1366
1433
|
if (decision.updateRecommended) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@indigoai-us/hq-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.302.0",
|
|
4
4
|
"description": "HQ by Indigo management CLI — modules and cloud sync",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"build": "node scripts/generate-dsn.mjs && node scripts/build-flag-registry-worker.mjs && tsc && node scripts/generate-command-catalog.mjs --check && node scripts/copy-schemas.mjs && node scripts/chmod-bins.mjs",
|
|
26
26
|
"prepublishOnly": "npm run build",
|
|
27
27
|
"pretypecheck": "node scripts/generate-dsn.mjs && node scripts/build-flag-registry-worker.mjs",
|
|
28
|
-
"typecheck": "tsc --noEmit",
|
|
28
|
+
"typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.typetest.json",
|
|
29
29
|
"gen:scan-golden": "node scripts/generate-scan-packages-table.mjs > src/utils/__fixtures__/scan-packages.generated-block.sh",
|
|
30
30
|
"gen:command-catalog": "tsc && node scripts/generate-command-catalog.mjs",
|
|
31
31
|
"lint": "eslint .",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export declare const INSTALL_PATH_COMPATIBILITY_FLAG = "cli.install-path-compatibility";
|
|
2
|
-
export declare const INSTALL_PATH_COMPATIBILITY_FALLBACK = false;
|
|
3
|
-
/**
|
|
4
|
-
* Read the default-off rollout flag from the process snapshot. Missing,
|
|
5
|
-
* unreadable, or not-yet-loaded registry state keeps the compatibility fixes
|
|
6
|
-
* disabled until the operator enables a canary.
|
|
7
|
-
*/
|
|
8
|
-
export declare function installPathCompatibilityEnabled(): boolean;
|
|
9
|
-
//# sourceMappingURL=install-path-compatibility-flag.d.ts.map
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { resolveProcessFlagGate } from "./flag-registry.js";
|
|
2
|
-
export const INSTALL_PATH_COMPATIBILITY_FLAG = "cli.install-path-compatibility";
|
|
3
|
-
export const INSTALL_PATH_COMPATIBILITY_FALLBACK = false;
|
|
4
|
-
/**
|
|
5
|
-
* Read the default-off rollout flag from the process snapshot. Missing,
|
|
6
|
-
* unreadable, or not-yet-loaded registry state keeps the compatibility fixes
|
|
7
|
-
* disabled until the operator enables a canary.
|
|
8
|
-
*/
|
|
9
|
-
export function installPathCompatibilityEnabled() {
|
|
10
|
-
return resolveProcessFlagGate(INSTALL_PATH_COMPATIBILITY_FLAG, {}, () => INSTALL_PATH_COMPATIBILITY_FALLBACK);
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=install-path-compatibility-flag.js.map
|