@helix3/helix-cli 0.1.18-helix3.369 → 0.1.18-helix3.370

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 (30) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +12 -4
  3. package/dist/index.js.map +1 -1
  4. package/dist/tsconfig.build.tsbuildinfo +1 -1
  5. package/dist/vehicle/preview.d.ts +106 -1
  6. package/dist/vehicle/preview.js +166 -22
  7. package/dist/vehicle/preview.js.map +1 -1
  8. package/dist/vehicle/previewAddon.d.ts +192 -0
  9. package/dist/vehicle/previewAddon.js +403 -0
  10. package/dist/vehicle/previewAddon.js.map +1 -0
  11. package/dist/vehicle/previewSeats.d.ts +93 -0
  12. package/dist/vehicle/previewSeats.js +163 -0
  13. package/dist/vehicle/previewSeats.js.map +1 -0
  14. package/dist/visualQa/harness.d.ts +5 -0
  15. package/dist/visualQa/vehicle.js +395 -238
  16. package/dist/visualQa/vehicle.js.map +1 -1
  17. package/dist/visualQa/vehicleAddonProbe.d.ts +1 -0
  18. package/dist/visualQa/vehicleAddonProbe.js +115 -0
  19. package/dist/visualQa/vehicleAddonProbe.js.map +1 -0
  20. package/dist/visualQa/vehiclePreview.d.ts +22 -0
  21. package/dist/visualQa/vehiclePreview.js +72 -27
  22. package/dist/visualQa/vehiclePreview.js.map +1 -1
  23. package/package.json +1 -1
  24. package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.cpython-312.pyc +0 -0
  25. package/plugins/beamng-vehicle/bin/__pycache__/beamng_audio.cpython-312.pyc +0 -0
  26. package/plugins/beamng-vehicle/bin/__pycache__/beamng_engine.cpython-312.pyc +0 -0
  27. package/plugins/beamng-vehicle/bin/__pycache__/beamng_expression.cpython-312.pyc +0 -0
  28. package/plugins/beamng-vehicle/bin/__pycache__/beamng_jbeam.cpython-312.pyc +0 -0
  29. package/plugins/beamng-vehicle/bin/__pycache__/beamng_materials.cpython-312.pyc +0 -0
  30. package/plugins/beamng-vehicle/bin/__pycache__/test_beamng_engine.cpython-312.pyc +0 -0
package/README.md CHANGED
@@ -46,7 +46,7 @@ The token is stored in `~/.helix/credentials.json` (mode `600`). It's sent as
46
46
  | `helix publish [dir] [--thumbnail <file>] [--upload-source] [--source-dir <path>]` | Validate → resolve/create the world → upload files → finalize → set the cover image → print the play URL. `--upload-source` additionally sends the project's source through a separate private channel so the world can be edited on the website later — **off by default**. |
47
47
  | `helix list` | List your worlds. |
