@helix3/helix-cli 0.1.22-helix3.411 → 0.1.22-helix3.413

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 (38) hide show
  1. package/README.md +1 -0
  2. package/dist/index.js +12 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/tsconfig.build.tsbuildinfo +1 -1
  5. package/dist/vehicle/addon.d.ts +12 -2
  6. package/dist/vehicle/addon.js +17 -4
  7. package/dist/vehicle/addon.js.map +1 -1
  8. package/dist/vehicle/addonPublished.d.ts +8 -0
  9. package/dist/vehicle/addonPublished.js +65 -2
  10. package/dist/vehicle/addonPublished.js.map +1 -1
  11. package/dist/vehicle/hostFrame.d.ts +78 -0
  12. package/dist/vehicle/hostFrame.js +136 -0
  13. package/dist/vehicle/hostFrame.js.map +1 -0
  14. package/dist/vehicle/preview.d.ts +10 -0
  15. package/dist/vehicle/preview.js +85 -0
  16. package/dist/vehicle/preview.js.map +1 -1
  17. package/dist/vehicle/validate.d.ts +7 -0
  18. package/dist/vehicle/validate.js +22 -0
  19. package/dist/vehicle/validate.js.map +1 -1
  20. package/dist/vehicle/wheelDesign.d.ts +98 -0
  21. package/dist/vehicle/wheelDesign.js +276 -0
  22. package/dist/vehicle/wheelDesign.js.map +1 -0
  23. package/dist/visualQa/browser.d.ts +7 -0
  24. package/dist/visualQa/browser.js +12 -1
  25. package/dist/visualQa/browser.js.map +1 -1
  26. package/dist/visualQa/harness.d.ts +2 -0
  27. package/dist/visualQa/vehicle.d.ts +6 -0
  28. package/dist/visualQa/vehicle.js +59 -3
  29. package/dist/visualQa/vehicle.js.map +1 -1
  30. package/docs/vehicle-simulate.md +1 -0
  31. package/package.json +1 -1
  32. package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.cpython-312.pyc +0 -0
  33. package/plugins/beamng-vehicle/bin/__pycache__/beamng_audio.cpython-312.pyc +0 -0
  34. package/plugins/beamng-vehicle/bin/__pycache__/beamng_engine.cpython-312.pyc +0 -0
  35. package/plugins/beamng-vehicle/bin/__pycache__/beamng_expression.cpython-312.pyc +0 -0
  36. package/plugins/beamng-vehicle/bin/__pycache__/beamng_jbeam.cpython-312.pyc +0 -0
  37. package/plugins/beamng-vehicle/bin/__pycache__/beamng_materials.cpython-312.pyc +0 -0
  38. package/plugins/beamng-vehicle/bin/__pycache__/test_beamng_engine.cpython-312.pyc +0 -0
package/README.md CHANGED
@@ -595,6 +595,7 @@ Every finding prints as `CODE path — message` plus a `fix:` line; `--json` re
595
595
  | Cross-field | `GROUND_TO_BODY_ORIGIN_MISMATCH` (> 5 mm; fix the ride height, the field is locked after first publish), `COMPONENT_BUILD_DIGEST_MISMATCH` (prints the computed digest), `COMPONENT_ACTIONS_MISMATCH` (prints the compiled protocol), `COMPONENT_BUILD_INVALID`, `PANEL_SIGNAL_NO_ACTION` (warn), `SEAT_SOCKET_UNKNOWN` (warn) |
596
596
  | Drive (package `targets`) | `SIMULATED_PERFORMANCE_OUT_OF_TOLERANCE` (figure, simulated, target, error, tolerance, engine version), `SIMULATED_REST_POSE_INVALID`, `SIMULATION_UNAVAILABLE` (warn: no runtime reachable or cached) |
