@genex-ai/cli-demo 1.26.1-dev.621 → 1.27.0-dev.623

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": "1.26.1-dev.621",
3
+ "version": "1.27.0-dev.623",
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()