@helix3/helix-cli 0.1.19-helix3.377 → 0.1.20-helix3.378

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 CHANGED
@@ -49,6 +49,7 @@ The token is stored in `~/.helix/credentials.json` (mode `600`). It's sent as
49
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 continuum publish-glb <mesh.glb> --title <t> [--package-type asset\|character] [--offer marketplace\|world --price-lix <n> --content-rating <rating>]` | Seal a Package first; optional offer makes it ownable. See [Package-first GLB publication](#package-first-glb-publication). |
51
51
  | `helix continuum make-item --package-id <id> --package-version <v> --manifest-cid <cid> --content-rating <rating> [--offer marketplace\|world --price-lix <n>]` | Project one exact sealed Package Version into an Item, with an optional first offer. |
52
+ | `helix continuum publish-owned-item <item-id> --package-id <id> --package-version <v> --manifest-cid <cid> --content-rating <rating> --accept-rating-attestation` | Publish an existing personal Item from its unchanged public sealed Package pin. Offers are separate. |
52
53
  | `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). |
53
54
  | `helix vehicle addon check <dir> [--json]` | Add-on fit gate for local source and host compatibility. |
54
55
  | `helix item list-slots [--json]` | Print the Character-Creator vocabulary a wearable declares: the cosmetic slot tags, and the genders. |
@@ -84,7 +85,7 @@ The token is stored in `~/.helix/credentials.json` (mode `600`). It's sent as
84
85
  | `helix world performance-report [bundle] [--scene <scene-v2.json>] [--package <package-version.json>] [--snapshot <inspect.json>] [--perf <receipt.json>]` | Analyze exact declared scene resources and existing reference-profile budgets, while keeping authored geometry/material/delivery estimates separate from supplied runtime claims. Prints actionable instancing, Palette, lighting, transfer, and visual-QA guidance; it never predicts FPS from static counts. |
85
86
  | `helix world scene-source inventory\|compile <helsinki\|bistro> <archive>` | Verify and safely inventory a known CC BY source archive, then compile deterministic local proxy/detail GLBs and an existing-schema Scene v2 package. |
86
87
  | `helix world scene-source publish <world-id> <package-dir> [--publish]` | Validate the Scene v2 package and print its multipart build receipt. Execution remains dry-run-only until backend private-pin entitlement lands; `--publish` currently fails closed, and access control never changes CC BY rights. |
87
- | `helix continuum publish-source-map\|publish-scratch\|publish-package\|publish-glb\|make-item` | Resume exact-CID object adoption/ingestion, Package lease/seal, optional explicitly authorized Listing, and WorldRelease publication through one creator-owned pipeline. |
88
+ | `helix continuum publish-source-map\|publish-scratch\|publish-package\|publish-glb\|make-item\|publish-owned-item` | Resume exact-CID object adoption/ingestion, Package lease/seal, optional explicitly authorized Listing, and WorldRelease publication through one creator-owned pipeline. |
88
89
  | `helix continuum receipt <job-id>` | Read the sanitized durable receipt for a completed Continuum publication. |
89
90
  | `helix unreal init\|validate\|doctor\|package [project]` | Create and gate a shared-runtime or native-game publish manifest, check optional editor MCP, and assemble a local upload-shaped package. |
90
91
  | `helix unreal publish <candidate> --world <slug>` | Upload a **cooked** Unreal world to HELIX: verify the candidate, presign, upload every artifact, finalize, and promote it as the world's active build. |
@@ -632,6 +633,21 @@ Creating an Item without an active offer grants no creator copy. The same intent
632
633
  interrupted call. The backend derives specialized Item metadata from the sealed Package root;
633
634
  client supplied host, fit, operation and rider metadata is never trusted.
634
635
 