597
597
  | `--glb` host manifest | `HOST_MANIFEST_MISSING`, `HOST_MANIFEST_MISPLACED` (found in scene/document/node extras; the backend reads only `asset.extras.HELIX_vehicle`), `HOST_MANIFEST_EMPTY`, `HOST_MANIFEST_DIVERGENT`, `HOST_MANIFEST_SOCKET_INVALID`, `HOST_MANIFEST_SOCKET_NAME_INVALID`, `HOST_MANIFEST_SOCKET_NODE_MISSING`. `helix continuum publish-package` refuses a `vehicle` Package descriptor whose model GLB has any of these errors before sealing. See [docs/vehicle-simulate.md](docs/vehicle-simulate.md#host-manifest) |
598
+ | `--glb` host-frame bind contract | `HOST_BIND_ROOT_MISSING` (no `vehicle_root` node), `HOST_BIND_MOUNT_NODE_MISSING` (an offered `boot`/`bonnet` socket with no node to mount on), `HOST_BIND_ROOT_NOT_OWNER` (the lid node is outside `vehicle_root`): a host that offers a lid socket must carry the nodes a host-frame add-on binds to, or the runtime throws while composing the car and it is never presented. `vehicle addon check --host`, `vehicle addon check <dir>` and `vehicle preview --addon` apply the same rule to the add-ons' own `bind { socket, root }`; `vehicle preview` refuses before launching a browser and fails at once on a `[helix-vehicle] composition failed` console line or a page error |
598
599
  | `--glb` | `WHEEL_NODES_MISSING`, `WHEEL_PIVOT_NOT_AT_HUB` (origin > 2 cm from the centre of its geometry — the wheel add-on anchor lands there), `WHEEL_ORIGINS_NOT_DISTINCT`, `WHEEL_FRAME_MIRRORED_X`, `WHEEL_FRAME_FRONT_NOT_PLUS_Z`, `WHEEL_NODE_EMPTY` (warn), `LENGTH_NOT_ALONG_Z` (warn), `PANEL_NODE_MISSING`, `PANEL_ROLE_MISSING_DOOR` / `PANEL_ROLE_NO_NODE_BONNET` / `PANEL_ROLE_NO_NODE_BOOT` / `PANEL_ROLE_UNDECLARED_BONNET` / `PANEL_ROLE_UNDECLARED_BOOT` (warn: a four-wheeled car should articulate its doors, bonnet and boot / engine cover), the lamp-coverage gate on the lit geometry (`LAMP_INDICATOR_REAR_MISSING` / `LAMP_INDICATOR_FRONT_MISSING` / `LAMP_INDICATOR_SIDE_UNLIT` / `LAMP_INDICATOR_NO_ROWS` / `LAMP_NODE_UNLIT` / `LAMP_REPEATER_UNLIT` / `LAMP_FUNCTION_NO_ROW` errors, `LAMP_ROW_NO_TARGET` / `LAMP_NO_LIGHTING_ROWS` / `LAMP_INDICATOR_REAR_OPTED_OUT` warns; the documented opt-out for a car that really has no rear indicators is `lights.noRearIndicators: "<why, with source>"`), `VEHICLE_BUDGET_TRIANGLES` / `_MATERIALS` / `_TEXTURE_EDGE` / `_DRAW_CALLS` / `_FILE_SIZE` |
599
600
 
600
601
  The model frame is glTF: +X is the vehicle's left, +Y up, +Z forward, metres. Wheel nodes are found by name with
package/dist/index.js CHANGED
@@ -655,6 +655,11 @@ vehicleCommand
655
655
  .option('--occupants', 'also seat an avatar in every seat, judge the cabin, and report where the runtime\'s cabin fit put each seat vs where it was authored (slow)')
656
656
  .option('--reference-paint <#rrggbb>', 'the reference body paint colour, the median of the body-paint pixels in the reference photos: renders the body paint alone from six cameras in the Try Now daylight (the world\'s own sun, exposure, tone mapping and lights) and fails on hue, saturation, lightness or highlight wash. White/silver/grey/black are judged on tint and lightness instead of hue')
657
657
  .option('--paint-tolerance <deg>', 'maximum circular hue distance (degrees) the rendered body may sit from a chromatic --reference-paint (default 12)', (v) => Number(v))
658
+ .option('--reference-wheel <image>', 'a close-up photo of the real wheel, face-on or nearly: renders the candidate\'s front-left wheel square-on and fails vehicle.wheels.design.* on spoke count and centre cap (a different finish fails, a neighbouring one warns). The photo\'s wheel is read from the image centre unless --reference-wheel-crop says where it is')
659
+ .option('--reference-wheel-spokes <n>', 'declare the real wheel\'s spoke count (overrides the count read from the photo; use it for an oblique or tight photo)', (v) => Number(v))
660
+ .option('--reference-wheel-finish <finish>', 'declare the real wheel\'s finish: silver, chrome, gunmetal, black, bronze, gold or coloured (overrides the finish read from the photo)')
661
+ .option('--reference-wheel-cap <yes|no>', 'declare whether the real wheel has a centre cap (overrides the photo)')
662
+ .option('--reference-wheel-crop <cx,cy,r>', 'where the wheel sits in the photo, as fractions: centre x of the width, centre y of the height, tyre outer radius of the shorter side (default 0.5,0.5,0.45)')
658
663
  .option('--storage-state <file>', 'Playwright storageState of a signed-in QA account (default: sign in with `helix login`, or $HELIX_VQA_STORAGE_STATE)')
659
664
  .option('--chrome <path>', 'Chromium executable (default: Playwright Chromium / Chrome for Testing, headless; the macOS system Chrome is refused)')
660
665
  .option('--api-url <url>', 'platform API base URL')
@@ -672,6 +677,13 @@ vehicleCommand
672
677
  target, addOns: opts.addon, item: opts.item, toleranceCm: Number.isFinite(opts.toleranceCm) ? opts.toleranceCm : undefined,
673
678
  glb: opts.glb, out: opts.out, proxyItem: opts.proxyItem, occupants: opts.occupants, apiBase, webBase,
674
679
  referencePaint: opts.referencePaint, paintToleranceDeg: Number.isFinite(opts.paintTolerance) ? opts.paintTolerance : undefined,
680
+ referenceWheel: opts.referenceWheel ? {
681
+ image: opts.referenceWheel,
682
+ ...(Number.isFinite(opts.referenceWheelSpokes) ? { spokeCount: opts.referenceWheelSpokes } : {}),
683
+ ...(opts.referenceWheelFinish ? { finish: opts.referenceWheelFinish } : {}),
684
+ ...(opts.referenceWheelCap ? { centreCap: /^(y|yes|true|1)$/i.test(opts.referenceWheelCap) } : {}),
685
+ ...(opts.referenceWheelCrop ? { crop: ((p) => ({ cx: p[0], cy: p[1], radius: p[2] }))(opts.referenceWheelCrop.split(',').map(Number)) } : {}),
686
+ } : undefined,
675
687
  token: creds?.token ?? null, storageState: opts.storageState ?? process.env.HELIX_VQA_STORAGE_STATE, chrome: opts.chrome, quiet: opts.json,
676
688
  });
677
689
  }