48
48
  | `helix vehicle validate <vehicle-package.json> [--glb <model.glb>] [--json]` | One-second local gate for a hand-authored Universal Vehicle, run before `item publish`. Checks the package against the engine's own validator (vendored, pinned to an engine commit), the engine publish gate, the backend pin requirements, `groundToBodyOrigin` vs `wheelRadius + staticRideHeight`, and the `componentBuild` digest; with `--glb` also resolves the four wheel nodes, checks each wheel node's origin is at its hub (`WHEEL_PIVOT_NOT_AT_HUB`), the +X-left / +Z-forward frame, the vehicle publish budgets and the articulation nodes. Exit `0` no errors, `1` errors, `2` unreadable input. See [Vehicle validate](#vehicle-validate). |
49
- | `helix vehicle preview <dir-or-package.json> [--glb <model.glb>] [--out <dir>] [--proxy-item <id>] [--json]` | Render a vehicle that is **not published yet** headless in the real runtime (hosted test grounds, Try Now through a published proxy vehicle whose car is swapped for your package + GLB, served from disk; nothing uploaded or recorded) and measure it: body-origin height against the declared `groundToBodyOrigin` (the number that locks at first mint), wheels on their hubs, arch clearance, rolling radius vs `wheelRadius`, steering, doors, seats. Prints a numeric summary with PASS/FAIL per check and writes frames, a contact sheet, `bundle.json` and `preview.json`. Exit `0` pass, `1` fail, `2` could not measure. See [docs/vehicle-preview.md](docs/vehicle-preview.md). |
49
+ | `helix vehicle preview [<dir-or-package.json>] [--glb <model.glb>] [--addon <dir>]… [--item <id>] [--tolerance-cm <cm>] [--out <dir>] [--proxy-item <id>] [--json]` | Render a vehicle that is **not published yet** headless in the real runtime (hosted test grounds, Try Now through a published proxy vehicle whose car is swapped for your package + GLB, served from disk; nothing uploaded or recorded) and measure it: body-origin height against the declared `groundToBodyOrigin` (the number that locks at first mint), wheels on their hubs, arch clearance, rolling radius vs `wheelRadius`, steering, doors, seats. Prints a numeric summary with PASS/FAIL per check and writes frames, a contact sheet, `bundle.json` and `preview.json`. Boards with the candidate's own seat ids. With `--addon <dir>` (repeatable) it previews unpublished vehicle **add-ons** instead: fits each to the candidate car or a published car and measures the drawn geometry in world space against its anchor (wheels within 1 cm of each hub, socket/host-framed parts at their mount, not at the car's origin; tune-only ops read back from the live tuning). Exit `0` pass, `1` fail, `2` could not measure. See [docs/vehicle-preview.md](docs/vehicle-preview.md). |
50
50
  | `helix vehicle publish <dir> [--dry-run] [--item <id> --package-version <v> --reason <text>] [--json]` | One command from a vehicle package directory to a sealed, pinned, read-back-verified vehicle item: validate → upload each local WAV and write its verified public URL → mint → seal + pin the `vehicle` Package → read back. Resumable (ledger in `<dir>/.helix-publish`). See [Vehicle publish](#vehicle-publish). |
51
51
  | `helix vehicle audio-check <dir\|package.json\|item-id> [--json]` | Proves every sound the runtime will select resolves, is PCM WAV and is audible (pre-publish on local files, or read-back on a published item). |
52
52
  | `helix vehicle addon check <dir> [--grant] [--json]` / `helix vehicle addon publish <dir> [--no-grant] [--dry-run]` | Add-on fit gate (contract, `helixMeshFrame` anchoring, host hubs, hide targets + grants, the backend's `validate-fit` dry run) and the end-to-end add-on publish (grant → upload → seal + pin the `addon` Package → read back). |
package/dist/index.js CHANGED
@@ -636,11 +636,18 @@ vehicleCommand
636
636
  .command('preview')
637
637
  .description('Render a vehicle that is not published yet in the real HELIX runtime (headless) and measure it: ride height against groundToBodyOrigin, '
638
638
  + 'wheels on their hubs, arch clearance, rolling radius, steering, doors, seats. Run it BEFORE the first mint, which locks groundToBodyOrigin. '
639
- + 'Nothing is uploaded or recorded. Exit 0 = every blocking check passed, 1 = a check failed, 2 = could not measure')
640
- .argument('<dir-or-package.json>', 'a directory holding vehicle-package.json + model.glb (the layout `vehicle publish` reads), or the package JSON itself')
639
+ + 'With --addon <dir> it previews unpublished vehicle ADD-ONS instead: each add-on directory (the layout `vehicle addon check|publish` reads) is fitted '
640
+ + 'to the candidate car, or to a published car (--item <id>, no car directory) by the engine\'s own fold, and the DRAWN geometry is measured in world space '
641
+ + 'against its anchor (wheels within 1 cm of each hub, socket-framed parts on their socket, host-framed parts at their authored position, inside the car, '
642
+ + 'not at its origin; a tune-only add-on has its ops read back from the live tuning). Nothing is uploaded or recorded. '
643
+ + 'Exit 0 = every blocking check passed, 1 = a check failed, 2 = could not measure')
644
+ .argument('[dir-or-package.json]', 'a directory holding vehicle-package.json + model.glb (the layout `vehicle publish` reads), or the package JSON itself; omit with --addon to fit to a published car (--item)')
641
645
  .option('--glb <model.glb>', 'the model (default: model.glb, or the one .glb, beside the package)')
646
+ .option('--addon <dir>', 'an UNPUBLISHED add-on directory (addon.json + model.glb) to fit to the car and measure; repeatable', (value, previous = []) => [...previous, value])
647
+ .option('--item <id>', 'with --addon and no car directory: the published vehicle to fit the add-ons to (default: the proxy item)')
648
+ .option('--tolerance-cm <cm>', 'with --addon: how far a drawn part may sit from its anchor (default: wheels 1 cm, socket-framed and host-framed parts 3 cm)', (v) => Number(v))
642
649
  .option('--out <dir>', 'frames, contact-sheet.jpg, bundle.json and preview.json go here (default: <dir>/.helix-preview)')
643
- .option('--proxy-item <id>', 'a published vehicle the QA account can Try Now; the runtime loads it and the candidate replaces its car')
650
+ .option('--proxy-item <id>', 'a published vehicle the QA account can Try Now; the runtime loads it and the candidate replaces its car (and its slot board is what --addon fits to)')
644
651
  .option('--occupants', 'also seat an avatar in every seat and judge the cabin (slow)')
645
652
  .option('--storage-state <file>', 'Playwright storageState of a signed-in QA account (default: sign in with `helix login`, or $HELIX_VQA_STORAGE_STATE)')
646
653
  .option('--chrome <path>', 'Chromium executable (default: Playwright Chromium / Chrome for Testing, headless; the macOS system Chrome is refused)')
@@ -656,7 +663,8 @@ vehicleCommand
656
663
  let summary;
657
664
  try {
658
665
  summary = await runVehiclePreview({
659
- target, glb: opts.glb, out: opts.out, proxyItem: opts.proxyItem, occupants: opts.occupants, apiBase, webBase,
666
+ target, addOns: opts.addon, item: opts.item, toleranceCm: Number.isFinite(opts.toleranceCm) ? opts.toleranceCm : undefined,
667
+ glb: opts.glb, out: opts.out, proxyItem: opts.proxyItem, occupants: opts.occupants, apiBase, webBase,
660
668
  token: creds?.token ?? null, storageState: opts.storageState ?? process.env.HELIX_VQA_STORAGE_STATE, chrome: opts.chrome, quiet: opts.json,
661
669
  });
662
670
  }