@vzn/vx 0.0.413 → 0.0.415
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vzn/vx",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.415",
|
|
4
4
|
"description": "The fastest task runner and build cache for JavaScript monorepos.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
"node": ">=18"
|
|
22
22
|
},
|
|
23
23
|
"optionalDependencies": {
|
|
24
|
-
"@vzn/vx-linux-x64": "0.0.
|
|
25
|
-
"@vzn/vx-linux-arm64": "0.0.
|
|
26
|
-
"@vzn/vx-darwin-x64": "0.0.
|
|
27
|
-
"@vzn/vx-darwin-arm64": "0.0.
|
|
24
|
+
"@vzn/vx-linux-x64": "0.0.415",
|
|
25
|
+
"@vzn/vx-linux-arm64": "0.0.415",
|
|
26
|
+
"@vzn/vx-darwin-x64": "0.0.415",
|
|
27
|
+
"@vzn/vx-darwin-arm64": "0.0.415"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@anthropic-ai/sandbox-runtime": "^0.0.76"
|
package/src/cli/select.ts
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
// cwd sits in, and the interactive picker. Every read of the workspace
|
|
4
4
|
// here goes through the staged load, so the answer is the run's.
|
|
5
5
|
|
|
6
|
-
import readline from 'node:readline/promises'
|
|
7
6
|
import path from 'node:path'
|
|
8
7
|
import fs from 'node:fs'
|
|
9
8
|
import {
|
|
@@ -404,6 +403,9 @@ export async function pickTask(
|
|
|
404
403
|
const desc = e.description ? ` ${e.description}` : ''
|
|
405
404
|
out.write(` ${n}. ${id}${desc}\n`)
|
|
406
405
|
})
|
|
406
|
+
// Imported here, the picker's one use: a run that never asks paid ~0.7 ms
|
|
407
|
+
// for it at every start, past the stdout stream it shares code with.
|
|
408
|
+
const readline = await import('node:readline/promises')
|
|
407
409
|
const rl = readline.createInterface({
|
|
408
410
|
input: io.input ?? process.stdin,
|
|
409
411
|
output: io.output ?? process.stdout,
|
|
@@ -682,6 +682,11 @@ export function refusedWrites(
|
|
|
682
682
|
if (/^\/(?:dev|proc)\//.test(raw)) continue
|
|
683
683
|
const abs = toRealPath(raw)
|
|
684
684
|
if (isUnderAny(abs, binds) || underGlob(abs, globs)) continue
|
|
685
|
+
// A directory a write bind lies in exists, since bwrap made it to mount
|
|
686
|
+
// the bind: `mkdir -p node_modules/.cache/tool` under a grant of
|
|
687
|
+
// `node_modules/.cache/` met EEXIST on `node_modules`, wrote nothing,
|
|
688
|
+
// and the attempt failed a clean task (2026-10-03).
|
|
689
|
+
if (syscall.startsWith('mkdir') && [...binds].some((b) => atOrUnder(b, abs))) continue
|
|
685
690
|
const key = `${syscall}|${abs}`
|
|
686
691
|
if (seen.has(key)) continue
|
|
687
692
|
seen.add(key)
|
|
@@ -661,12 +661,15 @@ export function migrateScripts(
|
|
|
661
661
|
// the task, so `--all` never runs one check twice.
|
|
662
662
|
const outsideName =
|
|
663
663
|
typeof outside?.['name'] === 'string' && outside['name'] !== '' ? outside['name'] : undefined
|
|
664
|
+
// insomnia's root is named as its `packages/insomnia`: a root config made
|
|
665
|
+
// it a project, and every later run was refused for the duplicate (D-129).
|
|
666
|
+
const clash = outsideName === undefined ? undefined : metas.find((m) => m.name === outsideName)
|
|
664
667
|
const rootMeta: ProjectMeta | undefined =
|
|
665
668
|
root !== undefined
|
|
666
669
|
? root.configPath === null
|
|
667
670
|
? root
|
|
668
671
|
: undefined
|
|
669
|
-
: outsideName !== undefined && outsideDir !== undefined
|
|
672
|
+
: outsideName !== undefined && outsideDir !== undefined && clash === undefined
|
|
670
673
|
? { name: outsideName, dir: outsideDir, packageJson: outside as never, configPath: null }
|
|
671
674
|
: undefined
|
|
672
675
|
const memberTasks = new Set(
|
|
@@ -774,6 +777,11 @@ export function migrateScripts(
|
|
|
774
777
|
? `; left out as a member's task name, so \`--all\` never runs one twice: ${listed(shared)} — one that does other work maps by hand under a name of its own`
|
|
775
778
|
: ''),
|
|
776
779
|
)
|
|
780
|
+
} else if (clash !== undefined && outsideDir !== undefined && unnamedMaps().length > 0) {
|
|
781
|
+
const would = unnamedMaps()
|
|
782
|
+
notes.push(
|
|
783
|
+
`${clash.name} (the workspace root) not mapped: ${path.relative(outsideDir, clash.dir).split(path.sep).join('/')} has the same "name", and vx names a project by it; rename the root's and run \`vx init\` again to map ${would.length} of its scripts (${would.slice(0, 8).join(', ')}${would.length > 8 ? ', …' : ''})`,
|
|
784
|
+
)
|
|
777
785
|
} else if (rootName === 'package.json' && outsideDir !== undefined && unnamedMaps().length > 0) {
|
|
778
786
|
// react's nameless root: "its scripts run the workspace" was not why,
|
|
779
787
|
// and 30 of its scripts (`build`, `lint`, `test`) map once it has a
|