@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.
- package/dist/{blender-mcp-X66ZZ4TN.js → blender-mcp-Q6PSFYSE.js} +2 -2
- package/dist/{blender-serve-PVVCH3S6.js → blender-serve-BF4FZ55Z.js} +1 -1
- package/dist/{chunk-OJAXYQ5L.js → chunk-2COG4P3T.js} +1 -1
- package/dist/{chunk-5FA2WLM7.js → chunk-HYCSNWYX.js} +1 -1
- package/dist/index.js +5 -5
- package/package.json +1 -1
- package/templates/skills/genex-ai-texture/SKILL.md +1 -1
- package/templates/skills/genex-ai-video/SKILL.md +1 -1
- package/templates/skills/genex-getting-started/SKILL.md +2 -2
- package/templates/skills/genex-tool-model/SKILL.md +7 -0
- package/templates/skills/genex-updates/SKILL.md +1 -1
|
@@ -7,10 +7,10 @@ import {
|
|
|
7
7
|
isRenderMode,
|
|
8
8
|
sceneSummary,
|
|
9
9
|
sheetOf
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-2COG4P3T.js";
|
|
11
11
|
import {
|
|
12
12
|
getCliVersion
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-HYCSNWYX.js";
|
|
14
14
|
|
|
15
15
|
// src/commands/blender-mcp.ts
|
|
16
16
|
import fs from "fs/promises";
|
|
@@ -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 = "
|
|
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-
|
|
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-
|
|
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.**
|
|
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-
|
|
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-
|
|
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.
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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
|
```
|