@volter/game-editor 0.5.65 → 0.5.66

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 (544) hide show
  1. package/BUNDLED_NOTICES +1962 -363
  2. package/catalog/entries/bake.json +0 -1
  3. package/catalog/entries/blender.json +2 -2
  4. package/catalog/entries/reflections.json +2 -4
  5. package/catalog/project-source/src/lib/bake/asset-seed.ts +1 -2
  6. package/catalog/project-source/src/lib/bake/clip-layering.ts +3 -4
  7. package/catalog/project-source/src/lib/bake/gltf-bake.ts +1 -1
  8. package/catalog/project-source/src/lib/bake/params.ts +3 -5
  9. package/catalog/project-source/src/lib/bake/rest-relative-animation.ts +2 -3
  10. package/dist/.vite/manifest.json +2406 -2182
  11. package/dist/assets/{AssetBudgetPanel-J9--TZPU.js → AssetBudgetPanel-csYWK2H4.js} +8 -8
  12. package/dist/assets/{AudioViewer-CR7333fe.js → AudioViewer-BH_LUYs5.js} +1 -1
  13. package/dist/assets/{BVHLoader-6bQIXhMX.js → BVHLoader-Jkzh8hMf.js} +1 -1
  14. package/dist/assets/BufferGeometryUtils-CAbuTPOA.js +1 -0
  15. package/dist/assets/{CCDIKSolver-CD7vLpsK.js → CCDIKSolver-D4NvkJ8d.js} +1 -1
  16. package/dist/assets/{CSS3DRenderer-CL7ABLVK.js → CSS3DRenderer-CAS2WZZy.js} +1 -1
  17. package/dist/assets/CanvasSceneViewport-BlsRTk-X.js +1 -0
  18. package/dist/assets/ColladaLoader-DxYB89DA.js +3 -0
  19. package/dist/assets/{ColorInput-DQBNrW-K.js → ColorInput-CPQNsDf1.js} +1 -1
  20. package/dist/assets/{ConvexGeometry-CAzXlPVG.js → ConvexGeometry-Dinf-sev.js} +1 -1
  21. package/dist/assets/{ConvexHull-BINCESFp.js → ConvexHull-CrJ8FY-w.js} +1 -1
  22. package/dist/assets/{DecalGeometry-160KRdfg.js → DecalGeometry-owkbefLa.js} +1 -1
  23. package/dist/assets/EffectComposer-BHDH-NLz.js +1 -0
  24. package/dist/assets/EntityModelDocument-DuQivdvc.js +1 -0
  25. package/dist/assets/EnvironmentAssetDocument-CnTEMn3A.js +1 -0
  26. package/dist/assets/FBXLoader-BMUbIhtE.js +1 -0
  27. package/dist/assets/Fbo-DrK7CWlB.js +1 -0
  28. package/dist/assets/{FontLoader-CvGoVI5a.js → FontLoader-BR_K6Baw.js} +2 -2
  29. package/dist/assets/GLTFExporter-BZqAQJbw.js +1 -0
  30. package/dist/assets/{GameplaySessionTimeline-B52W3FVZ.js → GameplaySessionTimeline-Crqwv2fP.js} +1 -1
  31. package/dist/assets/Gltf-7cVbZUzT.js +2 -0
  32. package/dist/assets/ImageViewer-BkFie7Hm.js +1 -0
  33. package/dist/assets/InspectorObjectPreview-Dl3tyJBn.js +1 -0
  34. package/dist/assets/JsonAssetDocument-BUFzubHM.js +2 -0
  35. package/dist/assets/{LineSegments2-CsOpKSiM.js → LineSegments2-Cicm_Hu1.js} +2 -2
  36. package/dist/assets/LiveModuleDocument-C3OQxiba.js +1 -0
  37. package/dist/assets/LutAssetDocument-DVzd1RZ9.js +1 -0
  38. package/dist/assets/{MTLLoader-_Xzd4_0p.js → MTLLoader-Bg_grNiT.js} +2 -2
  39. package/dist/assets/{MarchingCubes-Bsp4wrzd.js → MarchingCubes-a78AL3HB.js} +1 -1
  40. package/dist/assets/MeshBVH-BCSLNEeP.js +1 -0
  41. package/dist/assets/ModelAssetDocument-pN84goRT.js +1 -0
  42. package/dist/assets/{NonThreeAuthoringBootstrap-C3woOMxX.js → NonThreeAuthoringBootstrap-BKNejRiW.js} +1 -1
  43. package/dist/assets/{OBJLoader-BhIC6Hwo.js → OBJLoader-BiwzVj5b.js} +2 -2
  44. package/dist/assets/Object3DDocumentToolbar-D5Bg5FEf.js +1 -0
  45. package/dist/assets/Object3DDocumentViewport-DFHqru3a.js +2 -0
  46. package/dist/assets/Object3DPreview-BTtZ-41z.js +2 -0
  47. package/dist/assets/OnlineAssetDetail-BAqozdAp.js +1 -0
  48. package/dist/assets/{OrbitControls-DLpayAaK.js → OrbitControls-CzKVCORl.js} +1 -1
  49. package/dist/assets/{OrbitControls-CM3bPray.js → OrbitControls-CzTRRI7x.js} +1 -1
  50. package/dist/assets/{OrthographicCamera-bQozawrh.js → OrthographicCamera-CSDDsvu7.js} +1 -1
  51. package/dist/assets/{PLYLoader-DYQqs5Ik.js → PLYLoader-QxrxxMpE.js} +2 -2
  52. package/dist/assets/{PerspectiveCamera-CQ2lh01o.js → PerspectiveCamera-DzD_NfVh.js} +1 -1
  53. package/dist/assets/PlayBar-qVJpgwJt.js +2 -0
  54. package/dist/assets/QuarksAssetDocument-B4vBlUsS.js +2 -0
  55. package/dist/assets/RGBELoader-WQ7xZofE.js +1 -0
  56. package/dist/assets/RectAreaLightUniformsLib-CwcuoVqt.js +1 -0
  57. package/dist/assets/{RenderPass-DPrn-Uky.js → RenderPass-C_CeQNdh.js} +1 -1
  58. package/dist/assets/{ResolutionPicker-C67vs1F3.js → ResolutionPicker-DpHVJxn5.js} +1 -1
  59. package/dist/assets/RootSelectionOverlay-BxvsunO4.js +1 -0
  60. package/dist/assets/{RoundedBox-BDGBg6QZ.js → RoundedBox-B_cZ0NFy.js} +1 -1
  61. package/dist/assets/{RoundedBoxGeometry-CyUuYPfW.js → RoundedBoxGeometry-Y4rcSIvX.js} +1 -1
  62. package/dist/assets/STLLoader-Bej_Nkpr.js +1 -0
  63. package/dist/assets/{SelectionBox-D_75KrNW.js → SelectionBox-Cn9vm7f9.js} +1 -1
  64. package/dist/assets/ShaderAssetDocument-Dx2x8CLr.js +12 -0
  65. package/dist/assets/{ShaderPass-QYRpPuFJ.js → ShaderPass-qtkA7CQ8.js} +1 -1
  66. package/dist/assets/{ShadowEditor-DkImwu1Y.js → ShadowEditor-BEIUkrHL.js} +1 -1
  67. package/dist/assets/SimplifyModifier-D2EesGr2.js +1 -0
  68. package/dist/assets/{SkeletonUtils-Cps8GOC6.js → SkeletonUtils-C8ayciDc.js} +1 -1
  69. package/dist/assets/{Sky-CQKCgYDs.js → Sky-BBpnAJZV.js} +1 -1
  70. package/dist/assets/SourceAssetViewer-BpMbbuy6.js +1 -0
  71. package/dist/assets/StageHost-lB8f---y.js +2 -0
  72. package/dist/assets/{StoryPreviewMount-DjyxRCXu.js → StoryPreviewMount-BIfxmkYh.js} +1 -1
  73. package/dist/assets/{TDSLoader-D_T8XJ81.js → TDSLoader-rHl5Uwc0.js} +1 -1
  74. package/dist/assets/{TextGeometry-DOWAEUV0.js → TextGeometry-BRHSufuM.js} +1 -1
  75. package/dist/assets/ThreeBoardDocument-BHV92Ia3.js +2 -0
  76. package/dist/assets/{ThreeIsolationSceneContent-C8C8whSF.js → ThreeIsolationSceneContent-BqtgDHBK.js} +1 -1
  77. package/dist/assets/{ToolObject3DPreview-BRoDWe4Q.js → ToolObject3DPreview-CcaPJTyH.js} +1 -1
  78. package/dist/assets/Toolbar-keHcSvDD.js +1 -0
  79. package/dist/assets/{TrackballControls-DfznuQTh.js → TrackballControls-Cce-6Ff5.js} +1 -1
  80. package/dist/assets/{TransientHint-BB1fwrvK.js → TransientHint-Dlslh3oX.js} +1 -1
  81. package/dist/assets/{UnrealBloomPass-CR-cS_K5.js → UnrealBloomPass-DiseEiFK.js} +2 -2
  82. package/dist/assets/{VideoViewer-C6kocgIU.js → VideoViewer-naGSXHd6.js} +1 -1
  83. package/dist/assets/ViewportShadingMenu-C7Hdhtca.js +1 -0
  84. package/dist/assets/{active-ingest-CT6jSGhr.js → active-ingest-DEgq9JiA.js} +3 -3
  85. package/dist/assets/{animation-clock-CnjZqfJp.js → animation-clock-lTIb6nk3.js} +1 -1
  86. package/dist/assets/animation-mixers.service-2O2rVwQf.js +1 -0
  87. package/dist/assets/asset-budget-asset.menu-9NhdHAC9.js +1 -0
  88. package/dist/assets/asset-budget.action-yg6-luUJ.js +1 -0
  89. package/dist/assets/asset-budget.document-B46_VFqa.js +1 -0
  90. package/dist/assets/asset-budget.menu-DuH07N-e.js +1 -0
  91. package/dist/assets/{asset-editor-persistence-BBaONOJt.js → asset-editor-persistence-BVtzjadu.js} +1 -1
  92. package/dist/assets/{asset-loaders-BOy5Ss8k.js → asset-loaders-BxG1LykH.js} +2 -2
  93. package/dist/assets/{assets-BuSoGjBX.js → assets-Do88ZdV_.js} +1 -1
  94. package/dist/assets/{audio-unlock.service-CfUgUQVy.js → audio-unlock.service-BJH0mWvX.js} +1 -1
  95. package/dist/assets/{audio.utility-C6K6jem8.js → audio.utility-Cp4aVYFU.js} +1 -1
  96. package/dist/assets/autoplay.service-FxpRy7Ev.js +1 -0
  97. package/dist/assets/{babylon-authoring-adapter-CL02gWDn.js → babylon-authoring-adapter-B_8iE8fK.js} +1 -1
  98. package/dist/assets/{binding-resolver-Dsh-6Vor.js → binding-resolver-BWwG10zJ.js} +2 -2
  99. package/dist/assets/blender-emscripten-engine-CEsWgnR7.js +2 -0
  100. package/dist/assets/{blender-node-editor.document-iIDkB9sI.js → blender-node-editor.document-DTgwy8KC.js} +1 -1
  101. package/dist/assets/blender-properties-tab-DWSJpkxq.js +3 -0
  102. package/dist/assets/blender-runtime-host-OGjPjTrG.js +4 -0
  103. package/dist/assets/{blender-runtime-skin-DyQ9B6CR.js → blender-runtime-skin-DymtXlpt.js} +37 -39
  104. package/dist/assets/blender-runtime.document-CzH2ohHR.js +8 -0
  105. package/dist/assets/{blender-timeline.document-77fx96N7.js → blender-timeline.document-BRy_QPHt.js} +1 -1
  106. package/dist/assets/{blender-uv-editor.document-fsT7B4gV.js → blender-uv-editor.document-D-AbUCqz.js} +1 -1
  107. package/dist/assets/{blender-version.status-o6dBm3n6.js → blender-version.status-B7flzX_7.js} +1 -1
  108. package/dist/assets/{blender-wali-engine-wTOcrOMC.js → blender-wali-engine-D3iKpzn9.js} +1 -1
  109. package/dist/assets/blender.command-BVHtgTQy.js +1 -0
  110. package/dist/assets/blender.environment-CG-pC7sk.js +1 -0
  111. package/dist/assets/{blender.style-Dcem5f_T.js → blender.style-CxfbTFcE.js} +1 -1
  112. package/dist/assets/{board-guides-DziKSTss.js → board-guides-C3usUZZk.js} +1 -1
  113. package/dist/assets/body-marks-D8iaje6y.js +1 -0
  114. package/dist/assets/bridge.command-BF9u6r0A.js +3 -0
  115. package/dist/assets/browserAll-38aBu-cf.js +1 -0
  116. package/dist/assets/{build-profiles.document-kW8iw8Xj.js → build-profiles.document-DO7oNRuo.js} +2 -2
  117. package/dist/assets/{build-progress.status-BNRLytg2.js → build-progress.status-COeNVhYd.js} +1 -1
  118. package/dist/assets/{build-session-C_sg3CEn.js → build-session-IWIriS5P.js} +1 -1
  119. package/dist/assets/{build.action-lYjTLb7K.js → build.action-DlkFvZf6.js} +1 -1
  120. package/dist/assets/{build.command-DIGgUPU_.js → build.command-DPqQIYj_.js} +1 -1
  121. package/dist/assets/{build.header-CKajx5U3.js → build.header-CNLG-pV8.js} +1 -1
  122. package/dist/assets/{build.menu-BdU0QXny.js → build.menu-hUlH6loi.js} +1 -1
  123. package/dist/assets/{build.service-CbBAyeu3.js → build.service-C86Td3_9.js} +1 -1
  124. package/dist/assets/{camera-KEsKvOL7.js → camera-CKbyBXMe.js} +1 -1
  125. package/dist/assets/camera-authoring-Ci3KnE-W.js +1 -0
  126. package/dist/assets/{camera-runtime.inspector-B7unX4g1.js → camera-runtime.inspector-DdR3P2BF.js} +1 -1
  127. package/dist/assets/canvas-entry-runtime-E5YjSgre.js +2 -0
  128. package/dist/assets/canvas-preview-frames-CiAx7dpV.js +1 -0
  129. package/dist/assets/{capability-coverage-Czas4C18.js → capability-coverage-CfUeULDN.js} +5 -5
  130. package/dist/assets/city-EkhAOo5s.exr +0 -0
  131. package/dist/assets/{collaboration-presence-DLoZ7EA3.js → collaboration-presence-CSLFNT7m.js} +1 -1
  132. package/dist/assets/{collider-Bw0mXlsW.js → collider-DRSaLRM9.js} +1 -1
  133. package/dist/assets/{component-board.service-DCwcUssB.js → component-board.service-B7Sv8b7m.js} +2 -2
  134. package/dist/assets/component-board.service-B8UHw8dn.js +2 -0
  135. package/dist/assets/component-contracts.service-LFGekycZ.js +1 -0
  136. package/dist/assets/{component-verbs.command-7xzfjGMZ.js → component-verbs.command-D4SvFjfG.js} +1 -1
  137. package/dist/assets/component-verbs.service-TGvWxf2b.js +1 -0
  138. package/dist/assets/{config-CEZk921y.js → config-DB_RH-hO.js} +3 -3
  139. package/dist/assets/{configurations-DTBMdaTL.js → configurations-C2qgJNnW.js} +1 -1
  140. package/dist/assets/{connection.status-BifnQdOs.js → connection.status-CG7X2brL.js} +1 -1
  141. package/dist/assets/{console-bridge-CHcb-xk5.js → console-bridge-B5Ltae37.js} +1 -1
  142. package/dist/assets/{constraint-De8f1Uiq.js → constraint-C_Jj7dXy.js} +1 -1
  143. package/dist/assets/constraints.inspector-D6QZJS4b.js +1 -0
  144. package/dist/assets/courtyard-DqlebbpC.exr +0 -0
  145. package/dist/assets/coverage.service-Clo86874.js +3 -0
  146. package/dist/assets/{create-runtime-CVCc1BDx.js → create-runtime-lmA910XT.js} +1 -1
  147. package/dist/assets/{curve-7Q79VgU4.js → curve-6-TR6dNb.js} +1 -1
  148. package/dist/assets/{data-asset-4hjS642k.js → data-asset-BNbd309U.js} +1 -1
  149. package/dist/assets/{data-ref-CQI28C0D.js → data-ref-Dvmd7eb1.js} +1 -1
  150. package/dist/assets/{debug-bridge-CCohG-d-.js → debug-bridge-BUNhgyY6.js} +1 -1
  151. package/dist/assets/{debug-registry-Dgvitx8M.js → debug-registry-B3Cnne3x.js} +1 -1
  152. package/dist/assets/deferred-ingest-play-7V8OrW3e.js +2 -0
  153. package/dist/assets/design-time-layers-g9VS6amb.js +1 -0
  154. package/dist/assets/design-time-mount.service-HtMr_vBd.js +2 -0
  155. package/dist/assets/design-time-react-mount-Dx6fJ-Hg.js +1 -0
  156. package/dist/assets/{directional-shadow-fit-BVkOKAv2.js → directional-shadow-fit-Cjz_Eg2b.js} +1 -1
  157. package/dist/assets/{document-preview-three-Kbg2GCLm.js → document-preview-three-C3y0syYQ.js} +1 -1
  158. package/dist/assets/{dom-authoring-adapter-CY8C7f4T.js → dom-authoring-adapter-CEeFyatF.js} +1 -1
  159. package/dist/assets/{draco3d-BBUTcNkz.js → draco3d-FKy0apkb.js} +1 -1
  160. package/dist/assets/drei-asset-caches-jJoHXbTj.js +2 -0
  161. package/dist/assets/{edit-mode-audio.service-Bzetwd5B.js → edit-mode-audio.service-DZTnrW6t.js} +1 -1
  162. package/dist/assets/edit-mode-authoring-D_BiHCQj.js +1 -0
  163. package/dist/assets/{edit-mode-networking.service-YCX6RRb_.js → edit-mode-networking.service-BzMI2VxO.js} +1 -1
  164. package/dist/assets/editor-api-Bzmo0o8_.js +1 -0
  165. package/dist/assets/{entry-adjudication-Cq8Yeb74.js → entry-adjudication-BYy7TXOB.js} +1 -1
  166. package/dist/assets/{events-156d8d12.esm-ErOhDXXB.js → events-156d8d12.esm-C734MYnx.js} +7 -7
  167. package/dist/assets/{extend-B-eOccUm.js → extend-CLG0ymiX.js} +1 -1
  168. package/dist/assets/forest-P_CQY3b_.exr +0 -0
  169. package/dist/assets/fork-menu-De7HU6_H.js +1 -0
  170. package/dist/assets/{frame-debugger-store-D1Mf_5up.js → frame-debugger-store-BZgIOlU6.js} +1 -1
  171. package/dist/assets/{game-DHOZVb-7.js → game-D5EJoILQ.js} +1 -1
  172. package/dist/assets/{game-contract-seams-a5YXejOu.js → game-contract-seams-TCpIMmHP.js} +1 -1
  173. package/dist/assets/{game-css-scope-transform-Eng4wS8E.js → game-css-scope-transform-NbpajQr-.js} +1 -1
  174. package/dist/assets/game-document.service-6eRlrI-d.js +1 -0
  175. package/dist/assets/game-eval.command-hKnSMlX0.js +2 -0
  176. package/dist/assets/{game-input-seams-CIQdetRw.js → game-input-seams-BC6xhZy3.js} +1 -1
  177. package/dist/assets/{game-module-access-B2mFxv-i.js → game-module-access-ry3xb1Ix.js} +1 -1
  178. package/dist/assets/{gameplay-export-BoKXm51x.js → gameplay-export-DiLQuPpn.js} +1 -1
  179. package/dist/assets/gameplay-replay-Bsre-1K8.js +1 -0
  180. package/dist/assets/{gameplay-rng-trap-CTNhm-UW.js → gameplay-rng-trap-BhRx_CtU.js} +1 -1
  181. package/dist/assets/gameplay.command-BqiyGn-I.js +1 -0
  182. package/dist/assets/{generation-jobs-BQrXbGp_.js → generation-jobs-BYcpgeGk.js} +1 -1
  183. package/dist/assets/generation.service-O81IqA-6.js +1 -0
  184. package/dist/assets/{generations-DzUogZsM.js → generations-CsGQ3twi.js} +1 -1
  185. package/dist/assets/{generations.status-CgOUBCum.js → generations.status-C3YU0_ml.js} +1 -1
  186. package/dist/assets/godot.style-DxJaFWOP.js +1 -0
  187. package/dist/assets/godot.view-BFsHk8b2.js +1 -0
  188. package/dist/assets/{hosted-asset-materialization-CiIvWkGU.js → hosted-asset-materialization-Bk-plQF6.js} +2 -2
  189. package/dist/assets/{ibl-override-material-BlmCxFKq.js → ibl-override-material-BhbGwgS1.js} +1 -1
  190. package/dist/assets/{index-mjWQmGhM.js → index-0n9eSzwT.js} +1 -1
  191. package/dist/assets/index-B4bmKkgY.css +1 -0
  192. package/dist/assets/index-BLo2LE8C.js +3404 -0
  193. package/dist/assets/index-BWW4-DBH.js +1 -0
  194. package/dist/assets/index-CLcsjKUs.js +1 -0
  195. package/dist/assets/index-CU5YUq-x.js +134 -0
  196. package/dist/assets/{index-DUpHH6JR.js → index-Cb6o_Td_.js} +1 -1
  197. package/dist/assets/index-Ckxb31Yz.js +1500 -0
  198. package/dist/assets/index-CnpsJMao.js +1 -0
  199. package/dist/assets/index-Cr23XhNm.js +1 -0
  200. package/dist/assets/index-DO1rWQ_r.js +487 -0
  201. package/dist/assets/{index-BcCBqgM_.js → index-DUh02lTr.js} +1 -1
  202. package/dist/assets/index-DXEHfb0b.js +1 -0
  203. package/dist/assets/{index-V1R-e5Bd.js → index-wRCvCebM.js} +1 -1
  204. package/dist/assets/{inference-diagnostics-Dhmtfbq_.js → inference-diagnostics-YW0yJkKx.js} +1 -1
  205. package/dist/assets/{ingest-BbYMC2vQ.js → ingest-BlQnR7s3.js} +1 -1
  206. package/dist/assets/ingest-boot-viewport-uG9jQ1zm.js +1 -0
  207. package/dist/assets/ingest-siblings-DRQXSWax.js +1 -0
  208. package/dist/assets/{ingest-source-persistence-C_6Hiyra.js → ingest-source-persistence-DH6ioCOu.js} +1 -1
  209. package/dist/assets/{ingest.service-BTDnQfM1.js → ingest.service-GeaWMaZX.js} +1 -1
  210. package/dist/assets/{input-manager-DH_hGW6d.js → input-manager-Cxx3RJgG.js} +1 -1
  211. package/dist/assets/{input-router-BNQvtIqw.js → input-router-FzxO5ld6.js} +1 -1
  212. package/dist/assets/{inspect-BZfi3mmo.js → inspect-BRgDdtVk.js} +1 -1
  213. package/dist/assets/instances.command-CFOMPSj3.js +1 -0
  214. package/dist/assets/{instruments-CKR02Y8I.js → instruments-IKn-vvNb.js} +1 -1
  215. package/dist/assets/interior-Bo_lba15.exr +0 -0
  216. package/dist/assets/{json-history-resource-BbxllWfV.js → json-history-resource-r-9q_hxP.js} +1 -1
  217. package/dist/assets/{light-D-_wsKTq.js → light-CFAor97k.js} +1 -1
  218. package/dist/assets/light-camera-factory-D1sgz3YB.js +1 -0
  219. package/dist/assets/live-mixers-BRkRHd6g.js +1 -0
  220. package/dist/assets/{loader-CaF_I7Yt.js → loader-BbMsvIxP.js} +1 -1
  221. package/dist/assets/machine.document-CgmsOh-s.js +24 -0
  222. package/dist/assets/machines.finder-nxiCgQc2.js +1 -0
  223. package/dist/assets/matcap-texture-Dh65bX5V.js +1 -0
  224. package/dist/assets/{material-CpAdjDxn.js → material-D5kXEZWQ.js} +1 -1
  225. package/dist/assets/{material-factory-Bz6h__6g.js → material-factory-0Qb0VuZ5.js} +1 -1
  226. package/dist/assets/material-preview.view-DqNcpd_b.js +1 -0
  227. package/dist/assets/{mesh-B3WPtNKO.js → mesh-BKPgNTwh.js} +1 -1
  228. package/dist/assets/{mesh-shadow-CZnXrw_l.js → mesh-shadow-BDQP4mHs.js} +1 -1
  229. package/dist/assets/model-asset-sections.service-DWPLmkqa.js +1 -0
  230. package/dist/assets/model-inspection-Cxfg_Fei.js +1 -0
  231. package/dist/assets/model.layout-BpZE1W9V.js +1 -0
  232. package/dist/assets/{models.finder-G2jQgIRu.js → models.finder-DHW17ZEa.js} +1 -1
  233. package/dist/assets/module-mode-CRfHyIMS.js +2 -0
  234. package/dist/assets/mount-canvas-ingest-root-BZZ8M3Lu.js +2 -0
  235. package/dist/assets/mount-dom-ingest-root-D1GV6Jjt.js +2 -0
  236. package/dist/assets/{mount-game-6t9cKNo4.js → mount-game-F9e76auh.js} +1 -1
  237. package/dist/assets/mount-ingest-root-B5D-Lmmk.js +2 -0
  238. package/dist/assets/{mount-manifest-CGVxhmAw.js → mount-manifest-cYRhgHfo.js} +1 -1
  239. package/dist/assets/mount-three-ingest-root-BNnouaBn.js +1 -0
  240. package/dist/assets/{mounted-authoring-Dmg5xmhP.js → mounted-authoring-TIN5EnCb.js} +1 -1
  241. package/dist/assets/{mounted-story-viewport-source-DjP6RA9U.js → mounted-story-viewport-source-CAlEmE0_.js} +1 -1
  242. package/dist/assets/{native-debug-module-CWicoSGD.js → native-debug-module-j-MekcLS.js} +1 -1
  243. package/dist/assets/{navigation-CIiCx-SM.js → navigation-DmR1BDVo.js} +1 -1
  244. package/dist/assets/{navmesh.menu-CAKiH8PW.js → navmesh.menu-FhL1pGx1.js} +1 -1
  245. package/dist/assets/{navmesh.service-jgDWlgj1.js → navmesh.service-usyDeJlm.js} +1 -1
  246. package/dist/assets/{network.utility-CEu5nHf7.js → network.utility-BPh4hTmh.js} +1 -1
  247. package/dist/assets/night-CvV4Gybt.exr +0 -0
  248. package/dist/assets/{object3d-authoring-subject-CH5sI2oP.js → object3d-authoring-subject-CyE4rQ2A.js} +1 -1
  249. package/dist/assets/oid-transform-BOqL6YH6.js +2 -0
  250. package/dist/assets/{particles-Y626p22p.js → particles-C47L-dda.js} +1 -1
  251. package/dist/assets/particles-factory-CRqPLdS7.js +1 -0
  252. package/dist/assets/pixi-authoring-adapter-C5Ikqj5-.js +1 -0
  253. package/dist/assets/{pixi-live-write-target-DuWydlWb.js → pixi-live-write-target-OWBk79dp.js} +1 -1
  254. package/dist/assets/pixi-primitive-D5igywJ_.js +1 -0
  255. package/dist/assets/pixi-react-root-factory-9lZ0Yz-n.js +1 -0
  256. package/dist/assets/play-mode-DomOvQie.js +22 -0
  257. package/dist/assets/play.command-DoqjH-Pp.js +2 -0
  258. package/dist/assets/{playtest-BXIL1JEF.js → playtest-BnFenMBW.js} +1 -1
  259. package/dist/assets/{pose-guard-6Osb2cFu.js → pose-guard-Bb3gZOzk.js} +1 -1
  260. package/dist/assets/{product-DFhyARJj.js → product-CTDJoVo5.js} +1 -1
  261. package/dist/assets/{profiler.action-CaXJDp3t.js → profiler.action-C_OFGkDw.js} +1 -1
  262. package/dist/assets/{profiler.menu-BIMF6Bi4.js → profiler.menu-BJbnVoo4.js} +1 -1
  263. package/dist/assets/{profiler.utility-BExw9wBO.js → profiler.utility-qpfhuwRw.js} +1 -1
  264. package/dist/assets/project-authoring-session-BV-MM8Fl.js +2 -0
  265. package/dist/assets/{project-provenance-BoP3nrle.js → project-provenance-4ldz-EOG.js} +1 -1
  266. package/dist/assets/{properties-bone-constraints.inspector-ByT6p7S-.js → properties-bone-constraints.inspector-C-ByIdg1.js} +1 -1
  267. package/dist/assets/{properties-bone.inspector-z4qJwKO5.js → properties-bone.inspector-CXY0xCQB.js} +1 -1
  268. package/dist/assets/{properties-collection.inspector-D0_3ijWU.js → properties-collection.inspector-DIfkZAel.js} +1 -1
  269. package/dist/assets/{properties-constraints.inspector-CESzjuls.js → properties-constraints.inspector-BaunL5nT.js} +1 -1
  270. package/dist/assets/{properties-data.inspector-hG8Wgyzb.js → properties-data.inspector-DQD-jfO2.js} +1 -1
  271. package/dist/assets/{properties-material.inspector-CzY0JCQ6.js → properties-material.inspector-A0HZ4SX6.js} +1 -1
  272. package/dist/assets/{properties-modifiers.inspector-3dDhwf7g.js → properties-modifiers.inspector-GUnVhVwZ.js} +1 -1
  273. package/dist/assets/{properties-object.inspector-CiarfxkT.js → properties-object.inspector-Chsfa4Xa.js} +1 -1
  274. package/dist/assets/{properties-output.inspector-DKJxmKSD.js → properties-output.inspector-U7ZmD0Me.js} +1 -1
  275. package/dist/assets/{properties-particles.inspector-CCEdYWGm.js → properties-particles.inspector-umkW-OlI.js} +1 -1
  276. package/dist/assets/{properties-physics.inspector-B2c0KUyA.js → properties-physics.inspector-CLVBlWwL.js} +1 -1
  277. package/dist/assets/{properties-render.inspector-Bcm0HLRW.js → properties-render.inspector-D0u9taKy.js} +1 -1
  278. package/dist/assets/{properties-scene.inspector-PIM_eTb_.js → properties-scene.inspector-JwGCZQAx.js} +1 -1
  279. package/dist/assets/{properties-texture.inspector-CgFlnyr8.js → properties-texture.inspector-B1vC28pw.js} +1 -1
  280. package/dist/assets/{properties-view-layer.inspector-DGjF_Aqo.js → properties-view-layer.inspector-BuUKyBFp.js} +1 -1
  281. package/dist/assets/{properties-world.inspector-CrMvaRvB.js → properties-world.inspector-VXUj4dT4.js} +1 -1
  282. package/dist/assets/r3f-design-session-qJ2v5SrB.js +2 -0
  283. package/dist/assets/r3f-physics-binding-C8OqNRG2.js +1 -0
  284. package/dist/assets/{r3f-root-factory-z9llD1OU.js → r3f-root-factory-DjGnbU4n.js} +1 -1
  285. package/dist/assets/r3f-source-authoring-adapter-CG9heazM.js +12 -0
  286. package/dist/assets/{rapier-physics-bridge-CMoeVo3Y.js → rapier-physics-bridge-B-EK7KYV.js} +1 -1
  287. package/dist/assets/react-inspector.service-DWeXDHJq.js +1 -0
  288. package/dist/assets/{react-root-CEz5NTck.js → react-root-DGLRLr-F.js} +1 -1
  289. package/dist/assets/react-story-board-CSqHY0Cg.js +1 -0
  290. package/dist/assets/{react-three-fiber.esm-CycrbDlA.js → react-three-fiber.esm-BxIoqVh1.js} +1 -1
  291. package/dist/assets/{react-three-rapier.esm-CEfKpvxT.js → react-three-rapier.esm-BYzLhdSV.js} +1 -1
  292. package/dist/assets/react-world-authoring-adapter-BMT9kLWU.js +1 -0
  293. package/dist/assets/{realm-services-CobQsq_X.js → realm-services-D25JHoqD.js} +1 -1
  294. package/dist/assets/{reflection-probe-Don-M3Fj.js → reflection-probe-CqXWlicu.js} +1 -1
  295. package/dist/assets/{reflection-probe-capture.inspector-CmFUoJCx.js → reflection-probe-capture.inspector-B7Qa30vB.js} +1 -1
  296. package/dist/assets/regions-DWeEBnE2.js +1 -0
  297. package/dist/assets/{register-render-vitals-BiZk29b2.js → register-render-vitals-BO7x64kR.js} +1 -1
  298. package/dist/assets/{registry-02YZjMNp.js → registry-DlTluc4x.js} +1 -1
  299. package/dist/assets/{render-audio-control-vMRlePWb.js → render-audio-control-DCa_bOBI.js} +1 -1
  300. package/dist/assets/{render-batch-system-0vq7p0VC.js → render-batch-system-CzCp9YKM.js} +1 -1
  301. package/dist/assets/{render-control-Df3yTiyr.js → render-control-BNQr1eNO.js} +1 -1
  302. package/dist/assets/{render-env-D2IV2x5k.js → render-env-emvlfeTG.js} +1 -1
  303. package/dist/assets/{render-features-CPQ_e568.js → render-features-COF7MSQ9.js} +1 -1
  304. package/dist/assets/{render-settings-Bw4W9SYF.js → render-settings-C_kIMq8Y.js} +1 -1
  305. package/dist/assets/{resolve-three-SZE_WWUM.js → resolve-three-C-nx-QdA.js} +13 -13
  306. package/dist/assets/{root-seam-contract-Z0VWX3Bk.js → root-seam-contract-C7GOxf5x.js} +1 -1
  307. package/dist/assets/{run-ticks-settled-C4ksViyA.js → run-ticks-settled-B0cTtmhQ.js} +1 -1
  308. package/dist/assets/{scene-capture-CGYF-Viw.js → scene-capture-CLOc7GXc.js} +1 -1
  309. package/dist/assets/{scene-capture-BQKzU0NT.js → scene-capture-D10Nxkvp.js} +1 -1
  310. package/dist/assets/scene-document.service-B7kAVTko.js +2 -0
  311. package/dist/assets/{scene-framing-Cat0GtyJ.js → scene-framing-50N7SKuX.js} +1 -1
  312. package/dist/assets/{scene-index-B6BZOHMk.js → scene-index-Bce459yu.js} +1 -1
  313. package/dist/assets/{scene-query-C7_N-TpI.js → scene-query-IUZhw6pA.js} +1 -1
  314. package/dist/assets/{schema-kl9-2B_J.js → schema-Iy-mbzll.js} +1 -1
  315. package/dist/assets/sculpt.layout-D-K5cLw6.js +1 -0
  316. package/dist/assets/{seeded-random-i3mtgBKZ.js → seeded-random-CN0scLZj.js} +1 -1
  317. package/dist/assets/{session-CZ5JPg-z.js → session-CsR0lApe.js} +24 -15
  318. package/dist/assets/{setup-audio-S8GQF91f.js → setup-audio-BJ18gvXZ.js} +1 -1
  319. package/dist/assets/setup-particles-B6H-GbAA.js +1 -0
  320. package/dist/assets/{setup-physics-BeZ7-LKD.js → setup-physics-GugbTT0J.js} +1 -1
  321. package/dist/assets/{setup-renderer-DVXaSGin.js → setup-renderer-wt_a-p8r.js} +20 -20
  322. package/dist/assets/shading.layout-CZZHKBer.js +1 -0
  323. package/dist/assets/{sim-clock-CLflx7kg.js → sim-clock-DEfbb_-P.js} +1 -1
  324. package/dist/assets/{soft-particle-depth-DGvfQDi1.js → soft-particle-depth-CKUS1j0Y.js} +1 -1
  325. package/dist/assets/source-object3d-authoring-adapter-CfHQLFAL.js +1 -0
  326. package/dist/assets/{source-persistence-backend-C-aR-B_Y.js → source-persistence-backend-_-JMEXxE.js} +1 -1
  327. package/dist/assets/{spark-renderer-lifecycle-ynWESJcv.js → spark-renderer-lifecycle-9mnMW3Z4.js} +1 -1
  328. package/dist/assets/{spark.module-4pXQoz5d.js → spark.module-CXth-y_a.js} +1 -1
  329. package/dist/assets/stage-keyboard-C0FdDLOQ.js +1 -0
  330. package/dist/assets/stage-overlay-set-CwhCzbOy.js +1 -0
  331. package/dist/assets/stage-presence-markers-DVMDKiB-.js +1 -0
  332. package/dist/assets/stage-transform-tools-B09Z7v0o.js +1 -0
  333. package/dist/assets/standard-viewport-dressing-GUUr6GuK.js +20 -0
  334. package/dist/assets/{state-watch.action-BOvQR2qt.js → state-watch.action-CgF8qoFC.js} +1 -1
  335. package/dist/assets/{state-watch.menu-CNLvDeeY.js → state-watch.menu-CIMncESW.js} +1 -1
  336. package/dist/assets/{state-watch.utility-Bg1tTTQU.js → state-watch.utility-zTHkUALC.js} +1 -1
  337. package/dist/assets/static-batch-advisor-DqfXWRUq.js +1 -0
  338. package/dist/assets/story-capture-COQgezzl.js +1 -0
  339. package/dist/assets/story-documents-DQ0KORmd.js +3 -0
  340. package/dist/assets/story-documents.service-DOSaqPqv.js +1 -0
  341. package/dist/assets/story-documents.service-Gb7oUkbg.js +1 -0
  342. package/dist/assets/{story-media-presence-BHzk2IV5.js → story-media-presence-nW3zJqKv.js} +1 -1
  343. package/dist/assets/story-pixi-preview-COPTEsHo.js +1 -0
  344. package/dist/assets/story-presentation-CxADj5oz.js +1 -0
  345. package/dist/assets/{story-three-preview-BHEDZzcl.js → story-three-preview-C9W__8Or.js} +2 -2
  346. package/dist/assets/{structural-ids-Dc-7rEwi.js → structural-ids-CblajJQK.js} +1 -1
  347. package/dist/assets/studio-CysTBGIb.exr +0 -0
  348. package/dist/assets/sunrise-Dj0psFrf.exr +0 -0
  349. package/dist/assets/sunset-Bw3x2Bot.exr +0 -0
  350. package/dist/assets/{surface-state-DaxyruCj.js → surface-state-BAUJu6GY.js} +1 -1
  351. package/dist/assets/{system-runner-DkOjxEBt.js → system-runner-D_DtVrer.js} +1 -1
  352. package/dist/assets/team-playtest.service--79O6xkx.js +1 -0
  353. package/dist/assets/{three-CDSueJyJ.js → three-DSsr_Lvp.js} +1 -1
  354. package/dist/assets/{three-authoring-adapter-CmSQ3Vui.js → three-authoring-adapter-Yqsank46.js} +1 -1
  355. package/dist/assets/three-authoring.service-BDos-bRt.js +2 -0
  356. package/dist/assets/{three-ingest-runtime-QzDYk6tU.js → three-ingest-runtime-DWijtqQ8.js} +1 -1
  357. package/dist/assets/{three-projection-core-BmKMZ-nf.js → three-projection-core-kubBTx0s.js} +1 -1
  358. package/dist/assets/three-story-model-BraQFA9h.js +1 -0
  359. package/dist/assets/three-viewport-presentation-BL7Uc2i6.js +1 -0
  360. package/dist/assets/{three.module-D396a9Mn.js → three.module-IFn-4i31.js} +1 -1
  361. package/dist/assets/three.quarks.esm-CRKGjKAH.js +1039 -0
  362. package/dist/assets/transform-mode-request-Cu7ewbtr.js +1 -0
  363. package/dist/assets/{transform-writer-BhBBTx33.js → transform-writer-DXxrI4t7.js} +1 -1
  364. package/dist/assets/transport.header-CeND8Vzh.js +1 -0
  365. package/dist/assets/{trigger-volume-BNK2XzPL.js → trigger-volume-BCVRS3NM.js} +1 -1
  366. package/dist/assets/{tuples-CIQ4Bn1U.js → tuples-DKDGrN1t.js} +1 -1
  367. package/dist/assets/ui-board-document-DD2CAEAo.js +2 -0
  368. package/dist/assets/unity.style-vCmLw4gI.js +1 -0
  369. package/dist/assets/unity.view-DIn2S6Do.js +1 -0
  370. package/dist/assets/unreal.style-BQn-HhOX.js +1 -0
  371. package/dist/assets/unreal.view-adNBETZK.js +1 -0
  372. package/dist/assets/user-data-CZqsJDk-.js +1 -0
  373. package/dist/assets/{utility-view-state-BHypxA33.js → utility-view-state-DYJY8V8O.js} +1 -1
  374. package/dist/assets/uv-editing.layout-A8RA-cbM.js +1 -0
  375. package/dist/assets/{vgai-shared-three-Bc5PvpLM.js → vgai-shared-three-D_RAEumG.js} +1 -1
  376. package/dist/assets/{viewport-root-presentation-CWsE56K6.js → viewport-root-presentation-C9M98VNM.js} +1 -1
  377. package/dist/assets/{viewport-shading-BuA88e_A.js → viewport-shading-BzcvgJhK.js} +1 -1
  378. package/dist/assets/viewport-shading-boundary-CBvvzS-p.js +84 -0
  379. package/dist/assets/{viewport-surface-status-B3om4Kcf.js → viewport-surface-status-BFmnWp7z.js} +1 -1
  380. package/dist/assets/voxel-surface-ROWYug7H.js +1 -0
  381. package/dist/assets/webgl-frame-capture-CRKX73E9.js +1 -0
  382. package/dist/assets/webworkerAll-CehoCtFb.js +1 -0
  383. package/dist/assets/{worker-UrMcrc5_.js → worker-B7zhIsFh.js} +2 -2
  384. package/dist/assets/world-documents-DErHq15h.js +1 -0
  385. package/dist/assets/world-root-stage-binding-BIymcQ4K.js +1 -0
  386. package/dist/assets/{world-state-BWG-IcOd.js → world-state-ZGDGY_Xl.js} +1 -1
  387. package/dist/assets/{writer-B-KovzkA.js → writer-BPbm4_my.js} +5 -5
  388. package/dist/assets/xstate-animation-binding-Cvd4JbEY.js +1 -0
  389. package/dist/assets/{xstate-animation-meta-Q3u9zh_m.js → xstate-animation-meta-B3OZR8Q2.js} +1 -1
  390. package/dist/vgai-shared-three.json +1 -1
  391. package/dist-node/cli.js +317 -73
  392. package/dist-node/create.js +59 -19
  393. package/package.json +16 -13
  394. package/src/index.ts +6 -0
  395. package/template/.agents/skills/vgai-3d-models/SKILL.md +3 -3
  396. package/template/.agents/skills/vgai-threejs-authoring/SKILL.md +4 -9
  397. package/template/.claude/skills/vgai-3d-models/SKILL.md +3 -3
  398. package/template/.claude/skills/vgai-threejs-authoring/SKILL.md +4 -9
  399. package/template/.github/skills/vgai-3d-models/SKILL.md +3 -3
  400. package/template/.github/skills/vgai-threejs-authoring/SKILL.md +4 -9
  401. package/template/AGENTS.md +1 -1
  402. package/template/check-idioms.ts +4 -5
  403. package/template/package.json +9 -9
  404. package/template/tsconfig.json +1 -0
  405. package/template/vgai.adapter.ts +1 -0
  406. package/template-dotfiles/gitignore +2 -0
  407. package/workbench/src/media/game-cover.css +1 -1
  408. package/catalog/project-source/src/lib/bake/mesh-slice.ts +0 -157
  409. package/dist/assets/BufferGeometryUtils-Nz37EVXf.js +0 -1
  410. package/dist/assets/CanvasSceneViewport-Bpi6gVTC.js +0 -1
  411. package/dist/assets/ColladaLoader-aVOPIsCh.js +0 -3
  412. package/dist/assets/EXRLoader-Cdans_oJ.js +0 -1
  413. package/dist/assets/EffectComposer-DQxfsXBZ.js +0 -1
  414. package/dist/assets/EntityModelDocument-Ccvw66N9.js +0 -1
  415. package/dist/assets/EnvironmentAssetDocument-Dg-Qq6O6.js +0 -1
  416. package/dist/assets/FBXLoader-B4MoUtAn.js +0 -1
  417. package/dist/assets/Fbo-Dz-Soul3.js +0 -1
  418. package/dist/assets/GLTFExporter-HgrCle4L.js +0 -1
  419. package/dist/assets/Gltf-UHVWKz65.js +0 -2
  420. package/dist/assets/HDRLoader-THU88oVD.js +0 -5
  421. package/dist/assets/ImageViewer-Tn7s_MnW.js +0 -1
  422. package/dist/assets/InspectorObjectPreview-CVejvLRg.js +0 -1
  423. package/dist/assets/JsonAssetDocument-C7VGcLhu.js +0 -3
  424. package/dist/assets/MeshBVH-BiDHDcu-.js +0 -1
  425. package/dist/assets/ModelAssetDocument-F5GACirk.js +0 -1
  426. package/dist/assets/Object3DDocumentViewport-DB7T0NTl.js +0 -2
  427. package/dist/assets/Object3DPreview-DL8oi7Xs.js +0 -2
  428. package/dist/assets/OnlineAssetDetail-C6z9RvYK.js +0 -2
  429. package/dist/assets/PlayBar-BR-Vg3Jb.js +0 -2
  430. package/dist/assets/RGBELoader-BgBcQv8j.js +0 -1
  431. package/dist/assets/RectAreaLightUniformsLib-CMMoWfll.js +0 -1
  432. package/dist/assets/RootSelectionOverlay-BZPlxmXU.js +0 -1
  433. package/dist/assets/STLLoader-Dyv3lsxY.js +0 -1
  434. package/dist/assets/SimplifyModifier-C8ayvRzd.js +0 -1
  435. package/dist/assets/SourceAssetViewer-2SWQoUut.js +0 -12
  436. package/dist/assets/StageHost-BN-IoTef.js +0 -2
  437. package/dist/assets/ThreeBoardDocument-CVncZyIq.js +0 -2
  438. package/dist/assets/asset-budget-asset.menu-Di3KiQCd.js +0 -1
  439. package/dist/assets/asset-budget.action-DCzzcuTh.js +0 -1
  440. package/dist/assets/asset-budget.document-BWU8wnVW.js +0 -1
  441. package/dist/assets/asset-budget.menu-BGZpT_31.js +0 -1
  442. package/dist/assets/autoplay.service-BZBGNSvt.js +0 -1
  443. package/dist/assets/blender-emscripten-engine-9ZIRYNhe.js +0 -2
  444. package/dist/assets/blender-properties-tab-C5CyPydi.js +0 -3
  445. package/dist/assets/blender-runtime-host-BpBwGv7r.js +0 -4
  446. package/dist/assets/blender-runtime.document-lIYhhPtv.js +0 -8
  447. package/dist/assets/blender.command-BtJeWk-A.js +0 -1
  448. package/dist/assets/body-marks-h_xDxiDE.js +0 -1
  449. package/dist/assets/bridge.command-o5gDNEwa.js +0 -3
  450. package/dist/assets/browserAll-DeWblVez.js +0 -1
  451. package/dist/assets/canvas-entry-runtime-SfBxaR9M.js +0 -2
  452. package/dist/assets/component-board.service-DidCyM4O.js +0 -2
  453. package/dist/assets/component-verbs.service-Bv9jId3q.js +0 -1
  454. package/dist/assets/constraints.inspector-B9U9Yj-u.js +0 -1
  455. package/dist/assets/coverage.service-VTX5Mcsx.js +0 -3
  456. package/dist/assets/deferred-ingest-play-DCJi_Pgu.js +0 -2
  457. package/dist/assets/design-time-layers-wYgOTgni.js +0 -1
  458. package/dist/assets/design-time-mount.service-BzY21e1F.js +0 -2
  459. package/dist/assets/design-time-react-mount-DM9WLrF2.js +0 -1
  460. package/dist/assets/edit-mode-authoring-B47TfLqu.js +0 -1
  461. package/dist/assets/editor-api-BoJIcyZG.js +0 -1
  462. package/dist/assets/fflate.module-DPuTF8aG.js +0 -6
  463. package/dist/assets/fork-menu-BoVyw2Wu.js +0 -1
  464. package/dist/assets/game-document.service-DbRfx2V0.js +0 -1
  465. package/dist/assets/game-eval.command-D-7Dxbj_.js +0 -2
  466. package/dist/assets/gameplay-replay-e5umMlXv.js +0 -1
  467. package/dist/assets/gameplay.command-DxcVYX6F.js +0 -1
  468. package/dist/assets/generation.service-CDIgObuw.js +0 -1
  469. package/dist/assets/index-96FBF1Oj.js +0 -1
  470. package/dist/assets/index-BAWkB0dv.js +0 -1
  471. package/dist/assets/index-BDnS2b6S.js +0 -1
  472. package/dist/assets/index-BjTCPEQ7.js +0 -134
  473. package/dist/assets/index-CVCb_ImQ.js +0 -1
  474. package/dist/assets/index-CZd9o7Lu.js +0 -1
  475. package/dist/assets/index-D2fNXpHa.css +0 -1
  476. package/dist/assets/index-GIL7oGEO.js +0 -4894
  477. package/dist/assets/index-OrYXPk3Z.js +0 -487
  478. package/dist/assets/ingest-boot-viewport-D5rI_Kk_.js +0 -1
  479. package/dist/assets/ingest-siblings-Bop2kqVl.js +0 -1
  480. package/dist/assets/instances.command-D6UkZNO8.js +0 -1
  481. package/dist/assets/light-camera-factory-CWbbe9gI.js +0 -1
  482. package/dist/assets/live-behaviors-Bxq49Maz.js +0 -1
  483. package/dist/assets/matcap-texture-CVfalpWT.js +0 -1
  484. package/dist/assets/model-asset-sections.service-CHhFS3ZX.js +0 -1
  485. package/dist/assets/model.layout-BJUEQYUI.js +0 -1
  486. package/dist/assets/module-mode-DVBLT9d-.js +0 -2
  487. package/dist/assets/mount-canvas-ingest-root-DDuAWf_C.js +0 -2
  488. package/dist/assets/mount-dom-ingest-root-D_EiBgpn.js +0 -2
  489. package/dist/assets/mount-ingest-root-glv2SSWf.js +0 -2
  490. package/dist/assets/mount-three-ingest-root-hrUt9VVU.js +0 -1
  491. package/dist/assets/particles-factory-DnLOHXT8.js +0 -1
  492. package/dist/assets/pasteboard-materialize-BqSS4QzV.js +0 -20
  493. package/dist/assets/pasteboard.action-DU3UHtJG.js +0 -2
  494. package/dist/assets/pixi-authoring-adapter-CjibysC3.js +0 -1
  495. package/dist/assets/pixi-primitive-DlWbUPN9.js +0 -1
  496. package/dist/assets/pixi-react-root-factory-DYsznYRQ.js +0 -1
  497. package/dist/assets/play-mode-BFU2PCkG.js +0 -22
  498. package/dist/assets/play.command-BpqqLqkq.js +0 -2
  499. package/dist/assets/project-authoring-session-Bnt6icLr.js +0 -2
  500. package/dist/assets/r3f-design-session-D-4yyDO9.js +0 -2
  501. package/dist/assets/r3f-physics-binding-BBo8oma9.js +0 -1
  502. package/dist/assets/r3f-source-authoring-adapter-w6Bc60K-.js +0 -13
  503. package/dist/assets/react-inspector.service-B_neRnSK.js +0 -1
  504. package/dist/assets/react-story-board-BDDwiE2H.js +0 -1
  505. package/dist/assets/react-world-authoring-adapter-DmrwM3py.js +0 -1
  506. package/dist/assets/runtime-inspection-l2iFQSsg.js +0 -1
  507. package/dist/assets/scene-document.service-qkDjUrlP.js +0 -2
  508. package/dist/assets/sculpt.layout-zJF55yCR.js +0 -1
  509. package/dist/assets/setup-particles-GCXlnkj_.js +0 -1
  510. package/dist/assets/shading.layout-DULYZV6M.js +0 -1
  511. package/dist/assets/source-object3d-authoring-adapter-B-L6Ha6f.js +0 -1
  512. package/dist/assets/stage-invalidation-DBg3C3Ta.js +0 -1
  513. package/dist/assets/stage-keyboard-n-5kKH-m.js +0 -1
  514. package/dist/assets/stage-overlay-set-B9zp2sLB.js +0 -1
  515. package/dist/assets/stage-presence-markers-DiGI6A45.js +0 -1
  516. package/dist/assets/standard-viewport-dressing-CzjAe_0A.js +0 -7
  517. package/dist/assets/static-batch-advisor-B13QEH7d.js +0 -1
  518. package/dist/assets/story-capture-_gC8dXV-.js +0 -1
  519. package/dist/assets/story-documents--TDLaPeL.js +0 -3
  520. package/dist/assets/story-documents.service-BiS_YbNQ.js +0 -1
  521. package/dist/assets/story-documents.service-CxOPYJ2j.js +0 -1
  522. package/dist/assets/story-pixi-preview-BUrOJZXS.js +0 -1
  523. package/dist/assets/story-presentation-j2AVN-mK.js +0 -1
  524. package/dist/assets/team-playtest.service-DqOinFVA.js +0 -1
  525. package/dist/assets/three-authoring.service-iuHLwtf1.js +0 -2
  526. package/dist/assets/three-viewport-presentation-QBQpSdMh.js +0 -1
  527. package/dist/assets/three.quarks.esm-B1C61jGo.js +0 -1039
  528. package/dist/assets/transport.header-B-6HQlU2.js +0 -1
  529. package/dist/assets/ui-board-document-Bwtt--xp.js +0 -2
  530. package/dist/assets/use-live-actor-state-DErbWQWF.js +0 -1
  531. package/dist/assets/user-data-BB2Of6Ht.js +0 -1
  532. package/dist/assets/uv-editing.layout-BEKHxmHw.js +0 -1
  533. package/dist/assets/viewport-shading-boundary-B_-_gABg.js +0 -82
  534. package/dist/assets/voxel-surface-DtcsSWRL.js +0 -1
  535. package/dist/assets/webgl-frame-capture-FlF9zQmW.js +0 -1
  536. package/dist/assets/webworkerAll-CM2o_dnz.js +0 -1
  537. package/dist/assets/world-documents-147tiFZe.js +0 -1
  538. package/dist/assets/world-root-stage-binding-vwTrtBz6.js +0 -1
  539. package/dist/assets/xstate-animation-binding-Brd0NST6.js +0 -1
  540. package/dist/assets/xstate-behavior.action-B8UluFBK.js +0 -1
  541. package/dist/assets/xstate-behavior.document-CKAsE45I.js +0 -1
  542. package/dist/assets/xstate-behavior.inspector-vJJyuifc.js +0 -1
  543. package/dist/assets/xstate-behavior.menu-BXbPICIh.js +0 -1
  544. package/dist/assets/xstate-inspection-BsZv8LS9.js +0 -1
