@vzn/vx 0.0.30 → 0.0.31

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 (2) hide show
  1. package/package.json +5 -5
  2. package/src/cli/select.ts +26 -5
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vzn/vx",
3
- "version": "0.0.30",
3
+ "version": "0.0.31",
4
4
  "description": "An open, extensible monorepo task runner.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -17,10 +17,10 @@
17
17
  "node": ">=18"
18
18
  },
19
19
  "optionalDependencies": {
20
- "@vzn/vx-linux-x64": "0.0.30",
21
- "@vzn/vx-linux-arm64": "0.0.30",
22
- "@vzn/vx-darwin-x64": "0.0.30",
23
- "@vzn/vx-darwin-arm64": "0.0.30"
20
+ "@vzn/vx-linux-x64": "0.0.31",
21
+ "@vzn/vx-linux-arm64": "0.0.31",
22
+ "@vzn/vx-darwin-x64": "0.0.31",
23
+ "@vzn/vx-darwin-arm64": "0.0.31"
24
24
  },
25
25
  "dependencies": {
26
26
  "@anthropic-ai/sandbox-runtime": "^0.0.76"
package/src/cli/select.ts CHANGED
@@ -5,6 +5,7 @@
5
5
 
6
6
  import readline from 'node:readline/promises'
7
7
  import path from 'node:path'
8
+ import fs from 'node:fs'
8
9
  import {
9
10
  affectedProjects,
10
11
  refIsHead,
@@ -115,13 +116,33 @@ async function loadWorkspaceProjects(cwd: string): Promise<ProjectMeta[]> {
115
116
  export async function findCwdProject(cwd: string): Promise<string | null> {
116
117
  const projects = await loadWorkspaceProjects(cwd)
117
118
  const abs = path.resolve(cwd)
118
- let best: ProjectMeta | null = null
119
- for (const p of projects) {
120
- if (abs === p.dir || abs.startsWith(p.dir + path.sep)) {
121
- if (!best || p.dir.length > best.dir.length) best = p
119
+ const within = (dirOf: (p: ProjectMeta) => string): string | null => {
120
+ let best: string | null = null
121
+ let bestLength = -1
122
+ for (const p of projects) {
123
+ const dir = dirOf(p)
124
+ if ((abs === dir || abs.startsWith(dir + path.sep)) && dir.length > bestLength) {
125
+ best = p.name
126
+ bestLength = dir.length
127
+ }
122
128
  }
129
+ return best
123
130
  }
124
- return best?.name ?? null
131
+ // The cwd is a real path (the kernel's), and a member discovery reached
132
+ // through a link keeps the link's (`packages/b -> ../ext/b`, item 987),
133
+ // so inside such a member nothing matched and a run from there was "not
134
+ // inside a project" (item 1025). Only then are the members realpathed:
135
+ // one syscall each, paid only by a run no plain match could place.
136
+ return (
137
+ within((p) => p.dir) ??
138
+ within((p) => {
139
+ try {
140
+ return fs.realpathSync(p.dir)
141
+ } catch {
142
+ return p.dir
143
+ }
144
+ })
145
+ )
125
146
  }
126
147
 
127
148
  export type FilterResolution =