@vzn/vx 0.0.640 → 0.0.642

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 (76) hide show
  1. package/launcher.sh +9 -2
  2. package/package.json +5 -12
  3. package/skills/vx/SKILL.md +4 -4
  4. package/src/bin.ts +8 -6
  5. package/src/cache/archive.ts +735 -107
  6. package/src/cache/cache.ts +133 -29
  7. package/src/cache/fold-memo.ts +58 -0
  8. package/src/cache/git-inputs.ts +213 -31
  9. package/src/cache/index.ts +9 -2
  10. package/src/cache/inputs.ts +244 -108
  11. package/src/cache/key-fold.ts +90 -69
  12. package/src/cache/layer.ts +9 -7
  13. package/src/cache/layered-cache.ts +74 -9
  14. package/src/cache/output-index.ts +25 -4
  15. package/src/cache/remote-lane.ts +27 -10
  16. package/src/cache/schema.ts +13 -3
  17. package/src/cache/scoped-cache.ts +11 -3
  18. package/src/cache/umask.ts +29 -0
  19. package/src/cli/docs.ts +71 -7
  20. package/src/cli/help.ts +11 -5
  21. package/src/cli/plan-format.ts +4 -1
  22. package/src/cli/run.ts +10 -3
  23. package/src/cli/select.ts +2 -0
  24. package/src/cli/upgrade.ts +37 -2
  25. package/src/cli/watch-filter.ts +1 -6
  26. package/src/cli/watch-fs.ts +2 -1
  27. package/src/exec/runner.ts +5 -0
  28. package/src/exec/sandbox-runtime.ts +81 -1
  29. package/src/graph/priorities.ts +14 -1
  30. package/src/handoff.ts +5 -0
  31. package/src/history/history.ts +43 -33
  32. package/src/index.ts +11 -1
  33. package/src/orchestrator/deferred-outputs.ts +3 -2
  34. package/src/orchestrator/execute-task.ts +20 -14
  35. package/src/orchestrator/hit-restore.ts +111 -29
  36. package/src/orchestrator/index.ts +1 -0
  37. package/src/orchestrator/local-shortcircuit.ts +8 -0
  38. package/src/orchestrator/lockfile-claim.ts +54 -8
  39. package/src/orchestrator/miss-save.ts +27 -17
  40. package/src/orchestrator/output-host.ts +9 -1
  41. package/src/orchestrator/plan.ts +4 -0
  42. package/src/orchestrator/plugin-host.ts +35 -5
  43. package/src/orchestrator/plugin.ts +29 -3
  44. package/src/orchestrator/prepare.ts +74 -5
  45. package/src/orchestrator/projects.ts +6 -1
  46. package/src/orchestrator/run-report.ts +30 -9
  47. package/src/orchestrator/run.ts +62 -38
  48. package/src/orchestrator/sandbox-request.ts +1 -48
  49. package/src/orchestrator/save-lane.ts +17 -10
  50. package/src/orchestrator/signals.ts +7 -10
  51. package/src/orchestrator/stable-keys.ts +83 -25
  52. package/src/orchestrator/task-hash.ts +46 -12
  53. package/src/report/events.ts +12 -0
  54. package/src/report/framed-output.ts +2 -1
  55. package/src/report/logger.ts +58 -15
  56. package/src/report/status-line.ts +45 -4
  57. package/src/report/summary.ts +11 -6
  58. package/src/util/errors.ts +1 -1
  59. package/src/util/hidden-prompt.ts +74 -0
  60. package/src/util/index.ts +13 -0
  61. package/src/util/paths.ts +58 -5
  62. package/src/util/secrets.ts +150 -0
  63. package/src/workspace/affected.ts +63 -13
  64. package/src/workspace/config-eval.ts +2 -2
  65. package/src/workspace/config-schema.ts +37 -3
  66. package/src/workspace/project-loader.ts +6 -4
  67. package/src/workspace/workspace.ts +17 -11
  68. package/docs/caching.md +0 -2352
  69. package/docs/cli.md +0 -3280
  70. package/docs/execution.md +0 -675
  71. package/docs/features.md +0 -178
  72. package/docs/patterns.md +0 -219
  73. package/docs/schema.md +0 -2461
  74. package/docs/security.md +0 -252
  75. package/src/cli/docs-corpus.ts +0 -21
  76. package/src/cli/docs-text.d.ts +0 -5