package/dist-node/cli.js CHANGED
@@ -584,10 +584,21 @@ var init_client = __esm({
584
584
  }
585
585
  /** Apply a STYLE BUNDLE — palette, material, icon set and region defaults
586
586
  * in one gesture (`classic`/`glass`/`maya`/`substance`, or one a package
587
- * the project declares carries, `blender`). */
587
+ * the project or product composes carries, such as `blender`). */
588
588
  async setStyle(style) {
589
589
  await this.command({ type: "set-style", style });
590
590
  }
591
+ /** A document stage's viewport PRESENTATION (`kit/viewport-presentation`), resolved; with a
592
+ * `layer`, that choice is recorded for the view first, as the toolbar records it. */
593
+ /** A view's presentation, answered resolved. With a LAYER the person's choice is recorded
594
+ * first; with a STRING, the named view (`*.view.ts`) of that id is put on the view whole. */
595
+ async viewportPresentation(documentId, layer) {
596
+ return this.command({
597
+ type: "viewport-presentation",
598
+ documentId,
599
+ ...typeof layer === "string" ? { preset: layer } : layer ? { layer } : {}
600
+ });
601
+ }
591
602
  /** Set the MATERIAL apart from the bundle that usually carries it.
592
603
  * Answers with what the chrome wears afterwards. */
