@volter/game-editor 0.5.65 → 0.5.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. package/BUNDLED_NOTICES +1962 -363
  2. package/catalog/entries/bake.json +0 -1
  3. package/catalog/entries/blender.json +2 -2
  4. package/catalog/entries/reflections.json +2 -4
  5. package/catalog/project-source/src/lib/bake/asset-seed.ts +1 -2
  6. package/catalog/project-source/src/lib/bake/clip-layering.ts +3 -4
  7. package/catalog/project-source/src/lib/bake/gltf-bake.ts +1 -1
  8. package/catalog/project-source/src/lib/bake/params.ts +3 -5
  9. package/catalog/project-source/src/lib/bake/rest-relative-animation.ts +2 -3
  10. package/dist/.vite/manifest.json +2406 -2182
  11. package/dist/assets/{AssetBudgetPanel-J9--TZPU.js → AssetBudgetPanel-csYWK2H4.js} +8 -8
  12. package/dist/assets/{AudioViewer-CR7333fe.js → AudioViewer-BH_LUYs5.js} +1 -1
  13. package/dist/assets/{BVHLoader-6bQIXhMX.js → BVHLoader-Jkzh8hMf.js} +1 -1
  14. package/dist/assets/BufferGeometryUtils-CAbuTPOA.js +1 -0
  15. package/dist/assets/{CCDIKSolver-CD7vLpsK.js → CCDIKSolver-D4NvkJ8d.js} +1 -1
  16. package/dist/assets/{CSS3DRenderer-CL7ABLVK.js → CSS3DRenderer-CAS2WZZy.js} +1 -1
  17. package/dist/assets/CanvasSceneViewport-BlsRTk-X.js +1 -0
  18. package/dist/assets/ColladaLoader-DxYB89DA.js +3 -0
  19. package/dist/assets/{ColorInput-DQBNrW-K.js → ColorInput-CPQNsDf1.js} +1 -1
  20. package/dist/assets/{ConvexGeometry-CAzXlPVG.js → ConvexGeometry-Dinf-sev.js} +1 -1
  21. package/dist/assets/{ConvexHull-BINCESFp.js → ConvexHull-CrJ8FY-w.js} +1 -1
  22. package/dist/assets/{DecalGeometry-160KRdfg.js → DecalGeometry-owkbefLa.js} +1 -1
  23. package/dist/assets/EffectComposer-BHDH-NLz.js +1 -0
  24. package/dist/assets/EntityModelDocument-DuQivdvc.js +1 -0
  25. package/dist/assets/EnvironmentAssetDocument-CnTEMn3A.js +1 -0
  26. package/dist/assets/FBXLoader-BMUbIhtE.js +1 -0
  27. package/dist/assets/Fbo-DrK7CWlB.js +1 -0
  28. package/dist/assets/{FontLoader-CvGoVI5a.js → FontLoader-BR_K6Baw.js} +2 -2
  29. package/dist/assets/GLTFExporter-BZqAQJbw.js +1 -0
  30. package/dist/assets/{GameplaySessionTimeline-B52W3FVZ.js → GameplaySessionTimeline-Crqwv2fP.js} +1 -1
  31. package/dist/assets/Gltf-7cVbZUzT.js +2 -0
  32. package/dist/assets/ImageViewer-BkFie7Hm.js +1 -0
  33. package/dist/assets/InspectorObjectPreview-Dl3tyJBn.js +1 -0
  34. package/dist/assets/JsonAssetDocument-BUFzubHM.js +2 -0
  35. package/dist/assets/{LineSegments2-CsOpKSiM.js → LineSegments2-Cicm_Hu1.js} +2 -2
  36. package/dist/assets/LiveModuleDocument-C3OQxiba.js +1 -0
  37. package/dist/assets/LutAssetDocument-DVzd1RZ9.js +1 -0
  38. package/dist/assets/{MTLLoader-_Xzd4_0p.js → MTLLoader-Bg_grNiT.js} +2 -2
  39. package/dist/assets/{MarchingCubes-Bsp4wrzd.js → MarchingCubes-a78AL3HB.js} +1 -1
  40. package/dist/assets/MeshBVH-BCSLNEeP.js +1 -0
  41. package/dist/assets/ModelAssetDocument-pN84goRT.js +1 -0
  42. package/dist/assets/{NonThreeAuthoringBootstrap-C3woOMxX.js → NonThreeAuthoringBootstrap-BKNejRiW.js} +1 -1
  43. package/dist/assets/{OBJLoader-BhIC6Hwo.js → OBJLoader-BiwzVj5b.js} +2 -2
  44. package/dist/assets/Object3DDocumentToolbar-D5Bg5FEf.js +1 -0
  45. package/dist/assets/Object3DDocumentViewport-DFHqru3a.js +2 -0
  46. package/dist/assets/Object3DPreview-BTtZ-41z.js +2 -0
  47. package/dist/assets/OnlineAssetDetail-BAqozdAp.js +1 -0
  48. package/dist/assets/{OrbitControls-DLpayAaK.js → OrbitControls-CzKVCORl.js} +1 -1
  49. package/dist/assets/{OrbitControls-CM3bPray.js → OrbitControls-CzTRRI7x.js} +1 -1
  50. package/dist/assets/{OrthographicCamera-bQozawrh.js → OrthographicCamera-CSDDsvu7.js} +1 -1
  51. package/dist/assets/{PLYLoader-DYQqs5Ik.js → PLYLoader-QxrxxMpE.js} +2 -2
  52. package/dist/assets/{PerspectiveCamera-CQ2lh01o.js → PerspectiveCamera-DzD_NfVh.js} +1 -1
  53. package/dist/assets/PlayBar-qVJpgwJt.js +2 -0
  54. package/dist/assets/QuarksAssetDocument-B4vBlUsS.js +2 -0
  55. package/dist/assets/RGBELoader-WQ7xZofE.js +1 -0
  56. package/dist/assets/RectAreaLightUniformsLib-CwcuoVqt.js +1 -0
  57. package/dist/assets/{RenderPass-DPrn-Uky.js → RenderPass-C_CeQNdh.js} +1 -1
  58. package/dist/assets/{ResolutionPicker-C67vs1F3.js → ResolutionPicker-DpHVJxn5.js} +1 -1
  59. package/dist/assets/RootSelectionOverlay-BxvsunO4.js +1 -0
  60. package/dist/assets/{RoundedBox-BDGBg6QZ.js → RoundedBox-B_cZ0NFy.js} +1 -1
  61. package/dist/assets/{RoundedBoxGeometry-CyUuYPfW.js → RoundedBoxGeometry-Y4rcSIvX.js} +1 -1
  62. package/dist/assets/STLLoader-Bej_Nkpr.js +1 -0
  63. package/dist/assets/{SelectionBox-D_75KrNW.js → SelectionBox-Cn9vm7f9.js} +1 -1
  64. package/dist/assets/ShaderAssetDocument-Dx2x8CLr.js +12 -0
  65. package/dist/assets/{ShaderPass-QYRpPuFJ.js → ShaderPass-qtkA7CQ8.js} +1 -1
  66. package/dist/assets/{ShadowEditor-DkImwu1Y.js → ShadowEditor-BEIUkrHL.js} +1 -1
  67. package/dist/assets/SimplifyModifier-D2EesGr2.js +1 -0
  68. package/dist/assets/{SkeletonUtils-Cps8GOC6.js → SkeletonUtils-C8ayciDc.js} +1 -1
  69. package/dist/assets/{Sky-CQKCgYDs.js → Sky-BBpnAJZV.js} +1 -1
  70. package/dist/assets/SourceAssetViewer-BpMbbuy6.js +1 -0
  71. package/dist/assets/StageHost-lB8f---y.js +2 -0
  72. package/dist/assets/{StoryPreviewMount-DjyxRCXu.js → StoryPreviewMount-BIfxmkYh.js} +1 -1
  73. package/dist/assets/{TDSLoader-D_T8XJ81.js → TDSLoader-rHl5Uwc0.js} +1 -1
  74. package/dist/assets/{TextGeometry-DOWAEUV0.js → TextGeometry-BRHSufuM.js} +1 -1
  75. package/dist/assets/ThreeBoardDocument-BHV92Ia3.js +2 -0
  76. package/dist/assets/{ThreeIsolationSceneContent-C8C8whSF.js → ThreeIsolationSceneContent-BqtgDHBK.js} +1 -1
  77. package/dist/assets/{ToolObject3DPreview-BRoDWe4Q.js → ToolObject3DPreview-CcaPJTyH.js} +1 -1
  78. package/dist/assets/Toolbar-keHcSvDD.js +1 -0
  79. package/dist/assets/{TrackballControls-DfznuQTh.js → TrackballControls-Cce-6Ff5.js} +1 -1
  80. package/dist/assets/{TransientHint-BB1fwrvK.js → TransientHint-Dlslh3oX.js} +1 -1
  81. package/dist/assets/{UnrealBloomPass-CR-cS_K5.js → UnrealBloomPass-DiseEiFK.js} +2 -2
  82. package/dist/assets/{VideoViewer-C6kocgIU.js → VideoViewer-naGSXHd6.js} +1 -1
  83. package/dist/assets/ViewportShadingMenu-C7Hdhtca.js +1 -0
  84. package/dist/assets/{active-ingest-CT6jSGhr.js → active-ingest-DEgq9JiA.js} +3 -3
  85. package/dist/assets/{animation-clock-CnjZqfJp.js → animation-clock-lTIb6nk3.js} +1 -1
  86. package/dist/assets/animation-mixers.service-2O2rVwQf.js +1 -0
  87. package/dist/assets/asset-budget-asset.menu-9NhdHAC9.js +1 -0
  88. package/dist/assets/asset-budget.action-yg6-luUJ.js +1 -0
  89. package/dist/assets/asset-budget.document-B46_VFqa.js +1 -0
  90. package/dist/assets/asset-budget.menu-DuH07N-e.js +1 -0
  91. package/dist/assets/{asset-editor-persistence-BBaONOJt.js → asset-editor-persistence-BVtzjadu.js} +1 -1
  92. package/dist/assets/{asset-loaders-BOy5Ss8k.js → asset-loaders-BxG1LykH.js} +2 -2
  93. package/dist/assets/{assets-BuSoGjBX.js → assets-Do88ZdV_.js} +1 -1
  94. package/dist/assets/{audio-unlock.service-CfUgUQVy.js → audio-unlock.service-BJH0mWvX.js} +1 -1
  95. package/dist/assets/{audio.utility-C6K6jem8.js → audio.utility-Cp4aVYFU.js} +1 -1
  96. package/dist/assets/autoplay.service-FxpRy7Ev.js +1 -0
  97. package/dist/assets/{babylon-authoring-adapter-CL02gWDn.js → babylon-authoring-adapter-B_8iE8fK.js} +1 -1
  98. package/dist/assets/{binding-resolver-Dsh-6Vor.js → binding-resolver-BWwG10zJ.js} +2 -2
  99. package/dist/assets/blender-emscripten-engine-CEsWgnR7.js +2 -0
  100. package/dist/assets/{blender-node-editor.document-iIDkB9sI.js → blender-node-editor.document-DTgwy8KC.js} +1 -1
  101. package/dist/assets/blender-properties-tab-DWSJpkxq.js +3 -0
  102. package/dist/assets/blender-runtime-host-OGjPjTrG.js +4 -0
  103. package/dist/assets/{blender-runtime-skin-DyQ9B6CR.js → blender-runtime-skin-DymtXlpt.js} +37 -39
  104. package/dist/assets/blender-runtime.document-CzH2ohHR.js +8 -0
  105. package/dist/assets/{blender-timeline.document-77fx96N7.js → blender-timeline.document-BRy_QPHt.js} +1 -1
  106. package/dist/assets/{blender-uv-editor.document-fsT7B4gV.js → blender-uv-editor.document-D-AbUCqz.js} +1 -1
  107. package/dist/assets/{blender-version.status-o6dBm3n6.js → blender-version.status-B7flzX_7.js} +1 -1
  108. package/dist/assets/{blender-wali-engine-wTOcrOMC.js → blender-wali-engine-D3iKpzn9.js} +1 -1
  109. package/dist/assets/blender.command-BVHtgTQy.js +1 -0
  110. package/dist/assets/blender.environment-CG-pC7sk.js +1 -0
  111. package/dist/assets/{blender.style-Dcem5f_T.js → blender.style-CxfbTFcE.js} +1 -1
  112. package/dist/assets/{board-guides-DziKSTss.js → board-guides-C3usUZZk.js} +1 -1
  113. package/dist/assets/body-marks-D8iaje6y.js +1 -0
  114. package/dist/assets/bridge.command-BF9u6r0A.js +3 -0
  115. package/dist/assets/browserAll-38aBu-cf.js +1 -0
  116. package/dist/assets/{build-profiles.document-kW8iw8Xj.js → build-profiles.document-DO7oNRuo.js} +2 -2
  117. package/dist/assets/{build-progress.status-BNRLytg2.js → build-progress.status-COeNVhYd.js} +1 -1
  118. package/dist/assets/{build-session-C_sg3CEn.js → build-session-IWIriS5P.js} +1 -1
  119. package/dist/assets/{build.action-lYjTLb7K.js → build.action-DlkFvZf6.js} +1 -1
  120. package/dist/assets/{build.command-DIGgUPU_.js → build.command-DPqQIYj_.js} +1 -1
  121. package/dist/assets/{build.header-CKajx5U3.js → build.header-CNLG-pV8.js} +1 -1
  122. package/dist/assets/{build.menu-BdU0QXny.js → build.menu-hUlH6loi.js} +1 -1
  123. package/dist/assets/{build.service-CbBAyeu3.js → build.service-C86Td3_9.js} +1 -1
  124. package/dist/assets/{camera-KEsKvOL7.js → camera-CKbyBXMe.js} +1 -1
  125. package/dist/assets/camera-authoring-Ci3KnE-W.js +1 -0
  126. package/dist/assets/{camera-runtime.inspector-B7unX4g1.js → camera-runtime.inspector-DdR3P2BF.js} +1 -1
  127. package/dist/assets/canvas-entry-runtime-E5YjSgre.js +2 -0
  128. package/dist/assets/canvas-preview-frames-CiAx7dpV.js +1 -0
  129. package/dist/assets/{capability-coverage-Czas4C18.js → capability-coverage-CfUeULDN.js} +5 -5
  130. package/dist/assets/city-EkhAOo5s.exr +0 -0
  131. package/dist/assets/{collaboration-presence-DLoZ7EA3.js → collaboration-presence-CSLFNT7m.js} +1 -1
  132. package/dist/assets/{collider-Bw0mXlsW.js → collider-DRSaLRM9.js} +1 -1
  133. package/dist/assets/{component-board.service-DCwcUssB.js → component-board.service-B7Sv8b7m.js} +2 -2
  134. package/dist/assets/component-board.service-B8UHw8dn.js +2 -0
  135. package/dist/assets/component-contracts.service-LFGekycZ.js +1 -0
  136. package/dist/assets/{component-verbs.command-7xzfjGMZ.js → component-verbs.command-D4SvFjfG.js} +1 -1
  137. package/dist/assets/component-verbs.service-TGvWxf2b.js +1 -0
  138. package/dist/assets/{config-CEZk921y.js → config-DB_RH-hO.js} +3 -3
  139. package/dist/assets/{configurations-DTBMdaTL.js → configurations-C2qgJNnW.js} +1 -1
  140. package/dist/assets/{connection.status-BifnQdOs.js → connection.status-CG7X2brL.js} +1 -1
  141. package/dist/assets/{console-bridge-CHcb-xk5.js → console-bridge-B5Ltae37.js} +1 -1
  142. package/dist/assets/{constraint-De8f1Uiq.js → constraint-C_Jj7dXy.js} +1 -1
  143. package/dist/assets/constraints.inspector-D6QZJS4b.js +1 -0
  144. package/dist/assets/courtyard-DqlebbpC.exr +0 -0
  145. package/dist/assets/coverage.service-Clo86874.js +3 -0
  146. package/dist/assets/{create-runtime-CVCc1BDx.js → create-runtime-lmA910XT.js} +1 -1
  147. package/dist/assets/{curve-7Q79VgU4.js → curve-6-TR6dNb.js} +1 -1
  148. package/dist/assets/{data-asset-4hjS642k.js → data-asset-BNbd309U.js} +1 -1
  149. package/dist/assets/{data-ref-CQI28C0D.js → data-ref-Dvmd7eb1.js} +1 -1
  150. package/dist/assets/{debug-bridge-CCohG-d-.js → debug-bridge-BUNhgyY6.js} +1 -1
  151. package/dist/assets/{debug-registry-Dgvitx8M.js → debug-registry-B3Cnne3x.js} +1 -1
  152. package/dist/assets/deferred-ingest-play-7V8OrW3e.js +2 -0
  153. package/dist/assets/design-time-layers-g9VS6amb.js +1 -0
  154. package/dist/assets/design-time-mount.service-HtMr_vBd.js +2 -0
  155. package/dist/assets/design-time-react-mount-Dx6fJ-Hg.js +1 -0
  156. package/dist/assets/{directional-shadow-fit-BVkOKAv2.js → directional-shadow-fit-Cjz_Eg2b.js} +1 -1
  157. package/dist/assets/{document-preview-three-Kbg2GCLm.js → document-preview-three-C3y0syYQ.js} +1 -1
  158. package/dist/assets/{dom-authoring-adapter-CY8C7f4T.js → dom-authoring-adapter-CEeFyatF.js} +1 -1
  159. package/dist/assets/{draco3d-BBUTcNkz.js → draco3d-FKy0apkb.js} +1 -1
  160. package/dist/assets/drei-asset-caches-jJoHXbTj.js +2 -0
  161. package/dist/assets/{edit-mode-audio.service-Bzetwd5B.js → edit-mode-audio.service-DZTnrW6t.js} +1 -1
  162. package/dist/assets/edit-mode-authoring-D_BiHCQj.js +1 -0
  163. package/dist/assets/{edit-mode-networking.service-YCX6RRb_.js → edit-mode-networking.service-BzMI2VxO.js} +1 -1
  164. package/dist/assets/editor-api-Bzmo0o8_.js +1 -0
  165. package/dist/assets/{entry-adjudication-Cq8Yeb74.js → entry-adjudication-BYy7TXOB.js} +1 -1
  166. package/dist/assets/{events-156d8d12.esm-ErOhDXXB.js → events-156d8d12.esm-C734MYnx.js} +7 -7
  167. package/dist/assets/{extend-B-eOccUm.js → extend-CLG0ymiX.js} +1 -1
  168. package/dist/assets/forest-P_CQY3b_.exr +0 -0
  169. package/dist/assets/fork-menu-De7HU6_H.js +1 -0
  170. package/dist/assets/{frame-debugger-store-D1Mf_5up.js → frame-debugger-store-BZgIOlU6.js} +1 -1
  171. package/dist/assets/{game-DHOZVb-7.js → game-D5EJoILQ.js} +1 -1
  172. package/dist/assets/{game-contract-seams-a5YXejOu.js → game-contract-seams-TCpIMmHP.js} +1 -1
  173. package/dist/assets/{game-css-scope-transform-Eng4wS8E.js → game-css-scope-transform-NbpajQr-.js} +1 -1
  174. package/dist/assets/game-document.service-6eRlrI-d.js +1 -0
  175. package/dist/assets/game-eval.command-hKnSMlX0.js +2 -0
  176. package/dist/assets/{game-input-seams-CIQdetRw.js → game-input-seams-BC6xhZy3.js} +1 -1
  177. package/dist/assets/{game-module-access-B2mFxv-i.js → game-module-access-ry3xb1Ix.js} +1 -1
  178. package/dist/assets/{gameplay-export-BoKXm51x.js → gameplay-export-DiLQuPpn.js} +1 -1
  179. package/dist/assets/gameplay-replay-Bsre-1K8.js +1 -0
  180. package/dist/assets/{gameplay-rng-trap-CTNhm-UW.js → gameplay-rng-trap-BhRx_CtU.js} +1 -1
  181. package/dist/assets/gameplay.command-BqiyGn-I.js +1 -0
  182. package/dist/assets/{generation-jobs-BQrXbGp_.js → generation-jobs-BYcpgeGk.js} +1 -1
  183. package/dist/assets/generation.service-O81IqA-6.js +1 -0
  184. package/dist/assets/{generations-DzUogZsM.js → generations-CsGQ3twi.js} +1 -1
  185. package/dist/assets/{generations.status-CgOUBCum.js → generations.status-C3YU0_ml.js} +1 -1
  186. package/dist/assets/godot.style-DxJaFWOP.js +1 -0
  187. package/dist/assets/godot.view-BFsHk8b2.js +1 -0
  188. package/dist/assets/{hosted-asset-materialization-CiIvWkGU.js → hosted-asset-materialization-Bk-plQF6.js} +2 -2
  189. package/dist/assets/{ibl-override-material-BlmCxFKq.js → ibl-override-material-BhbGwgS1.js} +1 -1
  190. package/dist/assets/{index-mjWQmGhM.js → index-0n9eSzwT.js} +1 -1
  191. package/dist/assets/index-B4bmKkgY.css +1 -0
  192. package/dist/assets/index-BLo2LE8C.js +3404 -0
  193. package/dist/assets/index-BWW4-DBH.js +1 -0
  194. package/dist/assets/index-CLcsjKUs.js +1 -0
  195. package/dist/assets/index-CU5YUq-x.js +134 -0
  196. package/dist/assets/{index-DUpHH6JR.js → index-Cb6o_Td_.js} +1 -1
  197. package/dist/assets/index-Ckxb31Yz.js +1500 -0
  198. package/dist/assets/index-CnpsJMao.js +1 -0
  199. package/dist/assets/index-Cr23XhNm.js +1 -0
  200. package/dist/assets/index-DO1rWQ_r.js +487 -0
  201. package/dist/assets/{index-BcCBqgM_.js → index-DUh02lTr.js} +1 -1
  202. package/dist/assets/index-DXEHfb0b.js +1 -0
  203. package/dist/assets/{index-V1R-e5Bd.js → index-wRCvCebM.js} +1 -1
  204. package/dist/assets/{inference-diagnostics-Dhmtfbq_.js → inference-diagnostics-YW0yJkKx.js} +1 -1
  205. package/dist/assets/{ingest-BbYMC2vQ.js → ingest-BlQnR7s3.js} +1 -1
  206. package/dist/assets/ingest-boot-viewport-uG9jQ1zm.js +1 -0
  207. package/dist/assets/ingest-siblings-DRQXSWax.js +1 -0
  208. package/dist/assets/{ingest-source-persistence-C_6Hiyra.js → ingest-source-persistence-DH6ioCOu.js} +1 -1
  209. package/dist/assets/{ingest.service-BTDnQfM1.js → ingest.service-GeaWMaZX.js} +1 -1
  210. package/dist/assets/{input-manager-DH_hGW6d.js → input-manager-Cxx3RJgG.js} +1 -1
  211. package/dist/assets/{input-router-BNQvtIqw.js → input-router-FzxO5ld6.js} +1 -1
  212. package/dist/assets/{inspect-BZfi3mmo.js → inspect-BRgDdtVk.js} +1 -1
  213. package/dist/assets/instances.command-CFOMPSj3.js +1 -0
  214. package/dist/assets/{instruments-CKR02Y8I.js → instruments-IKn-vvNb.js} +1 -1
  215. package/dist/assets/interior-Bo_lba15.exr +0 -0
  216. package/dist/assets/{json-history-resource-BbxllWfV.js → json-history-resource-r-9q_hxP.js} +1 -1
  217. package/dist/assets/{light-D-_wsKTq.js → light-CFAor97k.js} +1 -1
  218. package/dist/assets/light-camera-factory-D1sgz3YB.js +1 -0
  219. package/dist/assets/live-mixers-BRkRHd6g.js +1 -0
  220. package/dist/assets/{loader-CaF_I7Yt.js → loader-BbMsvIxP.js} +1 -1
  221. package/dist/assets/machine.document-CgmsOh-s.js +24 -0
  222. package/dist/assets/machines.finder-nxiCgQc2.js +1 -0
  223. package/dist/assets/matcap-texture-Dh65bX5V.js +1 -0
  224. package/dist/assets/{material-CpAdjDxn.js → material-D5kXEZWQ.js} +1 -1
  225. package/dist/assets/{material-factory-Bz6h__6g.js → material-factory-0Qb0VuZ5.js} +1 -1
  226. package/dist/assets/material-preview.view-DqNcpd_b.js +1 -0
  227. package/dist/assets/{mesh-B3WPtNKO.js → mesh-BKPgNTwh.js} +1 -1
  228. package/dist/assets/{mesh-shadow-CZnXrw_l.js → mesh-shadow-BDQP4mHs.js} +1 -1
  229. package/dist/assets/model-asset-sections.service-DWPLmkqa.js +1 -0
  230. package/dist/assets/model-inspection-Cxfg_Fei.js +1 -0
  231. package/dist/assets/model.layout-BpZE1W9V.js +1 -0
  232. package/dist/assets/{models.finder-G2jQgIRu.js → models.finder-DHW17ZEa.js} +1 -1
  233. package/dist/assets/module-mode-CRfHyIMS.js +2 -0
  234. package/dist/assets/mount-canvas-ingest-root-BZZ8M3Lu.js +2 -0
  235. package/dist/assets/mount-dom-ingest-root-D1GV6Jjt.js +2 -0
  236. package/dist/assets/{mount-game-6t9cKNo4.js → mount-game-F9e76auh.js} +1 -1
  237. package/dist/assets/mount-ingest-root-B5D-Lmmk.js +2 -0
  238. package/dist/assets/{mount-manifest-CGVxhmAw.js → mount-manifest-cYRhgHfo.js} +1 -1
  239. package/dist/assets/mount-three-ingest-root-BNnouaBn.js +1 -0
  240. package/dist/assets/{mounted-authoring-Dmg5xmhP.js → mounted-authoring-TIN5EnCb.js} +1 -1
  241. package/dist/assets/{mounted-story-viewport-source-DjP6RA9U.js → mounted-story-viewport-source-CAlEmE0_.js} +1 -1
  242. package/dist/assets/{native-debug-module-CWicoSGD.js → native-debug-module-j-MekcLS.js} +1 -1
  243. package/dist/assets/{navigation-CIiCx-SM.js → navigation-DmR1BDVo.js} +1 -1
  244. package/dist/assets/{navmesh.menu-CAKiH8PW.js → navmesh.menu-FhL1pGx1.js} +1 -1
  245. package/dist/assets/{navmesh.service-jgDWlgj1.js → navmesh.service-usyDeJlm.js} +1 -1
  246. package/dist/assets/{network.utility-CEu5nHf7.js → network.utility-BPh4hTmh.js} +1 -1
  247. package/dist/assets/night-CvV4Gybt.exr +0 -0
  248. package/dist/assets/{object3d-authoring-subject-CH5sI2oP.js → object3d-authoring-subject-CyE4rQ2A.js} +1 -1
  249. package/dist/assets/oid-transform-BOqL6YH6.js +2 -0
  250. package/dist/assets/{particles-Y626p22p.js → particles-C47L-dda.js} +1 -1
  251. package/dist/assets/particles-factory-CRqPLdS7.js +1 -0
  252. package/dist/assets/pixi-authoring-adapter-C5Ikqj5-.js +1 -0
  253. package/dist/assets/{pixi-live-write-target-DuWydlWb.js → pixi-live-write-target-OWBk79dp.js} +1 -1
  254. package/dist/assets/pixi-primitive-D5igywJ_.js +1 -0
  255. package/dist/assets/pixi-react-root-factory-9lZ0Yz-n.js +1 -0
  256. package/dist/assets/play-mode-DomOvQie.js +22 -0
  257. package/dist/assets/play.command-DoqjH-Pp.js +2 -0
  258. package/dist/assets/{playtest-BXIL1JEF.js → playtest-BnFenMBW.js} +1 -1
  259. package/dist/assets/{pose-guard-6Osb2cFu.js → pose-guard-Bb3gZOzk.js} +1 -1
  260. package/dist/assets/{product-DFhyARJj.js → product-CTDJoVo5.js} +1 -1
  261. package/dist/assets/{profiler.action-CaXJDp3t.js → profiler.action-C_OFGkDw.js} +1 -1
  262. package/dist/assets/{profiler.menu-BIMF6Bi4.js → profiler.menu-BJbnVoo4.js} +1 -1
  263. package/dist/assets/{profiler.utility-BExw9wBO.js → profiler.utility-qpfhuwRw.js} +1 -1
  264. package/dist/assets/project-authoring-session-BV-MM8Fl.js +2 -0
  265. package/dist/assets/{project-provenance-BoP3nrle.js → project-provenance-4ldz-EOG.js} +1 -1
  266. package/dist/assets/{properties-bone-constraints.inspector-ByT6p7S-.js → properties-bone-constraints.inspector-C-ByIdg1.js} +1 -1
  267. package/dist/assets/{properties-bone.inspector-z4qJwKO5.js → properties-bone.inspector-CXY0xCQB.js} +1 -1
  268. package/dist/assets/{properties-collection.inspector-D0_3ijWU.js → properties-collection.inspector-DIfkZAel.js} +1 -1
  269. package/dist/assets/{properties-constraints.inspector-CESzjuls.js → properties-constraints.inspector-BaunL5nT.js} +1 -1
  270. package/dist/assets/{properties-data.inspector-hG8Wgyzb.js → properties-data.inspector-DQD-jfO2.js} +1 -1
  271. package/dist/assets/{properties-material.inspector-CzY0JCQ6.js → properties-material.inspector-A0HZ4SX6.js} +1 -1
  272. package/dist/assets/{properties-modifiers.inspector-3dDhwf7g.js → properties-modifiers.inspector-GUnVhVwZ.js} +1 -1
  273. package/dist/assets/{properties-object.inspector-CiarfxkT.js → properties-object.inspector-Chsfa4Xa.js} +1 -1
  274. package/dist/assets/{properties-output.inspector-DKJxmKSD.js → properties-output.inspector-U7ZmD0Me.js} +1 -1
  275. package/dist/assets/{properties-particles.inspector-CCEdYWGm.js → properties-particles.inspector-umkW-OlI.js} +1 -1
  276. package/dist/assets/{properties-physics.inspector-B2c0KUyA.js → properties-physics.inspector-CLVBlWwL.js} +1 -1
  277. package/dist/assets/{properties-render.inspector-Bcm0HLRW.js → properties-render.inspector-D0u9taKy.js} +1 -1
  278. package/dist/assets/{properties-scene.inspector-PIM_eTb_.js → properties-scene.inspector-JwGCZQAx.js} +1 -1
  279. package/dist/assets/{properties-texture.inspector-CgFlnyr8.js → properties-texture.inspector-B1vC28pw.js} +1 -1
  280. package/dist/assets/{properties-view-layer.inspector-DGjF_Aqo.js → properties-view-layer.inspector-BuUKyBFp.js} +1 -1
  281. package/dist/assets/{properties-world.inspector-CrMvaRvB.js → properties-world.inspector-VXUj4dT4.js} +1 -1
  282. package/dist/assets/r3f-design-session-qJ2v5SrB.js +2 -0
  283. package/dist/assets/r3f-physics-binding-C8OqNRG2.js +1 -0
  284. package/dist/assets/{r3f-root-factory-z9llD1OU.js → r3f-root-factory-DjGnbU4n.js} +1 -1
  285. package/dist/assets/r3f-source-authoring-adapter-CG9heazM.js +12 -0
  286. package/dist/assets/{rapier-physics-bridge-CMoeVo3Y.js → rapier-physics-bridge-B-EK7KYV.js} +1 -1
  287. package/dist/assets/react-inspector.service-DWeXDHJq.js +1 -0
  288. package/dist/assets/{react-root-CEz5NTck.js → react-root-DGLRLr-F.js} +1 -1
  289. package/dist/assets/react-story-board-CSqHY0Cg.js +1 -0
  290. package/dist/assets/{react-three-fiber.esm-CycrbDlA.js → react-three-fiber.esm-BxIoqVh1.js} +1 -1
  291. package/dist/assets/{react-three-rapier.esm-CEfKpvxT.js → react-three-rapier.esm-BYzLhdSV.js} +1 -1
  292. package/dist/assets/react-world-authoring-adapter-BMT9kLWU.js +1 -0
  293. package/dist/assets/{realm-services-CobQsq_X.js → realm-services-D25JHoqD.js} +1 -1
  294. package/dist/assets/{reflection-probe-Don-M3Fj.js → reflection-probe-CqXWlicu.js} +1 -1
  295. package/dist/assets/{reflection-probe-capture.inspector-CmFUoJCx.js → reflection-probe-capture.inspector-B7Qa30vB.js} +1 -1
  296. package/dist/assets/regions-DWeEBnE2.js +1 -0
  297. package/dist/assets/{register-render-vitals-BiZk29b2.js → register-render-vitals-BO7x64kR.js} +1 -1
  298. package/dist/assets/{registry-02YZjMNp.js → registry-DlTluc4x.js} +1 -1
  299. package/dist/assets/{render-audio-control-vMRlePWb.js → render-audio-control-DCa_bOBI.js} +1 -1
  300. package/dist/assets/{render-batch-system-0vq7p0VC.js → render-batch-system-CzCp9YKM.js} +1 -1
  301. package/dist/assets/{render-control-Df3yTiyr.js → render-control-BNQr1eNO.js} +1 -1
  302. package/dist/assets/{render-env-D2IV2x5k.js → render-env-emvlfeTG.js} +1 -1
  303. package/dist/assets/{render-features-CPQ_e568.js → render-features-COF7MSQ9.js} +1 -1
  304. package/dist/assets/{render-settings-Bw4W9SYF.js → render-settings-C_kIMq8Y.js} +1 -1
  305. package/dist/assets/{resolve-three-SZE_WWUM.js → resolve-three-C-nx-QdA.js} +13 -13
  306. package/dist/assets/{root-seam-contract-Z0VWX3Bk.js → root-seam-contract-C7GOxf5x.js} +1 -1
  307. package/dist/assets/{run-ticks-settled-C4ksViyA.js → run-ticks-settled-B0cTtmhQ.js} +1 -1
  308. package/dist/assets/{scene-capture-CGYF-Viw.js → scene-capture-CLOc7GXc.js} +1 -1
  309. package/dist/assets/{scene-capture-BQKzU0NT.js → scene-capture-D10Nxkvp.js} +1 -1
  310. package/dist/assets/scene-document.service-B7kAVTko.js +2 -0
  311. package/dist/assets/{scene-framing-Cat0GtyJ.js → scene-framing-50N7SKuX.js} +1 -1
  312. package/dist/assets/{scene-index-B6BZOHMk.js → scene-index-Bce459yu.js} +1 -1
  313. package/dist/assets/{scene-query-C7_N-TpI.js → scene-query-IUZhw6pA.js} +1 -1
  314. package/dist/assets/{schema-kl9-2B_J.js → schema-Iy-mbzll.js} +1 -1
  315. package/dist/assets/sculpt.layout-D-K5cLw6.js +1 -0
  316. package/dist/assets/{seeded-random-i3mtgBKZ.js → seeded-random-CN0scLZj.js} +1 -1
  317. package/dist/assets/{session-CZ5JPg-z.js → session-CsR0lApe.js} +24 -15
  318. package/dist/assets/{setup-audio-S8GQF91f.js → setup-audio-BJ18gvXZ.js} +1 -1
  319. package/dist/assets/setup-particles-B6H-GbAA.js +1 -0
  320. package/dist/assets/{setup-physics-BeZ7-LKD.js → setup-physics-GugbTT0J.js} +1 -1
  321. package/dist/assets/{setup-renderer-DVXaSGin.js → setup-renderer-wt_a-p8r.js} +20 -20
  322. package/dist/assets/shading.layout-CZZHKBer.js +1 -0
  323. package/dist/assets/{sim-clock-CLflx7kg.js → sim-clock-DEfbb_-P.js} +1 -1
  324. package/dist/assets/{soft-particle-depth-DGvfQDi1.js → soft-particle-depth-CKUS1j0Y.js} +1 -1
  325. package/dist/assets/source-object3d-authoring-adapter-CfHQLFAL.js +1 -0
  326. package/dist/assets/{source-persistence-backend-C-aR-B_Y.js → source-persistence-backend-_-JMEXxE.js} +1 -1
  327. package/dist/assets/{spark-renderer-lifecycle-ynWESJcv.js → spark-renderer-lifecycle-9mnMW3Z4.js} +1 -1
  328. package/dist/assets/{spark.module-4pXQoz5d.js → spark.module-CXth-y_a.js} +1 -1
  329. package/dist/assets/stage-keyboard-C0FdDLOQ.js +1 -0
  330. package/dist/assets/stage-overlay-set-CwhCzbOy.js +1 -0
  331. package/dist/assets/stage-presence-markers-DVMDKiB-.js +1 -0
  332. package/dist/assets/stage-transform-tools-B09Z7v0o.js +1 -0
  333. package/dist/assets/standard-viewport-dressing-GUUr6GuK.js +20 -0
  334. package/dist/assets/{state-watch.action-BOvQR2qt.js → state-watch.action-CgF8qoFC.js} +1 -1
  335. package/dist/assets/{state-watch.menu-CNLvDeeY.js → state-watch.menu-CIMncESW.js} +1 -1
  336. package/dist/assets/{state-watch.utility-Bg1tTTQU.js → state-watch.utility-zTHkUALC.js} +1 -1
  337. package/dist/assets/static-batch-advisor-DqfXWRUq.js +1 -0
  338. package/dist/assets/story-capture-COQgezzl.js +1 -0
  339. package/dist/assets/story-documents-DQ0KORmd.js +3 -0
  340. package/dist/assets/story-documents.service-DOSaqPqv.js +1 -0
  341. package/dist/assets/story-documents.service-Gb7oUkbg.js +1 -0
  342. package/dist/assets/{story-media-presence-BHzk2IV5.js → story-media-presence-nW3zJqKv.js} +1 -1
  343. package/dist/assets/story-pixi-preview-COPTEsHo.js +1 -0
  344. package/dist/assets/story-presentation-CxADj5oz.js +1 -0
  345. package/dist/assets/{story-three-preview-BHEDZzcl.js → story-three-preview-C9W__8Or.js} +2 -2
  346. package/dist/assets/{structural-ids-Dc-7rEwi.js → structural-ids-CblajJQK.js} +1 -1
  347. package/dist/assets/studio-CysTBGIb.exr +0 -0
  348. package/dist/assets/sunrise-Dj0psFrf.exr +0 -0
  349. package/dist/assets/sunset-Bw3x2Bot.exr +0 -0
  350. package/dist/assets/{surface-state-DaxyruCj.js → surface-state-BAUJu6GY.js} +1 -1
  351. package/dist/assets/{system-runner-DkOjxEBt.js → system-runner-D_DtVrer.js} +1 -1
  352. package/dist/assets/team-playtest.service--79O6xkx.js +1 -0
  353. package/dist/assets/{three-CDSueJyJ.js → three-DSsr_Lvp.js} +1 -1
  354. package/dist/assets/{three-authoring-adapter-CmSQ3Vui.js → three-authoring-adapter-Yqsank46.js} +1 -1
  355. package/dist/assets/three-authoring.service-BDos-bRt.js +2 -0
  356. package/dist/assets/{three-ingest-runtime-QzDYk6tU.js → three-ingest-runtime-DWijtqQ8.js} +1 -1
  357. package/dist/assets/{three-projection-core-BmKMZ-nf.js → three-projection-core-kubBTx0s.js} +1 -1
  358. package/dist/assets/three-story-model-BraQFA9h.js +1 -0
  359. package/dist/assets/three-viewport-presentation-BL7Uc2i6.js +1 -0
  360. package/dist/assets/{three.module-D396a9Mn.js → three.module-IFn-4i31.js} +1 -1
  361. package/dist/assets/three.quarks.esm-CRKGjKAH.js +1039 -0
  362. package/dist/assets/transform-mode-request-Cu7ewbtr.js +1 -0
  363. package/dist/assets/{transform-writer-BhBBTx33.js → transform-writer-DXxrI4t7.js} +1 -1
  364. package/dist/assets/transport.header-CeND8Vzh.js +1 -0
  365. package/dist/assets/{trigger-volume-BNK2XzPL.js → trigger-volume-BCVRS3NM.js} +1 -1
  366. package/dist/assets/{tuples-CIQ4Bn1U.js → tuples-DKDGrN1t.js} +1 -1
  367. package/dist/assets/ui-board-document-DD2CAEAo.js +2 -0
  368. package/dist/assets/unity.style-vCmLw4gI.js +1 -0
  369. package/dist/assets/unity.view-DIn2S6Do.js +1 -0
  370. package/dist/assets/unreal.style-BQn-HhOX.js +1 -0
  371. package/dist/assets/unreal.view-adNBETZK.js +1 -0
  372. package/dist/assets/user-data-CZqsJDk-.js +1 -0
  373. package/dist/assets/{utility-view-state-BHypxA33.js → utility-view-state-DYJY8V8O.js} +1 -1
  374. package/dist/assets/uv-editing.layout-A8RA-cbM.js +1 -0
  375. package/dist/assets/{vgai-shared-three-Bc5PvpLM.js → vgai-shared-three-D_RAEumG.js} +1 -1
  376. package/dist/assets/{viewport-root-presentation-CWsE56K6.js → viewport-root-presentation-C9M98VNM.js} +1 -1
  377. package/dist/assets/{viewport-shading-BuA88e_A.js → viewport-shading-BzcvgJhK.js} +1 -1
  378. package/dist/assets/viewport-shading-boundary-CBvvzS-p.js +84 -0
  379. package/dist/assets/{viewport-surface-status-B3om4Kcf.js → viewport-surface-status-BFmnWp7z.js} +1 -1
  380. package/dist/assets/voxel-surface-ROWYug7H.js +1 -0
  381. package/dist/assets/webgl-frame-capture-CRKX73E9.js +1 -0
  382. package/dist/assets/webworkerAll-CehoCtFb.js +1 -0
  383. package/dist/assets/{worker-UrMcrc5_.js → worker-B7zhIsFh.js} +2 -2
  384. package/dist/assets/world-documents-DErHq15h.js +1 -0
  385. package/dist/assets/world-root-stage-binding-BIymcQ4K.js +1 -0
  386. package/dist/assets/{world-state-BWG-IcOd.js → world-state-ZGDGY_Xl.js} +1 -1
  387. package/dist/assets/{writer-B-KovzkA.js → writer-BPbm4_my.js} +5 -5
  388. package/dist/assets/xstate-animation-binding-Cvd4JbEY.js +1 -0
  389. package/dist/assets/{xstate-animation-meta-Q3u9zh_m.js → xstate-animation-meta-B3OZR8Q2.js} +1 -1
  390. package/dist/vgai-shared-three.json +1 -1
  391. package/dist-node/cli.js +317 -73
  392. package/dist-node/create.js +59 -19
  393. package/package.json +16 -13
  394. package/src/index.ts +6 -0
  395. package/template/.agents/skills/vgai-3d-models/SKILL.md +3 -3
  396. package/template/.agents/skills/vgai-threejs-authoring/SKILL.md +4 -9
  397. package/template/.claude/skills/vgai-3d-models/SKILL.md +3 -3
  398. package/template/.claude/skills/vgai-threejs-authoring/SKILL.md +4 -9
  399. package/template/.github/skills/vgai-3d-models/SKILL.md +3 -3
  400. package/template/.github/skills/vgai-threejs-authoring/SKILL.md +4 -9
  401. package/template/AGENTS.md +1 -1
  402. package/template/check-idioms.ts +4 -5
  403. package/template/package.json +9 -9
  404. package/template/tsconfig.json +1 -0
  405. package/template/vgai.adapter.ts +1 -0
  406. package/template-dotfiles/gitignore +2 -0
  407. package/workbench/src/media/game-cover.css +1 -1
  408. package/catalog/project-source/src/lib/bake/mesh-slice.ts +0 -157
  409. package/dist/assets/BufferGeometryUtils-Nz37EVXf.js +0 -1
  410. package/dist/assets/CanvasSceneViewport-Bpi6gVTC.js +0 -1
  411. package/dist/assets/ColladaLoader-aVOPIsCh.js +0 -3
  412. package/dist/assets/EXRLoader-Cdans_oJ.js +0 -1
  413. package/dist/assets/EffectComposer-DQxfsXBZ.js +0 -1
  414. package/dist/assets/EntityModelDocument-Ccvw66N9.js +0 -1
  415. package/dist/assets/EnvironmentAssetDocument-Dg-Qq6O6.js +0 -1
  416. package/dist/assets/FBXLoader-B4MoUtAn.js +0 -1
  417. package/dist/assets/Fbo-Dz-Soul3.js +0 -1
  418. package/dist/assets/GLTFExporter-HgrCle4L.js +0 -1
  419. package/dist/assets/Gltf-UHVWKz65.js +0 -2
  420. package/dist/assets/HDRLoader-THU88oVD.js +0 -5
  421. package/dist/assets/ImageViewer-Tn7s_MnW.js +0 -1
  422. package/dist/assets/InspectorObjectPreview-CVejvLRg.js +0 -1
  423. package/dist/assets/JsonAssetDocument-C7VGcLhu.js +0 -3
  424. package/dist/assets/MeshBVH-BiDHDcu-.js +0 -1
  425. package/dist/assets/ModelAssetDocument-F5GACirk.js +0 -1
  426. package/dist/assets/Object3DDocumentViewport-DB7T0NTl.js +0 -2
  427. package/dist/assets/Object3DPreview-DL8oi7Xs.js +0 -2
  428. package/dist/assets/OnlineAssetDetail-C6z9RvYK.js +0 -2
  429. package/dist/assets/PlayBar-BR-Vg3Jb.js +0 -2
  430. package/dist/assets/RGBELoader-BgBcQv8j.js +0 -1
  431. package/dist/assets/RectAreaLightUniformsLib-CMMoWfll.js +0 -1
  432. package/dist/assets/RootSelectionOverlay-BZPlxmXU.js +0 -1
  433. package/dist/assets/STLLoader-Dyv3lsxY.js +0 -1
  434. package/dist/assets/SimplifyModifier-C8ayvRzd.js +0 -1
  435. package/dist/assets/SourceAssetViewer-2SWQoUut.js +0 -12
  436. package/dist/assets/StageHost-BN-IoTef.js +0 -2
  437. package/dist/assets/ThreeBoardDocument-CVncZyIq.js +0 -2
  438. package/dist/assets/asset-budget-asset.menu-Di3KiQCd.js +0 -1
  439. package/dist/assets/asset-budget.action-DCzzcuTh.js +0 -1
  440. package/dist/assets/asset-budget.document-BWU8wnVW.js +0 -1
  441. package/dist/assets/asset-budget.menu-BGZpT_31.js +0 -1
  442. package/dist/assets/autoplay.service-BZBGNSvt.js +0 -1
  443. package/dist/assets/blender-emscripten-engine-9ZIRYNhe.js +0 -2
  444. package/dist/assets/blender-properties-tab-C5CyPydi.js +0 -3
  445. package/dist/assets/blender-runtime-host-BpBwGv7r.js +0 -4
  446. package/dist/assets/blender-runtime.document-lIYhhPtv.js +0 -8
  447. package/dist/assets/blender.command-BtJeWk-A.js +0 -1
  448. package/dist/assets/body-marks-h_xDxiDE.js +0 -1
  449. package/dist/assets/bridge.command-o5gDNEwa.js +0 -3
  450. package/dist/assets/browserAll-DeWblVez.js +0 -1
  451. package/dist/assets/canvas-entry-runtime-SfBxaR9M.js +0 -2
  452. package/dist/assets/component-board.service-DidCyM4O.js +0 -2
  453. package/dist/assets/component-verbs.service-Bv9jId3q.js +0 -1
  454. package/dist/assets/constraints.inspector-B9U9Yj-u.js +0 -1
  455. package/dist/assets/coverage.service-VTX5Mcsx.js +0 -3
  456. package/dist/assets/deferred-ingest-play-DCJi_Pgu.js +0 -2
  457. package/dist/assets/design-time-layers-wYgOTgni.js +0 -1
  458. package/dist/assets/design-time-mount.service-BzY21e1F.js +0 -2
  459. package/dist/assets/design-time-react-mount-DM9WLrF2.js +0 -1
  460. package/dist/assets/edit-mode-authoring-B47TfLqu.js +0 -1
  461. package/dist/assets/editor-api-BoJIcyZG.js +0 -1
  462. package/dist/assets/fflate.module-DPuTF8aG.js +0 -6
  463. package/dist/assets/fork-menu-BoVyw2Wu.js +0 -1
  464. package/dist/assets/game-document.service-DbRfx2V0.js +0 -1
  465. package/dist/assets/game-eval.command-D-7Dxbj_.js +0 -2
  466. package/dist/assets/gameplay-replay-e5umMlXv.js +0 -1
  467. package/dist/assets/gameplay.command-DxcVYX6F.js +0 -1
  468. package/dist/assets/generation.service-CDIgObuw.js +0 -1
  469. package/dist/assets/index-96FBF1Oj.js +0 -1
  470. package/dist/assets/index-BAWkB0dv.js +0 -1
  471. package/dist/assets/index-BDnS2b6S.js +0 -1
  472. package/dist/assets/index-BjTCPEQ7.js +0 -134
  473. package/dist/assets/index-CVCb_ImQ.js +0 -1
  474. package/dist/assets/index-CZd9o7Lu.js +0 -1
  475. package/dist/assets/index-D2fNXpHa.css +0 -1
  476. package/dist/assets/index-GIL7oGEO.js +0 -4894
  477. package/dist/assets/index-OrYXPk3Z.js +0 -487
  478. package/dist/assets/ingest-boot-viewport-D5rI_Kk_.js +0 -1
  479. package/dist/assets/ingest-siblings-Bop2kqVl.js +0 -1
  480. package/dist/assets/instances.command-D6UkZNO8.js +0 -1
  481. package/dist/assets/light-camera-factory-CWbbe9gI.js +0 -1
  482. package/dist/assets/live-behaviors-Bxq49Maz.js +0 -1
  483. package/dist/assets/matcap-texture-CVfalpWT.js +0 -1
  484. package/dist/assets/model-asset-sections.service-CHhFS3ZX.js +0 -1
  485. package/dist/assets/model.layout-BJUEQYUI.js +0 -1
  486. package/dist/assets/module-mode-DVBLT9d-.js +0 -2
  487. package/dist/assets/mount-canvas-ingest-root-DDuAWf_C.js +0 -2
  488. package/dist/assets/mount-dom-ingest-root-D_EiBgpn.js +0 -2
  489. package/dist/assets/mount-ingest-root-glv2SSWf.js +0 -2
  490. package/dist/assets/mount-three-ingest-root-hrUt9VVU.js +0 -1
  491. package/dist/assets/particles-factory-DnLOHXT8.js +0 -1
  492. package/dist/assets/pasteboard-materialize-BqSS4QzV.js +0 -20
  493. package/dist/assets/pasteboard.action-DU3UHtJG.js +0 -2
  494. package/dist/assets/pixi-authoring-adapter-CjibysC3.js +0 -1
  495. package/dist/assets/pixi-primitive-DlWbUPN9.js +0 -1
  496. package/dist/assets/pixi-react-root-factory-DYsznYRQ.js +0 -1
  497. package/dist/assets/play-mode-BFU2PCkG.js +0 -22
  498. package/dist/assets/play.command-BpqqLqkq.js +0 -2
  499. package/dist/assets/project-authoring-session-Bnt6icLr.js +0 -2
  500. package/dist/assets/r3f-design-session-D-4yyDO9.js +0 -2
  501. package/dist/assets/r3f-physics-binding-BBo8oma9.js +0 -1
  502. package/dist/assets/r3f-source-authoring-adapter-w6Bc60K-.js +0 -13
  503. package/dist/assets/react-inspector.service-B_neRnSK.js +0 -1
  504. package/dist/assets/react-story-board-BDDwiE2H.js +0 -1
  505. package/dist/assets/react-world-authoring-adapter-DmrwM3py.js +0 -1
  506. package/dist/assets/runtime-inspection-l2iFQSsg.js +0 -1
  507. package/dist/assets/scene-document.service-qkDjUrlP.js +0 -2
  508. package/dist/assets/sculpt.layout-zJF55yCR.js +0 -1
  509. package/dist/assets/setup-particles-GCXlnkj_.js +0 -1
  510. package/dist/assets/shading.layout-DULYZV6M.js +0 -1
  511. package/dist/assets/source-object3d-authoring-adapter-B-L6Ha6f.js +0 -1
  512. package/dist/assets/stage-invalidation-DBg3C3Ta.js +0 -1
  513. package/dist/assets/stage-keyboard-n-5kKH-m.js +0 -1
  514. package/dist/assets/stage-overlay-set-B9zp2sLB.js +0 -1
  515. package/dist/assets/stage-presence-markers-DiGI6A45.js +0 -1
  516. package/dist/assets/standard-viewport-dressing-CzjAe_0A.js +0 -7
  517. package/dist/assets/static-batch-advisor-B13QEH7d.js +0 -1
  518. package/dist/assets/story-capture-_gC8dXV-.js +0 -1
  519. package/dist/assets/story-documents--TDLaPeL.js +0 -3
  520. package/dist/assets/story-documents.service-BiS_YbNQ.js +0 -1
  521. package/dist/assets/story-documents.service-CxOPYJ2j.js +0 -1
  522. package/dist/assets/story-pixi-preview-BUrOJZXS.js +0 -1
  523. package/dist/assets/story-presentation-j2AVN-mK.js +0 -1
  524. package/dist/assets/team-playtest.service-DqOinFVA.js +0 -1
  525. package/dist/assets/three-authoring.service-iuHLwtf1.js +0 -2
  526. package/dist/assets/three-viewport-presentation-QBQpSdMh.js +0 -1
  527. package/dist/assets/three.quarks.esm-B1C61jGo.js +0 -1039
  528. package/dist/assets/transport.header-B-6HQlU2.js +0 -1
  529. package/dist/assets/ui-board-document-Bwtt--xp.js +0 -2
  530. package/dist/assets/use-live-actor-state-DErbWQWF.js +0 -1
  531. package/dist/assets/user-data-BB2Of6Ht.js +0 -1
  532. package/dist/assets/uv-editing.layout-BEKHxmHw.js +0 -1
  533. package/dist/assets/viewport-shading-boundary-B_-_gABg.js +0 -82
  534. package/dist/assets/voxel-surface-DtcsSWRL.js +0 -1
  535. package/dist/assets/webgl-frame-capture-FlF9zQmW.js +0 -1
  536. package/dist/assets/webworkerAll-CM2o_dnz.js +0 -1
  537. package/dist/assets/world-documents-147tiFZe.js +0 -1
  538. package/dist/assets/world-root-stage-binding-vwTrtBz6.js +0 -1
  539. package/dist/assets/xstate-animation-binding-Brd0NST6.js +0 -1
  540. package/dist/assets/xstate-behavior.action-B8UluFBK.js +0 -1
  541. package/dist/assets/xstate-behavior.document-CKAsE45I.js +0 -1
  542. package/dist/assets/xstate-behavior.inspector-vJJyuifc.js +0 -1
  543. package/dist/assets/xstate-behavior.menu-BXbPICIh.js +0 -1
  544. package/dist/assets/xstate-inspection-BsZv8LS9.js +0 -1
