@volter/game-editor 0.5.77 → 0.5.79

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 (305) hide show
  1. package/BUNDLED_NOTICES +22 -22
  2. package/catalog/entries/blender.json +2 -2
  3. package/catalog/entries/music.json +2 -2
  4. package/dist/.vite/manifest.json +2108 -2108
  5. package/dist/assets/{AssetBudgetPanel-Dwpm-iyO.js → AssetBudgetPanel-oKdjrwih.js} +3 -3
  6. package/dist/assets/{AudioViewer-CN_WyuPP.js → AudioViewer-B1k9_wIO.js} +1 -1
  7. package/dist/assets/{CanvasBoardDocument--eRnJA3d.js → CanvasBoardDocument-CidIZfJc.js} +1 -1
  8. package/dist/assets/{CanvasSceneViewport-BwwYOosQ.js → CanvasSceneViewport-D-a2OjoE.js} +1 -1
  9. package/dist/assets/{ColorInput-fP6gD8GQ.js → ColorInput-CsU6nBCb.js} +1 -1
  10. package/dist/assets/{EntityModelDocument--Mnf5gfu.js → EntityModelDocument-BGtt8kn8.js} +1 -1
  11. package/dist/assets/{EnvironmentAssetDocument-JioL9Pmv.js → EnvironmentAssetDocument-Cv_9BvF0.js} +1 -1
  12. package/dist/assets/{GameplaySessionTimeline-BRl0PIim.js → GameplaySessionTimeline-c77A4RAA.js} +1 -1
  13. package/dist/assets/{ImageViewer-ET4Bwjzp.js → ImageViewer-BpjPWpIS.js} +1 -1
  14. package/dist/assets/InspectorObjectPreview-DA4bXZQD.js +1 -0
  15. package/dist/assets/{JsonAssetDocument-CVkHqdUd.js → JsonAssetDocument-BPN3E7Ai.js} +1 -1
  16. package/dist/assets/{LiveModuleDocument-DLwna0kt.js → LiveModuleDocument-CqN29siR.js} +1 -1
  17. package/dist/assets/{LutAssetDocument-BdG_i8hr.js → LutAssetDocument-BV6N2-qQ.js} +1 -1
  18. package/dist/assets/{ModelAssetDocument-DTxbDhA6.js → ModelAssetDocument-Bf5JZ8TF.js} +1 -1
  19. package/dist/assets/{NonThreeAuthoringBootstrap-BZ4A6rPs.js → NonThreeAuthoringBootstrap-CZvbouNB.js} +1 -1
  20. package/dist/assets/{Object3DDocumentToolbar-COuKq3sB.js → Object3DDocumentToolbar-Cm4ma8tv.js} +1 -1
  21. package/dist/assets/Object3DDocumentViewport-BydKspxr.js +2 -0
  22. package/dist/assets/{Object3DPreview-D_1vkB4L.js → Object3DPreview-BlzCte35.js} +1 -1
  23. package/dist/assets/{OnlineAssetDetail-DvKNu8aC.js → OnlineAssetDetail-DaIvao3s.js} +1 -1
  24. package/dist/assets/{PlayBar-DknzqPEC.js → PlayBar-DJ1LfrgS.js} +1 -1
  25. package/dist/assets/{QuarksAssetDocument-Dc5JDyxV.js → QuarksAssetDocument-DcjHKYru.js} +1 -1
  26. package/dist/assets/{ReactCanvasControls-DircULTK.js → ReactCanvasControls-DSwW_3qn.js} +1 -1
  27. package/dist/assets/{RootSelectionOverlay-D--07KbL.js → RootSelectionOverlay-QJRz70Z_.js} +1 -1
  28. package/dist/assets/{ShaderAssetDocument-D05qJkAZ.js → ShaderAssetDocument-BCAyVHUs.js} +1 -1
  29. package/dist/assets/{ShadowEditor-BQ_4yLgQ.js → ShadowEditor-ChBlM7up.js} +1 -1
  30. package/dist/assets/{SourceAssetViewer-ubsXVAPL.js → SourceAssetViewer-t8M_wt4P.js} +1 -1
  31. package/dist/assets/{StageHost-eSViLdbz.js → StageHost-BToQY05P.js} +2 -2
  32. package/dist/assets/{StoryPreviewMount-Befs2jpi.js → StoryPreviewMount-DQQUiOyt.js} +1 -1
  33. package/dist/assets/{ThreeBoardDocument-5MeNfCGF.js → ThreeBoardDocument-B0E8STg7.js} +2 -2
  34. package/dist/assets/{ThreeIsolationSceneContent-B1xdrbgO.js → ThreeIsolationSceneContent-C5fELwmY.js} +1 -1
  35. package/dist/assets/{ToolObject3DPreview-D3D8hMNA.js → ToolObject3DPreview-COEdg5Yk.js} +1 -1
  36. package/dist/assets/{Toolbar-BTun9j-K.js → Toolbar-Dc2590c_.js} +1 -1
  37. package/dist/assets/{TransientHint-BjG5QZ7w.js → TransientHint-Ck6-tCTl.js} +1 -1
  38. package/dist/assets/{VideoViewer-CbsogTc0.js → VideoViewer-Ceo0o85u.js} +1 -1
  39. package/dist/assets/{ViewportShadingMenu-DXfHXJZb.js → ViewportShadingMenu-pE6Hv73N.js} +1 -1
  40. package/dist/assets/{active-ingest-B0RHbDkD.js → active-ingest-DIgBJBWV.js} +2 -2
  41. package/dist/assets/{animation-clock-Dkfj-UNQ.js → animation-clock-BsTiJqzv.js} +1 -1
  42. package/dist/assets/{animation-mixers.service-BTbinFit.js → animation-mixers.service-DZMXEUKZ.js} +1 -1
  43. package/dist/assets/{animation-timeline.utility-BKZvFUv7.js → animation-timeline.utility-C1kYhS_b.js} +1 -1
  44. package/dist/assets/{asset-budget-asset.menu-CPLl16u9.js → asset-budget-asset.menu-CgLl0jxU.js} +1 -1
  45. package/dist/assets/{asset-budget.action-BDDyOQkl.js → asset-budget.action-BM9nPYFm.js} +1 -1
  46. package/dist/assets/{asset-budget.document-CX7bz50G.js → asset-budget.document-CIBwqW8O.js} +1 -1
  47. package/dist/assets/{asset-budget.menu-5S1Zzll8.js → asset-budget.menu-CIYQlzVL.js} +1 -1
  48. package/dist/assets/{asset-editor-persistence-AKvUtcfg.js → asset-editor-persistence-FoI6VqbB.js} +1 -1
  49. package/dist/assets/{asset-loaders-BoVVLGeW.js → asset-loaders-DIhOedSj.js} +1 -1
  50. package/dist/assets/{asset-preview-C-SzfMmZ.js → asset-preview-J56EM7ai.js} +1 -1
  51. package/dist/assets/{audio-unlock.service-Cu-KaqcU.js → audio-unlock.service-CQhkc6fU.js} +1 -1
  52. package/dist/assets/{audio.utility-BdMr9Tg8.js → audio.utility-ZTVc6wlz.js} +1 -1
  53. package/dist/assets/autoplay.service-CFbSU6Np.js +1 -0
  54. package/dist/assets/{babylon-authoring-adapter-qNNPjc8Z.js → babylon-authoring-adapter-qU-GP8QL.js} +1 -1
  55. package/dist/assets/{binding-resolver-CGsJLZOI.js → binding-resolver-iMKdp_Dm.js} +2 -2
  56. package/dist/assets/blender-emscripten-engine-CieQeF-r.js +2 -0
  57. package/dist/assets/{blender-node-editor.document-BdR4Vvi3.js → blender-node-editor.document-BktVlaBT.js} +1 -1
  58. package/dist/assets/{blender-properties-tab-CCNa2VxG.js → blender-properties-tab-Bi7EkqZ4.js} +1 -1
  59. package/dist/assets/{blender-runtime-host-D_r3dBBg.js → blender-runtime-host-Bw37aE1K.js} +2 -2
  60. package/dist/assets/{blender-runtime-skin-CbrjFtVl.js → blender-runtime-skin-DGPSGVTB.js} +1 -1
  61. package/dist/assets/{blender-runtime.document-BeQ1ylTU.js → blender-runtime.document-DwlgMMor.js} +1 -1
  62. package/dist/assets/{blender-timeline.document-BQ6r2Eit.js → blender-timeline.document-BdKv86rL.js} +1 -1
  63. package/dist/assets/{blender-uv-editor.document-CP9yR9fd.js → blender-uv-editor.document-B8KDPYF0.js} +1 -1
  64. package/dist/assets/{blender-version.status-Bu35OikW.js → blender-version.status-Tujyesw9.js} +1 -1
  65. package/dist/assets/blender-wali-engine-KWIxfB_o.js +2 -0
  66. package/dist/assets/{blender.command-ClhAHbhS.js → blender.command-0Er75bJF.js} +1 -1
  67. package/dist/assets/{board-guides-DUTllrm6.js → board-guides-BvzDdD2y.js} +1 -1
  68. package/dist/assets/{bridge.command-CFCb73nA.js → bridge.command-CRyms6ax.js} +3 -3
  69. package/dist/assets/{browserAll-CcEbt8pP.js → browserAll-DUlxC8yY.js} +1 -1
  70. package/dist/assets/{build-player.document-CHNcytS3.js → build-player.document-BuFNx_-Q.js} +1 -1
  71. package/dist/assets/{build-profiles.document-CfftHZEt.js → build-profiles.document-xu8oCc9h.js} +1 -1
  72. package/dist/assets/{build-progress.status-Ba7TtK8C.js → build-progress.status-BPDoYt8o.js} +1 -1
  73. package/dist/assets/{build-session-BVAVoaAo.js → build-session-BrAG7tBV.js} +1 -1
  74. package/dist/assets/{build.action-C4v62OGp.js → build.action-CCppyLBx.js} +1 -1
  75. package/dist/assets/{build.command-DiOf0gsd.js → build.command-Inptj7R-.js} +1 -1
  76. package/dist/assets/{build.header-Cc9F3_tw.js → build.header-DXGyFt56.js} +1 -1
  77. package/dist/assets/{build.menu-C6m7wAB0.js → build.menu-8VNdh6Kh.js} +1 -1
  78. package/dist/assets/{build.service-BD9CuqZ1.js → build.service-B98j6yu1.js} +1 -1
  79. package/dist/assets/{camera-QoF2qQn9.js → camera-PuR5cfKw.js} +1 -1
  80. package/dist/assets/{camera-runtime.inspector-BPmJd9CX.js → camera-runtime.inspector-DuLoTNGH.js} +1 -1
  81. package/dist/assets/{canvas-design-mount-QoLQihbE.js → canvas-design-mount-DFvmQJTh.js} +3 -3
  82. package/dist/assets/{canvas-entry-runtime-cJsqLXEp.js → canvas-entry-runtime-BVnhMBaW.js} +2 -2
  83. package/dist/assets/{canvas-preview-frames-CxHRaajp.js → canvas-preview-frames-C-dFTVWu.js} +1 -1
  84. package/dist/assets/{canvas-story-capture.service-DUSsBMnw.js → canvas-story-capture.service-Bg4fphDj.js} +2 -2
  85. package/dist/assets/{capability-coverage-DiBzUjdM.js → capability-coverage-B0oT2N3Z.js} +1 -1
  86. package/dist/assets/{collaboration-presence-Bj9ev5mU.js → collaboration-presence-CP5gEnxY.js} +1 -1
  87. package/dist/assets/{collider-CE-VI_rc.js → collider-DrfGXvUO.js} +1 -1
  88. package/dist/assets/{component-board.service-CzROar7A.js → component-board.service-CvEW_Te9.js} +2 -2
  89. package/dist/assets/{component-board.service-Bi8VA3L0.js → component-board.service-MhNc_Ru3.js} +2 -2
  90. package/dist/assets/{component-board.service-Hbl9EZl9.js → component-board.service-mzEFwa--.js} +2 -2
  91. package/dist/assets/{component-contracts.service-CCaAPGw2.js → component-contracts.service-zrpqDXgQ.js} +1 -1
  92. package/dist/assets/{component-instance-root-BZXekKMG.js → component-instance-root-BpMFxtbQ.js} +1 -1
  93. package/dist/assets/{component-verbs.command-Db0sUk65.js → component-verbs.command-8Kl0HNWX.js} +1 -1
  94. package/dist/assets/{component-verbs.service-DuEY_Ofq.js → component-verbs.service-CxZFYomt.js} +1 -1
  95. package/dist/assets/{config-DApMxCjE.js → config-BKyBW2FV.js} +2 -2
  96. package/dist/assets/{configurations-B4fNBX4_.js → configurations-B391DE84.js} +1 -1
  97. package/dist/assets/{connection.status-D7URFwNX.js → connection.status-CDK2Dxmh.js} +1 -1
  98. package/dist/assets/{constraints.inspector-C-rz7qm2.js → constraints.inspector-BvDktIDy.js} +1 -1
  99. package/dist/assets/{content-bounds-IMXYkN3x.js → content-bounds-BM2BJV41.js} +1 -1
  100. package/dist/assets/{contract-system-adapters-DAgN02qJ.js → contract-system-adapters-Dv5mUMr_.js} +1 -1
  101. package/dist/assets/{coverage.service-BWYLFkJZ.js → coverage.service-BLbBH9i2.js} +1 -1
  102. package/dist/assets/{create-runtime-B4VUkWmh.js → create-runtime-BvzMRqkg.js} +1 -1
  103. package/dist/assets/{curve-nsmv7c1I.js → curve-BbX4M8ka.js} +1 -1
  104. package/dist/assets/{data-asset-BQCPKu13.js → data-asset-DEfrCU5L.js} +1 -1
  105. package/dist/assets/{data-ref-CeTcnM3h.js → data-ref-CwypqVYb.js} +1 -1
  106. package/dist/assets/{debug-bridge-Cjo3HKqn.js → debug-bridge-B3ag_ARb.js} +1 -1
  107. package/dist/assets/{debug-registry-D4XNZdHk.js → debug-registry-DlrL6r1z.js} +1 -1
  108. package/dist/assets/{deferred-ingest-play-CrBHt1VV.js → deferred-ingest-play-tx7qVcg3.js} +2 -2
  109. package/dist/assets/{design-time-canvas-mount-Dzu7gMRL.js → design-time-canvas-mount-L1S8lY0u.js} +2 -2
  110. package/dist/assets/{design-time-layers-BJZJy_6E.js → design-time-layers-DxZgHWM2.js} +1 -1
  111. package/dist/assets/{design-time-mount.service-Bzs3PQ3q.js → design-time-mount.service-Bo9K8hZb.js} +2 -2
  112. package/dist/assets/{design-time-mount.service-BZMMh_B1.js → design-time-mount.service-DVYJJr4l.js} +2 -2
  113. package/dist/assets/{design-time-react-mount-C2ychNs2.js → design-time-react-mount-Cw_YU4iA.js} +1 -1
  114. package/dist/assets/{document-preview-three-BxNY0561.js → document-preview-three-BS7op9Kh.js} +1 -1
  115. package/dist/assets/{dom-authoring-adapter-BZtIjxmP.js → dom-authoring-adapter-DeVD6HLk.js} +1 -1
  116. package/dist/assets/{draco3d-j0uDqveB.js → draco3d-_8eRv2Qk.js} +1 -1
  117. package/dist/assets/{edit-mode-audio.service-cDUTJL37.js → edit-mode-audio.service-BO6CbCXN.js} +1 -1
  118. package/dist/assets/{edit-mode-authoring-BGGW26LN.js → edit-mode-authoring-RAf4S6PI.js} +1 -1
  119. package/dist/assets/{edit-mode-networking.service-DBB67UkE.js → edit-mode-networking.service-QiUNWbxh.js} +1 -1
  120. package/dist/assets/{editor-api-NUTZNRyn.js → editor-api-B_UrHHhL.js} +1 -1
  121. package/dist/assets/{editor-layers-BpAhxn0P.js → editor-layers-C47WUNtv.js} +1 -1
  122. package/dist/assets/{editor-shell-store-C04XLLU-.js → editor-shell-store-B-64vpgA.js} +1 -1
  123. package/dist/assets/{entity-object-DsAYI3gJ.js → entity-object-DBXB7ABG.js} +1 -1
  124. package/dist/assets/{extend-BvNGT6qQ.js → extend-hLINO4Zy.js} +1 -1
  125. package/dist/assets/{fork-menu-B3qakgix.js → fork-menu-BWis777M.js} +1 -1
  126. package/dist/assets/{frame-debugger-store-BQ7OaD2z.js → frame-debugger-store-CiuSELDU.js} +1 -1
  127. package/dist/assets/{game-contract-seams-Kcb8YGio.js → game-contract-seams-D4x_QFfy.js} +1 -1
  128. package/dist/assets/{game-css-scope-transform-CHdOIM_x.js → game-css-scope-transform-BFCy45PO.js} +1 -1
  129. package/dist/assets/{game-document.service-CAx5m7Ne.js → game-document.service-LgRTA5er.js} +1 -1
  130. package/dist/assets/{game-eval.command-CHg0bsCV.js → game-eval.command-i4tbTEzA.js} +1 -1
  131. package/dist/assets/{game-module-access-zqg58xYk.js → game-module-access-CmfN4vfG.js} +1 -1
  132. package/dist/assets/{game-network-C3D1ib_r.js → game-network-Bs_aLrfo.js} +3 -3
  133. package/dist/assets/{gameplay-export-DiUUF7OL.js → gameplay-export-DMycxmRI.js} +1 -1
  134. package/dist/assets/{gameplay-replay-BOpWtguL.js → gameplay-replay-CQwJHBcQ.js} +1 -1
  135. package/dist/assets/{gameplay.command-eG5IvOZD.js → gameplay.command-DwbIk4qS.js} +1 -1
  136. package/dist/assets/{generation-jobs-DCZm-7-c.js → generation-jobs-DHR06-Ow.js} +1 -1
  137. package/dist/assets/{generation.service-DcF_tuiA.js → generation.service-C3sjmS56.js} +1 -1
  138. package/dist/assets/{generations-Cij1e8K5.js → generations-QDWWr3sT.js} +1 -1
  139. package/dist/assets/{generations.status-D6Xkxwnu.js → generations.status-8UpzzSN6.js} +1 -1
  140. package/dist/assets/{hierarchy-marks-MeNgbwiP.js → hierarchy-marks-DDRF3quV.js} +1 -1
  141. package/dist/assets/{hosted-asset-materialization-PWF6teYQ.js → hosted-asset-materialization-DFetjs7r.js} +1 -1
  142. package/dist/assets/{index-BV0Qqo83.js → index-BlOoiZ_I.js} +1 -1
  143. package/dist/assets/{index-GyJvVDDT.js → index-CUyoEnie.js} +1 -1
  144. package/dist/assets/{index-C2Ir9SpE.js → index-Cdjg29qG.js} +1 -1
  145. package/dist/assets/{index-DvO8W-nn.js → index-CkpBXMDJ.js} +1 -1
  146. package/dist/assets/{index-s_IF6Bxe.js → index-DGgVCKlK.js} +1 -1
  147. package/dist/assets/{index-i3_nCWlL.js → index-DL3yQMTk.js} +2 -2
  148. package/dist/assets/{index-BFwx6NRh.js → index-DZg4GXi0.js} +1 -1
  149. package/dist/assets/{index-2B6cj0iP.js → index-DxV6Akny.js} +1 -1
  150. package/dist/assets/{index-GOaZz_UJ.js → index-JjEYIC4G.js} +7 -7
  151. package/dist/assets/{inference-diagnostics-DH6OpJZI.js → inference-diagnostics-kHRsQw1P.js} +1 -1
  152. package/dist/assets/{ingest-boot-viewport-BnE3u7YT.js → ingest-boot-viewport-BO7yl504.js} +1 -1
  153. package/dist/assets/{ingest-siblings-B_5SsNEz.js → ingest-siblings-C-RhYsUb.js} +1 -1
  154. package/dist/assets/{ingest-source-persistence-DM9T5S4m.js → ingest-source-persistence-B52PvpPx.js} +1 -1
  155. package/dist/assets/{ingest.service-COWbKrQI.js → ingest.service-CXx-aW-5.js} +1 -1
  156. package/dist/assets/{inspect-CD61yjth.js → inspect-KwcXV5-u.js} +1 -1
  157. package/dist/assets/instances.command--PqjYvLl.js +1 -0
  158. package/dist/assets/{json-history-resource-Cby5jKsw.js → json-history-resource-B0kkSep8.js} +1 -1
  159. package/dist/assets/{layered-pick-B3AjYd-G.js → layered-pick-ClYksj6v.js} +1 -1
  160. package/dist/assets/{light-B7BXFfR-.js → light-C33qOzVd.js} +1 -1
  161. package/dist/assets/{live-project-verbs-DR_q7RK-.js → live-project-verbs-CIlCfET4.js} +1 -1
  162. package/dist/assets/{machine.document-DPYrwmW6.js → machine.document-KKGimt_o.js} +1 -1
  163. package/dist/assets/{machines.finder-CwpvHTlH.js → machines.finder-DA-qVsE-.js} +1 -1
  164. package/dist/assets/{material-XjlLI_f7.js → material-BPlHfj-y.js} +1 -1
  165. package/dist/assets/{material-factory-CsiepVqC.js → material-factory-DIU9do_v.js} +1 -1
  166. package/dist/assets/{mesh-2zwQAuCC.js → mesh-D3gE3KD_.js} +1 -1
  167. package/dist/assets/{model-asset-sections.service-9-sm-NaU.js → model-asset-sections.service-HoRKwaP6.js} +1 -1
  168. package/dist/assets/{model-inspection-B0GymTL8.js → model-inspection-BMy0MuzJ.js} +1 -1
  169. package/dist/assets/{model-thumbnail-C6xWKVgL.js → model-thumbnail-ICdHSiW1.js} +1 -1
  170. package/dist/assets/{models.finder-4xaZ_CWd.js → models.finder-DvULfruZ.js} +1 -1
  171. package/dist/assets/{module-mode-QCybxWRW.js → module-mode-BTXto0oj.js} +2 -2
  172. package/dist/assets/{mount-canvas-ingest-root-C4nQ82CG.js → mount-canvas-ingest-root-BFQfgTuE.js} +2 -2
  173. package/dist/assets/{mount-dom-ingest-root-CyJlqUpj.js → mount-dom-ingest-root-C4Deoodh.js} +2 -2
  174. package/dist/assets/{mount-ingest-root-C8dDNkUg.js → mount-ingest-root-BnX5FYpQ.js} +2 -2
  175. package/dist/assets/{mount-manifest-z3xK0qgx.js → mount-manifest-CK1RiS8E.js} +1 -1
  176. package/dist/assets/{mount-three-ingest-root-CHZLDOUt.js → mount-three-ingest-root-C6pYTH-h.js} +1 -1
  177. package/dist/assets/{mounted-authoring-CZw66UYV.js → mounted-authoring-BRmJcses.js} +1 -1
  178. package/dist/assets/{mounted-story-viewport-source-DP4yrSoT.js → mounted-story-viewport-source-DghPnLY9.js} +1 -1
  179. package/dist/assets/{native-debug-module-qMZlzFCw.js → native-debug-module-ojTkP52T.js} +1 -1
  180. package/dist/assets/{navigation-BneGZzZt.js → navigation-CTZYysxE.js} +1 -1
  181. package/dist/assets/{navmesh.menu-Bh4FuG-U.js → navmesh.menu-COJ77FTK.js} +1 -1
  182. package/dist/assets/{navmesh.service-BB71x7KW.js → navmesh.service-tVf8xf8f.js} +1 -1
  183. package/dist/assets/network-observer.service-DZtz0Y5F.js +1 -0
  184. package/dist/assets/{network.utility-DBva0eo8.js → network.utility-DNmrBkHK.js} +1 -1
  185. package/dist/assets/{object3d-document-session-registry-q7c_gezv.js → object3d-document-session-registry-CIdYrDwO.js} +2 -2
  186. package/dist/assets/{oid-transform-tKqLhlWg.js → oid-transform-BMGB2u8Z.js} +1 -1
  187. package/dist/assets/{particles-gUgFtSRY.js → particles-CmcHZZqz.js} +1 -1
  188. package/dist/assets/{pixi-authoring-adapter-Cd5O2LTH.js → pixi-authoring-adapter-BLptyAwL.js} +1 -1
  189. package/dist/assets/{pixi-live-write-target-DHzgc22z.js → pixi-live-write-target-DMGlsQdL.js} +1 -1
  190. package/dist/assets/{play.command-BxgvkWfL.js → play.command-D0aUzhnI.js} +2 -2
  191. package/dist/assets/{presentation-C5hzwpZR.js → presentation-BOKcaCle.js} +1 -1
  192. package/dist/assets/{product-CKGKSgsU.js → product-DBhE7XzM.js} +1 -1
  193. package/dist/assets/{profiler.action-S08Up0JS.js → profiler.action-DFPR0GaW.js} +1 -1
  194. package/dist/assets/{profiler.menu-Dy4i7lwO.js → profiler.menu-Cjq4IMjK.js} +1 -1
  195. package/dist/assets/{profiler.utility-CC8CJLy8.js → profiler.utility-O_BbyzQ6.js} +1 -1
  196. package/dist/assets/{project-authoring-session-BXLqBDUm.js → project-authoring-session-Fg6BVKiU.js} +2 -2
  197. package/dist/assets/{properties-bone-constraints.inspector-BX2GxZq2.js → properties-bone-constraints.inspector-Df8r9rGo.js} +1 -1
  198. package/dist/assets/{properties-bone.inspector-CCLVVUtG.js → properties-bone.inspector-BHOmG-w_.js} +1 -1
  199. package/dist/assets/{properties-collection.inspector-CKbzSvCC.js → properties-collection.inspector-COUpmMSs.js} +1 -1
  200. package/dist/assets/{properties-constraints.inspector-DV1P6hUd.js → properties-constraints.inspector-DSDh4Uba.js} +1 -1
  201. package/dist/assets/{properties-data.inspector-BMaGtE_w.js → properties-data.inspector-DjjFOVxW.js} +1 -1
  202. package/dist/assets/{properties-material.inspector-BtesjppG.js → properties-material.inspector-DPKY8b2v.js} +1 -1
  203. package/dist/assets/{properties-modifiers.inspector-MiHOsiuf.js → properties-modifiers.inspector-BtNVTrKN.js} +1 -1
  204. package/dist/assets/{properties-object.inspector-Ct8masbP.js → properties-object.inspector-DYNpha7x.js} +1 -1
  205. package/dist/assets/{properties-output.inspector-CVNr0tSt.js → properties-output.inspector-CBzwfSQQ.js} +1 -1
  206. package/dist/assets/{properties-particles.inspector-EMFa11PY.js → properties-particles.inspector-5DlYLg0u.js} +1 -1
  207. package/dist/assets/{properties-physics.inspector-CACxDEwm.js → properties-physics.inspector-D__Z169g.js} +1 -1
  208. package/dist/assets/{properties-render.inspector-CtijIdsj.js → properties-render.inspector-Dvnehd8j.js} +1 -1
  209. package/dist/assets/{properties-scene.inspector-oEdDyqg4.js → properties-scene.inspector-DxGBiL_G.js} +1 -1
  210. package/dist/assets/{properties-texture.inspector-C_gpMJPm.js → properties-texture.inspector-5qsUhAvc.js} +1 -1
  211. package/dist/assets/{properties-view-layer.inspector-iXXhbErN.js → properties-view-layer.inspector-BHv0B73V.js} +1 -1
  212. package/dist/assets/{properties-world.inspector-BTG_6enJ.js → properties-world.inspector-D53Cc2Fs.js} +1 -1
  213. package/dist/assets/{r3f-design-session-BpFmOBy3.js → r3f-design-session-BhddL1e6.js} +2 -2
  214. package/dist/assets/{r3f-physics-binding-Dc4KkqeK.js → r3f-physics-binding-D41qQnHD.js} +1 -1
  215. package/dist/assets/{r3f-source-authoring-adapter-Bqqwlt5P.js → r3f-source-authoring-adapter-ZnrWHj5Z.js} +1 -1
  216. package/dist/assets/{react-canvas-navigation-CHqEpva-.js → react-canvas-navigation-DFspvY8K.js} +1 -1
  217. package/dist/assets/{react-inspector.service-BofSBcrA.js → react-inspector.service-Co5AHjHR.js} +1 -1
  218. package/dist/assets/{react-story-board-DA2YLI8m.js → react-story-board--jvx8x-C.js} +1 -1
  219. package/dist/assets/{react-three-rapier.esm-CQZa_73g.js → react-three-rapier.esm-BS-6eWKp.js} +1 -1
  220. package/dist/assets/{react-world-authoring-adapter-4sStON8E.js → react-world-authoring-adapter-CKQ-MAMv.js} +1 -1
  221. package/dist/assets/{realm-services-DbZYHQSf.js → realm-services-DUEIrJNn.js} +1 -1
  222. package/dist/assets/{reflection-probe-capture.inspector-DNvA6bnY.js → reflection-probe-capture.inspector-gO0DwTZj.js} +1 -1
  223. package/dist/assets/{registry-DBlUxvdQ.js → registry-ofLrf5fa.js} +1 -1
  224. package/dist/assets/{relative-import-specifier-B0yhWWcj.js → relative-import-specifier-B_Awfdrr.js} +1 -1
  225. package/dist/assets/{render-env-DdFrpGB_.js → render-env-a1pPDP-U.js} +1 -1
  226. package/dist/assets/{render-features-B35P-in2.js → render-features-CY3KFNVc.js} +1 -1
  227. package/dist/assets/{render-settings-C81L61oc.js → render-settings-DgCYPHgH.js} +1 -1
  228. package/dist/assets/{resolve-three-CM8Cg4vF.js → resolve-three-fhgJb0Jd.js} +3 -3
  229. package/dist/assets/{root-seam-contract-BUz-MUf1.js → root-seam-contract-D3r4vEIL.js} +1 -1
  230. package/dist/assets/{run-selection-BdiLPzVf.js → run-selection-DVvs9B9T.js} +1 -1
  231. package/dist/assets/{scene-capture-Diz1G192.js → scene-capture-CCy--ncb.js} +1 -1
  232. package/dist/assets/{scene-document.service-DfXZsaKM.js → scene-document.service-BCliVABQ.js} +2 -2
  233. package/dist/assets/{scene-framing-B5dto0bO.js → scene-framing-B1butaCp.js} +1 -1
  234. package/dist/assets/{seeded-random-WDTtjPze.js → seeded-random-J_tZuhc3.js} +1 -1
  235. package/dist/assets/{session-CeyQA0Dv.js → session-BMie6EFt.js} +19 -2
  236. package/dist/assets/{setup-renderer-D9SD_Wht.js → setup-renderer-DroW21zu.js} +1 -1
  237. package/dist/assets/{source-object3d-authoring-adapter-D6uGhge2.js → source-object3d-authoring-adapter-Bansi23s.js} +1 -1
  238. package/dist/assets/{source-persistence-backend-CxVBXGoQ.js → source-persistence-backend-B7_XGPrd.js} +1 -1
  239. package/dist/assets/{stage-keyboard-BPb1swaM.js → stage-keyboard-Cj5wm_J_.js} +1 -1
  240. package/dist/assets/{stage-overlay-set-DRa6xB93.js → stage-overlay-set-CddoR5WV.js} +1 -1
  241. package/dist/assets/{stage-presence-markers-CGxHoE5g.js → stage-presence-markers-B7ikfK7I.js} +1 -1
  242. package/dist/assets/{stage-transform-tools-CQuG66LW.js → stage-transform-tools-C9-7W51Q.js} +1 -1
  243. package/dist/assets/{standard-viewport-dressing-D4bfoK0I.js → standard-viewport-dressing-BYqJ1RDj.js} +1 -1
  244. package/dist/assets/{state-watch.action-DPVKmPwL.js → state-watch.action-Ckl-KiOu.js} +1 -1
  245. package/dist/assets/{state-watch.menu-DpISV21j.js → state-watch.menu-Bua5sNDD.js} +1 -1
  246. package/dist/assets/{state-watch.utility-DwKoTnVp.js → state-watch.utility-LIkpnIYo.js} +1 -1
  247. package/dist/assets/{story-capture-Bzwbk_mv.js → story-capture-DRezN8hO.js} +1 -1
  248. package/dist/assets/{story-documents-De1zQ6Qz.js → story-documents-QsOjjFN1.js} +1 -1
  249. package/dist/assets/{story-documents.service-8XTTuO7s.js → story-documents.service-BBcpnJqG.js} +1 -1
  250. package/dist/assets/{story-documents.service-6eOlV6NP.js → story-documents.service-s45WvtSH.js} +1 -1
  251. package/dist/assets/{story-media-presence-DpEeszWv.js → story-media-presence-D3jBkjoV.js} +1 -1
  252. package/dist/assets/{story-pixi-preview-BEyaPLy0.js → story-pixi-preview-DR9Z3mjx.js} +1 -1
  253. package/dist/assets/{story-presentation-CjTxyaxs.js → story-presentation-BanrEcxs.js} +1 -1
  254. package/dist/assets/{story-three-preview-abAavxSh.js → story-three-preview-Cc12jMw-.js} +2 -2
  255. package/dist/assets/{studio-environment-BiC6OVkT.js → studio-environment-D3HaysRE.js} +1 -1
  256. package/dist/assets/{surface-state-CUfqJeMb.js → surface-state-DgY1sYF4.js} +1 -1
  257. package/dist/assets/{syntactic-prop-specs-DTioDasF.js → syntactic-prop-specs-CBGAFjrQ.js} +1 -1
  258. package/dist/assets/{team-playtest.service-GRj4yKy4.js → team-playtest.service-z2r_7CUE.js} +1 -1
  259. package/dist/assets/{three-CQcV_QdT.js → three-CqcAlmZt.js} +1 -1
  260. package/dist/assets/{three-authoring-adapter-D3qfWIRk.js → three-authoring-adapter-D-dP-DRa.js} +1 -1
  261. package/dist/assets/three-authoring.service-BPzGC8dd.js +2 -0
  262. package/dist/assets/{three-ingest-runtime-E3dJH9KF.js → three-ingest-runtime-BOYUnvJa.js} +1 -1
  263. package/dist/assets/{three-integration-BjEyDiTB.js → three-integration-BKGFte0g.js} +2 -2
  264. package/dist/assets/three-integration.service-InYYMues.js +1 -0
  265. package/dist/assets/{three-projection-core-CkmVzWhv.js → three-projection-core-CMYaSPZP.js} +1 -1
  266. package/dist/assets/{three-state-CzjS3Z7g.js → three-state-Bs6NttX2.js} +1 -1
  267. package/dist/assets/{three-story-capture.service-D-1pij9x.js → three-story-capture.service-CV7CaGFK.js} +2 -2
  268. package/dist/assets/{three-story-model-B1sz0NKf.js → three-story-model-DMsHWVLi.js} +1 -1
  269. package/dist/assets/{three-viewport-presentation-OxBEdgIP.js → three-viewport-presentation-D8F-c141.js} +1 -1
  270. package/dist/assets/{transform-mode-request-DO67Jvcm.js → transform-mode-request-nAOkjL7J.js} +1 -1
  271. package/dist/assets/{transport-strip-D55r6FTk.js → transport-strip-Do5Y5zz_.js} +1 -1
  272. package/dist/assets/transport.header-BhBKpJ9P.js +1 -0
  273. package/dist/assets/{tuples-CJ18T3dX.js → tuples-T3njUS_v.js} +1 -1
  274. package/dist/assets/{ui-board-document-DEx342dp.js → ui-board-document-Dix9rYE-.js} +2 -2
  275. package/dist/assets/{user-data-BDBZj06-.js → user-data-DcUoY-0j.js} +1 -1
  276. package/dist/assets/{utility-view-state-B7prGtP-.js → utility-view-state-BUR2tvAo.js} +1 -1
  277. package/dist/assets/{viewport-door-Slxb_SvE.js → viewport-door-Ct3Jwvkd.js} +1 -1
  278. package/dist/assets/{viewport-root-presentation-B6vzusDX.js → viewport-root-presentation-CM-p4xLg.js} +1 -1
  279. package/dist/assets/{viewport-surface-status-C4UZ_Uq4.js → viewport-surface-status-BlPwrnIq.js} +1 -1
  280. package/dist/assets/{webworkerAll-DO15AziI.js → webworkerAll-BbcMGhdJ.js} +1 -1
  281. package/dist/assets/worker-Gtu-EAm9.js +2 -0
  282. package/dist/assets/{workspace-arrangement-BjHQJUoD.js → workspace-arrangement-D7VBwv9F.js} +1 -1
  283. package/dist/assets/{world-documents-CuBxaDZx.js → world-documents-g6lvzHMh.js} +1 -1
  284. package/dist/assets/{world-root-stage-binding-Bn0b7XsL.js → world-root-stage-binding-DugyiNfT.js} +1 -1
  285. package/dist/assets/{xstate-animation-binding-I-GEhYkk.js → xstate-animation-binding-Qdxeavj_.js} +1 -1
  286. package/dist/assets/{xstate-animation-meta-Io__GNze.js → xstate-animation-meta-CtUROKFq.js} +1 -1
  287. package/dist-node/cli.js +18 -18
  288. package/dist-node/create.js +1 -1
  289. package/package.json +17 -17
  290. package/template/.volter/tracker/validation/.preset.base.mts +3 -3
  291. package/template/.volter/tracker/validation/preset.mts +3 -3
  292. package/template/.volter/tracker/visualizer/.extension.base.tsx +2 -2
  293. package/template/.volter/tracker/visualizer/extension.tsx +2 -2
  294. package/template/package.json +1 -1
  295. package/dist/assets/InspectorObjectPreview-BvYcwQTS.js +0 -1
  296. package/dist/assets/Object3DDocumentViewport-DcX529Vg.js +0 -2
  297. package/dist/assets/autoplay.service-CclAhFII.js +0 -1
  298. package/dist/assets/blender-emscripten-engine-Cd6az4pU.js +0 -2
  299. package/dist/assets/blender-wali-engine-CZcS3eAd.js +0 -2
  300. package/dist/assets/instances.command-CxgGOKUm.js +0 -1
  301. package/dist/assets/network-observer.service-BKOQ_E--.js +0 -1
  302. package/dist/assets/three-authoring.service-C2oNRt7a.js +0 -2
  303. package/dist/assets/three-integration.service-n5uKl57k.js +0 -1
  304. package/dist/assets/transport.header-hkELPlfF.js +0 -1
  305. package/dist/assets/worker-jepHAPPr.js +0 -2
