coding-friend-cli 1.40.2 → 1.40.4

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.
Files changed (26) hide show
  1. package/dist/{chunk-CZW36H3D.js → chunk-BQ4E66ZV.js} +1 -1
  2. package/dist/{chunk-KT5RLAFH.js → chunk-DVWCO7K4.js} +4 -4
  3. package/dist/{chunk-TFF47F7P.js → chunk-HEVK3OYL.js} +1 -1
  4. package/dist/{chunk-4FQACYCV.js → chunk-LZPCZAGZ.js} +34 -8
  5. package/dist/{chunk-KG6HYBGD.js → chunk-SKEWZ2ET.js} +74 -6
  6. package/dist/{chunk-Z5XTSF7L.js → chunk-XLB2UAKL.js} +40 -2
  7. package/dist/{chunk-CGZNFAOB.js → chunk-ZEOWTLWI.js} +7 -1
  8. package/dist/{clean-S57BNTWM.js → clean-VD6CFY4C.js} +1 -1
  9. package/dist/{config-A4JIINZK.js → config-7LMHDOGW.js} +5 -5
  10. package/dist/{dev-E3EHPMHE.js → dev-GCVXE5TW.js} +5 -17
  11. package/dist/{disable-DCGVIHKG.js → disable-CN6GAG4I.js} +1 -1
  12. package/dist/{enable-YYWJDOYB.js → enable-MRLKTJRB.js} +1 -1
  13. package/dist/{host-7XKH5HLB.js → host-KGUAFN4Y.js} +1 -1
  14. package/dist/index.js +33 -33
  15. package/dist/{init-ORERNRR7.js → init-GL353JQR.js} +362 -267
  16. package/dist/{install-MS7SS2L5.js → install-3APP3HXQ.js} +3 -3
  17. package/dist/{learn-Q5YHKHQH.js → learn-ZNJ54LRO.js} +1 -1
  18. package/dist/{mcp-XGWHYBEN.js → mcp-TS7MOQ3A.js} +5 -5
  19. package/dist/{mcp-serve-7RWXY3J4.js → mcp-serve-D6BHVTCY.js} +1 -1
  20. package/dist/{memory-KNKGLCVG.js → memory-NAFLQ6NN.js} +5 -5
  21. package/dist/{permission-DDBMBFJV.js → permission-TORAVB2Y.js} +3 -3
  22. package/dist/{session-WU5344ZD.js → session-AOC37YNH.js} +1 -1
  23. package/dist/{status-WICNVD7B.js → status-Z7DB7Y2S.js} +6 -6
  24. package/dist/{uninstall-6QKNGLKK.js → uninstall-S5FSXBYX.js} +2 -2
  25. package/dist/{update-6YMGKFUB.js → update-NHI4DBZL.js} +5 -3
  26. package/package.json +1 -1
@@ -11,7 +11,7 @@ import {
11
11
  askScope,
12
12
  formatScopeLabel,
13
13
  injectBackChoice
14
- } from "./chunk-Z5XTSF7L.js";
14
+ } from "./chunk-XLB2UAKL.js";
15
15
  import {
16
16
  getLibPath
17
17
  } from "./chunk-TN3Y75WG.js";
@@ -2,20 +2,20 @@ import {
2
2
  checkMemoryMcpHealth,
3
3
  printHealthSection,
4
4
  warnStaleMcpJson
5
- } from "./chunk-TFF47F7P.js";
5
+ } from "./chunk-HEVK3OYL.js";
6
6
  import {
7
7
  loadConfig,
8
8
  resolveMemoryDir
9
- } from "./chunk-CGZNFAOB.js";
9
+ } from "./chunk-ZEOWTLWI.js";
10
10
  import {
11
11
  getMemoryMcpStatus,
12
12
  isMemoryMcpRegistered,
13
13
  memoryConfigMenu,
14
14
  registerMemoryMcp
15
- } from "./chunk-CZW36H3D.js";
15
+ } from "./chunk-BQ4E66ZV.js";
16
16
  import {
17
17
  showConfigHint
18
- } from "./chunk-Z5XTSF7L.js";
18
+ } from "./chunk-XLB2UAKL.js";
19
19
  import {
20
20
  getLibPath
21
21
  } from "./chunk-TN3Y75WG.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isMemoryMcpRegistered
