@vzn/vx 0.0.395 → 0.0.396

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.395",
3
+ "version": "0.0.396",
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.395",
25
- "@vzn/vx-linux-arm64": "0.0.395",
26
- "@vzn/vx-darwin-x64": "0.0.395",
27
- "@vzn/vx-darwin-arm64": "0.0.395"
24
+ "@vzn/vx-linux-x64": "0.0.396",
25
+ "@vzn/vx-linux-arm64": "0.0.396",
26
+ "@vzn/vx-darwin-x64": "0.0.396",
27
+ "@vzn/vx-darwin-arm64": "0.0.396"
28
28
  },
29
29
  "dependencies": {
30
30
  "@anthropic-ai/sandbox-runtime": "^0.0.76"
@@ -396,6 +396,26 @@ async function executePersistentTask(args: ExecuteArgs): Promise<TaskOutcome> {
396
396
  if (spawn.child === undefined) void onExit()
397
397
  else void spawn.child.exited.then(onExit, onExit)
398
398
  }
399
+ // Said once if readiness is slow: a dependency's output is hidden unless
400
+ // it fails, and with no `exec.timeout` the wait never ends, so a run
401
+ // whose `readyWhen` never matched showed nothing at all.
402
+ const readyWhen = step.persistent.readyWhen
403
+ const noticeMs = readyNoticeMs()
404
+ const notice =
405
+ readyWhen === undefined
406
+ ? undefined
407
+ : setTimeout(() => {
408
+ if (isAborted(args.stopSignal)) return
409
+ const after = noticeMs < 1000 ? `${noticeMs} ms` : `${noticeMs / 1000} s`
410
+ const unbounded = effectiveTimeout === undefined ? ', with no exec.timeout' : ''
411
+ log.status(
412
+ `vx: ${node.id} not ready after ${after}: waiting for a line matching /${readyWhen}/ (readyWhen)${unbounded}`,
413
+ )
414
+ }, noticeMs)
415
+ if (notice !== undefined) {
416
+ const quiet = (): void => clearTimeout(notice)
417
+ void spawn.ready.then(quiet, quiet)
418
+ }
399
419
  try {
400
420
  await spawn.ready
401
421
  } catch (err) {
@@ -1337,3 +1357,13 @@ function taskEnv(node: TaskNode, step: ExecConfig, workspaceRoot: string): NodeJ
1337
1357
  function isAborted(signal: AbortSignal | undefined): boolean {
1338
1358
  return signal?.aborted === true
1339
1359
  }
1360
+
1361
+ /**
1362
+ * How long a server may take to match `readyWhen` before vx says it waits.
1363
+ * `VX_READY_NOTICE_MS` overrides it, as `VX_KILL_GRACE_MS` does the grace.
1364
+ */
1365
+ function readyNoticeMs(): number {
1366
+ const raw = process.env['VX_READY_NOTICE_MS']
1367
+ if (raw !== undefined && /^[0-9]+$/.test(raw) && Number(raw) > 0) return Number(raw)
1368
+ return 10_000
1369
+ }