@@ -1 +1 @@
1
- import{collectMachineAnimationMeta as V,clipNamesOf as L,isBlendTreeAnimationMeta as S,asBlendTreeDef as z}from"./xstate-animation-meta-Io__GNze.js";import{cW as J,p as Z,c as _,cQ as ee,l as te,dk as ne,cf as ie,cd as oe}from"./three.core-3arARmh6.js";import"./index-GOaZz_UJ.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";class M extends Error{constructor(i,c){super(i),this.stateId=c,this.name="AnimationBindingError"}}function ae(n){const i=n.logic;if(i?.root)return i;const c=n.getSnapshot();if(c?.machine?.root)return c.machine;throw new M("[bindXStateAnimation] the actor exposes no state machine — only a state-machine actor carries the `meta.animation` this binder reads")}const W=n=>n.layer??"base",B=n=>n.weight??1,I=n=>n.blendMode??"override";function T(n){try{return ne.parseTrackName(n.name).nodeName??""}catch{const i=n.name.indexOf(".");return i<0?n.name:n.name.slice(0,i)}}function C(n,i,c){const o=new Set,l=[];for(const f of i){let u=!1;n.traverse(m=>{m.name===f&&(u=!0,m.traverse(d=>{d.name&&o.add(d.name)}))}),c.has(f)&&(u=!0,o.add(f)),u||l.push(f)}return{names:o,missing:l}}function se(n,i,c,o){const l=new Set(n.tracks.map(T)),f=i.include?C(c,i.include,l):void 0,u=i.exclude?C(c,i.exclude,l):void 0,m=[...f?.missing??[],...u?.missing??[]];if(m.length)throw new M(`[bindXStateAnimation] state "${o}" boneMask names unknown bones/objects: ${m.join(", ")}`,o);const d=n.tracks.filter(p=>{const w=T(p);return(!f||f.names.has(w))&&!u?.names.has(w)});if(d.length===0)throw new M(`[bindXStateAnimation] state "${o}" boneMask removes every track from clip "${n.name}"`,o);return new te(n.name,n.duration,d.map(p=>p.clone()))}function re(n){return n.reduce((i,c)=>c.weight>i.weight?c:i,n[0])}function Se(n,i,c,o={}){const l=i.getRoot(),f=o.root??(l instanceof J?l:void 0);if(!f)throw new M("[bindXStateAnimation] a THREE.Object3D `root` option is required when the mixer uses AnimationObjectGroup");const u=ae(n).root,m=V(u),d=new Map(m.map(t=>[t.stateId,t.meta]));for(const t of m)for(const e of L(t.meta))if(!c.has(e))throw new M(`[bindXStateAnimation] state "${t.stateId}" references clip "${e}", which is not present in the supplied clips map. Known clips: ${[...c.keys()].join(", ")||"(none)"}`,t.stateId);const p=new Map;function w(t,e,s){return W(e)!=="base"||!!e.boneMask||I(e)==="additive"?`${t}\0${s}`:s}for(const{stateId:t,meta:e}of m)for(const s of L(e)){const a=w(t,e,s);if(p.has(a))continue;const r=c.get(s);let h=e.boneMask?se(r,e.boneMask,f,t):r;(h!==r||a!==s)&&(h===r&&(h=r.clone()),h.name=`${r.name}@${W(e)}:${t}`),I(e)==="additive"?(Z.makeClipAdditive(h),h.blendMode=_):h.blendMode=ee,p.set(a,h)}const g=new Map;function K(t,e,s,a){let r=g.get(t);if(!r){const h=p.get(t);if(!h)throw new M(`[bindXStateAnimation] prepared clip "${t}" not found`);const v=i.clipAction(h);v.setEffectiveWeight(0),v.play(),r={action:v,clip:h},g.set(t,r)}return r.action.setLoop(e?ie:oe,1/0),r.action.clampWhenFinished=!e,r.action.timeScale=s,r.action.weight=a,r.action}function N(t){const e=o.selectParameters?o.selectParameters(t):t;return new Map(Object.entries(e??{}))}function D(t,e,s){return(S(e)?ce(z(e.blendTree),N(s)):[{clip:e.clip,weight:1}]).map(({clip:r,weight:h})=>({clip:r,weight:h,actionKey:w(t,e,r)}))}const y=new Map;let O=!1;function R(t,e,s){for(const a of t){if(a.actionKey===e)continue;const r=g.get(a.actionKey)?.action;r&&(s>0?r.fadeOut(s):r.setEffectiveWeight(0))}}function k(t,e){if(!S(t.meta))return;t.natural=D(t.stateId,t.meta,e);const s=B(t.meta);for(const a of t.natural)g.get(a.actionKey)?.action.setEffectiveWeight(a.weight*s)}function P(t,e,s){const a=W(e),r=y.get(a)??null,h=D(t,e,s),v=re(h),H=S(e)?!0:e.loop,Q=S(e)?1:e.speed,x=B(e);for(const b of h)K(b.actionKey,H,Q,x);const $=g.get(v.actionKey).action;$.reset().setEffectiveWeight(x);for(const b of h)b.actionKey!==v.actionKey&&g.get(b.actionKey).action.reset().setEffectiveWeight(0);const A=e.crossfade?.duration??0,U=e.crossfade?.warp??!1;if(!r)A>0&&$.fadeIn(A);else{R(r.natural,r.dominantActionKey,A);const b=g.get(r.dominantActionKey)?.action;b&&A>0?b.crossFadeTo($,A,U):(b?.setEffectiveWeight(0),$.setEffectiveWeight(x))}const j={layer:a,stateId:t,meta:e,natural:h,dominantActionKey:v.actionKey,crossfadeRemaining:A};y.set(a,j),S(e)&&A<=0&&k(j,s)}function q(t){return Object.keys(t.getMeta()).filter(e=>d.has(e))}function X(t){const e=new Map;for(const s of q(t)){const a=d.get(s),r=W(a),h=e.get(r);if(h)throw new M(`[bindXStateAnimation] animated states "${h}" and "${s}" are both active on layer "${r}". Give parallel regions distinct meta.animation.layer names.`,s);e.set(r,s)}for(const[s,a]of y)e.has(s)||(R(a.natural,void 0,0),y.delete(s));for(const[s,a]of e)y.get(s)?.stateId!==a&&P(a,d.get(a),t.context)}const F=n.getSnapshot();X(F);const G=n.subscribe(t=>{O||X(t)});function E(t){if(O)return;const e=t,s=n.getSnapshot().context;for(const a of y.values())a.crossfadeRemaining>0?(a.crossfadeRemaining=Math.max(0,a.crossfadeRemaining-e),a.crossfadeRemaining<=0&&k(a,s)):k(a,s);i.update(e)}const Y={tick:E,actor:n,getParameters:()=>N(n.getSnapshot().context),getActiveLayers:()=>[...y.values()].map(t=>({layer:t.layer,stateId:t.stateId,clips:t.natural.map(e=>e.clip),clipWeights:t.natural.map(e=>({clip:e.clip,weight:g.get(e.actionKey)?.action.getEffectiveWeight()??0})),weight:B(t.meta),blendMode:I(t.meta),...t.meta.boneMask?{boneMask:t.meta.boneMask}:{}})),dispose(){if(!O){O=!0,o.systems?.remove("animation",E),G.unsubscribe();for(const{action:t,clip:e}of g.values())t.stop(),i.uncacheAction(e,t.getRoot());g.clear(),y.clear()}}};return o.systems?.add("animation",E),Y}function ce(n,i){switch(n.type){case"1D":return le(n,i);case"2D":return fe(n,i);case"direct":return de(n);default:return n.children.map(c=>({clip:c.clip,weight:1/n.children.length}))}}function le(n,i){const c=Number(i.get(n.parameter)??0),o=[...n.children].sort((f,u)=>f.threshold-u.threshold),l=o.map(f=>({clip:f.clip,weight:0}));if(o.length===0)return l;if(o.length===1||c<=o[0].threshold)return l[0].weight=1,l;if(c>=o[o.length-1].threshold)return l[l.length-1].weight=1,l;for(let f=0;f<o.length-1;f++){const u=o[f],m=o[f+1];if(c>=u.threshold&&c<=m.threshold){const d=m.threshold-u.threshold,p=d>0?(c-u.threshold)/d:0;return l[f].weight=1-p,l[f+1].weight=p,l}}return l}function fe(n,i){const c=Number(i.get(n.parameter)??0),o=Number(i.get(n.parameterY??"")??0),l=n.children,f=l.map(d=>({clip:d.clip,weight:0}));let u=0;const m=[];for(const d of l){const p=c-d.threshold,w=o-(d.thresholdY??0),g=Math.sqrt(p*p+w*w),K=g<.001?1e3:1/g;m.push(K),u+=K}if(u>0)for(let d=0;d<f.length;d++)f[d].weight=m[d]/u;return f}function de(n){const i=n.children.map(o=>({clip:o.clip,weight:o.weight??0})),c=i.reduce((o,l)=>o+l.weight,0);if(c>0)for(const o of i)o.weight/=c;return i}export{M as AnimationBindingError,Se as bindXStateAnimation,ce as evaluateBlendTree,ae as machineOfXStateActor};
1
+ import{collectMachineAnimationMeta as V,clipNamesOf as L,isBlendTreeAnimationMeta as S,asBlendTreeDef as z}from"./xstate-animation-meta-CtUROKFq.js";import{cW as J,p as Z,c as _,cQ as ee,l as te,dk as ne,cf as ie,cd as oe}from"./three.core-3arARmh6.js";import"./index-JjEYIC4G.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";class M extends Error{constructor(i,c){super(i),this.stateId=c,this.name="AnimationBindingError"}}function ae(n){const i=n.logic;if(i?.root)return i;const c=n.getSnapshot();if(c?.machine?.root)return c.machine;throw new M("[bindXStateAnimation] the actor exposes no state machine — only a state-machine actor carries the `meta.animation` this binder reads")}const W=n=>n.layer??"base",B=n=>n.weight??1,I=n=>n.blendMode??"override";function T(n){try{return ne.parseTrackName(n.name).nodeName??""}catch{const i=n.name.indexOf(".");return i<0?n.name:n.name.slice(0,i)}}function C(n,i,c){const o=new Set,l=[];for(const f of i){let u=!1;n.traverse(m=>{m.name===f&&(u=!0,m.traverse(d=>{d.name&&o.add(d.name)}))}),c.has(f)&&(u=!0,o.add(f)),u||l.push(f)}return{names:o,missing:l}}function se(n,i,c,o){const l=new Set(n.tracks.map(T)),f=i.include?C(c,i.include,l):void 0,u=i.exclude?C(c,i.exclude,l):void 0,m=[...f?.missing??[],...u?.missing??[]];if(m.length)throw new M(`[bindXStateAnimation] state "${o}" boneMask names unknown bones/objects: ${m.join(", ")}`,o);const d=n.tracks.filter(p=>{const w=T(p);return(!f||f.names.has(w))&&!u?.names.has(w)});if(d.length===0)throw new M(`[bindXStateAnimation] state "${o}" boneMask removes every track from clip "${n.name}"`,o);return new te(n.name,n.duration,d.map(p=>p.clone()))}function re(n){return n.reduce((i,c)=>c.weight>i.weight?c:i,n[0])}function Se(n,i,c,o={}){const l=i.getRoot(),f=o.root??(l instanceof J?l:void 0);if(!f)throw new M("[bindXStateAnimation] a THREE.Object3D `root` option is required when the mixer uses AnimationObjectGroup");const u=ae(n).root,m=V(u),d=new Map(m.map(t=>[t.stateId,t.meta]));for(const t of m)for(const e of L(t.meta))if(!c.has(e))throw new M(`[bindXStateAnimation] state "${t.stateId}" references clip "${e}", which is not present in the supplied clips map. Known clips: ${[...c.keys()].join(", ")||"(none)"}`,t.stateId);const p=new Map;function w(t,e,s){return W(e)!=="base"||!!e.boneMask||I(e)==="additive"?`${t}\0${s}`:s}for(const{stateId:t,meta:e}of m)for(const s of L(e)){const a=w(t,e,s);if(p.has(a))continue;const r=c.get(s);let h=e.boneMask?se(r,e.boneMask,f,t):r;(h!==r||a!==s)&&(h===r&&(h=r.clone()),h.name=`${r.name}@${W(e)}:${t}`),I(e)==="additive"?(Z.makeClipAdditive(h),h.blendMode=_):h.blendMode=ee,p.set(a,h)}const g=new Map;function K(t,e,s,a){let r=g.get(t);if(!r){const h=p.get(t);if(!h)throw new M(`[bindXStateAnimation] prepared clip "${t}" not found`);const v=i.clipAction(h);v.setEffectiveWeight(0),v.play(),r={action:v,clip:h},g.set(t,r)}return r.action.setLoop(e?ie:oe,1/0),r.action.clampWhenFinished=!e,r.action.timeScale=s,r.action.weight=a,r.action}function N(t){const e=o.selectParameters?o.selectParameters(t):t;return new Map(Object.entries(e??{}))}function D(t,e,s){return(S(e)?ce(z(e.blendTree),N(s)):[{clip:e.clip,weight:1}]).map(({clip:r,weight:h})=>({clip:r,weight:h,actionKey:w(t,e,r)}))}const y=new Map;let O=!1;function R(t,e,s){for(const a of t){if(a.actionKey===e)continue;const r=g.get(a.actionKey)?.action;r&&(s>0?r.fadeOut(s):r.setEffectiveWeight(0))}}function k(t,e){if(!S(t.meta))return;t.natural=D(t.stateId,t.meta,e);const s=B(t.meta);for(const a of t.natural)g.get(a.actionKey)?.action.setEffectiveWeight(a.weight*s)}function P(t,e,s){const a=W(e),r=y.get(a)??null,h=D(t,e,s),v=re(h),H=S(e)?!0:e.loop,Q=S(e)?1:e.speed,x=B(e);for(const b of h)K(b.actionKey,H,Q,x);const $=g.get(v.actionKey).action;$.reset().setEffectiveWeight(x);for(const b of h)b.actionKey!==v.actionKey&&g.get(b.actionKey).action.reset().setEffectiveWeight(0);const A=e.crossfade?.duration??0,U=e.crossfade?.warp??!1;if(!r)A>0&&$.fadeIn(A);else{R(r.natural,r.dominantActionKey,A);const b=g.get(r.dominantActionKey)?.action;b&&A>0?b.crossFadeTo($,A,U):(b?.setEffectiveWeight(0),$.setEffectiveWeight(x))}const j={layer:a,stateId:t,meta:e,natural:h,dominantActionKey:v.actionKey,crossfadeRemaining:A};y.set(a,j),S(e)&&A<=0&&k(j,s)}function q(t){return Object.keys(t.getMeta()).filter(e=>d.has(e))}function X(t){const e=new Map;for(const s of q(t)){const a=d.get(s),r=W(a),h=e.get(r);if(h)throw new M(`[bindXStateAnimation] animated states "${h}" and "${s}" are both active on layer "${r}". Give parallel regions distinct meta.animation.layer names.`,s);e.set(r,s)}for(const[s,a]of y)e.has(s)||(R(a.natural,void 0,0),y.delete(s));for(const[s,a]of e)y.get(s)?.stateId!==a&&P(a,d.get(a),t.context)}const F=n.getSnapshot();X(F);const G=n.subscribe(t=>{O||X(t)});function E(t){if(O)return;const e=t,s=n.getSnapshot().context;for(const a of y.values())a.crossfadeRemaining>0?(a.crossfadeRemaining=Math.max(0,a.crossfadeRemaining-e),a.crossfadeRemaining<=0&&k(a,s)):k(a,s);i.update(e)}const Y={tick:E,actor:n,getParameters:()=>N(n.getSnapshot().context),getActiveLayers:()=>[...y.values()].map(t=>({layer:t.layer,stateId:t.stateId,clips:t.natural.map(e=>e.clip),clipWeights:t.natural.map(e=>({clip:e.clip,weight:g.get(e.actionKey)?.action.getEffectiveWeight()??0})),weight:B(t.meta),blendMode:I(t.meta),...t.meta.boneMask?{boneMask:t.meta.boneMask}:{}})),dispose(){if(!O){O=!0,o.systems?.remove("animation",E),G.unsubscribe();for(const{action:t,clip:e}of g.values())t.stop(),i.uncacheAction(e,t.getRoot());g.clear(),y.clear()}}};return o.systems?.add("animation",E),Y}function ce(n,i){switch(n.type){case"1D":return le(n,i);case"2D":return fe(n,i);case"direct":return de(n);default:return n.children.map(c=>({clip:c.clip,weight:1/n.children.length}))}}function le(n,i){const c=Number(i.get(n.parameter)??0),o=[...n.children].sort((f,u)=>f.threshold-u.threshold),l=o.map(f=>({clip:f.clip,weight:0}));if(o.length===0)return l;if(o.length===1||c<=o[0].threshold)return l[0].weight=1,l;if(c>=o[o.length-1].threshold)return l[l.length-1].weight=1,l;for(let f=0;f<o.length-1;f++){const u=o[f],m=o[f+1];if(c>=u.threshold&&c<=m.threshold){const d=m.threshold-u.threshold,p=d>0?(c-u.threshold)/d:0;return l[f].weight=1-p,l[f+1].weight=p,l}}return l}function fe(n,i){const c=Number(i.get(n.parameter)??0),o=Number(i.get(n.parameterY??"")??0),l=n.children,f=l.map(d=>({clip:d.clip,weight:0}));let u=0;const m=[];for(const d of l){const p=c-d.threshold,w=o-(d.thresholdY??0),g=Math.sqrt(p*p+w*w),K=g<.001?1e3:1/g;m.push(K),u+=K}if(u>0)for(let d=0;d<f.length;d++)f[d].weight=m[d]/u;return f}function de(n){const i=n.children.map(o=>({clip:o.clip,weight:o.weight??0})),c=i.reduce((o,l)=>o+l.weight,0);if(c>0)for(const o of i)o.weight/=c;return i}export{M as AnimationBindingError,Se as bindXStateAnimation,ce as evaluateBlendTree,ae as machineOfXStateActor};
@@ -1 +1 @@
1
- import{dY as b,dZ as u,t as o,u as l,v as n,w as c,bA as r,bz as m,by as f}from"./index-GOaZz_UJ.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";const d=o({clip:n().min(1).describe("Animation clip name this child plays"),threshold:r().describe("1D/2D blend position on the primary parameter axis"),thresholdY:r().optional().describe("2D blend position on the secondary parameter axis (2D blend trees only)"),weight:r().min(0).optional().describe('Explicit weight for "direct" blend trees (ignored by 1D/2D)')}).strict(),y=o({type:c("1D").describe("Interpolates linearly between sorted children by threshold"),parameter:n().min(1).describe("Context/selector value driving the blend"),children:l(d).min(2,"1D blend tree needs at least 2 children to interpolate between")}).strict(),v=o({type:c("2D").describe("Inverse-distance-weights children by (parameter, parameterY) position"),parameter:n().min(1).describe("Primary axis context/selector value"),parameterY:n().min(1).describe("Secondary axis context/selector value"),children:l(d.extend({thresholdY:r()})).min(1,"2D blend tree needs at least 1 child")}).strict(),A=o({type:c("direct").describe("Each child has an explicit weight, normalized to sum to 1"),parameter:n().default(""),children:l(d.extend({weight:r().min(0)})).min(1,"direct blend tree needs at least 1 child")}).strict(),g=b("type",[y,v,A]);function P(e){return e}const p=o({duration:r().min(0).default(0).describe("Seconds to blend from the previously active clip into this state on entry, applied via native `AnimationAction.crossFadeTo`/`fadeIn` (E2). 0 = instant activation, no fade."),warp:m().default(!1).describe("Passed through to AnimationAction.crossFadeTo's `warp` param — linearly warps timeScale across the two clips during the blend so differing clip lengths line up. Default false.")}).strict().describe("Blend-in/out/crossfade timing for entering this state"),x=o({include:l(n().min(1)).min(1).optional().describe("Bone/object names whose complete descendant subtrees are retained"),exclude:l(n().min(1)).min(1).optional().describe("Bone/object names whose complete descendant subtrees are removed")}).strict().refine(e=>!!(e.include?.length||e.exclude?.length),{message:"boneMask needs at least one include or exclude bone name"}).describe("Filters animation tracks by named Object3D/Bone subtrees"),h={layer:n().min(1).optional().describe("Composition layer name; omitted means the single base layer"),weight:r().min(0).max(1).optional().describe("Layer weight multiplier from 0 to 1; defaults to 1"),blendMode:f(["override","additive"]).optional().describe("Native Three normal/override or additive action blending; defaults to override"),boneMask:x.optional().describe("Optional include/exclude filter applied to every clip track in this state")},w=o({clip:n().min(1).describe("Single clip to play while this XState state is active"),loop:m().default(!0).describe("Loop the clip (THREE.LoopRepeat) vs play once (THREE.LoopOnce, clamped on last frame)"),speed:r().positive().default(1).describe("Playback speed multiplier (AnimationAction.timeScale)"),crossfade:p.optional(),...h}).strict(),S=o({blendTree:g.describe("Multiple clips blended by a live context/selector-driven parameter"),crossfade:p.optional(),...h}).strict(),D=u([w,S]);function M(e){return"clip"in e}function $(e){return"blendTree"in e}class T extends Error{constructor(a,i,t){super(a),this.stateId=i,this.issues=t,this.name="AnimationMetaValidationError"}}function B(e,a){const i=D.safeParse(a);if(!i.success){const t=i.error.issues.map(s=>`${s.path.length?s.path.join("."):"(root)"}: ${s.message}`).join("; ");throw new T(`[xstate-animation] invalid meta.animation for state "${e}": ${t}`,e,i.error.issues)}return i.data}function R(e){const a=[],i=t=>{t.meta&&"animation"in t.meta&&t.meta.animation!==void 0&&a.push({stateId:t.id,meta:B(t.id,t.meta.animation)});for(const s of Object.values(t.states??{}))i(s)};return i(e),a}function z(e){return M(e)?[e.clip]:e.blendTree.children.map(a=>a.clip)}export{g as AnimationBlendTreeSchema,T as AnimationMetaValidationError,D as StateAnimationMetaSchema,P as asBlendTreeDef,z as clipNamesOf,R as collectMachineAnimationMeta,$ as isBlendTreeAnimationMeta,M as isClipAnimationMeta,B as parseStateAnimationMeta};
1
+ import{dY as b,dZ as u,t as o,u as l,v as n,w as c,bA as r,bz as m,by as f}from"./index-JjEYIC4G.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";const d=o({clip:n().min(1).describe("Animation clip name this child plays"),threshold:r().describe("1D/2D blend position on the primary parameter axis"),thresholdY:r().optional().describe("2D blend position on the secondary parameter axis (2D blend trees only)"),weight:r().min(0).optional().describe('Explicit weight for "direct" blend trees (ignored by 1D/2D)')}).strict(),y=o({type:c("1D").describe("Interpolates linearly between sorted children by threshold"),parameter:n().min(1).describe("Context/selector value driving the blend"),children:l(d).min(2,"1D blend tree needs at least 2 children to interpolate between")}).strict(),v=o({type:c("2D").describe("Inverse-distance-weights children by (parameter, parameterY) position"),parameter:n().min(1).describe("Primary axis context/selector value"),parameterY:n().min(1).describe("Secondary axis context/selector value"),children:l(d.extend({thresholdY:r()})).min(1,"2D blend tree needs at least 1 child")}).strict(),A=o({type:c("direct").describe("Each child has an explicit weight, normalized to sum to 1"),parameter:n().default(""),children:l(d.extend({weight:r().min(0)})).min(1,"direct blend tree needs at least 1 child")}).strict(),g=b("type",[y,v,A]);function P(e){return e}const p=o({duration:r().min(0).default(0).describe("Seconds to blend from the previously active clip into this state on entry, applied via native `AnimationAction.crossFadeTo`/`fadeIn` (E2). 0 = instant activation, no fade."),warp:m().default(!1).describe("Passed through to AnimationAction.crossFadeTo's `warp` param — linearly warps timeScale across the two clips during the blend so differing clip lengths line up. Default false.")}).strict().describe("Blend-in/out/crossfade timing for entering this state"),x=o({include:l(n().min(1)).min(1).optional().describe("Bone/object names whose complete descendant subtrees are retained"),exclude:l(n().min(1)).min(1).optional().describe("Bone/object names whose complete descendant subtrees are removed")}).strict().refine(e=>!!(e.include?.length||e.exclude?.length),{message:"boneMask needs at least one include or exclude bone name"}).describe("Filters animation tracks by named Object3D/Bone subtrees"),h={layer:n().min(1).optional().describe("Composition layer name; omitted means the single base layer"),weight:r().min(0).max(1).optional().describe("Layer weight multiplier from 0 to 1; defaults to 1"),blendMode:f(["override","additive"]).optional().describe("Native Three normal/override or additive action blending; defaults to override"),boneMask:x.optional().describe("Optional include/exclude filter applied to every clip track in this state")},w=o({clip:n().min(1).describe("Single clip to play while this XState state is active"),loop:m().default(!0).describe("Loop the clip (THREE.LoopRepeat) vs play once (THREE.LoopOnce, clamped on last frame)"),speed:r().positive().default(1).describe("Playback speed multiplier (AnimationAction.timeScale)"),crossfade:p.optional(),...h}).strict(),S=o({blendTree:g.describe("Multiple clips blended by a live context/selector-driven parameter"),crossfade:p.optional(),...h}).strict(),D=u([w,S]);function M(e){return"clip"in e}function $(e){return"blendTree"in e}class T extends Error{constructor(a,i,t){super(a),this.stateId=i,this.issues=t,this.name="AnimationMetaValidationError"}}function B(e,a){const i=D.safeParse(a);if(!i.success){const t=i.error.issues.map(s=>`${s.path.length?s.path.join("."):"(root)"}: ${s.message}`).join("; ");throw new T(`[xstate-animation] invalid meta.animation for state "${e}": ${t}`,e,i.error.issues)}return i.data}function R(e){const a=[],i=t=>{t.meta&&"animation"in t.meta&&t.meta.animation!==void 0&&a.push({stateId:t.id,meta:B(t.id,t.meta.animation)});for(const s of Object.values(t.states??{}))i(s)};return i(e),a}function z(e){return M(e)?[e.clip]:e.blendTree.children.map(a=>a.clip)}export{g as AnimationBlendTreeSchema,T as AnimationMetaValidationError,D as StateAnimationMetaSchema,P as asBlendTreeDef,z as clipNamesOf,R as collectMachineAnimationMeta,$ as isBlendTreeAnimationMeta,M as isClipAnimationMeta,B as parseStateAnimationMeta};
package/dist-node/cli.js CHANGED
@@ -2310,7 +2310,7 @@ import { fileURLToPath as fileURLToPath2 } from "node:url";
2310
2310
  var package_default = {
2311
2311
  name: "@volter/game-editor",
2312
2312
  author: "Volter AI, Inc.",
2313
- version: "0.5.77",
2313
+ version: "0.5.79",
2314
2314
  publishConfig: {
2315
2315
  access: "public"
2316
2316
  },
@@ -2359,22 +2359,22 @@ var package_default = {
2359
2359
  }
2360
2360
  },
