@genex-ai/cli-demo 1.26.1-dev.621 → 1.26.2-dev.622

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,7 +7,7 @@ import {
7
7
  isRenderMode,
8
8
  sceneSummary,
9
9
  sheetOf
10
- } from "./chunk-CE3B24E2.js";
10
+ } from "./chunk-I77A53C6.js";
11
11
  import {
12
12
  getCliVersion
13
13
  } from "./chunk-HYCSNWYX.js";
@@ -758,7 +758,11 @@ async function blenderCall(base, route, body) {
758
758
  );
759
759
  }
760
760
  const detail = typeof json.detail === "string" ? ` \u2014 ${json.detail}` : "";
761
- throw new Error(`${route} failed (${res.status}): ${json.error ?? text.slice(0, 200)}${detail}`);
761
+ const stage = typeof json.stage === "string" ? ` [${json.stage}]` : "";
762
+ const mutationWarning = json.scriptStarted === true ? " (script may have changed the scene; inspect it before retrying)" : "";
763
+ const trace = typeof json.trace === "string" ? `
764
+ ${json.trace.slice(-4e3)}` : "";
765
+ throw new Error(`${route} failed (${res.status}): ${json.error ?? text.slice(0, 200)}${stage}${detail}${mutationWarning}${trace}`);
762
766
  }
763
767
  if (seat?.kind === "cli") void touchCliSeat();
764
768
  return json;
package/dist/index.js CHANGED
@@ -41,7 +41,7 @@ import {
41
41
  writeProject,
42
42
  writeUserToken,
43
43
  writeWorkspace
44
- } from "./chunk-CE3B24E2.js";
44
+ } from "./chunk-I77A53C6.js";
45
45
  import {
46
46
  CLI_CHANNEL,
47
47
  DEFAULT_API_URL,
@@ -21104,7 +21104,7 @@ async function runBlender(opts) {
21104
21104
  return serveLocalBlender({ port, log });
21105
21105
  }
21106
21106
  if (sub === "mcp") {
21107
- const { runBlenderMcp } = await import("./blender-mcp-Z4ENPVVE.js");
21107
+ const { runBlenderMcp } = await import("./blender-mcp-DPH5PIVX.js");
21108
21108
  return runBlenderMcp();
21109
21109
  }
21110
21110
  if (sub === "seat") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genex-ai/cli-demo",
3
- "version": "1.26.1-dev.621",
3
+ "version": "1.26.2-dev.622",
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": {
@@ -214,12 +214,12 @@ def scene_digest():
214
214
  if m.use_nodes and m.node_tree:
215
215
  for node in m.node_tree.nodes:
216
216
  if node.type == "BSDF_PRINCIPLED":
217
- h.update(("bsdf:%s\n" % tuple(node.inputs["Base Color"].default_value)).encode())
217
+ h.update(("bsdf:%s\n" % (tuple(node.inputs["Base Color"].default_value),)).encode())
218
218
  elif obj.type == "LIGHT" and data is not None:
219
219
  h.update(("light:%s:%s:%s\n" % (data.type, data.energy, tuple(data.color))).encode())
220
220
  elif obj.type == "CAMERA" and data is not None:
221
221
  h.update(("cam:%s:%s\n" % (data.lens, data.type)).encode())
222
222
  w = scene.world
223
223
  if w is not None:
224
- h.update(("world:%s\n" % tuple(getattr(w, "color", (0, 0, 0)))).encode())
224
+ h.update(("world:%s\n" % (tuple(getattr(w, "color", (0, 0, 0))),)).encode())
225
225
  return h.hexdigest()
@@ -406,15 +406,21 @@ class Handler(BaseHTTPRequestHandler):
406
406
  started = time.time()
407
407
  route = self.path.split("?")[0]
408
408
  _set_deadline(route, _budget_for(route, body))
409
+ stage = route.lstrip("/")
410
+ script_started = False
409
411
  try:
410
412
  if route == "/exec":
413
+ stage = "script"
414
+ script_started = True
411
415
  result = ops.run_script(body.get("script", ""))
416
+ stage = "scene_info"
412
417
  result["scene"] = ops.scene_info()
413
418
  result["gpu"] = GPU_WITNESS
414
419
  # The sheet rides EVERY exec by default. verify:false is for
415
420
  # bulk sub-steps only -- an agent that has to ask for the
416
421
  # picture is an agent that will forget to.
417
422
  if body.get("verify", True):
423
+ stage = "verification"
418
424
  _attach_sheet(result, body, body.get("mode") or DEFAULT_MODE)
419
425
  result["ms"] = int((time.time() - started) * 1000)
420
426
  _checkpoint()
@@ -492,7 +498,8 @@ class Handler(BaseHTTPRequestHandler):
492
498
  except Exception as e:
493
499
  import traceback
494
500
 
495
- self._send(500, {"error": "exec_failed", "detail": str(e), "trace": traceback.format_exc(limit=6)})
501
+ self._send(500, {"error": "exec_failed", "detail": str(e), "trace": traceback.format_exc(limit=6),
502
+ "stage": stage, "scriptStarted": script_started})
496
503
  finally:
497
504
  # MUST run: a stale deadline file makes the supervisor kill a
498
505
  # perfectly healthy Blender on its next poll.
@@ -600,4 +607,5 @@ def main():
600
607
  srv.server_close()
601
608
 
602
609
 
603
- main()
610
+ if __name__ == "__main__":
611
+ main()