@hypersoniclabs/helix-cli 0.1.25-helix3.506 → 0.1.25-helix3.507

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 (52) hide show
  1. package/README.md +1 -0
  2. package/dist/index.js +12 -10
  3. package/dist/index.js.map +1 -1
  4. package/dist/itemLod/artifact.d.ts +143 -0
  5. package/dist/itemLod/artifact.js +198 -0
  6. package/dist/itemLod/artifact.js.map +1 -0
  7. package/dist/itemLod/command.d.ts +12 -0
  8. package/dist/itemLod/command.js +92 -0
  9. package/dist/itemLod/command.js.map +1 -0
  10. package/dist/itemLod/glbFixtures.d.ts +33 -0
  11. package/dist/itemLod/glbFixtures.js +212 -0
  12. package/dist/itemLod/glbFixtures.js.map +1 -0
  13. package/dist/itemLod/impostor.d.ts +24 -0
  14. package/dist/itemLod/impostor.js +102 -0
  15. package/dist/itemLod/impostor.js.map +1 -0
  16. package/dist/itemLod/index.d.ts +15 -0
  17. package/dist/itemLod/index.js +30 -0
  18. package/dist/itemLod/index.js.map +1 -0
  19. package/dist/itemLod/levelGlb.d.ts +28 -0
  20. package/dist/itemLod/levelGlb.js +209 -0
  21. package/dist/itemLod/levelGlb.js.map +1 -0
  22. package/dist/itemLod/model.d.ts +84 -0
  23. package/dist/itemLod/model.js +479 -0
  24. package/dist/itemLod/model.js.map +1 -0
  25. package/dist/itemLod/simplify.d.ts +106 -0
  26. package/dist/itemLod/simplify.js +638 -0
  27. package/dist/itemLod/simplify.js.map +1 -0
  28. package/dist/itemLod/source.d.ts +66 -0
  29. package/dist/itemLod/source.js +81 -0
  30. package/dist/itemLod/source.js.map +1 -0
  31. package/dist/itemLod/textures.d.ts +36 -0
  32. package/dist/itemLod/textures.js +97 -0
  33. package/dist/itemLod/textures.js.map +1 -0
  34. package/dist/placements/source.d.ts +1 -1
  35. package/dist/tsconfig.build.tsbuildinfo +1 -1
  36. package/docs/item-lod.md +151 -0
  37. package/package.json +6 -1
  38. package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.cpython-312.pyc +0 -0
  39. package/plugins/beamng-vehicle/bin/__pycache__/beamng_audio.cpython-312.pyc +0 -0
  40. package/plugins/beamng-vehicle/bin/__pycache__/beamng_engine.cpython-312.pyc +0 -0
  41. package/plugins/beamng-vehicle/bin/__pycache__/beamng_expression.cpython-312.pyc +0 -0
  42. package/plugins/beamng-vehicle/bin/__pycache__/beamng_jbeam.cpython-312.pyc +0 -0
  43. package/plugins/beamng-vehicle/bin/__pycache__/beamng_materials.cpython-312.pyc +0 -0
  44. package/plugins/beamng-vehicle/bin/__pycache__/beamng_stock_events.cpython-312.pyc +0 -0
  45. package/plugins/beamng-vehicle/bin/__pycache__/fmod_studio.cpython-312.pyc +0 -0
  46. package/plugins/beamng-vehicle/bin/__pycache__/fsb5.cpython-312.pyc +0 -0
  47. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio.cpython-312.pyc +0 -0
  48. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_ac.cpython-312.pyc +0 -0
  49. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_beamng.cpython-312.pyc +0 -0
  50. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_fixtures.cpython-312.pyc +0 -0
  51. package/plugins/beamng-vehicle/bin/__pycache__/test_beamng_engine.cpython-312.pyc +0 -0
  52. package/plugins/beamng-vehicle/bin/__pycache__/test_sim_audio.cpython-312.pyc +0 -0
