@vzn/vx 0.0.635 → 0.0.637
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/README.md +47 -19
- package/docs/caching.md +222 -210
- package/docs/cli.md +699 -664
- package/docs/execution.md +67 -75
- package/docs/features.md +44 -40
- package/docs/patterns.md +31 -32
- package/docs/schema.md +418 -202
- package/docs/security.md +76 -39
- package/launcher.sh +43 -0
- package/package.json +5 -5
- package/schemas/cache.json +41 -19
- package/schemas/info.json +23 -11
- package/schemas/last.json +48 -2
- package/schemas/lock.json +1 -1
- package/schemas/plan.json +2 -2
- package/schemas/show.json +13 -4
- package/schemas/why.json +15 -1
- package/skills/vx/SKILL.md +16 -12
- package/src/bin.ts +17 -2
- package/src/cache/archive.ts +11 -0
- package/src/cache/cache.ts +105 -53
- package/src/cache/git-inputs.ts +277 -63
- package/src/cache/index.ts +7 -1
- package/src/cache/inputs.ts +125 -35
- package/src/cache/key-fold.ts +8 -7
- package/src/cache/layer.ts +8 -17
- package/src/cache/layered-cache.ts +16 -102
- package/src/cache/policy.ts +25 -29
- package/src/cache/run-history.ts +36 -14
- package/src/cache/schema.ts +21 -23
- package/src/cache/scoped-cache.ts +224 -0
- package/src/cli/cache.ts +150 -28
- package/src/cli/completions.ts +2 -2
- package/src/cli/core-alias.ts +1 -1
- package/src/cli/foreign-flags.ts +13 -12
- package/src/cli/help.ts +94 -61
- package/src/cli/index.ts +42 -13
- package/src/cli/info.ts +38 -23
- package/src/cli/init.ts +115 -406
- package/src/cli/last.ts +145 -4
- package/src/cli/lock.ts +333 -111
- package/src/cli/plan-format.ts +2 -2
- package/src/cli/plugin-commands.ts +5 -9
- package/src/cli/plugin-templates.ts +10 -10
- package/src/cli/run.ts +123 -144
- package/src/cli/select.ts +33 -39
- package/src/cli/show.ts +17 -19
- package/src/cli/task-verb.ts +2 -9
- package/src/cli/upgrade.ts +402 -145
- package/src/cli/watch-cycle.ts +9 -2
- package/src/cli/watch-filter.ts +33 -60
- package/src/cli/watch-fs.ts +29 -16
- package/src/cli/watch-judge.ts +12 -3
- package/src/cli/watch-set.ts +16 -42
- package/src/cli/watch.ts +188 -215
- package/src/cli/why.ts +28 -17
- package/src/cli/workspace-config.ts +31 -68
- package/src/config.ts +191 -71
- package/src/exec/env.ts +1 -31
- package/src/exec/executor.ts +1 -5
- package/src/exec/kill-tree.ts +2 -1
- package/src/exec/sandbox-runtime.ts +12 -1
- package/src/exec/sandbox-violations.ts +9 -1
- package/src/graph/dependency-spec.ts +1 -1
- package/src/graph/index.ts +1 -0
- package/src/graph/priorities.ts +1 -1
- package/src/graph/scheduler.ts +19 -7
- package/src/graph/task-graph.ts +44 -20
- package/src/handoff.ts +169 -0
- package/src/index.ts +25 -57
- package/src/orchestrator/affected-tasks.ts +7 -5
- package/src/orchestrator/command-windows.ts +44 -0
- package/src/orchestrator/deferred-outputs.ts +12 -10
- package/src/orchestrator/doctor.ts +98 -110
- package/src/orchestrator/download-policy.ts +3 -3
- package/src/orchestrator/events.ts +19 -3
- package/src/orchestrator/excluded-keys.ts +0 -2
- package/src/orchestrator/execute-task.ts +192 -70
- package/src/orchestrator/fingerprint-watch.ts +18 -15
- package/src/orchestrator/forecast.ts +10 -2
- package/src/orchestrator/framed-output.ts +8 -3
- package/src/orchestrator/graph-stage.ts +5 -5
- package/src/orchestrator/history.ts +70 -30
- package/src/orchestrator/hit-restore.ts +15 -3
- package/src/orchestrator/index.ts +18 -4
- package/src/orchestrator/local-shortcircuit.ts +2 -1
- package/src/orchestrator/lockfile-claim.ts +79 -20
- package/src/orchestrator/logger.ts +71 -39
- package/src/orchestrator/metrics.ts +71 -6
- package/src/orchestrator/miss-save.ts +3 -0
- package/src/orchestrator/options.ts +43 -28
- package/src/orchestrator/output-host.ts +72 -0
- package/src/orchestrator/plan.ts +6 -8
- package/src/orchestrator/plugin-host.ts +87 -63
- package/src/orchestrator/plugin.ts +94 -60
- package/src/orchestrator/prepare.ts +114 -73
- package/src/orchestrator/projects.ts +102 -99
- package/src/orchestrator/remote-prefetch.ts +2 -1
- package/src/orchestrator/run-context.ts +25 -6
- package/src/orchestrator/run-failures.ts +17 -8
- package/src/orchestrator/run-lock.ts +1 -1
- package/src/orchestrator/run-report.ts +9 -9
- package/src/orchestrator/run-settings.ts +48 -0
- package/src/orchestrator/run.ts +127 -88
- package/src/orchestrator/sandbox-fix.ts +39 -20
- package/src/orchestrator/sandbox-request.ts +84 -13
- package/src/orchestrator/signals.ts +1 -1
- package/src/orchestrator/stable-keys.ts +13 -11
- package/src/orchestrator/status-line.ts +48 -6
- package/src/orchestrator/summary.ts +46 -62
- package/src/orchestrator/task-hash.ts +12 -83
- package/src/orchestrator/telemetry.ts +3 -3
- package/src/settings.ts +417 -0
- package/src/util/errors.ts +1 -1
- package/src/util/essential-env.ts +31 -0
- package/src/util/hide-env.ts +107 -0
- package/src/util/index.ts +8 -2
- package/src/util/paths.ts +10 -0
- package/src/util/settle.ts +49 -30
- package/src/util/size.ts +23 -4
- package/src/util/timing.ts +3 -2
- package/src/util/ulid.ts +1 -1
- package/src/util/verbs.ts +0 -15
- package/src/workspace/affected.ts +77 -222
- package/src/workspace/config-eval.ts +15 -20
- package/src/workspace/config-imports.ts +78 -3
- package/src/workspace/config-schema.ts +251 -241
- package/src/workspace/dependency-rules.ts +57 -0
- package/src/workspace/filter.ts +2 -2
- package/src/workspace/fingerprint.ts +11 -121
- package/src/workspace/index.ts +22 -27
- package/src/workspace/load-reads.ts +4 -4
- package/src/workspace/lockfile.ts +96 -140
- package/src/workspace/migration.ts +242 -146
- package/src/workspace/package-graph.ts +30 -216
- package/src/workspace/project-loader.ts +80 -285
- package/src/workspace/repo-id.ts +2 -1
- package/src/workspace/workspace.ts +362 -831
- package/src/cache/config-evals.ts +0 -130
- package/src/workspace/config-cache.ts +0 -661
- package/src/workspace/migrate-scripts.ts +0 -1121
package/docs/patterns.md
CHANGED
|
@@ -27,24 +27,25 @@ restore. Everything else lines up with Turbo or Nx by design.
|
|
|
27
27
|
|
|
28
28
|
### Cache key composition
|
|
29
29
|
|
|
30
|
-
The set of bytes fed into the hash mirrors Turbo's key recipe
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
| Component | Turbo | Nx | vx
|
|
34
|
-
| -------------------------------------- | ------------ | ---------------------- |
|
|
35
|
-
| Task identity (`project#task`) | yes | yes | yes
|
|
36
|
-
| Resolved command + env declarations | yes | yes | yes
|
|
37
|
-
| Declared input file contents | yes | yes | yes
|
|
38
|
-
| Declared env-var **values** at runtime | yes | yes | yes
|
|
39
|
-
| Upstream task hashes (cascade) | yes | yes | yes
|
|
40
|
-
| Workspace lockfile
|
|
41
|
-
| Forwarded CLI args (after `--`) | yes | yes | yes
|
|
42
|
-
| Project `package.json` bytes
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
like `['src/**']` doesn't miss a
|
|
30
|
+
The set of bytes fed into the hash mirrors Turbo's key recipe; the
|
|
31
|
+
package-manager parts come from a plugin.
|
|
32
|
+
|
|
33
|
+
| Component | Turbo | Nx | vx | vx source |
|
|
34
|
+
| -------------------------------------- | ------------ | ---------------------- | ------ | --------------------------------------------- |
|
|
35
|
+
| Task identity (`project#task`) | yes | yes | yes | `src/cache/layer.ts` (`CacheKeyInput.taskId`) |
|
|
36
|
+
| Resolved command + env declarations | yes | yes | yes | `src/cache/layer.ts` (`taskConfigHash`) |
|
|
37
|
+
| Declared input file contents | yes | yes | yes | `src/cache/layer.ts` (`inputFiles`) |
|
|
38
|
+
| Declared env-var **values** at runtime | yes | yes | yes | `src/cache/layer.ts` (`envValues`) |
|
|
39
|
+
| Upstream task hashes (cascade) | yes | yes | yes | `src/cache/layer.ts` (`upstreamHashes`) |
|
|
40
|
+
| Workspace lockfile | yes | yes | plugin | `@vzn/vx-lockfile` (`VxPlugin.fingerprint`) |
|
|
41
|
+
| Forwarded CLI args (after `--`) | yes | yes | yes | `src/cache/layer.ts` (`forwardArgs`) |
|
|
42
|
+
| Project `package.json` bytes | via lockfile | `externalDependencies` | plugin | `@vzn/vx-lockfile` (an input file) |
|
|
43
|
+
|
|
44
|
+
Core keys no package file (2026-10-14): the lockfile and each
|
|
45
|
+
project's `package.json` key a task through `@vzn/vx-lockfile`, which
|
|
46
|
+
claims the lockfile and adds `package.json` to every cached task's
|
|
47
|
+
inputs, so narrow `cache.inputs.files` like `['src/**']` doesn't miss a
|
|
48
|
+
`package.json` dep bump.
|
|
48
49
|
|
|
49
50
|
The two **divergences** from Turbo's recipe — TypeScript-resolved
|
|
50
51
|
config hash and per-task forwarded-args fold — are documented in
|
|
@@ -91,12 +92,12 @@ parser's docblock marks them (`src/graph/dependency-spec.ts`).
|
|
|
91
92
|
|
|
92
93
|
### Workspace discovery
|
|
93
94
|
|
|
94
|
-
| Capability | Source | vx source
|
|
95
|
-
| ----------------------------------------------------- | ------------ |
|
|
96
|
-
| Read `pnpm-workspace.yaml`
|
|
97
|
-
| Read `package.json` `workspaces` (
|
|
98
|
-
| Build package-dep graph from workspace `dependencies` | Turbo + Nx | `src/workspace/package-graph.ts`
|
|
99
|
-
| Lockfile fingerprint at workspace level | Turbo + Nx | `src/workspace/fingerprint.ts`
|
|
95
|
+
| Capability | Source | vx source |
|
|
96
|
+
| ----------------------------------------------------- | ------------ | --------------------------------- |
|
|
97
|
+
| Read `pnpm-workspace.yaml` (adoption) | pnpm + Turbo | `@vzn/vx-migrate`'s `packages.ts` |
|
|
98
|
+
| Read `package.json` `workspaces` (adoption) | Turbo | `@vzn/vx-migrate`'s `packages.ts` |
|
|
99
|
+
| Build package-dep graph from workspace `dependencies` | Turbo + Nx | `src/workspace/package-graph.ts` |
|
|
100
|
+
| Lockfile fingerprint at workspace level | Turbo + Nx | `src/workspace/fingerprint.ts` |
|
|
100
101
|
|
|
101
102
|
### Cache topology
|
|
102
103
|
|
|
@@ -140,7 +141,7 @@ Turbo-aware cache server can transit our blobs unchanged.
|
|
|
140
141
|
| Independent siblings continue past failure | Turbo `--continue=dependencies-successful` | `src/graph/scheduler.ts` |
|
|
141
142
|
| Persistent / long-running tasks (dev servers) | Turbo `persistent`, Nx `continuous` | `src/exec/runner.ts` (`runPersistent`) + `src/orchestrator/execute-task.ts` |
|
|
142
143
|
| Project-local `node_modules/.bin` on PATH | Turbo + pnpm | `src/exec/env.ts` (`binPaths`) |
|
|
143
|
-
|
|
|
144
|
+
| Project-`package.json` invalidation, by a plugin | Turbo (via lockfile) + Nx (`externalDependencies`) | `@vzn/vx-lockfile` (its `project` stage lists it as an input) |
|
|
144
145
|
|
|
145
146
|
### Output handling
|
|
146
147
|
|
|
@@ -183,17 +184,15 @@ Sharing the patterns doesn't mean sharing the overhead. On the
|
|
|
183
184
|
476-package / 1,428-node synthetic workspace
|
|
184
185
|
(`packages/vx-bench/compare.ts 20 25 1`, 2026-09-02):
|
|
185
186
|
|
|
186
|
-
| Runner | Warm (no restore)
|
|
187
|
-
| ------ |
|
|
188
|
-
| **vx** | **297 ms**
|
|
189
|
-
| Turbo | 342 ms
|
|
190
|
-
| Nx | 1.38 s
|
|
187
|
+
| Runner | Warm (no restore) | Warm (restore) |
|
|
188
|
+
| ------ | ----------------- | -------------- |
|
|
189
|
+
| **vx** | **297 ms** | **416 ms** |
|
|
190
|
+
| Turbo | 342 ms | 612 ms |
|
|
191
|
+
| Nx | 1.38 s | 1.33 s |
|
|
191
192
|
|
|
192
193
|
A cached run is all runner overhead. Cold builds are compared by the
|
|
193
194
|
time the runner adds, on [`benchmarks.md`](./benchmarks.md).
|
|
194
195
|
|
|
195
|
-
vx N% faster: that tool takes N% longer than vx; N× faster: N times as long.
|
|
196
|
-
|
|
197
196
|
Full breakdown + methodology in [`benchmarks.md`](./benchmarks.md).
|
|
198
197
|
|
|
199
198
|
## Where the lineage diverges
|