@helix3/helix-cli 0.1.18-helix3.336 → 0.1.18-helix3.338
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.
- package/README.md +1 -0
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/visualQa/browser.d.ts +2 -0
- package/dist/visualQa/browser.js +78 -0
- package/dist/visualQa/browser.js.map +1 -1
- package/dist/visualQa/candidate.d.ts +79 -0
- package/dist/visualQa/candidate.js +203 -0
- package/dist/visualQa/candidate.js.map +1 -0
- package/dist/visualQa/command.d.ts +20 -0
- package/dist/visualQa/command.js +71 -1
- package/dist/visualQa/command.js.map +1 -1
- package/dist/visualQa/hosted.d.ts +2 -0
- package/dist/visualQa/hosted.js +4 -0
- package/dist/visualQa/hosted.js.map +1 -1
- package/dist/visualQa/resolve.d.ts +13 -2
- package/dist/visualQa/resolve.js +30 -8
- package/dist/visualQa/resolve.js.map +1 -1
- package/dist/visualQa/viewer.d.ts +2 -0
- package/dist/visualQa/viewer.js +33 -2
- package/dist/visualQa/viewer.js.map +1 -1
- package/package.json +1 -1
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_expression.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_jbeam.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_materials.cpython-312.pyc +0 -0
package/README.md
CHANGED
|
@@ -49,6 +49,7 @@ The token is stored in `~/.helix/credentials.json` (mode `600`). It's sent as
|
|
|
49
49
|
| `helix item publish <mesh.glb> --title <t> [--collectible-supply <n>] [initial distribution flags] [--dry-run\|--quote]` | Publish a Standard item by default, or one fixed-supply Collectible. The item definition is separate from acquisition routes. |
|
|
50
50
|
| `helix item distribution create\|list\|update\|disable …` | Manage Marketplace/World Claim or Buy routes without republishing the item or paying another publish fee. |
|
|
51
51
|
| `helix item visual-qa <item-id> [--submit] [--local-critic] [--storage-state <file>] [--host <id…>]` | Render the item's current package version headless in the real runtime (test-grounds world for vehicles and whole avatars, the customiser for add-ons and wearables on every declared host/base, the item viewer for props), measure it, and with `--submit` record the backend's verdict (numeric asserts + vision critic) against that exact version. **Marketplace/Vault listing, distributions and version moves on a public item require a pass.** See [docs/visual-qa.md](docs/visual-qa.md). |
|
|
52
|
+
| `helix item visual-qa <item-id> --package-version <v> [--vehicle-package <file>]` | Render a version the item is **not pinned to yet**, so a refused version move can pass the gate before the pointer moves. Vehicles and avatars go through Try Now (vehicles also need the move's vehicle package), add-ons and wearables through the customiser; the bundle names the candidate, and the vehicle checksum is the one the server minted for that trial. Never falls back to the current version. See [docs/visual-qa-candidate-versions.md](docs/visual-qa-candidate-versions.md). |
|
|
52
53
|
| `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. |
|
|
53
54
|
| `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). |
|
|
54
55
|
| `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
|
@@ -1706,7 +1706,7 @@ item
|
|
|
1706
1706
|
item
|
|
1707
1707
|
.command('visual-qa')
|
|
1708
1708
|
.description('Render an item headless in the real HELIX runtime, measure it, and (with --submit) record the visual-QA verdict that Marketplace/Vault listing requires. --hosted asks the platform to render it on a GPU runner instead')
|
|
1709
|
-
.argument('[item-id]', 'universal item UUID (its CURRENT package version is rendered); omit with --hosted-worker')
|
|
1709
|
+
.argument('[item-id]', 'universal item UUID (its CURRENT package version is rendered, or --package-version); omit with --hosted-worker')
|
|
1710
1710
|
.option('--submit', 'submit frames + measurements to the backend, which judges and records the verdict (needs `helix login`)')
|
|
1711
1711
|
.option('--hosted', 'queue a hosted render on the platform GPU runner and wait for the verdict (needs `helix login`; exit 0 pass, 1 fail, 2 error)')
|
|
1712
1712
|
.option('--retry', 'with --hosted: re-queue after a failed/errored hosted run of this version')
|
|
@@ -1724,12 +1724,19 @@ item
|
|
|
1724
1724
|
.option('--out <dir>', 'bundle directory (frames, bundle.json, contact-sheet.jpg)')
|
|
1725
1725
|
.option('--storage-state <file>', 'Playwright storageState of a signed-in QA account (Try Now and the customiser need one); default $HELIX_VQA_STORAGE_STATE')
|
|
1726
1726
|
.option('--host <id...>', 'only fit onto these host/base item ids (add-ons, wearables)')
|
|
1727
|
+
.option('--package-version <version>', 'render this version of the item\'s pinned package instead of the pin: a version move judged before the pointer moves (vehicles, avatars, add-ons, wearables)')
|
|
1728
|
+
.option('--vehicle-package <file>', 'with --package-version on a vehicle: the version move\'s vehicle package JSON, served by Try Now after server-side preparation')
|
|
1727
1729
|
.option('--chrome <path>', 'Chrome/Chromium executable (default: system Chrome, headless)')
|
|
1728
1730
|
.option('--api-url <url>', 'platform API base URL')
|
|
1729
1731
|
.option('--web-url <url>', 'website base URL (default: the site that serves --api-url)')
|
|
1730
1732
|
.option('--json', 'print the outcome as JSON')
|
|
1731
1733
|
.action(async (id, opts) => {
|
|
1732
1734
|
try {
|
|
1735
|
+
const { validateCandidateFlags, parseVehiclePackage } = await Promise.resolve().then(() => __importStar(require('./visualQa/candidate')));
|
|
1736
|
+
const flagError = validateCandidateFlags({ packageVersion: opts.packageVersion, vehiclePackageFile: opts.vehiclePackage, submitHosted: !!(opts.hosted || opts.status || opts.hostedWorker) });
|
|
1737
|
+
if (flagError)
|
|
1738
|
+
fail(`✖ ${flagError}`);
|
|
1739
|
+
const vehiclePackage = opts.vehiclePackage ? parseVehiclePackage((0, node_fs_1.readFileSync)(opts.vehiclePackage, 'utf8'), opts.vehiclePackage) : null;
|
|
1733
1740
|
const creds = opts.submit || opts.hosted ? requireAuth() : (0, config_1.loadCredentials)();
|
|
1734
1741
|
const apiBase = opts.apiUrl ?? creds?.apiUrl ?? config_1.DEFAULT_API_URL;
|
|
1735
1742
|
const webBase = opts.webUrl ?? process.env.HELIX_WEB_URL ?? (0, config_1.webUrlForApi)(apiBase) ?? config_1.DEFAULT_WEB_URL;
|
|
@@ -1833,6 +1840,8 @@ item
|
|
|
1833
1840
|
out: opts.out,
|
|
1834
1841
|
storageState: opts.storageState ?? process.env.HELIX_VQA_STORAGE_STATE,
|
|
1835
1842
|
hostIds: opts.host,
|
|
1843
|
+
packageVersion: opts.packageVersion?.trim() || null,
|
|
1844
|
+
vehiclePackage,
|
|
1836
1845
|
chrome: opts.chrome,
|
|
1837
1846
|
submit: opts.submit,
|
|
1838
1847
|
localCritic: opts.localCritic,
|