@vzn/vx 0.0.636 → 0.0.638

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 (151) hide show
  1. package/README.md +39 -11
  2. package/docs/caching.md +246 -213
  3. package/docs/cli.md +791 -705
  4. package/docs/execution.md +68 -76
  5. package/docs/features.md +47 -42
  6. package/docs/patterns.md +26 -25
  7. package/docs/schema.md +392 -205
  8. package/docs/security.md +76 -39
  9. package/launcher.sh +43 -0
  10. package/package.json +5 -5
  11. package/schemas/cache.json +41 -19
  12. package/schemas/info.json +23 -11
  13. package/schemas/last.json +48 -2
  14. package/schemas/lock.json +1 -1
  15. package/schemas/plan.json +4 -4
  16. package/schemas/show.json +5 -3
  17. package/schemas/why.json +15 -1
  18. package/skills/vx/SKILL.md +28 -13
  19. package/src/bin.ts +30 -9
  20. package/src/cache/archive.ts +11 -0
  21. package/src/cache/cache.ts +124 -53
  22. package/src/cache/chained-cache.ts +4 -0
  23. package/src/cache/git-inputs.ts +277 -63
  24. package/src/cache/index.ts +15 -1
  25. package/src/cache/inputs.ts +102 -36
  26. package/src/cache/key-fold.ts +8 -7
  27. package/src/cache/layer.ts +15 -18
  28. package/src/cache/layered-cache.ts +20 -102
  29. package/src/cache/plugin-cache.ts +248 -0
  30. package/src/cache/policy.ts +32 -27
  31. package/src/cache/run-history.ts +104 -14
  32. package/src/cache/run-store.ts +77 -0
  33. package/src/cache/schema.ts +58 -31
  34. package/src/cache/scoped-cache.ts +237 -0
  35. package/src/cli/cache.ts +173 -34
  36. package/src/cli/completions.ts +11 -7
  37. package/src/cli/core-alias.ts +1 -1
  38. package/src/cli/foreign-flags.ts +13 -12
  39. package/src/cli/help.ts +110 -70
  40. package/src/cli/index.ts +67 -24
  41. package/src/cli/info.ts +43 -27
  42. package/src/cli/init.ts +115 -407
  43. package/src/cli/last.ts +157 -9
  44. package/src/cli/lock.ts +356 -122
  45. package/src/cli/plan-format.ts +7 -5
  46. package/src/cli/plugin-commands.ts +81 -14
  47. package/src/cli/plugin-templates.ts +11 -11
  48. package/src/cli/run.ts +116 -160
  49. package/src/cli/select.ts +50 -47
  50. package/src/cli/show.ts +83 -59
  51. package/src/cli/task-verb.ts +6 -13
  52. package/src/cli/upgrade.ts +415 -149
  53. package/src/cli/watch-cycle.ts +9 -2
  54. package/src/cli/watch-filter.ts +39 -61
  55. package/src/cli/watch-fs.ts +29 -16
  56. package/src/cli/watch-judge.ts +18 -4
  57. package/src/cli/watch-set.ts +16 -42
  58. package/src/cli/watch.ts +227 -230
  59. package/src/cli/why.ts +38 -18
  60. package/src/cli/workspace-config.ts +33 -70
  61. package/src/config.ts +169 -70
  62. package/src/exec/env.ts +1 -31
  63. package/src/exec/executor.ts +1 -5
  64. package/src/exec/kill-tree.ts +2 -1
  65. package/src/exec/sandbox-runtime.ts +12 -1
  66. package/src/exec/sandbox-violations.ts +9 -1
  67. package/src/graph/dependency-spec.ts +1 -1
  68. package/src/graph/index.ts +1 -0
  69. package/src/graph/priorities.ts +1 -1
  70. package/src/graph/scheduler.ts +27 -7
  71. package/src/graph/task-graph.ts +76 -24
  72. package/src/handoff.ts +169 -0
  73. package/src/index.ts +35 -58
  74. package/src/orchestrator/affected-tasks.ts +15 -8
  75. package/src/orchestrator/command-windows.ts +44 -0
  76. package/src/orchestrator/deferred-outputs.ts +12 -10
  77. package/src/orchestrator/doctor.ts +98 -110
  78. package/src/orchestrator/download-policy.ts +3 -3
  79. package/src/orchestrator/events.ts +19 -3
  80. package/src/orchestrator/excluded-keys.ts +0 -2
  81. package/src/orchestrator/execute-task.ts +147 -69
  82. package/src/orchestrator/failure-mode.ts +19 -10
  83. package/src/orchestrator/fingerprint-watch.ts +18 -15
  84. package/src/orchestrator/forecast.ts +10 -2
  85. package/src/orchestrator/framed-output.ts +9 -5
  86. package/src/orchestrator/graph-stage.ts +5 -5
  87. package/src/orchestrator/history.ts +126 -30
  88. package/src/orchestrator/hit-restore.ts +15 -3
  89. package/src/orchestrator/index.ts +20 -5
  90. package/src/orchestrator/local-shortcircuit.ts +2 -1
  91. package/src/orchestrator/lockfile-claim.ts +79 -20
  92. package/src/orchestrator/logger.ts +80 -41
  93. package/src/orchestrator/metrics.ts +78 -9
  94. package/src/orchestrator/miss-save.ts +3 -0
  95. package/src/orchestrator/options.ts +42 -29
  96. package/src/orchestrator/output-host.ts +72 -0
  97. package/src/orchestrator/plan.ts +6 -8
  98. package/src/orchestrator/plugin-host.ts +100 -66
  99. package/src/orchestrator/plugin.ts +173 -67
  100. package/src/orchestrator/prepare.ts +163 -78
  101. package/src/orchestrator/projects.ts +105 -99
  102. package/src/orchestrator/remote-prefetch.ts +11 -6
  103. package/src/orchestrator/run-context.ts +25 -6
  104. package/src/orchestrator/run-failures.ts +17 -8
  105. package/src/orchestrator/run-lock.ts +1 -1
  106. package/src/orchestrator/run-records.ts +1 -1
  107. package/src/orchestrator/run-report.ts +9 -9
  108. package/src/orchestrator/run-settings.ts +48 -0
  109. package/src/orchestrator/run.ts +244 -119
  110. package/src/orchestrator/sandbox-fix.ts +39 -20
  111. package/src/orchestrator/sandbox-request.ts +84 -13
  112. package/src/orchestrator/signals.ts +1 -1
  113. package/src/orchestrator/stable-keys.ts +13 -11
  114. package/src/orchestrator/status-line.ts +49 -7
  115. package/src/orchestrator/summary.ts +115 -106
  116. package/src/orchestrator/task-hash.ts +12 -83
  117. package/src/orchestrator/telemetry.ts +4 -4
  118. package/src/settings.ts +428 -0
  119. package/src/{orchestrator → util}/colors.ts +5 -0
  120. package/src/util/config-frame.ts +31 -2
  121. package/src/util/errors.ts +33 -1
  122. package/src/util/essential-env.ts +31 -0
  123. package/src/util/hide-env.ts +107 -0
  124. package/src/util/index.ts +16 -3
  125. package/src/util/paths.ts +10 -0
  126. package/src/util/refusal-notice.ts +111 -0
  127. package/src/util/report.ts +31 -0
  128. package/src/util/settle.ts +49 -30
  129. package/src/util/size.ts +23 -4
  130. package/src/util/timing.ts +3 -2
  131. package/src/util/ui.ts +186 -0
  132. package/src/util/ulid.ts +1 -1
  133. package/src/util/verbs.ts +0 -15
  134. package/src/workspace/affected.ts +84 -232
  135. package/src/workspace/config-eval.ts +15 -20
  136. package/src/workspace/config-imports.ts +78 -3
  137. package/src/workspace/config-schema.ts +209 -268
  138. package/src/workspace/dependency-rules.ts +65 -0
  139. package/src/workspace/filter.ts +2 -2
  140. package/src/workspace/fingerprint.ts +11 -121
  141. package/src/workspace/index.ts +20 -27
  142. package/src/workspace/load-reads.ts +4 -4
  143. package/src/workspace/lockfile.ts +96 -140
  144. package/src/workspace/migration.ts +307 -215
  145. package/src/workspace/package-graph.ts +30 -216
  146. package/src/workspace/project-loader.ts +80 -285
  147. package/src/workspace/repo-id.ts +2 -1
  148. package/src/workspace/workspace.ts +363 -831
  149. package/src/cache/config-evals.ts +0 -130
  150. package/src/workspace/config-cache.ts +0 -661
  151. 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 with one
31
- Nx-borrowed extension.
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 fingerprint | yes | yes | yes | `src/cache/layer.ts` (`workspaceFingerprint`) |
41
- | Forwarded CLI args (after `--`) | yes | yes | yes | `src/cache/layer.ts` (`forwardArgs`) |
42
- | Project `package.json` bytes (direct) | via lockfile | `externalDependencies` | **direct** | `src/cache/layer.ts` ("Turbo / Nx parity") |
43
-
44
- The `package.json` fold is the Nx-borrowed move (Turbo gets it
45
- transitively through the lockfile; Nx's `externalDependencies` does it
46
- explicitly). We fold the bytes directly so narrow `cache.inputs.files`
47
- like `['src/**']` doesn't miss a `package.json` dep bump.
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` | pnpm + Turbo | `src/workspace/workspace.ts` |
97
- | Read `package.json` `workspaces` (npm/yarn/bun) | Turbo | `src/workspace/workspace.ts` |
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
- | Implicit project-`package.json` invalidation | Turbo (via lockfile) + Nx (`externalDependencies`) | `src/orchestrator/task-hash.ts` ("Matches Turbo and Nx") |
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