@@ -0,0 +1 @@
1
+ import{r as i,t as s,u as a,v as n}from"./index-Ckxb31Yz.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"./three.module-IFn-4i31.js";const c=/\bcreateMachine\s*\(/,E={name:"machinesFromModules",schema:i({finder:n("machinesFromModules"),include:s(a().min(1)).min(1).describe("Project-relative globs of the modules that may declare machines (`src/**/*.ts`)")}).strict(),run(m,r){const t=[];for(const e of r.sources??[]){if(!c.test(e.source))continue;const o=(e.path.split("/").pop()??e.path).replace(/\.[cm]?[jt]sx?$/,"");t.push({id:`machine:${e.path}`,label:o,kind:"machine",region:null,authorable:!0,reach:{kind:"root-mount"},source:{path:e.path}})}return{entries:t,notes:[]}}};export{E as finder};
@@ -0,0 +1 @@
1
+ import{H as N,r as b,a0 as y}from"./three.module-IFn-4i31.js";const S=256;function k(a){const t=Math.min(1,Math.max(0,a));return t<=.0031308?t*12.92:1.055*t**(1/2.4)-.055}function M(a,t,e){const n=Math.hypot(a,t,e)||1;return[a/n,t/n,e/n]}function B(a=S){const t=document.createElement("canvas");t.width=a,t.height=a;const e=t.getContext("2d");if(!e)return t;const n=e.createImageData(a,a),o=M(-.45,.62,.64),m=M(.65,-.35,.5),u=M(o[0],o[1],o[2]+1),v=[.7,.69,.68],w=[.34,.4,.52],F=[.85,.88,1];for(let r=0;r<a;r++)for(let s=0;s<a;s++){const f=(s+.5)/a/.5-1,h=1-(r+.5)/a/.5,i=f*f+h*h,d=i>1,g=d?1/Math.sqrt(i):1,p=f*g,x=h*g,l=d?0:Math.sqrt(Math.max(0,1-i)),I=Math.max(0,p*o[0]+x*o[1]+l*o[2]),T=Math.max(0,p*m[0]+x*m[1]+l*m[2]),q=Math.max(0,p*u[0]+x*u[1]+l*u[2])**42*.5,D=(1-l)**3.2*.4,C=(r*a+s)*4;for(let c=0;c<3;c++){const E=v[c]*(.16+.8*I)+w[c]*.3*T+F[c]*D+q;n.data[C+c]=Math.round(k(E)*255)}n.data[C+3]=255}return e.putImageData(n,0,0),t}function H(a=S){const t=new N(B(a));return t.colorSpace=b,t.minFilter=y,t.magFilter=y,t.generateMipmaps=!1,t.needsUpdate=!0,t}export{H as createNeutralMatcapTexture,B as drawNeutralMatcap};
@@ -1 +1 @@
1
- import{r as t,L as e,u as i,J as o,c5 as a,c4 as s}from"./index-GIL7oGEO.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"./three.module-D396a9Mn.js";const n=t({type:s(["standard","physical","basic","toon"]).describe("Material shading model"),color:i().optional().describe('Base color as CSS hex string (e.g. "#ff0000")'),metalness:e().optional().describe("Metalness factor 0–1 (standard/physical only)"),roughness:e().optional().describe("Roughness factor 0–1 (standard/physical only)"),map:i().optional().describe("Path to albedo/diffuse texture image"),normalMap:i().optional().describe("Path to normal map texture image"),emissive:i().optional().describe("Emissive color as CSS hex string"),emissiveIntensity:e().optional().describe("Emissive light intensity multiplier"),emissiveMap:i().optional().describe("Path to emissive map texture image"),aoMap:i().optional().describe("Path to ambient occlusion map texture image"),lightMap:i().optional().describe("Path to a baked lightmap texture (uses the mesh's second UV set). Applies the pre-baked GI/shadow result on top of the material."),lightMapIntensity:e().optional().describe("Lightmap intensity multiplier (default 1)."),roughnessMap:i().optional().describe("Path to roughness map texture image"),metalnessMap:i().optional().describe("Path to metalness map texture image"),opacity:e().optional().describe("Opacity 0–1. Set transparent: true to enable"),transparent:a().optional().describe("Enable alpha blending for this material"),side:s(["front","back","double"]).optional().describe("Which face sides to render"),flatShading:a().optional().describe("Use flat (faceted) shading instead of smooth"),clearcoat:t({clearcoat:e().describe("Clearcoat layer intensity 0–1"),clearcoatRoughness:e().optional().describe("Clearcoat roughness 0–1"),clearcoatMap:i().optional().describe("Path to clearcoat intensity map"),clearcoatRoughnessMap:i().optional().describe("Path to clearcoat roughness map")}).optional().describe("Clearcoat layer (physical only)"),transmission:t({transmission:e().describe("Transmission intensity 0–1 (glass, liquid)"),ior:e().optional().describe("Index of refraction (default 1.5)"),thickness:e().optional().describe("Volume thickness for refraction"),attenuationColor:i().optional().describe("Color absorbed over distance"),attenuationDistance:e().optional().describe("Distance at which attenuation color takes full effect"),transmissionMap:i().optional().describe("Path to transmission map")}).optional().describe("Light transmission (physical only)"),sheen:t({sheen:e().describe("Sheen intensity 0–1 (fabric, velvet)"),sheenColor:i().optional().describe("Sheen tint color"),sheenRoughness:e().optional().describe("Sheen roughness 0–1"),sheenColorMap:i().optional().describe("Path to sheen color map"),sheenRoughnessMap:i().optional().describe("Path to sheen roughness map")}).optional().describe("Sheen layer (physical only)"),iridescence:t({iridescence:e().describe("Iridescence intensity 0–1 (soap bubbles, oil slick)"),iridescenceIOR:e().optional().describe("Thin-film IOR (default 1.3)"),iridescenceThicknessRange:o([e(),e()]).optional().describe("Min/max thin-film thickness in nm"),iridescenceMap:i().optional().describe("Path to iridescence intensity map"),iridescenceThicknessMap:i().optional().describe("Path to iridescence thickness map")}).optional().describe("Iridescence thin-film (physical only)"),displacementMap:i().optional().describe("Path to displacement/height map"),displacementScale:e().optional().describe("Displacement height multiplier"),displacementBias:e().optional().describe("Displacement offset")}).strict(),f=n.describe("Material appearance properties");export{f as MaterialDescriptorSchema};
1
+ import{r as t,O as e,u as i,L as o,cz as a,cy as s}from"./index-Ckxb31Yz.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"./three.module-IFn-4i31.js";const n=t({type:s(["standard","physical","basic","toon"]).describe("Material shading model"),color:i().optional().describe('Base color as CSS hex string (e.g. "#ff0000")'),metalness:e().optional().describe("Metalness factor 0–1 (standard/physical only)"),roughness:e().optional().describe("Roughness factor 0–1 (standard/physical only)"),map:i().optional().describe("Path to albedo/diffuse texture image"),normalMap:i().optional().describe("Path to normal map texture image"),emissive:i().optional().describe("Emissive color as CSS hex string"),emissiveIntensity:e().optional().describe("Emissive light intensity multiplier"),emissiveMap:i().optional().describe("Path to emissive map texture image"),aoMap:i().optional().describe("Path to ambient occlusion map texture image"),lightMap:i().optional().describe("Path to a baked lightmap texture (uses the mesh's second UV set). Applies the pre-baked GI/shadow result on top of the material."),lightMapIntensity:e().optional().describe("Lightmap intensity multiplier (default 1)."),roughnessMap:i().optional().describe("Path to roughness map texture image"),metalnessMap:i().optional().describe("Path to metalness map texture image"),opacity:e().optional().describe("Opacity 0–1. Set transparent: true to enable"),transparent:a().optional().describe("Enable alpha blending for this material"),side:s(["front","back","double"]).optional().describe("Which face sides to render"),flatShading:a().optional().describe("Use flat (faceted) shading instead of smooth"),clearcoat:t({clearcoat:e().describe("Clearcoat layer intensity 0–1"),clearcoatRoughness:e().optional().describe("Clearcoat roughness 0–1"),clearcoatMap:i().optional().describe("Path to clearcoat intensity map"),clearcoatRoughnessMap:i().optional().describe("Path to clearcoat roughness map")}).optional().describe("Clearcoat layer (physical only)"),transmission:t({transmission:e().describe("Transmission intensity 0–1 (glass, liquid)"),ior:e().optional().describe("Index of refraction (default 1.5)"),thickness:e().optional().describe("Volume thickness for refraction"),attenuationColor:i().optional().describe("Color absorbed over distance"),attenuationDistance:e().optional().describe("Distance at which attenuation color takes full effect"),transmissionMap:i().optional().describe("Path to transmission map")}).optional().describe("Light transmission (physical only)"),sheen:t({sheen:e().describe("Sheen intensity 0–1 (fabric, velvet)"),sheenColor:i().optional().describe("Sheen tint color"),sheenRoughness:e().optional().describe("Sheen roughness 0–1"),sheenColorMap:i().optional().describe("Path to sheen color map"),sheenRoughnessMap:i().optional().describe("Path to sheen roughness map")}).optional().describe("Sheen layer (physical only)"),iridescence:t({iridescence:e().describe("Iridescence intensity 0–1 (soap bubbles, oil slick)"),iridescenceIOR:e().optional().describe("Thin-film IOR (default 1.3)"),iridescenceThicknessRange:o([e(),e()]).optional().describe("Min/max thin-film thickness in nm"),iridescenceMap:i().optional().describe("Path to iridescence intensity map"),iridescenceThicknessMap:i().optional().describe("Path to iridescence thickness map")}).optional().describe("Iridescence thin-film (physical only)"),displacementMap:i().optional().describe("Path to displacement/height map"),displacementScale:e().optional().describe("Displacement height multiplier"),displacementBias:e().optional().describe("Displacement offset")}).strict(),f=n.describe("Material appearance properties");export{f as MaterialDescriptorSchema};
@@ -1 +1 @@
1
- import{loadTexture as n}from"./asset-loaders-BOy5Ss8k.js";import{DEFAULTS as t}from"./defaults-DKiBJCPN.js";import{B as l,bI as M,bJ as d,y as u,H as g,F as p,ao as y,ap as v,aq as f,bK as I,C as h,bL as R,z as w}from"./three.module-D396a9Mn.js";import"./index-GIL7oGEO.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"./SkeletonUtils-Cps8GOC6.js";import"./asset-parse-error-BHMwBRU3.js";import"./user-data-BB2Of6Ht.js";import"./object-marks-DwvIEBOK.js";import"./loader-CaF_I7Yt.js";function E(e){const s=e.args??[];switch(e.type){case"box":return new l(s[0]??1,s[1]??1,s[2]??1);case"sphere":return new g(s[0]??.5,s[1]??32,s[2]??16);case"plane":return new u(s[0]??1,s[1]??1,s[2]??1,s[3]??1);case"cylinder":return new d(s[0]??.5,s[1]??.5,s[2]??1,s[3]??32);case"capsule":return new M(s[0]??.5,s[1]??1,s[2]??4,s[3]??16);default:return new l(1,1,1)}}function H(e){if(!e)return new p({color:t.material.color});const s={};e.map&&(s.map=n(e.map)),e.normalMap&&(s.normalMap=n(e.normalMap)),e.emissiveMap&&(s.emissiveMap=n(e.emissiveMap)),e.aoMap&&(s.aoMap=n(e.aoMap)),e.lightMap&&(s.lightMap=n(e.lightMap)),e.roughnessMap&&(s.roughnessMap=n(e.roughnessMap)),e.metalnessMap&&(s.metalnessMap=n(e.metalnessMap));const i=t.material,c=e.side??i.side,r=c==="back"?y:c==="double"?v:f,o=e.opacity??i.opacity,a=e.transparent??i.transparent;switch(e.type){case"basic":return new w({color:e.color??i.color,...s,lightMapIntensity:e.lightMapIntensity??1,opacity:o,transparent:a,side:r});case"toon":return new R({color:e.color??i.color,...s,lightMapIntensity:e.lightMapIntensity??1,emissive:e.emissive??i.emissive,emissiveIntensity:e.emissiveIntensity??i.emissiveIntensity,opacity:o,transparent:a,side:r});case"physical":return new I({color:e.color??i.color,metalness:e.metalness??i.metalness,roughness:e.roughness??i.roughness,...s,lightMapIntensity:e.lightMapIntensity??1,emissive:e.emissive??i.emissive,emissiveIntensity:e.emissiveIntensity??i.emissiveIntensity,opacity:o,transparent:a,side:r,flatShading:e.flatShading??i.flatShading,...e.clearcoat?{clearcoat:e.clearcoat.clearcoat,clearcoatRoughness:e.clearcoat.clearcoatRoughness??i.clearcoat.clearcoatRoughness,...e.clearcoat.clearcoatMap?{clearcoatMap:n(e.clearcoat.clearcoatMap)}:{},...e.clearcoat.clearcoatRoughnessMap?{clearcoatRoughnessMap:n(e.clearcoat.clearcoatRoughnessMap)}:{}}:{},...e.transmission?{transmission:e.transmission.transmission,ior:e.transmission.ior??i.transmission.ior,thickness:e.transmission.thickness??i.transmission.thickness,...e.transmission.attenuationColor?{attenuationColor:new h(e.transmission.attenuationColor)}:{},attenuationDistance:e.transmission.attenuationDistance??1/0,...e.transmission.transmissionMap?{transmissionMap:n(e.transmission.transmissionMap)}:{}}:{},...e.sheen?{sheen:e.sheen.sheen,sheenColor:new h(e.sheen.sheenColor??i.sheen.sheenColor),sheenRoughness:e.sheen.sheenRoughness??i.sheen.sheenRoughness,...e.sheen.sheenColorMap?{sheenColorMap:n(e.sheen.sheenColorMap)}:{},...e.sheen.sheenRoughnessMap?{sheenRoughnessMap:n(e.sheen.sheenRoughnessMap)}:{}}:{},...e.iridescence?{iridescence:e.iridescence.iridescence,iridescenceIOR:e.iridescence.iridescenceIOR??i.iridescence.iridescenceIOR,iridescenceThicknessRange:e.iridescence.iridescenceThicknessRange??i.iridescence.iridescenceThicknessRange,...e.iridescence.iridescenceMap?{iridescenceMap:n(e.iridescence.iridescenceMap)}:{},...e.iridescence.iridescenceThicknessMap?{iridescenceThicknessMap:n(e.iridescence.iridescenceThicknessMap)}:{}}:{},...e.displacementMap?{displacementMap:n(e.displacementMap)}:{},...e.displacementScale!==void 0?{displacementScale:e.displacementScale}:{},...e.displacementBias!==void 0?{displacementBias:e.displacementBias}:{}});default:return new p({color:e.color??i.color,metalness:e.metalness??i.metalness,roughness:e.roughness??i.roughness,...s,lightMapIntensity:e.lightMapIntensity??1,emissive:e.emissive??i.emissive,emissiveIntensity:e.emissiveIntensity??i.emissiveIntensity,opacity:o,transparent:a,side:r,flatShading:e.flatShading??i.flatShading})}}export{E as createGeometry,H as createMaterial};
1
+ import{loadTexture as n}from"./asset-loaders-BxG1LykH.js";import{DEFAULTS as t}from"./defaults-DKiBJCPN.js";import{B as l,bF as M,bG as d,w as u,z as g,y as p,ak as y,al as v,am as f,bH as I,v as h,bI as R,x as w}from"./three.module-IFn-4i31.js";import"./index-Ckxb31Yz.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"./SkeletonUtils-C8ayciDc.js";import"./asset-parse-error-BHMwBRU3.js";import"./user-data-CZqsJDk-.js";import"./object-marks-DwvIEBOK.js";import"./loader-BbMsvIxP.js";function L(e){const s=e.args??[];switch(e.type){case"box":return new l(s[0]??1,s[1]??1,s[2]??1);case"sphere":return new g(s[0]??.5,s[1]??32,s[2]??16);case"plane":return new u(s[0]??1,s[1]??1,s[2]??1,s[3]??1);case"cylinder":return new d(s[0]??.5,s[1]??.5,s[2]??1,s[3]??32);case"capsule":return new M(s[0]??.5,s[1]??1,s[2]??4,s[3]??16);default:return new l(1,1,1)}}function U(e){if(!e)return new p({color:t.material.color});const s={};e.map&&(s.map=n(e.map)),e.normalMap&&(s.normalMap=n(e.normalMap)),e.emissiveMap&&(s.emissiveMap=n(e.emissiveMap)),e.aoMap&&(s.aoMap=n(e.aoMap)),e.lightMap&&(s.lightMap=n(e.lightMap)),e.roughnessMap&&(s.roughnessMap=n(e.roughnessMap)),e.metalnessMap&&(s.metalnessMap=n(e.metalnessMap));const i=t.material,c=e.side??i.side,r=c==="back"?y:c==="double"?v:f,o=e.opacity??i.opacity,a=e.transparent??i.transparent;switch(e.type){case"basic":return new w({color:e.color??i.color,...s,lightMapIntensity:e.lightMapIntensity??1,opacity:o,transparent:a,side:r});case"toon":return new R({color:e.color??i.color,...s,lightMapIntensity:e.lightMapIntensity??1,emissive:e.emissive??i.emissive,emissiveIntensity:e.emissiveIntensity??i.emissiveIntensity,opacity:o,transparent:a,side:r});case"physical":return new I({color:e.color??i.color,metalness:e.metalness??i.metalness,roughness:e.roughness??i.roughness,...s,lightMapIntensity:e.lightMapIntensity??1,emissive:e.emissive??i.emissive,emissiveIntensity:e.emissiveIntensity??i.emissiveIntensity,opacity:o,transparent:a,side:r,flatShading:e.flatShading??i.flatShading,...e.clearcoat?{clearcoat:e.clearcoat.clearcoat,clearcoatRoughness:e.clearcoat.clearcoatRoughness??i.clearcoat.clearcoatRoughness,...e.clearcoat.clearcoatMap?{clearcoatMap:n(e.clearcoat.clearcoatMap)}:{},...e.clearcoat.clearcoatRoughnessMap?{clearcoatRoughnessMap:n(e.clearcoat.clearcoatRoughnessMap)}:{}}:{},...e.transmission?{transmission:e.transmission.transmission,ior:e.transmission.ior??i.transmission.ior,thickness:e.transmission.thickness??i.transmission.thickness,...e.transmission.attenuationColor?{attenuationColor:new h(e.transmission.attenuationColor)}:{},attenuationDistance:e.transmission.attenuationDistance??1/0,...e.transmission.transmissionMap?{transmissionMap:n(e.transmission.transmissionMap)}:{}}:{},...e.sheen?{sheen:e.sheen.sheen,sheenColor:new h(e.sheen.sheenColor??i.sheen.sheenColor),sheenRoughness:e.sheen.sheenRoughness??i.sheen.sheenRoughness,...e.sheen.sheenColorMap?{sheenColorMap:n(e.sheen.sheenColorMap)}:{},...e.sheen.sheenRoughnessMap?{sheenRoughnessMap:n(e.sheen.sheenRoughnessMap)}:{}}:{},...e.iridescence?{iridescence:e.iridescence.iridescence,iridescenceIOR:e.iridescence.iridescenceIOR??i.iridescence.iridescenceIOR,iridescenceThicknessRange:e.iridescence.iridescenceThicknessRange??i.iridescence.iridescenceThicknessRange,...e.iridescence.iridescenceMap?{iridescenceMap:n(e.iridescence.iridescenceMap)}:{},...e.iridescence.iridescenceThicknessMap?{iridescenceThicknessMap:n(e.iridescence.iridescenceThicknessMap)}:{}}:{},...e.displacementMap?{displacementMap:n(e.displacementMap)}:{},...e.displacementScale!==void 0?{displacementScale:e.displacementScale}:{},...e.displacementBias!==void 0?{displacementBias:e.displacementBias}:{}});default:return new p({color:e.color??i.color,metalness:e.metalness??i.metalness,roughness:e.roughness??i.roughness,...s,lightMapIntensity:e.lightMapIntensity??1,emissive:e.emissive??i.emissive,emissiveIntensity:e.emissiveIntensity??i.emissiveIntensity,opacity:o,transparent:a,side:r,flatShading:e.flatShading??i.flatShading})}}export{L as createGeometry,U as createMaterial};
@@ -0,0 +1 @@
1
+ const e="workspace.view",r={id:"blender-material-preview",title:"Material Preview",layer:{all:{lighting:{source:"preview",auto:null,preview:{sceneLights:!1,sun:{enabled:!1},environment:{enabled:!0,image:"blender:forest",energy:1,rotation:0}},tone:{mapper:"agx",exposure:1}},backdrop:{source:"fill"}}}};export{e as point,r as view};
@@ -1 +1 @@
1
- import{r as s,t as n,u as t,L as o,c4 as i}from"./index-GIL7oGEO.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"./three.module-D396a9Mn.js";const r=s({type:i(["box","sphere","plane","cylinder","capsule","gltf","splat"]).describe('Renderable type: a built-in mesh primitive, "gltf" for an external 3D model, or "splat" for a native Gaussian-splat asset'),args:n(o()).optional().describe("Geometry constructor args — box: [w,h,d], sphere: [radius], cylinder: [rTop,rBot,h], capsule: [radius,length], plane: [w,h,widthSegments,heightSegments]"),src:t().optional().describe('Path to the external render asset. Required for "gltf" (GLTF/GLB) and "splat" (SPZ)'),node:t().optional().describe(`Name (or path) of a single node inside the referenced glTF (resolved via getObjectByName) to instantiate as this entity's geometry, instead of the whole file. The geometry stays SHARED from the cached glTF — nothing is copied out. Only meaningful with type: "gltf". CONSTRAINT: a skinned/animated node cannot be lifted out of its armature — if the named node is a SkinnedMesh (or contains one), resolving it throws (degrade loudly, not silently).`),lod:n(s({distance:o().describe("Camera distance in world units at/beyond which this level shows (THREE.LOD threshold). Use 0 for the closest/highest-detail level."),node:t().describe("Name of a node inside the referenced glTF (mesh.src) to show at this distance — resolved via getObjectByName, geometry shared (F4-style). A skinned node throws (atomic-subtree rule).")})).optional().describe("Per-entity Level-of-Detail: distance-keyed glTF sub-nodes swapped by camera distance (THREE.LOD). gltf-only. Gated by the environment.rendering.lod master toggle — when off, only the closest level renders. Cannot combine with node.")}).strict(),u=r.refine(e=>e.type!=="gltf"&&e.type!=="splat"||e.src!=null,{message:"External render asset requires 'src' field"}).refine(e=>e.node==null||e.type==="gltf",{message:"Mesh 'node' is only meaningful with type: 'gltf' (names a sub-node of the referenced glTF)"}).refine(e=>e.lod==null||e.type==="gltf",{message:"Mesh 'lod' is only meaningful with type: 'gltf'"}).refine(e=>!(e.lod&&e.node),{message:"Mesh 'lod' cannot combine with 'node' — LOD is the multi-level form of a node ref"}).describe("Mesh geometry definition");export{u as MeshDescriptorSchema};
1
+ import{r as s,t as n,u as t,O as o,cy as i}from"./index-Ckxb31Yz.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"./three.module-IFn-4i31.js";const r=s({type:i(["box","sphere","plane","cylinder","capsule","gltf","splat"]).describe('Renderable type: a built-in mesh primitive, "gltf" for an external 3D model, or "splat" for a native Gaussian-splat asset'),args:n(o()).optional().describe("Geometry constructor args — box: [w,h,d], sphere: [radius], cylinder: [rTop,rBot,h], capsule: [radius,length], plane: [w,h,widthSegments,heightSegments]"),src:t().optional().describe('Path to the external render asset. Required for "gltf" (GLTF/GLB) and "splat" (SPZ)'),node:t().optional().describe(`Name (or path) of a single node inside the referenced glTF (resolved via getObjectByName) to instantiate as this entity's geometry, instead of the whole file. The geometry stays SHARED from the cached glTF — nothing is copied out. Only meaningful with type: "gltf". CONSTRAINT: a skinned/animated node cannot be lifted out of its armature — if the named node is a SkinnedMesh (or contains one), resolving it throws (degrade loudly, not silently).`),lod:n(s({distance:o().describe("Camera distance in world units at/beyond which this level shows (THREE.LOD threshold). Use 0 for the closest/highest-detail level."),node:t().describe("Name of a node inside the referenced glTF (mesh.src) to show at this distance — resolved via getObjectByName, geometry shared (F4-style). A skinned node throws (atomic-subtree rule).")})).optional().describe("Per-entity Level-of-Detail: distance-keyed glTF sub-nodes swapped by camera distance (THREE.LOD). gltf-only. Gated by the environment.rendering.lod master toggle — when off, only the closest level renders. Cannot combine with node.")}).strict(),u=r.refine(e=>e.type!=="gltf"&&e.type!=="splat"||e.src!=null,{message:"External render asset requires 'src' field"}).refine(e=>e.node==null||e.type==="gltf",{message:"Mesh 'node' is only meaningful with type: 'gltf' (names a sub-node of the referenced glTF)"}).refine(e=>e.lod==null||e.type==="gltf",{message:"Mesh 'lod' is only meaningful with type: 'gltf'"}).refine(e=>!(e.lod&&e.node),{message:"Mesh 'lod' cannot combine with 'node' — LOD is the multi-level form of a node ref"}).describe("Mesh geometry definition");export{u as MeshDescriptorSchema};
@@ -1 +1 @@
1
- import{M as o}from"./three.module-D396a9Mn.js";function t(i,r){r!==void 0&&i.traverse(e=>{e instanceof o&&(e.castShadow=r,e.receiveShadow=r)})}export{t as setMeshShadowEnabled};
1
+ import{M as o}from"./three.module-IFn-4i31.js";function t(i,r){r!==void 0&&i.traverse(e=>{e instanceof o&&(e.castShadow=r,e.receiveShadow=r)})}export{t as setMeshShadowEnabled};
@@ -0,0 +1 @@
1
+ import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{i as N,a as C,b as I,m as A}from"./model-inspection-Cxfg_Fei.js";import{eY as y,e_ as P,bX as B,eZ as p,gW as F,f2 as w,gX as V,gY as E,b$ as G,bx as m,eP as M,cc as v,a6 as O,a7 as R,fs as j,ft as t,aa as x,bD as z,gZ as L,a5 as D,f9 as U,e6 as _,g_ as q,g$ as W,h0 as Z,h1 as Y}from"./index-Ckxb31Yz.js";import{S as T}from"./source-object3d-authoring-adapter-CfHQLFAL.js";import{a as X}from"./project-provenance-4ldz-EOG.js";import{object3DAuthoringSubjectOf as H}from"./object3d-authoring-subject-CyE4rQ2A.js";import{getUserData as S}from"./user-data-CZqsJDk-.js";import{r as b}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{V as J}from"./three.module-IFn-4i31.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./three-DSsr_Lvp.js";import"./viewport-pick-context-DkawXbEi.js";import"./three-projection-core-kubBTx0s.js";import"./object-marks-DwvIEBOK.js";function K(n,s){return s instanceof T&&n?.id===s.documentId}function Q(n,s){return s instanceof T&&n!==null&&n.id!==s.documentId}function r({children:n,code:s=!1}){return e.jsx(x,{variant:s?"code":"body",selectable:!0,truncate:!0,title:typeof n=="string"?n:void 0,children:n})}function $(n){let s=null;return n?.traverse(i=>{!s&&S(i,"gaussianSplat")&&(s=i)}),s}function ee({splat:n}){const s=S(n,"gaussianSplat"),i=n.getBoundingBox().getSize(new J);return e.jsxs(j,{children:[e.jsx(t,{label:"Gaussians",children:e.jsx(r,{children:s.numSplats.toLocaleString()})}),e.jsx(t,{label:"Format",children:e.jsx(r,{children:"SPZ"})}),e.jsx(t,{label:"Bounds",children:e.jsx(r,{children:`${i.x.toFixed(2)} × ${i.y.toFixed(2)} × ${i.z.toFixed(2)}`})}),e.jsx(t,{label:"Level of detail",children:e.jsx(r,{children:"Full source"})}),e.jsx(t,{label:"Picking",children:e.jsx(r,{children:"Gaussian raycast"})}),e.jsx(t,{label:"Collision",hint:"Gaussian splats are visual environment data; use a separate mesh collider.",children:e.jsx(r,{children:"Separate collider required"})})]})}function ne({inspection:n,rig:s}){if(!n)return e.jsx(M,{compact:!0,tone:"error",title:"Model unavailable",description:"The native Object3D graph could not be inspected."});const i=[...n.meshes===0?["The asset has no renderable geometry."]:[],...n.geometry.nonFiniteAttributeValues>0?[`${n.geometry.nonFiniteAttributeValues.toLocaleString()} non-finite geometry values can break bounds and selection.`]:[],...s&&!s.valid?["Rig or animation bindings require attention."]:[]];return e.jsxs(e.Fragment,{children:[i.length>0&&e.jsx(v,{tone:"warning",icon:e.jsx(O,{icon:R.status.warning}),children:e.jsx("div",{children:i.map(o=>e.jsx("div",{children:o},o))})}),e.jsxs(j,{children:[e.jsx(t,{label:"Meshes",children:e.jsx(r,{children:n.meshes.toLocaleString()})}),e.jsx(t,{label:"Primitives",children:e.jsx(r,{children:n.primitives.toLocaleString()})}),e.jsx(t,{label:"Vertices",children:e.jsx(r,{children:n.vertices.toLocaleString()})}),e.jsx(t,{label:"Triangles",children:e.jsx(r,{children:n.triangles.toLocaleString()})}),e.jsx(t,{label:"Indexing",children:e.jsxs(r,{children:[n.geometry.indexedMeshes," indexed · ",n.geometry.nonIndexedMeshes," ","non-indexed"]})}),e.jsx(t,{label:"Attributes",children:e.jsx(r,{children:n.geometry.attributes.map(o=>o.name).join(", ")||"None"})}),e.jsx(t,{label:"UV channels",children:e.jsx(r,{children:n.geometry.uvChannels.join(", ")||"None"})}),e.jsx(t,{label:"Morph targets",children:e.jsx(r,{children:n.morphTargets})}),e.jsx(t,{label:"Bounds",children:e.jsx(r,{children:n.bounds?`${n.bounds.x.toFixed(2)} × ${n.bounds.y.toFixed(2)} × ${n.bounds.z.toFixed(2)}`:"None"})}),e.jsx(t,{label:"GPU estimate",children:e.jsxs(r,{children:[(n.memoryBytes/1048576).toFixed(2)," MiB"]})}),e.jsx(t,{label:"Invalid values",children:e.jsx(x,{tone:n.geometry.nonFiniteAttributeValues?"warning":"muted",children:n.geometry.nonFiniteAttributeValues.toLocaleString()})}),e.jsx(t,{label:"LODs",children:e.jsx(r,{children:n.geometry.lodGroups?`${n.geometry.lodLevels} levels`:"Not authored"})}),e.jsx(t,{label:"Collision",hint:"Collision remains a source/import operation when no model metadata exists.",children:e.jsx(r,{children:"Not authored"})})]})]})}function te({rig:n}){const s=[["Non-normalized weights",n.nonNormalizedVertices],["Zero-weight vertices",n.zeroWeightVertices],["Invalid joint indices",n.invalidJointIndices],["Inverse-bind mismatches",n.inverseBindMismatches],["External bones",n.externalBones],["Non-finite animation values",n.nonFiniteAnimationValues],["Unresolved track targets",n.unresolvedTrackTargets.length]];return e.jsxs(e.Fragment,{children:[!n.valid&&e.jsx(v,{tone:"warning",icon:e.jsx(O,{icon:R.status.warning}),children:"Review the non-zero integrity checks below."}),e.jsxs(j,{children:[e.jsx(t,{label:"Deformation",children:e.jsx(r,{children:n.kind==="skinned"?"Skinned mesh":"Rigid attachments"})}),e.jsx(t,{label:"Bones",children:e.jsx(r,{children:n.uniqueBones})}),e.jsx(t,{label:"Root bones",children:e.jsx(r,{children:n.rootBones.join(", ")||"None"})}),n.kind==="skinned"?e.jsxs(e.Fragment,{children:[e.jsx(t,{label:"Skeletons",children:e.jsx(r,{children:n.skeletons})}),e.jsx(t,{label:"Bind mode",children:e.jsx(r,{children:n.bindModes.join(", ")||"None"})}),e.jsx(t,{label:"Weighted vertices",children:e.jsx(r,{children:n.weightedVertices.toLocaleString()})})]}):null,s.filter(([,i])=>i>0).map(([i,o])=>e.jsx(t,{label:i,children:e.jsx(x,{tone:"warning",children:o.toLocaleString()})},i)),n.unresolvedTrackTargets.length?e.jsx(t,{label:"Missing targets",children:e.jsx(r,{children:n.unresolvedTrackTargets.join(", ")})}):null]})]})}function se({adapter:n,inspection:s}){const[i,o]=b.useState(""),a=n.documentRootObject,d=(s?.materialSlots??[]).map((l,u)=>({material:l,rowKey:`${l.id}:${u}`})).filter(({material:l})=>`${l.name} ${l.type} ${l.textureSlots.join(" ")}`.toLowerCase().includes(i.trim().toLowerCase())),c=l=>{if(!a)return;const u=A(a,{id:l})[0],g=u?n.hierarchy.idForObject3D?.(u):null;g&&U(n,[g])};return e.jsxs(e.Fragment,{children:[e.jsx(j,{children:e.jsx(t,{label:"Filter",htmlFor:"model-material-filter",children:e.jsx(z,{id:"model-material-filter",type:"search",value:i,placeholder:"Name, type, or map",onChange:l=>o(l.target.value)})})}),e.jsxs("div",{className:"vgai-model-inspector-list",children:[d.map(({material:l,rowKey:u})=>e.jsxs(L,{variant:"raised",border:!0,className:"vgai-model-inspector-row",children:[e.jsx("span",{className:"vgai-model-material-swatch",style:{background:l.color??void 0},"aria-hidden":"true"}),e.jsxs("div",{children:[e.jsx(x,{as:"strong",variant:"label",truncate:!0,children:l.name}),e.jsxs(x,{variant:"caption",tone:"muted",truncate:!0,children:[l.type," · ",l.usageCount," object",l.usageCount===1?"":"s"," ","· ",l.textureSlots.join(", ")||"no maps",l.transparent?" · transparent":""]})]}),e.jsx(D,{type:"button",variant:"ghost",size:"compact",onClick:()=>c(l.id),children:"Inspect"})]},u)),d.length===0?e.jsx(M,{compact:!0,title:"No matching materials"}):null]})]})}function re({adapter:n,provenance:s,provenanceLoaded:i}){b.useSyncExternalStore(_,q);const o=s?W().find(a=>a.tool?.name===s.operationName):void 0;return e.jsxs(e.Fragment,{children:[o?e.jsx("div",{className:"vgai-model-inspector-actions",children:e.jsx(D,{type:"button",variant:"ghost",size:"compact",onClick:()=>Z(o.id),children:"Open Source"})}):null,e.jsxs(j,{children:[e.jsx(t,{label:"Path",children:e.jsx(r,{code:!0,children:n.options.sourcePath})}),e.jsx(t,{label:"Truth",children:e.jsx(r,{children:n.provenance.label})}),e.jsx(t,{label:"Ownership",hint:n.provenance.detail,children:e.jsx(r,{children:n.provenance.source})}),i?null:e.jsx(t,{label:"Provenance",children:e.jsx(r,{children:"Loading…"})}),s?e.jsxs(e.Fragment,{children:[e.jsx(t,{label:"Generated by",children:e.jsx(r,{children:s.operationName})}),e.jsx(t,{label:"Tool",children:e.jsx(r,{code:!0,children:s.operationSource??"Not recorded"})}),e.jsx(t,{label:"Generated",children:e.jsx(r,{children:new Date(s.createdAt).toLocaleString()})}),e.jsx(t,{label:"Output hash",children:e.jsx(r,{code:!0,children:s.output.sha256})})]}):i?e.jsx(t,{label:"Provenance",children:e.jsx(r,{children:"Not recorded"})}):null]})]})}const k=new WeakMap;function ie(n){const s=n.documentRootObject??null;if(!s)return;const i=k.get(s);if(i!==void 0)return i??void 0;const o=$(s)?null:N(s),a=o?`${o.meshes} meshes · ${o.triangles.toLocaleString()} triangles`:null;return k.set(s,a),a??void 0}function oe({adapter:n}){const s=n,[i,o]=b.useState(null),[a,d]=b.useState(!1),c=s.options.modelSource,l=c?.kind==="project-file"?c.path:null;return b.useEffect(()=>{let u=!1;if(d(!1),!l){o(null),d(!0);return}return X(l).then(g=>{u||(o(g),d(!0))},()=>{u||(o(null),d(!0))}),()=>{u=!0}},[l]),e.jsx("div",{"data-testid":"model-asset-inspector",children:e.jsx(re,{adapter:s,provenance:i,provenanceLoaded:a})})}function le({inspection:n}){return e.jsxs(j,{children:[e.jsx(t,{label:"Native type",children:e.jsx(r,{children:n.type})}),e.jsx(t,{label:"Visible",children:e.jsx(r,{children:n.visible?"Yes":"No"})}),e.jsx(t,{label:"Children",children:e.jsx(r,{children:n.children})}),e.jsx(t,{label:"Descendants",children:e.jsx(r,{children:n.descendants})}),e.jsx(t,{label:"Render order",children:e.jsx(r,{children:n.renderOrder})}),e.jsx(t,{label:"Layer mask",children:e.jsxs(r,{code:!0,children:["0x",n.layers.toString(16)]})})]})}function ae({geometry:n}){return e.jsxs(e.Fragment,{children:[n.nonFiniteAttributeValues?e.jsxs(v,{tone:"warning",children:[n.nonFiniteAttributeValues.toLocaleString()," non-finite buffer values can break bounds, picking, and selection outlines."]}):null,e.jsxs(j,{children:[e.jsx(t,{label:"Vertices",children:e.jsx(r,{children:n.vertices.toLocaleString()})}),e.jsx(t,{label:"Triangles",children:e.jsx(r,{children:n.triangles.toLocaleString()})}),e.jsx(t,{label:"Index buffer",children:e.jsx(r,{children:n.indexed?"Indexed":"Non-indexed"})}),e.jsx(t,{label:"Attributes",children:e.jsx(r,{children:n.attributes.join(", ")})}),e.jsx(t,{label:"UV channels",children:e.jsx(r,{children:n.uvChannels.join(", ")||"None"})}),e.jsx(t,{label:"Morph targets",children:e.jsx(r,{children:n.morphTargets})}),e.jsx(t,{label:"Invalid values",children:e.jsx(x,{tone:n.nonFiniteAttributeValues?"warning":"muted",children:n.nonFiniteAttributeValues.toLocaleString()})})]})]})}function de({materials:n}){return e.jsx("div",{className:"vgai-model-inspector-list",children:n.map(s=>e.jsxs(L,{variant:"raised",border:!0,className:"vgai-model-inspector-row",children:[e.jsx("span",{className:"vgai-model-material-swatch",style:{background:s.color??void 0},"aria-hidden":"true"}),e.jsxs("div",{children:[e.jsx(x,{as:"strong",variant:"label",truncate:!0,children:s.name}),e.jsxs(x,{variant:"caption",tone:"muted",truncate:!0,children:[s.type," · ",s.textureSlots.join(", ")||"no maps"]})]})]},s.id))})}function ce({skin:n}){return e.jsxs(j,{children:[e.jsx(t,{label:"Bones",children:e.jsx(r,{children:n.bones})}),e.jsx(t,{label:"Root bones",children:e.jsx(r,{children:n.rootBones.join(", ")||"None"})}),e.jsx(t,{label:"Bind mode",children:e.jsx(r,{children:n.bindMode})})]})}function ue({bone:n}){return e.jsxs(j,{children:[e.jsx(t,{label:"Parent",children:e.jsx(r,{children:n.parent??"Skeleton root"})}),e.jsx(t,{label:"Children",children:e.jsx(r,{children:n.children.join(", ")||"None"})})]})}const h={splat:m,geometry:m+10,rig:m+20,materials:m+40,source:m+50},he=new WeakMap,je=new WeakMap,xe=new WeakMap;function f(n,s,i){const o=n.get(s);if(o!==void 0)return o;const a=i();return n.set(s,a),a}function me(n){const s=n,i=s.documentRootObject,o=[],a=$(i);if(i&&a){const d=S(a,"gaussianSplat");o.push({id:"splat",title:"Gaussian Splat",icon:Y,order:h.splat,description:`${d.numSplats.toLocaleString()} Gaussians · native SPZ`,body:{kind:"custom",render:()=>e.jsx(ee,{splat:a})}})}else if(i){const d=f(he,i,()=>N(i)),c=f(je,i,()=>C(i)),l=ie(n);o.push({id:p,title:"Geometry",icon:B,order:h.geometry,...l?{description:l}:{},body:{kind:"custom",render:()=>e.jsx(ne,{inspection:d,rig:c})}}),(c.skinnedMeshes>0||c.uniqueBones>0)&&o.push({id:"rig",title:"Rig",icon:F,order:h.rig,description:c.kind==="skinned"?`${c.uniqueBones} bones · ${c.skinnedMeshes} skinned meshes`:`${c.uniqueBones} bones · rigid hierarchy`,body:{kind:"custom",render:()=>e.jsx(te,{rig:c})}}),o.push({id:"materials",title:"Materials",icon:w,order:h.materials,description:`${d.materials} materials`,body:{kind:"custom",render:()=>e.jsx(se,{adapter:s,inspection:d})}})}return o.push({id:"source",title:"Source",icon:V,order:h.source,description:s.provenance.label,defaultOpen:!1,body:{kind:"custom",render:()=>e.jsx(oe,{adapter:n})}}),s.options.audit===!1?o.filter(d=>d.id!==p&&d.id!=="source"):o}function be(n,s){const i=n?s.hierarchy.object3D?.(n.id):null;if(!i)return[];if(H(i))return[];const o=f(xe,i,()=>I(i)),a=[{id:p,title:"Object",icon:E,order:h.geometry,description:o.type,body:{kind:"custom",render:()=>e.jsx(le,{inspection:o})}}],d=o.geometry;d&&a.push({id:"geometry",title:"Geometry",icon:B,order:h.geometry+1,description:`${d.triangles.toLocaleString()} triangles`,body:{kind:"custom",render:()=>e.jsx(ae,{geometry:d})}}),o.materials.length>0&&a.push({id:"materials",title:"Materials",icon:w,order:h.materials,description:`${o.materials.length} slots`,body:{kind:"custom",render:()=>e.jsx(de,{materials:o.materials})}});const c=o.skin;c&&a.push({id:"skin",title:"Skin",icon:F,order:h.rig,description:`${c.bones} bones`,body:{kind:"custom",render:()=>e.jsx(ce,{skin:c})}});const l=o.bone;return l&&a.push({id:"bone",title:"Bone",icon:G,order:h.rig+1,description:l.parent??"Skeleton root",body:{kind:"custom",render:()=>e.jsx(ue,{bone:l})}}),a}const ge=P();function pe(){ge.ensure(n=>{n(y({match:K,sections:(s,i)=>me(i)})),n(y({match:Q,sections:be}))})}const Pe="workspace.service";function Ve(){return pe(),()=>{}}export{Pe as point,Ve as start};
@@ -0,0 +1 @@
1
+ import{aI as q}from"./index-Ckxb31Yz.js";import{V as N,i as W,j as X,a as F}from"./three.module-IFn-4i31.js";function ce(e,t){return t.skinnedMeshes>0?"skinned":t.uniqueBones>0?"rigged":e.clips>0?"animated":"static"}const Y=["map","alphaMap","aoMap","bumpMap","displacementMap","emissiveMap","envMap","lightMap","metalnessMap","normalMap","roughnessMap","specularMap"];function Z(e){if(!("color"in e))return null;const t=e.color;return t?.isColor===!0?`#${t.getHexString()}`:null}function E(e){let t=0;for(const n of Object.values(e.attributes)){const s=n.array;for(let i=0;i<s.length;i++)Number.isFinite(Number(s[i]))||t++}return t}function U(e){if(!e)return null;const t=new X,n=new N;for(let s=0;s<e.count;s++)n.set(e.getX(s),e.getY(s),e.getZ(s)),Number.isFinite(n.x)&&Number.isFinite(n.y)&&Number.isFinite(n.z)&&t.expandByPoint(n);return t.isEmpty()?null:t}function G(e){const t=U(e.getAttribute("position"));if(!t)return null;for(const n of e.morphAttributes.position??[]){const s=U(n);s&&(e.morphTargetsRelative?(t.expandByPoint(new N().addVectors(t.min,s.min)),t.expandByPoint(new N().addVectors(t.max,s.max))):t.union(s))}return t}function J(e){return e.matrixAutoUpdate?new F().compose(e.position,e.quaternion,e.scale):e.matrix.clone()}function R(e,t,n){if(q(t,"editorHelper")||t.isSkeletonHelper)return;const s=t;if(!s.isMesh&&!s.isLine&&!s.isPoints||!s.geometry)return;const i=G(s.geometry);if(!i)return;const r=t;if(!r.isInstancedMesh){e.union(i.clone().applyMatrix4(n));return}const l=new F;for(let a=0;a<r.count;a++)r.getMatrixAt(a,l),e.union(i.clone().applyMatrix4(new F().multiplyMatrices(n,l)))}function K(e){const t=new X,n=[];for(let r=e.parent;r;r=r.parent)n.push(r);const s=new F;for(let r=n.length-1;r>=0;r--)s.multiply(J(n[r]));const i=(r,l)=>{const a=new F().multiplyMatrices(l,J(r));R(t,r,a);for(const p of r.children)i(p,a)};return i(e,s),t.isEmpty()?null:t}function de(e){const t=new Set,n=new Set,s=new Map,i=new Map,r=new Map,l=new Set,a=[],p=[];let v=0,M=0,x=0,h=0,A=0,T=0,C=0,S=0,f=0,d=0,b=0,B=0,L=0,P=0,D=0;e.traverse(o=>{if(q(o,"editorHelper")||o.isSkeletonHelper)return;v++;let c=0;for(let u=o.parent;u&&u!==e.parent;u=u.parent)c++;p.push({id:o.uuid,name:o.name||o.type,type:o.type,depth:c}),o.isBone&&T++,o.isLOD&&(P++,D+=o.levels.length);const g=o,z=o;if(!z.isMesh&&!z.isLine&&!z.isPoints)return;M++,g.isInstancedMesh&&b++,g.isSkinnedMesh&&B++;const m=g.geometry;if(m){L+=E(m);const u=m.getAttribute("position");h+=u?.count??0,A+=m.index?Math.floor(m.index.count/3):Math.floor((u?.count??0)/3),x+=Math.max(m.groups.length,1),C+=m.morphAttributes.position?.length??0,m.index?(f++,S+=m.index.array.byteLength):d++;for(const[k,V]of Object.entries(m.attributes)){S+=V.array.byteLength;const y=r.get(k)??{itemSize:V.itemSize,meshes:0};y.meshes++,r.set(k,y),/^uv\d*$/.test(k)&&l.add(k)}}const O=Array.isArray(g.material)?g.material:g.material?[g.material]:[];for(const u of O){t.add(u);const k=i.get(u)??new Set;k.add(o),i.set(u,k);const V=s.get(u)??[];for(const y of Y){const w=u[y];if(w?.isTexture!==!0)continue;n.add(w),V.includes(y)||V.push(y);const $=w.image;a.some(H=>H.materialId===u.uuid&&H.slot===y)||a.push({materialId:u.uuid,materialName:u.name||u.type,slot:y,textureName:w.name||w.source.data?.src||"Texture",width:$?.width??null,height:$?.height??null,format:w.format,colorSpace:w.colorSpace||"none"})}s.set(u,V)}});for(const o of n){const c=o.image;S+=(c?.width??0)*(c?.height??0)*4}const I=K(e)?.getSize(new N)??null;return{nodes:v,meshes:M,primitives:x,vertices:h,triangles:A,materials:t.size,textures:n.size,bones:T,clips:e.animations.length,morphTargets:C,memoryBytes:S,bounds:I?{x:I.x,y:I.y,z:I.z}:null,geometry:{attributes:[...r.entries()].map(([o,c])=>({name:o,itemSize:c.itemSize,meshCount:c.meshes})).sort((o,c)=>o.name.localeCompare(c.name)),uvChannels:[...l].sort(),indexedMeshes:f,nonIndexedMeshes:d,instancedMeshes:b,skinnedMeshes:B,nonFiniteAttributeValues:L,lodGroups:P,lodLevels:D},animationClips:e.animations.map((o,c)=>{const g=new Set;let z=0;for(const m of o.tracks){z+=m.times.length;const O=W.parseTrackName(m.name);O.nodeName&&g.add(O.nodeName)}return{id:`${c}:${o.uuid}`,name:o.name||`Clip ${c+1}`,duration:o.duration,tracks:o.tracks.length,keyframes:z,targets:[...g].sort(),rootMotion:re(o).length>1}}),hierarchy:p,materialNames:[...t].map(o=>o.name||o.type),textureNames:[...n].map(o=>o.name||o.source.data?.src||"Texture"),materialSlots:[...t].map(o=>({id:o.uuid,name:o.name||o.type,type:o.type,textureSlots:s.get(o)??[],usageCount:i.get(o)?.size??0,meshNames:[...i.get(o)??[]].map(c=>c.name||c.type).sort(),color:Z(o),transparent:o.transparent})),textureBindings:a}}function Q(e){const t=e.geometry.getAttribute("skinIndex"),n=e.geometry.getAttribute("skinWeight");if(!t||!n)return{weightedVertices:0,nonNormalizedVertices:0,zeroWeightVertices:0,invalidJointIndices:0};const s=Math.min(t.count,n.count);let i=0,r=0,l=0;for(let a=0;a<s;a++){const p=[n.getX(a),n.getY(a),n.getZ(a),n.getW(a)],v=[t.getX(a),t.getY(a),t.getZ(a),t.getW(a)],M=p.reduce((x,h)=>x+h,0);M<=1e-6?r++:Math.abs(M-1)>.001&&i++,l+=p.filter((x,h)=>x>1e-6&&(v[h]<0||v[h]>=e.skeleton.bones.length)).length}return{weightedVertices:s,nonNormalizedVertices:i,zeroWeightVertices:r,invalidJointIndices:l}}function _(e){let t=0;for(const n of e.times)Number.isFinite(n)||t++;for(const n of e.values)Number.isFinite(n)||t++;return t}function j(e,t){const n=W.parseTrackName(t.name).nodeName;return n&&!W.findNode(e,n)?n:null}function ee(e){let t=0;const n=new Set;for(const s of e.animations)for(const i of s.tracks){t+=_(i);const r=j(e,i);r&&n.add(r)}return{nonFiniteValues:t,unresolvedTargets:n}}function me(e){const t=new Set,n=new Set,s=new Set;let i=0,r=0,l=0,a=0,p=0,v=0;const M=new Set,x=new Set,h=new Set;e.traverse(f=>{t.add(f);const d=f;d.isBone&&s.add(d)}),e.traverse(f=>{const d=f;if(!d.isSkinnedMesh)return;i++,h.add(d.bindMode),n.add(d.skeleton),d.skeleton.bones.length!==d.skeleton.boneInverses.length&&v++;for(const B of d.skeleton.bones)s.add(B),t.has(B)||M.add(B);const b=Q(d);r+=b.weightedVertices,l+=b.nonNormalizedVertices,a+=b.zeroWeightVertices,p+=b.invalidJointIndices});const A=ee(e);for(const f of s)(!f.parent?.isBone||!s.has(f.parent))&&x.add(f.name||f.uuid);const T=A.nonFiniteValues,C=A.unresolvedTargets,S=l===0&&a===0&&p===0&&v===0&&M.size===0&&T===0&&C.size===0;return{kind:i>0?"skinned":s.size>0?"rigid":"none",skinnedMeshes:i,skeletons:n.size,uniqueBones:s.size,weightedVertices:r,nonNormalizedVertices:l,zeroWeightVertices:a,invalidJointIndices:p,inverseBindMismatches:v,externalBones:M.size,nonFiniteAnimationValues:T,unresolvedTrackTargets:[...C].sort(),rootBones:[...x].sort(),bindModes:[...h].sort(),valid:S}}function te(e){if(!e)return null;const t=G(e)?.getSize(new N),n=e.getAttribute("position");return{vertices:n?.count??0,triangles:Math.floor((e.index?.count??n?.count??0)/3),indexed:e.index!==null,attributes:Object.keys(e.attributes).sort(),uvChannels:Object.keys(e.attributes).filter(s=>/^uv\d*$/.test(s)).sort(),morphTargets:e.morphAttributes.position?.length??0,nonFiniteAttributeValues:E(e),bounds:t?{x:t.x,y:t.y,z:t.z}:null}}function ne(e){return(Array.isArray(e.material)?e.material:e.material?[e.material]:[]).map(n=>({id:n.uuid,name:n.name||n.type,type:n.type,color:Z(n),textureSlots:Y.filter(s=>n[s]?.isTexture===!0)}))}function se(e){const t=e;return t.isSkinnedMesh?{bones:t.skeleton.bones.length,rootBones:t.skeleton.bones.filter(n=>!n.parent?.isBone).map(n=>n.name||n.uuid),bindMode:t.bindMode}:null}function ie(e){const t=e;return t.isBone?{parent:t.parent?.isBone&&(t.parent?.name||t.parent?.uuid)||null,children:t.children.filter(n=>n.isBone).map(n=>n.name||n.uuid)}:null}function fe(e){let t=-1;e.traverse(()=>t++);const n=e;return{type:e.type,visible:e.visible,children:e.children.length,descendants:t,renderOrder:e.renderOrder,layers:e.layers.mask,geometry:te(n.geometry),materials:ne(n),skin:se(e),bone:ie(e)}}function pe(e){const t=e.clone().normalize();for(const n of["front","back","left","right","top","bottom"])if(oe(n).angleTo(t)<.0087)return`${n[0]?.toUpperCase()}${n.slice(1)}`;return null}function oe(e){const t={front:[0,0,1],back:[0,0,-1],left:[-1,0,0],right:[1,0,0],top:[0,1,0],bottom:[0,-1,0],isometric:[1,.72,1]};return new N(...t[e]).normalize()}function he(e){let t=!1,n=!1,s=!1,i=!1;return e.traverse(r=>{const l=r;t||=!!l.geometry?.getAttribute("uv"),n||=!!l.geometry?.getAttribute("color"),s||=!!(r.isBone||l.isSkinnedMesh),i||=r.isLOD===!0}),[{mode:"lit",available:!0},{mode:"unlit",available:!0},{mode:"wireframe",available:!0},{mode:"normals",available:!0},{mode:"uv",available:t,...t?{}:{reason:"No UV channel"}},{mode:"vertex-colors",available:n,...n?{}:{reason:"No vertex colors"}},{mode:"bounds",available:!0},{mode:"skeleton",available:s,...s?{}:{reason:"No skeleton"}},{mode:"collision",available:!1,reason:"No collision metadata"},{mode:"lod",available:i,...i?{}:{reason:"No LOD groups"}}]}function re(e){const t=e.tracks.filter(i=>i.ValueTypeName==="vector"&&i.name.toLowerCase().endsWith(".position")),n=t.find(i=>/(^|[./])(root|hips|armature)[./]/i.test(i.name))??t[0];if(!n||n.values.length<6)return[];const s=[];for(let i=0;i+2<n.values.length;i+=3)s.push(new N(n.values[i],n.values[i+1],n.values[i+2]));return s}function ge(e,t){const n=[];return e.traverse(s=>{const i=s;(Array.isArray(i.material)?i.material:i.material?[i.material]:[]).some(l=>l.uuid===t.id)&&n.push(i)}),n}export{me as a,fe as b,ce as c,oe as d,pe as e,de as i,ge as m,he as s};
@@ -0,0 +1 @@
1
+ import{B as e}from"./regions-DWeEBnE2.js";const t="workspace.layout",i={id:"model",title:"Model",description:"Blender-shaped modeling: a dominant document, outliner above properties.",regions:{...e,header:"shown",shelf:"shown",inspector:"properties",drawer:"hidden"},areas:[{id:"timeline",document:"blender-timeline.document",place:"below",ratio:.0719}]};export{i as layout,t as point};
@@ -1 +1 @@
1
- import{r as n,t as s,u as l,v as m}from"./index-GIL7oGEO.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"./three.module-D396a9Mn.js";const j={name:"modelsFromBlendFiles",schema:n({finder:m("modelsFromBlendFiles"),include:s(l().min(1)).min(1).describe("Project-relative globs of the Blender files to list (`src/models/**/*.blend`)")}).strict(),run(d,r){const o=[],t=[];for(const e of r.files??[]){if(!e.endsWith(".blend"))continue;const i=(e.split("/").pop()??e).replace(/\.blend$/,"");o.push({id:`model:${e}`,label:i,kind:"model",region:null,authorable:!0,reach:{kind:"root-mount"},source:{path:e}})}return{entries:o,notes:t}}};export{j as finder};
1
+ import{r as n,t as l,u as s,v as m}from"./index-Ckxb31Yz.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"./three.module-IFn-4i31.js";const B={name:"modelsFromBlendFiles",schema:n({finder:m("modelsFromBlendFiles"),include:l(s().min(1)).min(1).describe("Project-relative globs of the Blender files to list (`src/models/**/*.blend`)")}).strict(),run(d,r){const o=[],t=[];for(const e of r.files??[]){if(!e.endsWith(".blend"))continue;const i=(e.split("/").pop()??e).replace(/\.blend$/,"");o.push({id:`model:${e}`,label:i,kind:"model",region:null,authorable:!0,reach:{kind:"root-mount"},source:{path:e}})}return o.length===0&&o.push({id:"blender:runtime",label:"Model",kind:"model",region:null,authorable:!0,reach:{kind:"root-mount"}}),{entries:o,notes:t}}};export{B as finder};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/create-runtime-lmA910XT.js","assets/adapter-surface-Y37Nzcyw.js","assets/binding-Bmxqznjk.js","assets/index-Ckxb31Yz.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/three.module-IFn-4i31.js","assets/index-B4bmKkgY.css","assets/assets-Do88ZdV_.js","assets/loader-BbMsvIxP.js","assets/setup-renderer-wt_a-p8r.js","assets/index-DUh02lTr.js","assets/defaults-DKiBJCPN.js","assets/render-settings-C_kIMq8Y.js","assets/render-features-COF7MSQ9.js","assets/game-loop-CZvXlY00.js","assets/frame-pacing-D5acoOzO.js","assets/debug-registry-B3Cnne3x.js","assets/game-D5EJoILQ.js","assets/loop-gate-report-N52EWFGD.js","assets/system-slot-E2mEdiih.js","assets/user-data-CZqsJDk-.js","assets/object-marks-DwvIEBOK.js","assets/seeded-random-CN0scLZj.js","assets/render-seed-DF4JHy7P.js","assets/sim-clock-DEfbb_-P.js","assets/system-runner-D_DtVrer.js","assets/performance-profiler-D_Jey87L.js","assets/input-manager-Cxx3RJgG.js","assets/asset-parse-error-BHMwBRU3.js","assets/binding-identity-DcTpbvyg.js","assets/prompt-labels-DSMdM2_B.js","assets/schema-Iy-mbzll.js","assets/gameplay-rng-trap-BhRx_CtU.js","assets/state-bridge-DLP1jLRW.js","assets/input-router-FzxO5ld6.js","assets/render-control-BNQr1eNO.js"])))=>i.map(i=>d[i]);
2
+ import{y as v,z as R,ak as _,X as n,cl as A,cm as I,aG as P,cn as S,co as M,cp as y,cq as w,cr as C,_ as G,cs as k,ct as E}from"./index-Ckxb31Yz.js";import{m as F}from"./capability-coverage-CfUeULDN.js";import{r as $}from"./binding-resolver-BWwG10zJ.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"./three.module-IFn-4i31.js";import"./game-contract-seams-TCpIMmHP.js";import"./native-debug-module-j-MekcLS.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-B3Cnne3x.js";import"./playtest-BnFenMBW.js";import"./adapter-surface-Y37Nzcyw.js";import"./entry-adjudication-BYy7TXOB.js";import"./r3f-root-factory-DjGnbU4n.js";import"./register-render-vitals-BO7x64kR.js";import"./render-census-BrQX_CXv.js";import"./structural-signature-0w-i_ats.js";import"./render-vitals-BZ5HtvMi.js";import"./static-batch-advisor-DqfXWRUq.js";import"./webgl-frame-capture-CRKX73E9.js";import"./world-state-ZGDGY_Xl.js";import"./frame-selector-cache-cCeUbcjG.js";import"./dev-build-gDYrq68M.js";import"./game-input-seams-BC6xhZy3.js";import"./seeded-random-CN0scLZj.js";import"./render-seed-DF4JHy7P.js";import"./frame-delta-D2nsw_Ht.js";import"./events-156d8d12.esm-C734MYnx.js";import"./index-bQE2NA0D.js";import"./realm-services-D25JHoqD.js";import"./canvas-entry-runtime-E5YjSgre.js";import"./three-ingest-runtime-DWijtqQ8.js";import"./EffectComposer-BHDH-NLz.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-qtkA7CQ8.js";import"./CSS3DRenderer-CAS2WZZy.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-DGLRLr-F.js";let m=null;function g(){return m!==null}function j(t,e){return t.selection?t:{...t,selection:{get:()=>[...e.selectedEntityIds],set:o=>e.selectMultiple(o)}}}function D(){const t=m;if(t){m=null,M(null),y(null),w(),t.store.setPlayState("stopped");try{t.stop()}catch{}delete window.__vgaiModule,n.log("Module adapter mode stopped","adapter")}}async function L(t,e,o,i,r,p){const{createGameRuntime:c}=await G(async()=>{const{createGameRuntime:l}=await import("./create-runtime-lmA910XT.js");return{createGameRuntime:l}},__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])),a=await $({...t,roots:[e]},o);return{session:await c({container:i,roots:a,width:r,height:p}),specs:a}}async function q(t,e,o,i){await S();const r=C();if(!r){n.error("Game container not mounted — cannot auto-mount module adapter","adapter");return}t.setPlayState("playing"),n.log(`Mounting custom adapter module for world "${o.id}" (kind: ${o.surface})`,"adapter");const p=r.clientWidth||800,c=r.clientHeight||600,{session:a,specs:d}=await L(e,o,i,r,p,c),s=a.game.roots[0].mounted,f=d[0].adapter.id;m={store:t,stop:()=>a.stop()};let u;s.authoring?u=j(s.authoring,t):u=k(t,`${f} (no authoring surface)`),M(u),y(s.systems??{}),t.notifyIngestEdit(),w();const h=F(s);window.__vgaiModule={worldId:o.id,adapterId:f,reach:h}}async function Ct(t){const e=await v().catch(()=>null);if(e&&R(e).length>0)return!1;const o=e?_(e)[0]:void 0;if(o===void 0||o.adapter.type!=="module")return!1;const i=P();if(!i)return n.error("Manifest declares a { module } world but no project is open — cannot auto-mount","adapter"),!0;try{await q(t,e,o,i.rootPath)}catch(r){n.error(`Manifest { module } auto-mount failed: ${r}`,"adapter"),A({worldId:o.id,kind:o.surface,identity:o.adapter.identity,message:I(r)})}return!0}E({id:"module",priority:2,mounted:g,playing:g,stop:D,instanceContainer:()=>null});export{q as enterModuleModeFromManifestRoot,D as exitModuleMode,g as isModuleModeActive,L as mountModuleRootRuntime,Ct as tryManifestModuleRoute,j as withStoreSelection};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-Ckxb31Yz.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/three.module-IFn-4i31.js","assets/index-B4bmKkgY.css"])))=>i.map(i=>d[i]);
2
+ import{E as z,eQ as pe,fq as me,dz as A,dB as he,h8 as ge,fF as fe,hc as ye,hd as ve,he as be,hf as Se,hg as we,hh as xe,cr as q,X as h,cn as Ce,kx as M,_ as H,co as J,cq as K,aG as Ee,j as Ae,cp as Ie}from"./index-Ckxb31Yz.js";import{m as I}from"./capability-coverage-CfUeULDN.js";import{n as ke}from"./after-paint-CB4bz1-e.js";import{BabylonAuthoringAdapter as Re}from"./babylon-authoring-adapter-B_8iE8fK.js";import{a as k,R as X,s as Pe,c as _e,C as De,D as R,G as je,B as $e,H as T,E as B,S as Me,j as Y,k as Q,l as Z,r as ee,p as te,o as ne,T as Te,K as se,u as Ge}from"./active-ingest-DEgq9JiA.js";import{c as Le,a as Be}from"./json-history-resource-r-9q_hxP.js";import{PixiAuthoringAdapter as Fe}from"./pixi-authoring-adapter-C5Ikqj5-.js";import{createLiveCanvasWriteTarget as Oe}from"./pixi-live-write-target-OWBk79dp.js";import{a as Ne}from"./source-persistence-backend-_-JMEXxE.js";import{resolveCanvasPixiForEditor as He}from"./canvas-entry-runtime-E5YjSgre.js";import{registerPresentedPixiApps as We,capturePixiDisplayObjectThumbnail as Ue}from"./canvas-preview-frames-CiAx7dpV.js";import{p as Ve}from"./playtest-BnFenMBW.js";import{mountIngestGame2D as ze,INGEST_GAME_2D_LOAD_ERROR_NAME as qe}from"./ingest-BlQnR7s3.js";import{createPhysics2DRegistry as Je}from"./physics-registry-B2Jkp8e6.js";import{f as Ke,b as re,g as Xe,e as ie,w as Ye,j as Qe}from"./resolve-three-C-nx-QdA.js";import{composePhysicsAdapters2D as Ze,createPhysicsAdapter2D as et}from"./system-adapters-rIC8FSGP.js";import{s as tt}from"./mount-ingest-root-B5D-Lmmk.js";import{landIngestBootInEdit as ae}from"./ingest-boot-viewport-uG9jQ1zm.js";import{a as S}from"./jsx-runtime-DPjLkJKQ.js";import{i as nt,C as W,b as st,c as rt}from"./CanvasSceneViewport-BlsRTk-X.js";import{R as it}from"./RootSelectionOverlay-BxvsunO4.js";import{e as at,S as ot}from"./surface-state-BAUJu6GY.js";import{r as y}from"./index-nmcBqr7Y.js";import{b as ct,e as dt,g as lt}from"./registry-DlTluc4x.js";import"./index-CtzuWnCS.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-IFn-4i31.js";import"./game-contract-seams-TCpIMmHP.js";import"./ingest-source-persistence-DH6ioCOu.js";import"./authoring-CgcOFhGS.js";import"./index-BLo2LE8C.js";import"./pixi-transform-channels-VjdohT11.js";import"./scene-capture-CLOc7GXc.js";import"./dom-authoring-adapter-CEeFyatF.js";import"./react-world-authoring-adapter-BMT9kLWU.js";import"./board-guides-C3usUZZk.js";import"./writer-BPbm4_my.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BRgDdtVk.js";import"./inference-diagnostics-YW0yJkKx.js";import"./debug-registry-B3Cnne3x.js";import"./webgl-frame-capture-CRKX73E9.js";import"./Toolbar-keHcSvDD.js";import"./transform-mode-request-Cu7ewbtr.js";import"./TransientHint-Dlslh3oX.js";import"./eyedropper-session-bjPXnfeX.js";import"./react-story-board-CSqHY0Cg.js";import"./viewport-pick-context-DkawXbEi.js";function ut(t){if(typeof t?.game?.scene?.getScenes=="function")return t.game;const e=t?.Phaser?.GAMES;return Array.isArray(e)?e.find(n=>typeof n?.scene?.getScenes=="function")??null:null}function pt(t){const e=t?.__vgaiBabylon?.engines,n=Array.isArray(e)?e:t?.BABYLON?.Engine?.Instances;return Array.isArray(n)?[...n].reverse().find(s=>Array.isArray(s?.scenes)&&s.scenes.length>0)??null:null}function mt(t){return[0,0,Math.sin(t/2),Math.cos(t/2)]}function ht(t){return 2*Math.atan2(t[2],t[3])}function gt(t){return encodeURIComponent(t||"unnamed")}function ft(t){return Array.isArray(t.list)?t.list:[]}class yt{constructor(e,n){this.game=e,this.store=n}capabilities={transform:!0,inspectorFields:!0,persist:!1};provenance={source:"foreign",label:"live-only",detail:"Live Phaser scene/display lists projected directly — edits apply to native game objects for this session only."};persistence={...Le(),destination:"live-only (not saved)"};indexed=new Map;listeners=new Set;refresh(){this.reindex();let e=0,n=0;for(const s of this.indexed.values())s.kind==="scene"?e++:n++;return{scenes:e,objects:n}}scenes(){const e=this.game.scene?.getScenes;if(typeof e!="function")return[];const n=e.call(this.game.scene,!0);return Array.isArray(n)?n:[]}reindex(){this.indexed.clear();for(const[e,n]of this.scenes().entries()){const s=n.sys?.settings?.key||`Scene ${e+1}`,r=`phaser:scene:${e}:${gt(s)}`,o=Array.isArray(n.children?.list)?n.children.list:[],a={id:r,label:s,role:"root",kind:"phaser-scene",typeLabel:"Phaser.Scene",parentId:null,childIds:[]};this.indexed.set(r,{kind:"scene",scene:n,node:a}),a.childIds=o.map((i,c)=>this.indexObject(i,r,`${e}/${c}`))}}indexObject(e,n,s){const r=e.type||e.constructor?.name||"GameObject",o=e.name||r,a=`phaser:object:${s}`,i={id:a,label:o,role:"entity",kind:`phaser-${r.toLowerCase()}`,typeLabel:r,parentId:n,childIds:[]};return this.indexed.set(a,{kind:"object",object:e,node:i}),i.childIds=ft(e).map((c,p)=>this.indexObject(c,a,`${s}/${p}`)),a}hierarchy={roots:()=>(this.reindex(),[...this.indexed.values()].filter(e=>e.kind==="scene").map(e=>e.node)),node:e=>(this.reindex(),this.indexed.get(e)?.node??null)};selection={get:()=>[...this.store.selectedEntityIds],set:e=>{this.store.selectMultiple(e),this.notify()}};transforms={dimensions:e=>(this.reindex(),this.indexed.get(e)?.kind==="object"?"2d":null),get:e=>{this.reindex();const n=this.indexed.get(e);if(!n||n.kind!=="object")return{position:[0,0,0],rotation:[0,0,0,1],scale:[1,1,1]};const s=n.object;return{position:[s.x??0,s.y??0,s.depth??0],rotation:mt(s.rotation??0),scale:[s.scaleX??1,s.scaleY??1,1]}},beginEdit:e=>{},apply:(e,n)=>{this.reindex();const s=this.indexed.get(e);!s||s.kind!=="object"||(s.object.x=n.position[0],s.object.y=n.position[1],s.object.depth=n.position[2],s.object.rotation=ht(n.rotation),s.object.scaleX=n.scale[0],s.object.scaleY=n.scale[1],this.notify())},endEdit:e=>{}};inspector={properties:e=>{this.reindex();const n=this.indexed.get(e);return n?n.kind==="scene"?[{path:"key",label:"Scene key",type:"string",readonly:!0}]:[{path:"type",label:"Type",type:"string",readonly:!0},{path:"name",label:"Name",type:"string"},{path:"active",label:"Active",type:"boolean"},{path:"visible",label:"Visible",type:"boolean"},{path:"alpha",label:"Alpha",type:"number"},{path:"depth",label:"Depth",type:"number"}]:[]},get:(e,n)=>{this.reindex();const s=this.indexed.get(e);if(s)return s.kind==="scene"?n==="key"?s.scene.sys?.settings?.key:void 0:n==="type"?s.object.type||s.object.constructor?.name:s.object[n]},set:(e,n,s)=>{this.reindex();const r=this.indexed.get(e);!r||r.kind!=="object"||n==="type"||(r.object[n]=s,this.notify())}};subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}dispose(){this.listeners.clear(),this.indexed.clear()}notify(){for(const e of this.listeners)e();this.store.notifyIngestEdit()}}function vt(t){return Oe({physics:t.physics,persistence:Ne({history:t.history,writer:t.writer})})}const bt=1500,St=1e4;function wt(t,e){const n=e.settleGraceMs??bt,s=e.deadlineMs??St;let r=null,o=null;const a=i=>{e.isHeld()&&(r??=i,o===null&&e.currentScene()===t&&(o=i),e.render(),!(o!==null&&i-o>=n)&&(o===null&&i-r>=s||e.schedule(a)))};e.schedule(a)}function xt(t){const e=k();if(e?.kind!=="canvas"||!e.session.adapter)return()=>{};const n=z()?.scenes;if(n&&pe(n))return()=>{};const s=e.worldId;me({id:A,title:"Scene",kind:"world",workspaceRole:"authored-subject",provenance:{rootId:s},Content:t,closeable:!1,presentation:()=>({kind:"world",id:s})}),he(A);const r=ge(s,A);return()=>{r(),fe(A,{discardDirty:!0})}}function Ct(){const t=z()?.scenes;if(!t?.default)return;const e=t.entries.find(r=>r.id===t.default),n=e?.source?.export??e?.id;return n?(X()?.storiesFor("")??[]).find(r=>r.label===n||r.id===n)?.id:void 0}function Et({active:t,adapter:e,documentId:n,store:s,worldId:r,contractSceneId:o}){const a=y.useRef(null),c=y.useRef(ye()).current;y.useSyncExternalStore(s.subscribe,s.getSnapshot);const p=y.useSyncExternalStore(ve,be),v=y.useSyncExternalStore(Se,we),m=k(),b=e.hierarchy.roots(),P=new Set(e.rects?.emptyContainers?.().map(l=>l.id)??[]),w=b.some(l=>!P.has(l.id)),E=at({surface:"Ingest scene",rootIds:[r],phase:m?.kind==="canvas"&&m.worldId===r&&m.session.hostEl?"ready":"loading",content:m?.kind!=="canvas"||m.worldId!==r||!m.session.hostEl?"unknown":w?"present":"empty",readiness:p,failures:v});return y.useEffect(()=>xe(n,()=>({adapter:e,nodeId:[...s.selectedEntityIds].find(l=>e.hierarchy.node(l))??null})),[e,n,s]),y.useEffect(()=>{const l=a.current;if(l)return nt(l,c)},[c]),y.useEffect(()=>{if(!t)return;const l=a.current,g=k(),f=g?.kind==="canvas"?g.session.hostEl:void 0;if(!(!l||!f))return l.appendChild(f),()=>{const x=q();x&&f.parentElement===l&&x.appendChild(f)}},[t]),y.useEffect(()=>{if(!t)return;const l=o??Ct();if(!l)return;const g=X();g&&g.goToScene(l)},[t,o]),S.jsxs("div",{ref:a,"data-testid":"world-document:ingest-canvas-scene","data-vgai-backdrop-color":t?W:void 0,"data-vgai-backdrop-policy":t?"dark-frost":void 0,style:{position:"absolute",inset:0,overflow:"hidden",pointerEvents:"auto",backgroundColor:W,touchAction:"none"},children:[S.jsx(st,{view:c,documentId:n}),S.jsx(it,{adapter:e,view:c,transformModeAware:!0}),S.jsx(ot,{explanation:E,testId:"ingest-canvas-surface-status",style:{zIndex:20}}),S.jsx(rt,{active:t,adapter:e,containerRef:a,view:c,documentId:n})]})}function oe(t){const e=k();if(e?.kind!=="canvas"||!e.session.adapter)return()=>{};const n=e.session.adapter,s=e.worldId;return xt(o=>S.jsx(Et,{...o,adapter:n,store:t,worldId:s}))}function At(t,e){const{adapter:n}=t;if(n.type!=="ingest")throw new Error(`resolveIngest2DDescriptor: world "${t.id}" is not an { ingest } world.`);if(!t.entry)throw new Error(`resolveIngest2DDescriptor: world "${t.id}" has no \`entry\` — an ingest root mounts the game's own entry module.`);const s=Ke(e);return{id:t.id,name:t.id,description:t.description??"",...n.captureTimeoutMs!==void 0?{captureTimeoutMs:n.captureTimeoutMs}:{},load:re(s.entry(t.entry),n.contractShim===void 0?void 0:s.module(n.contractShim))}}function U(t,e){const n=lt(t,e),s=dt[n];if(!s)throw new Error(`canvas ingest discovery: "${t}"'s module "${e}" did not match any game module (looked for glob key "${n}").`);return s}function It({folderId:t,manifest:e,root:n}){const{adapter:s}=n;if(!n.entry)throw new Error(`canvas ingest discovery: "${t}" has no \`entry\` — an ingest root mounts the game's own entry module.`);return{...{id:n.id,name:e.name,description:n.description??"",...s.captureTimeoutMs!==void 0?{captureTimeoutMs:s.captureTimeoutMs}:{}},load:re(U(t,n.entry),s.contractShim===void 0?void 0:U(t,s.contractShim))}}let G=null;function kt(){return G||(G=ct("canvas").map(It).sort((t,e)=>t.id.localeCompare(e.id))),G}function Rt(t){return kt().find(e=>e.id===t)}const Pt="this game imports the host's pixi directly, in the editor's own realm";function ce(t,e,n){const s=R()?.systems;let r=null;const{systems:o,renderDebug:a,debugCollisions:i}=Ye({contractSystems:s,surface:"canvas",...n?{physics:n}:{},...e?{canvasRuntime:{renderer:e}}:{},setRenderPassHooks:c=>{r?.(),r=c?Qe(e,c):null}});Ie(o),h.log(s?`canvas ingest: "${t}" declares the vgai game contract — ${s.commands?.length??0} commands, ${s.state?.length??0} state providers`:`canvas ingest: "${t}" declares no vgai game contract — game.commands()/game.state() have nothing to answer and will refuse by naming that`,"ingest");for(const c of i)h.error(`canvas ingest: "${t}" — ${c}; it will refuse`,"ingest");return e&&h.log(a?`canvas ingest: "${t}" render debugging is live — the Frame debugger captures through the game's own Pixi renderer (draws are unattributed: Pixi's batcher merges display objects, so no display object is the author of a draw)`:`canvas ingest: "${t}" has no render-debug capability — its renderer exposes no real WebGL2 context, or no prerender/postrender runners to bracket`,"ingest"),{wiring:a,uninstall:()=>r?.()}}function _t(t,e){return e instanceof Error&&e.name===qe?`canvas ingest: game "${t}" never ran — its own modules failed to load, so nothing could render and there is no canvas runtime in the realm to recognize (${e})`:`canvas ingest: game "${t}" mounted no recognized canvas runtime — the host's pixi captured no frame, and the realm holds no Phaser game or Babylon.js engine on their own public registries either (${e})`}function Dt(t,e){const n=t?.canvas;return n instanceof Node&&e.contains(n)}function de(){return Ae(Ve(R()?.systems,"canvas").bound.physics)}function L(t,e){const n=ut(e);if(n)return{runtime:"phaser",adapter:new yt(n,t),mechanism:"this game runs its own Phaser instance in the editor's own realm; the host reads that live game’s active scenes and display lists"};const s=pt(e);return s?{runtime:"babylon",adapter:new Re(s,t),mechanism:"this game runs its own Babylon.js engine in the editor's own realm; the host reads that live engine’s scenes and root nodes"}:null}function V(t,e,n,s,r){const o=r.adapter;o.refresh();const a=ie({primary:o,worldId:n,hostEl:s,store:t}),i=se(),c=()=>i?{loop:null,reason:"the same-realm loop gate holds this game’s scheduling, but no probe has measured that control on this route"}:{loop:null,reason:Te},p=Y(i?{setPaused:m=>{m?i.hold():i.release()}}:{pauseGap:`${r.runtime} exposes no host-controlled loop gate`});let v=()=>{};Q({kind:"canvas",session:{store:t,adapter:o,hostEl:s,lifecycle:p,loop:c,dispose:()=>{v(),o.dispose(),B(),s.remove()}},siblings:[],worldId:n}),v=oe(t),Z(()=>t.playState==="playing"&&t.activeViewportTab==="play"),J(a),ce(e.name,void 0,de()),ae(),t.notifyIngestEdit(),K(),ee({reach:I({authoring:a}),reachMechanism:r.mechanism,loop:c}),h.log(`canvas ingest: recognized ${r.runtime} in the realm and captured "${e.name}"`,"ingest"),te("__vgaiIngest2D",{gameId:n,...ne(a),runtime:r.runtime,get reflected(){return o.refresh()},...p.setPaused?{setPaused:p.setPaused}:{},reach:I({authoring:a}),adapter:a,store:t})}async function jt(t,e,n){_e(),await Ce();const s=q();if(!s){h.error("Game container not mounted — cannot ingest (canvas)","ingest");return}t.setPlayState("playing"),h.log(`Ingesting unmodified PixiJS game: ${e.name}`,"ingest");const r=De(R());r.malformed!==null&&h.error(`Ingest game "${e.id}" ${r.malformed} — the host is measuring readiness instead.`,"ingest");const o=r.ready===null?"measured-wait":"contract-ready",a=r.ready===null?"measured":"declared";M({rootId:e.id,mechanism:o,source:a,state:"waiting"});const i=document.createElement("div");i.id="container",i.style.cssText=`position:absolute;inset:0;width:100%;height:100%;overflow:hidden;background:#000;${je}`,s.appendChild(i),$e(i);{const{markGameCssScope:u}=await H(async()=>{const{markGameCssScope:j}=await import("./index-Ckxb31Yz.js").then($=>$.u5);return{markGameCssScope:j}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]));u(i);const d=Ee();if(d){const{ensureScopedGameStyles:j}=await H(async()=>{const{ensureScopedGameStyles:$}=await import("./index-Ckxb31Yz.js").then(ue=>ue.u6);return{ensureScopedGameStyles:$}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]));await j(d.rootPath)}}window.__vgaiMountCold=!0;const c=await He();let p;try{const u=await ze(c,e,{...e.captureTimeoutMs!==void 0?{captureTimeoutMs:e.captureTimeoutMs}:{},acceptCapture:({renderer:d})=>Dt(d,i),onWait:d=>tt(e.id,d),preferStructuralRuntime:async()=>{const d=T();return await d.__vgaiBabylon?.ready,L(t,d)!==null}});if(u===null){const d=L(t,T());if(d){V(t,e,n,i,d);return}throw new Error(`canvas ingest: game "${e.id}" reported a structural runtime, but it disappeared before dispatch`)}p=u}catch(u){const d=L(t,T());if(d){V(t,e,n,i,d);return}throw B(),i.remove(),M({rootId:e.id,mechanism:o,source:a,state:"failed",failure:r.ready===null?"no-readiness-declaration":"declared-ready-never-resolved"}),new Error(_t(e.id,u))}const v=p.stage;for(let u=0;u<90&&(v.children?.length??0)===0;u++)await ke();const m=p.capture.captured?.app,b=m?.canvas;b&&(Xe(b),b.parentElement!==i&&i.appendChild(b));const P=We(m?[m]:[]),w=de(),E=et(Je()),l=w?Ze([w,E]):E,g=Me(R(),{onSwitchAccepted:u=>wt(u,{isHeld:()=>!Ge(),currentScene:()=>g?.active("")??null,render:()=>m?.render(),schedule:d=>requestAnimationFrame(d)})}),f=new Fe(v,t,{pixi:c,journal:Be(n),target:vt({physics:l,history:t.projectHistory}),...g?{stories:g}:{},surface:()=>m?.canvas??null,capturePreview:(u,d)=>Ue(u,{...d,pixi:c})}),x=f.refresh(),C=ie({primary:f,worldId:n,hostEl:i,store:t});let _=null,F=()=>{};const O=se(),N=Y({setPaused:u=>{p.setPaused(u),u?O?.hold():O?.release()}});Q({kind:"canvas",session:{store:t,adapter:f,hostEl:i,lifecycle:N,dispose:()=>{F(),_?.uninstall(),_?.wiring?.dispose(),P(),p.dispose(),B(),i.remove()}},siblings:[],worldId:n}),F=oe(t),Z(()=>t.playState==="playing"&&t.activeViewportTab==="play"),J(C),_=ce(e.name,p.capture.captured?.renderer,w?l:null),ae(),t.notifyIngestEdit(),K();let D="measured";if(r.ready)try{await r.ready(),D="declared"}catch(u){h.error(`Ingest game "${e.id}" declared \`window.vgaiGame.ready\` and it REJECTED (${String(u)}) — the frame was already captured, so the host fell back to the measured settle wait. This root now reports readiness as measured.`,"ingest")}M({rootId:e.id,mechanism:D==="declared"?"contract-ready":"measured-wait",source:D,state:"ready"}),ee({reach:I({authoring:C}),reachMechanism:Pt,loop:()=>({loop:null,reason:"the host stops and starts the captured PixiJS Application ticker directly, but no probe has measured whether that holds everything this game schedules"})}),h.log(`pixi ingest: captured "${e.name}" (${x.count} nodes, ${x.sprites} sprites)`,"ingest"),te("__vgaiIngest2D",{gameId:n,...ne(C),drawCount:()=>p.capture.getDrawCount(),get reflected(){return f.refresh()},setPaused:N.setPaused,reach:I({authoring:C}),adapter:C,store:t})}function le(t,e,n){return Pe(()=>jt(t,e,n))}async function jn(t,e,n){const s=At(e,n);return le(t,s,e.id)}async function $n(t,e){const n=Rt(e);if(!n){h.error(`Unknown pixi ingest game: ${e}`,"ingest");return}return le(t,n,e)}export{le as mountCanvasIngestRoot,$n as mountCanvasIngestRootById,jn as mountCanvasIngestRootFromManifest};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/create-runtime-lmA910XT.js","assets/adapter-surface-Y37Nzcyw.js","assets/binding-Bmxqznjk.js","assets/index-Ckxb31Yz.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/three.module-IFn-4i31.js","assets/index-B4bmKkgY.css","assets/assets-Do88ZdV_.js","assets/loader-BbMsvIxP.js","assets/setup-renderer-wt_a-p8r.js","assets/index-DUh02lTr.js","assets/defaults-DKiBJCPN.js","assets/render-settings-C_kIMq8Y.js","assets/render-features-COF7MSQ9.js","assets/game-loop-CZvXlY00.js","assets/frame-pacing-D5acoOzO.js","assets/debug-registry-B3Cnne3x.js","assets/game-D5EJoILQ.js","assets/loop-gate-report-N52EWFGD.js","assets/system-slot-E2mEdiih.js","assets/user-data-CZqsJDk-.js","assets/object-marks-DwvIEBOK.js","assets/seeded-random-CN0scLZj.js","assets/render-seed-DF4JHy7P.js","assets/sim-clock-DEfbb_-P.js","assets/system-runner-D_DtVrer.js","assets/performance-profiler-D_Jey87L.js","assets/input-manager-Cxx3RJgG.js","assets/asset-parse-error-BHMwBRU3.js","assets/binding-identity-DcTpbvyg.js","assets/prompt-labels-DSMdM2_B.js","assets/schema-Iy-mbzll.js","assets/gameplay-rng-trap-BhRx_CtU.js","assets/state-bridge-DLP1jLRW.js","assets/input-router-FzxO5ld6.js","assets/render-control-BNQr1eNO.js"])))=>i.map(i=>d[i]);
2
+ import{cn as f,X as s,_ as I,co as y,cp as v,cq as w,cr as R}from"./index-Ckxb31Yz.js";import{m as $}from"./capability-coverage-CfUeULDN.js";import{r as E}from"./binding-resolver-BWwG10zJ.js";import{s as j,j as G,k as A,l as P,p as D,m as H,c as O,r as N,n as C,o as T}from"./active-ingest-DEgq9JiA.js";import{a as b}from"./json-history-resource-r-9q_hxP.js";import{D as M}from"./dom-authoring-adapter-CEeFyatF.js";import{landIngestBootInEdit as V}from"./ingest-boot-viewport-uG9jQ1zm.js";import{b as L}from"./registry-DlTluc4x.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"./three.module-IFn-4i31.js";import"./game-contract-seams-TCpIMmHP.js";import"./native-debug-module-j-MekcLS.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-B3Cnne3x.js";import"./playtest-BnFenMBW.js";import"./adapter-surface-Y37Nzcyw.js";import"./entry-adjudication-BYy7TXOB.js";import"./r3f-root-factory-DjGnbU4n.js";import"./register-render-vitals-BO7x64kR.js";import"./render-census-BrQX_CXv.js";import"./structural-signature-0w-i_ats.js";import"./render-vitals-BZ5HtvMi.js";import"./static-batch-advisor-DqfXWRUq.js";import"./webgl-frame-capture-CRKX73E9.js";import"./world-state-ZGDGY_Xl.js";import"./frame-selector-cache-cCeUbcjG.js";import"./dev-build-gDYrq68M.js";import"./game-input-seams-BC6xhZy3.js";import"./seeded-random-CN0scLZj.js";import"./render-seed-DF4JHy7P.js";import"./frame-delta-D2nsw_Ht.js";import"./events-156d8d12.esm-C734MYnx.js";import"./index-bQE2NA0D.js";import"./realm-services-D25JHoqD.js";import"./canvas-entry-runtime-E5YjSgre.js";import"./three-ingest-runtime-DWijtqQ8.js";import"./EffectComposer-BHDH-NLz.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-qtkA7CQ8.js";import"./CSS3DRenderer-CAS2WZZy.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-DGLRLr-F.js";import"./ingest-source-persistence-DH6ioCOu.js";import"./react-world-authoring-adapter-BMT9kLWU.js";import"./board-guides-C3usUZZk.js";import"./writer-BPbm4_my.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BRgDdtVk.js";import"./inference-diagnostics-YW0yJkKx.js";function x({folderId:t,manifest:e,root:o}){if(!o.entry)throw new Error(`dom ingest discovery: "${t}" has no \`entry\` — a dom ingest root's \`entry\` must point at the host-shim module in the same folder (D-N2).`);return{folderId:t,manifest:e,worldId:o.id}}let h=null;function F(){return h||(h=L("dom").map(x).sort((t,e)=>t.folderId.localeCompare(e.folderId))),h}function W(t){return F().find(e=>e.folderId===t)}function q(t){return typeof __VGAI_ENGINE_ROOT__!="string"||!__VGAI_ENGINE_ROOT__?void 0:`${__VGAI_ENGINE_ROOT__.endsWith("/")?__VGAI_ENGINE_ROOT__.slice(0,-1):__VGAI_ENGINE_ROOT__}/packages/editor/src/ingest/games/${t}`}const z="this world mounts in the host's native React runtime, so the editor is limited only by what its authoring adapter provides";function k(t){return{reach:$({authoring:t}),reachMechanism:z,loop:H}}async function B(t,e){const o=W(e);if(!o){s.error(`Unknown react ingest game: ${e}`,"ingest");return}const u=q(e);if(!u){s.error(`React ingest "${e}": no __VGAI_ENGINE_ROOT__ available to resolve its entry`,"ingest");return}await f();const n=R();if(!n){s.error("Game container not mounted — cannot ingest (react)","ingest");return}O(),t.setPlayState("playing"),s.log(`Ingesting unmodified native-React game: ${o.manifest.name}`,"ingest"),window.__vgaiMountCold=!0;const{createGameRuntime:g}=await I(async()=>{const{createGameRuntime:a}=await import("./create-runtime-lmA910XT.js");return{createGameRuntime:a}},__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])),d=await E(o.manifest,u),l=n.clientWidth,_=n.clientHeight,r=await g({container:n,roots:d,width:l,height:_}),m=r.game.roots[0].reactRoot(),i=new M(m,t,{journal:b(e)}),c=G({setPaused:a=>a?r.game.play.pause():r.game.play.resume()});A({kind:"dom",session:{store:t,lifecycle:c,stop:()=>r.stop(),adapter:i},siblings:[],worldId:e}),P(()=>t.playState==="playing"&&t.activeViewportTab==="play"),y(i),v({}),V(),t.notifyIngestEdit(),w();const p=k(i);N(p),D("__vgaiIngestReact",{gameId:e,worldId:o.worldId,...T(i),noAuthoring:!1,reach:p.reach,domEvidence:()=>C(m,i),setPausedPresent:typeof c.setPaused=="function"})}async function Xt(t,e,o,u){await f();const n=R();if(!n){s.error("Game container not mounted — cannot ingest (react)","ingest");return}O(),t.setPlayState("playing"),s.log(`Ingesting unmodified native-React game (external folder): ${o.id}`,"ingest"),window.__vgaiMountCold=!0;const{createGameRuntime:g}=await I(async()=>{const{createGameRuntime:a}=await import("./create-runtime-lmA910XT.js");return{createGameRuntime:a}},__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])),d=await E({...e,roots:[o]},u),l=n.clientWidth,_=n.clientHeight,r=await g({container:n,roots:d,width:l,height:_}),m=r.game.roots[0].reactRoot(),i=new M(m,t,{journal:b(o.id)}),c=G({setPaused:a=>a?r.game.play.pause():r.game.play.resume()});A({kind:"dom",session:{store:t,lifecycle:c,stop:()=>r.stop(),adapter:i},siblings:[],worldId:o.id}),P(()=>t.playState==="playing"&&t.activeViewportTab==="play"),y(i),v({}),V(),t.notifyIngestEdit(),w();const p=k(i);N(p),D("__vgaiIngestReact",{worldId:o.id,...T(i),noAuthoring:!1,reach:p.reach,domEvidence:()=>C(m,i),setPausedPresent:typeof c.setPaused=="function"})}function Kt(t,e){return j(()=>B(t,e))}export{Kt as mountDomIngestRoot,Xt as mountDomIngestRootFromManifest};
@@ -1 +1 @@
1
- import{aj as f}from"./index-GIL7oGEO.js";import{installNativeDebugBindings as u,installNativeSystemsBindings as g,nativeDebugBindingFromEntryModule as l,nativeSystemsBindingFromEntryModule as y}from"./native-debug-module-CWicoSGD.js";import{publishDevInstruments as v}from"./instruments-CKR02Y8I.js";import{resolveManifest as h,mountManifestRoots as w}from"./mount-manifest-CGVxhmAw.js";import{assertExportedOrInEditor as b}from"./unexported-game-trap-Dm1JYKHy.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"./three.module-D396a9Mn.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-Dgvitx8M.js";import"./playtest-BXIL1JEF.js";import"./game-contract-seams-a5YXejOu.js";import"./frame-pacing-D5acoOzO.js";import"./adapter-surface-Y37Nzcyw.js";import"./create-runtime-CVCc1BDx.js";import"./binding-Bmxqznjk.js";import"./assets-BuSoGjBX.js";import"./loader-CaF_I7Yt.js";import"./setup-renderer-DVXaSGin.js";import"./index-BcCBqgM_.js";import"./defaults-DKiBJCPN.js";import"./render-settings-Bw4W9SYF.js";import"./render-features-CPQ_e568.js";import"./game-loop-CZvXlY00.js";import"./game-DHOZVb-7.js";import"./loop-gate-report-N52EWFGD.js";import"./system-slot-E2mEdiih.js";import"./user-data-BB2Of6Ht.js";import"./object-marks-DwvIEBOK.js";import"./seeded-random-i3mtgBKZ.js";import"./render-seed-DF4JHy7P.js";import"./sim-clock-CLflx7kg.js";import"./system-runner-DkOjxEBt.js";import"./performance-profiler-D_Jey87L.js";import"./input-manager-DH_hGW6d.js";import"./asset-parse-error-BHMwBRU3.js";import"./binding-identity-DcTpbvyg.js";import"./prompt-labels-DSMdM2_B.js";import"./schema-kl9-2B_J.js";import"./gameplay-rng-trap-CTNhm-UW.js";import"./state-bridge-DLP1jLRW.js";import"./input-router-BNQvtIqw.js";import"./render-control-Df3yTiyr.js";import"./debug-bridge-CCohG-d-.js";import"./run-ticks-settled-C4ksViyA.js";const o=new Map;function bt(t,r){if(o.has(t))throw new Error(`registerAdapter: a factory is already registered for kind "${t}" — call unregisterAdapter(kind) first if you intend to replace it (an accidental double-registration, e.g. two side-effect imports of the same registration module, is far more common than an intentional swap).`);o.set(t,r)}function Et(t){o.delete(t)}function Mt(t){return o.has(t)}function Ft(){o.clear()}function E(t,r){if(r===void 0||t.adapter.type!=="builtin")return[];const e=l(t.id,r);return e?[e]:[]}function M(t,r){if(r===void 0||t.adapter.type!=="builtin")return[];const e=y(t.id,r,t.surface);return e?[e]:[]}async function At(t,r,e={}){b();const s=h(t),a={...e.entries},p=[],d=[];for(const i of f(s)){if(a[i.id]!==void 0)continue;const c=o.get(i.adapter.identity);if(c){const m=i.entry!==void 0&&r.loadEntryModule?await r.loadEntryModule(i.entry):void 0;p.push(...E(i,m)),d.push(...M(i,m)),a[i.id]=await c(i,{host:r,entryModule:m});continue}throw new Error(`mountGameFromManifest: root "${i.id}" (adapter "${i.adapter.identity}") has no registered adapter factory and no explicit entries["${i.id}"] — call registerAdapter("${i.adapter.identity}", factory) before mounting (see \`r3fRootFactory\` in \`@volter/game-runtime/world3d-react\` for the worked three factory), or pass opts.entries["${i.id}"] directly (see mount-manifest.ts's \`MountEntry\`).`)}const n=await w({manifest:s,container:r.container,entries:a,width:r.width,height:r.height,headless:r.headless});return u(n.game,p),g(n.game,d),v(n.game),n}export{Ft as __clearAdapterSurfaceRegistryForTests,Mt as isAdapterRegistered,At as mountGameFromManifest,bt as registerAdapter,Et as unregisterAdapter};
1
+ import{ak as f}from"./index-Ckxb31Yz.js";import{installNativeDebugBindings as u,installNativeSystemsBindings as g,nativeDebugBindingFromEntryModule as l,nativeSystemsBindingFromEntryModule as y}from"./native-debug-module-j-MekcLS.js";import{publishDevInstruments as v}from"./instruments-IKn-vvNb.js";import{resolveManifest as h,mountManifestRoots as w}from"./mount-manifest-cYRhgHfo.js";import{assertExportedOrInEditor as b}from"./unexported-game-trap-Dm1JYKHy.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"./three.module-IFn-4i31.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-B3Cnne3x.js";import"./playtest-BnFenMBW.js";import"./game-contract-seams-TCpIMmHP.js";import"./frame-pacing-D5acoOzO.js";import"./adapter-surface-Y37Nzcyw.js";import"./create-runtime-lmA910XT.js";import"./binding-Bmxqznjk.js";import"./assets-Do88ZdV_.js";import"./loader-BbMsvIxP.js";import"./setup-renderer-wt_a-p8r.js";import"./index-DUh02lTr.js";import"./defaults-DKiBJCPN.js";import"./render-settings-C_kIMq8Y.js";import"./render-features-COF7MSQ9.js";import"./game-loop-CZvXlY00.js";import"./game-D5EJoILQ.js";import"./loop-gate-report-N52EWFGD.js";import"./system-slot-E2mEdiih.js";import"./user-data-CZqsJDk-.js";import"./object-marks-DwvIEBOK.js";import"./seeded-random-CN0scLZj.js";import"./render-seed-DF4JHy7P.js";import"./sim-clock-DEfbb_-P.js";import"./system-runner-D_DtVrer.js";import"./performance-profiler-D_Jey87L.js";import"./input-manager-Cxx3RJgG.js";import"./asset-parse-error-BHMwBRU3.js";import"./binding-identity-DcTpbvyg.js";import"./prompt-labels-DSMdM2_B.js";import"./schema-Iy-mbzll.js";import"./gameplay-rng-trap-BhRx_CtU.js";import"./state-bridge-DLP1jLRW.js";import"./input-router-FzxO5ld6.js";import"./render-control-BNQr1eNO.js";import"./debug-bridge-BUNhgyY6.js";import"./run-ticks-settled-B0cTtmhQ.js";const o=new Map;function bt(t,r){if(o.has(t))throw new Error(`registerAdapter: a factory is already registered for kind "${t}" — call unregisterAdapter(kind) first if you intend to replace it (an accidental double-registration, e.g. two side-effect imports of the same registration module, is far more common than an intentional swap).`);o.set(t,r)}function Et(t){o.delete(t)}function Mt(t){return o.has(t)}function Ft(){o.clear()}function E(t,r){if(r===void 0||t.adapter.type!=="builtin")return[];const e=l(t.id,r);return e?[e]:[]}function M(t,r){if(r===void 0||t.adapter.type!=="builtin")return[];const e=y(t.id,r,t.surface);return e?[e]:[]}async function At(t,r,e={}){b();const s=h(t),a={...e.entries},p=[],d=[];for(const i of f(s)){if(a[i.id]!==void 0)continue;const c=o.get(i.adapter.identity);if(c){const m=i.entry!==void 0&&r.loadEntryModule?await r.loadEntryModule(i.entry):void 0;p.push(...E(i,m)),d.push(...M(i,m)),a[i.id]=await c(i,{host:r,entryModule:m});continue}throw new Error(`mountGameFromManifest: root "${i.id}" (adapter "${i.adapter.identity}") has no registered adapter factory and no explicit entries["${i.id}"] — call registerAdapter("${i.adapter.identity}", factory) before mounting (see \`r3fRootFactory\` in \`@volter/game-runtime/world3d-react\` for the worked three factory), or pass opts.entries["${i.id}"] directly (see mount-manifest.ts's \`MountEntry\`).`)}const n=await w({manifest:s,container:r.container,entries:a,width:r.width,height:r.height,headless:r.headless});return u(n.game,p),g(n.game,d),v(n.game),n}export{Ft as __clearAdapterSurfaceRegistryForTests,Mt as isAdapterRegistered,At as mountGameFromManifest,bt as registerAdapter,Et as unregisterAdapter};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mount-canvas-ingest-root-BZZ8M3Lu.js","assets/index-Ckxb31Yz.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/three.module-IFn-4i31.js","assets/index-B4bmKkgY.css","assets/capability-coverage-CfUeULDN.js","assets/game-contract-seams-TCpIMmHP.js","assets/after-paint-CB4bz1-e.js","assets/babylon-authoring-adapter-B_8iE8fK.js","assets/json-history-resource-r-9q_hxP.js","assets/source-persistence-backend-_-JMEXxE.js","assets/ingest-source-persistence-DH6ioCOu.js","assets/active-ingest-DEgq9JiA.js","assets/playtest-BnFenMBW.js","assets/pixi-authoring-adapter-C5Ikqj5-.js","assets/authoring-CgcOFhGS.js","assets/index-BLo2LE8C.js","assets/pixi-transform-channels-VjdohT11.js","assets/pixi-live-write-target-OWBk79dp.js","assets/canvas-entry-runtime-E5YjSgre.js","assets/canvas-preview-frames-CiAx7dpV.js","assets/ingest-BlQnR7s3.js","assets/scene-capture-CLOc7GXc.js","assets/resolve-three-C-nx-QdA.js","assets/dom-authoring-adapter-CEeFyatF.js","assets/react-world-authoring-adapter-BMT9kLWU.js","assets/board-guides-C3usUZZk.js","assets/writer-BPbm4_my.js","assets/story-arg-descriptors-Ek86ExX7.js","assets/inspect-BRgDdtVk.js","assets/inference-diagnostics-YW0yJkKx.js","assets/debug-registry-B3Cnne3x.js","assets/webgl-frame-capture-CRKX73E9.js","assets/physics-registry-B2Jkp8e6.js","assets/system-adapters-rIC8FSGP.js","assets/ingest-boot-viewport-uG9jQ1zm.js","assets/CanvasSceneViewport-BlsRTk-X.js","assets/RootSelectionOverlay-BxvsunO4.js","assets/eyedropper-session-bjPXnfeX.js","assets/react-story-board-CSqHY0Cg.js","assets/viewport-pick-context-DkawXbEi.js","assets/Toolbar-keHcSvDD.js","assets/transform-mode-request-Cu7ewbtr.js","assets/TransientHint-Dlslh3oX.js","assets/surface-state-BAUJu6GY.js","assets/registry-DlTluc4x.js","assets/mount-dom-ingest-root-D1GV6Jjt.js","assets/binding-resolver-BWwG10zJ.js","assets/native-debug-module-j-MekcLS.js","assets/native-entry-surface-BE8LJNdu.js","assets/adapter-surface-Y37Nzcyw.js","assets/entry-adjudication-BYy7TXOB.js","assets/r3f-root-factory-DjGnbU4n.js","assets/register-render-vitals-BO7x64kR.js","assets/render-census-BrQX_CXv.js","assets/structural-signature-0w-i_ats.js","assets/render-vitals-BZ5HtvMi.js","assets/static-batch-advisor-DqfXWRUq.js","assets/world-state-ZGDGY_Xl.js","assets/frame-selector-cache-cCeUbcjG.js","assets/dev-build-gDYrq68M.js","assets/game-input-seams-BC6xhZy3.js","assets/seeded-random-CN0scLZj.js","assets/render-seed-DF4JHy7P.js","assets/frame-delta-D2nsw_Ht.js","assets/events-156d8d12.esm-C734MYnx.js","assets/index-bQE2NA0D.js","assets/realm-services-D25JHoqD.js","assets/three-ingest-runtime-DWijtqQ8.js","assets/EffectComposer-BHDH-NLz.js","assets/CopyShader-BzTUYzf6.js","assets/ShaderPass-qtkA7CQ8.js","assets/CSS3DRenderer-CAS2WZZy.js","assets/relative-path-guard-GiM7Lsz8.js","assets/react-root-DGLRLr-F.js","assets/mount-three-ingest-root-BNnouaBn.js","assets/scene-framing-50N7SKuX.js","assets/mount-readiness-Ds0HvvLH.js","assets/loop-gate-report-N52EWFGD.js","assets/three-authoring-adapter-Yqsank46.js","assets/three-projection-core-kubBTx0s.js","assets/three-DSsr_Lvp.js","assets/body-marks-D8iaje6y.js","assets/user-data-CZqsJDk-.js","assets/object-marks-DwvIEBOK.js","assets/structural-ids-CblajJQK.js","assets/object3d-authoring-subject-CyE4rQ2A.js","assets/rapier-physics-adapter-CaZqWLu0.js","assets/r3f-physics-binding-C8OqNRG2.js","assets/scene-capture-D10Nxkvp.js","assets/ingest-siblings-DRQXSWax.js","assets/mounted-authoring-TIN5EnCb.js","assets/crash-null-boundary-v3a0uEgw.js","assets/module-mode-CRfHyIMS.js","assets/deferred-ingest-play-7V8OrW3e.js","assets/edit-mode-authoring-D_BiHCQj.js"])))=>i.map(i=>d[i]);
2
+ import{gR as S,aG as d,_ as s,y as k,gS as C,X as u,gT as T,cm as c,cr as g,z as L,cl as y,f6 as m,gU as F,co as D,gu as O,eW as V,cq as j,gV as $}from"./index-Ckxb31Yz.js";import{q as x,t as W,g as _,u as z,a as q,v as B,c as N,w as G,x as K,i as H,y as U}from"./active-ingest-DEgq9JiA.js";let M=null;const X=new Set;function J(){for(const t of X)t()}function ct(t,n){M=n?{worldId:t,window:n}:null,J(),S()}function Q(){const t=M;if(!t)return null;const n=t.window.isHidden(),o=t.window.isSuspended(),e=t.window.suspensionReason();return{worldId:t.worldId,budgetMs:t.window.budgetMs,elapsedVisibleMs:Math.round(t.window.elapsedVisibleMs()),hidden:n,suspended:o,suspensionReason:e,reason:e==="hidden"?"waiting for first visible frame — tab is hidden (a hidden tab cannot render, so the capture window is parked, not counting down; bring the tab to the foreground)":e==="unfocused"?"waiting for the browser to resume frame presentation — the editor window is unfocused (WebKit can suspend requestAnimationFrame in this state, so the capture window is parked; focus the editor window)":e==="page-suspended"?"waiting for the browser to restore the suspended editor page — the capture window is parked, not counting down":o?"waiting for the browser to resume frame presentation — the capture window is parked":"waiting for the game's first rendered frame"}}function R(){const t=q();if(!t)return null;const n=t.kind==="three"?t.session.mount:void 0,o=t.kind==="canvas"?t.session.loop?.():void 0,e=x(n?.realmLoopVerdict?.())??o?.loop??null,r=n?.realmLoopVerdict?.()?.reason??o?.reason??null;return{worldId:t.worldId,kind:t.kind,playing:z(),loop:e,loopReason:r,canStep:_()?.canStep??!1,coverage:W()}}const Y=()=>s(()=>import("./mount-canvas-ingest-root-BZZ8M3Lu.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])),Z=()=>s(()=>import("./mount-dom-ingest-root-D1GV6Jjt.js"),__vite__mapDeps([53,1,2,3,4,5,6,7,8,9,10,11,12,13,54,55,56,38,20,57,58,59,60,61,62,63,64,39,65,66,67,68,69,70,71,72,73,74,26,75,76,77,78,79,80,81,19,18,16,31,32,33,34,35,36,37,42,52])),tt=()=>s(()=>import("./mount-three-ingest-root-BNnouaBn.js"),__vite__mapDeps([82,12,1,2,3,4,5,6,7,8,9,10,11,13,19,18,20,83,30,16,31,32,33,34,35,36,37,38,39,75,76,77,78,79,84,85,86,17,87,88,47,89,90,91,92,93,94,95,96,42,52]));function v(...t){return Y().then(n=>n.mountCanvasIngestRootFromManifest(...t))}function b(...t){return Z().then(n=>n.mountDomIngestRootFromManifest(...t))}function P(...t){return tt().then(n=>n.mountThreeIngestRootFromManifest(...t))}V(t=>{j()});$(()=>({ingest:R(),ingestCaptureWait:Q()}));function l(t,n){u.error(`Ingest mount failed for "${n.worldId}" (${n.identity}): ${n.message}`,"ingest"),N(),B(),t.setPlayState("stopped"),y(n),t.notifyIngestEdit()}async function et(){try{return await k()}catch(t){return C(t)||u.error(`Ingest routing: this project's ${T} could not be read, so no root was mounted from it — ${c(t)}`,"ingest"),null}}function f(t){return L(t)}function p(t){const n=t.map(e=>`"${e.id}"`).join(", "),o=`a composite manifest declares exactly ONE ingest world in this slice — found ${t.length}: ${n}.`;u.error(`Manifest composite ingest route: ${o}`,"ingest");for(const e of t)y({worldId:e.id,kind:e.surface,identity:e.adapter.identity,message:o})}async function w(t,n,o,e,r){const{mountIngestSiblings:a}=await s(async()=>{const{mountIngestSiblings:E}=await import("./ingest-siblings-DRQXSWax.js");return{mountIngestSiblings:E}},__vite__mapDeps([97,1,2,3,4,5,6,7,8,9,10,11,98,21,22,23,17,18,16,24,25,26,99,74,65,38,66,75,76,77,78,79,81,31,32,33,34,35,36,37,40,41,86,87,88,47,89,90,91,92,93,94,95,100,12,13,54,55,56,20,57,58,59,60,61,62,63,64,39,67,68,69,70,71,72,73,80])),i=await a(t,n,o,e,r);return G(i),i}function I(t,n,o){if(o.length===0)return;const e=O();if(!e)return;const a=[...e instanceof m?e.childAdapters().map(i=>({worldId:i.worldId,kind:i.kind,adapter:i.adapter,role:i.role,zOrder:i.zOrder,...i.label!==void 0?{label:i.label}:{},...i.parentRootId!==void 0?{parentRootId:i.parentRootId}:{}})):[{worldId:n.id,kind:n.surface,adapter:e}],...o.map(i=>({worldId:i.worldId,kind:F(t,i.worldId)?.surface??"unknown",adapter:i.authoring}))];D(new m(a))}async function nt(t,n){if(!n)return!1;const o=f(n);if(o.length===0)return!1;if(o.length>1)return p(o),!0;const e=o[0];if(e.adapter.identity!=="ingest-three")return!1;const r=d();if(!r)return u.error("Manifest declares an ingest-three world but no project is open — cannot auto-ingest","ingest"),!0;try{await P(t,e,r.rootPath);const a=g();if(a){const i=await w(n,e.id,a,r.rootPath,t);I(n,e,i)}}catch(a){l(t,{worldId:e.id,kind:e.surface,identity:e.adapter.identity,message:c(a)})}return!0}async function ot(t,n){if(!n)return!1;const o=f(n);if(o.length===0)return!1;if(o.length>1)return p(o),!0;const e=o[0];if(e.adapter.identity!=="ingest-pixi")return!1;const r=d();if(!r)return u.error("Manifest declares an ingest-pixi world but no project is open — cannot auto-ingest","ingest"),!0;try{await v(t,e,r.rootPath);const a=g();if(a){const i=await w(n,e.id,a,r.rootPath,t);I(n,e,i)}}catch(a){l(t,{worldId:e.id,kind:e.surface,identity:e.adapter.identity,message:c(a)})}return!0}async function rt(t,n){if(!n)return!1;const o=f(n);if(o.length===0)return!1;if(o.length>1)return p(o),!0;const e=o[0];if(e.adapter.identity!=="ingest-react")return!1;const r=d();if(!r)return u.error("Manifest declares an ingest-react world but no project is open — cannot auto-ingest","ingest"),!0;try{await b(t,n,e,r.rootPath);const a=g();if(a){const i=await w(n,e.id,a,r.rootPath,t);I(n,e,i)}}catch(a){l(t,{worldId:e.id,kind:e.surface,identity:e.adapter.identity,message:c(a)})}return!0}function it(t){return at(t,()=>st(t))}const h=new WeakMap;function at(t,n){let o=h.get(t);o||(o=new Map,h.set(t,o));const e=d()?.rootPath??"",r=o.get(e);if(r)return r;const a=n();return o.set(e,a),a}async function A(t){const{tryManifestModuleRoute:n}=await s(async()=>{const{tryManifestModuleRoute:e}=await import("./module-mode-CRfHyIMS.js");return{tryManifestModuleRoute:e}},__vite__mapDeps([100,1,2,3,4,5,6,7,8,9,10,11,12,13,54,55,56,38,20,57,58,59,60,61,62,63,64,39,65,66,67,68,69,70,71,72,73,74,26,75,76,77,78,79,80,81]));if(await n(t))return;const o=await et();await nt(t,o)||await ot(t,o)||await rt(t,o)}async function st(t){const{deferredIngestPlayActive:n,ingestMountIsDeferredToPlay:o}=await s(async()=>{const{deferredIngestPlayActive:e,ingestMountIsDeferredToPlay:r}=await import("./deferred-ingest-play-7V8OrW3e.js");return{deferredIngestPlayActive:e,ingestMountIsDeferredToPlay:r}},__vite__mapDeps([101,1,2,3,4,5,6,7,8,9,10,11,102,19,13,12,18,20]));if(await o()){if(n())return;const{landIngestBootInEdit:e}=await s(async()=>{const{landIngestBootInEdit:r}=await import("./ingest-boot-viewport-uG9jQ1zm.js");return{landIngestBootInEdit:r}},__vite__mapDeps([42,1,2,3,4,5,6,7,8,9,10,11,19,13,12,18,20]));e();return}await A(t)}const gt=Object.freeze(Object.defineProperty({__proto__:null,activeIngestKind:K,autoLaunchIngest:it,getIngestPlayControl:_,ingestStatusFacet:R,isIngestActive:H,launchIngestRoutes:A,mountCanvasIngestRootFromManifest:v,mountDomIngestRootFromManifest:b,mountThreeIngestRootFromManifest:P,unmountThreeIngestRoot:U},Symbol.toStringTag,{value:"Module"}));export{it as a,gt as m,ct as s};
@@ -1 +1 @@
1
- import{assertNever as p}from"./adapter-surface-Y37Nzcyw.js";import{aj as c,ai as f}from"./index-GIL7oGEO.js";import{createGameRuntime as l}from"./create-runtime-CVCc1BDx.js";import{maybeInstallDebugBridge as h}from"./debug-bridge-CCohG-d-.js";import{g as y}from"./debug-registry-Dgvitx8M.js";import"./gameplay-rng-trap-CTNhm-UW.js";import{RENDER_SEED_QUERY_PARAM as g}from"./render-seed-DF4JHy7P.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"./three.module-D396a9Mn.js";import"./binding-Bmxqznjk.js";import"./assets-BuSoGjBX.js";import"./loader-CaF_I7Yt.js";import"./setup-renderer-DVXaSGin.js";import"./index-BcCBqgM_.js";import"./defaults-DKiBJCPN.js";import"./render-settings-Bw4W9SYF.js";import"./render-features-CPQ_e568.js";import"./game-loop-CZvXlY00.js";import"./frame-pacing-D5acoOzO.js";import"./game-DHOZVb-7.js";import"./loop-gate-report-N52EWFGD.js";import"./system-slot-E2mEdiih.js";import"./user-data-BB2Of6Ht.js";import"./object-marks-DwvIEBOK.js";import"./seeded-random-i3mtgBKZ.js";import"./sim-clock-CLflx7kg.js";import"./system-runner-DkOjxEBt.js";import"./performance-profiler-D_Jey87L.js";import"./input-manager-DH_hGW6d.js";import"./asset-parse-error-BHMwBRU3.js";import"./binding-identity-DcTpbvyg.js";import"./prompt-labels-DSMdM2_B.js";import"./schema-kl9-2B_J.js";import"./state-bridge-DLP1jLRW.js";import"./input-router-BNQvtIqw.js";import"./render-control-Df3yTiyr.js";import"./run-ticks-settled-C4ksViyA.js";function v(e){if(e.determinism?.seededRandom!==!0)return;const t=e.url?R(e.url):void 0;return e.explicitSeed??t??e.determinism.defaultSeed}function R(e){const t=new URLSearchParams(e.search).get(g);if(t===null||t==="")return;const r=Number(t);return Number.isFinite(r)?r:void 0}function b(){return typeof window<"u"}function E(e){if(typeof e!="object"||e===null)return!1;if(Array.isArray(e.deferredConfigurationKinds))return!0;const t=e.roots;return!Array.isArray(t)||t.length===0?!1:t.every(r=>{if(typeof r!="object"||r===null)return!1;const i=r.adapter;if(typeof i!="object"||i===null)return!1;const o=i.type;return o==="builtin"||o==="module"||o==="ingest"})}function w(e){return E(e)?e:f(e,{configurationKinds:"defer"})}function M(e,t){if(t?.adapter)return t.adapter;throw e.adapter.type==="module"?new Error(`mountManifestRoots: world "${e.id}" (three) declares a { module } adapter ("${e.adapter.module}") — mountManifestRoots never imports an arbitrary module path itself (no \`/@fs/\`, no dev server). Import the module yourself and supply the constructed adapter via entries["${e.id}"] = { kind: 'three', adapter }.`):e.adapter.type==="ingest"?new Error(`mountManifestRoots: world "${e.id}" (three) declares an { ingest } adapter — captured ingest roots require the editor's dev-server-backed mount machinery (an EditorStore plus in-realm scene capture, see resolveIngestDescriptor + mountThreeIngestRootFromManifest) and are not supported by mountManifestRoots (no porting aids, no hosted ingest routes).`):e.entry!==void 0?new Error(`mountManifestRoots: world "${e.id}" (three) declares \`entry\` "${e.entry}" — supply entries["${e.id}"] = { kind: 'three', adapter } (for a default-exported world, build it with \`resolveR3FEntryAdapter(entryModule, worldId)\` from \`@volter/game-runtime/world3d-react\`). Got ${t===void 0?"no entry at all":"an entry with no `adapter`"}.`):new Error(`mountManifestRoots: world "${e.id}" is default-three with no \`entry\` — this should have been rejected by manifest validation.`)}function $(e,t){if(t?.adapter)return t.adapter;throw new Error(`mountManifestRoots: world "${e.id}" (canvas) has no entries["${e.id}"] — a canvas world always needs a caller-supplied, already-constructed adapter (entries["${e.id}"] = { kind: 'canvas', adapter }, constructed from your own already-imported pixi module graph) — mountManifestRoots never value-imports pixi.js (mirrors create-runtime.ts's own pixi-free-core discipline).`)}function k(e,t){if(t?.adapter)return t.adapter;throw new Error(`mountManifestRoots: world "${e.id}" (react) has no entries["${e.id}"] — a react world always needs a caller-supplied, already-constructed \`RootAdapter<'dom'>\` (entries["${e.id}"] = { kind: 'dom', adapter }, mounting via your own already-imported react-dom \`createRoot\` + your own \`<WorldProvider>\`) — mountManifestRoots never value-imports react/react-dom (mirrors create-runtime.ts's own react-free-core discipline).`)}function A(e,t){if(t!==void 0&&t.kind!==e.surface)throw new Error(`mountManifestRoots: entries["${e.id}"] declares kind "${t.kind}" but the manifest's root "${e.id}" uses surface "${e.surface}" — fix the entries key (or the manifest) so the two agree.`);const r={id:e.id,zOrder:e.zOrder,pausable:e.pausable,...t?.declaration===void 0?{}:{declaration:{root:e,...t.declaration}}};return e.surface==="three"?{...r,kind:"three",adapter:M(e,t)}:e.surface==="canvas"?{...r,kind:"canvas",adapter:$(e,t)}:e.surface==="dom"?{...r,kind:"dom",adapter:k(e,t)}:p(e.surface,"mountManifestRoots")}async function ve(e){const t=w(e.manifest),r=c(t);if(r.length===0)throw new Error("mountManifestRoots: manifest declares no roots — nothing to mount.");const i=e.entries??{},o=r.map(n=>A(n,i[n.id])),m=e.seedUrl??(b()?window.location:void 0),u=v({determinism:t.determinism,explicitSeed:e.seed,url:m}),a=await l({container:e.container,roots:o,width:e.width??t.resolution?.width,height:e.height??t.resolution?.height,headless:e.headless,...t.rendering===void 0?{}:{antialias:t.rendering.antialias},seed:u,playtest:e.playtest});t.determinism?.seededRandom;const s=y(a.game);if(s){t.configurations.some(d=>d.kind==="process")&&s.setRoomDeclared(!0);const n=h({registry:s,manifest:t,url:e.debugBridge?.url,window:e.debugBridge?.window});if(n){const d=a.stop;a.stop=()=>{n.uninstall(),d()}}}return a}export{ve as mountManifestRoots,v as resolveDeterminismSeed,w as resolveManifest};
1
+ import{assertNever as p}from"./adapter-surface-Y37Nzcyw.js";import{ak as c,aj as f}from"./index-Ckxb31Yz.js";import{createGameRuntime as l}from"./create-runtime-lmA910XT.js";import{maybeInstallDebugBridge as h}from"./debug-bridge-BUNhgyY6.js";import{g as y}from"./debug-registry-B3Cnne3x.js";import"./gameplay-rng-trap-BhRx_CtU.js";import{RENDER_SEED_QUERY_PARAM as g}from"./render-seed-DF4JHy7P.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"./three.module-IFn-4i31.js";import"./binding-Bmxqznjk.js";import"./assets-Do88ZdV_.js";import"./loader-BbMsvIxP.js";import"./setup-renderer-wt_a-p8r.js";import"./index-DUh02lTr.js";import"./defaults-DKiBJCPN.js";import"./render-settings-C_kIMq8Y.js";import"./render-features-COF7MSQ9.js";import"./game-loop-CZvXlY00.js";import"./frame-pacing-D5acoOzO.js";import"./game-D5EJoILQ.js";import"./loop-gate-report-N52EWFGD.js";import"./system-slot-E2mEdiih.js";import"./user-data-CZqsJDk-.js";import"./object-marks-DwvIEBOK.js";import"./seeded-random-CN0scLZj.js";import"./sim-clock-DEfbb_-P.js";import"./system-runner-D_DtVrer.js";import"./performance-profiler-D_Jey87L.js";import"./input-manager-Cxx3RJgG.js";import"./asset-parse-error-BHMwBRU3.js";import"./binding-identity-DcTpbvyg.js";import"./prompt-labels-DSMdM2_B.js";import"./schema-Iy-mbzll.js";import"./state-bridge-DLP1jLRW.js";import"./input-router-FzxO5ld6.js";import"./render-control-BNQr1eNO.js";import"./run-ticks-settled-B0cTtmhQ.js";function v(e){if(e.determinism?.seededRandom!==!0)return;const t=e.url?R(e.url):void 0;return e.explicitSeed??t??e.determinism.defaultSeed}function R(e){const t=new URLSearchParams(e.search).get(g);if(t===null||t==="")return;const r=Number(t);return Number.isFinite(r)?r:void 0}function b(){return typeof window<"u"}function E(e){if(typeof e!="object"||e===null)return!1;if(Array.isArray(e.deferredConfigurationKinds))return!0;const t=e.roots;return!Array.isArray(t)||t.length===0?!1:t.every(r=>{if(typeof r!="object"||r===null)return!1;const i=r.adapter;if(typeof i!="object"||i===null)return!1;const o=i.type;return o==="builtin"||o==="module"||o==="ingest"})}function w(e){return E(e)?e:f(e,{configurationKinds:"defer"})}function M(e,t){if(t?.adapter)return t.adapter;throw e.adapter.type==="module"?new Error(`mountManifestRoots: world "${e.id}" (three) declares a { module } adapter ("${e.adapter.module}") — mountManifestRoots never imports an arbitrary module path itself (no \`/@fs/\`, no dev server). Import the module yourself and supply the constructed adapter via entries["${e.id}"] = { kind: 'three', adapter }.`):e.adapter.type==="ingest"?new Error(`mountManifestRoots: world "${e.id}" (three) declares an { ingest } adapter — captured ingest roots require the editor's dev-server-backed mount machinery (an EditorStore plus in-realm scene capture, see resolveIngestDescriptor + mountThreeIngestRootFromManifest) and are not supported by mountManifestRoots (no porting aids, no hosted ingest routes).`):e.entry!==void 0?new Error(`mountManifestRoots: world "${e.id}" (three) declares \`entry\` "${e.entry}" — supply entries["${e.id}"] = { kind: 'three', adapter } (for a default-exported world, build it with \`resolveR3FEntryAdapter(entryModule, worldId)\` from \`@volter/game-runtime/world3d-react\`). Got ${t===void 0?"no entry at all":"an entry with no `adapter`"}.`):new Error(`mountManifestRoots: world "${e.id}" is default-three with no \`entry\` — this should have been rejected by manifest validation.`)}function $(e,t){if(t?.adapter)return t.adapter;throw new Error(`mountManifestRoots: world "${e.id}" (canvas) has no entries["${e.id}"] — a canvas world always needs a caller-supplied, already-constructed adapter (entries["${e.id}"] = { kind: 'canvas', adapter }, constructed from your own already-imported pixi module graph) — mountManifestRoots never value-imports pixi.js (mirrors create-runtime.ts's own pixi-free-core discipline).`)}function k(e,t){if(t?.adapter)return t.adapter;throw new Error(`mountManifestRoots: world "${e.id}" (react) has no entries["${e.id}"] — a react world always needs a caller-supplied, already-constructed \`RootAdapter<'dom'>\` (entries["${e.id}"] = { kind: 'dom', adapter }, mounting via your own already-imported react-dom \`createRoot\` + your own \`<WorldProvider>\`) — mountManifestRoots never value-imports react/react-dom (mirrors create-runtime.ts's own react-free-core discipline).`)}function A(e,t){if(t!==void 0&&t.kind!==e.surface)throw new Error(`mountManifestRoots: entries["${e.id}"] declares kind "${t.kind}" but the manifest's root "${e.id}" uses surface "${e.surface}" — fix the entries key (or the manifest) so the two agree.`);const r={id:e.id,zOrder:e.zOrder,pausable:e.pausable,...t?.declaration===void 0?{}:{declaration:{root:e,...t.declaration}}};return e.surface==="three"?{...r,kind:"three",adapter:M(e,t)}:e.surface==="canvas"?{...r,kind:"canvas",adapter:$(e,t)}:e.surface==="dom"?{...r,kind:"dom",adapter:k(e,t)}:p(e.surface,"mountManifestRoots")}async function ve(e){const t=w(e.manifest),r=c(t);if(r.length===0)throw new Error("mountManifestRoots: manifest declares no roots — nothing to mount.");const i=e.entries??{},o=r.map(n=>A(n,i[n.id])),m=e.seedUrl??(b()?window.location:void 0),u=v({determinism:t.determinism,explicitSeed:e.seed,url:m}),a=await l({container:e.container,roots:o,width:e.width??t.resolution?.width,height:e.height??t.resolution?.height,headless:e.headless,...t.rendering===void 0?{}:{antialias:t.rendering.antialias},seed:u,playtest:e.playtest});t.determinism?.seededRandom;const s=y(a.game);if(s){t.configurations.some(d=>d.kind==="process")&&s.setRoomDeclared(!0);const n=h({registry:s,manifest:t,url:e.debugBridge?.url,window:e.debugBridge?.window});if(n){const d=a.stop;a.stop=()=>{n.uninstall(),d()}}}return a}export{ve as mountManifestRoots,v as resolveDeterminismSeed,w as resolveManifest};
@@ -0,0 +1 @@
1
+ import{m as Q}from"./capability-coverage-CfUeULDN.js";import{X as h,aD as Y,aF as Z,kw as ee,kx as E,ky as D,kz as te,aG as O,kA as re,kB as ne,kC as oe,kD as se,gA as ae,kE as ie,cn as ce,cr as de,co as ue,cp as le,cq as me}from"./index-Ckxb31Yz.js";import{A as pe,G as fe,B as he,C as ge,D as v,E as W,F as ye,H as we,I as be,J as ve,K as M,L as Se,s as Ie,c as ke,M as Re,j as Ee,k as $e,l as Ce,N as Me,u as Pe,y as Le,z as Ge,O as Ae,r as Te,P as De,Q as Oe,p as We,o as je}from"./active-ingest-DEgq9JiA.js";import{p as _e}from"./scene-framing-50N7SKuX.js";import{w as ze,c as x,h as Fe,i as xe,a as He,b as Ue,r as Ve,e as Be}from"./resolve-three-C-nx-QdA.js";import{s as Ne}from"./ingest-source-persistence-DH6ioCOu.js";import{a as j}from"./json-history-resource-r-9q_hxP.js";import{r as qe}from"./three-ingest-runtime-DWijtqQ8.js";import{describeMountFailure as Je}from"./mount-readiness-Ds0HvvLH.js";import{formatLoopGateMessage as Ke}from"./loop-gate-report-N52EWFGD.js";import{a as Xe,s as Qe}from"./three-authoring-adapter-Yqsank46.js";import{installSceneCapture as Ye}from"./scene-capture-D10Nxkvp.js";import{s as Ze}from"./mount-ingest-root-B5D-Lmmk.js";import{landIngestBootInEdit as et}from"./ingest-boot-viewport-uG9jQ1zm.js";import{b as tt,c as _,e as rt,g as H}from"./registry-DlTluc4x.js";import"./game-contract-seams-TCpIMmHP.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"./three.module-IFn-4i31.js";import"./playtest-BnFenMBW.js";import"./dom-authoring-adapter-CEeFyatF.js";import"./react-world-authoring-adapter-BMT9kLWU.js";import"./board-guides-C3usUZZk.js";import"./writer-BPbm4_my.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BRgDdtVk.js";import"./inference-diagnostics-YW0yJkKx.js";import"./debug-registry-B3Cnne3x.js";import"./webgl-frame-capture-CRKX73E9.js";import"./EffectComposer-BHDH-NLz.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-qtkA7CQ8.js";import"./CSS3DRenderer-CAS2WZZy.js";import"./source-persistence-backend-_-JMEXxE.js";import"./three-projection-core-kubBTx0s.js";import"./three-DSsr_Lvp.js";import"./viewport-pick-context-DkawXbEi.js";import"./body-marks-D8iaje6y.js";import"./user-data-CZqsJDk-.js";import"./object-marks-DwvIEBOK.js";import"./structural-ids-CblajJQK.js";import"./object3d-authoring-subject-CyE4rQ2A.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./r3f-physics-binding-C8OqNRG2.js";const nt="contract-hierarchy:group:",I="contract-hierarchy:render-tree";function U(t){return`${nt}${encodeURIComponent(t)}`}function z(t){return{id:U(t.id),label:t.label,secondaryLabel:`${t.count} ${t.count===1?"item":"items"}`,role:"folder",kind:"group",parentId:null,childIds:[]}}function ot(t){if(!Array.isArray(t))throw new Error("hierarchy() did not return an array");const e=new Set;for(const r of t){if(typeof r!="object"||r===null||typeof r.id!="string"||r.id.trim().length===0||typeof r.label!="string"||r.label.trim().length===0||typeof r.count!="number"||!Number.isInteger(r.count)||r.count<0)throw new Error("hierarchy() returned an invalid { id, label, count } group");if(e.has(r.id))throw new Error(`hierarchy() returned duplicate id "${r.id}"`);e.add(r.id)}return t}function st(t,e){if(!e)return t;let r=!1;const o=()=>{try{return ot(e())}catch(a){return r||(r=!0,h.warn(`Ignored invalid game-contract hierarchy: ${a instanceof Error?a.message:String(a)}`,"ingest")),[]}},n=()=>{const a=o(),i=t.hierarchy.roots();return a.length===0?i:[...a.map(z),{id:I,label:"Rendered objects",secondaryLabel:"live tree",role:"folder",kind:"group",parentId:null,childIds:i.map(d=>d.id)}]},s=a=>{const i=o(),d=i.find(w=>U(w.id)===a);if(d)return z(d);if(i.length>0&&a===I){const w=t.hierarchy.roots();return{id:I,label:"Rendered objects",secondaryLabel:"live tree",role:"folder",kind:"group",parentId:null,childIds:w.map(g=>g.id)}}const f=t.hierarchy.node(a);return i.length>0&&f?.parentId===null?{...f,parentId:I}:f},l=new Proxy(t.hierarchy,{get(a,i){if(i==="roots")return n;if(i==="node")return s;const d=Reflect.get(a,i,a);return typeof d=="function"?d.bind(a):d}}),m=a=>{const i=t.subscribe?.(a),d=e.subscribe?.(a);return()=>{i?.(),d?.()}};return new Proxy(t,{get(a,i){if(i==="hierarchy")return l;if(i==="subscribe")return m;const d=Reflect.get(a,i,a);return typeof d=="function"?d.bind(a):d}})}const at="vgaiDomStub";let F=null;function V(t){for(const e of pe())if(e.surface.contains(t))return e;return null}function it(){if(F!==null||typeof Element>"u")return;const t=Element.prototype,e=t.requestPointerLock;typeof e=="function"&&(F=e,t.requestPointerLock=function(r){const o=V(this);return o&&!o.gate()?(console.error("Ingested game requested pointer lock while its input gate is closed — refused. A game only captures the mouse while play is running AND the Game tab is active (the same predicate that gates its keyboard listeners); the editor viewport owns pointer lock otherwise. See packages/editor/src/ingest/game-pointer-lock.ts."),Promise.reject(new Error("pointer lock refused: game input gate is closed"))):e.call(this,r)})}function B(){if(typeof document>"u")return;const t=document.pointerLockElement;t&&V(t)&&document.exitPointerLock()}function ct(t,e,r,o,n={}){let s=null;return{setPaused(l){if(!l){o.resume(),n.realmGate?.release();return}o.pause(),n.realmGate?.hold(),be({gate:n.realmGate??null,progress:()=>e.info?.render.frame??t.getDrawCount(),...n.verifyWindowMs!==void 0?{windowMs:n.verifyWindowMs}:{},...n.sleep!==void 0?{sleep:n.sleep}:{}}).then(m=>{s=m,n.onVerdict?.(m),m.loop!=="gated"&&console.warn(Ke({worldId:r,reason:t.getAnimationLoop(e)?m.reason:`${m.reason} (this game also never called renderer.setAnimationLoop)`}))})},lastVerdict:()=>s}}function dt(t){let e=0;return t.traverse(r=>{ae(r)!==void 0&&e++}),e}async function ut(t,e=2500,r=o=>new Promise(n=>setTimeout(n,o))){const o=performance.now();for(;;){const n=dt(t);if(n>0)return n;if(performance.now()-o>=e)return 0;await r(100)}}function lt(t,e){const r=e.replace(/\\/g,"/"),o=r.startsWith("/")?"":t.replace(/\\/g,"/"),n=[];for(const s of`${o}/${r}`.split("/"))s===""||s==="."||(s===".."?n.pop():n.push(s));return`/${n.join("/")}`}function mt(t,e){if(!t)return[];const r=t.replace(/\\/g,"/").replace(/\/+$/,""),o=new Set([r]);for(const n of e??[]){const s=lt(r,n),l=s.slice(0,s.lastIndexOf("/"));l&&o.add(l)}return[...o]}function pt(t,e){if(!t||e.length===0)return!1;for(const r of Object.values(t)){const o=r?.file;if(typeof o!="string")continue;const n=o.replace(/\\/g,"/");if(e.some(s=>n===s||n.startsWith(`${s}/`)))return!0}return!1}function ft(t){return t.servedStampedSource||t.graphStamps>0?"oid-source":"structural"}async function ht(){if(!await re())return null;try{return await ne().index?.()??null}catch{return null}}function gt(t){return h.getEntries().filter(e=>e.level==="error"&&e.source==="runtime"&&e.timestamp>=t).slice(-10).map(e=>e.count>1?`${e.message} (×${e.count})`:e.message)}async function yt(t,e,r){if(r)try{return await r(),"declared"}catch(o){h.error(`Ingest game "${t}" declared \`window.vgaiGame.ready\` and it REJECTED (${String(o)}) — the world was already captured, so the host fell back to the measured settle wait. This root now reports readiness as measured.`,"ingest")}return await wt(e),"measured"}async function wt(t,e=5e3){const r=performance.now();let o=-1,n=0;return new Promise(s=>{const l=()=>{const m=t.children.length;if(n=m===o?n+1:0,o=m,n>=3||performance.now()-r>e)return s();setTimeout(l,120)};l()})}function bt(t,e){const r=we(),o=v()?.root??r.__vgaiGameRoot,n=o instanceof HTMLElement&&o.contains(e)?o:e;return n.contains(t)?t:(n.parentElement!==t&&t.contains(n)||(x(n),n.parentElement!==t&&t.appendChild(n)),n)}async function vt(t,e,r,o={}){const n=document.createElement("div");n.id="container",n.style.cssText=`position:absolute;inset:0;width:100%;height:100%;overflow:hidden;${fe}`,r.appendChild(n);const s=he(n);Y(n);const l=O();l&&await Z(l.rootPath);const m=[];for(const c of e.domStubs??[]){if(document.getElementById(c))continue;const p=document.createElement("div");p.id=c,p.style.display="none",p.dataset[at]="",n.appendChild(p),m.push(p)}const a=await qe(),i=a.three,d=Ye(i,a.EffectComposer,{isHostRenderer:ie,additionalRendererCtors:[a.CSS3DRenderer],declaredScene:()=>{const c=Se(v());return c.malformed!==null&&h.error(`Ingest game "${e.id}" ${c.malformed} — falling back to the MEASURED first-render adoption.`,"ingest"),c.world},onWorldAdoption:ee(e.id)});if(e.assets){const c=e.assets;i.DefaultLoadingManager.setURLModifier(p=>{for(const y of Object.keys(c))if(p.includes(y))return c[y];return p})}window.__vgaiMountCold=!0;const f=Date.now();await e.load();const w=o.captureTimeoutMs??1e4,g=ge(v());g.malformed!==null&&h.error(`Ingest game "${e.id}" ${g.malformed} — the host is measuring readiness instead.`,"ingest");const b=g.ready===null?"measured":"declared";E({rootId:e.id,mechanism:g.ready===null?"measured-wait":"contract-ready",source:b,state:"waiting"});let u;try{u=await d.waitForCapture({timeoutMs:w,onWait:c=>Ze(e.id,c)})}catch(c){d.uninstall(),i.DefaultLoadingManager.setURLModifier(y=>y);for(const y of m)y.remove();W(),n.remove(),D(e.id);const p=Je({gameId:e.id,timeoutMs:w,readinessSource:b,pageErrors:gt(f),cause:String(c)});throw E({rootId:e.id,mechanism:g.ready===null?"measured-wait":"contract-ready",source:b,state:"failed",failure:p.kind}),new Error(p.message)}const k=bt(n,u.renderer.domElement),S=ye(v());S.malformed!==null&&h.error(`Ingest game "${e.id}" ${S.malformed} — the host is using the captured renderer’s canvas instead.`,"ingest"),te(e.id,S.canvas??u.renderer.domElement,S.canvas?"declared":"measured"),it();const P=await yt(e.id,u.scene,g.ready);E({rootId:e.id,mechanism:P==="declared"?"contract-ready":"measured-wait",source:P,state:"ready"});const R={pause:()=>u.renderer.setAnimationLoop?.(null),resume:()=>{const c=d.getAnimationLoop(u.renderer);c&&u.renderer.setAnimationLoop?.(c)}};Ne(e.dataWriter??null);const q=mt(O()?.rootPath,e.sourceModules),L=pt(await ht(),q),J=L?0:await ut(u.scene),G=ft({servedStampedSource:L,graphStamps:J})==="oid-source"?Xe(t,u.scene,{worldId:e.id,loop:R,camera:u.camera,journal:j(e.id)}):Qe(t,u.scene,{loop:R,camera:u.camera,journal:j(e.id)}),A=ct(d,u.renderer,e.id,R,{realmGate:M(),onVerdict:()=>t.notifyIngestEdit()}),{systems:T,renderDebug:K,debugCollisions:X}=ze({contractSystems:v()?.systems,surface:"three",runtime:u,setRenderPassHooks:c=>d.setRenderPassHooks(c)});for(const c of X)h.error(`Ingest game "${e.id}" — ${c}; it will refuse`,"ingest");return{game:{kind:"three",scene:u.scene,camera:u.camera,drivesOwnLoop:!0,...Object.keys(T).length>0?{systems:T}:{},setPaused:c=>A.setPaused(c),resize:(c,p)=>{if(s.gameResizesItself){s.dispatchResize();return}const y=Fe(c,p);u.renderer.setSize(y.width,y.height,!1),d.resizeComposers(y.width,y.height),x(k)},dispose:()=>{d.setRenderPassHooks(null),ve(),K?.dispose();try{u.renderer.setAnimationLoop?.(null),u.renderer.dispose?.()}catch{}d.uninstall(),i.DefaultLoadingManager.setURLModifier(c=>c);for(const c of m)c.remove();B(),W(),oe(e.id),se(e.id),D(e.id),n.remove()},authoring:G},authoring:G,hostEl:n,capture:d,scene:u.scene,realmLoopVerdict:()=>A.lastVerdict()}}function St(t,e){const r={};for(const[o,n]of Object.entries(e)){const s=H(t,n),l=_[s];if(!l)throw new Error(`ingest discovery: "${t}"'s asset "${n}" did not match any served asset (looked for glob key "${s}" — available: ${Object.keys(_).join(", ")})`);r[o]=l}return r}function $(t,e){const r=H(t,e),o=rt[r];if(!o)throw new Error(`ingest discovery: "${t}"'s module "${e}" did not match any game module (looked for glob key "${r}").`);return o}function It({folderId:t,manifest:e,root:r}){const{adapter:o}=r;if(!r.entry)throw new Error(`ingest discovery: "${t}" has no \`entry\` — an ingest root mounts the game's own entry module.`);return{...{id:r.id,name:e.name,description:r.description??"",gameVersion:e.version,sourceModules:He(r.entry,r.world?.entry),...xe(o.dataWriter,s=>$(t,s)),...o.assets!==void 0?{assets:St(t,o.assets)}:{},...o.domStubs!==void 0?{domStubs:o.domStubs}:{},...o.captureTimeoutMs!==void 0?{captureTimeoutMs:o.captureTimeoutMs}:{}},load:Ue($(t,r.entry),o.contractShim===void 0?void 0:$(t,o.contractShim))}}let C=null;function kt(){return C||(C=tt("three").map(It).sort((t,e)=>t.id.localeCompare(e.id))),C}function Rt(t){return kt().find(e=>e.id===t)}function Et(t){return t==="devtools-observer"?"this game runs its OWN copy of three; the host reached its renderer through three's `__THREE_DEVTOOLS__` observation seam":"this game imports the host's three directly, in the editor's own realm"}function $t(t){const{store:e,session:r,sessionId:o}=t,n=r.mount;if(!n)return;const s=n.authoring,l=Ge(),m=st(s,l?.systems?.hierarchy),a=Be({primary:m,worldId:o,hostEl:n.hostEl,...l?.root?{declaredRoot:l.root}:{},store:e}),i=n.scene,d=new ResizeObserver(()=>{const u=t.gameContainer.getBoundingClientRect();u.width>0&&u.height>0&&n.game.resize?.(u.width,u.height)});d.observe(t.gameContainer),r.resizeObserver=d;const f=s.refresh(),w=s.measureWriteReach();h.log(`Captured live scene (${i.children.length} top-level children, ${n.capture.getDrawCount()} draws); ingested ${f.count} objects (${f.meshes} meshes, ${f.lights} lights`+(f.instancedMeshes>0?`, incl. ${f.instancedMeshes} InstancedMesh drawing ${f.instances} units`:"")+`); ${w.addressable} of ${w.total} have a source address — edits go to ${w.destination}`,"ingest"),Ae(o,n.realmLoopVerdict?.()??void 0),ue(a),le(n.game.systems??{}),e.enterPlayScene(i,void 0,s.objectMapSnapshot()),e.focusOnScene(()=>_e(n.capture.captured?.camera,i)),et(),e.notifyIngestEdit(),me();const g=Q({authoring:a});Te({reach:g,reachMechanism:Et(n.capture.capturedVia),loop:()=>De(n),writeReach:()=>s.measureWriteReach()});const b={gameId:o,...je(a),drawCount:()=>n.capture.getDrawCount(),get reflected(){return s.refresh()},get sceneChildren(){return i.children.length},reach:g,resize:(u,k)=>n.game.resize?.(u,k),...r.lifecycle.setPaused?{setPaused:r.lifecycle.setPaused}:{}};Oe(b,n),We("__vgaiIngest",b)}async function Ct(t,e,r){ke(),Re(r),await ce();const o=de();if(!o){h.error("Game container not mounted — cannot ingest","ingest");return}t.setPlayState("playing"),h.log(`Ingesting unmodified game: ${e.name}`,"ingest");const n=()=>t.playState==="playing"&&t.activeViewportTab==="play";try{const s={captureTimeoutMs:e.captureTimeoutMs},l=await vt(t,e,o,s),m=l.game.setPaused,a={store:t,mount:l,lifecycle:Ee(m?{setPaused:i=>m(i),step:()=>M()?.step(1),canStep:()=>l.realmLoopVerdict?.()?.loop==="gated"&&M()!==null}:{pauseGap:"the captured Three root exposes no mounted setPaused capability"})};$e({kind:"three",session:a,siblings:[],worldId:r}),Ce(n),a.inputGateUnsubscribe=t.subscribe(()=>{n()||B()}),Me(Pe()),$t({store:t,session:a,gameContainer:o,sessionId:r})}catch(s){throw h.error(`Ingest failed: ${s}`,"ingest"),Le(),s}}function N(t,e,r){return Ie(()=>Ct(t,e,r))}async function Er(t,e){const r=Rt(e);if(!r){h.error(`Unknown ingest game: ${e}`,"ingest");return}return N(t,r,e)}async function $r(t,e,r){const o=Ve(e,r);return N(t,o,e.id)}export{N as mountThreeIngestRoot,Er as mountThreeIngestRootById,$r as mountThreeIngestRootFromManifest};
@@ -1 +1 @@
1
- import{O as o}from"./index-GIL7oGEO.js";function f(t,i){if(t.selection)return t;const s={get:()=>[...i.selectedEntityIds],set:e=>i.selectMultiple(e)};return new Proxy(t,{get(e,n){if(n==="selection")return s;const c=Reflect.get(e,n,e);return typeof c=="function"?c.bind(e):c}})}function l(t,i){const s=i.hierarchy.idForObject3D;s&&t.traverse(e=>{const n=s(e);n&&o(e,n)})}export{l as s,f as w};
1
+ import{Q as o}from"./index-Ckxb31Yz.js";function f(t,i){if(t.selection)return t;const s={get:()=>[...i.selectedEntityIds],set:e=>i.selectMultiple(e)};return new Proxy(t,{get(e,n){if(n==="selection")return s;const c=Reflect.get(e,n,e);return typeof c=="function"?c.bind(e):c}})}function l(t,i){const s=i.hierarchy.idForObject3D;s&&t.traverse(e=>{const n=s(e);n&&o(e,n)})}export{l as s,f as w};
@@ -1 +1 @@
1
- import{disposeStoryObject3D as l}from"./story-three-preview-BHEDZzcl.js";function u(e){let o=!1,r=!1,t=0;const s=()=>{!o||t!==0||r||(r=!0,l(e))};return{build:()=>{if(r)throw new Error("This story source has already been released.");t++;let i=!1;return{root:e.root,hierarchyRoots:[...e.root.children],update:a=>e.advance(a),dispose:()=>{i||(i=!0,t--,s())}}},dispose:()=>{o=!0,s()}}}export{u as m};
1
+ import{disposeStoryObject3D as l}from"./story-three-preview-C9W__8Or.js";function u(e){let o=!1,r=!1,t=0;const s=()=>{!o||t!==0||r||(r=!0,l(e))};return{build:()=>{if(r)throw new Error("This story source has already been released.");t++;let i=!1;return{root:e.root,hierarchyRoots:[...e.root.children],update:a=>e.advance(a),dispose:()=>{i||(i=!0,t--,s())}}},dispose:()=>{o=!0,s()}}}export{u as m};
@@ -1 +1 @@
1
- import{NATIVE_INPUT_VALUE_TYPES as l}from"./native-entry-surface-BE8LJNdu.js";import{g as E,D as h}from"./debug-registry-Dgvitx8M.js";import{p as T,C as A}from"./playtest-BXIL1JEF.js";import"./index-GIL7oGEO.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"./three.module-D396a9Mn.js";import"./game-contract-seams-a5YXejOu.js";function p(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function g(t,n,o){const e=Object.keys(t).filter(r=>!n.includes(r));if(e.length>0)throw new Error(`${o} has unknown ${e.length===1?"key":"keys"}: ${e.join(", ")}`)}function y(t,n){if(!p(t))throw new Error(`${n} must be an object of named functions.`);const o={};for(const[e,r]of Object.entries(t)){if(!e)throw new Error(`${n} contains an empty name.`);if(typeof r!="function")throw new Error(`${n}.${e} must be a function.`);o[e]=r}return o}function j(t){if(!p(t))throw new Error("debug.input.actions must be an object mapping action names to value types.");const n={};for(const[o,e]of Object.entries(t)){if(!o)throw new Error("debug.input.actions contains an empty action name.");if(!l.includes(e))throw new Error(`debug.input.actions.${o} must be one of ${l.join(", ")}.`);n[o]=e}return n}function $(t){if(!p(t))throw new Error("debug.input must be an object.");if(g(t,["actions","set","clear","tap","scheduleAtTick"],"debug.input"),typeof t.actions=="function"){const s=t.set,m=t.clear;if(typeof s!="function")throw new Error("debug.input.set must be a function.");if(typeof m!="function")throw new Error("debug.input.clear must be a function.");return t}const n=t.set,o=t.clear,e=t.tap,r=t.scheduleAtTick;if(typeof n!="function")throw new Error("debug.input.set must be a function.");if(typeof o!="function")throw new Error("debug.input.clear must be a function.");if(e!==void 0&&typeof e!="function")throw new Error("debug.input.tap must be a function when provided.");if(r!==void 0&&typeof r!="function")throw new Error("debug.input.scheduleAtTick must be a function when provided.");return{actions:j(t.actions),set:n,clear:o,...typeof e=="function"?{tap:e}:{},...typeof r=="function"?{scheduleAtTick:r}:{}}}function K(t,n){if(!p(n)||n.debug===void 0)return null;if(!p(n.debug))throw new Error(`Root "${t}" exports \`debug\`, but it is not an object.`);const o=n.debug;g(o,["commands","state","input","events","settled"],`Root "${t}" debug export`);const e=(u,i)=>{if(u!==void 0)return typeof u=="function"?u:y(u,i)},s=((u,i)=>{if(u!==void 0){if(typeof u=="function")return u;if(!p(u))throw new Error(`${i} must be an object of named commands.`);return u}})(o.commands,"debug.commands"),m=e(o.state,"debug.state"),f=o.input===void 0?void 0:$(o.input),c=o.events===void 0?void 0:N(o.events),d=o.settled;if(d!==void 0&&typeof d!="function")throw new Error("debug.settled must be a function returning a boolean.");if(!s&&!m&&!f&&!c&&!d)throw new Error(`Root "${t}" exports an empty \`debug\` object.`);return{rootId:t,debug:{...s?{commands:s}:{},...m?{state:m}:{},...f?{input:f}:{},...c?{events:c}:{},...d?{settled:d}:{}}}}function N(t){if(!p(t)||typeof t.subscribe!="function")throw new Error("debug.events must be an object with a subscribe(listener) function.");return t}function I(t,n){if(t===void 0)return{};const o=typeof t=="function"?t():t;if(!p(o))throw new Error(`${n} must be an object of named commands.`);for(const[e,r]of Object.entries(o)){if(!e)throw new Error(`${n} contains an empty name.`);if(!(typeof r=="function"||p(r)&&typeof r.run=="function"))throw new Error(`${n}.${e} must be a function or { description?, run }.`)}return o}function P(t,n){return t===void 0?{}:typeof t=="function"?y(t(),n):t}function R(t,n){return t==="digital"?typeof n=="boolean":t==="scalar"?typeof n=="number"&&Number.isFinite(n):typeof n=="object"&&n!==null&&typeof n.x=="number"&&Number.isFinite(n.x)&&typeof n.y=="number"&&Number.isFinite(n.y)}function S(t,n,o,e){const r=[];let s=!1;const m=()=>typeof e.actions=="function"?e.actions():e.actions,f=(i,a)=>{const w=m(),b=w[i];if(!b)throw new h("INPUT_ACTION_NOT_FOUND",`Native input has no action named "${i}".`,{registered:Object.keys(w)});if(!R(b,a))throw new h("INPUT_ACTION_VALUE_TYPE",`Native input action "${i}" expects ${b}, not ${typeof a}.`,{action:i,expected:b});return b},c=(i,a,w)=>{f(i,a),e.set(i,a),s&&r.push({tick:w,action:i,value:a})},d=i=>{throw new h("NATIVE_INPUT_SOURCE_UNSUPPORTED",`${i} addresses an engine test source, but this game exposes an app-owned action store. Drive it by action name instead.`)},u={setVirtualAction(i,a){return c(i,a,n.getGameTick()),{delivered:!0}},tapVirtualAction(i){if(!e.tap)throw new h("NATIVE_INPUT_TAP_UNSUPPORTED",`Native input for root "${o.rootId}" does not export tap(); use setVirtualAction through the app-owned store.`);return f(i,!0),e.tap(i),{delivered:!0}},clearVirtualActions(){e.clear()},scheduleActionAtTick(i,a,w){const b=n.getGameTick();if(!Number.isInteger(i)||i<b)throw new h("TICK_ALREADY_PASSED",`Cannot schedule native input for tick ${i}; current tick is ${b}.`,{tick:i,currentTick:b});if(f(a,w),!e.scheduleAtTick)throw new h("NATIVE_INPUT_SCHEDULE_UNSUPPORTED",`Native input for root "${o.rootId}" does not export scheduleAtTick(); the adapter will not create a host scheduler for it.`);e.scheduleAtTick(i,a,w)},startInputRecording(){r.length=0,s=!0},stopInputRecording(){s=!1},isInputRecording(){return s},injectAxis(){d("injectAxis")},injectVector2(){d("injectVector2")},injectPointerDelta(){d("injectPointerDelta")},injectPointerPosition(){d("injectPointerPosition")}};n.setInputActionsSource(o.rootId,()=>Object.entries(m()).map(([i,a])=>({name:i,valueType:a}))),n.setInputTraceSource(o.rootId,()=>({version:1,seed:null,fixedDt:t.loop.fixedDt,ticks:[...r]})),n.setVirtualInputTarget(o.rootId,u)}function q(t,n){if(n.length===0)return;const o=E(t);if(!o)throw new Error("Cannot install native debug bindings: mounted Game has no debug registry.");for(const e of n){if(!t.world(e.rootId))throw new Error(`Native debug binding names unmounted root "${e.rootId}".`);const r=o.forRoot(e.rootId),s=P(e.debug.state,`Root "${e.rootId}" debug.state`);for(const[f,c]of Object.entries(s))r.registerStateProvider(f,c,{tier:"assisted"});const m=I(e.debug.commands,`Root "${e.rootId}" debug.commands`);for(const[f,c]of Object.entries(m)){const d=typeof c=="function"?c:c.run,u=typeof c=="function"?void 0:c.description;r.registerCommand(f,{locus:"client",...u===void 0?{}:{description:u}},d)}e.debug.input&&S(t,o,e,e.debug.input),e.debug.events?.subscribe((f,c)=>r.emit(f,c)),e.debug.settled&&o.registerWorldSettledProbe(e.debug.settled)}}function H(t,n,o){if(!p(n)||n.systems===void 0)return null;const e=n.systems;if(!p(e))throw new Error(`Root "${t}" exports \`systems\`, but it is not an object.`);g(e,A,`Root "${t}" systems export`);const r=T({systemAdapters:e},o);if(r.malformed.length>0)throw new Error(`Root "${t}" systems export is malformed: `+r.malformed.map(s=>`${s.slot} — ${s.reason}`).join("; "));if(Object.keys(r.bound).length===0&&r.empty.length===0)throw new Error(`Root "${t}" exports an empty \`systems\` object.`);return{rootId:t,slots:r.bound,absent:r.empty}}function W(t,n){if(n.length===0)return;const o=t.installDeclaredSystemAdapters;if(!o)throw new Error("Cannot install native systems bindings: this Game does not implement installDeclaredSystemAdapters.");for(const e of n)Object.keys(e.slots).length===0&&e.absent.length===0||o.call(t,e.rootId,e.slots,e.absent.map(r=>({rootId:e.rootId,slot:r.slot,reason:r.evidence})))}export{l as NATIVE_INPUT_VALUE_TYPES,q as installNativeDebugBindings,W as installNativeSystemsBindings,K as nativeDebugBindingFromEntryModule,H as nativeSystemsBindingFromEntryModule};
1
+ import{NATIVE_INPUT_VALUE_TYPES as l}from"./native-entry-surface-BE8LJNdu.js";import{g as E,D as h}from"./debug-registry-B3Cnne3x.js";import{p as T,C as A}from"./playtest-BnFenMBW.js";import"./index-Ckxb31Yz.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"./three.module-IFn-4i31.js";import"./game-contract-seams-TCpIMmHP.js";function p(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function g(t,n,o){const e=Object.keys(t).filter(r=>!n.includes(r));if(e.length>0)throw new Error(`${o} has unknown ${e.length===1?"key":"keys"}: ${e.join(", ")}`)}function y(t,n){if(!p(t))throw new Error(`${n} must be an object of named functions.`);const o={};for(const[e,r]of Object.entries(t)){if(!e)throw new Error(`${n} contains an empty name.`);if(typeof r!="function")throw new Error(`${n}.${e} must be a function.`);o[e]=r}return o}function j(t){if(!p(t))throw new Error("debug.input.actions must be an object mapping action names to value types.");const n={};for(const[o,e]of Object.entries(t)){if(!o)throw new Error("debug.input.actions contains an empty action name.");if(!l.includes(e))throw new Error(`debug.input.actions.${o} must be one of ${l.join(", ")}.`);n[o]=e}return n}function $(t){if(!p(t))throw new Error("debug.input must be an object.");if(g(t,["actions","set","clear","tap","scheduleAtTick"],"debug.input"),typeof t.actions=="function"){const s=t.set,m=t.clear;if(typeof s!="function")throw new Error("debug.input.set must be a function.");if(typeof m!="function")throw new Error("debug.input.clear must be a function.");return t}const n=t.set,o=t.clear,e=t.tap,r=t.scheduleAtTick;if(typeof n!="function")throw new Error("debug.input.set must be a function.");if(typeof o!="function")throw new Error("debug.input.clear must be a function.");if(e!==void 0&&typeof e!="function")throw new Error("debug.input.tap must be a function when provided.");if(r!==void 0&&typeof r!="function")throw new Error("debug.input.scheduleAtTick must be a function when provided.");return{actions:j(t.actions),set:n,clear:o,...typeof e=="function"?{tap:e}:{},...typeof r=="function"?{scheduleAtTick:r}:{}}}function K(t,n){if(!p(n)||n.debug===void 0)return null;if(!p(n.debug))throw new Error(`Root "${t}" exports \`debug\`, but it is not an object.`);const o=n.debug;g(o,["commands","state","input","events","settled"],`Root "${t}" debug export`);const e=(u,i)=>{if(u!==void 0)return typeof u=="function"?u:y(u,i)},s=((u,i)=>{if(u!==void 0){if(typeof u=="function")return u;if(!p(u))throw new Error(`${i} must be an object of named commands.`);return u}})(o.commands,"debug.commands"),m=e(o.state,"debug.state"),f=o.input===void 0?void 0:$(o.input),c=o.events===void 0?void 0:N(o.events),d=o.settled;if(d!==void 0&&typeof d!="function")throw new Error("debug.settled must be a function returning a boolean.");if(!s&&!m&&!f&&!c&&!d)throw new Error(`Root "${t}" exports an empty \`debug\` object.`);return{rootId:t,debug:{...s?{commands:s}:{},...m?{state:m}:{},...f?{input:f}:{},...c?{events:c}:{},...d?{settled:d}:{}}}}function N(t){if(!p(t)||typeof t.subscribe!="function")throw new Error("debug.events must be an object with a subscribe(listener) function.");return t}function I(t,n){if(t===void 0)return{};const o=typeof t=="function"?t():t;if(!p(o))throw new Error(`${n} must be an object of named commands.`);for(const[e,r]of Object.entries(o)){if(!e)throw new Error(`${n} contains an empty name.`);if(!(typeof r=="function"||p(r)&&typeof r.run=="function"))throw new Error(`${n}.${e} must be a function or { description?, run }.`)}return o}function P(t,n){return t===void 0?{}:typeof t=="function"?y(t(),n):t}function R(t,n){return t==="digital"?typeof n=="boolean":t==="scalar"?typeof n=="number"&&Number.isFinite(n):typeof n=="object"&&n!==null&&typeof n.x=="number"&&Number.isFinite(n.x)&&typeof n.y=="number"&&Number.isFinite(n.y)}function S(t,n,o,e){const r=[];let s=!1;const m=()=>typeof e.actions=="function"?e.actions():e.actions,f=(i,a)=>{const w=m(),b=w[i];if(!b)throw new h("INPUT_ACTION_NOT_FOUND",`Native input has no action named "${i}".`,{registered:Object.keys(w)});if(!R(b,a))throw new h("INPUT_ACTION_VALUE_TYPE",`Native input action "${i}" expects ${b}, not ${typeof a}.`,{action:i,expected:b});return b},c=(i,a,w)=>{f(i,a),e.set(i,a),s&&r.push({tick:w,action:i,value:a})},d=i=>{throw new h("NATIVE_INPUT_SOURCE_UNSUPPORTED",`${i} addresses an engine test source, but this game exposes an app-owned action store. Drive it by action name instead.`)},u={setVirtualAction(i,a){return c(i,a,n.getGameTick()),{delivered:!0}},tapVirtualAction(i){if(!e.tap)throw new h("NATIVE_INPUT_TAP_UNSUPPORTED",`Native input for root "${o.rootId}" does not export tap(); use setVirtualAction through the app-owned store.`);return f(i,!0),e.tap(i),{delivered:!0}},clearVirtualActions(){e.clear()},scheduleActionAtTick(i,a,w){const b=n.getGameTick();if(!Number.isInteger(i)||i<b)throw new h("TICK_ALREADY_PASSED",`Cannot schedule native input for tick ${i}; current tick is ${b}.`,{tick:i,currentTick:b});if(f(a,w),!e.scheduleAtTick)throw new h("NATIVE_INPUT_SCHEDULE_UNSUPPORTED",`Native input for root "${o.rootId}" does not export scheduleAtTick(); the adapter will not create a host scheduler for it.`);e.scheduleAtTick(i,a,w)},startInputRecording(){r.length=0,s=!0},stopInputRecording(){s=!1},isInputRecording(){return s},injectAxis(){d("injectAxis")},injectVector2(){d("injectVector2")},injectPointerDelta(){d("injectPointerDelta")},injectPointerPosition(){d("injectPointerPosition")}};n.setInputActionsSource(o.rootId,()=>Object.entries(m()).map(([i,a])=>({name:i,valueType:a}))),n.setInputTraceSource(o.rootId,()=>({version:1,seed:null,fixedDt:t.loop.fixedDt,ticks:[...r]})),n.setVirtualInputTarget(o.rootId,u)}function q(t,n){if(n.length===0)return;const o=E(t);if(!o)throw new Error("Cannot install native debug bindings: mounted Game has no debug registry.");for(const e of n){if(!t.world(e.rootId))throw new Error(`Native debug binding names unmounted root "${e.rootId}".`);const r=o.forRoot(e.rootId),s=P(e.debug.state,`Root "${e.rootId}" debug.state`);for(const[f,c]of Object.entries(s))r.registerStateProvider(f,c,{tier:"assisted"});const m=I(e.debug.commands,`Root "${e.rootId}" debug.commands`);for(const[f,c]of Object.entries(m)){const d=typeof c=="function"?c:c.run,u=typeof c=="function"?void 0:c.description;r.registerCommand(f,{locus:"client",...u===void 0?{}:{description:u}},d)}e.debug.input&&S(t,o,e,e.debug.input),e.debug.events?.subscribe((f,c)=>r.emit(f,c)),e.debug.settled&&o.registerWorldSettledProbe(e.debug.settled)}}function H(t,n,o){if(!p(n)||n.systems===void 0)return null;const e=n.systems;if(!p(e))throw new Error(`Root "${t}" exports \`systems\`, but it is not an object.`);g(e,A,`Root "${t}" systems export`);const r=T({systemAdapters:e},o);if(r.malformed.length>0)throw new Error(`Root "${t}" systems export is malformed: `+r.malformed.map(s=>`${s.slot} — ${s.reason}`).join("; "));if(Object.keys(r.bound).length===0&&r.empty.length===0)throw new Error(`Root "${t}" exports an empty \`systems\` object.`);return{rootId:t,slots:r.bound,absent:r.empty}}function W(t,n){if(n.length===0)return;const o=t.installDeclaredSystemAdapters;if(!o)throw new Error("Cannot install native systems bindings: this Game does not implement installDeclaredSystemAdapters.");for(const e of n)Object.keys(e.slots).length===0&&e.absent.length===0||o.call(t,e.rootId,e.slots,e.absent.map(r=>({rootId:e.rootId,slot:r.slot,reason:r.evidence})))}export{l as NATIVE_INPUT_VALUE_TYPES,q as installNativeDebugBindings,W as installNativeSystemsBindings,K as nativeDebugBindingFromEntryModule,H as nativeSystemsBindingFromEntryModule};