3
- } from "./chunk-CZW36H3D.js";
3
+ } from "./chunk-BQ4E66ZV.js";
4
4
  import {
5
5
  readJson
6
6
  } from "./chunk-5UVDWG5L.js";
@@ -9,7 +9,7 @@ import {
9
9
  isMemoryMcpRegistered,
10
10
  registerMemoryMcp,
11
11
  removeMemoryMcpEntry
12
- } from "./chunk-CZW36H3D.js";
12
+ } from "./chunk-BQ4E66ZV.js";
13
13
  import {
14
14
  isPluginInstalled
15
15
  } from "./chunk-SUYE5S2W.js";
@@ -33,7 +33,7 @@ import {
33
33
  import {
34
34
  resolveHostFlags,
35
35
  resolveScope
36
- } from "./chunk-Z5XTSF7L.js";
36
+ } from "./chunk-XLB2UAKL.js";
37
37
  import {
38
38
  detectHostsAvailable
39
39
  } from "./chunk-OBCNHQFA.js";
@@ -55,7 +55,7 @@ import {
55
55
  } from "./chunk-NREZK463.js";
56
56
 
57
57
  // src/commands/update.ts
58
- import { readFileSync } from "fs";
58
+ import { lstatSync, readFileSync } from "fs";
59
59
  import { dirname, join } from "path";
60
60
  import { fileURLToPath } from "url";
61
61
  import chalk from "chalk";
