@vzn/vx 0.0.52 → 0.0.54

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.52",
3
+ "version": "0.0.54",
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.52",
21
- "@vzn/vx-linux-arm64": "0.0.52",
22
- "@vzn/vx-darwin-x64": "0.0.52",
23
- "@vzn/vx-darwin-arm64": "0.0.52"
20
+ "@vzn/vx-linux-x64": "0.0.54",
21
+ "@vzn/vx-linux-arm64": "0.0.54",
22
+ "@vzn/vx-darwin-x64": "0.0.54",
23
+ "@vzn/vx-darwin-arm64": "0.0.54"
24
24
  },
25
25
  "dependencies": {
26
26
  "@anthropic-ai/sandbox-runtime": "^0.0.76"
package/src/cli/run.ts CHANGED
@@ -437,9 +437,10 @@ export async function resolveRunOptions(
437
437
  // changed-only `[<base>]` (item 287). `--filter '[<base>]'` stays the
438
438
  // "only what I touched" form. Merging it into the filter list means the
439
439
  // same code path handles plain filter use, --affected alone, and the combo.
440
- // It goes FIRST: filters apply in argv order, and appended last it came
441
- // after every `!` exclude, so `--affected --filter '!app'` still ran app
442
- // (item 955). An include's place does not change a union.
440
+ // Its place does not change the selection: `applyFilters` takes every
441
+ // include before any exclude (item 979), so `--affected --filter '!app'`
442
+ // drops app from either side (item 955 had put it first for that). First
443
+ // it stays, so a message naming the filters names it first.
443
444
  const filterStrings = [...parsed.filters]
444
445
  if (parsed.affected !== undefined) {
445
446
  const root = await findWorkspaceRoot(cwd)
@@ -72,7 +72,7 @@ export interface VxPlugin {
72
72
 
73
73
  /**
74
74
  * The task graph, after `dependsOn` expansion and before scheduling. Add
75
- * or drop edges (`node.deps`), mark tasks requested, adjust resources. A
75
+ * or drop edges (`node.deps`), mark tasks requested. A
76
76
  * dep naming a task that is not in the graph, or a cycle, is refused with
77
77
  * the plugin's name.
78
78
  */
@@ -242,8 +242,9 @@ export async function prepareRun(options: RunOptions, log: Logger): Promise<Prep
242
242
  const workspaceFingerprint = fingerprints.unclaimed
243
243
  mark('open cache')
244
244
 
245
- // Frozen mode (--frozen, CI): configs load FROM vx-lock.json after a
246
- // content-hash tripwire — no evaluation; env-dependent configs keep
245
+ // Frozen mode (--frozen, CI): configs load FROM vx-lock.json with no
246
+ // evaluation and no check of the config bytes (`vx lock --check`
247
+ // compares `configHash`; a run does not); env-dependent configs keep
247
248
  // their locked values. Default (local) runs ALWAYS evaluate live:
248
249
  // a byte hash can't see a config's import closure (shared presets),
249
250
  // so consuming the lock by default would silently serve stale
@@ -333,7 +334,10 @@ export async function prepareRun(options: RunOptions, log: Logger): Promise<Prep
333
334
  })
334
335
  } catch (err) {
335
336
  // A cache plugin that throws or returns something off-contract is
336
- // refused by name; the local handle opened above must not leak with it.
337
+ // refused by name; the local handle opened above must not leak with it,
338
+ // nor what another plugin's factory opened: the factories have run
339
+ // (C-4, item 1029's contract).
340
+ await teardownPlugins(plugins, (m) => log.status(m))
337
341
  localCache.close()
338
342
  throw err
339
343
  }