janction-render 0.4.87__tar.gz → 0.4.89__tar.gz

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.
Files changed (22) hide show
  1. {janction_render-0.4.87 → janction_render-0.4.89}/PKG-INFO +1 -1
  2. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render/__init__.py +1 -1
  3. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render/client.py +18 -3
  4. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render.egg-info/PKG-INFO +1 -1
  5. {janction_render-0.4.87 → janction_render-0.4.89}/pyproject.toml +1 -1
  6. {janction_render-0.4.87 → janction_render-0.4.89}/LICENSE +0 -0
  7. {janction_render-0.4.87 → janction_render-0.4.89}/README.md +0 -0
  8. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render/brief.py +0 -0
  9. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render/cli.py +0 -0
  10. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render/hookup.py +0 -0
  11. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render/links.py +0 -0
  12. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render/mcp_app.html +0 -0
  13. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render/mcp_common.py +0 -0
  14. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render/mcp_server.py +0 -0
  15. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render/prompts.py +0 -0
  16. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render/tooldocs.py +0 -0
  17. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render.egg-info/SOURCES.txt +0 -0
  18. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render.egg-info/dependency_links.txt +0 -0
  19. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render.egg-info/entry_points.txt +0 -0
  20. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render.egg-info/requires.txt +0 -0
  21. {janction_render-0.4.87 → janction_render-0.4.89}/janction_render.egg-info/top_level.txt +0 -0
  22. {janction_render-0.4.87 → janction_render-0.4.89}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: janction-render
3
- Version: 0.4.87
3
+ Version: 0.4.89
4
4
  Summary: Cloud GPU rendering for Blender scenes and 3D models (GLB, FBX, USD, OBJ, STL), built for AI agents: MCP server (remote + stdio), HTTP API and CLI. Product shots, 360-degree turntables, animations and stills; preview in seconds with a critic; no local Blender or GPU. A 100 JPY welcome credit for a new key (one per network every 30 days) and 400 JPY more for saving a card that is not charged, then 0.1 JPY per GPU-second.
5
5
  Author-email: "JasmyLab Inc." <contact@jasmylab.com>
6
6
  License-Expression: MIT
@@ -1,3 +1,3 @@
1
1
  """JANCTION Render — ターミナルの AI エージェントから GPU で 3DCG を描く。"""
2
2
 
3
- __version__ = "0.4.87"
3
+ __version__ = "0.4.89"
@@ -32,20 +32,28 @@ EDGE_UPLOAD_MB = 100
32
32
  RESUMABLE_ABOVE = 64 * 1024 * 1024
33
33
 
34
34
 
35
+ ASSET_LINK_MAX_BYTES = 128 * 1024 * 1024 # 受付の素材 1 つの上限(JR_MAX_ASSET_MB の既定値。リンクで渡しても同じ)
36
+ _FRAME_NAME_RE = re.compile(r"^(part-\d+_)?frame_")
37
+
38
+
35
39
  def select_artifacts(artifacts: list[dict[str, Any]], only: Optional[str] = None) -> list[dict[str, Any]]:
36
40
  """成果物の絞り込み: all / mp4(output.mp4 だけ)/ frames(PNG のコマだけ)/ sheet(4 コマ並べだけ)/ output(mp4 か sheet)。"""
37
41
  o = (only or "all").strip().lower()
38
42
  if o in ("", "all"):
39
43
  return list(artifacts)
40
44
  if o in ("mp4", "video"):
41
- return [a for a in artifacts if a["name"].endswith((".mp4", ".webm", ".mov"))]
45
+ videos = [a for a in artifacts if a["name"].endswith((".mp4", ".webm", ".mov"))]
46
+ # 部分に分けた仕上げ(b_…)は、部分ごとの動画(part-01_output.mp4 …)とつないだ 1 本(output.mp4)が並ぶ。1 本を返す
47
+ whole = [a for a in videos if a["name"] in ("output.mp4", "output.webm", "output.mov")]
48
+ return whole or videos
42
49
  if o == "frames":
43
- return [a for a in artifacts if a["name"].startswith("frame_")]
50
+ # 部分に分けた仕上げのコマは part-01_frame_0001.png の名前(10/13)
51
+ return [a for a in artifacts if _FRAME_NAME_RE.match(a["name"])]
44
52
  if o == "sheet":
45
53
  return [a for a in artifacts if a["name"] == "sheet.png"]
46
54
  if o == "output":
47
55
  picked = [a for a in artifacts if a["name"] in ("output.mp4", "output.webm", "output.mov", "sheet.png")]
48
- return picked or [a for a in artifacts if a["name"].startswith("frame_")][:1]
56
+ return picked or [a for a in artifacts if _FRAME_NAME_RE.match(a["name"])][:1]
49
57
  raise ValueError("only must be one of: " + ", ".join(ONLY_CHOICES))
50
58
 
51
59
 
@@ -629,6 +637,13 @@ class Client:
629
637
  for name, path in items:
630
638
  n = Path(path).stat().st_size
631
639
  if n > room:
640
+ if n > ASSET_LINK_MAX_BYTES:
641
+ # リンクで渡しても 1 つ 128 MB まで(受付の JR_MAX_ASSET_MB)。通らない送り方を勧めない(10/13 監査)
642
+ raise ClientError(413, "too_large",
643
+ f"asset {name} is {n / 1048576:.0f} MB; an asset can be at most "
644
+ f"{ASSET_LINK_MAX_BYTES // 1048576} MB, uploaded or by link. Make it smaller "
645
+ "(lower texture resolution, or compress it) or pack it into the .blend",
646
+ extra={"code": "INVALID_INPUT", "retryable": False, "recommended_action": "FIX_INPUT"})
632
647
  raise self._too_large(f"asset {name}", n, cap, "asset_urls")
633
648
  if batches[-1] and used + n > room:
634
649
  batches.append([])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: janction-render
3
- Version: 0.4.87
3
+ Version: 0.4.89
4
4
  Summary: Cloud GPU rendering for Blender scenes and 3D models (GLB, FBX, USD, OBJ, STL), built for AI agents: MCP server (remote + stdio), HTTP API and CLI. Product shots, 360-degree turntables, animations and stills; preview in seconds with a critic; no local Blender or GPU. A 100 JPY welcome credit for a new key (one per network every 30 days) and 400 JPY more for saving a card that is not charged, then 0.1 JPY per GPU-second.
5
5
  Author-email: "JasmyLab Inc." <contact@jasmylab.com>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "janction-render"
7
- version = "0.4.87"
7
+ version = "0.4.89"
8
8
  description = "Cloud GPU rendering for Blender scenes and 3D models (GLB, FBX, USD, OBJ, STL), built for AI agents: MCP server (remote + stdio), HTTP API and CLI. Product shots, 360-degree turntables, animations and stills; preview in seconds with a critic; no local Blender or GPU. A 100 JPY welcome credit for a new key (one per network every 30 days) and 400 JPY more for saving a card that is not charged, then 0.1 JPY per GPU-second."
9
9
  readme = "README.md"
10
10
  license = "MIT"