@genex-ai/cli-demo 1.32.0 → 1.32.1-dev.658

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.
@@ -7,10 +7,10 @@ import {
7
7
  isRenderMode,
8
8
  sceneSummary,
9
9
  sheetOf
10
- } from "./chunk-OJAXYQ5L.js";
10
+ } from "./chunk-2COG4P3T.js";
11
11
  import {
12
12
  getCliVersion
13
- } from "./chunk-5FA2WLM7.js";
13
+ } from "./chunk-HYCSNWYX.js";
14
14
 
15
15
  // src/commands/blender-mcp.ts
16
16
  import fs from "fs/promises";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  c,
3
3
  getTemplatesDir
4
- } from "./chunk-5FA2WLM7.js";
4
+ } from "./chunk-HYCSNWYX.js";
5
5
 
6
6
  // src/lib/blender-serve.ts
7
7
  import { spawn } from "child_process";
@@ -7,7 +7,7 @@ import {
7
7
  getAuthUrl,
8
8
  getCliVersion,
9
9
  getGenexEnvPath
10
- } from "./chunk-5FA2WLM7.js";
10
+ } from "./chunk-HYCSNWYX.js";
11
11
 
12
12
  // src/lib/terms.ts
13
13
  import readline from "readline";
@@ -3,7 +3,7 @@ import fs from "fs";
3
3
  import os from "os";
4
4
  import path from "path";
5
5
  import { fileURLToPath } from "url";
6
- var RAW_CHANNEL = "latest";
6
+ var RAW_CHANNEL = "dev";
7
7
  var CLI_CHANNEL = RAW_CHANNEL === "dev" ? "dev" : "latest";
8
8
  var STANDS = {
9
9
  prod: { api: "https://api.genex.games", dashboard: "https://genex.games" },
package/dist/index.js CHANGED
@@ -42,7 +42,7 @@ import {
42
42
  writeProject,
43
43
  writeUserToken,
44
44
  writeWorkspace
45
- } from "./chunk-OJAXYQ5L.js";
45
+ } from "./chunk-2COG4P3T.js";
46
46
  import {
47
47
  CLI_CHANNEL,
48
48
  DEFAULT_API_URL,
@@ -59,7 +59,7 @@ import {
59
59
  getGenexEnvPath,
60
60
  getTemplatesDir,
61
61
  resolveAgentTargets
62
- } from "./chunk-5FA2WLM7.js";
62
+ } from "./chunk-HYCSNWYX.js";
63
63
 
64
64
  // src/instrument.ts
65
65
  import * as Sentry from "@sentry/node";
