@genex-ai/cli-demo 0.60.0 → 0.62.0-dev.143

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genex-ai/cli-demo",
3
- "version": "0.60.0",
3
+ "version": "0.62.0-dev.143",
4
4
  "description": "Set up your project's agent workspace (.claude/.codex/.cursor in the game folder), authorize, create a game project, generate AI assets, and publish (genex CLI).",
5
5
  "type": "module",
6
6
  "bin": {
@@ -12,6 +12,7 @@ export type MeshyMotionPolicy =
12
12
  export type MeshyLocomotionBindingMode = "loop" | "one-shot" | "pose";
13
13
 
14
14
  export interface MeshyLocomotionBinding {
15
+ actionId?: number;
15
16
  clip: string;
16
17
  mode: MeshyLocomotionBindingMode;
17
18
  phase?: number;
@@ -23,7 +24,20 @@ export interface MeshyCharacterManifest {
23
24
  revision: number;
24
25
  manifestVersion: number;
25
26
  rig: "meshy-biped";
26
- controllerPack?: { key: string; version: number };
27
+ controllerPack?: {
28
+ key: string;
29
+ version: number;
30
+ fingerprint?: string;
31
+ actionIds?: number[];
32
+ };
33
+ provenance?: {
34
+ provider: "meshy";
35
+ aiModel: "meshy-6";
36
+ apiVersion?: string;
37
+ poseMode: "a-pose" | "t-pose";
38
+ shouldRemesh: boolean;
39
+ targetPolycount: number;
40
+ };
27
41
  model: {
28
42
  url: string;
29
43
  heightMeters: number | null;
@@ -16,10 +16,12 @@ crossfades, transition rules, and multiplayer authority contract.
16
16
  npx genex character "stylized desert courier, practical layered clothing"
17
17
  ```
18
18
 
19
- The default request uses Meshy 6 to generate and texture an A-pose humanoid,
20
- validates the rig's arm pose, and retries the full generation once in a strict
21
- T-pose before requesting controller-pack animations when the A-pose is invalid.
22
- It remeshes and rigs the accepted model, adds the preview-reviewed neutral-v2
19
+ The default request uses Meshy 6 to generate, texture, remesh, and rig an
20
+ A-pose humanoid. It generates the required controller-pack actions for that
21
+ candidate and rejects bad structural or native motion instead of repairing it.
22
+ If any required check fails, it retries the complete workflow once in a strict
23
+ T-pose; optional actions start only after a full candidate passes. It remeshes
24
+ and rigs the accepted model, adds the immutable preview-reviewed neutral-v3
23
25
  idle/walk/run/crouch/jump controller pack,
24
26
  and stores every successful model
25
27
  and clip at permanent Genex asset URLs. It prints the complete Genex-credit
@@ -83,6 +85,17 @@ after preview without asking the player to disable cache.
83
85
  `playOneShot()` returns false and emits one warning when a requested clip is
84
86
  absent; treat that as an installation failure, not a successful action.
85
87
 
88
+ Meshy limb rotations are played unchanged. Never freeze hand tracks or apply
89
+ post-mixer arm, leg, or foot corrections. A bad native rig or clip must be
90
+ rejected and regenerated. Only horizontal root/hip translation is normalized
91
+ so Rapier remains authoritative.
92
+
93
+ A controller pack is an immutable exact action set. If a required binding is
94
+ absent, installation fails instead of substituting Meshy's rig-basic Walking
95
+ or Running animation. During Meshy validation, record the action ID actually
96
+ bound to every slot. A public preview is not evidence when the game is playing
97
+ a different clip or a rig-basic fallback.
98
+
86
99
  Load `$genex-threejs-character-controller` for the actual wiring. The install
87
100
  command copies the shared controller plus `character/meshy/meshy-loader.ts`.
88
101
  The manifest points at the current rigged model and compact animation-only GLBs
@@ -93,6 +106,8 @@ durations, nominal speeds, trajectories, and gameplay requirements.
93
106
 
94
107
  - Meshy clips play only on the exact character revision whose skeleton
95
108
  signature matches. There is no runtime retargeting in this lane.
109
+ - Do not repair hands, arms, or legs at runtime. Verify the installed manifest's
110
+ exact slot-to-action mappings; stop and regenerate when a native pose is bad.
96
111
  - Rapier owns the player transform. Animation tracks are normalized
97
112
  horizontally in place; never move the rendered character root separately.
98
113
  - `controller-loop` clips follow controller-local intent and measured speed.
@@ -409,7 +409,7 @@ after a bad single costs the whole chain).
409
409
 
410
410
  ## Troubleshooting
411
411
 
412
- - **"Not authorized"** — run `npx @genex-ai/cli-demo@latest init` first (it
412
+ - **"Not authorized"** — run `npx @genex-ai/cli-demo@dev init` first (it
413
413
  writes your `GENEX_TOKEN`).
414
414
  - **"Prompt rejected"** — the provider's content-safety filter blocked the
415
415
  prompt. Non-retryable; rewrite the wording.
@@ -194,7 +194,7 @@ set belongs to `$genex-ai-hud` — both build on this command.
194
194
 
195
195
  ## Troubleshooting
196
196
 
197
- - **"Not authorized"** — run `npx @genex-ai/cli-demo@latest init` first (it writes your `GENEX_TOKEN`).
197
+ - **"Not authorized"** — run `npx @genex-ai/cli-demo@dev init` first (it writes your `GENEX_TOKEN`).
198
198
  - **"Prompt rejected"** — the provider's content-safety filter blocked the prompt.
199
199
  This is non-retryable; retrying the same wording fails again. Rewrite the prompt.
200
200
  - **Decal is an opaque rectangle** — the image has no alpha. Regenerate with
@@ -321,7 +321,7 @@ upgrades, in order of effort:
321
321
 
322
322
  ## Troubleshooting
323
323
 
324
- - **"Not authorized"** — run `npx @genex-ai/cli-demo@latest init` first (it
324
+ - **"Not authorized"** — run `npx @genex-ai/cli-demo@dev init` first (it
325
325
  writes your `GENEX_TOKEN`).
326
326
  - **"Prompt rejected"** — the provider's content-safety filter blocked the
327
327
  prompt. Non-retryable; rewrite the wording.
@@ -107,7 +107,7 @@ scene is a ghost: players and objects pass straight through it.
107
107
 
108
108
  ## Troubleshooting
109
109
 
110
- - **"Not authorized"** — run `npx @genex-ai/cli-demo@latest init` first (it writes your `GENEX_TOKEN`).
110
+ - **"Not authorized"** — run `npx @genex-ai/cli-demo@dev init` first (it writes your `GENEX_TOKEN`).
111
111
  - **"Out of credits" (`insufficient_credits`)** — the account has no credits left for
112
112
  this model generation. Tell the user the facts the CLI printed: their balance, this
113
113
  generation's cost, and when their credits refill. Then offer to continue the build
@@ -72,7 +72,7 @@ Reuse one loaded `buffer` across many plays; create a fresh `Audio`/`PositionalA
72
72
 
73
73
  ## Troubleshooting
74
74
 
75
- - **"Not authorized"** — run `npx @genex-ai/cli-demo@latest init` first (it writes your `GENEX_TOKEN`).
75
+ - **"Not authorized"** — run `npx @genex-ai/cli-demo@dev init` first (it writes your `GENEX_TOKEN`).
76
76
  - **"Out of credits" (`insufficient_credits`)** — the account has no credits left for
77
77
  this sound generation. Tell the user the facts the CLI printed: their balance, this
78
78
  generation's cost, and when their credits refill. Then offer to continue the build
@@ -76,7 +76,7 @@ scene.background = texture; // keep the raw texture for the visible sky
76
76
 
77
77
  ## Troubleshooting
78
78
 
79
- - **"Not authorized"** — run `npx @genex-ai/cli-demo@latest init` first (it writes your `GENEX_TOKEN`).
79
+ - **"Not authorized"** — run `npx @genex-ai/cli-demo@dev init` first (it writes your `GENEX_TOKEN`).
80
80
  - **"Out of credits" (`insufficient_credits`)** — the account has no credits left for
81
81
  this skybox generation. Tell the user the facts the CLI printed: their balance, this
82
82
  generation's cost, and when their credits refill. Then offer to continue the build
@@ -225,7 +225,7 @@ first one is the one a screenshot of the whole arena will not show you.
225
225
 
226
226
  ## Troubleshooting
227
227
 
228
- - **"Not authorized"** — run `npx @genex-ai/cli-demo@latest init` first (it writes your `GENEX_TOKEN`).
228
+ - **"Not authorized"** — run `npx @genex-ai/cli-demo@dev init` first (it writes your `GENEX_TOKEN`).
229
229
  - **"Out of credits" (`insufficient_credits`)** — the account has no credits left for
230
230
  this texture generation. Tell the user the facts the CLI printed: their balance,
231
231
  this generation's cost, and when their credits refill. Then offer to continue the
@@ -145,7 +145,7 @@ set belongs to `$genex-ai-hud` — both build on `npx genex image`/`video`.
145
145
 
146
146
  ## Troubleshooting
147
147
 
148
- - **"Not authorized"** — run `npx @genex-ai/cli-demo@latest init` first (it writes your `GENEX_TOKEN`).
148
+ - **"Not authorized"** — run `npx @genex-ai/cli-demo@dev init` first (it writes your `GENEX_TOKEN`).
149
149
  - **"Prompt rejected"** — the provider's content-safety filter blocked the prompt.
150
150
  This is non-retryable; retrying the same wording fails again. Rewrite the prompt.
151
151
  - **Nothing plays / black surface** — the first `video.play()` must run inside a user
@@ -43,7 +43,7 @@ Add `--json` for machine-readable output.
43
43
  **As a NEW game (start from the whole project):**
44
44
 
45
45
  1. `git clone <clone URL from the output> <name>` — pick a short one-word name.
46
- 2. `cd <name>`, then `npx @genex-ai/cli-demo@latest init <name>` — never use
46
+ 2. `cd <name>`, then `npx @genex-ai/cli-demo@dev init <name>` — never use
47
47
  `--force`. This creates your own project; the original is untouched.
48
48
  3. `npm install`, keep `base: './'` in `vite.config`, then build your changes
49
49
  and ship with `npx genex preview`.
@@ -130,7 +130,7 @@ and re-link the clone to the same live game:
130
130
  ```bash
131
131
  git clone <the game's repo url> my-game && cd my-game
132
132
  npm install
133
- npx @genex-ai/cli-demo@latest link <slug> # slug = the name in the play URL
133
+ npx @genex-ai/cli-demo@dev link <slug> # slug = the name in the play URL
134
134
  ```
135
135
 
136
136
  Don't know the slug? **`npx genex list`** prints every game on your account —
@@ -157,7 +157,7 @@ Safe to run any time — genex-owned skills are refreshed to the latest version,
157
157
  and your own files are never touched:
158
158
 
159
159
  ```bash
160
- npx @genex-ai/cli-demo@latest init
160
+ npx @genex-ai/cli-demo@dev init
161
161
  ```
162
162
 
163
163
  Use `--force` only if you intentionally want your own existing files overwritten
@@ -50,6 +50,13 @@ after preview without asking the player to disable cache. `playOneShot()`
50
50
  returns false and emits one warning when a requested clip is absent; treat
51
51
  that as an installation failure, not a successful action.
52
52
 
53
+ Meshy limb rotations are played unchanged. Never freeze hand tracks or apply
54
+ post-mixer arm, leg, or foot corrections. A bad native rig or clip must be
55
+ rejected and regenerated. Only horizontal root/hip translation is normalized
56
+ so Rapier remains authoritative. A controller pack is an immutable exact
57
+ action set: if a required binding is absent, installation fails instead of
58
+ substituting Meshy's rig-basic Walking or Running animation.
59
+
53
60
  Because these files are game-owned, never run `genex controller character --force` over an edited
54
61
  fork as a migration strategy. Install a fresh copy elsewhere and port only the named changes.
55
62
 
@@ -200,6 +207,10 @@ slots, fallbacks, and cadence data. UAL clips still land in
200
207
  genre hints, `playOneShot` options, overrides, foot IK, and remote-player
201
208
  animation.
202
209
 
210
+ For Meshy characters, do not repair hands, arms, or legs at runtime. Verify
211
+ that the installed manifest binds the expected action IDs; if a native pose
212
+ is bad or a required binding is missing, stop and regenerate the character.
213
+
203
214
  ## Crouch (built in)
204
215
 
205
216
  `C` toggles crouch (capsule shrinks, speed drops to `crouchSpeedRatio ×
@@ -110,6 +110,11 @@ const anims = new CharacterAnimations(native.scene, native.clips, {
110
110
  });
111
111
  ```
112
112
 
113
+ During Meshy validation, record the action ID actually bound to every slot.
114
+ A public preview is not evidence when the game is playing a different clip or
115
+ a rig-basic fallback. The native loader plays every limb quaternion unchanged;
116
+ never freeze hand tracks or add post-mixer arm, leg, or foot corrections.
117
+
113
118
  The loader rejects clips whose manifest skeleton signature differs from the
114
119
  current model revision or whose tracks target missing bones. This is deliberate
115
120
  same-rig playback, not runtime retargeting. After adding an action, rerun the
@@ -54,6 +54,10 @@ everything twice.
54
54
  visibly crouched pose both respond. If a control calls `playOneShot()`, a
55
55
  false result or missing-clip warning is an installation failure even when
56
56
  locomotion continues normally.
57
+ During Meshy validation, record the action ID actually bound to every slot.
58
+ A public preview is not evidence when the game is playing a different clip
59
+ or a rig-basic fallback. Do not repair hands, arms, or legs at runtime: if a
60
+ native pose is bad or a required binding is missing, stop and regenerate.
57
61
  3. Capture one screenshot of live gameplay — of the **game**, not a sign-in
58
62
  gate or loading screen. A capture of the SDK's "Sign in to play" overlay is
59
63
  NOT gameplay evidence. Evidence captured in local test mode must be labeled
@@ -38,7 +38,7 @@ update, so update immediately.)
38
38
  Run exactly the command the nudge printed, from the game project root:
39
39
 
40
40
  ```bash
41
- npm i -D @genex-ai/cli-demo@latest # the genex CLI (a dev dependency)
41
+ npm i -D @genex-ai/cli-demo@dev # the genex CLI (a dev dependency)
42
42
  npm i @genex-ai/embed-sdk@latest # identity/saves SDK (ships inside the game)
43
43
  npm i @genex-ai/multiplayer@latest # multiplayer SDK (only if the game uses it)
44
44
  ```