2361
2361
  dependencies: {
2362
- "@volter/editor-core": "0.5.77",
2363
- "@volter/editor-game": "0.5.77",
2364
- "@volter/editor-react": "0.5.77",
2365
- "@volter/editor-threejs": "0.5.77",
2366
- "@volter/editor-xstate": "0.5.77",
2367
- "@volter/editor-blender": "0.1.17",
2368
- "@volter/dawproject": "0.5.77",
2369
- "@volter/editor-dawproject": "0.5.77",
2370
- "@volter/blender-engine": "0.1.15",
2371
- "@volter/editor-project": "0.5.77",
2372
- "@volter/editor-sdk": "0.5.77",
2373
- "@volter/editor-live": "0.5.77",
2374
- "@volter/game-live": "0.5.77",
2362
+ "@volter/editor-core": "0.5.79",
2363
+ "@volter/editor-game": "0.5.79",
2364
+ "@volter/editor-react": "0.5.79",
2365
+ "@volter/editor-threejs": "0.5.79",
2366
+ "@volter/editor-xstate": "0.5.79",
2367
+ "@volter/editor-blender": "0.1.19",
2368
+ "@volter/dawproject": "0.5.79",
2369
+ "@volter/editor-dawproject": "0.5.79",
2370
+ "@volter/blender-engine": "0.1.17",
2371
+ "@volter/editor-project": "0.5.79",
2372
+ "@volter/editor-sdk": "0.5.79",
2373
+ "@volter/editor-live": "0.5.79",
2374
+ "@volter/game-live": "0.5.79",
2375
2375
  "@modelcontextprotocol/sdk": "1.30.0",
2376
- "@volter/game-runtime": "0.5.77",
2377
- "@volter/threejs-runtime": "0.5.77",
2376
+ "@volter/game-runtime": "0.5.79",
2377
+ "@volter/threejs-runtime": "0.5.79",
2378
2378
  undici: "7.29.1",
2379
2379
  typescript: "5.9.3",
2380
2380
  "@colyseus/schema": "^4.0.14",
@@ -2396,7 +2396,7 @@ var package_default = {
2396
2396
  storybook: "10.6.0",
2397
2397
  tsx: "^4.23.0",
2398
2398
  vite: "^6.4.3",
2399
- ztrack: "^1.5.10",
2399
+ "@volter/ztrack": "^2.0.0",
2400
2400
  "three-bvh-csg": "^0.0.18",
2401
2401
  "three-mesh-bvh": "^0.9.12",
2402
2402
  "@pixi/react": "8.0.5",
@@ -5124,7 +5124,7 @@ function pinSharedDependencyVersions(pkg, engineDir, monoRoot, fallbackDir) {
5124
5124
  }
5125
5125
  }
5126
5126
  }