@@ -880,7 +880,7 @@ This folder uses **Genex Tools**: AI asset generation for games, from your termi
880
880
  var TOOLS_CONTRACT_LAWS_1_TO_4 = `1. **NEVER delete, empty, move, rename, or overwrite anything you did not create yourself.** This is someone's real project: it holds their code, their reference images, their notes, an earlier attempt \u2014 files that may exist nowhere else and have no undo, no trash, no backup. A non-empty folder is NORMAL and is never something to clean up, and "start clean" is never a reason. That rules out \`rm\`/\`rm -rf\`, \`git clean\`, \`git checkout -- .\`, \`git reset --hard\` over their work, deleting to resolve a conflict or a stuck prompt, and every tool's offer to empty a directory (\`--force\`, \`--overwrite\`, "Remove existing files"). You may add files and edit the ones you wrote. If a step genuinely cannot continue without removing something of theirs, STOP and ask, naming the exact files, and wait for a yes \u2014 "it looks like junk" is never that yes.
881
881
  2. **Generated assets are local files the user owns.** Every generation downloads into \`./assets/\` and the command prints the local path \u2014 wire THAT path into the code, exactly like an asset they drew themselves. The URL printed beside it is provenance, not hosting: never fetch it at runtime, never ship a build that depends on it. Assets are theirs to move, rename, commit, or process further.
882
882
  3. **Run \`npx genex doctor\` when a command fails, and before promising what you can generate.** It reports sign-in, credit balance, and which generation lanes are actually live on this account \u2014 the only live source for all three. Treat every genex warning line as work, not noise, and never re-run a generation command to "retry" one that is still running: that bills a second asset. Attach to the first with \`npx genex wait <id>\`.
883
- 4. **Real assets beat placeholders.** When anything you build will be seen or heard by a player, reach for the belt first \u2014 a generated model instead of a colored box, a texture instead of a flat material, music and sound instead of silence, a rigged character instead of a capsule. Put soul into the details; never limit your imagination to what is easy to code. You know the tools and their costs (\`npx genex --help\`) \u2014 decide and generate on your own judgment, without stopping to ask permission; a status line saying what you queued is enough. Queue with \`--no-wait\` and keep building while generations run.`;
883
+ 4. **Real assets beat placeholders.** Use generated art to enrich the requested result. When making a game, that includes how it plays and how its world behaves. Reach for the belt where it adds character: distinctive models, textures, music, sounds and animated characters. Models built in code can be finished assets when they fit the style or need moving parts. Put soul into the details; never limit your imagination to what is easy to code. You know the tools and their costs (\`npx genex --help\`) \u2014 decide and generate on your own judgment, without stopping to ask permission; a status line saying what you queued is enough. Queue with \`--no-wait\` and continue any independent work on the user\u2019s request while generations run.`;
884
884
  var TOOLS_CONTRACT_OFFER = `5. **When the game is built and playable \u2014 never mid-build \u2014 offer once, in one line: "Want to make your game live on the web with its own URL?"** Offer only if the game runs in the browser and builds to static files; otherwise never bring it up. A no means drop it for good. On a yes, run \`npx genex init --convert\` and follow what it prints \u2014 it connects this folder to a hosted Genex game: the code and this toolkit stay exactly as they are, the source goes to a private repo, and the game gets a draft page plus a public URL when they choose to publish.`;
885
885
  var TOOLS_CONTRACT_HOSTED_LAWS = `5. **This game is hosted on Genex now, and publishing is glue \u2014 never a rebuild.** The game ships exactly as the user built it: \`initEmbed()\` first in the boot code (the \`genex-threejs-embed-auth\` card has the call; the renderer draws before any \`await waitForPlayer()\`), a static build into \`dist/\` with relative asset paths, then \`npx genex preview\`. Never restructure, reformat or "improve" the game to ship it, never scaffold a new app around it, and never start a design document or a build plan for it \u2014 the user's own process is theirs. Load the \`genex-tool-publish\` card before the first preview; it owns the vocabulary, the links and the limits.
886
886
  6. **Ship first, then report.** \`preview\` prints a preflight \u2014 phone memory, a missing volume slider, an asset nobody wired, a viewport line. It never blocks a deploy, so push the build as it is, hand over the link, THEN relay each preflight line to the user in one plain sentence with an offer to fix it, and fix one only on their yes. The preflight is a report for the user, not a to-do list for you.
@@ -22104,7 +22104,7 @@ async function runBlender(opts) {
22104
22104
  return 1;
22105
22105
  }
22106
22106
  if (sub === "serve") {
22107
- const { serveLocalBlender } = await import("./blender-serve-PVVCH3S6.js");
22107
+ const { serveLocalBlender } = await import("./blender-serve-BF4FZ55Z.js");
22108
22108
  const port = Number(process.env.GENEX_BLENDER_PORT ?? 8088);
22109
22109
  log.step(`Starting a local Blender service on port ${port}`);
22110
22110
  log.plain(
@@ -22113,7 +22113,7 @@ async function runBlender(opts) {
22113
22113
  return serveLocalBlender({ port, log });
22114
22114
  }
22115
22115
  if (sub === "mcp") {
22116
- const { runBlenderMcp } = await import("./blender-mcp-X66ZZ4TN.js");
22116
+ const { runBlenderMcp } = await import("./blender-mcp-Q6PSFYSE.js");
22117
22117
  return runBlenderMcp();
22118
22118
  }
22119
22119
  if (sub === "seat") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genex-ai/cli-demo",
3
- "version": "1.32.0",
3
+ "version": "1.32.1-dev.658",
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": {
@@ -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
@@ -203,7 +203,7 @@ evidence detective game, a video-book. The pattern that makes it hold together:
203
203
 
204
204
  ## Troubleshooting
205
205
 
206
- - **"Not authorized"** — run `npx @genex-ai/cli-demo@latest init` first (it writes your `GENEX_TOKEN`).
206
+ - **"Not authorized"** — run `npx @genex-ai/cli-demo@dev init` first (it writes your `GENEX_TOKEN`).
207
207
  - **"Prompt rejected"** — the provider's content-safety filter blocked the prompt.
208
208
  This is non-retryable; retrying the same wording fails again. Rewrite the prompt.
209
209
  The measured false-positive class is anatomy being pierced or entered
@@ -161,7 +161,7 @@ downloads the game too, binary assets and all:
161
161
 
162
162
  ```bash
163
163
  mkdir my-game && cd my-game
164
- npx @genex-ai/cli-demo@latest link <slug> # slug = the name in the play URL
164
+ npx @genex-ai/cli-demo@dev link <slug> # slug = the name in the play URL
165
165
  npm install
166
166
  ```
167
167
 
@@ -225,7 +225,7 @@ Safe to run any time — genex-owned skills are refreshed to the latest version,
225
225
  and your own files are never touched:
226
226
 
227
227
  ```bash
228
- npx @genex-ai/cli-demo@latest init
228
+ npx @genex-ai/cli-demo@dev init
229
229
  ```
230
230
 
231
231
  Use `--force` only if you intentionally want your own existing files overwritten
@@ -72,6 +72,13 @@ up. **Re-running the model command bills a NEW model** — never use it as a
72
72
  status check. Five or so in flight at a time is the provider's comfortable
73
73
  concurrency; a burst beyond that waits on the server side rather than failing.
74
74
 
75
+ ## Moving parts
76
+
77
+ For models that need moving parts, use `--parts` during generation or
78
+ `genex model segment <id>` to split an existing model. Inspect the resulting
79
+ pieces, set their pivots, and animate them. Simple moving parts can also be
80
+ built in code.
81
+
75
82
  ## Placing a model
76
83
 
77
84
  A generated GLB has no shared "front": one building's door faces −x, the next
@@ -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
  ```