593
604
  async setAppearance(appearance) {
@@ -798,7 +809,8 @@ var init_client = __esm({
798
809
  async captureEditorChrome(options) {
799
810
  return this.command({
800
811
  type: "capture-editor-chrome",
801
- ...options?.scale === void 0 ? {} : { scale: options.scale }
812
+ ...options?.scale === void 0 ? {} : { scale: options.scale },
813
+ ...options?.region === void 0 ? {} : { region: options.region }
802
814
  });
803
815
  }
804
816
  /** With a view, present and capture it in one request so document discovery
@@ -986,6 +998,50 @@ var init_client = __esm({
986
998
  async documentTable() {
987
999
  return this.command({ type: "document-table" });
988
1000
  }
1001
+ /**
1002
+ * Reload the editor's page and wait until the new document answers — the
1003
+ * host's `page-reload`, for a product with no game client (`@volter/game-live`'s
1004
+ * `page.reload()` is the same order with the same two witnesses). A tab's
1005
+ * epoch count rising proves a new document loaded; a host command answering
1006
+ * proves it can be driven. It is sent only once that tab reports its command
1007
+ * listener ready, because a command sent before is filed as a stall.
1008
+ */
1009
+ async reloadPage(timeoutMs = 6e4) {
1010
+ const epochs = async () => {
1011
+ const tabs = (await this.getState().catch(() => ({ tabs: [] }))).tabs ?? [];
1012
+ const byTab = tabs;
1013
+ return new Map(byTab.map((tab) => [tab.tabId8, tab]));
1014
+ };
1015
+ const pause = () => new Promise((settle) => setTimeout(settle, 250));
1016
+ const before = await epochs();
1017
+ const deadline = Date.now() + timeoutMs;
1018
+ await this.command({ type: "page-reload" });
1019
+ let reloaded = [];
1020
+ while (reloaded.length === 0) {
1021
+ if (Date.now() > deadline) throw new Error("The reload was ordered and no tab of this session reported a new page load.");
1022
+ await pause();
1023
+ const now = await epochs();
1024
+ reloaded = [...now].filter(([tabId, tab]) => tab.epochCount > (before.get(tabId)?.epochCount ?? 0)).map(([tabId]) => tabId);
1025
+ }
1026
+ for (; ; ) {
1027
+ if (Date.now() > deadline) throw new Error("A new page loaded, but its command listener did not become ready.");
1028
+ const now = await epochs();
1029
+ if (reloaded.some((tabId) => {
1030
+ const listener = now.get(tabId)?.commandListener;
1031
+ return typeof listener !== "string" || listener === "ready";
1032
+ })) break;
1033
+ await pause();
1034
+ }
1035
+ for (; ; ) {
1036
+ try {
1037
+ await this.command({ type: "current-view" });
1038
+ return;
1039
+ } catch (error) {
1040
+ if (Date.now() > deadline) throw error;
1041
+ await pause();
1042
+ }
1043
+ }
1044
+ }
989
1045
  async getState() {
990
1046
  const res = await this.httpFetch(`${this.baseUrl}/__editor/state`);
991
1047
  const state = await this.readJson(res);
@@ -1969,8 +2025,7 @@ function projectRelative(project, absolute) {
1969
2025
  if (rel === "" || rel.startsWith("../")) return null;
1970
2026
  return rel;
1971
2027
  }
1972
- async function serveBlenderMcp(project, ensureEditor = async () => {
1973
- }, command = "volter-editor") {
2028
+ async function serveBlenderMcp(project, ensureEditor, command) {
1974
2029
  const runtimeIdentity = `Blender ${BUNDLE_default.blender} (source ${BUNDLE_default.source}), compiled to WebAssembly and running headless in the editor tab; three.js takes its photographs. Factory bpy.context.scene.render.engine: '${BUNDLE_default.factoryEngine}'. Documents are .blend. save_as_mainfile records the actual saved path in bpy.data.filepath; open_mainfile reopens it.`;
1975
2030
  const tools = blender_mcp_tools_default.map(
1976
2031
  (tool) => tool.name === "execute_blender_code" ? { ...tool, description: `${runtimeIdentity}
@@ -2255,7 +2310,7 @@ import { fileURLToPath as fileURLToPath2 } from "node:url";
2255
2310
  var package_default = {
2256
2311
  name: "@volter/game-editor",
2257
2312
  author: "Volter AI, Inc.",
2258
- version: "0.5.65",
2313
+ version: "0.5.66",
2259
2314
  publishConfig: {
2260
2315
  access: "public"
2261
2316
  },
@@ -2297,23 +2352,26 @@ var package_default = {
2297
2352
  displayName: "Volter Game Editor",
2298
2353
  colorTheme: "dark",
2299
2354
  workbench: {
2300
- release: "game-editor-f8664703ab59-595ba7af8402-darwin-arm64",
2301
- tarballSha256: "fac04a80a9745b6af25c232308faab1691ef2ecc40883cc8c9b89b42f12f8ccd"
2355
+ release: "game-editor-9ef15b1f345b-e22708e88dca-darwin-arm64",
2356
+ tarballSha256: "ffa4556a84b2744c966d3461d022ccf27c5123bcb48025628f3a0129779e9b17"
2302
2357
  }
2303
2358
  }
2304
2359
  },
2305
2360
  dependencies: {
2306
- "@volter/editor-core": "0.5.65",
2307
- "@volter/editor-game": "0.5.65",
2308
- "@volter/editor-blender": "0.1.8",
2309
- "@volter/blender-engine": "0.1.7",
2310
- "@volter/editor-project": "0.5.65",
2311
- "@volter/editor-sdk": "0.5.65",
2312
- "@volter/editor-live": "0.5.65",
2313
- "@volter/game-live": "0.5.65",
2361
+ "@volter/editor-core": "0.5.66",
2362
+ "@volter/editor-game": "0.5.66",
2363
+ "@volter/editor-react": "0.5.66",
2364
+ "@volter/editor-threejs": "0.5.66",
2365
+ "@volter/editor-xstate": "0.5.66",
2366
+ "@volter/editor-blender": "0.1.9",
2367
+ "@volter/blender-engine": "0.1.8",
2368
+ "@volter/editor-project": "0.5.66",
2369
+ "@volter/editor-sdk": "0.5.66",
2370
+ "@volter/editor-live": "0.5.66",
2371
+ "@volter/game-live": "0.5.66",
2314
2372
  "@modelcontextprotocol/sdk": "1.30.0",
2315
- "@volter/game-runtime": "0.5.65",
2316
- "@volter/threejs-runtime": "0.5.65",
2373
+ "@volter/game-runtime": "0.5.66",
2374
+ "@volter/threejs-runtime": "0.5.66",
2317
2375
  undici: "7.29.1",
2318
2376
  typescript: "5.9.3",
2319
2377
  "@colyseus/schema": "^4.0.14",
@@ -2392,14 +2450,8 @@ var STUDIO_OWNED_PATHS = [
2392
2450
  "src/contributions/analytics.analytics.tsx"
2393
2451
  ];
2394
2452
  var REACT_ONLY_REMOVED_PATHS = [
2395
- "src/runtime",
2396
- "src/scripts",
2397
2453
  "src/prefabs",
2398
- "src/stage",
2399
2454
  "src/world.tsx",
2400
- "src/lib/humanoid",
2401
- "src/lib/mesh",
2402
- "src/lib/native-three",
2403
2455
  "src/components",
2404
2456
  "public"
2405
2457
  ];
@@ -2437,6 +2489,43 @@ export function ReactGamePage({ lastInput, title = 'My Game' }: ReactGamePagePro
2437
2489
  );
2438
2490
  }
2439
2491
  `;
2492
+ var REACT_HUD_PAGE_SOURCE = `export interface ReactGamePageProps {
2493
+ readonly lastInput: string;
2494
+ readonly title?: string;
2495
+ }
2496
+
2497
+ /** The game's HUD over its 3D world. Runtime input ownership stays in game.tsx. */
2498
+ export function ReactGamePage({ lastInput, title = 'My Game' }: ReactGamePageProps) {
2499
+ return (
2500
+ <main
2501
+ data-testid="game-ui-root"
2502
+ style={{
2503
+ position: 'absolute',
2504
+ inset: 0,
2505
+ padding: 16,
2506
+ pointerEvents: 'none',
2507
+ fontFamily: 'system-ui, sans-serif',
2508
+ }}
2509
+ >
2510
+ <section
2511
+ style={{
2512
+ display: 'inline-block',
2513
+ padding: '10px 14px',
2514
+ borderRadius: 8,
2515
+ pointerEvents: 'auto',
2516
+ color: '#f7f4ea',
2517
+ background: 'rgba(17, 24, 39, 0.72)',
2518
+ }}
2519
+ >
2520
+ <h1 style={{ margin: 0, fontSize: 18 }}>{title}</h1>
2521
+ <p aria-live="polite" style={{ margin: '4px 0 0', color: '#cbd5e1', fontSize: 13 }}>
2522
+ Last input: {lastInput}
2523
+ </p>
2524
+ </section>
2525
+ </main>
2526
+ );
2527
+ }
2528
+ `;
2440
2529
  var REACT_ONLY_GAME_SOURCE = `import { useEffect, useState } from 'react';
2441
2530
  import { useDebugProvider } from '@volter/game-runtime/react/world-state';
2442
2531
  import { ReactGamePage } from './game-page';
@@ -3704,34 +3793,36 @@ import {
3704
3793
  import { dirname, isAbsolute, join as join3, relative as relative2, resolve, sep as sep2 } from "node:path";
3705
3794
 
3706
3795
  // node/scaffold/adapter-region-merge.ts
3707
- import ts from "typescript";
3796
+ import { createRequire } from "node:module";
3797
+ var loaded;
3798
+ var typescript = () => loaded ??= createRequire(import.meta.url)("typescript");
3708
3799
  function quoteLike(source, sample) {
3709
3800
  const double = sample !== void 0 && source[sample.getStart()] === '"';
3710
3801
  return (value) => double || value.includes("'") ? JSON.stringify(value) : `'${value}'`;
3711
3802
  }
3712
3803
  function stringLiteralOf(node) {
3713
- return node && ts.isStringLiteralLike(node) ? node.text : void 0;
3804
+ return node && typescript().isStringLiteralLike(node) ? node.text : void 0;
3714
3805
  }
3715
3806
  function propertyOf(object, name) {
3716
3807
  for (const member of object.properties) {
3717
- if (!ts.isPropertyAssignment(member)) continue;
3718
- const key = ts.isIdentifier(member.name) ? member.name.text : stringLiteralOf(member.name);
3808
+ if (!typescript().isPropertyAssignment(member)) continue;
3809
+ const key = typescript().isIdentifier(member.name) ? member.name.text : stringLiteralOf(member.name);
3719
3810
  if (key === name) return member;
3720
3811
  }
3721
3812
  return void 0;
3722
3813
  }
3723
3814
  function definitionObject(source) {
3724
3815
  for (const statement of source.statements) {
3725
- if (!ts.isExportAssignment(statement) || statement.isExportEquals) continue;
3816
+ if (!typescript().isExportAssignment(statement) || statement.isExportEquals) continue;
3726
3817
  const call = statement.expression;
3727
- if (!ts.isCallExpression(call)) {
3818
+ if (!typescript().isCallExpression(call)) {
3728
3819
  return { reason: "its default export is not a direct `defineAdapter({\u2026})` call" };
3729
3820
  }
3730
3821
  const arg = call.arguments[0];
3731
3822
  if (arg === void 0) {
3732
3823
  return { reason: "its default export takes no argument object to declare into" };
3733
3824
  }
3734
- if (!ts.isObjectLiteralExpression(arg)) {
3825
+ if (!typescript().isObjectLiteralExpression(arg)) {
3735
3826
  return { reason: "its default export is not called with an object literal" };
3736
3827
  }
3737
3828
  return { object: arg };
@@ -3781,11 +3872,11 @@ ${indent}},`;
3781
3872
  }
3782
3873
  function mergeAdapterRegionIncludes(source, additions) {
3783
3874
  if (additions.length === 0) return { kind: "unchanged" };
3784
- const parsed = ts.createSourceFile("vgai.adapter.ts", source, ts.ScriptTarget.Latest, true);
3875
+ const parsed = typescript().createSourceFile("vgai.adapter.ts", source, typescript().ScriptTarget.Latest, true);
3785
3876
  const definition = definitionObject(parsed);
3786
3877
  if ("reason" in definition) return { kind: "unreadable", reason: definition.reason };
3787
3878
  const listed = propertyOf(definition.object, "regions");
3788
- if (listed && !ts.isStringLiteralLike(listed.initializer)) {
3879
+ if (listed && !typescript().isStringLiteralLike(listed.initializer)) {
3789
3880
  return {
3790
3881
  kind: "unreadable",
3791
3882
  reason: "it states an explicit `regions` list, whose entries carry their own `include`"
@@ -3806,7 +3897,7 @@ ${indent}},`;
3806
3897
  })
3807
3898
  );
3808
3899
  } else {
3809
- if (!ts.isObjectLiteralExpression(overlay.initializer)) {
3900
+ if (!typescript().isObjectLiteralExpression(overlay.initializer)) {
3810
3901
  return { kind: "unreadable", reason: "`regionIncludes` is not an object literal" };
3811
3902
  }
3812
3903
  const table = overlay.initializer;
@@ -3819,7 +3910,7 @@ ${indent}},`;
3819
3910
  );
3820
3911
  continue;
3821
3912
  }
3822
- if (!ts.isObjectLiteralExpression(entry.initializer)) {
3913
+ if (!typescript().isObjectLiteralExpression(entry.initializer)) {
3823
3914
  return {
3824
3915
  kind: "unreadable",
3825
3916
  reason: `\`regionIncludes.${addition.rootId}\` is not an object literal`
@@ -3838,7 +3929,7 @@ ${indent}],`;
3838
3929
  );
3839
3930
  continue;
3840
3931
  }
3841
- if (!ts.isArrayLiteralExpression(include.initializer)) {
3932
+ if (!typescript().isArrayLiteralExpression(include.initializer)) {
3842
3933
  return {
3843
3934
  kind: "unreadable",
3844
3935
  reason: `\`regionIncludes.${addition.rootId}.include\` is not an array literal`
@@ -5420,7 +5511,11 @@ function rewriteTemplateVariantFiles(targetDir, composition, additions, starterD
5420
5511
  for (const [relative7, source] of Object.entries(REACT_ONLY_FILES)) {
5421
5512
  if (relative7 === "src/main.ts") continue;
5422
5513
  mkdirSync3(dirname2(join4(targetDir, relative7)), { recursive: true });
5423
- writeFileSync3(join4(targetDir, relative7), source, "utf-8");
5514
+ writeFileSync3(
5515
+ join4(targetDir, relative7),
5516
+ relative7 === "src/ui/game-page.tsx" ? REACT_HUD_PAGE_SOURCE : source,
5517
+ "utf-8"
5518
+ );
5424
5519
  }
5425
5520
  return;
5426
5521
  }
@@ -5462,6 +5557,9 @@ function rewriteTsconfig(targetDir, engineRelPath, editorRelPath) {
5462
5557
  if (editorRelPath) {
5463
5558
  tsconfig.compilerOptions.paths["@editor/*"] = [`${editorRelPath}/src/*`];
5464
5559
  }
5560
+ tsconfig.compilerOptions.paths["@editor/game-module-access"] = [
5561
+ "node_modules/@volter/editor-game/src/host/game-module-access.ts"
5562
+ ];
5465
5563
  if (Array.isArray(tsconfig.files)) {
5466
5564
  tsconfig.files = tsconfig.files.map((f) => rewriteEngineRelativeFilePath(f, engineRelPath));
5467
5565
  }
@@ -6339,7 +6437,7 @@ import { createRequire as createRequire2 } from "node:module";
6339
6437
  import { mkdirSync as mkdirSync32, openSync, closeSync, realpathSync as realpathSync3 } from "node:fs";
6340
6438
  import { join as join42, resolve as resolve22 } from "node:path";
6341
6439
  import { existsSync as existsSync6, readFileSync as readFileSync7 } from "node:fs";
6342
- import { createRequire } from "node:module";
6440
+ import { createRequire as createRequire3 } from "node:module";
6343
6441
  import { dirname as dirname5, join as join8 } from "node:path";
6344
6442
  import { pathToFileURL } from "node:url";
6345
6443
  import { execFileSync as execFileSync4 } from "node:child_process";
@@ -6362,7 +6460,10 @@ import { mkdirSync as mkdirSync22, readFileSync as readFileSync32, renameSync as
6362
6460
  import { homedir as homedir22 } from "node:os";
6363
6461
  import { dirname as dirname22, join as join32 } from "node:path";
6364
6462
  var PRODUCT_DECLARATION_KEY = "vgai.product";
6365
- var PRODUCT_INSTALL_LINES = [" npm install --save-dev @volter/editor"];
6463
+ var PRODUCT_INSTALL_LINES = [
6464
+ " npm install --save-dev @volter/model-editor",
6465
+ " npm install --save-dev @volter/game-editor"
6466
+ ];
6366
6467
  var PRODUCT_CREATE_LINES = [" npx @volter/editor create <name>"];
6367
6468
  var PRODUCT_COLOR_THEMES = ["dark", "light"];
6368
6469
  function readProductManifest(packageDir) {
@@ -6460,7 +6561,7 @@ function declaredVgaiPackages(projectRoot) {
6460
6561
  return Object.keys({ ...manifest.dependencies ?? {}, ...manifest.devDependencies ?? {} }).filter((name) => name.startsWith("@volter/")).sort();
6461
6562
  }
6462
6563
  function locatePackage(projectRoot, name) {
6463
- const require2 = createRequire(pathToFileURL(join8(projectRoot, "package.json")));
6564
+ const require2 = createRequire3(pathToFileURL(join8(projectRoot, "package.json")));
6464
6565
  try {
6465
6566
  return dirname5(require2.resolve(`${name}/package.json`));
6466
6567
  } catch {
@@ -6676,7 +6777,8 @@ async function resolveWorkbenchForProject(options) {
6676
6777
  fetched: false
6677
6778
  };
6678
6779
  const declared = readWorkbenchDeclaration(projectRoot);
6679
- if (declared !== null)
6780
+ const fetchRecord = declared !== null && product.workbench !== null && declared.startsWith(`${WORKBENCH_CACHE_ROOT}/`);
6781
+ if (declared !== null && !fetchRecord)
6680
6782
  return {
6681
6783
  ...resolveWorkbench(declared, productId),
6682
6784
  source: "declaration",
@@ -7127,6 +7229,22 @@ async function launch(folder, launching, options = {}) {
7127
7229
  clearLaunch();
7128
7230
  }
7129
7231
  }
7232
+ async function prepareSession(folder, launching) {
7233
+ const project = realpathSync3(resolve22(folder));
7234
+ const product = resolveProductForProject(project);
7235
+ if (product.name !== launching.packageName) throw new Error(`${project} declares ${product.name}, not ${launching.displayName}.`);
7236
+ const entry = createRequire2(join42(product.dir, "package.json")).resolve("@volter/editor-core/server/packaged");
7237
+ const code = await new Promise((done, fail2) => {
7238
+ const child = spawn2(process.execPath, [entry], {
7239
+ cwd: project,
7240
+ stdio: ["ignore", "inherit", "inherit"],
7241
+ env: { ...process.env, VGAI_PROJECT: project, VGAI_PRODUCT_DIR: product.dir, VGAI_NO_OPEN: "1", VGAI_PREPARE: "1" }
7242
+ });
7243
+ child.once("error", fail2);
7244
+ child.once("exit", done);
7245
+ });
7246
+ if (code !== 0) throw new Error(`${launching.command} prepare exited with code ${code} for ${project}.`);
7247
+ }
7130
7248
  async function ensureTab(serverUrl, noOpen) {
7131
7249
  const openAttemptAt = Date.now();
7132
7250
  const result = await requestEditorTabEnsure(serverUrl, !noOpen);
@@ -7140,7 +7258,7 @@ async function ensureTab(serverUrl, noOpen) {
7140
7258
  if (outcome.status !== "connected") throw new Error(`Editor page ${outcome.status === "never-arrived" ? "did not arrive" : "arrived but did not become ready"}; open the printed workbench URL and inspect the session log.`);
7141
7259
  }
7142
7260
 
7143
- // ../editor-core/dist/server/chunk-PXZD53D5.js
7261
+ // ../editor-core/dist/server/chunk-IVCRYPQI.js
7144
7262
  import { Agent, fetch as nodeFetch } from "undici";
7145
7263
  function createDispatcher(timeoutMs) {
7146
7264
  return new Agent({ headersTimeout: timeoutMs, bodyTimeout: timeoutMs });
@@ -7698,10 +7816,21 @@ var EditorClient = class {
7698
7816
  }
7699
7817
  /** Apply a STYLE BUNDLE — palette, material, icon set and region defaults
7700
7818
  * in one gesture (`classic`/`glass`/`maya`/`substance`, or one a package
7701
- * the project declares carries, `blender`). */
7819
+ * the project or product composes carries, such as `blender`). */
7702
7820
  async setStyle(style) {
7703
7821
  await this.command({ type: "set-style", style });
7704
7822
  }
7823
+ /** A document stage's viewport PRESENTATION (`kit/viewport-presentation`), resolved; with a
7824
+ * `layer`, that choice is recorded for the view first, as the toolbar records it. */
7825
+ /** A view's presentation, answered resolved. With a LAYER the person's choice is recorded
7826
+ * first; with a STRING, the named view (`*.view.ts`) of that id is put on the view whole. */
7827
+ async viewportPresentation(documentId, layer) {
7828
+ return this.command({
7829
+ type: "viewport-presentation",
7830
+ documentId,
7831
+ ...typeof layer === "string" ? { preset: layer } : layer ? { layer } : {}
7832
+ });
7833
+ }
7705
7834
  /** Set the MATERIAL apart from the bundle that usually carries it.
7706
7835
  * Answers with what the chrome wears afterwards. */
7707
7836
  async setAppearance(appearance) {
@@ -7912,7 +8041,8 @@ var EditorClient = class {
7912
8041
  async captureEditorChrome(options) {
7913
8042
  return this.command({
7914
8043
  type: "capture-editor-chrome",
7915
- ...options?.scale === void 0 ? {} : { scale: options.scale }
8044
+ ...options?.scale === void 0 ? {} : { scale: options.scale },
8045
+ ...options?.region === void 0 ? {} : { region: options.region }
7916
8046
  });
7917
8047
  }
7918
8048
  /** With a view, present and capture it in one request so document discovery
@@ -8100,6 +8230,50 @@ var EditorClient = class {
8100
8230
  async documentTable() {
8101
8231
  return this.command({ type: "document-table" });
8102
8232
  }
8233
+ /**
8234
+ * Reload the editor's page and wait until the new document answers — the
8235
+ * host's `page-reload`, for a product with no game client (`@volter/game-live`'s
8236
+ * `page.reload()` is the same order with the same two witnesses). A tab's
8237
+ * epoch count rising proves a new document loaded; a host command answering
8238
+ * proves it can be driven. It is sent only once that tab reports its command
8239
+ * listener ready, because a command sent before is filed as a stall.
8240
+ */
8241
+ async reloadPage(timeoutMs = 6e4) {
8242
+ const epochs = async () => {
8243
+ const tabs = (await this.getState().catch(() => ({ tabs: [] }))).tabs ?? [];
8244
+ const byTab = tabs;
8245
+ return new Map(byTab.map((tab) => [tab.tabId8, tab]));
8246
+ };
8247
+ const pause = () => new Promise((settle) => setTimeout(settle, 250));
8248
+ const before = await epochs();
8249
+ const deadline = Date.now() + timeoutMs;
8250
+ await this.command({ type: "page-reload" });
8251
+ let reloaded = [];
8252
+ while (reloaded.length === 0) {
8253
+ if (Date.now() > deadline) throw new Error("The reload was ordered and no tab of this session reported a new page load.");
8254
+ await pause();
8255
+ const now = await epochs();
8256
+ reloaded = [...now].filter(([tabId, tab]) => tab.epochCount > (before.get(tabId)?.epochCount ?? 0)).map(([tabId]) => tabId);
8257
+ }
8258
+ for (; ; ) {
8259
+ if (Date.now() > deadline) throw new Error("A new page loaded, but its command listener did not become ready.");
8260
+ const now = await epochs();
8261
+ if (reloaded.some((tabId) => {
8262
+ const listener = now.get(tabId)?.commandListener;
8263
+ return typeof listener !== "string" || listener === "ready";
8264
+ })) break;
8265
+ await pause();
8266
+ }
8267
+ for (; ; ) {
8268
+ try {
8269
+ await this.command({ type: "current-view" });
8270
+ return;
8271
+ } catch (error) {
8272
+ if (Date.now() > deadline) throw error;
8273
+ await pause();
8274
+ }
8275
+ }
8276
+ }
8103
8277
  async getState() {
8104
8278
  const res = await this.httpFetch(`${this.baseUrl}/__editor/state`);
8105
8279
  const state = await this.readJson(res);
@@ -8221,8 +8395,82 @@ var EditorClient = class {
8221
8395
  };
8222
8396
 
8223
8397
  // ../editor-core/dist/server/launcher/control.js
8224
- import { connect } from "@volter/editor-live";
8398
+ import { connect, unconnectedBindings } from "@volter/editor-live";
8399
+ var NOISE = /* @__PURE__ */ new Set(["constructor", "then", "catch", "finally"]);
8400
+ var FUNCTION_NOISE = /* @__PURE__ */ new Set(["length", "name", "prototype", "arguments", "caller"]);
8401
+ function describe(target, key) {
8402
+ let current = target;
8403
+ while (current !== null) {
8404
+ const descriptor = Object.getOwnPropertyDescriptor(current, key);
8405
+ if (descriptor !== void 0) return descriptor;
8406
+ current = Object.getPrototypeOf(current);
8407
+ }
8408
+ return void 0;
8409
+ }
8410
+ function ownAndInheritedKeys(target) {
8411
+ const targetIsFunction = typeof target === "function";
8412
+ const keys = [];
8413
+ const seen = /* @__PURE__ */ new Set();
8414
+ let current = target;
8415
+ while (current !== null && current !== Object.prototype && current !== Function.prototype && current !== Array.prototype) {
8416
+ for (const name of Object.getOwnPropertyNames(current)) {
8417
+ if (seen.has(name)) continue;
8418
+ seen.add(name);
8419
+ if (NOISE.has(name) || name.startsWith("_")) continue;
8420
+ if (targetIsFunction && FUNCTION_NOISE.has(name)) continue;
8421
+ keys.push(name);
8422
+ }
8423
+ current = Object.getPrototypeOf(current);
8424
+ }
8425
+ return keys;
8426
+ }
8427
+ function isNamespace(value) {
8428
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
8429
+ const proto = Object.getPrototypeOf(value);
8430
+ if (proto === Object.prototype || proto === null) return false;
8431
+ return ownAndInheritedKeys(value).some((key) => typeof describe(value, key)?.value === "function");
8432
+ }
8433
+ function surfaceMembers(target) {
8434
+ if (typeof target !== "object" && typeof target !== "function" || target === null) return [];
8435
+ const members = [];
8436
+ for (const name of ownAndInheritedKeys(target)) {
8437
+ const descriptor = describe(target, name);
8438
+ if (descriptor === void 0) continue;
8439
+ if (descriptor.get !== void 0 || descriptor.set !== void 0) {
8440
+ members.push({ name, kind: "value", arity: 0 });
8441
+ continue;
8442
+ }
8443
+ const value = descriptor.value;
8444
+ if (typeof value === "function") members.push({ name, kind: "method", arity: value.length });
8445
+ else if (isNamespace(value)) {
8446
+ for (const inner of ownAndInheritedKeys(value)) {
8447
+ const innerValue = describe(value, inner)?.value;
8448
+ if (typeof innerValue === "function") members.push({ name: `${name}.${inner}`, kind: "method", arity: innerValue.length });
8449
+ }
8450
+ } else members.push({ name, kind: "value", arity: 0 });
8451
+ }
8452
+ return members.sort((a, b) => a.name.localeCompare(b.name));
8453
+ }
8454
+ function formatSurface(command, bindings) {
8455
+ const lines = [`In scope for \`${command} eval\` (read from the objects themselves):`, ""];
8456
+ for (const [binding, target] of Object.entries(bindings)) {
8457
+ const members = surfaceMembers(target);
8458
+ lines.push(binding);
8459
+ if (members.length === 0) lines.push(` (data; inspect it with: ${command} eval 'return ${binding}')`);
8460
+ const names = members.map((m) => m.kind === "method" ? `${m.name}(${m.arity || ""})` : m.name);
8461
+ const width = Math.max(0, ...names.map((n) => n.length)) + 2;
8462
+ for (let i = 0; i < names.length; i += 3) lines.push(` ${names.slice(i, i + 3).map((n) => n.padEnd(width)).join("").trimEnd()}`);
8463
+ lines.push("");
8464
+ }
8465
+ lines.push("Parens mark a method; the number is its declared parameter count. A bare name is a field.");
8466
+ return lines.join("\n");
8467
+ }
8225
8468
  async function control(command, verb, argument, reason, scope) {
8469
+ if (verb === "eval" && argument === "--list") {
8470
+ const unconnected = { ...unconnectedBindings(), session: { port: 0, projectRoot: process.cwd() } };
8471
+ console.log(formatSurface(command, { ...unconnected, ...scope?.(unconnected) }));
8472
+ return;
8473
+ }
8226
8474
  const live = await connect();
8227
8475
  const client = new EditorClient({ url: `http://127.0.0.1:${live.session.port}` });
8228
8476
  if (verb === "close") {
@@ -8240,11 +8488,18 @@ async function control(command, verb, argument, reason, scope) {
8240
8488
  console.log(JSON.stringify(result, null, 2));
8241
8489
  } else if (verb === "status") console.log(JSON.stringify(await live.editor.status(), null, 2));
8242
8490
  else if (verb === "eval") {
8243
- if (!argument) throw new Error("eval requires a JavaScript function body; use return to print a result.");
8491
+ if (!argument) throw new Error(`eval requires JavaScript; \`${command} eval --list\` shows what is in scope.`);
8244
8492
  const AsyncFunction = Object.getPrototypeOf(async function() {
8245
8493
  }).constructor;
8246
8494
  const bindings = { editor: live.editor, tools: live.tools, session: live.session, ...scope?.(live) };
8247
- const result = await new AsyncFunction(...Object.keys(bindings), argument)(...Object.values(bindings));
8495
+ let body;
8496
+ try {
8497
+ body = new AsyncFunction(...Object.keys(bindings), `return (${argument}
8498
+ );`);
8499
+ } catch {
8500
+ body = new AsyncFunction(...Object.keys(bindings), argument);
8501
+ }
8502
+ const result = await body(...Object.values(bindings));
8248
8503
  if (result !== void 0) console.log(JSON.stringify(result, null, 2));
8249
8504
  } else if (verb !== "console") throw new Error(`Unknown command: ${verb}`);
8250
8505
  const consoleState = await client.getUnresolvedConsole();
@@ -8272,22 +8527,10 @@ var alwaysRefresh = (timeoutMs = DEFAULT_RELAY_COMMAND_TIMEOUT_MS) => ({
8272
8527
  });
8273
8528
  var RELAY_COMMANDS = {
8274
8529
  "session-prepare-close": noDerivedRefresh(12e4),
8275
- // ---- Selection and framing ---------------------------------------------
8530
+ // ---- Selection ---------------------------------------------------------
8276
8531
  select: noDerivedRefresh(3e4),
8277
8532
  "select-multiple": noDerivedRefresh(),
8278
8533
  "select-all": noDerivedRefresh(),
8279
- "focus-entity": noDerivedRefresh(),
8280
- "frame-entity": noDerivedRefresh(),
8281
- "focus-selection": noDerivedRefresh(),
8282
- "view-preset": noDerivedRefresh(),
8283
- "set-camera": noDerivedRefresh(),
8284
- // ---- Looking at the open Object3D document ------------------------------
8285
- // These ANIMATE the shared camera and ack when the move ends, so their
8286
- // budget is the move's own wall clock, not an editor edit's. Both refuse a
8287
- // duration past 60 s themselves; the ceiling here is the relay's backstop.
8288
- "document-orbit": noDerivedRefresh(12e4),
8289
- "document-turntable": noDerivedRefresh(12e4),
8290
- "document-frame": noDerivedRefresh(),
8291
8534
  // ---- Editor chrome ------------------------------------------------------
8292
8535
  "viewport-tab": noDerivedRefresh(),
8293
8536
  // Focusing a panel is dock work, but its ack WAITS for the dock to report
@@ -8320,6 +8563,8 @@ var RELAY_COMMANDS = {
8320
8563
  // A style bundle is chrome appearance; the document is untouched.
8321
8564
  "set-style": noDerivedRefresh(),
8322
8565
  "set-appearance": noDerivedRefresh(),
8566
+ // A view's viewport presentation (lighting, backdrop, overlays); the document is untouched.
8567
+ "viewport-presentation": noDerivedRefresh(),
8323
8568
  "present-view": alwaysRefresh(3e4),
8324
8569
  "current-view": refreshIfContentChanged(),
8325
8570
  // A read of the resolved document table; changes nothing.
@@ -8370,21 +8615,14 @@ var RELAY_COMMANDS = {
8370
8615
  "capture-active-document": refreshIfContentChanged(3e4),
8371
8616
  // The whole editor page through the same compositor; the foreignObject leg
8372
8617
  // over a full dock takes seconds, not milliseconds.
8373
- "capture-editor-chrome": refreshIfContentChanged(3e4),
8374
- "capture-viewport": refreshIfContentChanged(),
8375
- "capture-asset-preview": refreshIfContentChanged(3e4),
8618
+ "capture-editor-chrome": refreshIfContentChanged(3e4)
8376
8619
  // The ONE door onto a view's verbs (`@volter/editor-sdk/views`, U8 ruling 1).
8377
8620
  // A verb either READS the view or moves its own transform; neither touches
8378
8621
  // a document, so nothing derived refreshes.
8379
- // ---- Viewport toggles ---------------------------------------------------
8380
- "set-grid": noDerivedRefresh(),
8381
- "set-helpers": noDerivedRefresh(),
8382
- "set-stats": noDerivedRefresh(),
8383
- "set-shading-mode": noDerivedRefresh(),
8384
- "set-helper-type": noDerivedRefresh(),
8385
- "set-transform-mode": noDerivedRefresh(),
8386
- "set-transform-space": noDerivedRefresh(),
8387
- "set-snap": noDerivedRefresh()
8622
+ // The THREE VIEWPORT'S verbs — framing, the camera, view presets, the open
8623
+ // Object3D document's orbit/turntable/frame, the viewport photograph and the
8624
+ // display and transform toggles — are its own command contribution
8625
+ // (`viewport-commands.ts`), each budget on its contributed row.
8388
8626
  // The BLENDER lane's ten verbs are `@vgai/blender`'s
8389
8627
  // `contributions/blender.command.ts` (WORK.md §The workbench, item D) —
8390
8628
  // each row's budget travelled with it, onto the contributed spec the page
@@ -9211,10 +9449,12 @@ try {
9211
9449
  port: { type: "string" },
9212
9450
  version: { type: "boolean", short: "v" },
9213
9451
  help: { type: "boolean", short: "h" },
9452
+ list: { type: "boolean" },
9214
9453
  ...SCREENSHOT_OPTIONS,
9215
9454
  ...CAPABILITY_OPTIONS
9216
9455
  } });
9217
9456
  const [verb = "edit", folder = "."] = positionals;
9457
+ if (values.list && verb !== "eval") throw new Error("--list belongs to eval.");
9218
9458
  for (const key of Object.keys(SCREENSHOT_OPTIONS))
9219
9459
  if (values[key] !== void 0 && verb !== "screenshot") throw new Error(`--${key} belongs to screenshot.`);
9220
9460
  for (const key of Object.keys(CAPABILITY_OPTIONS))
@@ -9224,10 +9464,11 @@ try {
9224
9464
  } else if (values.help) {
9225
9465
  console.log(`Volter Game Editor
9226
9466
  volter-game-editor create <folder> [--template ${Object.keys(presets.templates).join("|")}] [--with ${SCAFFOLD_ADDITIONS.join(",")}] [--workbench <dir>]
9467
+ volter-game-editor prepare [folder] # run the session's dependency optimizer ahead of time (an image build's step)
9227
9468
  volter-game-editor edit [folder] [--workbench <dir>] [--no-open] [--port <n>]
9228
9469
  volter-game-editor status | console | close
9229
9470
  volter-game-editor console ack <id> --reason <text>
9230
- volter-game-editor eval <JavaScript body> # { editor, game, page, tools, session } in scope
9471
+ volter-game-editor eval <JavaScript> | --list # { editor, game, page, tools, session } in scope
9231
9472
  volter-game-editor play | stop | restart
9232
9473
  volter-game-editor ${SCREENSHOT_USAGE}
9233
9474
  volter-game-editor sessions | project | projects
@@ -9272,6 +9513,9 @@ try {
9272
9513
  } else if (verb === "sessions" || verb === "project" || verb === "projects") {
9273
9514
  if (positionals.length > 1) throw new Error(`Usage: volter-game-editor ${verb}`);
9274
9515
  await (verb === "sessions" ? listSessions() : verb === "project" ? showProject() : listRecentProjects());
9516
+ } else if (verb === "prepare") {
9517
+ if (positionals.length > 2) throw new Error("Usage: volter-game-editor prepare [folder]");
9518
+ await prepareSession(folder, PRODUCT3);
9275
9519
  } else if (verb === "open") {
9276
9520
  if (positionals.length !== 2) throw new Error("Usage: volter-game-editor open <path>");
9277
9521
  await openProject(positionals[1]);
@@ -9281,7 +9525,7 @@ try {
9281
9525
  } else if (["status", "console", "eval", "close"].includes(verb)) {
9282
9526
  if (positionals.length > (verb === "eval" ? 2 : 1)) throw new Error("Unexpected arguments.");
9283
9527
  const { gameBindings } = await import("@volter/game-live");
9284
- await control(PRODUCT3.command, verb, positionals[1], void 0, (live) => {
9528
+ await control(PRODUCT3.command, verb, values.list ? "--list" : positionals[1], void 0, (live) => {
9285
9529
  const { game, page, recording } = gameBindings(live.session);
9286
9530
  return { editor: Object.assign(live.editor, { recording }), game, page };
9287
9531
  });