@@ -78,6 +78,31 @@ function getCliVersion() {
78
78
  function getLatestCliVersion() {
79
79
  return run("npm", ["view", "coding-friend-cli", "version"]);
80
80
  }
81
+ function shouldUpdateCli(requested) {
82
+ if (!requested) return false;
83
+ if (isCliGlobalLinked()) {
84
+ log.info(
85
+ "CLI is npm-linked to a local repo \u2014 skipping CLI update. Build it there instead (`npm run dev`)."
86
+ );
87
+ return false;
88
+ }
89
+ return true;
90
+ }
91
+ function isCliGlobalLinked() {
92
+ const prefix = run("npm", ["prefix", "-g"]);
93
+ if (!prefix) return false;
94
+ const modules = "node_modules";
95
+ return [
96
+ join(prefix.trim(), "lib", modules, "coding-friend-cli"),
97
+ join(prefix.trim(), modules, "coding-friend-cli")
98
+ ].some((p) => {
99
+ try {
100
+ return lstatSync(p).isSymbolicLink();
101
+ } catch {
102
+ return false;
103
+ }
104
+ });
105
+ }
81
106
  function getLatestVersion() {
82
107
  let tag = null;
83
108
  tag = run("gh", [
@@ -191,7 +216,6 @@ async function updateCommand(opts) {
191
216
  }
192
217
  async function updateClaudeCommand(opts, mode) {
193
218
  const updateAll = !opts.cli && !opts.plugin && !opts.statusline;
194
- const doCli = (updateAll || !!opts.cli) && !mode?.skipCli;
195
219
  const doPlugin = updateAll || !!opts.plugin;
196
220
  const doStatusline = updateAll || !!opts.statusline;
197
221
  const hasScopeFlag = !!(opts.user || opts.global || opts.project || opts.local);
@@ -205,6 +229,7 @@ async function updateClaudeCommand(opts, mode) {
205
229
  printBanner("\u2728 Coding Friend Update \u2728");
206
230
  console.log();
207
231
  }
232
+ const doCli = shouldUpdateCli((updateAll || !!opts.cli) && !mode?.skipCli);
208
233
  const currentVersion = getInstalledVersion();
209
234
  const latestVersion = getLatestVersion();
210
235
  const statuslineVersion = getStatuslineVersion();
@@ -323,7 +348,7 @@ async function updateClaudeCommand(opts, mode) {
323
348
  }
324
349
  let refreshMemoryAfterUpdate = null;
325
350
  if (doCli) {
326
- ({ refreshMemoryAfterUpdate } = await import("./memory-KNKGLCVG.js"));
351
+ ({ refreshMemoryAfterUpdate } = await import("./memory-NAFLQ6NN.js"));
327
352
  if (!latestCliVersion) {
328
353
  log.warn("Cannot check latest CLI version from npm.");
329
354
  } else {
@@ -383,12 +408,12 @@ async function updateClaudeCommand(opts, mode) {
383
408
  }
384
409
  async function updateCodexCommand(opts, mode) {
385
410
  const updateAll = !opts.cli && !opts.plugin && !opts.statusline;
386
- const doCli = (updateAll || !!opts.cli) && !mode?.skipCli;
387
411
  const doPlugin = updateAll || !!opts.plugin;
388
412
  if (!mode?.skipBanner) {
389
413
  printBanner("\u2728 Coding Friend Codex Update \u2728");
390
414
  console.log();
391
415
  }
416
+ const doCli = shouldUpdateCli((updateAll || !!opts.cli) && !mode?.skipCli);
392
417
  if (doPlugin) {
393
418
  const beforeVersion = getCodexInstalledVersion();
394
419
  console.log(
@@ -484,13 +509,13 @@ function ompUpdateScopes(opts) {
484
509
  }
485
510
  async function updateOmpCommand(opts, mode) {
486
511
  const updateAll = !opts.cli && !opts.plugin && !opts.statusline;
487
- const doCli = (updateAll || !!opts.cli) && !mode?.skipCli;
488
512
  const doPlugin = updateAll || !!opts.plugin;
489
513
  const scopes = ompUpdateScopes(opts);
490
514
  if (!mode?.skipBanner) {
491
515
  printBanner("\u2728 Coding Friend omp Update \u2728");
492
516
  console.log();
493
517
  }
518
+ const doCli = shouldUpdateCli((updateAll || !!opts.cli) && !mode?.skipCli);
494
519
  if (doPlugin) {
495
520
  const cliVersion = getCliVersion();
496
521
  console.log(` CLI ${cliVersion}`);
@@ -554,12 +579,12 @@ function restoreAgyExtraMcpServers(previous) {
554
579
  }
555
580
  async function updateAgyCommand(opts, mode) {
556
581
  const updateAll = !opts.cli && !opts.plugin && !opts.statusline;
557
- const doCli = (updateAll || !!opts.cli) && !mode?.skipCli;
558
582
  const doPlugin = updateAll || !!opts.plugin;
559
583
  if (!mode?.skipBanner) {
560
584
  printBanner("\u2728 Coding Friend Antigravity Update (beta) \u2728");
561
585
  console.log();
562
586
  }
587
+ const doCli = shouldUpdateCli((updateAll || !!opts.cli) && !mode?.skipCli);
563
588
  if (doPlugin) {
564
589
  try {
565
590
  const previousMcp = readAgyMcpConfig();
@@ -617,6 +642,7 @@ export {
617
642
  semverCompare,
618
643
  getCliVersion,
619
644
  getLatestCliVersion,
645
+ isCliGlobalLinked,
620
646
  getLatestVersion,
621
647
  updateCommand
622
648
  };
@@ -6,10 +6,13 @@ import {
6
6
  claudeLocalSettingsPath,
7
7
  claudeProjectSettingsPath,
8
8
  claudeSettingsPath,
9
+ knownMarketplacesPath,
9
10
  pluginCachePath
10
11
  } from "./chunk-IYBIIRH4.js";
11
12
 
12
13
  // src/lib/permissions.ts
14
+ import { join } from "path";
15
+ var MARKETPLACE_NAME = "coding-friend-marketplace";
13
16
  var STATIC_RULES = [
14
17
  // Core Utilities (hooks & infrastructure)
15
18
  {
@@ -90,6 +93,37 @@ var STATIC_RULES = [
90
93
  category: "Core Utilities",
91
94
  recommended: true
92
95
  },
96
+ // The cf-review scope snapshot lives under /tmp/coding-friend/review/<run-id>/.
97
+ // Only the main agent writes it (gather-diff.sh --snapshot-dir); reviewer
98
+ // subagents read it. Without these rules a background reviewer can stall for
99
+ // hours on a write-permission prompt nobody sees.
100
+ // Read/Edit/Write need a DOUBLE leading slash: a single "/" anchors at the
101
+ // settings source dir, not the filesystem root. Bash rules take the literal
102
+ // command text, so mkdir keeps one slash.
103
+ {
104
+ rule: "Bash(mkdir -p /tmp/coding-friend/review/*)",
105
+ description: "[write] Create the review scope snapshot dir \xB7 Used by: /cf-review gather-diff --snapshot-dir",
106
+ category: "Core Utilities",
107
+ recommended: true
108
+ },
109
+ {
110
+ rule: "Read(//tmp/coding-friend/review/**)",
111
+ description: "[read-only] Read the review scope snapshot \xB7 Used by: /cf-review reviewer agents",
112
+ category: "Core Utilities",
113
+ recommended: true
114
+ },
115
+ {
116
+ rule: "Edit(//tmp/coding-friend/review/**)",
117
+ description: "[modify] Update the review scope snapshot \xB7 Used by: /cf-review main agent",
118
+ category: "Core Utilities",
119
+ recommended: true
120
+ },
121
+ {
122
+ rule: "Write(//tmp/coding-friend/review/**)",
123
+ description: "[write] Write the review scope snapshot \xB7 Used by: /cf-review main agent",
124
+ category: "Core Utilities",
125
+ recommended: true
126
+ },
93
127
  // Git Operations
94
128
  {
95
129
  rule: "Bash(git status *)",
@@ -260,7 +294,14 @@ var STATIC_RULES = [
260
294
  recommended: true
261
295
  }
262
296
  ];
263
- function buildPluginScriptRules() {
297
+ function resolveMarketplacePluginRoot() {
298
+ const data = readJson(
299
+ knownMarketplacesPath()
300
+ );
301
+ const installLocation = data?.[MARKETPLACE_NAME]?.installLocation;
302
+ return installLocation ? join(installLocation, "plugin") : null;
303
+ }
304
+ function buildPluginScriptRules(marketplaceRoot = resolveMarketplacePluginRoot()) {
264
305
  const absBase = pluginCachePath();
265
306
  const readBase = process.env.CLAUDE_CONFIG_DIR?.trim() ? absBase : "~/.claude/plugins/cache/coding-friend-marketplace/coding-friend";
266
307
  return [
@@ -287,11 +328,35 @@ function buildPluginScriptRules() {
287
328
  description: "[read-only] Read user global config \xB7 Used by: session-init hook, /cf-learn",
288
329
  category: "Plugin Scripts",
289
330
  recommended: true
290
- }
331
+ },
332
+ // Skills and hooks self-reference via ${CLAUDE_PLUGIN_ROOT}, which points at
333
+ // the marketplace's install location — the repo itself in dev mode, the
334
+ // clone under ~/.claude/plugins/marketplaces/ otherwise. Neither is the
335
+ // versioned cache above, so those paths need their own rules.
336
+ ...marketplaceRoot ? [
337
+ {
338
+ rule: `Bash(bash ${marketplaceRoot}/*)`,
339
+ description: "[execute] Run plugin scripts from the marketplace root (unquoted) \xB7 Used by: all skills",
340
+ category: "Plugin Scripts",
341
+ recommended: true
342
+ },
343
+ {
344
+ rule: `Bash(bash "${marketplaceRoot}/*)`,
345
+ description: "[execute] Run plugin scripts from the marketplace root (quoted) \xB7 Used by: all skills",
346
+ category: "Plugin Scripts",
347
+ recommended: true
348
+ },
349
+ {
350
+ rule: `Read(${marketplaceRoot}/**)`,
351
+ description: "[read-only] Read plugin files from the marketplace root \xB7 Used by: hooks, agents",
352
+ category: "Plugin Scripts",
353
+ recommended: true
354
+ }
355
+ ] : []
291
356
  ];
292
357
  }
293
- function getAllRules() {
294
- return [...STATIC_RULES, ...buildPluginScriptRules()];
358
+ function getAllRules(marketplaceRoot) {
359
+ return [...STATIC_RULES, ...buildPluginScriptRules(marketplaceRoot)];
295
360
  }
296
361
  var PERMISSION_RULES = getAllRules();
297
362
  var DANGEROUS_RULE_PATTERNS = [
@@ -423,12 +488,15 @@ function extractTag(description) {
423
488
  const match = description.match(/^(\[[^\]]+\])/);
424
489
  return match ? match[1] : null;
425
490
  }
426
- var OLD_PLUGIN_PATH_PATTERN = "/.claude/plugins/cache/coding-friend-marketplace/coding-friend/";
491
+ var OLD_PLUGIN_PATH_PATTERNS = [
492
+ "/.claude/plugins/cache/coding-friend-marketplace/coding-friend/",
493
+ `/.claude/plugins/marketplaces/${MARKETPLACE_NAME}/plugin/`
494
+ ];
427
495
  function cleanupStalePluginRules(settingsPath) {
428
496
  const existing = getExistingRules(settingsPath);
429
497
  const currentRules = new Set(getAllRules().map((r) => r.rule));
430
498
  const stale = existing.filter(
431
- (r) => r.includes(OLD_PLUGIN_PATH_PATTERN) && !currentRules.has(r)
499
+ (r) => OLD_PLUGIN_PATH_PATTERNS.some((p) => r.includes(p)) && !currentRules.has(r)
432
500
  );
433
501
  if (stale.length === 0) return 0;
434
502
  applyPermissions(settingsPath, [], stale);
@@ -16,10 +16,42 @@ import {
16
16
  } from "./chunk-NREZK463.js";
17
17
 
18
18
  // src/lib/prompt-utils.ts
19
- import { select, Separator } from "@inquirer/prompts";
19
+ import { checkbox, confirm, input, select, Separator } from "@inquirer/prompts";
20
20
  import { existsSync } from "fs";
21
+ import { emitKeypressEvents } from "readline";
21
22
  import chalk from "chalk";
22
23
  var BACK = "__back__";
24
+ var BackError = class extends Error {
25
+ constructor() {
26
+ super("back");
27
+ this.name = "BackError";
28
+ }
29
+ };
30
+ var escArmed = false;
31
+ function setEscArmed(armed) {
32
+ escArmed = armed;
33
+ }
34
+ async function withEsc(run2) {
35
+ if (!escArmed) return run2();
36
+ const controller = new AbortController();
37
+ const onKey = (_str, key) => {
38
+ if (key?.name === "escape") controller.abort();
39
+ };
40
+ emitKeypressEvents(process.stdin);
41
+ process.stdin.on("keypress", onKey);
42
+ try {
43
+ return await run2({ signal: controller.signal });
44
+ } catch (err) {
45
+ if (err?.name === "AbortPromptError") throw new BackError();
46
+ throw err;
47
+ } finally {
48
+ process.stdin.off("keypress", onKey);
49
+ }
50
+ }
51
+ var escSelect = (config) => withEsc((ctx) => select(config, ctx));
52
+ var escInput = (config) => withEsc((ctx) => input(config, ctx));
53
+ var escConfirm = (config) => withEsc((ctx) => confirm(config, ctx));
54
+ var escCheckbox = (config) => withEsc((ctx) => checkbox(config, ctx));
23
55
  function injectBackChoice(choices, label = "Back") {
24
56
  return [
25
57
  ...choices,
@@ -28,7 +60,7 @@ function injectBackChoice(choices, label = "Back") {
28
60
  ];
29
61
  }
30
62
  async function askScope(label = "Save to:") {
31
- return select({
63
+ return escSelect({
32
64
  message: label,
33
65
  choices: [
34
66
  { name: "This project only", value: "local" },
@@ -185,6 +217,12 @@ function applyDocsDirChange(newValue, oldValue, scope, subfolders = []) {
185
217
 
186
218
  export {
187
219
  BACK,
220
+ BackError,
221
+ setEscArmed,
222
+ escSelect,
223
+ escInput,
224
+ escConfirm,
225
+ escCheckbox,
188
226
  injectBackChoice,
189
227
  askScope,
190
228
  resolveScope,
@@ -102,7 +102,13 @@ var MemoryConfigSchema = z.object({
102
102
  });
103
103
  var ReviewConfigSchema = z.strictObject({
104
104
  withCodex: z.boolean().optional(),
105
- maxRounds: z.number().int().min(1).optional()
105
+ maxRounds: z.number().int().min(1).optional(),
106
+ // Both timeouts are whole positive seconds: zero, negative and fractional
107
+ // values cannot be enforced as a deadline, so they are rejected here rather
108
+ // than coerced somewhere downstream. Deliberately NOT offered in the
109
+ // interactive `cf config` review menu — they are file-only settings.
110
+ agentTimeout: z.number().int().min(1).optional(),
111
+ nativeTimeout: z.number().int().min(1).optional()
106
112
  });
107
113
  var ConfigSchema = z.strictObject({
108
114
  language: z.string().optional(),
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  loadConfig,
3
3
  resolveMemoryDir
4
- } from "./chunk-CGZNFAOB.js";
4
+ } from "./chunk-ZEOWTLWI.js";
5
5
  import "./chunk-ITI7MXLA.js";
6
6
  import "./chunk-5UVDWG5L.js";
7
7
  import "./chunk-EVGXUDX4.js";
@@ -2,13 +2,13 @@ import {
2
2
  afterAutoApproveEnabled,
3
3
  getAllRules,
4
4
  getExistingRules
5
- } from "./chunk-KG6HYBGD.js";
5
+ } from "./chunk-SKEWZ2ET.js";
6
6
  import {
7
7
  listMdFilesRecursive
8
8
  } from "./chunk-2DTXVMPQ.js";
9
9
  import {
10
10
  resolveLearnDir
11
- } from "./chunk-CGZNFAOB.js";
11
+ } from "./chunk-ZEOWTLWI.js";
12
12
  import {
13
13
  findStatuslineHookPath,
14
14
  getCurrentAccountEmail,
@@ -36,7 +36,7 @@ import {
36
36
  } from "./chunk-667NMPN4.js";
37
37
  import {
38
38
  memoryConfigMenu
39
- } from "./chunk-CZW36H3D.js";
39
+ } from "./chunk-BQ4E66ZV.js";
40
40
  import "./chunk-KCBMCHSA.js";
41
41
  import {
42
42
  BACK,
@@ -47,7 +47,7 @@ import {
47
47
  getScopeLabel,
48
48
  injectBackChoice,
49
49
  showConfigHint
50
- } from "./chunk-Z5XTSF7L.js";
50
+ } from "./chunk-XLB2UAKL.js";
51
51
  import "./chunk-TN3Y75WG.js";
52
52
  import "./chunk-OBCNHQFA.js";
53
53
  import {
@@ -802,7 +802,7 @@ async function editPermissions() {
802
802
  )
803
803
  });
804
804
  if (choice === BACK) return;
805
- const { permissionCommand } = await import("./permission-DDBMBFJV.js");
805
+ const { permissionCommand } = await import("./permission-TORAVB2Y.js");
806
806
  switch (choice) {
807
807
  case "interactive":
808
808
  await permissionCommand({});
@@ -1,5 +1,6 @@
1
1
  import {
2
- ensureStatusline
2
+ ensureStatusline,
3
+ getInstalledVersion
3
4
  } from "./chunk-FK4SXIF7.js";
4
5
  import "./chunk-ITI7MXLA.js";
5
6
  import {
@@ -242,22 +243,9 @@ async function devSyncCommand() {
242
243
  );
243
244
  return;
244
245
  }
245
- const cacheBase = pluginCachePath();
246
- let cacheVersionDir = null;
247
- if (existsSync(cacheBase)) {
248
- const versions = readdirSync(cacheBase).filter(
249
- (v) => statSync(join(cacheBase, v)).isDirectory()
250
- );
251
- if (versions.length > 0) {
252
- cacheVersionDir = join(
253
- cacheBase,
254
- versions.sort((a, b) => {
255
- return statSync(join(cacheBase, b)).mtimeMs - statSync(join(cacheBase, a)).mtimeMs;
256
- })[0]
257
- );
258
- }
259
- }
260
- if (!cacheVersionDir) {
246
+ const installedVersion = getInstalledVersion();
247
+ const cacheVersionDir = installedVersion ? join(pluginCachePath(), installedVersion) : null;
248
+ if (!cacheVersionDir || !existsSync(cacheVersionDir)) {
261
249
  log.error(
262
250
  "No cached plugin version found. Run `cf dev off && cf dev on` first."
263
251
  );
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  resolveHostFlags,
16
16
  resolveScope
17
- } from "./chunk-Z5XTSF7L.js";
17
+ } from "./chunk-XLB2UAKL.js";
18
18
  import "./chunk-TN3Y75WG.js";
19
19
  import "./chunk-OBCNHQFA.js";
20
20
  import "./chunk-5UVDWG5L.js";
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  resolveHostFlags,
16
16
  resolveScope
17
- } from "./chunk-Z5XTSF7L.js";
17
+ } from "./chunk-XLB2UAKL.js";
18
18
  import "./chunk-TN3Y75WG.js";
19
19
  import "./chunk-OBCNHQFA.js";
20
20
  import "./chunk-5UVDWG5L.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveLearnDir
3
- } from "./chunk-CGZNFAOB.js";
3
+ } from "./chunk-ZEOWTLWI.js";
4
4
  import "./chunk-ITI7MXLA.js";
5
5
  import {
6
6
  getLibPath