@vzn/vx 0.0.63 → 0.0.64
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 +5 -5
- package/src/graph/scheduler.ts +10 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vzn/vx",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.64",
|
|
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.
|
|
21
|
-
"@vzn/vx-linux-arm64": "0.0.
|
|
22
|
-
"@vzn/vx-darwin-x64": "0.0.
|
|
23
|
-
"@vzn/vx-darwin-arm64": "0.0.
|
|
20
|
+
"@vzn/vx-linux-x64": "0.0.64",
|
|
21
|
+
"@vzn/vx-linux-arm64": "0.0.64",
|
|
22
|
+
"@vzn/vx-darwin-x64": "0.0.64",
|
|
23
|
+
"@vzn/vx-darwin-arm64": "0.0.64"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@anthropic-ai/sandbox-runtime": "^0.0.76"
|
package/src/graph/scheduler.ts
CHANGED
|
@@ -399,6 +399,9 @@ export async function runGraph(options: ScheduleOptions): Promise<Map<string, Ta
|
|
|
399
399
|
const restoreRoom = (): boolean =>
|
|
400
400
|
serial ? active + activeRestore < 1 : activeRestore < restoreConcurrency
|
|
401
401
|
let resolved = false
|
|
402
|
+
// A refusal's text → the first task that said it. A corrupt cache index
|
|
403
|
+
// reaches every lookup as one UserError; a repeat names the first.
|
|
404
|
+
const refusedBy = new Map<string, string>()
|
|
402
405
|
|
|
403
406
|
// Admission policy over the count limit (a plugin's `admit`). Inactive
|
|
404
407
|
// → the tick loop short-circuits before any of this and behaves
|
|
@@ -717,10 +720,13 @@ export async function runGraph(options: ScheduleOptions): Promise<Map<string, Ta
|
|
|
717
720
|
// UserError is a config/input failure (e.g. a failed
|
|
718
721
|
// `cache.inputs.runtime` command), not a vx bug — report it
|
|
719
722
|
// plainly, never as an "internal error".
|
|
720
|
-
if (isUserError(err)) {
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
723
|
+
if (isUserError(err) || isFsRefusal(err)) {
|
|
724
|
+
const text = isUserError(err) ? message : `${message} — ${fsRefusalHint(err)}`
|
|
725
|
+
const first = refusedBy.get(text)
|
|
726
|
+
if (first === undefined) refusedBy.set(text, id)
|
|
727
|
+
process.stderr.write(
|
|
728
|
+
`[vx] ${id}: ${first === undefined ? text : `as ${first} above`}\n`,
|
|
729
|
+
)
|
|
724
730
|
} else {
|
|
725
731
|
const named = err instanceof Error && err.name !== 'Error' ? `${err.name}: ` : ''
|
|
726
732
|
// A wrapped error's cause is the fact the reader needs (a
|