package/README.md CHANGED
@@ -76,6 +76,7 @@ The token is stored in `~/.helix/credentials.json` (mode `600`). It's sent as
76
76
  | `helix item set-version <item-id> --package-version <v> --reason <text> [--expected-current-version-id <uuid>] [--as-admin] [--json]` | Move an item to a sealed Package Version of its own package (pin resolved from the public Package API; `POST /api/v1/universal-items/<id>/versions`). The flow for a **listed** item: `continuum publish-package` seals vN → `item set-version`; the visual check is advisory and never gates the move. A refusal (a technical failure or content safety) prints the server's plain reason first, then the remedy. An unknown version lists the sealed ones. A **vehicle** moves its car with the pin: the version's sealed root (role `vehicle-definition`) is verified against the manifest and sent as `vehiclePackage`, the same rider `vehicle publish --item` sends; a version without one is refused with a pointer to that resume. A version the item **already had** is a rollback: `PUT /api/v1/universal-items/<id>/versions/current { revision, reason }` (the server restores that revision's retained `vehiclePackage`; a pin-only revision has none and is refused). `--as-admin` (platform admins, for an item another account created) posts the same body to `POST /api/v1/admin/universal-items/<id>/versions`: same gates (visual QA included, no override), `--reason` recorded with you as the actor. |
77
77
  | `helix item thumbnail refresh <item-id> [--force] [--dry-run] [--json]` | Re-render a published item's canonical thumbnail from its **active Package Version** with the standard server renderer (`POST /api/v1/universal-items/<id>/thumbnail/regenerate`, owner or admin). Prints the status (`generated` / `current` / `dry-run`), old -> new thumbnail URL, renderer version and the source lane + Package Version. `--dry-run` writes nothing; `--force` re-renders even when the stored thumbnail is current. Moving an item to a new Package Version now refreshes the thumbnail automatically unless you uploaded one. An older backend answers 404 and the CLI says it does not support thumbnail refresh yet. Not the world `helix thumbnail set <slug>` command. |
78
78
  | `helix item thumbnail set <item-id> <image> [--json]` | Upload your own thumbnail (png/jpg/webp, up to 10 MiB, checked locally) for a published item (`PUT /api/v1/universal-items/<id>/thumbnail`, moderated). A creator upload stays in place across version moves until you run `thumbnail refresh --force`. 403 = you are not the item's owner. |
79
+ | `helix item lods <packageId>[@version] \| --item <id> \| --glb <file> [--out <dir>] [--variant <id>] [--api-url <url>] [--json]` | Compile the `helix.item-lod/1` Runtime Artifact for a published prop, Device or vehicle Package Version: LOD1 (at most 25% of the triangles, textures at most 512 px) and LOD2 (at most 300 triangles, textures at most 256 px), each its own GLB with its own downsampled UASTC KTX2 textures and a measured `maxErrorM`, plus an 8-view 512 px octahedral impostor atlas. Content-addressed and deterministic; a source of 300 triangles or fewer waives the LOD1 cap; skinned input (avatars, add-ons) is refused. Local preview; the backend worker is the catalogue's source of truth. See [docs/item-lod.md](docs/item-lod.md). |
79
80
  | `helix device create <dir> --id <slug> --title <t> --model <mesh.glb> --template standing-desk\|clock\|television` | Scaffold a GLB-backed `helix.device/1` definition, including the interactive TV/media-player template. There is intentionally no website Device editor. |
80
81
  | `helix device validate [dir] [--json]` | Validate the definition, GLB bytes and named-node bindings, typed state/controls, capabilities, and Home+World compatibility, including [declarative character hand reach](docs/device-hand-reach.md). |
81
82
  | `helix device test [dir] [--mode single\|multiplayer\|both] [--json]` | Exercise every interaction, persistence remount, and deterministic one-/two-client authority convergence. |
package/dist/index.js CHANGED
@@ -41,17 +41,18 @@ const moveUx_1 = require("./visualQa/moveUx");
41
41
  const validate_1 = require("./vehicle/validate");
42
42
  const commander_1 = require("commander");
43
43
  const commands_1 = require("./sceneHlod/commands");
44
+ const command_1 = require("./itemLod/command");
44
45
  const commands_2 = require("./scenePerf/commands");
45
46
  const commands_3 = require("./sceneSplit/commands");
46
- const command_1 = require("./city/import/cs2/command");
47
+ const command_2 = require("./city/import/cs2/command");
47
48
  const buildingsCommand_1 = require("./cs2/convert/buildingsCommand");
48
49
  const commands_4 = require("./sceneCreate/commands");
49
50
  const commands_5 = require("./city/source/commands");
50
- const command_2 = require("./city/import/osm/command");
51
- const command_3 = require("./city/buildings/command");
51
+ const command_3 = require("./city/import/osm/command");
52
+ const command_4 = require("./city/buildings/command");
52
53
  const commands_6 = require("./model/commands");
53
- const command_4 = require("./city/roads/command");
54
- const command_5 = require("./cs2/restyle/command");
54
+ const command_5 = require("./city/roads/command");
55
+ const command_6 = require("./cs2/restyle/command");
55
56
  const propsCommand_1 = require("./cs2/propsCommand");
56
57
  const placementRequest_1 = require("./placementRequest");
57
58
  const bundle_1 = require("./bundle");
@@ -6061,6 +6062,7 @@ const scene = program
6061
6062
  .command('scene')
6062
6063
  .description('Bring a captured world into the scene sources a HELIX world streams');
6063
6064
  (0, commands_1.registerSceneHlodCommands)(scene, fail);
6065
+ (0, command_1.registerItemLodCommand)(item, fail);
6064
6066
  (0, commands_2.registerScenePerfCommands)(scene);
6065
6067
  (0, commands_3.registerSceneSplitCommands)(scene, fail);
6066
6068
  (0, commands_4.registerSceneCreateCommands)(scene, fail);
@@ -6068,11 +6070,11 @@ const city = program
6068
6070
  .command('city')
6069
6071
  .description('City pipelines: the neutral city source every importer writes and every generator reads');
6070
6072
  (0, commands_5.registerCitySourceCommands)(city, fail);
6071
- (0, command_2.registerCityImportOsm)(city, fail);
6072
- (0, command_3.registerCityBuildings)(city, fail);
6073
- (0, command_1.registerCityImportCs2)(city, fail);
6074
- (0, command_4.registerCityRoadsCommands)(city, fail);
6075
- (0, command_5.registerCityRoadsRestyleCs2)(city, fail);
6073
+ (0, command_3.registerCityImportOsm)(city, fail);
6074
+ (0, command_4.registerCityBuildings)(city, fail);
6075
+ (0, command_2.registerCityImportCs2)(city, fail);
6076
+ (0, command_5.registerCityRoadsCommands)(city, fail);
6077
+ (0, command_6.registerCityRoadsRestyleCs2)(city, fail);
6076
6078
  (0, propsCommand_1.registerCityPropsKit)(city, fail);
6077
6079
  (0, commands_6.registerModelCommands)(program, fail);
6078
6080
  const sceneImport = scene