@vzn/vx 0.0.398 → 0.0.400

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.398",
3
+ "version": "0.0.400",
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.398",
25
- "@vzn/vx-linux-arm64": "0.0.398",
26
- "@vzn/vx-darwin-x64": "0.0.398",
27
- "@vzn/vx-darwin-arm64": "0.0.398"
24
+ "@vzn/vx-linux-x64": "0.0.400",
25
+ "@vzn/vx-linux-arm64": "0.0.400",
26
+ "@vzn/vx-darwin-x64": "0.0.400",
27
+ "@vzn/vx-darwin-arm64": "0.0.400"
28
28
  },
29
29
  "dependencies": {
30
30
  "@anthropic-ai/sandbox-runtime": "^0.0.76"
@@ -1141,8 +1141,21 @@ export async function wrapSandboxedCommand(
1141
1141
  // sandboxed server and all it forked outlived vx (turborepo#9666). Now
1142
1142
  // the namespace goes with vx, a `setsid` daemon inside included, a
1143
1143
  // traced one-shot task too: its strace runs inside (B-11).
1144
- if (process.platform === 'linux' && /^\S*bwrap /.test(wrapped))
1145
- wrapped = `exec ${readOnlyMasks(wrapped, scratch)}`
1144
+ // Every mask and bind is a mount point, and git's discovery stops at
1145
+ // one: a task granted the repository's `.git` still read "not a git
1146
+ // repository … Stopping at filesystem boundary" (2026-10-03). The
1147
+ // boundaries are the sandbox's, so a task that names a `.git` may walk
1148
+ // across them; only such a task, since git-aware tools read the variable
1149
+ // (vx's own repoFacts asks git instead of the disk under it). A value the
1150
+ // task's environment sets wins.
1151
+ if (process.platform === 'linux' && /^\S*bwrap /.test(wrapped)) {
1152
+ const gitGranted = [...args.config.allowRead, ...args.config.allowWrite].some((g) =>
1153
+ g.split(/[\\/]/).includes('.git'),
1154
+ )
1155
+ wrapped =
1156
+ (gitGranted ? 'GIT_DISCOVERY_ACROSS_FILESYSTEM=${GIT_DISCOVERY_ACROSS_FILESYSTEM-1} ' : '') +
1157
+ `exec ${readOnlyMasks(wrapped, scratch)}`
1158
+ }
1146
1159
  if (process.platform === 'linux' && !hostHasIpv6())
1147
1160
  wrapped = `SOCAT_DEFAULT_LISTEN_IP=4 ${wrapped}`
1148
1161
  const held = portsHeld(ports)