5127
- var STANDALONE_PINNED_DEPENDENCIES = ["@playwright/test", "ztrack"];
5127
+ var STANDALONE_PINNED_DEPENDENCIES = ["@playwright/test", "@volter/ztrack"];
5128
5128
  function pinStandaloneDependencyVersions(pkg, monoRoot) {
5129
5129
  const deps = pkg.devDependencies;
5130
5130
  if (!deps) return;
@@ -2575,7 +2575,7 @@ function pinSharedDependencyVersions(pkg, engineDir, monoRoot, fallbackDir) {
2575
2575
  }
2576
2576
  }
2577
2577
  }
2578
- var STANDALONE_PINNED_DEPENDENCIES = ["@playwright/test", "ztrack"];
2578
+ var STANDALONE_PINNED_DEPENDENCIES = ["@playwright/test", "@volter/ztrack"];
2579
2579
  function pinStandaloneDependencyVersions(pkg, monoRoot) {
2580
2580
  const deps = pkg.devDependencies;
2581
2581
  if (!deps) return;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@volter/game-editor",
3
3
  "author": "Volter AI, Inc.",
4
- "version": "0.5.77",
4
+ "version": "0.5.79",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -50,22 +50,22 @@
50
50
  }
51
51
  },
52
52
  "dependencies": {
53
- "@volter/editor-core": "0.5.77",
54
- "@volter/editor-game": "0.5.77",
55
- "@volter/editor-react": "0.5.77",
56
- "@volter/editor-threejs": "0.5.77",
57
- "@volter/editor-xstate": "0.5.77",
58
- "@volter/editor-blender": "0.1.17",
59
- "@volter/dawproject": "0.5.77",
60
- "@volter/editor-dawproject": "0.5.77",
61
- "@volter/blender-engine": "0.1.15",
62
- "@volter/editor-project": "0.5.77",
63
- "@volter/editor-sdk": "0.5.77",
64
- "@volter/editor-live": "0.5.77",
65
- "@volter/game-live": "0.5.77",
53
+ "@volter/editor-core": "0.5.79",
54
+ "@volter/editor-game": "0.5.79",
55
+ "@volter/editor-react": "0.5.79",
56
+ "@volter/editor-threejs": "0.5.79",
57
+ "@volter/editor-xstate": "0.5.79",
58
+ "@volter/editor-blender": "0.1.19",
59
+ "@volter/dawproject": "0.5.79",
60
+ "@volter/editor-dawproject": "0.5.79",
61
+ "@volter/blender-engine": "0.1.17",
62
+ "@volter/editor-project": "0.5.79",
63
+ "@volter/editor-sdk": "0.5.79",
64
+ "@volter/editor-live": "0.5.79",
65
+ "@volter/game-live": "0.5.79",
66
66
  "@modelcontextprotocol/sdk": "1.30.0",
67
- "@volter/game-runtime": "0.5.77",
68
- "@volter/threejs-runtime": "0.5.77",
67
+ "@volter/game-runtime": "0.5.79",
68
+ "@volter/threejs-runtime": "0.5.79",
69
69
  "undici": "7.29.1",
70
70
  "typescript": "5.9.3",
71
71
  "@colyseus/schema": "^4.0.14",
@@ -87,7 +87,7 @@
87
87
  "storybook": "10.6.0",
88
88
  "tsx": "^4.23.0",
89
89
  "vite": "^6.4.3",
90
- "ztrack": "^1.5.10",
90
+ "@volter/ztrack": "^2.0.0",
91
91
  "three-bvh-csg": "^0.0.18",
92
92
  "three-mesh-bvh": "^0.9.12",
93
93
  "@pixi/react": "8.0.5",
@@ -7,12 +7,12 @@
7
7
  // id) PLUS preset-specific strict fields (a status enum, AC `text`, evidence
8
8
  // `commit`). No passthrough, no unknown.
9
9
 
10
- // A STANDALONE preset: imports ONLY the public mechanism from `ztrack/preset-kit`.
10
+ // A STANDALONE preset: imports ONLY the public mechanism from `@volter/ztrack/preset-kit`.
11
11
  import {
12
12
  z, toMdast, nodeText, type MdNode,
13
13
  check as runCheck, rule, gitWorld,
14
14
  type Context, type IssueColumns, type IssueRecord, type Preset, type VisualizerSpec,
15
- } from 'ztrack/preset-kit';
15
+ } from '@volter/ztrack/preset-kit';
16
16
 
