topview-3d-cli 0.1.0__tar.gz → 0.1.2__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 (338) hide show
  1. {topview_3d_cli-0.1.0/topview_3d_cli.egg-info → topview_3d_cli-0.1.2}/PKG-INFO +2 -2
  2. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/README.md +1 -1
  3. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/__init__.py +1 -1
  4. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/render.mjs +1 -1
  5. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/bom.py +1 -1
  6. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_bom.py +1 -1
  7. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_cli.py +17 -4
  8. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_errors.py +7 -3
  9. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_inspect.py +1 -1
  10. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_project.py +32 -2
  11. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_render.py +1 -1
  12. topview_3d_cli-0.1.2/topview_3d_cli/local_studio.py +146 -0
  13. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2/topview_3d_cli.egg-info}/PKG-INFO +2 -2
  14. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli.egg-info/SOURCES.txt +1 -0
  15. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/LICENSE +0 -0
  16. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/LICENSE-ASSETS +0 -0
  17. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/NOTICE +0 -0
  18. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/pyproject.toml +0 -0
  19. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/setup.cfg +0 -0
  20. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/__main__.py +0 -0
  21. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/LICENSE +0 -0
  22. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/NOTICE +0 -0
  23. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/characters/a3d_char_30ec53c93eae4173946b38639691ebe0.glb +0 -0
  24. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/characters/a3d_char_461b4f4b76ae4b198f439fa4f6f743b6.glb +0 -0
  25. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/characters/a3d_char_7d220ac359844c80a8faaf0e25478477.glb +0 -0
  26. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/characters/a3d_char_de37873a79244fbe8a0660ea08d1b4ab.glb +0 -0
  27. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-attack-jab.webp +0 -0
  28. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-attack-lunge.webp +0 -0
  29. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-attack-rear.webp +0 -0
  30. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-crawling-forward-reaching-with-le.webp +0 -0
  31. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-exaggerated-punch-with-right-hand.webp +0 -0
  32. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-examine-fwd.webp +0 -0
  33. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-holding-bow.webp +0 -0
  34. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-jab-with-right-hand.webp +0 -0
  35. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-on-hands-and-toes-right-leg-forwa.webp +0 -0
  36. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-on-right-leg.webp +0 -0
  37. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-push-up.webp +0 -0
  38. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-pushing-backwards.webp +0 -0
  39. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-pushing-with-both-hands.webp +0 -0
  40. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-pushing-with-left-side-of-body.webp +0 -0
  41. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-sliding.webp +0 -0
  42. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-arms-spread-looking-upwards.webp +0 -0
  43. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-examine-fwd.webp +0 -0
  44. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-lean-fwd-right-hand-supporting.webp +0 -0
  45. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-leaning-against-object-look-l.webp +0 -0
  46. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-look-back.webp +0 -0
  47. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-look-down-back.webp +0 -0
  48. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-look-fwd-f.webp +0 -0
  49. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-look-fwd-m.webp +0 -0
  50. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-on-knees-arms-up.webp +0 -0
  51. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-sneaking.webp +0 -0
  52. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-l-toe-top-of-right-foot.webp +0 -0
  53. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-legs-spread-lean-l.webp +0 -0
  54. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-legs-spread-lean-r.webp +0 -0
  55. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-legs-x.webp +0 -0
  56. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-r-foot-arms-extended-backwards.webp +0 -0
  57. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-r-toe-arms-up.webp +0 -0
  58. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-r-toe-l-leg-up.webp +0 -0
  59. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-toes-arch.webp +0 -0
  60. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-toes-reach.webp +0 -0
  61. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dyn-floating-bent-forwards.webp +0 -0
  62. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dyn-floating-left-leg-bent-hands-spread.webp +0 -0
  63. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dyn-floating-legs-bent-and-arms-spread.webp +0 -0
  64. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dyn-floating-legs-raised-arms-extended-u.webp +0 -0
  65. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dyn-l-toe-look-l.webp +0 -0
  66. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dyn-leaping-forward-arms-extended-backwa.webp +0 -0
  67. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dynamic-float-arch.webp +0 -0
  68. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dynamic-float-dive.webp +0 -0
  69. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-back-arched-arms-supp.webp +0 -0
  70. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-legs-to-side-arms-up.webp +0 -0
  71. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-legs-x-arms-supp.webp +0 -0
  72. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-on-back-left-leg-bent-hands-head.webp +0 -0
  73. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-on-back-left-leg-bent.webp +0 -0
  74. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-on-back-legs-x-hands-head.webp +0 -0
  75. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-on-left-side-left-arm-supporting-hea.webp +0 -0
  76. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-on-left-side-left-arm-supporting.webp +0 -0
  77. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-on-right-side-right-arm-supporting.webp +0 -0
  78. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-on-right-side-right-hand-supporting.webp +0 -0
  79. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-on-stomach-elbows-supporting.webp +0 -0
  80. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-right-arm-supporting-l-arm-up.webp +0 -0
  81. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-right-leg-forward-arms-supp.webp +0 -0
  82. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-run-fwd.webp +0 -0
  83. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-run-reach.webp +0 -0
  84. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-sneaking-forward.webp +0 -0
  85. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-sprinting.webp +0 -0
  86. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-stepping-forward-look-l.webp +0 -0
  87. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-walk-fwd-look-r.webp +0 -0
  88. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-walk-fwd.webp +0 -0
  89. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-walking-arms-on-hips.webp +0 -0
  90. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-walking-right-arm-on-hip.webp +0 -0
  91. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-walking.webp +0 -0
  92. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-arms-holding-left-knee-reclining.webp +0 -0
  93. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-arms-holding-right-knee.webp +0 -0
  94. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-arms-resting-on-knees.webp +0 -0
  95. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-arms-supp.webp +0 -0
  96. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-arms-up.webp +0 -0
  97. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-elbows-on-legs-lean-fwd.webp +0 -0
  98. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-elbows-on-legs-lean-l.webp +0 -0
  99. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-knees-up-hold.webp +0 -0
  100. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-lean-back-arms-supp.webp +0 -0
  101. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-lean-fwd-elbows-on-knees.webp +0 -0
  102. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-lean-fwd-hands-in-front.webp +0 -0
  103. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-legs-x-arms-x.webp +0 -0
  104. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-legs-x-hands-head.webp +0 -0
  105. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-legs-x-hold.webp +0 -0
  106. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-legs-x-reclining.webp +0 -0
  107. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-legs-x-right-arm-over-knee.webp +0 -0
  108. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-reaching-hands-towards-toes.webp +0 -0
  109. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-reaching-left-hand-towards-right-toe.webp +0 -0
  110. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-reclined-facepalm.webp +0 -0
  111. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-reclined-hands-head.webp +0 -0
  112. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-reclined-left-leg-crossed-hands-head.webp +0 -0
  113. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-reclined-left-leg-crossed.webp +0 -0
  114. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-reclined-look-down.webp +0 -0
  115. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-reclined-right-leg-crossed-hands-hea.webp +0 -0
  116. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-rev-sit-hands-grasping.webp +0 -0
  117. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-rev-sit-hands-relaxed.webp +0 -0
  118. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-arms-behind-back.webp +0 -0
  119. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-arms-down.webp +0 -0
  120. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-arms-slightly-spread.webp +0 -0
  121. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-bending-forward-arms-x-over-knees.webp +0 -0
  122. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-hands-on-hips-look-back.webp +0 -0
  123. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-l-hip-f.webp +0 -0
  124. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-l-hip-m.webp +0 -0
  125. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-l-leg-r-hip-l-arm-up.webp +0 -0
  126. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-lean-back-arms-behind.webp +0 -0
  127. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-lean-back-l-hip.webp +0 -0
  128. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-left-elbow-resting-obj.webp +0 -0
  129. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-left-leg-obj-left-hand-on-knee-r-h.webp +0 -0
  130. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-left-leg-obj-left-hand-on-knee.webp +0 -0
  131. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-legs-x-arms-up.webp +0 -0
  132. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-legs-x-l-hip.webp +0 -0
  133. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-legs-x-leaning-obj.webp +0 -0
  134. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-legs-x-left-arm-obj-r-hip.webp +0 -0
  135. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-look-down-r.webp +0 -0
  136. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-look-fwd.webp +0 -0
  137. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-look-l.webp +0 -0
  138. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-look-r.webp +0 -0
  139. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-r-arm-up-l-hip.webp +0 -0
  140. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-r-foot-l-leg-up.webp +0 -0
  141. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-r-foot-up.webp +0 -0
  142. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-r-hip-l-arm-up.webp +0 -0
  143. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-r-hip.webp +0 -0
  144. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-right-hand-behind-head.webp +0 -0
  145. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-right-leg-obj-arms-x.webp +0 -0
  146. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-right-leg-obj-l-hip-right-hand-on.webp +0 -0
  147. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_t-pose.webp +0 -0
  148. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/manifest.json +0 -0
  149. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-attack-jab.json +0 -0
  150. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-attack-lunge.json +0 -0
  151. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-attack-rear.json +0 -0
  152. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-crawling-forward-reaching-with-le.json +0 -0
  153. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-exaggerated-punch-with-right-hand.json +0 -0
  154. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-examine-fwd.json +0 -0
  155. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-holding-bow.json +0 -0
  156. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-jab-with-right-hand.json +0 -0
  157. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-on-hands-and-toes-right-leg-forwa.json +0 -0
  158. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-on-right-leg.json +0 -0
  159. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-push-up.json +0 -0
  160. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-pushing-backwards.json +0 -0
  161. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-pushing-with-both-hands.json +0 -0
  162. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-pushing-with-left-side-of-body.json +0 -0
  163. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-sliding.json +0 -0
  164. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-arms-spread-looking-upwards.json +0 -0
  165. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-examine-fwd.json +0 -0
  166. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-lean-fwd-right-hand-supporting.json +0 -0
  167. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-leaning-against-object-look-l.json +0 -0
  168. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-look-back.json +0 -0
  169. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-look-down-back.json +0 -0
  170. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-look-fwd-f.json +0 -0
  171. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-look-fwd-m.json +0 -0
  172. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-on-knees-arms-up.json +0 -0
  173. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-sneaking.json +0 -0
  174. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-l-toe-top-of-right-foot.json +0 -0
  175. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-legs-spread-lean-l.json +0 -0
  176. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-legs-spread-lean-r.json +0 -0
  177. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-legs-x.json +0 -0
  178. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-r-foot-arms-extended-backwards.json +0 -0
  179. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-r-toe-arms-up.json +0 -0
  180. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-r-toe-l-leg-up.json +0 -0
  181. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-toes-arch.json +0 -0
  182. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-toes-reach.json +0 -0
  183. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dyn-floating-bent-forwards.json +0 -0
  184. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dyn-floating-left-leg-bent-hands-spread.json +0 -0
  185. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dyn-floating-legs-bent-and-arms-spread.json +0 -0
  186. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dyn-floating-legs-raised-arms-extended-u.json +0 -0
  187. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dyn-l-toe-look-l.json +0 -0
  188. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dyn-leaping-forward-arms-extended-backwa.json +0 -0
  189. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dynamic-float-arch.json +0 -0
  190. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dynamic-float-dive.json +0 -0
  191. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-back-arched-arms-supp.json +0 -0
  192. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-legs-to-side-arms-up.json +0 -0
  193. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-legs-x-arms-supp.json +0 -0
  194. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-on-back-left-leg-bent-hands-head.json +0 -0
  195. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-on-back-left-leg-bent.json +0 -0
  196. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-on-back-legs-x-hands-head.json +0 -0
  197. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-on-left-side-left-arm-supporting-hea.json +0 -0
  198. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-on-left-side-left-arm-supporting.json +0 -0
  199. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-on-right-side-right-arm-supporting.json +0 -0
  200. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-on-right-side-right-hand-supporting.json +0 -0
  201. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-on-stomach-elbows-supporting.json +0 -0
  202. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-right-arm-supporting-l-arm-up.json +0 -0
  203. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-right-leg-forward-arms-supp.json +0 -0
  204. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-run-fwd.json +0 -0
  205. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-run-reach.json +0 -0
  206. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-sneaking-forward.json +0 -0
  207. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-sprinting.json +0 -0
  208. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-stepping-forward-look-l.json +0 -0
  209. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-walk-fwd-look-r.json +0 -0
  210. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-walk-fwd.json +0 -0
  211. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-walking-arms-on-hips.json +0 -0
  212. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-walking-right-arm-on-hip.json +0 -0
  213. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-walking.json +0 -0
  214. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-arms-holding-left-knee-reclining.json +0 -0
  215. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-arms-holding-right-knee.json +0 -0
  216. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-arms-resting-on-knees.json +0 -0
  217. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-arms-supp.json +0 -0
  218. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-arms-up.json +0 -0
  219. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-elbows-on-legs-lean-fwd.json +0 -0
  220. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-elbows-on-legs-lean-l.json +0 -0
  221. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-knees-up-hold.json +0 -0
  222. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-lean-back-arms-supp.json +0 -0
  223. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-lean-fwd-elbows-on-knees.json +0 -0
  224. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-lean-fwd-hands-in-front.json +0 -0
  225. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-legs-x-arms-x.json +0 -0
  226. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-legs-x-hands-head.json +0 -0
  227. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-legs-x-hold.json +0 -0
  228. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-legs-x-reclining.json +0 -0
  229. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-legs-x-right-arm-over-knee.json +0 -0
  230. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-reaching-hands-towards-toes.json +0 -0
  231. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-reaching-left-hand-towards-right-toe.json +0 -0
  232. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-reclined-facepalm.json +0 -0
  233. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-reclined-hands-head.json +0 -0
  234. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-reclined-left-leg-crossed-hands-head.json +0 -0
  235. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-reclined-left-leg-crossed.json +0 -0
  236. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-reclined-look-down.json +0 -0
  237. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-reclined-right-leg-crossed-hands-hea.json +0 -0
  238. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-rev-sit-hands-grasping.json +0 -0
  239. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-rev-sit-hands-relaxed.json +0 -0
  240. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-arms-behind-back.json +0 -0
  241. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-arms-down.json +0 -0
  242. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-arms-slightly-spread.json +0 -0
  243. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-bending-forward-arms-x-over-knees.json +0 -0
  244. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-hands-on-hips-look-back.json +0 -0
  245. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-l-hip-f.json +0 -0
  246. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-l-hip-m.json +0 -0
  247. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-l-leg-r-hip-l-arm-up.json +0 -0
  248. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-lean-back-arms-behind.json +0 -0
  249. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-lean-back-l-hip.json +0 -0
  250. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-left-elbow-resting-obj.json +0 -0
  251. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-left-leg-obj-left-hand-on-knee-r-h.json +0 -0
  252. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-left-leg-obj-left-hand-on-knee.json +0 -0
  253. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-legs-x-arms-up.json +0 -0
  254. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-legs-x-l-hip.json +0 -0
  255. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-legs-x-leaning-obj.json +0 -0
  256. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-legs-x-left-arm-obj-r-hip.json +0 -0
  257. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-look-down-r.json +0 -0
  258. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-look-fwd.json +0 -0
  259. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-look-l.json +0 -0
  260. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-look-r.json +0 -0
  261. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-r-arm-up-l-hip.json +0 -0
  262. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-r-foot-l-leg-up.json +0 -0
  263. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-r-foot-up.json +0 -0
  264. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-r-hip-l-arm-up.json +0 -0
  265. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-r-hip.json +0 -0
  266. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-right-hand-behind-head.json +0 -0
  267. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-right-leg-obj-arms-x.json +0 -0
  268. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-right-leg-obj-l-hip-right-hand-on.json +0 -0
  269. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_t-pose.json +0 -0
  270. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/applyIntent.mjs +0 -0
  271. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/browser.mjs +0 -0
  272. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/cli.mjs +0 -0
  273. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/editSequence.mjs +0 -0
  274. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/evaluate.mjs +0 -0
  275. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/mediaUrl.mjs +0 -0
  276. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/@topview/3d-builder/dist/draco/draco_decoder.js +0 -0
  277. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/@topview/3d-builder/dist/draco/draco_decoder.wasm +0 -0
  278. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/@topview/3d-builder/dist/draco/draco_wasm_wrapper.js +0 -0
  279. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/@topview/3d-builder/dist/engine/index.mjs +0 -0
  280. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/@topview/3d-builder/dist/evaluate/index.mjs +0 -0
  281. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/@topview/3d-builder/dist/headless/index.mjs +0 -0
  282. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/@topview/3d-builder/package.json +0 -0
  283. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/LICENSE +0 -0
  284. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/build/three.core.js +0 -0
  285. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/build/three.module.js +0 -0
  286. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/controls/OrbitControls.js +0 -0
  287. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/curves/NURBSCurve.js +0 -0
  288. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/curves/NURBSUtils.js +0 -0
  289. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/libs/draco/draco_decoder.js +0 -0
  290. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/libs/draco/draco_decoder.wasm +0 -0
  291. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/libs/draco/draco_wasm_wrapper.js +0 -0
  292. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/libs/fflate.module.js +0 -0
  293. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/lines/LineMaterial.js +0 -0
  294. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/lines/LineSegments2.js +0 -0
  295. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/lines/LineSegmentsGeometry.js +0 -0
  296. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/loaders/DRACOLoader.js +0 -0
  297. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/loaders/FBXLoader.js +0 -0
  298. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/loaders/GLTFLoader.js +0 -0
  299. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +0 -0
  300. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/utils/SkeletonUtils.js +0 -0
  301. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/package.json +0 -0
  302. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/LICENSE +0 -0
  303. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/index.js +0 -0
  304. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/package.json +0 -0
  305. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/ZodError.js +0 -0
  306. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/errors.js +0 -0
  307. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/external.js +0 -0
  308. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/helpers/errorUtil.js +0 -0
  309. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/helpers/parseUtil.js +0 -0
  310. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/helpers/typeAliases.js +0 -0
  311. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/helpers/util.js +0 -0
  312. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/locales/en.js +0 -0
  313. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/types.js +0 -0
  314. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/package.json +0 -0
  315. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/playwright.mjs +0 -0
  316. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/static/headless.html +0 -0
  317. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/static/measure.mjs +0 -0
  318. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/static/pose.mjs +0 -0
  319. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/staticIntent.mjs +0 -0
  320. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/runtime.json +0 -0
  321. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/contracts/director-v1/schema/director-document.schema.json +0 -0
  322. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/contracts/director-v1/schema/fcurves-compact-v1.schema.json +0 -0
  323. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/director_camera_view.py +0 -0
  324. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/director_document.py +0 -0
  325. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/director_geometry.py +0 -0
  326. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/director_operations.py +0 -0
  327. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/director_static.py +0 -0
  328. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_assets.py +0 -0
  329. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_catalog.py +0 -0
  330. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_edit.py +0 -0
  331. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_read.py +0 -0
  332. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/node_batch.py +0 -0
  333. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/renderer.py +0 -0
  334. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/runtime.py +0 -0
  335. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli.egg-info/dependency_links.txt +0 -0
  336. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli.egg-info/entry_points.txt +0 -0
  337. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli.egg-info/requires.txt +0 -0
  338. {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: topview-3d-cli
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Build and render 3D director scenes locally with the topview-3d-cli command.
5
5
  License-Expression: Apache-2.0 AND CC-BY-4.0
6
6
  Project-URL: Homepage, https://www.topview.ai/topview-3d-builder
@@ -26,7 +26,7 @@ Dynamic: license-file
26
26
  # topview-3d-cli
27
27
 
28
28
  `topview-3d-cli` builds and renders 3D director scenes on your machine. Projects are plain files in a
29
- `.topview3d/` directory; rendering uses a local headless Chromium and makes no network requests.
29
+ `.topview-3d/` directory; rendering uses a local headless Chromium and makes no network requests.
30
30
 
31
31
  Requirements: Python 3.11+ and Node.js 20.6+ (with npm).
32
32
 
@@ -1,7 +1,7 @@
1
1
  # topview-3d-cli
2
2
 
3
3
  `topview-3d-cli` builds and renders 3D director scenes on your machine. Projects are plain files in a
4
- `.topview3d/` directory; rendering uses a local headless Chromium and makes no network requests.
4
+ `.topview-3d/` directory; rendering uses a local headless Chromium and makes no network requests.
5
5
 
6
6
  Requirements: Python 3.11+ and Node.js 20.6+ (with npm).
7
7
 
@@ -1,3 +1,3 @@
1
1
  """Local, offline Scene3D director projects and the ``topview-3d-cli`` CLI."""
2
2
 
3
- __version__ = "0.1.0"
3
+ __version__ = "0.1.2"
@@ -143,7 +143,7 @@ function publicAssetBase(body) {
143
143
  }
144
144
 
145
145
  // outputDir is `<absolute>/renders/<runId>`: the caller chooses the root (a project's
146
- // .topview3d/renders), the renderer writes exactly one run directory below it.
146
+ // .topview-3d/renders), the renderer writes exactly one run directory below it.
147
147
  export function resolveOutputDir(outputDir, pathApi = path) {
148
148
  if (typeof outputDir !== 'string' || !outputDir.trim()) {
149
149
  throw new Error('RENDER_OUTPUT_DIR_REQUIRED')
@@ -1,7 +1,7 @@
1
1
  """Plan / constraint record (BOM): intent, relationships, constraints, camera roles, model review.
2
2
 
3
3
  Pure merge and evidence logic behind the ``topview-3d-cli bom`` and ``inspect views`` commands (stored as
4
- ``.topview3d/bom.json``). ``checkpoint`` fields are model-owned; the
4
+ ``.topview-3d/bom.json``). ``checkpoint`` fields are model-owned; the
5
5
  runtime owns ``observed`` and ``verification``. Errors are ``ValueError("<CODE>: ...")``.
6
6
  """
7
7
  from __future__ import annotations
@@ -1,4 +1,4 @@
1
- """``.topview3d/bom.json``: the plan / constraint record kept next to the director document."""
1
+ """``.topview-3d/bom.json``: the plan / constraint record kept next to the director document."""
2
2
  from __future__ import annotations
3
3
 
4
4
  import json
@@ -22,6 +22,7 @@ from topview_3d_cli.local_errors import EXIT_INVALID_INPUT, EXIT_OK, exit_code_f
22
22
  from topview_3d_cli.local_project import (
23
23
  CLI_VERSION,
24
24
  LocalProjectError,
25
+ adopt_edit,
25
26
  apply_operations,
26
27
  init_project,
27
28
  open_project,
@@ -31,6 +32,7 @@ from topview_3d_cli.local_project import (
31
32
  from topview_3d_cli.local_inspect import evaluate, inspect_nodes, inspect_views, parse_frames
32
33
  from topview_3d_cli.local_read import camera_presets, document_view, renders_list, renders_show
33
34
  from topview_3d_cli.local_render import render
35
+ from topview_3d_cli.local_studio import open_studio
34
36
  from topview_3d_cli.renderer import node_path
35
37
  from topview_3d_cli.runtime import PLAYWRIGHT_VERSION, builder_version, node_env, runtime
36
38
 
@@ -261,6 +263,9 @@ def _parser() -> argparse.ArgumentParser:
261
263
  init.add_argument("directory")
262
264
  init.add_argument("--force", action="store_true", help="replace an existing project")
263
265
  project.add_parser("status").add_argument("directory")
266
+ adopt = project.add_parser("adopt", help="write a Studio edit back into the project so later commands continue from it")
267
+ adopt.add_argument("directory")
268
+ adopt.add_argument("payload", help="{\"document\"?, \"fcurves\"?} JSON file, or - for stdin")
264
269
 
265
270
  document = group("document", "read, validate and edit the director document")
266
271
  get = document.add_parser("get", help="the stored document; --summary or --entity for smaller reads")
@@ -317,7 +322,7 @@ def _parser() -> argparse.ArgumentParser:
317
322
  camera = group("camera", "camera helpers")
318
323
  camera.add_parser("presets", help="camera preset ids for add_camera")
319
324
 
320
- bom = group("bom", "plan / constraint record (.topview3d/bom.json)")
325
+ bom = group("bom", "plan / constraint record (.topview-3d/bom.json)")
321
326
  bom.add_parser("get").add_argument("directory")
322
327
  checkpoint = bom.add_parser("checkpoint", help="merge a checkpoint patch (compare-and-set)")
323
328
  checkpoint.add_argument("directory")
@@ -329,7 +334,7 @@ def _parser() -> argparse.ArgumentParser:
329
334
  listing.add_argument("--kind", choices=KINDS)
330
335
  search = asset.add_parser("search", help="keyword search with filters and facets")
331
336
  search.add_argument("query", nargs="?", default="")
332
- search.add_argument("--project", dest="directory", help="also search <project>/.topview3d/assets")
337
+ search.add_argument("--project", dest="directory", help="also search <project>/.topview-3d/assets")
333
338
  search.add_argument("--kind", choices=KINDS)
334
339
  search.add_argument("--category")
335
340
  search.add_argument("--tag", action="append", help="required tag (repeatable)")
@@ -342,7 +347,7 @@ def _parser() -> argparse.ArgumentParser:
342
347
  show_asset.add_argument("--kind", choices=KINDS)
343
348
  importing = asset.add_parser("import", help="copy a model or pose file into an asset root")
344
349
  target = importing.add_mutually_exclusive_group(required=True)
345
- target.add_argument("--project", dest="directory", help="import into <project>/.topview3d/assets")
350
+ target.add_argument("--project", dest="directory", help="import into <project>/.topview-3d/assets")
346
351
  target.add_argument("--builtin", action="store_true", help="import into the built-in asset root")
347
352
  importing.add_argument("file")
348
353
  importing.add_argument("--kind", required=True, choices=("character", "prop", "pose"))
@@ -376,6 +381,8 @@ def _parser() -> argparse.ArgumentParser:
376
381
  browser = group("browser", "renderer browser setup")
377
382
  ensure = browser.add_parser("ensure", help="install the pinned Playwright and Chromium (idempotent)")
378
383
  ensure.add_argument("--with-deps", action="store_true", help="also install Linux system packages (sudo)")
384
+ studio = group("studio", "open the local Studio app on this project")
385
+ studio.add_parser("open", help="start Studio with Node if needed and open this project in the browser").add_argument("directory")
379
386
  return parser
380
387
 
381
388
 
@@ -405,8 +412,14 @@ def _dispatch(args: argparse.Namespace) -> dict[str, Any]:
405
412
  return doctor()
406
413
  if command == "browser":
407
414
  return browser_ensure(with_deps=args.with_deps)
415
+ if command == "studio":
416
+ return open_studio(args.directory)
408
417
  if command == "project":
409
- return init_project(args.directory, force=args.force) if sub == "init" else project_status(args.directory)
418
+ if sub == "init":
419
+ return init_project(args.directory, force=args.force)
420
+ if sub == "adopt":
421
+ return adopt_edit(args.directory, load_spec(args.payload, "PROJECT_ADOPT_INVALID"))
422
+ return project_status(args.directory)
410
423
  if command == "document":
411
424
  if sub == "get":
412
425
  return document_view(args.directory, summary=args.summary, entity=args.entity,
@@ -14,8 +14,9 @@ EXIT_INVALID_INPUT = 2
14
14
  ERROR_CODES: dict[str, tuple[int, str]] = {
15
15
  # Command line and input files
16
16
  "USAGE_INVALID": (2, "Unknown command, missing argument or bad option."),
17
- "PROJECT_NOT_INITIALIZED": (2, "The directory has no .topview3d project; run `project init`."),
17
+ "PROJECT_NOT_INITIALIZED": (2, "The directory has no .topview-3d project; run `project init`."),
18
18
  "PROJECT_EXISTS": (2, "`project init` target already contains a project; pass --force to replace it."),
19
+ "PROJECT_ADOPT_INVALID": (2, "`project adopt` body must be a JSON object with document and/or fcurves."),
19
20
  "OPERATIONS_NOT_FOUND": (2, "The operations file does not exist."),
20
21
  "OPERATIONS_JSON_INVALID": (2, "The operations file is not JSON or not an operation batch."),
21
22
  "RENDER_PAYLOAD_INVALID": (2, "The render payload is not a JSON object of frames/width/height/cameraNodeId/publicAssetBase."),
@@ -34,7 +35,7 @@ ERROR_CODES: dict[str, tuple[int, str]] = {
34
35
  "ENTITY_NOT_FOUND": (2, "Delete targets an entity that never existed."),
35
36
  "DIRECTOR_NODE_NOT_FOUND": (2, "A referenced node does not exist (the message names it; batches add details.index)."),
36
37
  "DOCUMENT_ENTITY_NOT_FOUND": (2, "`document get --entity` found no node, clip or fcurves shard with that id."),
37
- "RENDER_NOT_FOUND": (2, "No such render run or frame image in .topview3d/renders."),
38
+ "RENDER_NOT_FOUND": (2, "No such render run or frame image in .topview-3d/renders."),
38
39
  "BOM_CHECKPOINT_INVALID": (2, "`bom checkpoint` patch fails its schema or repeats/conflicts ids."),
39
40
  "BOM_TOO_LARGE": (2, "The merged BOM would exceed 64 KiB."),
40
41
  # Operation shape (nothing is applied)
@@ -72,7 +73,7 @@ ERROR_CODES: dict[str, tuple[int, str]] = {
72
73
  "BUILDER_PACKAGE_UNREADABLE": (1, "editor/packages/builder/package.json is missing or has no version."),
73
74
  "ASSET_MANIFEST_INVALID": (1, "An asset manifest is corrupt or lists a path outside its root."),
74
75
  "POSE_ASSET_INVALID": (1, "A pose file is larger than 1 MiB or lacks hips and 1-256 bone quaternions."),
75
- "BOM_JSON_INVALID": (1, ".topview3d/bom.json is corrupt; fix or delete it."),
76
+ "BOM_JSON_INVALID": (1, ".topview-3d/bom.json is corrupt; fix or delete it."),
76
77
  "RENDER_IMAGE_INVALID": (1, "A render image is not a PNG or no longer matches the sha256 in render.json."),
77
78
  "ASSET_FILE_MISSING": (1, "A manifest entry points to a file that does not exist."),
78
79
  "ASSET_NOT_AVAILABLE": (1, "A character or prop model in the document has no local asset (see details)."),
@@ -87,6 +88,9 @@ ERROR_CODES: dict[str, tuple[int, str]] = {
87
88
  "RENDER_RESULT_MISSING": (1, "The Node renderer printed no result."),
88
89
  "RENDER_RESULT_INVALID": (1, "The Node renderer printed a non-JSON result."),
89
90
  "DOCTOR_FAILED": (1, "Plain `doctor` found a missing or outdated dependency (`doctor --json` always exits 0)."),
91
+ "STUDIO_UNAVAILABLE": (1, "Studio is not in this install: it lives in editor/apps/studio of a checkout with Next.js installed."),
92
+ "STUDIO_START_FAILED": (1, "Node started Studio, but it did not list this project on port 3002."),
93
+ "STUDIO_PROJECT_MISSING": (1, "Studio is already running on port 3002 without this project; stop it and retry."),
90
94
  "INTERNAL_ERROR": (1, "Unexpected failure; the message carries the exception."),
91
95
  }
92
96
 
@@ -1,7 +1,7 @@
1
1
  """Read-only checks: ``evaluate`` (dry-run numbers), ``inspect nodes`` (mesh measurements), ``inspect views``.
2
2
 
3
3
  Nothing here edits the director document. ``inspect views`` writes render runs and records the
4
- runtime evidence in ``.topview3d/bom.json``.
4
+ runtime evidence in ``.topview-3d/bom.json``.
5
5
  """
6
6
  from __future__ import annotations
7
7
 
@@ -1,6 +1,6 @@
1
1
  """Local, single-writer Scene3D project storage.
2
2
 
3
- ``.topview3d/entities.json`` is the authoritative entity store (see
3
+ ``.topview-3d/entities.json`` is the authoritative entity store (see
4
4
  ``director_operations``). ``document.json`` and ``fcurves.json`` are derived views
5
5
  rewritten on every commit for renderers and humans; editing them has no effect.
6
6
  """
@@ -25,9 +25,11 @@ from topview_3d_cli.director_document import (
25
25
  validate_fcurves,
26
26
  )
27
27
  from topview_3d_cli.director_operations import (
28
+ MAX_BATCH_OPERATIONS,
28
29
  DirectorConflictError,
29
30
  DirectorOperationError,
30
31
  DirectorStore,
32
+ diff_operations,
31
33
  genesis_store,
32
34
  )
33
35
  from topview_3d_cli.local_errors import LocalProjectError
@@ -36,6 +38,7 @@ from topview_3d_cli.runtime import builder_version
36
38
  FORMAT_NAME = "scene3d-local-project"
37
39
  SCHEMA_VERSION = 2
38
40
  CLI_VERSION = __version__
41
+ STATE_DIR_NAME = ".topview-3d"
39
42
 
40
43
 
41
44
  @dataclass(frozen=True)
@@ -61,7 +64,7 @@ class Project:
61
64
 
62
65
  def project_paths(root: str | os.PathLike[str]) -> ProjectPaths:
63
66
  directory = Path(root).expanduser().resolve()
64
- state = directory / ".topview3d"
67
+ state = directory / STATE_DIR_NAME
65
68
  return ProjectPaths(
66
69
  root=directory,
67
70
  state=state,
@@ -192,6 +195,33 @@ def base_result(project: Project) -> dict[str, Any]:
192
195
  return result
193
196
 
194
197
 
198
+ def adopt_edit(root: str | os.PathLike[str], payload: dict[str, Any]) -> dict[str, Any]:
199
+ """Replace the stored scene with a Studio edit so the next CLI command continues from it.
200
+
201
+ ``payload`` may include ``document``, ``fcurves``, or both. The omitted side stays as stored.
202
+ The entity store remains authoritative: the edit is applied as operations, then rewritten.
203
+ """
204
+ if not isinstance(payload, dict) or not ({"document", "fcurves"} & payload.keys()):
205
+ raise LocalProjectError("PROJECT_ADOPT_INVALID", "body must be an object with document and/or fcurves")
206
+ project = open_project(root)
207
+ current = project.store.assemble()
208
+ document = payload["document"] if "document" in payload else current["document"]
209
+ fcurves = payload["fcurves"] if "fcurves" in payload else current["fcurves"]
210
+ try:
211
+ operations = diff_operations(current, document, fcurves, stem="studio")
212
+ except (TypeError, ValueError) as exc:
213
+ raise LocalProjectError("INVALID_DIRECTOR_DOCUMENT", str(exc)) from exc
214
+ if not operations:
215
+ return {**base_result(project), "adopted": False, "operations": 0}
216
+ try:
217
+ for start in range(0, len(operations), MAX_BATCH_OPERATIONS):
218
+ project.store.apply(operations[start:start + MAX_BATCH_OPERATIONS], strict_versions=False, batch_id="studio")
219
+ except (DirectorConflictError, DirectorOperationError, ValueError) as exc:
220
+ raise LocalProjectError("INVALID_DIRECTOR_DOCUMENT", str(exc)) from exc
221
+ commit(project)
222
+ return {**base_result(project), "adopted": True, "operations": len(operations)}
223
+
224
+
195
225
  def project_status(root: str | os.PathLike[str]) -> dict[str, Any]:
196
226
  project = open_project(root)
197
227
  assembled = project.store.assemble()
@@ -1,4 +1,4 @@
1
- """Render runs under ``.topview3d/renders/<runId>`` with the Node renderer and local model files."""
1
+ """Render runs under ``.topview-3d/renders/<runId>`` with the Node renderer and local model files."""
2
2
  from __future__ import annotations
3
3
 
4
4
  import hashlib
@@ -0,0 +1,146 @@
1
+ """Open a local project in the checkout's Studio app.
2
+
3
+ Studio is the Next.js app at ``editor/apps/studio``. It is not inside the published
4
+ wheel, so this command only works from a repository checkout. It starts Studio with
5
+ Node when port 3002 is free, then opens the system browser on this project.
6
+ """
7
+ from __future__ import annotations
8
+
9
+ import json
10
+ import os
11
+ import re
12
+ import shutil
13
+ import socket
14
+ import sys
15
+ import subprocess
16
+ import time
17
+ import urllib.error
18
+ import urllib.request
19
+ import webbrowser
20
+ from pathlib import Path
21
+
22
+ from topview_3d_cli.local_errors import LocalProjectError
23
+ from topview_3d_cli.local_project import open_project
24
+ from topview_3d_cli.runtime import REPO_ROOT, runtime, user_cache_dir
25
+
26
+ STUDIO_PORT = 3002
27
+ STUDIO_HOST = "127.0.0.1"
28
+
29
+
30
+ def studio_project_id(directory_name: str) -> str:
31
+ slug = re.sub(r"[^a-z0-9]+", "-", directory_name.lower()).strip("-") or "project"
32
+ return f"cli-{slug[:48]}"
33
+
34
+
35
+ def _studio_dir() -> Path:
36
+ studio = REPO_ROOT / "editor" / "apps" / "studio"
37
+ if not (studio / "package.json").is_file():
38
+ raise LocalProjectError(
39
+ "STUDIO_UNAVAILABLE",
40
+ "Studio is part of a repository checkout (editor/apps/studio), not the published package",
41
+ )
42
+ return studio
43
+
44
+
45
+ def _next_bin(studio: Path) -> Path:
46
+ candidates = [
47
+ studio / "node_modules" / "next" / "dist" / "bin" / "next",
48
+ studio.parents[1] / "node_modules" / "next" / "dist" / "bin" / "next",
49
+ ]
50
+ for candidate in candidates:
51
+ if candidate.is_file():
52
+ return candidate
53
+ raise LocalProjectError(
54
+ "STUDIO_UNAVAILABLE",
55
+ "Next.js is not installed; run pnpm install in editor/ of the checkout",
56
+ )
57
+
58
+
59
+ def _port_open(port: int) -> bool:
60
+ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
61
+ sock.settimeout(0.2)
62
+ return sock.connect_ex((STUDIO_HOST, port)) == 0
63
+
64
+
65
+ def _projects(port: int) -> list[dict]:
66
+ url = f"http://{STUDIO_HOST}:{port}/api/projects"
67
+ try:
68
+ with urllib.request.urlopen(url, timeout=2) as response:
69
+ body = json.loads(response.read().decode("utf-8"))
70
+ except (OSError, urllib.error.URLError, json.JSONDecodeError, TimeoutError) as exc:
71
+ raise LocalProjectError("STUDIO_START_FAILED", f"Studio on port {port} did not list projects: {exc}") from exc
72
+ projects = body.get("projects") if isinstance(body, dict) else None
73
+ if not isinstance(projects, list):
74
+ raise LocalProjectError("STUDIO_START_FAILED", "Studio /api/projects did not return a project list")
75
+ return projects
76
+
77
+
78
+ def _wait_until_listed(port: int, project_id: str, timeout: float = 60) -> None:
79
+ deadline = time.monotonic() + timeout
80
+ last_error = "timed out"
81
+ while time.monotonic() < deadline:
82
+ if _port_open(port):
83
+ try:
84
+ if any(item.get("id") == project_id for item in _projects(port) if isinstance(item, dict)):
85
+ return
86
+ last_error = f"project {project_id} is not in the list"
87
+ except LocalProjectError as exc:
88
+ last_error = str(exc)
89
+ time.sleep(0.4)
90
+ raise LocalProjectError("STUDIO_START_FAILED", f"Studio did not become ready: {last_error}")
91
+
92
+
93
+ def _start(studio: Path, next_bin: Path, project_root: Path) -> int:
94
+ log_dir = user_cache_dir() / "studio"
95
+ log_dir.mkdir(parents=True, exist_ok=True)
96
+ log_path = log_dir / "studio.log"
97
+ env = dict(os.environ)
98
+ env["TOPVIEW3D_PROJECTS"] = str(project_root)
99
+ env["TOPVIEW3D_CLI"] = shutil.which("topview-3d-cli") or sys.argv[0]
100
+ try:
101
+ env["TOPVIEW3D_BUILTIN_ASSETS"] = str(runtime().builtin_assets)
102
+ except LocalProjectError:
103
+ pass
104
+ log = log_path.open("ab")
105
+ try:
106
+ process = subprocess.Popen(
107
+ ["node", str(next_bin), "dev", "--port", str(STUDIO_PORT), "--hostname", STUDIO_HOST],
108
+ cwd=studio,
109
+ env=env,
110
+ stdout=log,
111
+ stderr=subprocess.STDOUT,
112
+ start_new_session=True,
113
+ )
114
+ finally:
115
+ log.close()
116
+ return process.pid
117
+
118
+
119
+ def open_studio(directory: str) -> dict:
120
+ project = open_project(directory)
121
+ root = project.paths.root
122
+ project_id = studio_project_id(root.name)
123
+ url = f"http://{STUDIO_HOST}:{STUDIO_PORT}/?project={project_id}"
124
+ started = False
125
+ pid = None
126
+ if _port_open(STUDIO_PORT):
127
+ listed = _projects(STUDIO_PORT)
128
+ if not any(item.get("id") == project_id for item in listed if isinstance(item, dict)):
129
+ raise LocalProjectError(
130
+ "STUDIO_PROJECT_MISSING",
131
+ f"Studio is already running on port {STUDIO_PORT} without this project; stop it and run studio open again",
132
+ )
133
+ else:
134
+ studio = _studio_dir()
135
+ pid = _start(studio, _next_bin(studio), root)
136
+ started = True
137
+ _wait_until_listed(STUDIO_PORT, project_id)
138
+ webbrowser.open(url)
139
+ return {
140
+ "ok": True,
141
+ "url": url,
142
+ "projectId": project_id,
143
+ "project": str(root),
144
+ "started": started,
145
+ "pid": pid,
146
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: topview-3d-cli
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Build and render 3D director scenes locally with the topview-3d-cli command.
5
5
  License-Expression: Apache-2.0 AND CC-BY-4.0
6
6
  Project-URL: Homepage, https://www.topview.ai/topview-3d-builder
@@ -26,7 +26,7 @@ Dynamic: license-file
26
26
  # topview-3d-cli
27
27
 
28
28
  `topview-3d-cli` builds and renders 3D director scenes on your machine. Projects are plain files in a
29
- `.topview3d/` directory; rendering uses a local headless Chromium and makes no network requests.
29
+ `.topview-3d/` directory; rendering uses a local headless Chromium and makes no network requests.
30
30
 
31
31
  Requirements: Python 3.11+ and Node.js 20.6+ (with npm).
32
32
 
@@ -21,6 +21,7 @@ topview_3d_cli/local_inspect.py
21
21
  topview_3d_cli/local_project.py
22
22
  topview_3d_cli/local_read.py
23
23
  topview_3d_cli/local_render.py
24
+ topview_3d_cli/local_studio.py
24
25
  topview_3d_cli/node_batch.py
25
26
  topview_3d_cli/renderer.py
26
27
  topview_3d_cli/runtime.py
File without changes
File without changes
File without changes