636
+ An Item created with `make-item --personal` keeps its identity when published later. First make
637
+ its Package public and confirm the current sealed pin, then attest its rating and publish that
638
+ existing Item. Publishing opens no acquisition route or creator copy; create a Marketplace or
639
+ World Distribution afterward when it should become available:
640
+
641
+ ```bash
642
+ helix continuum publish-owned-item <item-uuid> --package-id <uuid> \
643
+ --package-version 1.0.0 --manifest-cid cid:sha256:<64-hex> \
644
+ --content-rating everyone --accept-rating-attestation --json
645
+ ```
646
+
647
+ Use `--intent-id <uuidv4>` to retry an interrupted promotion safely. The server requires the
648
+ Package to be public, sealed, current, owned by the creator, and pinned to that Item. A private
649
+ Package cannot be promoted through this Item command.
650
+
635
651
  Existing Item reads, distributions, visual QA and Package Version moves remain available. The
636
652
  former Item-first authoring commands are retired from CLI discovery.
637
653
  Vehicle, add-on, locomotion and interactive definition authors must seal the appropriate Package
package/dist/index.js CHANGED
@@ -4660,6 +4660,47 @@ continuum
4660
4660
  fail(error instanceof lib_1.ApiError ? error.render() : `✖ ${error instanceof Error ? error.message : String(error)}`);
4661
4661
  }
4662
4662
  });
4663
+ continuum
4664
+ .command('publish-owned-item')
4665
+ .description('Publish an existing personal Item from its exact sealed public Package pin; open offers separately')
4666
+ .argument('<item-id>', 'existing Item UUID; identity is preserved')
4667
+ .requiredOption('--package-id <uuid>', 'owned sealed Package UUID')
4668
+ .requiredOption('--package-version <semver>', 'exact current sealed Package Version')
4669
+ .requiredOption('--manifest-cid <cid>', 'exact immutable manifest CID')
4670
+ .requiredOption('--content-rating <rating>', 'creator-attested rating: everyone, teen, mature or adult')
4671
+ .option('--accept-rating-attestation', 'attest that the stated content rating is accurate')
4672
+ .option('--intent-id <uuidv4>', 'stable UUIDv4 for safe retry after an interrupted request')
4673
+ .option('--json', 'emit the unchanged Item and publication receipt')
4674
+ .action(async (itemId, opts) => {
4675
+ try {
4676
+ if (opts.acceptRatingAttestation !== true)
4677
+ throw new Error('--accept-rating-attestation is required to publish an Item');
4678
+ if (!['everyone', 'teen', 'mature', 'adult'].includes(opts.contentRating))
4679
+ throw new Error('--content-rating must be everyone, teen, mature or adult');
4680
+ const creds = requireAuth();
4681
+ const mismatch = (0, config_1.credsEnvMismatchWarning)(creds.apiUrl);
4682
+ if (mismatch)
4683
+ throw new Error(`Refusing to publish an Item:\n${mismatch}`);
4684
+ const { publishOwnedItemFromPackage } = await Promise.resolve().then(() => __importStar(require('./publications')));
4685
+ const receipt = await publishOwnedItemFromPackage({
4686
+ itemId,
4687
+ intentId: opts.intentId,
4688
+ packagePin: { packageId: opts.packageId, version: opts.packageVersion, manifestCid: opts.manifestCid },
4689
+ contentRating: opts.contentRating,
4690
+ acceptRatingAttestation: true,
4691
+ }, creds);
4692
+ if (opts.json)
4693
+ console.log(JSON.stringify(receipt, null, 2));
4694
+ else {
4695
+ console.log(`✔ Published existing Package-backed Item ${receipt.item.id}`);
4696
+ console.log(` package: ${receipt.item.packagePin.packageId}@${receipt.item.packagePin.version}`);
4697
+ console.log(' offers: none opened; use helix item distribution create when ready');
4698
+ }
4699
+ }
4700
+ catch (error) {
4701
+ fail(error instanceof lib_1.ApiError ? error.render() : `✖ ${error instanceof Error ? error.message : String(error)}`);
4702
+ }
4703
+ });
4663
4704
  continuum
4664
4705
  .command('publish-glb')
4665
4706
  .description('Seal a GLB as a Continuum Prop or Character Package; optionally open a Marketplace or World offer')