17
17
  // ── the hard schema (core + preset-specific, all strict) ────────────────────
18
18
  export const SpecEvidenceSchema = z.object({
@@ -145,7 +145,7 @@ const SPEC_RULES = [
145
145
  // with just id/text (no version, no proof, no image/acVersion-bearing evidence — see
146
146
  // SpecAcSchema/SpecEvidenceSchema above). Only map fields this schema actually has; a mapping
147
147
  // this preset can't back with a real field (pr, acProof, acEvidence) is simply omitted. Field
148
- // references and literal labels ONLY (see `VisualizerSpec`, `ztrack/preset-kit`) — no functions,
148
+ // references and literal labels ONLY (see `VisualizerSpec`, `@volter/ztrack/preset-kit`) — no functions,
149
149
  // no markup. Installed into your repo verbatim: edit freely, keeping statusOrder in sync with
150
150
  // SpecIssueStatusSchema above (`boilerplates/presets/visualizerVocabulary.test.ts` checks that).
151
151
  const SPEC_VISUALIZER: VisualizerSpec = {
@@ -8,12 +8,12 @@
8
8
  // id) PLUS preset-specific strict fields (a status enum, AC `text`, evidence
9
9
  // `commit`). No passthrough, no unknown.
10
10
 
11
- // A STANDALONE preset: imports ONLY the public mechanism from `ztrack/preset-kit`.
11
+ // A STANDALONE preset: imports ONLY the public mechanism from `@volter/ztrack/preset-kit`.
12
12
  import {
13
13
  z, toMdast, nodeText, type MdNode,
14
14
  check as runCheck, rule, gitWorld,
15
15
  type Context, type IssueColumns, type IssueRecord, type Preset, type VisualizerSpec,
16
- } from 'ztrack/preset-kit';
16
+ } from '@volter/ztrack/preset-kit';
17
17
 
18
18
  // ── the hard schema (core + preset-specific, all strict) ────────────────────
19
19
  export const SpecEvidenceSchema = z.object({
@@ -152,7 +152,7 @@ const SPEC_RULES = [
152
152
  // with just id/text (no version, no proof, no image/acVersion-bearing evidence — see
153
153
  // SpecAcSchema/SpecEvidenceSchema above). Only map fields this schema actually has; a mapping
154
154
  // this preset can't back with a real field (pr, acProof, acEvidence) is simply omitted. Field
155
- // references and literal labels ONLY (see `VisualizerSpec`, `ztrack/preset-kit`) — no functions,
155
+ // references and literal labels ONLY (see `VisualizerSpec`, `@volter/ztrack/preset-kit`) — no functions,
156
156
  // no markup. Installed into your repo verbatim: edit freely, keeping statusOrder in sync with
157
157
  // SpecIssueStatusSchema above (`boilerplates/presets/visualizerVocabulary.test.ts` checks that).
158
158
  const SPEC_VISUALIZER: VisualizerSpec = {
@@ -2,13 +2,13 @@
2
2
  // board automatically — no config, no restart. Every member below is optional; this file ships
3
3
  // as a no-op, so the stock board is what you get until you fill one in.
4
4
  //
5
- // import { defineVisualizerExtension } from 'ztrack/visualizer-kit';
5
+ // import { defineVisualizerExtension } from '@volter/ztrack/visualizer-kit';
6
6
  //
7
7
  // export default defineVisualizerExtension({
8
8
  // issuePanels: (issue) => <section className="panel">...</section>,
9
9
  // acText: (ac) => ac.id,
10
10
  // });
11
11
 
12
- import { defineVisualizerExtension } from 'ztrack/visualizer-kit';
12
+ import { defineVisualizerExtension } from '@volter/ztrack/visualizer-kit';
13
13
 
14
14
  export default defineVisualizerExtension({});
@@ -2,13 +2,13 @@
2
2
  // board automatically — no config, no restart. Every member below is optional; this file ships
3
3
  // as a no-op, so the stock board is what you get until you fill one in.
4
4
  //
5
- // import { defineVisualizerExtension } from 'ztrack/visualizer-kit';
5
+ // import { defineVisualizerExtension } from '@volter/ztrack/visualizer-kit';
6
6
  //
7
7
  // export default defineVisualizerExtension({
8
8
  // issuePanels: (issue) => <section className="panel">...</section>,
9
9
  // acText: (ac) => ac.id,
10
10
  // });
11
11
 
12
- import { defineVisualizerExtension } from 'ztrack/visualizer-kit';
12
+ import { defineVisualizerExtension } from '@volter/ztrack/visualizer-kit';
13
13
 
14
14
  export default defineVisualizerExtension({});
@@ -52,7 +52,7 @@
52
52
  "tsx": "^4.23.0",
53
53
  "typescript": "^5.6.0",
54
54
  "vite": "^6.4.3",
55
- "ztrack": "^1.5.10"
55
+ "@volter/ztrack": "^2.0.0"
56
56
  },
57
57
  "overrides": {
58
58
  "@react-three/drei": {
@@ -1 +0,0 @@
1
- import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{Object3DSnapshotDocument as m}from"./EntityModelDocument--Mnf5gfu.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./editor-shell-store-C04XLLU-.js";import"./output-pass-HurwNl0G.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./Pass-D1MRT672.js";import"./editor-layers-BpAhxn0P.js";import"./workspace-arrangement-BjHQJUoD.js";import"./index-GOaZz_UJ.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./user-data-BDBZj06-.js";import"./entity-object-DsAYI3gJ.js";import"./three-contract-Dkt6PmWY.js";import"./live-mixers-B-bwLZ7c.js";import"./asset-preview-C-SzfMmZ.js";import"./renderer-ownership-BovSEcLv.js";import"./hierarchy-marks-MeNgbwiP.js";import"./studio-environment-BiC6OVkT.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./bitmap-label-Ct4k6ehY.js";import"./StageHost-eSViLdbz.js";import"./three-state-CzjS3Z7g.js";import"./standard-viewport-dressing-D4bfoK0I.js";import"./content-bounds-IMXYkN3x.js";import"./preview-renderer-BrYNFV1p.js";import"./live-gesture-lock-DJbrjOqf.js";import"./model-inspection-B0GymTL8.js";import"./three-viewport-presentation-OxBEdgIP.js";import"./clip-planes-CnAI6DZn.js";import"./three-CQcV_QdT.js";import"./component-instance-root-BZXekKMG.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./model-thumbnail-C6xWKVgL.js";import"./OrbitControls-B13MKuwC.js";import"./LineSegments2-DN9pUfWA.js";import"./three.quarks.esm-C_HmSKXo.js";import"./three-integration-BjEyDiTB.js";import"./host-hierarchy-objects-BV3WqU2w.js";import"./layered-pick-B3AjYd-G.js";import"./root-stacking-BEd9ZvxC.js";import"./object3d-document-session-registry-q7c_gezv.js";import"./viewport-door-Slxb_SvE.js";import"./scene-framing-B5dto0bO.js";import"./source-object3d-authoring-adapter-D6uGhge2.js";import"./three-projection-core-CkmVzWhv.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./transport-strip-D55r6FTk.js";import"./viewport-surface-status-C4UZ_Uq4.js";function ut({previewKey:o,object:r,displayName:i,fill:p=!1}){return t.jsx("div",{"data-testid":"inspector-object-preview",style:p?{position:"absolute",inset:0,overflow:"hidden"}:{width:"100%",height:220,minHeight:220,borderBottom:"1px solid var(--volter-structural-divider)",overflow:"hidden",position:"relative"},children:t.jsx(m,{documentId:`inspector-preview:${o}`,source:r,displayName:i,active:!0,chromeless:!0})})}export{ut as InspectorObjectPreview};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/StageHost-eSViLdbz.js","assets/index-GOaZz_UJ.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/three-state-CzjS3Z7g.js","assets/editor-shell-store-C04XLLU-.js","assets/output-pass-HurwNl0G.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/Pass-D1MRT672.js","assets/editor-layers-BpAhxn0P.js","assets/workspace-arrangement-BjHQJUoD.js","assets/user-data-BDBZj06-.js","assets/entity-object-DsAYI3gJ.js","assets/three-contract-Dkt6PmWY.js","assets/standard-viewport-dressing-D4bfoK0I.js","assets/content-bounds-IMXYkN3x.js","assets/hierarchy-marks-MeNgbwiP.js","assets/environment-Dg-YaLsA.js","assets/RoomEnvironment-BkknvS_I.js","assets/EXRLoader-CITMBvGd.js","assets/HDRLoader-BTGuGhVo.js","assets/preview-renderer-BrYNFV1p.js","assets/renderer-ownership-BovSEcLv.js","assets/live-mixers-B-bwLZ7c.js","assets/live-gesture-lock-DJbrjOqf.js","assets/model-inspection-B0GymTL8.js","assets/three-viewport-presentation-OxBEdgIP.js","assets/clip-planes-CnAI6DZn.js","assets/three-CQcV_QdT.js","assets/component-instance-root-BZXekKMG.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/model-thumbnail-C6xWKVgL.js","assets/studio-environment-BiC6OVkT.js","assets/KTX2Loader-CaqVE6nY.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/OrbitControls-B13MKuwC.js","assets/LineSegments2-DN9pUfWA.js","assets/three.quarks.esm-C_HmSKXo.js","assets/three-integration-BjEyDiTB.js","assets/host-hierarchy-objects-BV3WqU2w.js","assets/layered-pick-B3AjYd-G.js","assets/root-stacking-BEd9ZvxC.js","assets/object3d-document-session-registry-q7c_gezv.js","assets/viewport-door-Slxb_SvE.js","assets/asset-preview-C-SzfMmZ.js","assets/bitmap-label-Ct4k6ehY.js","assets/scene-framing-B5dto0bO.js","assets/source-object3d-authoring-adapter-D6uGhge2.js","assets/three-projection-core-CkmVzWhv.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/transport-strip-D55r6FTk.js","assets/viewport-surface-status-C4UZ_Uq4.js"])))=>i.map(i=>d[i]);
2
- import{ae as r,_ as a}from"./index-GOaZz_UJ.js";import{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{r as n}from"./index-nmcBqr7Y.js";import{V as c,O as u}from"./viewport-surface-status-C4UZ_Uq4.js";const s=n.lazy(async()=>({default:(await a(()=>import("./StageHost-eSViLdbz.js").then(e=>e.S),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60]))).Object3DDocumentViewport}));function l(t){return i(t.documentId,t.chromeless),o.jsx(n.Suspense,{fallback:o.jsx(c,{testId:"object3d-document-loading",children:u}),children:o.jsx(s,{...t})})}function i(t,e=!1){n.useEffect(()=>{if(!e)return r(t)},[t,e])}export{l as O};
@@ -1 +0,0 @@
1
- import{J as i,r as m}from"./index-GOaZz_UJ.js";import{e as p}from"./game-network-C3D1ib_r.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-qMZlzFCw.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-D4XNZdHk.js";import"./contract-system-adapters-DAgN02qJ.js";import"./game-contract-seams-Kcb8YGio.js";import"./seeded-random-WDTtjPze.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-CYeuVCYr.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-bQE2NA0D.js";import"./live-project-verbs-DR_q7RK-.js";import"./capability-coverage-DiBzUjdM.js";import"./edit-mode-authoring-BGGW26LN.js";import"./json-history-resource-Cby5jKsw.js";import"./binding-resolver-CGsJLZOI.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-DbZYHQSf.js";import"./canvas-entry-runtime-cJsqLXEp.js";import"./three-ingest-runtime-E3dJH9KF.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./active-ingest-B0RHbDkD.js";import"./ingest-source-persistence-DM9T5S4m.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-B6vzusDX.js";import"./mounted-authoring-CZw66UYV.js";import"./entity-object-DsAYI3gJ.js";import"./user-data-BDBZj06-.js";import"./workspace-arrangement-BjHQJUoD.js";import"./three-contract-Dkt6PmWY.js";import"./three-CQcV_QdT.js";import"./editor-layers-BpAhxn0P.js";import"./component-instance-root-BZXekKMG.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-D3qfWIRk.js";import"./source-persistence-backend-CxVBXGoQ.js";import"./three-projection-core-CkmVzWhv.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-Dc4KkqeK.js";import"./deferred-ingest-play-CrBHt1VV.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-4sStON8E.js";import"./board-guides-DUTllrm6.js";import"./relative-import-specifier-B0yhWWcj.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-CD61yjth.js";import"./inference-diagnostics-DH6OpJZI.js";import"./writer-tw6EcuVO.js";import"./three-state-CzjS3Z7g.js";import"./editor-shell-store-C04XLLU-.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-Slxb_SvE.js";import"./game-surface-defaults-D8S4cRxi.js";const Rt="workspace.service";function e(o){p().catch(t=>{m().console.error(`${o}: ${t instanceof Error?t.message:String(t)}`,"play")})}function Ut(){let o,t=!1;const r=i(()=>{t||new URLSearchParams(window.location.search).get("play")==="1"&&(t=!0,o=window.setTimeout(()=>e("Could not enter requested Play mode"),0))});return()=>{o!==void 0&&window.clearTimeout(o),r()}}export{Rt as point,Ut as start};
@@ -1,2 +0,0 @@
1
- import{b as y,a as k,S as p,P as _,s as P,o as B}from"./worker-jepHAPPr.js";import{s as A}from"./session-CeyQA0Dv.js";async function $(o){const a=await fetch(o);if(!a.ok)throw new Error(`${o}: HTTP ${a.status}`);const e=await a.text(),r={exports:{}},i=new Function("module","exports","define",`${e}
2
- return typeof createBlenderModule === 'function' ? createBlenderModule : module.exports;`)(r,r.exports,void 0);if(typeof i!="function")throw new Error("blender_browser.js did not produce a module factory");return i}const I=new TextEncoder;function N(o,a){let e="";for(const r of a.split("/").filter(Boolean))o.FS_createPath(e||"/",r,!0,!0),e+=`/${r}`}function D(o){const a=o.FS;return{readFile:async e=>a.readFile(e),writeFile:async(e,r)=>a.writeFile(e,r),mkdirTree:async e=>a.mkdirTree(e),readdir:async e=>a.readdir(e),stat:async e=>{let r;try{r=a.stat(e)}catch{return null}const n=r.mtime;return{size:r.size,mode:r.mode??0,mtimeMs:typeof n=="number"?n:n?.getTime()??0}},unlink:async e=>a.unlink(e)}}const L="volter-blender-artifacts";async function m(o,a){const e=y(o);if(!a||typeof caches>"u")return fetch(e);const r=`${e}?sha256=${a}`,n=await caches.open(L),i=await n.match(r);if(i)return i;const l=await fetch(e);if(!l.ok)return l;for(const c of await n.keys())c.url.startsWith(`${e}?sha256=`)&&c.url!==r&&await n.delete(c);const s=new Response(await l.blob(),{headers:{"content-type":l.headers.get("content-type")??"application/octet-stream"}});return await n.put(r,s.clone()),s}async function C(o,a){if(!self.crossOriginIsolated)throw new Error("Headless Blender needs SharedArrayBuffer, so the editor page has to be cross-origin isolated (Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy on every response). This worker reports crossOriginIsolated=false.");const e=y("blender_browser.js"),r=a.digests??{},[n,i]=await Promise.all([$(e),m("blender_browser.data",r["blender_browser.data"]).then(async t=>{if(!t.ok)throw new Error(`blender_browser.data: HTTP ${t.status}`);return t.arrayBuffer()})]);let l=null;const s=performance.now();let c=null;const u=(t,f)=>{f.startsWith("@@VOLTER-READY ")&&(c=f.slice(15)),o.log(f.startsWith("@@VOLTER-WARN")||f.startsWith("@@VOLTER-ERROR")?"error":"log",f)},d=await n({arguments:["--background","--factory-startup","--python",k],locateFile:t=>y(t),getPreloadedPackage:()=>i,instantiateWasm:(t,f)=>((async()=>{const w=await m("blender_browser.wasm",r["blender_browser.wasm"]);if(!w.ok)throw new Error(`blender_browser.wasm: HTTP ${w.status}`);const{instance:O,module:F}=await WebAssembly.instantiateStreaming(w,t);f(O,F)})().catch(w=>{l=w}),{}),mainScriptUrlOrBlob:e,print:t=>u("log",t),printErr:t=>u("error",t),preRun:[t=>{t.ENV??={},Object.assign(t.ENV,{BLENDER_SYSTEM_RESOURCES:"/bw",BLENDER_SYSTEM_PYTHON:"/bw/python",BLENDER_SYSTEM_SCRIPTS:"/bw/scripts",BLENDER_SYSTEM_DATAFILES:"/bw/datafiles",VOLTER_SESSION_ROOT:p,HOME:"/root",TMPDIR:"/tmp"});for(const f of["/tmp","/root","/work",p,..._,o.project])N(t,f);t.FS_createDataFile(p,"session.py",I.encode(A),!0,!0,!0)}]});for(;c===null;){if(l)throw l instanceof Error?l:new Error(String(l));await P(5)}const g=performance.now()-s,T=JSON.parse(c);let E=null;if(typeof d.releasePreloadedFileData=="function"){const t=d.releasePreloadedFileData();E=t.bytes,o.log("log",`blender: released the preloaded ${(t.bytes/1048576).toFixed(0)} MB payload (${t.files} files); WasmFS already holds it`)}else o.log("error","blender: this bundle has no releasePreloadedFileData, so the ~55 MB packed .data payload stays resident beside the copy WasmFS made of it — relink with the recipe's --post-js (recipe/release-preloaded-file-data.js).");const h=d.FS;let S="";for(const t of`${o.project}`.split("/").filter(Boolean)){S+=`/${t}`;try{h.chmod(S,511)}catch{}}for(const t of["/work","/tmp","/root",p,..._])try{h.chmod(t,511)}catch{}const b=D(d);h.chmod("/bw/datafiles",493),await M(b,r["essentials.bin"]);const{request:R}=B(b,o);return{skew:"emscripten",banner:T,files:b,request:R,readArena:async()=>d.HEAPU8.subarray(d._blender_web_export_buffer(),d._blender_web_export_buffer()+d._blender_web_export_buffer_size()),bootMs:g,memoryBytes:()=>d.HEAPU8.length,releasedPayloadBytes:E}}async function M(o,a){const[e,r]=await Promise.all([fetch(y("essentials.json")),m("essentials.bin",a)]);if(!e.ok||!r.ok)throw new Error(`Blender Essentials assets are missing (${e.status}/${r.status})`);const n=await e.json(),i=await r.arrayBuffer(),l=Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",i)),s=>s.toString(16).padStart(2,"0")).join("");if(i.byteLength!==n.bytes||l!==n.sha256)throw new Error("Blender Essentials payload does not match its source manifest");for(const s of n.files){if(!s.path||s.path.includes("\\")||s.path.split("/").some(u=>!u||u==="."||u==="..")||!Number.isInteger(s.offset)||!Number.isInteger(s.bytes)||s.offset<0||s.bytes<0||s.offset+s.bytes>i.byteLength)throw new Error(`Invalid Blender Essentials file: ${s.path}`);const c=`/bw/datafiles/assets/${s.path}`;await o.mkdirTree(c.slice(0,c.lastIndexOf("/"))),await o.writeFile(c,new Uint8Array(i,s.offset,s.bytes))}}export{C as startEmscriptenBlenderEngine};
@@ -1,2 +0,0 @@
1
- import{S as h,P as k,a as f,b as E,s as A,A as R,o as B}from"./worker-jepHAPPr.js";import{s as L}from"./session-CeyQA0Dv.js";const d="/bw",g=`${h}/frame.bin`;async function p(e){const r=E(`wali/${e}`);try{return await import(r)}catch(n){throw new Error(`The substrate skew needs ${e}, which this editor serves from the WALI pack directory beside blender.wasm (${r}): ${n instanceof Error?n.message:String(n)}`)}}async function P(e,r){const n=performance.now(),y=await fetch(E("runtime.idx"));if(!y.ok)throw new Error(`${R}/runtime.idx answered ${y.status}`);const m=await y.json(),w=await fetch(E("runtime.bin"));if(!w.ok)throw new Error(`${R}/runtime.bin answered ${w.status}`);const s=new Uint8Array(await w.arrayBuffer());let t=0;for(const i of m.files){if(t+i.size>s.byteLength)throw new Error(`Blender runtime ${i.path}: bytes ${t}..${t+i.size} lie outside the ${s.byteLength}-byte runtime blob`);const l=`${d}/${i.path}`;e.mkdirSync(l.slice(0,l.lastIndexOf("/")),{recursive:!0}),e.writeFileSync(l,s.subarray(t,t+i.size)),t+=i.size}if(t!==s.byteLength)throw new Error(`Blender runtime index accounts for ${t} of the ${s.byteLength} bytes served`);const a=Math.round(performance.now()-n);return r("log",`blender: staged Blender's ${m.files.length}-file runtime tree in ${a} ms`),{files:m.files.length,bytes:s.byteLength,ms:a}}function _(e){return{readFile:r=>e.readFile(r),writeFile:async(r,n)=>e.writeFileSync(r,n),mkdirTree:async r=>e.mkdirSync(r,{recursive:!0}),readdir:async r=>e.readdirSync(r),stat:async r=>{if(!e.existsSync(r))return null;const n=e.statSync(r);return{size:n.size,mode:n.mode&4095|(n.isDirectory()?16384:32768),mtimeMs:n.mtimeMs}},unlink:async r=>e.unlinkSync(r)}}async function N(e,r){const n=performance.now(),[y,m]=await Promise.all([p("browser-wali/worker-program.js"),p("browser-runtime/browser-memory-filesystem.js")]),w=y.BrowserWaliWorkerProgram,s=m.BrowserMemoryFileSystem;if(!w||!s)throw new Error("The substrate modules this editor served do not export BrowserWaliWorkerProgram and BrowserMemoryFileSystem; the WALI pack directory holds a browser-substrate this engine does not know.");const t=new s;for(const o of["/tmp","/root","/work",h,...k,e.project])t.mkdirSync(o,{recursive:!0});await P(t,e.log),t.writeFileSync(f,L);const a=r.workers??{pool:16,blender:4},i=new w(t,{url:E("blender.wasm"),...r.integrity?{integrity:r.integrity}:{},cwd:"/work",env:{HOME:"/root",TMPDIR:"/tmp",PATH:"/usr/bin:/bin",BLENDER_SYSTEM_RESOURCES:d,BLENDER_SYSTEM_SCRIPTS:`${d}/scripts`,BLENDER_SYSTEM_DATAFILES:`${d}/datafiles`,BLENDER_SYSTEM_PYTHON:`${d}/python`,PYTHONPATH:`${d}/python/lib/numpy313.zip:${d}/python/lib/wheels313.zip`,VOLTER_SESSION_ROOT:h,VOLTER_EXPORT_BUFFER_PATH:g},threadPoolSize:a.pool,network:{allowedHosts:[],maxConnections:0,maxBytes:0}});let l=null,c=null;const S=o=>{for(const u of o.split(`
2
- `))u!==""&&(u.startsWith("@@VOLTER-READY ")&&(l=u.slice(15)),e.log(u.startsWith("@@VOLTER-WARN")||u.startsWith("@@VOLTER-ERROR")?"error":"log",u))};for(i.run(["/blender","-b","--factory-startup","-noaudio","--python-use-system-env","-t",String(a.blender),"--python",f],{onStdout:S,onStderr:S,onDiagnostic:o=>e.log("error",`@@VOLTER-ERROR ${o}`)}).then(o=>{c=`Blender exited ${o.exitCode}`},o=>{c=o instanceof Error?o.message:String(o)}).finally(()=>{c!==null&&e.log("error",`@@VOLTER-ERROR the Blender program ended: ${c}`)});l===null;){if(c!==null)throw new Error(`Blender never reached its session: ${c}`);await A(5)}const T=performance.now()-n,$=JSON.parse(l);e.log("log",`blender: the substrate skew is up (${a.blender} Blender threads in a pool of ${a.pool}; Blender is SERIAL without -t N and says so)`);const b=_(t),{request:O}=B(b,e,()=>c);return{skew:"wali",banner:$,files:b,request:O,readArena:()=>t.readFile(g),bootMs:T,memoryBytes:()=>null,releasedPayloadBytes:null}}export{N as startWaliBlenderEngine};
@@ -1 +0,0 @@
1
- import{ab as m}from"./index-GOaZz_UJ.js";import{b as p,a as e,c as n,s}from"./game-network-C3D1ib_r.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-qMZlzFCw.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-D4XNZdHk.js";import"./contract-system-adapters-DAgN02qJ.js";import"./game-contract-seams-Kcb8YGio.js";import"./seeded-random-WDTtjPze.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-CYeuVCYr.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-bQE2NA0D.js";import"./live-project-verbs-DR_q7RK-.js";import"./capability-coverage-DiBzUjdM.js";import"./edit-mode-authoring-BGGW26LN.js";import"./json-history-resource-Cby5jKsw.js";import"./binding-resolver-CGsJLZOI.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-DbZYHQSf.js";import"./canvas-entry-runtime-cJsqLXEp.js";import"./three-ingest-runtime-E3dJH9KF.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./active-ingest-B0RHbDkD.js";import"./ingest-source-persistence-DM9T5S4m.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-B6vzusDX.js";import"./mounted-authoring-CZw66UYV.js";import"./entity-object-DsAYI3gJ.js";import"./user-data-BDBZj06-.js";import"./workspace-arrangement-BjHQJUoD.js";import"./three-contract-Dkt6PmWY.js";import"./three-CQcV_QdT.js";import"./editor-layers-BpAhxn0P.js";import"./component-instance-root-BZXekKMG.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-D3qfWIRk.js";import"./source-persistence-backend-CxVBXGoQ.js";import"./three-projection-core-CkmVzWhv.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-Dc4KkqeK.js";import"./deferred-ingest-play-CrBHt1VV.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-4sStON8E.js";import"./board-guides-DUTllrm6.js";import"./relative-import-specifier-B0yhWWcj.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-CD61yjth.js";import"./inference-diagnostics-DH6OpJZI.js";import"./writer-tw6EcuVO.js";import"./three-state-CzjS3Z7g.js";import"./editor-shell-store-C04XLLU-.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-Slxb_SvE.js";import"./game-surface-defaults-D8S4cRxi.js";const zt="workspace.command",a=()=>({ok:!1,error:"not in play mode — start play before using the debug seam"}),Bt={"set-instance-count":{derivedRefresh:"always",handle:o=>{if(!e())return a();const r=o.names;if(Array.isArray(r)&&r.every(i=>typeof i=="string"))return r.length<1?{ok:!1,error:'set-instance-count "names" must have at least one entry.'}:(n(r),{ok:!0});const t=o.count;return typeof t!="number"||!Number.isFinite(t)||t<1?{ok:!1,error:`set-instance-count requires a whole "count" >= 1 (or a "names" array), got ${String(t)}.`}:(s(Math.floor(t)-1),{ok:!0})}},"list-instances":{derivedRefresh:"if-content-changed",handle:()=>({ok:!0,data:{instances:m(),named:p()}})}};export{Bt as commands,zt as point};
@@ -1 +0,0 @@
1
- import{i as t}from"./game-network-C3D1ib_r.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-GOaZz_UJ.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./native-debug-module-qMZlzFCw.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-D4XNZdHk.js";import"./contract-system-adapters-DAgN02qJ.js";import"./game-contract-seams-Kcb8YGio.js";import"./seeded-random-WDTtjPze.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-CYeuVCYr.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-bQE2NA0D.js";import"./live-project-verbs-DR_q7RK-.js";import"./capability-coverage-DiBzUjdM.js";import"./edit-mode-authoring-BGGW26LN.js";import"./json-history-resource-Cby5jKsw.js";import"./binding-resolver-CGsJLZOI.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-DbZYHQSf.js";import"./canvas-entry-runtime-cJsqLXEp.js";import"./three-ingest-runtime-E3dJH9KF.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./active-ingest-B0RHbDkD.js";import"./ingest-source-persistence-DM9T5S4m.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-B6vzusDX.js";import"./mounted-authoring-CZw66UYV.js";import"./entity-object-DsAYI3gJ.js";import"./user-data-BDBZj06-.js";import"./workspace-arrangement-BjHQJUoD.js";import"./three-contract-Dkt6PmWY.js";import"./three-CQcV_QdT.js";import"./editor-layers-BpAhxn0P.js";import"./component-instance-root-BZXekKMG.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-D3qfWIRk.js";import"./source-persistence-backend-CxVBXGoQ.js";import"./three-projection-core-CkmVzWhv.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-Dc4KkqeK.js";import"./deferred-ingest-play-CrBHt1VV.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-4sStON8E.js";import"./board-guides-DUTllrm6.js";import"./relative-import-specifier-B0yhWWcj.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-CD61yjth.js";import"./inference-diagnostics-DH6OpJZI.js";import"./writer-tw6EcuVO.js";import"./three-state-CzjS3Z7g.js";import"./editor-shell-store-C04XLLU-.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-Slxb_SvE.js";import"./game-surface-defaults-D8S4cRxi.js";const zt="workspace.service";function At(){t()}export{zt as point,At as start};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/r3f-design-session-BpFmOBy3.js","assets/index-GOaZz_UJ.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/edit-mode-authoring-BGGW26LN.js","assets/game-network-C3D1ib_r.js","assets/index-OZVqp6xS.js","assets/index-Da9JhEvW.js","assets/native-debug-module-qMZlzFCw.js","assets/native-entry-surface-BE8LJNdu.js","assets/debug-registry-D4XNZdHk.js","assets/contract-system-adapters-DAgN02qJ.js","assets/game-contract-seams-Kcb8YGio.js","assets/seeded-random-WDTtjPze.js","assets/game-audio-BeCyd0Ha.js","assets/rapier-physics-adapter-CaZqWLu0.js","assets/events-156d8d12.esm-CYeuVCYr.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/index-bQE2NA0D.js","assets/live-project-verbs-DR_q7RK-.js","assets/capability-coverage-DiBzUjdM.js","assets/json-history-resource-Cby5jKsw.js","assets/binding-resolver-CGsJLZOI.js","assets/adapter-surface-Y37Nzcyw.js","assets/structural-signature-Dc7skRiy.js","assets/webgl-frame-capture-DdJkM2mi.js","assets/realm-services-DbZYHQSf.js","assets/canvas-entry-runtime-cJsqLXEp.js","assets/three-ingest-runtime-E3dJH9KF.js","assets/EffectComposer-BEAt0PtQ.js","assets/CopyShader-BzTUYzf6.js","assets/ShaderPass-DTnDQXm0.js","assets/Pass-D1MRT672.js","assets/CSS3DRenderer-BsAqfavI.js","assets/relative-path-guard-GiM7Lsz8.js","assets/react-root-BHA-cdrW.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/active-ingest-B0RHbDkD.js","assets/ingest-source-persistence-DM9T5S4m.js","assets/pixi-story-model-DNkfnWUV.js","assets/surface-content-Dg9Kkazf.js","assets/viewport-root-presentation-B6vzusDX.js","assets/mounted-authoring-CZw66UYV.js","assets/entity-object-DsAYI3gJ.js","assets/user-data-BDBZj06-.js","assets/workspace-arrangement-BjHQJUoD.js","assets/three-contract-Dkt6PmWY.js","assets/three-CQcV_QdT.js","assets/editor-layers-BpAhxn0P.js","assets/component-instance-root-BZXekKMG.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/three-authoring-adapter-D3qfWIRk.js","assets/source-persistence-backend-CxVBXGoQ.js","assets/three-projection-core-CkmVzWhv.js","assets/body-marks-C1LxJtQb.js","assets/user-data-CODoGZqA.js","assets/object-marks-BnvSuCTt.js","assets/structural-ids-BOo2BRoY.js","assets/object3d-authoring-subject-XccsO0xG.js","assets/r3f-physics-binding-Dc4KkqeK.js","assets/deferred-ingest-play-CrBHt1VV.js","assets/rrweb-Cd2ifIRP.js","assets/react-world-authoring-adapter-4sStON8E.js","assets/board-guides-DUTllrm6.js","assets/relative-import-specifier-B0yhWWcj.js","assets/story-arg-descriptors-Ek86ExX7.js","assets/inspect-CD61yjth.js","assets/inference-diagnostics-DH6OpJZI.js","assets/writer-tw6EcuVO.js","assets/three-state-CzjS3Z7g.js","assets/editor-shell-store-C04XLLU-.js","assets/output-pass-HurwNl0G.js","assets/viewport-door-Slxb_SvE.js","assets/game-surface-defaults-D8S4cRxi.js","assets/scene-framing-B5dto0bO.js","assets/assets-BcrMQHRv.js","assets/loader-BTUKnX5Q.js","assets/KTX2Loader-CaqVE6nY.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/create-runtime-B4VUkWmh.js","assets/binding-Bmxqznjk.js","assets/root-stacking-BEd9ZvxC.js","assets/setup-renderer-D9SD_Wht.js","assets/index-DHhMOs_s.js","assets/defaults-DKiBJCPN.js","assets/render-settings-C81L61oc.js","assets/render-features-B35P-in2.js","assets/loop-gate-report-N52EWFGD.js","assets/system-slot-E2mEdiih.js","assets/performance-profiler-CMbwGBuk.js","assets/live-gesture-lock-DJbrjOqf.js"])))=>i.map(i=>d[i]);
2
- import{_ as s,az as n}from"./index-GOaZz_UJ.js";import{r as a}from"./design-time-mount-registry-DUpXCg1U.js";import{q as c}from"./edit-mode-authoring-BGGW26LN.js";import{a as u}from"./json-history-resource-Cby5jKsw.js";import{o as h}from"./three-authoring-adapter-D3qfWIRk.js";import{t as i}from"./editor-shell-store-C04XLLU-.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./component-instance-root-BZXekKMG.js";import"./user-data-BDBZj06-.js";import"./workspace-arrangement-BjHQJUoD.js";import"./source-persistence-backend-CxVBXGoQ.js";import"./ingest-source-persistence-DM9T5S4m.js";import"./three-projection-core-CkmVzWhv.js";import"./editor-layers-BpAhxn0P.js";import"./three-CQcV_QdT.js";import"./entity-object-DsAYI3gJ.js";import"./three-contract-Dkt6PmWY.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three.core-3arARmh6.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./r3f-physics-binding-Dc4KkqeK.js";import"./output-pass-HurwNl0G.js";import"./three.module-BLhyNg0e.js";import"./Pass-D1MRT672.js";const U="workspace.service";function X(){const r=s(()=>import("./r3f-design-session-BpFmOBy3.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99]));r.catch(()=>{});const m=n("three",(t,o)=>h(i(t),()=>i(t).scene,o,u(o))),e=a({kind:"three",owner:"@volter/editor-game/three/three-authoring",async mountWorldRootSession(t){const o=t,{mountR3FDesignSession:p}=await r;return p(o.store,o.composite,o.renderer)}});return c(),()=>{e(),m()}}export{U as point,X as start};
@@ -1 +0,0 @@
1
- import{e as r}from"./three-integration-BjEyDiTB.js";import"./index-GOaZz_UJ.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./host-hierarchy-objects-BV3WqU2w.js";import"./renderer-ownership-BovSEcLv.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./preview-renderer-BrYNFV1p.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./layered-pick-B3AjYd-G.js";import"./root-stacking-BEd9ZvxC.js";import"./user-data-BDBZj06-.js";import"./workspace-arrangement-BjHQJUoD.js";import"./model-thumbnail-C6xWKVgL.js";import"./studio-environment-BiC6OVkT.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./object3d-document-session-registry-q7c_gezv.js";import"./three-state-CzjS3Z7g.js";import"./editor-shell-store-C04XLLU-.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./editor-layers-BpAhxn0P.js";import"./entity-object-DsAYI3gJ.js";import"./three-contract-Dkt6PmWY.js";import"./hierarchy-marks-MeNgbwiP.js";import"./component-instance-root-BZXekKMG.js";import"./viewport-door-Slxb_SvE.js";import"./content-bounds-IMXYkN3x.js";import"./asset-preview-C-SzfMmZ.js";import"./bitmap-label-Ct4k6ehY.js";const Q="workspace.service";function R(){return r()}export{Q as point,R as start};
@@ -1 +0,0 @@
1
- import{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{r as t}from"./index-GOaZz_UJ.js";import{r as m}from"./index-nmcBqr7Y.js";import{P as p}from"./PlayBar-DknzqPEC.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./configurations-B4fNBX4_.js";import"./run-selection-BdiLPzVf.js";import"./game-network-C3D1ib_r.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-qMZlzFCw.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-D4XNZdHk.js";import"./contract-system-adapters-DAgN02qJ.js";import"./game-contract-seams-Kcb8YGio.js";import"./seeded-random-WDTtjPze.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-CYeuVCYr.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-bQE2NA0D.js";import"./live-project-verbs-DR_q7RK-.js";import"./capability-coverage-DiBzUjdM.js";import"./edit-mode-authoring-BGGW26LN.js";import"./json-history-resource-Cby5jKsw.js";import"./binding-resolver-CGsJLZOI.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-DbZYHQSf.js";import"./canvas-entry-runtime-cJsqLXEp.js";import"./three-ingest-runtime-E3dJH9KF.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./active-ingest-B0RHbDkD.js";import"./ingest-source-persistence-DM9T5S4m.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-B6vzusDX.js";import"./mounted-authoring-CZw66UYV.js";import"./entity-object-DsAYI3gJ.js";import"./user-data-BDBZj06-.js";import"./workspace-arrangement-BjHQJUoD.js";import"./three-contract-Dkt6PmWY.js";import"./three-CQcV_QdT.js";import"./editor-layers-BpAhxn0P.js";import"./component-instance-root-BZXekKMG.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-D3qfWIRk.js";import"./source-persistence-backend-CxVBXGoQ.js";import"./three-projection-core-CkmVzWhv.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-Dc4KkqeK.js";import"./deferred-ingest-play-CrBHt1VV.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-4sStON8E.js";import"./board-guides-DUTllrm6.js";import"./relative-import-specifier-B0yhWWcj.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-CD61yjth.js";import"./inference-diagnostics-DH6OpJZI.js";import"./writer-tw6EcuVO.js";import"./three-state-CzjS3Z7g.js";import"./editor-shell-store-C04XLLU-.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-Slxb_SvE.js";import"./game-surface-defaults-D8S4cRxi.js";const Dr="workspace.header",Fr=0;function Gr(){const{project:r}=t();return m.useSyncExternalStore(r.subscribe,r.mounts,r.mounts)?o.jsx(p,{}):null}export{Gr as default,Fr as order,Dr as point};
@@ -1,2 +0,0 @@
1
- const d="/work/.volter-session",ae=`${d}/session.py`,se=[`${d}/in`,`${d}/reply`],L="/__editor/blender-wasm";function D(e){return new URL(`${L}/${e}`,import.meta.url).href}async function M(){const e=await fetch(D("status"));return e.ok?await e.json():{available:!1,skew:null,dir:null,sizes:{},encoded:{},missing:[`${L}/status answered ${e.status}`]}}async function J(e){const t=await M();if(!t.available)throw new Error(`The headless Blender WebAssembly build is not served by this editor: ${t.missing.join("; ")}`);if(t.skew==="wali"){const{startWaliBlenderEngine:n}=await import("./blender-wali-engine-CZcS3eAd.js");return n(e,t)}const{startEmscriptenBlenderEngine:r}=await import("./blender-emscripten-engine-Cd6az4pU.js");return r(e,t)}function U(e){return e<200?1:e<5e3?5:25}const C=e=>new Promise(t=>setTimeout(t,e)),B=new TextDecoder;function ie(e,t,r){let n=0,a=0;const o=new Set;async function s(u){for(const l of o)u.has(`${l}.done`)||(await e.unlink(`${d}/reply/${l}.json`),await e.unlink(`${d}/reply/${l}.done`),o.delete(l))}async function i(){let u;try{u=await e.readdir(`${d}/ask`)}catch{return}const l=new Set(u.filter(h=>h.endsWith(".done")));await s(l);for(const h of l){const w=h.slice(0,-5);if(Number(w)<=a)continue;a=Number(w);const m=JSON.parse(B.decode(await e.readFile(`${d}/ask/${w}.json`)));let E;try{E=await t.ask(m)}catch(S){E={error:S instanceof Error?S.message:String(S)}}await e.writeFile(`${d}/reply/${w}.json`,JSON.stringify(E??null)),await e.writeFile(`${d}/reply/${w}.done`,"1"),o.add(w)}}async function c(u){const l=String(++n);await e.writeFile(`${d}/in/${l}.json`,JSON.stringify(u)),await e.writeFile(`${d}/in/${l}.done`,"1");const h=performance.now();for(;;){if(await i(),await e.stat(`${d}/out/${l}.done`)){const m=JSON.parse(B.decode(await e.readFile(`${d}/out/${l}.json`)));if(await e.unlink(`${d}/in/${l}.json`),await e.unlink(`${d}/in/${l}.done`),m.error)throw new Error(m.error);return m.result}const w=r?.();if(w)throw new Error(`Blender is gone, so this call will never be answered: ${w}. The session keeps its directory and its cached banner, so every later call would wait on the same missing answer; start a new program with \`blender-start {fresh: true}\` (\`VOLTER_BLENDER_FRESH_SESSION=1\` for the battery harness).`);await C(U(performance.now()-h))}}return{request:c}}const N=e=>typeof e=="object"&&e!==null&&typeof e.offset=="number"&&typeof e.length=="number"&&typeof e.dtype=="string"&&typeof e.count=="number"&&typeof e.stride=="number",W={f32:e=>new Float32Array(e.buffer,e.byteOffset,e.byteLength>>2),f64:e=>new Float64Array(e.buffer,e.byteOffset,e.byteLength>>3),u32:e=>new Uint32Array(e.buffer,e.byteOffset,e.byteLength>>2),i32:e=>new Int32Array(e.buffer,e.byteOffset,e.byteLength>>2),u16:e=>new Uint16Array(e.buffer,e.byteOffset,e.byteLength>>1),i16:e=>new Int16Array(e.buffer,e.byteOffset,e.byteLength>>1),u8:e=>e,i8:e=>new Int8Array(e.buffer,e.byteOffset,e.byteLength)};function z(e,t,r){const n=W[r.dtype];if(!n)throw new Error(`Blender frame column ${t}: unknown dtype ${r.dtype}`);const{offset:a,length:o}=r;if(a<0||o<0||a+o>e.byteLength)throw new Error(`Blender frame column ${t}: bytes ${a}..${a+o} lie outside the ${e.byteLength}-byte export arena`);const s=e.subarray(a,a+o).slice(),i=n(s),c=r.count*r.stride;if(i.length!==c)throw new Error(`Blender frame column ${t}: ${i.length} values, ${c} declared (${r.count} x ${r.stride})`);return i}function H(e,t){const r=(n,a)=>{if(N(n)){const o=z(e,a,n);return a==="co"?Float64Array.from(o):o}if(Array.isArray(n))return n.map(o=>r(o,a));if(typeof n=="object"&&n!==null){const o={};for(const[s,i]of Object.entries(n))o[s]=r(i,s);return o}return n};return r(t,"")}async function V(e,t){const r=async(n,a)=>{if(N(n)){const{offset:o,length:s,dtype:i}=n;if(o<0||s<0||o+s>e.byteLength)throw new Error(`Blender frame column ${a}: bytes ${o}..${o+s} lie outside the ${e.byteLength}-byte export arena`);const c=e.subarray(o,o+s).slice(),u=await crypto.subtle.digest("SHA-256",c),l=[...new Uint8Array(u)].map(h=>h.toString(16).padStart(2,"0")).join("");return{dtype:i,length:s,sha256:l}}if(Array.isArray(n))return Promise.all(n.map(o=>r(o,a)));if(typeof n=="object"&&n!==null){const o={};for(const[s,i]of Object.entries(n))o[s]=await r(i,s);return o}return n};return r(t,"")}const b=e=>self.postMessage(e),k=(e,t)=>b({op:"log",level:e,text:t});let p=null,v=null,G=0;const j=new Map;function K(e,t,r){const n=++G,a=[],o=e;for(const s of[o?.meshes??{},o?.images??{}])for(const i of Object.values(s))for(const c of Object.values(i))ArrayBuffer.isView(c)&&c.buffer instanceof ArrayBuffer&&!a.includes(c.buffer)&&a.push(c.buffer);return new Promise((s,i)=>{j.set(n,{resolve:s,reject:i}),self.postMessage({op:"present",id:n,frame:e,description:t,...r?{capture:r}:{}},a)})}let f=null,$=null,T=!1,A=Promise.resolve();function Q(e){const t=A.then(e);return A=t.catch(()=>{}),t}function P(e){T=e,b({op:"document-dirty",dirty:e})}async function R(){if(!f||$===null)return;const e=$;let t;try{t=await f.request({op:"save-document"})}catch(n){throw new Error(`The Blender document ${e} could not be saved: ${g(n)}`)}if(!t?.saved||typeof t.path!="string")throw new Error(`Blender did not save the document ${e}`);let r;try{r=await f.files.readFile(t.path)}catch(n){throw new Error(`The Blender document ${e} could not be read back out of the engine: ${g(n)}`)}y.delete(t.path);try{const n=await fetch(`/__editor/blender-document?path=${encodeURIComponent(e)}`,{method:"POST",headers:{"content-type":"application/octet-stream"},body:new Blob([r])});if(!n.ok){const a=await n.text().catch(()=>"");throw new Error(`HTTP ${n.status} ${a}`)}}catch(n){throw new Error(`The Blender document ${e} was not written to the project: ${g(n)}`)}P(!1),k("log",`@@VOLTER-DOCUMENT ${JSON.stringify({path:e,bytes:r.length})}`)}async function X(e,t){const r={engine:null},n=await J({project:e,log:k,ask:async({frame:o,capture:s,saveDue:i})=>{if(!r.engine)throw new Error("The Blender session presented before it started");i&&$!==null&&P(!0);const c=await r.engine.readArena(),u=await V(c,o),l=await K(H(c,o),u,s);return{...typeof l.capture=="object"&&l.capture!==null?l.capture:{},..."held"in l?{held:l.held}:{}}}});r.engine=n,f=n,t&&await _(n.files,e);const a=await n.request({op:"start",project:e,...t?{document:t}:{}});return t&&($=t),p={start:async()=>a,execute:async o=>{const s=await n.request({op:"execute",code:o});return s.error?`Error executing code: ${s.error}`:`Code executed successfully: ${s.result}`},sceneInfo:async()=>JSON.stringify(await n.request({op:"scene-info"}),null,2),objectInfo:async o=>JSON.stringify(await n.request({op:"object-info",name:o}),null,2),screenshotView:async o=>(await n.request({op:"present",capture:{size:o}}),JSON.stringify({view:{size:o}}))},{...a,engine:"blender-wasm",skew:n.skew,bootMs:Math.round(n.bootMs),releasedPayloadMB:n.releasedPayloadBytes===null?null:Math.round(n.releasedPayloadBytes/1048576)}}async function Y(){try{const e=await fetch("/__editor/blender-wasm/status");return e.ok?await e.json():{available:!1,missing:[`status answered ${e.status}`]}}catch(e){return{available:!1,missing:[String(e)]}}}async function Z(e,t){if(p)throw new Error("The Blender session is already started");if(!e.startsWith("/"))throw new Error("The Blender session needs the project's absolute path");if(t!==void 0&&!q(t))throw new Error(`The Blender document must be a project-relative .blend path with no traversal (models/model.blend); got ${JSON.stringify(t)}`);const r=await Y();if(!r.available)throw new Error(`Headless Blender is not served by this editor, so there is no modeling engine: ${r.missing.join("; ")}. The engine is Blender compiled to WebAssembly (packages/blender-engine/wasm, or the directory VOLTER_BLENDER_WASM_DIR names); nothing stands in for it.`);return v=e,X(e,t)}function q(e){return!e.endsWith(".blend")||e.startsWith("/")||e.includes("\\")?!1:e.split("/").every(r=>r!==""&&r!=="."&&r!=="..")}const x=new Set;function O(e){x.has(e)||(x.add(e),k("error",e))}async function ee(e){const t=s=>(O(`The project's files are not readable from Python: ${s}`),null);let r;try{r=await fetch("/__editor/blender-project-index")}catch(s){return t(String(s))}if(!r.ok)return t(`/__editor/blender-project-index answered ${r.status}`);let n;try{if(n=await r.json(),typeof n?.root!="string"||!Array.isArray(n.files))return t("invalid project index")}catch(s){return t(String(s))}const{root:a,files:o}=n;return a!==e&&O(`The editor serving this tab has ${a} open, not ${e}; its files are mounted at ${e}, which is where Python is looking.`),o}const y=new Map;async function te(e,t){const r=await e.stat(t);return r?`${r.size}:${r.mtimeMs}`:""}async function _(e,t){const r=await ee(t);if(!r)return;const n=new Set(r.map(a=>`${t}/${a.path}`));for(const a of[...y.keys()])if(!n.has(a)){try{await e.unlink(a)}catch{}y.delete(a)}for(const a of r){const o=`${t}/${a.path}`,s=`${a.size}:${a.mtime}`;if(y.get(o)?.host===s||!y.has(o)&&await e.stat(o)!==null)continue;const i=await fetch(`/__editor/blender-project-file?path=${encodeURIComponent(a.path)}`);if(!i.ok){O(`${a.path}: HTTP ${i.status}`);continue}const c=o.slice(0,o.lastIndexOf("/"));c&&await e.mkdirTree(c),await e.writeFile(o,new Uint8Array(await i.arrayBuffer())),y.set(o,{host:s,engine:await te(e,o)})}}async function ne(e,t){const r=[],n=async a=>{let o;try{o=await e.readdir(a)}catch{return}for(const s of o){if(s==="."||s==="..")continue;const i=`${a.replace(/\/$/,"")}/${s}`,c=await e.stat(i);if(c){if((c.mode&61440)===16384){await n(i);continue}y.get(i)?.engine!==`${c.size}:${c.mtimeMs}`&&r.push({path:i,size:c.size,mtime:c.mtimeMs})}}};return await n(t),r}async function F(e){switch(e.op){case"start":return Z(e.project,e.document);case"present-result":{const n=j.get(e.id);j.delete(e.id),n&&(e.error?n.reject(new Error(e.error)):n.resolve({...e.capture===void 0?{}:{capture:e.capture},..."held"in e?{held:e.held}:{}}));return}}if(!p||!v||!f)throw new Error("The Blender session has not started");const t=f.files,r=f.request.bind(f);switch(e.op){case"flush-document":return T?(await R(),{saved:!0}):{saved:!1};case"history-begin":case"history-end":return r({op:e.op});case"history-step":return r({op:"history-step",token:e.token,direction:e.direction});case"execute":await _(t,v);{const n=await r({op:"execute",code:e.code,history:e.history??!0,label:e.label??"Blender Python"});return n.error?`Error executing code: ${n.error}`:`Code executed successfully: ${n.result}`}case"present":return r({op:"present"});case"scene-info":return p.sceneInfo();case"object-info":return p.objectInfo(e.name);case"rna":return r({op:"rna",path:e.path,...e.names===void 0?{}:{names:e.names}});case"rna-context":return r({op:"rna-context",...e.object===void 0?{}:{object:e.object},...e.collection===void 0?{}:{collection:e.collection}});case"rna-set":return r({op:"rna-set",history:e.history!==!1,path:e.path,property:e.property,value:e.value,...e.index===void 0?{}:{index:e.index}});case"outliner":return r({op:"outliner",...e.selected===void 0?{}:{selected:[...e.selected]}});case"node-tree":return r({op:"node-tree",...e.path===void 0?{}:{path:e.path},...e.material===void 0?{}:{material:e.material}});case"uv-layout":return r({op:"uv-layout",...e.object===void 0?{}:{object:e.object},...e.uvLayer===void 0?{}:{uvLayer:e.uvLayer}});case"rig":return r({op:"rig",...e.object===void 0?{}:{object:e.object}});case"action-clip":return r({op:"action-clip",...e.object===void 0?{}:{object:e.object},...e.bake===void 0?{}:{bake:e.bake}});case"outliner-set":return r({op:"outliner-set",path:e.path,column:e.column,value:e.value});case"screenshot-view":return JSON.parse(await p.screenshotView(e.maxSize));case"read-file":return t.readFile(e.path);case"write-file":{const n=e.path.slice(0,e.path.lastIndexOf("/"));n&&await t.mkdirTree(n),await t.writeFile(e.path,e.bytes),y.delete(e.path);return}case"list-files":return ne(t,e.path)}throw new Error(`Unknown Blender worker request ${e.op}`)}function g(e){if(e instanceof Error)return e.stack??`${e.name}: ${e.message}`;if(typeof e=="object"&&e!==null){const t=e;if(typeof t.message=="string")return typeof t.name=="string"?`${t.name}: ${t.message}`:t.message;try{return JSON.stringify(e)??Object.prototype.toString.call(e)}catch{return Object.prototype.toString.call(e)}}return String(e)}function re(){if(!f)return;const e=f.memoryBytes();e!==null&&b({op:"memory",bytes:e})}self.onmessage=e=>{const t=e.data;if(t.op==="present-result"){F(t);return}Q(()=>oe(t))};async function oe(e){try{const t=await F(e);T&&await R(),await I(),b({id:e.id,result:t})}catch(t){let r=g(t);try{await I()}catch(n){r+=`
2
- Unable to deliver Blender history: ${g(n)}`}b({id:e.id,error:r})}re()}async function I(){if(!f||!p)return;const e=await f.request({op:"history-events"});e.length&&b({op:"history",entries:e})}export{L as A,se as P,d as S,ae as a,D as b,ie as o,C as s};