package/launcher.sh CHANGED
@@ -35,8 +35,15 @@ scope=${scope##*/}
35
35
  # directory up to the git top-level (handoff.ts workspaceFile, the same
36
36
  # rule). One hop (VX_HANDED_OFF, which also names this launcher), never to
37
37
  # this package itself (`-ef`: same inode, so a pnpm symlink counts as
38
- # itself). Shell tests and builtins only, no fork per level.
39
- if [ -z "${VX_HANDED_OFF-}" ]; then
38
+ # itself). Shell tests and builtins only, no fork per level. `vx upgrade -g`
39
+ # moves only this global vx, so it never hands off (owner, 2026-10-16).
40
+ stay=
41
+ if [ "${1-}" = upgrade ]; then
42
+ for a in "$@"; do
43
+ case $a in -g | --global) stay=1 ;; esac
44
+ done
45
+ fi
46
+ if [ -z "${VX_HANDED_OFF-}" ] && [ -z "$stay" ]; then
40
47
  d=$PWD
41
48
  while :; do
42
49
  root=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vzn/vx",
3
- "version": "0.0.640",
3
+ "version": "0.0.642",
4
4
  "description": "Task orchestration you own: correct, sandboxed, extensible, with a content-addressed build cache.",
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.640",
25
- "@vzn/vx-linux-arm64": "0.0.640",
26
- "@vzn/vx-darwin-x64": "0.0.640",
27
- "@vzn/vx-darwin-arm64": "0.0.640"
24
+ "@vzn/vx-linux-x64": "0.0.642",
25
+ "@vzn/vx-linux-arm64": "0.0.642",
26
+ "@vzn/vx-darwin-x64": "0.0.642",
27
+ "@vzn/vx-darwin-arm64": "0.0.642"
28
28
  },
29
29
  "dependencies": {
30
30
  "@anthropic-ai/sandbox-runtime": "^0.0.76"
@@ -35,13 +35,6 @@
35
35
  "config",
36
36
  "schemas",
37
37
  "skills",
38
- "docs/cli.md",
39
- "docs/schema.md",
40
- "docs/caching.md",
41
- "docs/execution.md",
42
- "docs/patterns.md",
43
- "docs/security.md",
44
- "docs/features.md",
45
38
  "launcher.sh",
46
39
  "launcher.cjs",
47
40
  "README.md",
@@ -23,7 +23,7 @@ task failed or was skipped, or the command was refused. `vx last --format
23
23
  json` prints the run as JSON afterwards, a row per task. A refusal under
24
24
  `--format json` (or `--dry=json`) is one line on stdout,
25
25
  `{"ok":false,"error":{"code","message","docs"}}`: branch on `code`;
26
- `docs` (or `vx docs <code>` offline) says what to do.
26
+ `docs` (or `vx docs <code>`) says what to do.
27
27
  Without a TTY a missing task name never prompts: vx exits 1 and lists the
28
28
  tasks it found.
29
29
 
@@ -95,9 +95,9 @@ vx info --format json # vx and Bun versions, projects, config errors, plugins,
95
95
  the config, do not force. A task with no `inputs` has no key, so every
96
96
  cached task behind it misses: give it `inputs`.
97
97
  - Every JSON shape is a JSON Schema in `node_modules/@vzn/vx/schemas/`.
98
- - Offline reference: `vx docs <words> --format json` searches the CLI, config
99
- and cache pages that ship with vx; the sections holding every word print
100
- whole.
98
+ - Reference: `vx docs <words> --format json` searches the reference pages at
99
+ this vx's release tag on GitHub (online); the sections holding every word
100
+ print whole.
101
101
  - Docs as markdown: https://vznjs.github.io/vx/llms.txt (its index).
102
102
  When that host is unreachable, the same pages are
103
103
  `https://raw.githubusercontent.com/vznjs/vx/main/packages/vx-docs/src/content/docs/<page>.md`:
package/src/bin.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env -S bun --no-env-file --no-install
2
2
  // Wrapped in an explicit async main so `bun build --compile` accepts
3
3
  // the file. The compile target doesn't allow top-level await.
4
- import { handOff, localVx, vxPath } from './handoff.js'
4
+ import { handOff, localVx, upgradesOnlyItself, vxPath } from './handoff.js'
5
5
 
6
6
  let settled = false
7
7
 
@@ -10,11 +10,13 @@ async function main(): Promise<void> {
10
10
  try {
11
11
  // Inside the try: `process.cwd()` throws EMFILE when out of descriptors,
12
12
  // and that is a one-line UserError below, not a stack.
13
- const local = await localVx(
14
- process.cwd(),
15
- process.execPath,
16
- Bun.main.startsWith('/$bunfs') || (process.argv[1] ?? '').startsWith('/$bunfs'),
17
- )
13
+ const local = upgradesOnlyItself(argv)
14
+ ? null
15
+ : await localVx(
16
+ process.cwd(),
17
+ process.execPath,
18
+ Bun.main.startsWith('/$bunfs') || (process.argv[1] ?? '').startsWith('/$bunfs'),
19
+ )
18
20
  if (local !== null) await handOff(local, argv)
19
21
  // `vx --version` needs one leaf module; the dispatcher and the util
20
22
  // barrel it pulled in were 20 ms of its 28 (2026-10-01).