@helix3/helix-cli 0.1.18-helix3.274 → 0.1.18-helix3.275
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/bridge-recipes/unreal/helix-character-creator-male/male-carnival-mask-2.addon.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-carnival-mask-2.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-carnival-mask-3.addon.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-carnival-mask-3.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-eye-hole-mask-2.addon.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-eye-hole-mask-2.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-eye-hole-mask.addon.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-eye-hole-mask.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-marshmallow-mask.addon.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-marshmallow-mask.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-nebula-executive-coat.addon.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-nebula-executive-coat.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-neo-arcane-heir-mantle.addon.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-neo-arcane-heir-mantle.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-neo-arcane-heir-tunic.addon.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-neo-arcane-heir-tunic.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-paper-bag-mask.addon.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-paper-bag-mask.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-pig-mask.addon.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-pig-mask.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-puffer-jacket.addon.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-puffer-jacket.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-pullover-hoodie.addon.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-pullover-hoodie.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-sinth-ascetic-jacket.addon.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-sinth-ascetic-jacket.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-surgeon-mask.addon.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-surgeon-mask.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-tech-hoodie.addon.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/male-tech-hoodie.json +1 -0
- package/bridge-recipes/unreal/helix-character-creator-male/test/recipes.test.js +31 -8
- 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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge-character-addon-profile/1", "title": "Carnival Mask 2", "slug": "male-carnival-mask-2", "hostItemId": "b45e4a1e-0000-4000-8000-000000000001", "hostSha256": "3fdb769bf0dbcc0e1b1b1ae8dd800d6ddedfda976c6422d4de15b80ce71c132b", "slotType": "character.mask@1", "socket": "head", "nodes": [], "ops": []}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge.unreal-asset/1", "slug": "male-carnival-mask-2", "assetPath": "/HelixCharacterCreator/Characters/Clothes/Man/M_Carnival_Mask_2/M_Carnival_Mask_2", "exportMorphTargets": true}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge-character-addon-profile/1", "title": "Carnival Mask 3", "slug": "male-carnival-mask-3", "hostItemId": "b45e4a1e-0000-4000-8000-000000000001", "hostSha256": "3fdb769bf0dbcc0e1b1b1ae8dd800d6ddedfda976c6422d4de15b80ce71c132b", "slotType": "character.mask@1", "socket": "head", "nodes": [], "ops": []}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge.unreal-asset/1", "slug": "male-carnival-mask-3", "assetPath": "/HelixCharacterCreator/Characters/Clothes/Man/M_Carnival_Mask_3/M_Carnival_Mask_3", "exportMorphTargets": true}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge-character-addon-profile/1", "title": "Eye Hole Mask 2", "slug": "male-eye-hole-mask-2", "hostItemId": "b45e4a1e-0000-4000-8000-000000000001", "hostSha256": "3fdb769bf0dbcc0e1b1b1ae8dd800d6ddedfda976c6422d4de15b80ce71c132b", "slotType": "character.mask@1", "socket": "head", "nodes": [], "ops": []}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge.unreal-asset/1", "slug": "male-eye-hole-mask-2", "assetPath": "/HelixCharacterCreator/Characters/Clothes/Man/M_Eye_Hole_Mask_2/M_Eye_Hole_Mask_2_skinning", "exportMorphTargets": true}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge-character-addon-profile/1", "title": "Eye Hole Mask", "slug": "male-eye-hole-mask", "hostItemId": "b45e4a1e-0000-4000-8000-000000000001", "hostSha256": "3fdb769bf0dbcc0e1b1b1ae8dd800d6ddedfda976c6422d4de15b80ce71c132b", "slotType": "character.mask@1", "socket": "head", "nodes": [], "ops": []}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge.unreal-asset/1", "slug": "male-eye-hole-mask", "assetPath": "/HelixCharacterCreator/Characters/Clothes/Man/M_Eye_Hole_Mask/M_Eye_Hole_Mask_skinning", "exportMorphTargets": true}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge-character-addon-profile/1", "title": "Marshmallow Mask", "slug": "male-marshmallow-mask", "hostItemId": "b45e4a1e-0000-4000-8000-000000000001", "hostSha256": "3fdb769bf0dbcc0e1b1b1ae8dd800d6ddedfda976c6422d4de15b80ce71c132b", "slotType": "character.mask@1", "socket": "head", "nodes": [], "ops": []}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge.unreal-asset/1", "slug": "male-marshmallow-mask", "assetPath": "/HelixCharacterCreator/Characters/Clothes/Man/Marshmallow_Mask/M_Marshmallow_Mask", "exportMorphTargets": true}
|
package/bridge-recipes/unreal/helix-character-creator-male/male-nebula-executive-coat.addon.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge-character-addon-profile/1", "title": "Nebula Executive Coat", "slug": "male-nebula-executive-coat", "hostItemId": "b45e4a1e-0000-4000-8000-000000000001", "hostSha256": "3fdb769bf0dbcc0e1b1b1ae8dd800d6ddedfda976c6422d4de15b80ce71c132b", "slotType": "character.top@1", "socket": "chest", "nodes": [], "ops": []}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge.unreal-asset/1", "slug": "male-nebula-executive-coat", "assetPath": "/HelixCharacterCreator/Characters/Clothes/Man/Nebula_Executive_Coat/SKM_M_Nebula_Executive_West_Coat", "exportMorphTargets": true}
|
package/bridge-recipes/unreal/helix-character-creator-male/male-neo-arcane-heir-mantle.addon.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge-character-addon-profile/1", "title": "NEO Arcane Heir Mantle", "slug": "male-neo-arcane-heir-mantle", "hostItemId": "b45e4a1e-0000-4000-8000-000000000001", "hostSha256": "3fdb769bf0dbcc0e1b1b1ae8dd800d6ddedfda976c6422d4de15b80ce71c132b", "slotType": "character.top@1", "socket": "chest", "nodes": [], "ops": []}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge.unreal-asset/1", "slug": "male-neo-arcane-heir-mantle", "assetPath": "/HelixCharacterCreator/Characters/Clothes/Man/NEO_Arcane_Heir_Mantle/SKM_M_NEO_Arcane_Heir_Mantle", "exportMorphTargets": true}
|
package/bridge-recipes/unreal/helix-character-creator-male/male-neo-arcane-heir-tunic.addon.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge-character-addon-profile/1", "title": "NEO Arcane Heir Tunic", "slug": "male-neo-arcane-heir-tunic", "hostItemId": "b45e4a1e-0000-4000-8000-000000000001", "hostSha256": "3fdb769bf0dbcc0e1b1b1ae8dd800d6ddedfda976c6422d4de15b80ce71c132b", "slotType": "character.top@1", "socket": "chest", "nodes": [], "ops": []}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge.unreal-asset/1", "slug": "male-neo-arcane-heir-tunic", "assetPath": "/HelixCharacterCreator/Characters/Clothes/Man/NEO_Arcane_Heir_Tunic/SKM_M_NEO_Arcane_Heir_Tunic", "exportMorphTargets": true}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge-character-addon-profile/1", "title": "Paper Bag Mask", "slug": "male-paper-bag-mask", "hostItemId": "b45e4a1e-0000-4000-8000-000000000001", "hostSha256": "3fdb769bf0dbcc0e1b1b1ae8dd800d6ddedfda976c6422d4de15b80ce71c132b", "slotType": "character.mask@1", "socket": "head", "nodes": [], "ops": []}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge.unreal-asset/1", "slug": "male-paper-bag-mask", "assetPath": "/HelixCharacterCreator/Characters/Clothes/Man/M_Paper_Bag_Mask/M_Paper_Bag_Mask", "exportMorphTargets": true}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge-character-addon-profile/1", "title": "Pig Mask", "slug": "male-pig-mask", "hostItemId": "b45e4a1e-0000-4000-8000-000000000001", "hostSha256": "3fdb769bf0dbcc0e1b1b1ae8dd800d6ddedfda976c6422d4de15b80ce71c132b", "slotType": "character.mask@1", "socket": "head", "nodes": [], "ops": []}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge.unreal-asset/1", "slug": "male-pig-mask", "assetPath": "/HelixCharacterCreator/Characters/Clothes/Man/M_Pig_Mask/M_Pig_Mask", "exportMorphTargets": true}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge-character-addon-profile/1", "title": "Puffer Jacket", "slug": "male-puffer-jacket", "hostItemId": "b45e4a1e-0000-4000-8000-000000000001", "hostSha256": "3fdb769bf0dbcc0e1b1b1ae8dd800d6ddedfda976c6422d4de15b80ce71c132b", "slotType": "character.top@1", "socket": "chest", "nodes": [], "ops": []}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge.unreal-asset/1", "slug": "male-puffer-jacket", "assetPath": "/HelixCharacterCreator/Characters/Clothes/Man/Puffer_Jacket/SKM_M_Puffer_Jacket", "exportMorphTargets": true}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge-character-addon-profile/1", "title": "Pullover Hoodie", "slug": "male-pullover-hoodie", "hostItemId": "b45e4a1e-0000-4000-8000-000000000001", "hostSha256": "3fdb769bf0dbcc0e1b1b1ae8dd800d6ddedfda976c6422d4de15b80ce71c132b", "slotType": "character.top@1", "socket": "chest", "nodes": [], "ops": []}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge.unreal-asset/1", "slug": "male-pullover-hoodie", "assetPath": "/HelixCharacterCreator/Characters/Clothes/Man/Pullover_Hoodie/SKM_M_Pullover_Hoodie", "exportMorphTargets": true}
|
package/bridge-recipes/unreal/helix-character-creator-male/male-sinth-ascetic-jacket.addon.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge-character-addon-profile/1", "title": "Sinth Ascetic Jacket", "slug": "male-sinth-ascetic-jacket", "hostItemId": "b45e4a1e-0000-4000-8000-000000000001", "hostSha256": "3fdb769bf0dbcc0e1b1b1ae8dd800d6ddedfda976c6422d4de15b80ce71c132b", "slotType": "character.top@1", "socket": "chest", "nodes": [], "ops": []}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge.unreal-asset/1", "slug": "male-sinth-ascetic-jacket", "assetPath": "/HelixCharacterCreator/Characters/Clothes/Man/Sinth_Ascetic_Jacket/SKM_M_Sinth_Ascetic_Jacket", "exportMorphTargets": true}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge-character-addon-profile/1", "title": "Surgeon Mask", "slug": "male-surgeon-mask", "hostItemId": "b45e4a1e-0000-4000-8000-000000000001", "hostSha256": "3fdb769bf0dbcc0e1b1b1ae8dd800d6ddedfda976c6422d4de15b80ce71c132b", "slotType": "character.mask@1", "socket": "head", "nodes": [], "ops": []}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge.unreal-asset/1", "slug": "male-surgeon-mask", "assetPath": "/HelixCharacterCreator/Characters/Clothes/Man/M_Surgeon_Mask/M_Surgeon_Mask_skinning", "exportMorphTargets": true}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge-character-addon-profile/1", "title": "Tech Hoodie", "slug": "male-tech-hoodie", "hostItemId": "b45e4a1e-0000-4000-8000-000000000001", "hostSha256": "3fdb769bf0dbcc0e1b1b1ae8dd800d6ddedfda976c6422d4de15b80ce71c132b", "slotType": "character.top@1", "socket": "chest", "nodes": [], "ops": []}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": "helix.bridge.unreal-asset/1", "slug": "male-tech-hoodie", "assetPath": "/HelixCharacterCreator/Characters/Clothes/Man/Tech_Hoodie/SKM_M_Tech_Hoodie", "exportMorphTargets": true}
|
|
@@ -8,15 +8,28 @@ const test = require('node:test');
|
|
|
8
8
|
const directory = resolve(__dirname, '..');
|
|
9
9
|
const hostItemId = 'b45e4a1e-0000-4000-8000-000000000001';
|
|
10
10
|
|
|
11
|
+
// The fixed, one-representative-item-per-customizer-slot pilot set that
|
|
12
|
+
// `all.json` is a canonical batch of. This list is intentionally NOT derived
|
|
13
|
+
// from a directory scan: the batch phase adds many more `<item-slug>.json` /
|
|
14
|
+
// `<item-slug>.addon.json` recipe pairs to this same directory (one per
|
|
15
|
+
// wearable, not one per slot), and those must coexist without being folded
|
|
16
|
+
// into — or breaking the identity check against — this specific pilot batch.
|
|
17
|
+
const canonicalSlotFiles = [
|
|
18
|
+
'base-male.json',
|
|
19
|
+
'base-male-face.json',
|
|
20
|
+
'back.json', 'bottom.json', 'eyewear.json', 'footwear.json', 'gloves.json',
|
|
21
|
+
'hair.json', 'headwear.json', 'mask.json', 'neck.json', 'outfit.json', 'top.json',
|
|
22
|
+
];
|
|
23
|
+
const canonicalSlots = [
|
|
24
|
+
'back', 'bottom', 'eyewear', 'footwear', 'gloves', 'hair', 'headwear', 'mask', 'neck', 'outfit', 'top',
|
|
25
|
+
];
|
|
26
|
+
|
|
11
27
|
function read(file) {
|
|
12
28
|
return JSON.parse(readFileSync(join(directory, file), 'utf8'));
|
|
13
29
|
}
|
|
14
30
|
|
|
15
31
|
test('keeps the canonical batch identical to its individual source profiles', () => {
|
|
16
|
-
const
|
|
17
|
-
.filter((file) => file.endsWith('.json') && !['all.json', 'palette-pilot.json'].includes(file) && !file.endsWith('.addon.json'))
|
|
18
|
-
.sort();
|
|
19
|
-
const profiles = files.map(read);
|
|
32
|
+
const profiles = canonicalSlotFiles.map(read);
|
|
20
33
|
const batch = read('all.json');
|
|
21
34
|
assert.equal(batch.schemaVersion, 'helix.bridge.unreal-asset-set/1');
|
|
22
35
|
assert.deepEqual(
|
|
@@ -26,11 +39,19 @@ test('keeps the canonical batch identical to its individual source profiles', ()
|
|
|
26
39
|
assert.equal(new Set(batch.assets.map((asset) => asset.slug)).size, batch.assets.length);
|
|
27
40
|
});
|
|
28
41
|
|
|
29
|
-
test('
|
|
42
|
+
test('every add-on profile in this directory pairs with a runtime customizer add-on profile of matching shape', () => {
|
|
43
|
+
// Covers every `.addon.json` file present — the fixed 11-slot pilot set AND
|
|
44
|
+
// any number of additional per-item batch-phase recipes — rather than a
|
|
45
|
+
// closed exact-list. A new wearable's recipe pair must satisfy the same
|
|
46
|
+
// schema contract as the originals; it does not need to be one of the 11
|
|
47
|
+
// canonical slot names, and there may be many per slot.
|
|
30
48
|
const addonFiles = readdirSync(directory).filter((file) => file.endsWith('.addon.json')).sort();
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
49
|
+
// The 11 canonical per-slot pilot add-ons must still exist under their
|
|
50
|
+
// original slot-named files.
|
|
51
|
+
for (const slot of canonicalSlots) {
|
|
52
|
+
assert.ok(addonFiles.includes(`${slot}.addon.json`), `missing canonical ${slot}.addon.json`);
|
|
53
|
+
}
|
|
54
|
+
const seenSlugs = new Set();
|
|
34
55
|
for (const file of addonFiles) {
|
|
35
56
|
const addon = read(file);
|
|
36
57
|
const source = read(`${basename(file, '.addon.json')}.json`);
|
|
@@ -39,6 +60,8 @@ test('pairs every wearable source with a runtime customizer add-on profile', ()
|
|
|
39
60
|
assert.equal(addon.hostItemId, hostItemId);
|
|
40
61
|
assert.match(addon.slotType, /^character\.[a-z]+@1$/);
|
|
41
62
|
assert.equal(addon.slotType.startsWith('Cosmetic.Slot.'), false);
|
|
63
|
+
assert.equal(seenSlugs.has(addon.slug), false, `duplicate add-on slug ${addon.slug} (${file})`);
|
|
64
|
+
seenSlugs.add(addon.slug);
|
|
42
65
|
}
|
|
43
66
|
});
|
|
44
67
|
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|