@bitmagic/cli 0.1.66-dev.6 → 0.1.66-dev.8
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 +37 -1
- package/assets/blender-level/find_blender.py +3 -1
- package/assets/character-skin-authoring/SKILL.md +43 -0
- package/assets/character-skin-authoring/references/exporters.md +134 -0
- package/assets/character-skin-authoring/references/eyes.md +215 -0
- package/assets/character-skin-authoring/references/materials.md +115 -0
- package/assets/character-skin-authoring/references/playground.md +78 -0
- package/assets/character-skin-authoring/references/profiles.md +97 -0
- package/assets/character-skin-authoring/references/projection.md +190 -0
- package/assets/character-skin-authoring/references/regional-detail.md +72 -0
- package/assets/character-skin-authoring/scripts/assemble_character.py +205 -0
- package/assets/character-skin-authoring/scripts/authored_detail.py +47 -0
- package/assets/character-skin-authoring/scripts/authored_surface_patch.py +83 -0
- package/assets/character-skin-authoring/scripts/brow_groom.py +62 -0
- package/assets/character-skin-authoring/scripts/build_face_detail.py +107 -0
- package/assets/character-skin-authoring/scripts/build_surface_candidate.py +28 -0
- package/assets/character-skin-authoring/scripts/canthus_wall.py +57 -0
- package/assets/character-skin-authoring/scripts/character_build.py +54 -0
- package/assets/character-skin-authoring/scripts/eye_assets.py +333 -0
- package/assets/character-skin-authoring/scripts/eye_opening.py +114 -0
- package/assets/character-skin-authoring/scripts/eye_texture.py +35 -0
- package/assets/character-skin-authoring/scripts/eyelid_detail.py +34 -0
- package/assets/character-skin-authoring/scripts/eyelid_morph.py +171 -0
- package/assets/character-skin-authoring/scripts/eyelid_patch.py +173 -0
- package/assets/character-skin-authoring/scripts/face_atlas.py +51 -0
- package/assets/character-skin-authoring/scripts/geometry_repair.py +112 -0
- package/assets/character-skin-authoring/scripts/glb_arrays.py +13 -0
- package/assets/character-skin-authoring/scripts/glb_output.py +21 -0
- package/assets/character-skin-authoring/scripts/inspect_skin_point.py +66 -0
- package/assets/character-skin-authoring/scripts/normal_patch_height.py +38 -0
- package/assets/character-skin-authoring/scripts/prepare_face_reference.py +23 -0
- package/assets/character-skin-authoring/scripts/regional_atlas.py +51 -0
- package/assets/character-skin-authoring/scripts/select_preview.py +90 -0
- package/assets/character-skin-authoring/scripts/skin_views.py +267 -0
- package/assets/character-skin-authoring/scripts/surface_pbr_maps.py +46 -0
- package/assets/character-skin-authoring/scripts/texture_repair.py +98 -0
- package/assets/character-skin-authoring/scripts/vertex_detail_support.py +80 -0
- package/assets/character-skin-authoring/scripts/vision_blend_materials.py +74 -0
- package/assets/character-skin-authoring/scripts/vision_materials.py +276 -0
- package/assets/character-skin-authoring/scripts/workspace_paths.py +18 -0
- package/assets/metahuman/src/work/metahuman/MetaHumanActor.ts +580 -0
- package/assets/metahuman/src/work/metahuman/MetaHumanLabHooks.ts +122 -0
- package/assets/metahuman/src/work/metahuman/MetaHumanMaterials.ts +500 -0
- package/assets/metahuman/src/work/metahuman/MetaHumanSpeech.ts +242 -0
- package/assets/metahuman/src/work/metahuman/StudioEnvironment.ts +142 -0
- package/assets/metahuman/tools/lipsync/make_line.py +181 -0
- package/assets/metahuman/tools/metahuman/README.md +21 -0
- package/assets/metahuman/tools/metahuman/e2e/eval.mjs +34 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/arm-pose-check.js +32 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/bone-displacement.js +26 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/clip-shoulder.js +41 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/grafted-bones.js +11 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/helper-follow-descent.js +38 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/helper-follow-sweep.js +31 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/helper-joints-inspect.js +10 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/outfit-bad-vertices.js +26 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/outfit-body-material.js +7 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/outfit-own-skeleton.js +8 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/shirt-bone-ownership.js +25 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/shirt-edge-stretch.js +26 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/shirt-long-edges.js +23 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/walk-sampler.js +105 -0
- package/assets/metahuman/tools/metahuman/e2e/shot.mjs +125 -0
- package/assets/metahuman/tools/metahuman/e2e/walk-probe.mjs +43 -0
- package/assets/metahuman/tools/metahuman/merge-skeletons.mjs +69 -0
- package/assets/metahuman/tools/metahuman/package.json +13 -0
- package/assets/metahuman/tools/metahuman/prepare.sh +25 -0
- package/assets/metahuman/tools/metahuman/reorder-body-first.mjs +20 -0
- package/assets/metahuman/tools/metahuman/smooth-outfit-weights.mjs +48 -0
- package/assets/metahuman/tools/metahuman/strip-draco.mjs +32 -0
- package/assets/metahuman/tools/metahuman/transfer-skin-weights.mjs +90 -0
- package/dist/assets/voxelize-glb.d.ts +5 -1
- package/dist/assets/voxelize-glb.js +1 -0
- package/dist/assets/voxelize-glb.js.map +1 -1
- package/dist/assets/vxl-summary.js +2 -2
- package/dist/commands/generate.d.ts +62 -0
- package/dist/commands/generate.js +241 -2
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.js +2 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/judge.js +5 -0
- package/dist/commands/judge.js.map +1 -1
- package/dist/commands/verify.js +7 -0
- package/dist/commands/verify.js.map +1 -1
- package/dist/generate/audio-file.d.ts +6 -0
- package/dist/generate/audio-file.js +42 -0
- package/dist/generate/audio-file.js.map +1 -0
- package/dist/generate/model.js +3 -3
- package/dist/generate/model.js.map +1 -1
- package/dist/generate/music.d.ts +4 -3
- package/dist/generate/music.js +6 -23
- package/dist/generate/music.js.map +1 -1
- package/dist/generate/prop.d.ts +19 -1
- package/dist/generate/prop.js +34 -6
- package/dist/generate/prop.js.map +1 -1
- package/dist/generate/stream.d.ts +20 -0
- package/dist/generate/stream.js +15 -1
- package/dist/generate/stream.js.map +1 -1
- package/dist/scaffold/asset-pipeline-skill-files.js +6 -1
- package/dist/scaffold/asset-pipeline-skill-files.js.map +1 -1
- package/dist/scaffold/character-skin-skill-files.d.ts +2 -0
- package/dist/scaffold/character-skin-skill-files.js +49 -0
- package/dist/scaffold/character-skin-skill-files.js.map +1 -0
- package/dist/scaffold/metahuman-skill-files.d.ts +21 -0
- package/dist/scaffold/metahuman-skill-files.js +306 -0
- package/dist/scaffold/metahuman-skill-files.js.map +1 -0
- package/dist/scaffold/project-files.js +28 -19
- package/dist/scaffold/project-files.js.map +1 -1
- package/dist/scaffold/project.js +4 -0
- package/dist/scaffold/project.js.map +1 -1
- package/dist/scaffold/skill-files.js +4 -2
- package/dist/scaffold/skill-files.js.map +1 -1
- package/dist/telemetry/command-context.d.ts +23 -0
- package/dist/telemetry/command-context.js +11 -0
- package/dist/telemetry/command-context.js.map +1 -1
- package/dist/telemetry/report.d.ts +1 -0
- package/dist/telemetry/report.js +4 -1
- package/dist/telemetry/report.js.map +1 -1
- package/dist/tools/bundles.js +8 -0
- package/dist/tools/bundles.js.map +1 -1
- package/dist/verify/browser.js +25 -0
- package/dist/verify/browser.js.map +1 -1
- package/dist/verify/categories.d.ts +16 -0
- package/dist/verify/categories.js +51 -0
- package/dist/verify/categories.js.map +1 -0
- package/package.json +10 -7
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verify failures as categories, for the command beacon.
|
|
3
|
+
*
|
|
4
|
+
* `classify.ts` writes its failures as prose for the agent and the creator, and that prose can
|
|
5
|
+
* carry a path, an error message or a console line — none of which belongs in an analytics
|
|
6
|
+
* event (see the contract in `telemetry/report.ts`). This maps each failure back to the check
|
|
7
|
+
* that produced it, so `cli_command(verify, ok=false)` can say WHICH check failed without saying
|
|
8
|
+
* anything else. The messages in `result.json` are unchanged; publish still reads them.
|
|
9
|
+
*
|
|
10
|
+
* Keep the table in step with `classify.ts`: a new failure there lands in `other` here until it
|
|
11
|
+
* gets a row, and `categories.test.ts` pins every existing message to its category.
|
|
12
|
+
*/
|
|
13
|
+
export type VerifyFailureCategory = 'page_error' | 'start_threw' | 'play_unclickable' | 'selection_stalled' | 'never_started' | 'webgpu_fallback' | 'mobile_parity' | 'no_canvas' | 'canvas_zero' | 'canvas_unclaimed' | 'frame_blank' | 'frame_black' | 'frame_flat' | 'gl_context_lost' | 'engine_error' | 'cors_blocked' | 'fell_out_of_world' | 'still_falling' | 'render_stalled' | 'other';
|
|
14
|
+
export declare function categoriseVerifyFailure(message: string): VerifyFailureCategory;
|
|
15
|
+
/** The distinct categories of a run's failures, in first-seen order — what the beacon carries. */
|
|
16
|
+
export declare function verifyFailureCategories(failures: readonly string[]): VerifyFailureCategory[];
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verify failures as categories, for the command beacon.
|
|
3
|
+
*
|
|
4
|
+
* `classify.ts` writes its failures as prose for the agent and the creator, and that prose can
|
|
5
|
+
* carry a path, an error message or a console line — none of which belongs in an analytics
|
|
6
|
+
* event (see the contract in `telemetry/report.ts`). This maps each failure back to the check
|
|
7
|
+
* that produced it, so `cli_command(verify, ok=false)` can say WHICH check failed without saying
|
|
8
|
+
* anything else. The messages in `result.json` are unchanged; publish still reads them.
|
|
9
|
+
*
|
|
10
|
+
* Keep the table in step with `classify.ts`: a new failure there lands in `other` here until it
|
|
11
|
+
* gets a row, and `categories.test.ts` pins every existing message to its category.
|
|
12
|
+
*/
|
|
13
|
+
const TABLE = [
|
|
14
|
+
[/^Uncaught error on the page:/, 'page_error'],
|
|
15
|
+
[/^The Play button was clicked but the game never started/, 'start_threw'],
|
|
16
|
+
[/^The Play button appeared but could not be clicked/, 'play_unclickable'],
|
|
17
|
+
[/^Picked \d+ pre-play selection/, 'selection_stalled'],
|
|
18
|
+
[/^The game never started/, 'never_started'],
|
|
19
|
+
[/^WebGPU was requested but the renderer silently fell back/, 'webgpu_fallback'],
|
|
20
|
+
[/^This game declares primaryPlatform "mobile"/, 'mobile_parity'],
|
|
21
|
+
[/^No <canvas> was rendered/, 'no_canvas'],
|
|
22
|
+
[/^The canvas has no size/, 'canvas_zero'],
|
|
23
|
+
[/^The canvas was never resized by a renderer/, 'canvas_unclaimed'],
|
|
24
|
+
[/^The screenshot is implausibly small/, 'frame_blank'],
|
|
25
|
+
[/^The screenshot is black/, 'frame_black'],
|
|
26
|
+
[/^The screenshot shows a flat, featureless area/, 'frame_flat'],
|
|
27
|
+
[/^The WebGL context was lost/, 'gl_context_lost'],
|
|
28
|
+
[/^The engine reported:/, 'engine_error'],
|
|
29
|
+
[/^A game asset could not be fetched/, 'cors_blocked'],
|
|
30
|
+
[/^The player fell out of the world/, 'fell_out_of_world'],
|
|
31
|
+
[/^The player was still falling/, 'still_falling'],
|
|
32
|
+
[/^The page's render loop stalled/, 'render_stalled'],
|
|
33
|
+
];
|
|
34
|
+
/** A multi-platform record prefixes each failure with its platform (`mobile: …`); the check is the same. */
|
|
35
|
+
const PLATFORM_PREFIX = /^(desktop|mobile):\s*/;
|
|
36
|
+
export function categoriseVerifyFailure(message) {
|
|
37
|
+
const bare = message.replace(PLATFORM_PREFIX, '');
|
|
38
|
+
for (const [pattern, category] of TABLE) {
|
|
39
|
+
if (pattern.test(bare))
|
|
40
|
+
return category;
|
|
41
|
+
}
|
|
42
|
+
return 'other';
|
|
43
|
+
}
|
|
44
|
+
/** The distinct categories of a run's failures, in first-seen order — what the beacon carries. */
|
|
45
|
+
export function verifyFailureCategories(failures) {
|
|
46
|
+
const seen = new Set();
|
|
47
|
+
for (const failure of failures)
|
|
48
|
+
seen.add(categoriseVerifyFailure(failure));
|
|
49
|
+
return [...seen];
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=categories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/verify/categories.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAwBH,MAAM,KAAK,GAA4D;IACrE,CAAC,8BAA8B,EAAE,YAAY,CAAC;IAC9C,CAAC,yDAAyD,EAAE,aAAa,CAAC;IAC1E,CAAC,oDAAoD,EAAE,kBAAkB,CAAC;IAC1E,CAAC,gCAAgC,EAAE,mBAAmB,CAAC;IACvD,CAAC,yBAAyB,EAAE,eAAe,CAAC;IAC5C,CAAC,2DAA2D,EAAE,iBAAiB,CAAC;IAChF,CAAC,8CAA8C,EAAE,eAAe,CAAC;IACjE,CAAC,2BAA2B,EAAE,WAAW,CAAC;IAC1C,CAAC,yBAAyB,EAAE,aAAa,CAAC;IAC1C,CAAC,6CAA6C,EAAE,kBAAkB,CAAC;IACnE,CAAC,sCAAsC,EAAE,aAAa,CAAC;IACvD,CAAC,0BAA0B,EAAE,aAAa,CAAC;IAC3C,CAAC,gDAAgD,EAAE,YAAY,CAAC;IAChE,CAAC,6BAA6B,EAAE,iBAAiB,CAAC;IAClD,CAAC,uBAAuB,EAAE,cAAc,CAAC;IACzC,CAAC,oCAAoC,EAAE,cAAc,CAAC;IACtD,CAAC,mCAAmC,EAAE,mBAAmB,CAAC;IAC1D,CAAC,+BAA+B,EAAE,eAAe,CAAC;IAClD,CAAC,iCAAiC,EAAE,gBAAgB,CAAC;CACtD,CAAC;AAEF,4GAA4G;AAC5G,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAEhD,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAClD,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,QAAQ,CAAC;IAC1C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,uBAAuB,CAAC,QAA2B;IACjE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC9C,KAAK,MAAM,OAAO,IAAI,QAAQ;QAAE,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitmagic/cli",
|
|
3
|
-
"version": "0.1.66-dev.
|
|
3
|
+
"version": "0.1.66-dev.8",
|
|
4
4
|
"description": "Build Bitmagic games from your own agent tool",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "Bitmagic Oy",
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
"playwright-core": "^1.59.1",
|
|
26
26
|
"tar": "^7.4.3",
|
|
27
27
|
"ws": "^8.21.3",
|
|
28
|
-
"@bitmagic/animation-forger": "0.1.21-dev.
|
|
29
|
-
"@bitmagic/asset-core": "0.2.21-dev.
|
|
30
|
-
"@bitmagic/world-forger": "0.1.26-dev.
|
|
28
|
+
"@bitmagic/animation-forger": "0.1.21-dev.8",
|
|
29
|
+
"@bitmagic/asset-core": "0.2.21-dev.8",
|
|
30
|
+
"@bitmagic/world-forger": "0.1.26-dev.8"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@eslint/js": "^9.38.0",
|
|
@@ -61,7 +61,8 @@
|
|
|
61
61
|
"module": "ES2022",
|
|
62
62
|
"moduleResolution": "bundler",
|
|
63
63
|
"verbatimModuleSyntax": false,
|
|
64
|
-
"esModuleInterop": true
|
|
64
|
+
"esModuleInterop": true,
|
|
65
|
+
"rootDir": "."
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
68
|
]
|
|
@@ -76,8 +77,10 @@
|
|
|
76
77
|
},
|
|
77
78
|
"scripts": {
|
|
78
79
|
"build": "tsc",
|
|
79
|
-
"check": "pnpm run lint && pnpm run build",
|
|
80
|
-
"
|
|
80
|
+
"check": "pnpm run lint && pnpm run build && pnpm run check:lab",
|
|
81
|
+
"check:lab": "tsc -p tsconfig.lab.json --noEmit",
|
|
82
|
+
"lint": "eslint src lab",
|
|
83
|
+
"lab": "tsx lab/cli.ts",
|
|
81
84
|
"test": "NODE_OPTIONS=--experimental-vm-modules jest"
|
|
82
85
|
}
|
|
83
86
|
}
|