@volter/game-editor 0.5.69 → 0.5.71

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 (337) hide show
  1. package/BUNDLED_NOTICES +28 -44
  2. package/LICENSE +9 -10
  3. package/catalog/entries/blender.json +2 -2
  4. package/catalog/entries/music.json +2 -2
  5. package/catalog/project-source/LICENSE +5 -5
  6. package/dist/.vite/manifest.json +2176 -2176
  7. package/dist/assets/{AssetBudgetPanel-BMR3AQhc.js → AssetBudgetPanel-CbSEGrcI.js} +3 -3
  8. package/dist/assets/{AudioViewer-DESxi7pU.js → AudioViewer-DbO2vY3o.js} +1 -1
  9. package/dist/assets/{CanvasBoardDocument-Q_nrYFlB.js → CanvasBoardDocument-BWmMyiAX.js} +1 -1
  10. package/dist/assets/{CanvasSceneViewport-WZMoKy_F.js → CanvasSceneViewport-CrmQdonP.js} +1 -1
  11. package/dist/assets/{ColorInput-C2EK-OnD.js → ColorInput-BOPGcPsk.js} +1 -1
  12. package/dist/assets/{EntityModelDocument-B_4ENTCq.js → EntityModelDocument-DUZaNI2v.js} +1 -1
  13. package/dist/assets/{EnvironmentAssetDocument-BZBp6OFJ.js → EnvironmentAssetDocument-Bqsm2NLI.js} +1 -1
  14. package/dist/assets/{GameplaySessionTimeline-1ivaucpv.js → GameplaySessionTimeline-DmGEiHHD.js} +1 -1
  15. package/dist/assets/{ImageViewer-D16OExYu.js → ImageViewer-BXQ1dXgz.js} +1 -1
  16. package/dist/assets/InspectorObjectPreview-JE22P2KW.js +1 -0
  17. package/dist/assets/{JsonAssetDocument-CvjTlcdr.js → JsonAssetDocument-BPQR7OXc.js} +1 -1
  18. package/dist/assets/{LiveModuleDocument-ne1o9giX.js → LiveModuleDocument-DnlLSCZw.js} +1 -1
  19. package/dist/assets/{LutAssetDocument-Cp0v-O7q.js → LutAssetDocument-CMDB77UF.js} +1 -1
  20. package/dist/assets/{ModelAssetDocument-Ceu7OIN9.js → ModelAssetDocument-C7Su96Mo.js} +1 -1
  21. package/dist/assets/{NonThreeAuthoringBootstrap-DiElZf-e.js → NonThreeAuthoringBootstrap-BqY5ceef.js} +1 -1
  22. package/dist/assets/{Object3DDocumentToolbar-BLNamqii.js → Object3DDocumentToolbar-CDYwPpW6.js} +1 -1
  23. package/dist/assets/Object3DDocumentViewport-mDettU8s.js +2 -0
  24. package/dist/assets/{Object3DPreview-ZVokr044.js → Object3DPreview-B_3FCd_-.js} +1 -1
  25. package/dist/assets/{OnlineAssetDetail-Dnckd7zB.js → OnlineAssetDetail-BMAMYfaN.js} +1 -1
  26. package/dist/assets/{PlayBar-DsMitSgy.js → PlayBar-DvpDIJXg.js} +1 -1
  27. package/dist/assets/{QuarksAssetDocument-B5J8uHFM.js → QuarksAssetDocument-BbG3zMIR.js} +1 -1
  28. package/dist/assets/{ReactCanvasControls-CmfvxJYY.js → ReactCanvasControls-CnIJItuA.js} +1 -1
  29. package/dist/assets/{RootSelectionOverlay-BWsNiSuM.js → RootSelectionOverlay-47LRczuj.js} +1 -1
  30. package/dist/assets/{ShaderAssetDocument-CT7XzsZq.js → ShaderAssetDocument-KDN9ZgDF.js} +1 -1
  31. package/dist/assets/{ShadowEditor-YO5KEfnz.js → ShadowEditor-CBNfgpsF.js} +1 -1
  32. package/dist/assets/{SourceAssetViewer-FSLup2km.js → SourceAssetViewer-LGC-eTLS.js} +1 -1
  33. package/dist/assets/{StageHost-DYfGYwvq.js → StageHost-BOin7YcY.js} +2 -2
  34. package/dist/assets/{StoryPreviewMount-BhvT5QlB.js → StoryPreviewMount-CN-jnvnn.js} +1 -1
  35. package/dist/assets/{ThreeBoardDocument-B-z2nwnH.js → ThreeBoardDocument-DgC6xWZu.js} +2 -2
  36. package/dist/assets/{ThreeIsolationSceneContent-B5pU4Y6k.js → ThreeIsolationSceneContent-ieFf0WbO.js} +1 -1
  37. package/dist/assets/{ToolObject3DPreview-VtraiQ4Q.js → ToolObject3DPreview-B15_D8MJ.js} +1 -1
  38. package/dist/assets/{Toolbar-M62Gob9T.js → Toolbar-CAnrijz7.js} +1 -1
  39. package/dist/assets/{TransientHint-Cc40mHWE.js → TransientHint-BiIz-7Hh.js} +1 -1
  40. package/dist/assets/{VideoViewer-BxcUwXQm.js → VideoViewer-CrP78U5w.js} +1 -1
  41. package/dist/assets/{ViewportShadingMenu-BoMPnTVh.js → ViewportShadingMenu-BfoDB2WO.js} +1 -1
  42. package/dist/assets/active-ingest-CHE8woWv.js +3 -0
  43. package/dist/assets/{animation-clock-BXEwUJtz.js → animation-clock-DWhLTlyc.js} +1 -1
  44. package/dist/assets/{animation-mixers.service-C-Ko4KzM.js → animation-mixers.service-xdiawk5y.js} +1 -1
  45. package/dist/assets/{animation-timeline.utility-Bl15-rYb.js → animation-timeline.utility-Czb7Ax-Z.js} +1 -1
  46. package/dist/assets/{asset-budget-asset.menu-BUa3g0Wy.js → asset-budget-asset.menu-CpHLTATf.js} +1 -1
  47. package/dist/assets/{asset-budget.action-Dl5eVPIo.js → asset-budget.action-C_ZI2rdN.js} +1 -1
  48. package/dist/assets/{asset-budget.document-DJylQ-0h.js → asset-budget.document-hmCS7sH2.js} +1 -1
  49. package/dist/assets/{asset-budget.menu-BJtvNMLj.js → asset-budget.menu-BZyzyVdk.js} +1 -1
  50. package/dist/assets/{asset-editor-persistence-BIbf5u0Q.js → asset-editor-persistence-BIFP2LgP.js} +1 -1
  51. package/dist/assets/{asset-loaders-DoNflsHL.js → asset-loaders-DqbPEavT.js} +1 -1
  52. package/dist/assets/{asset-preview-DxlSdRZn.js → asset-preview-BzDHm81_.js} +1 -1
  53. package/dist/assets/{audio-unlock.service-CTaiyXF9.js → audio-unlock.service-C2a8hsP0.js} +1 -1
  54. package/dist/assets/{audio.utility-CEmNc68t.js → audio.utility-VklURuQw.js} +1 -1
  55. package/dist/assets/autoplay.service-ap_sEfca.js +1 -0
  56. package/dist/assets/{babylon-authoring-adapter-BZvV2bz_.js → babylon-authoring-adapter-DBBX2Hem.js} +1 -1
  57. package/dist/assets/{binding-resolver-DGbk9_XR.js → binding-resolver-aDFCbAcG.js} +2 -2
  58. package/dist/assets/{blender-emscripten-engine-B7lfg-RX.js → blender-emscripten-engine-Cd6az4pU.js} +1 -1
  59. package/dist/assets/{blender-node-editor.document-wXJobGNH.js → blender-node-editor.document-BdX0SCxH.js} +1 -1
  60. package/dist/assets/{blender-properties-tab-7GFf80ev.js → blender-properties-tab-BVdvAiLS.js} +1 -1
  61. package/dist/assets/{blender-runtime-host-CILxrx5T.js → blender-runtime-host-B1bjBV91.js} +2 -2
  62. package/dist/assets/{blender-runtime-skin-Cd5lQYsC.js → blender-runtime-skin-BEbT46i_.js} +1 -1
  63. package/dist/assets/{blender-runtime.document-C0r_R49S.js → blender-runtime.document-BAQTV4az.js} +1 -1
  64. package/dist/assets/{blender-timeline.document-BaISZMBc.js → blender-timeline.document-BTwdMhSn.js} +1 -1
  65. package/dist/assets/{blender-uv-editor.document-CT_fsyyA.js → blender-uv-editor.document-CqxvqlSw.js} +1 -1
  66. package/dist/assets/{blender-version.status-DzEx7u7k.js → blender-version.status-D-kPKENT.js} +1 -1
  67. package/dist/assets/{blender-wali-engine-DOiQCBXH.js → blender-wali-engine-CZcS3eAd.js} +1 -1
  68. package/dist/assets/{blender.command-DdiKd8mZ.js → blender.command-BABpNHlJ.js} +1 -1
  69. package/dist/assets/{board-guides-CjHQ9Ynm.js → board-guides-BVkDJqat.js} +1 -1
  70. package/dist/assets/bridge.command-DNktKXNP.js +3 -0
  71. package/dist/assets/{browserAll-Dg46xT22.js → browserAll-DjSaXYpJ.js} +1 -1
  72. package/dist/assets/{build-player.document-BHwVV3K0.js → build-player.document-viLZOb6A.js} +1 -1
  73. package/dist/assets/{build-profiles.document-HkpS-Kxa.js → build-profiles.document-C9gM1NV6.js} +1 -1
  74. package/dist/assets/{build-progress.status-u1J0Rm1D.js → build-progress.status-DKw0YdnU.js} +1 -1
  75. package/dist/assets/{build-session-BLboUUbw.js → build-session-CpAT9iQU.js} +1 -1
  76. package/dist/assets/{build.action-C00DL83N.js → build.action-BrSZc3kA.js} +1 -1
  77. package/dist/assets/{build.command-Cjk_NY75.js → build.command-CVB-50ii.js} +1 -1
  78. package/dist/assets/{build.header-BWNmNWFT.js → build.header-BhOtTPyg.js} +1 -1
  79. package/dist/assets/{build.menu-BBYtqCIq.js → build.menu-BHIVHysW.js} +1 -1
  80. package/dist/assets/{build.service-DOU15tKN.js → build.service-C5awmXgd.js} +1 -1
  81. package/dist/assets/{camera-7DGyYW7Y.js → camera-B_ssMgXA.js} +1 -1
  82. package/dist/assets/{camera-runtime.inspector-n-jiOR-3.js → camera-runtime.inspector-BAc2xnsF.js} +1 -1
  83. package/dist/assets/{canvas-design-mount-CSRHU-ag.js → canvas-design-mount-DW2RoIFP.js} +3 -3
  84. package/dist/assets/{canvas-entry-runtime-BST8yRuK.js → canvas-entry-runtime-BQdfSw1B.js} +2 -2
  85. package/dist/assets/{canvas-preview-frames-Cja32aW2.js → canvas-preview-frames-Bc44u87o.js} +1 -1
  86. package/dist/assets/{canvas-story-capture.service-D5R5HJ8n.js → canvas-story-capture.service-DTLE6FK3.js} +2 -2
  87. package/dist/assets/{capability-coverage-ByWftxk4.js → capability-coverage-6I_iG0kk.js} +1 -1
  88. package/dist/assets/{collaboration-presence-D6MC9xJN.js → collaboration-presence-wD0oKl7P.js} +1 -1
  89. package/dist/assets/{collider-B78EcUc9.js → collider-BQKrXUbD.js} +1 -1
  90. package/dist/assets/{component-board.service-BaQI5Oas.js → component-board.service-BzZ2JQC8.js} +2 -2
  91. package/dist/assets/{component-board.service-Dvjz_g-x.js → component-board.service-Cnxftkv8.js} +2 -2
  92. package/dist/assets/{component-board.service-CkjrsD8x.js → component-board.service-DTH3BKq_.js} +2 -2
  93. package/dist/assets/{component-contracts.service-C3-AXQp7.js → component-contracts.service-BJ73JRuk.js} +1 -1
  94. package/dist/assets/{component-instance-root-DLI40MiB.js → component-instance-root-9MmHwMal.js} +1 -1
  95. package/dist/assets/{component-verbs.command-Brr_WcaR.js → component-verbs.command-_nUoLZ1s.js} +1 -1
  96. package/dist/assets/{component-verbs.service-DC2sC3j3.js → component-verbs.service-D9qvuexk.js} +1 -1
  97. package/dist/assets/{config-BI_7osdR.js → config-DabjxySF.js} +2 -2
  98. package/dist/assets/{configurations-XP9YLkrt.js → configurations-CACHqi7T.js} +1 -1
  99. package/dist/assets/{connection.status-BhRwcFx0.js → connection.status-CfFK9wti.js} +1 -1
  100. package/dist/assets/{constraints.inspector-Dm1cycK3.js → constraints.inspector-DvTTgVxM.js} +1 -1
  101. package/dist/assets/{content-bounds-DROIchTa.js → content-bounds-938XXJRy.js} +1 -1
  102. package/dist/assets/{contract-system-adapters-Cn7OW_ay.js → contract-system-adapters-D9Gcb7R7.js} +1 -1
  103. package/dist/assets/{coverage.service-l42ty7lr.js → coverage.service-CyWmmos8.js} +1 -1
  104. package/dist/assets/{create-runtime-B_uTwsmi.js → create-runtime-D3CS8u84.js} +1 -1
  105. package/dist/assets/{curve-THOUsg-j.js → curve-CzIvpvWX.js} +1 -1
  106. package/dist/assets/{data-asset-DAANayR6.js → data-asset-Dt3MP-sl.js} +1 -1
  107. package/dist/assets/{data-ref-CN34UeVw.js → data-ref-COkdIktX.js} +1 -1
  108. package/dist/assets/{debug-bridge-BD1XVAIB.js → debug-bridge-LaiaWRls.js} +1 -1
  109. package/dist/assets/{debug-registry-ggQWxtu-.js → debug-registry-BUPLu5EA.js} +1 -1
  110. package/dist/assets/{deferred-ingest-play-B2JUlwlT.js → deferred-ingest-play-DVLTxYCk.js} +2 -2
  111. package/dist/assets/{design-time-canvas-mount-as9cN9I6.js → design-time-canvas-mount-CkOQQvFW.js} +2 -2
  112. package/dist/assets/{design-time-layers-BRseeSmV.js → design-time-layers-Cv3txX_V.js} +1 -1
  113. package/dist/assets/{design-time-mount.service-BTVu3yKo.js → design-time-mount.service-C8VeEbCC.js} +2 -2
  114. package/dist/assets/{design-time-mount.service-DKvc7lVK.js → design-time-mount.service-DupCKL6-.js} +2 -2
  115. package/dist/assets/{design-time-react-mount-C7rB56QD.js → design-time-react-mount-CT8eihNN.js} +1 -1
  116. package/dist/assets/{document-preview-three-CxmRhCcV.js → document-preview-three-C8Pzyiai.js} +1 -1
  117. package/dist/assets/{dom-authoring-adapter-L8OzXfmE.js → dom-authoring-adapter-71D70rVP.js} +1 -1
  118. package/dist/assets/{draco3d-BjNuXv66.js → draco3d-XOYD2Hke.js} +1 -1
  119. package/dist/assets/{edit-mode-audio.service-BwI5u845.js → edit-mode-audio.service-OcRQ9Ozq.js} +1 -1
  120. package/dist/assets/{edit-mode-authoring-D5f7aHHl.js → edit-mode-authoring-Du1CaTkH.js} +1 -1
  121. package/dist/assets/{edit-mode-networking.service-DqP_4lbI.js → edit-mode-networking.service-BWz-nxiL.js} +1 -1
  122. package/dist/assets/{editor-api-BM7H_F4G.js → editor-api-BqS9NdSX.js} +1 -1
  123. package/dist/assets/{editor-layers-D-CTUqco.js → editor-layers-qlgroPbE.js} +1 -1
  124. package/dist/assets/{editor-shell-store-DHVWS8cE.js → editor-shell-store-Di0waLQj.js} +1 -1
  125. package/dist/assets/{entity-object-MKYemTFM.js → entity-object-BeRdaaqQ.js} +1 -1
  126. package/dist/assets/{extend-BrgqZiMY.js → extend-CFEzxGGP.js} +1 -1
  127. package/dist/assets/{fork-menu-DE2MK3Nq.js → fork-menu-Bujed-pM.js} +1 -1
  128. package/dist/assets/{frame-debugger-store-BXoLKTdZ.js → frame-debugger-store-CCm_jyhx.js} +1 -1
  129. package/dist/assets/{game-contract-seams-tyKDsfaP.js → game-contract-seams-DOwrbA13.js} +1 -1
  130. package/dist/assets/{game-css-scope-transform-DcjrwtVc.js → game-css-scope-transform-DuP554oX.js} +1 -1
  131. package/dist/assets/{game-document.service-CTb2itHQ.js → game-document.service-CW928hrj.js} +1 -1
  132. package/dist/assets/game-eval.command-D8ohGtA6.js +2 -0
  133. package/dist/assets/{game-module-access-BTInp2NG.js → game-module-access-gOlo85at.js} +1 -1
  134. package/dist/assets/{game-network-DW5ARz4R.js → game-network-CU3Yp0oN.js} +3 -3
  135. package/dist/assets/{gameplay-export-cHk3v9y-.js → gameplay-export-Clmlm922.js} +1 -1
  136. package/dist/assets/{gameplay-replay-HRenPTtU.js → gameplay-replay-Dxz93B2M.js} +1 -1
  137. package/dist/assets/{gameplay.command-DcY2lKKX.js → gameplay.command-b2D2rbZV.js} +1 -1
  138. package/dist/assets/{generation-jobs-CJBehuUp.js → generation-jobs-_kzxAnbI.js} +1 -1
  139. package/dist/assets/{generation.service-BMOc-C9i.js → generation.service-B533Kbco.js} +1 -1
  140. package/dist/assets/{generations-ssgVOe_6.js → generations-D5GcYf91.js} +1 -1
  141. package/dist/assets/{generations.status-B_SmPReI.js → generations.status-CDZ_eHJZ.js} +1 -1
  142. package/dist/assets/{hierarchy-marks-BuCO8Ke-.js → hierarchy-marks-BrmGekuT.js} +1 -1
  143. package/dist/assets/{hosted-asset-materialization-CiXZI85V.js → hosted-asset-materialization-DBLM2dtz.js} +1 -1
  144. package/dist/assets/{index-DgPDGGSV.js → index-BPUmREu0.js} +2 -2
  145. package/dist/assets/{index-Bm4_DmRO.js → index-BU93FMYM.js} +1 -1
  146. package/dist/assets/{index-B0S4fQQV.js → index-C8jugKW5.js} +1 -1
  147. package/dist/assets/{index-BvBlIRwM.js → index-CP1Fd1fP.js} +1 -1
  148. package/dist/assets/{index-CfpGZrbC.js → index-CiqSswEV.js} +1 -1
  149. package/dist/assets/{index-BweKDdi_.js → index-Q98tByQ2.js} +1 -1
  150. package/dist/assets/{index-C5ZAyrKq.js → index-iW3HFEJB.js} +232 -232
  151. package/dist/assets/{index-Czvj6whv.js → index-sTPbmuS8.js} +1 -1
  152. package/dist/assets/{index-B9bd4k-t.js → index-vjNaMgz6.js} +1 -1
  153. package/dist/assets/{inference-diagnostics-DLt9ql9I.js → inference-diagnostics-PcfFN6SD.js} +1 -1
  154. package/dist/assets/{ingest-boot-viewport-BXVXjYpG.js → ingest-boot-viewport-CrnkiTcJ.js} +1 -1
  155. package/dist/assets/{ingest-siblings-DWJ7OGB_.js → ingest-siblings-CQ95u6JM.js} +1 -1
  156. package/dist/assets/{ingest-source-persistence-6ShMoSCa.js → ingest-source-persistence-2MRBPgo0.js} +1 -1
  157. package/dist/assets/{ingest.service-BBbX8ibg.js → ingest.service-DQqEvbsT.js} +1 -1
  158. package/dist/assets/{inspect-Cz3Zyx_1.js → inspect-CUNyIUii.js} +1 -1
  159. package/dist/assets/instances.command-wzs2BWwt.js +1 -0
  160. package/dist/assets/{json-history-resource-Uqrihfc8.js → json-history-resource-82d2z68R.js} +1 -1
  161. package/dist/assets/{layered-pick-CAVQMPI7.js → layered-pick-Db8YSlDp.js} +1 -1
  162. package/dist/assets/{light-CqzsCWeJ.js → light-PK9RLNmD.js} +1 -1
  163. package/dist/assets/{live-project-verbs-CdFmLYOo.js → live-project-verbs-CayyA6Tc.js} +1 -1
  164. package/dist/assets/{machine.document-DRIFOVaa.js → machine.document-CUO0RxDP.js} +1 -1
  165. package/dist/assets/{machines.finder-DPCT6few.js → machines.finder-B-DdPjby.js} +1 -1
  166. package/dist/assets/{material-BVApn1V_.js → material-C_mvE2lW.js} +1 -1
  167. package/dist/assets/{material-factory-B_75xxFD.js → material-factory-kKKe4-DN.js} +1 -1
  168. package/dist/assets/{mesh-DdA3mExo.js → mesh-fUiQLtsU.js} +1 -1
  169. package/dist/assets/{model-asset-sections.service-CJnSIckZ.js → model-asset-sections.service-Dfkzhu6Q.js} +1 -1
  170. package/dist/assets/{model-inspection-DvspbmJl.js → model-inspection-DgqjTy5z.js} +1 -1
  171. package/dist/assets/{model-thumbnail-BmQs-h6t.js → model-thumbnail-DORLbXyw.js} +1 -1
  172. package/dist/assets/{models.finder-Qv_Hsccy.js → models.finder-DzW1Sg26.js} +1 -1
  173. package/dist/assets/{module-mode-MJ4Gbsry.js → module-mode-BWoDD0oV.js} +2 -2
  174. package/dist/assets/{mount-canvas-ingest-root-BxtM8OaB.js → mount-canvas-ingest-root-nBqJPkbz.js} +2 -2
  175. package/dist/assets/{mount-dom-ingest-root-pGatqO46.js → mount-dom-ingest-root-BOEt11vp.js} +2 -2
  176. package/dist/assets/{mount-ingest-root-C7jb-mCl.js → mount-ingest-root-9KaA9ETn.js} +2 -2
  177. package/dist/assets/{mount-manifest-BfoHBuzn.js → mount-manifest-BOiv1Hix.js} +1 -1
  178. package/dist/assets/{mount-three-ingest-root-Boa5mcaF.js → mount-three-ingest-root-C_0Slh91.js} +1 -1
  179. package/dist/assets/{mounted-authoring-DxMISwvR.js → mounted-authoring-30zCcxeV.js} +1 -1
  180. package/dist/assets/{mounted-story-viewport-source-DfnLxI1f.js → mounted-story-viewport-source-N0xrUdtm.js} +1 -1
  181. package/dist/assets/{native-debug-module-BlrALjM3.js → native-debug-module-Cofo9dCU.js} +1 -1
  182. package/dist/assets/{navigation-CqG5o5AR.js → navigation-B9kSIhNu.js} +1 -1
  183. package/dist/assets/{navmesh.menu-D4TdVDhe.js → navmesh.menu-DPNQ2RCH.js} +1 -1
  184. package/dist/assets/{navmesh.service-DWKT5ruQ.js → navmesh.service-pffKX_Ht.js} +1 -1
  185. package/dist/assets/network-observer.service-D61Whg6t.js +1 -0
  186. package/dist/assets/{network.utility-DjeOEvAY.js → network.utility-Bw74dLIu.js} +1 -1
  187. package/dist/assets/{object3d-document-session-registry-CMRJdFp6.js → object3d-document-session-registry-DMhhDWnQ.js} +2 -2
  188. package/dist/assets/{oid-transform-DaA6yW6o.js → oid-transform-AHICFvQG.js} +1 -1
  189. package/dist/assets/{particles-DsQRcDBY.js → particles-DIMSkSIe.js} +1 -1
  190. package/dist/assets/{pixi-authoring-adapter-BoBt8bB5.js → pixi-authoring-adapter-DR6NNYrL.js} +1 -1
  191. package/dist/assets/{pixi-live-write-target-CYZgvC6U.js → pixi-live-write-target-CXDKS1kQ.js} +1 -1
  192. package/dist/assets/{play.command-D9JGJP-e.js → play.command-L6qPHLHh.js} +2 -2
  193. package/dist/assets/{presentation-COhHQdmR.js → presentation-DPddUHCg.js} +1 -1
  194. package/dist/assets/{product-CaRGoiIH.js → product-CEH3MVYt.js} +1 -1
  195. package/dist/assets/{profiler.action-Cz7HYWjh.js → profiler.action-qMarbw9x.js} +1 -1
  196. package/dist/assets/{profiler.menu-D5aR_FBy.js → profiler.menu-C52_wfu8.js} +1 -1
  197. package/dist/assets/{profiler.utility-KwxlIPKb.js → profiler.utility-DzfXG0cD.js} +1 -1
  198. package/dist/assets/{project-authoring-session-DKXHVwxO.js → project-authoring-session-sbmVUm3i.js} +2 -2
  199. package/dist/assets/{properties-bone-constraints.inspector-Bo-sU8eR.js → properties-bone-constraints.inspector-DEOxhp1W.js} +1 -1
  200. package/dist/assets/{properties-bone.inspector-BQiWplQv.js → properties-bone.inspector-CY8EEYZl.js} +1 -1
  201. package/dist/assets/{properties-collection.inspector-C5BnR-GE.js → properties-collection.inspector-rGoZwmsY.js} +1 -1
  202. package/dist/assets/{properties-constraints.inspector-CyheU12R.js → properties-constraints.inspector-DJITSHiL.js} +1 -1
  203. package/dist/assets/{properties-data.inspector-CkycARja.js → properties-data.inspector-CNJ6cUzA.js} +1 -1
  204. package/dist/assets/{properties-material.inspector-Bl_PUmY-.js → properties-material.inspector-BkCUSFdM.js} +1 -1
  205. package/dist/assets/{properties-modifiers.inspector-j7SnOxQq.js → properties-modifiers.inspector-C9ij0UfE.js} +1 -1
  206. package/dist/assets/{properties-object.inspector-DcR3MGLK.js → properties-object.inspector-IvVsyikt.js} +1 -1
  207. package/dist/assets/{properties-output.inspector-BLjw6K4b.js → properties-output.inspector-Df-fx8vq.js} +1 -1
  208. package/dist/assets/{properties-particles.inspector-BUIm2-Jf.js → properties-particles.inspector-J3UOyWlz.js} +1 -1
  209. package/dist/assets/{properties-physics.inspector-DNvRcxb6.js → properties-physics.inspector-BmcTY5Q8.js} +1 -1
  210. package/dist/assets/{properties-render.inspector-8FMZ-qoZ.js → properties-render.inspector-DUB5qwIR.js} +1 -1
  211. package/dist/assets/{properties-scene.inspector-Dx7_z75k.js → properties-scene.inspector-DxBRs2ae.js} +1 -1
  212. package/dist/assets/{properties-texture.inspector-WT15951-.js → properties-texture.inspector-BqzPv1aS.js} +1 -1
  213. package/dist/assets/{properties-view-layer.inspector-P7VNTdqr.js → properties-view-layer.inspector-D1a1Dc1r.js} +1 -1
  214. package/dist/assets/{properties-world.inspector-B3t1q8TF.js → properties-world.inspector-CCwHv8ha.js} +1 -1
  215. package/dist/assets/{r3f-design-session-lsbFnoWH.js → r3f-design-session-By5arVMz.js} +2 -2
  216. package/dist/assets/{r3f-physics-binding-Cx8yhuwt.js → r3f-physics-binding-mLmXPi7n.js} +1 -1
  217. package/dist/assets/{r3f-source-authoring-adapter-jH3G0TeH.js → r3f-source-authoring-adapter-W1zVFNuZ.js} +1 -1
  218. package/dist/assets/{react-canvas-navigation-B_gOe3CI.js → react-canvas-navigation-IPhloKzi.js} +1 -1
  219. package/dist/assets/{react-inspector.service-CZf1vfdX.js → react-inspector.service-C7T_Pqud.js} +1 -1
  220. package/dist/assets/{react-story-board-CCm2Opwn.js → react-story-board-CPTQdOIn.js} +1 -1
  221. package/dist/assets/{react-three-rapier.esm-CHXGG51p.js → react-three-rapier.esm-D43m0aj7.js} +1 -1
  222. package/dist/assets/{react-world-authoring-adapter-CnzxMtYz.js → react-world-authoring-adapter-DgsCzOTj.js} +1 -1
  223. package/dist/assets/{realm-services-Do9J6nsb.js → realm-services-C8OlRuJ5.js} +1 -1
  224. package/dist/assets/{reflection-probe-capture.inspector-BAjjIybz.js → reflection-probe-capture.inspector-DT1jvM_q.js} +1 -1
  225. package/dist/assets/{registry-Xnduk02T.js → registry-XvQ4sPew.js} +1 -1
  226. package/dist/assets/{relative-import-specifier-CPFTrxi4.js → relative-import-specifier-CPCtuEhc.js} +1 -1
  227. package/dist/assets/{render-env-YJlI8K0i.js → render-env-BYsqF2DQ.js} +1 -1
  228. package/dist/assets/{render-features-DMSV2qKJ.js → render-features-CL2D1X_X.js} +1 -1
  229. package/dist/assets/{render-settings-CRyDhHyz.js → render-settings-CsCXKLaq.js} +1 -1
  230. package/dist/assets/{resolve-three-D27rMc37.js → resolve-three-DRDYxBE9.js} +4 -4
  231. package/dist/assets/{root-seam-contract-gjWUd5uu.js → root-seam-contract-BNGi8m22.js} +1 -1
  232. package/dist/assets/{run-selection-B0jOdyYt.js → run-selection-8wjzFzVg.js} +1 -1
  233. package/dist/assets/{scene-capture-Di9cM1p4.js → scene-capture-aq3yUgox.js} +1 -1
  234. package/dist/assets/{scene-document.service-XxGs4HHE.js → scene-document.service-qnY16vPq.js} +2 -2
  235. package/dist/assets/{scene-framing-DkZKDwH3.js → scene-framing-BWGUKaVh.js} +1 -1
  236. package/dist/assets/{seeded-random-BJthDRMu.js → seeded-random-BIdiJ8w9.js} +1 -1
  237. package/dist/assets/{session-x8E_NJk2.js → session-CeyQA0Dv.js} +1 -1
  238. package/dist/assets/{setup-renderer-F9mG7t6r.js → setup-renderer-BI8Dltzx.js} +1 -1
  239. package/dist/assets/{source-object3d-authoring-adapter-CvmFpSUj.js → source-object3d-authoring-adapter-Des84Gk3.js} +1 -1
  240. package/dist/assets/{source-persistence-backend-au3WtEn6.js → source-persistence-backend-I5wxqQgh.js} +1 -1
  241. package/dist/assets/{stage-keyboard-BQkndG_D.js → stage-keyboard-Ckod5Y4M.js} +1 -1
  242. package/dist/assets/{stage-overlay-set-g6eWhuRv.js → stage-overlay-set-CLTmSTo9.js} +1 -1
  243. package/dist/assets/{stage-presence-markers-0CDfO5f4.js → stage-presence-markers-DOoDCC7Z.js} +1 -1
  244. package/dist/assets/{stage-transform-tools-BzPl7OIo.js → stage-transform-tools-DjYQ95b7.js} +1 -1
  245. package/dist/assets/{standard-viewport-dressing-BW-dM_1h.js → standard-viewport-dressing-DE9WE1Lv.js} +1 -1
  246. package/dist/assets/{state-watch.action-Z1nQ5awu.js → state-watch.action-D0rXmFVx.js} +1 -1
  247. package/dist/assets/{state-watch.menu-CQHGUF3W.js → state-watch.menu-DJyVHqNM.js} +1 -1
  248. package/dist/assets/{state-watch.utility-DCIg2i79.js → state-watch.utility-CHL55Pbn.js} +1 -1
  249. package/dist/assets/{story-capture-BIrjDKeY.js → story-capture-BGeBen-R.js} +1 -1
  250. package/dist/assets/{story-documents-BvG2xeaR.js → story-documents-B8TSr_CN.js} +1 -1
  251. package/dist/assets/{story-documents.service-DOSEa3ja.js → story-documents.service-B1hhvZad.js} +1 -1
  252. package/dist/assets/{story-documents.service-y1m7XGMJ.js → story-documents.service-C_Q58qZs.js} +1 -1
  253. package/dist/assets/{story-media-presence-HLV-KaMj.js → story-media-presence-CEwzSadX.js} +1 -1
  254. package/dist/assets/{story-pixi-preview-CMhho2gG.js → story-pixi-preview-rAub2W_H.js} +1 -1
  255. package/dist/assets/{story-presentation-CYhVv8Ku.js → story-presentation-CdJ6Ncu6.js} +1 -1
  256. package/dist/assets/{story-three-preview-CgcLF5lE.js → story-three-preview-Cp9kfSo0.js} +2 -2
  257. package/dist/assets/{studio-environment-R9qXUUcC.js → studio-environment-BCf09Sox.js} +1 -1
  258. package/dist/assets/{surface-state-D8Qnowo6.js → surface-state-BUmVXUJj.js} +1 -1
  259. package/dist/assets/{syntactic-prop-specs-8gkBuc5j.js → syntactic-prop-specs-BHoShoI2.js} +1 -1
  260. package/dist/assets/{team-playtest.service-BBMZ2iyk.js → team-playtest.service-DErOWVaA.js} +1 -1
  261. package/dist/assets/{three-authoring-adapter-CkLR2zGf.js → three-authoring-adapter-DctJX96k.js} +1 -1
  262. package/dist/assets/three-authoring.service-B2LLPXyf.js +2 -0
  263. package/dist/assets/{three-ingest-runtime-CwTqAHgX.js → three-ingest-runtime-Bqwv-JsZ.js} +1 -1
  264. package/dist/assets/{three-integration-DXOFI88n.js → three-integration-C9bu5OXH.js} +2 -2
  265. package/dist/assets/three-integration.service-BXQuaWQ-.js +1 -0
  266. package/dist/assets/{three-projection-core-B7Lf8tOp.js → three-projection-core-rOK39WmJ.js} +1 -1
  267. package/dist/assets/{three-state-BCACvUtm.js → three-state-Cu8xEils.js} +1 -1
  268. package/dist/assets/{three-story-capture.service-rTFKNtHA.js → three-story-capture.service-DJaS21h9.js} +2 -2
  269. package/dist/assets/{three-story-model-BjKr7OMn.js → three-story-model-CE0vGtKW.js} +1 -1
  270. package/dist/assets/{three-viewport-presentation-CBzvc2v2.js → three-viewport-presentation-IVtG1zll.js} +1 -1
  271. package/dist/assets/{three-DiL6vMXq.js → three-wsMw8Ifj.js} +1 -1
  272. package/dist/assets/tools-BnE3UWVA.js +1 -0
  273. package/dist/assets/{transform-mode-request-DlEApNrA.js → transform-mode-request-C7qvcvEe.js} +1 -1
  274. package/dist/assets/{transport-strip-xCg94CuI.js → transport-strip-B6Hauzjh.js} +1 -1
  275. package/dist/assets/transport.header-CDivn20X.js +1 -0
  276. package/dist/assets/{tuples-BDz3wbQL.js → tuples-CP56GoRo.js} +1 -1
  277. package/dist/assets/{ui-board-document-DvbK_HVN.js → ui-board-document-B69iTbe5.js} +2 -2
  278. package/dist/assets/{user-data-C84W0V47.js → user-data-BGLBYiFw.js} +1 -1
  279. package/dist/assets/{utility-view-state-CDRxZSo-.js → utility-view-state-y2PTWZuT.js} +1 -1
  280. package/dist/assets/{viewport-door-BARIpMu-.js → viewport-door-B7DJhMPS.js} +1 -1
  281. package/dist/assets/{viewport-root-presentation-hRLF0BeO.js → viewport-root-presentation-DPtVohIT.js} +1 -1
  282. package/dist/assets/{viewport-surface-status-TUfhXKR9.js → viewport-surface-status-CleQnKBz.js} +1 -1
  283. package/dist/assets/{webworkerAll-PJtcQ1FD.js → webworkerAll-B8sqUYid.js} +1 -1
  284. package/dist/assets/{worker-BtXrsgFy.js → worker-jepHAPPr.js} +1 -1
  285. package/dist/assets/{workspace-arrangement-DqG5sUns.js → workspace-arrangement-6V8ZwB2d.js} +1 -1
  286. package/dist/assets/{world-documents-D69XaqUX.js → world-documents-CwxZ4xtW.js} +1 -1
  287. package/dist/assets/{world-root-stage-binding-BgZWZEuD.js → world-root-stage-binding-OOLit0lW.js} +1 -1
  288. package/dist/assets/{xstate-animation-binding-CIyLzGHs.js → xstate-animation-binding-KbfYItEZ.js} +1 -1
  289. package/dist/assets/{xstate-animation-meta-CbYWup3R.js → xstate-animation-meta-DM_K9jo1.js} +1 -1
  290. package/dist-node/cli.js +42 -42
  291. package/dist-node/create.js +5 -5
  292. package/package.json +16 -16
  293. package/template/.agents/references/project-manual.md +1 -2
  294. package/template/.agents/skills/editor/SKILL.md +2 -2
  295. package/template/.agents/skills/editor/agents/openai.yaml +3 -3
  296. package/template/.agents/skills/editor/references/editor-control.md +1 -1
  297. package/template/.agents/skills/volter-ingest-existing-game/SKILL.md +1 -1
  298. package/template/.agents/skills/volter-threejs-authoring/SKILL.md +4 -4
  299. package/template/.agents/skills/volter-threejs-authoring/agents/openai.yaml +1 -1
  300. package/template/.claude/skills/editor/SKILL.md +2 -2
  301. package/template/.claude/skills/editor/agents/openai.yaml +3 -3
  302. package/template/.claude/skills/editor/references/editor-control.md +1 -1
  303. package/template/.claude/skills/volter-ingest-existing-game/SKILL.md +1 -1
  304. package/template/.claude/skills/volter-threejs-authoring/SKILL.md +4 -4
  305. package/template/.claude/skills/volter-threejs-authoring/agents/openai.yaml +1 -1
  306. package/template/.github/copilot-instructions.md +1 -1
  307. package/template/.github/skills/editor/SKILL.md +2 -2
  308. package/template/.github/skills/editor/agents/openai.yaml +3 -3
  309. package/template/.github/skills/editor/references/editor-control.md +1 -1
  310. package/template/.github/skills/volter-ingest-existing-game/SKILL.md +1 -1
  311. package/template/.github/skills/volter-threejs-authoring/SKILL.md +4 -4
  312. package/template/.github/skills/volter-threejs-authoring/agents/openai.yaml +1 -1
  313. package/template/AGENTS.md +3 -4
  314. package/template/README.md +2 -6
  315. package/template/check-idioms.ts +26 -50
  316. package/template/package.json +10 -10
  317. package/template/server/colyseus-setup.ts +1 -9
  318. package/template/server/main.ts +0 -5
  319. package/template/server/rooms/arena-room.ts +2 -2
  320. package/template/server/rooms/game-room.ts +2 -2
  321. package/template/server/rooms.ts +1 -3
  322. package/template/src/net/NetworkedPlayers.tsx +3 -3
  323. package/template/vite.config.ts +1 -1
  324. package/template-dotfiles/gitignore +1 -1
  325. package/dist/assets/InspectorObjectPreview-CY5xVsPR.js +0 -1
  326. package/dist/assets/Object3DDocumentViewport-D6QoHfa_.js +0 -2
  327. package/dist/assets/active-ingest-0QjJWb7i.js +0 -3
  328. package/dist/assets/autoplay.service-BZLSUyL8.js +0 -1
  329. package/dist/assets/bridge.command-DXUeavn5.js +0 -3
  330. package/dist/assets/game-eval.command-CpDKXOQU.js +0 -2
  331. package/dist/assets/instances.command-BrdlngrL.js +0 -1
  332. package/dist/assets/network-observer.service-ZRAquNq4.js +0 -1
  333. package/dist/assets/three-authoring.service-CovhlCGx.js +0 -2
  334. package/dist/assets/three-integration.service-rCAqpqSp.js +0 -1
  335. package/dist/assets/tools-DfctM216.js +0 -1
  336. package/dist/assets/transport.header-BRtdky0x.js +0 -1
  337. package/template/server/loopback.ts +0 -76
@@ -1,3 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/game-css-scope-transform-DcjrwtVc.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-C5ZAyrKq.js","assets/index-nmcBqr7Y.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css"])))=>i.map(i=>d[i]);
2
- import{_ as se,m0 as Fe,m1 as He,m2 as De,O as P,m3 as je,j8 as ze,I as Ne,a5 as pe,jE as Be,bt as W,bu as O,bv as q,bx as We}from"./index-C5ZAyrKq.js";import{GAME_SCENES_SHAPE as Oe}from"./game-contract-seams-tyKDsfaP.js";import{g as qe,c as Ve,d as Ue,e as Ke,S as Ye}from"./capability-coverage-ByWftxk4.js";import{i as Qe,b as Je,l as Xe}from"./ingest-source-persistence-6ShMoSCa.js";import{p as Ze}from"./contract-system-adapters-Cn7OW_ay.js";const rn="contain: layout; font: initial; color: initial; letter-spacing: normal; word-spacing: normal; text-align: start; text-indent: 0; text-transform: none; white-space: normal; direction: ltr; cursor: auto; visibility: visible;";function ae(e){return typeof e=="boolean"?e:e?.capture??!1}const ie="volterScopedCss";let le=null;function et(){return le??=Promise.all([se(()=>import("./game-css-scope-transform-DcjrwtVc.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])),se(()=>import("./index-C5ZAyrKq.js").then(e=>e.tX),__vite__mapDeps([2,3,1,4,5,6,7,8,9,10]))]).then(([{scopeGameCss:e},{GAME_CSS_SCOPE_SELECTOR:t}])=>n=>e({css:n,scopeSelector:t,styleSheetPath:"/"})),le}function tt(e){let t=null;const n=()=>et().then(i=>{t=i}),o=i=>{const g=i.textContent??"";if(g.length===0||i.dataset[ie]===g)return;if(!t){const y=g;i.textContent="",n().then(()=>{i.isConnected&&(i.textContent??"")===""&&(i.textContent=y,o(i))});return}let h;try{h=t(g)}catch{i.textContent="";return}i.dataset[ie]=h,i.textContent=h},a=i=>{if(i instanceof HTMLStyleElement)return i;const g=i.parentElement;return g instanceof HTMLStyleElement?g:null},u=new MutationObserver(i=>{const g=new Set;for(const h of i)if(h.type==="childList")for(const y of h.addedNodes){const w=a(y);if(w)g.add(w);else if(y instanceof Element)for(const d of y.querySelectorAll("style"))g.add(d)}else if(h.type==="characterData"){const y=a(h.target);y&&g.add(y)}for(const h of g)h.isConnected&&o(h)});u.observe(e,{childList:!0,subtree:!0,characterData:!0});for(const i of e.querySelectorAll("style"))o(i);return u}class nt{surfaceElement=null;injectedStyles=null;get surface(){return this.surfaceElement}set surface(t){this.injectedStyles?.disconnect(),this.injectedStyles=null,this.surfaceElement=t,t&&(this.injectedStyles=tt(t))}pageTitle="";executingClassicScript=null;headElement=null;resizeBus=new EventTarget;resizeListeners=new Map;addResizeListener(t,n){let o=this.resizeListeners.get(t);o||(o=new Set,this.resizeListeners.set(t,o)),o.add(ae(n)),this.resizeBus.addEventListener("resize",t,n)}removeResizeListener(t,n){const o=this.resizeListeners.get(t);o&&(o.delete(ae(n)),o.size===0&&this.resizeListeners.delete(t)),this.resizeBus.removeEventListener("resize",t,n)}get gameResizesItself(){return this.resizeListeners.size>0}reset(){this.headElement?.remove(),this.headElement=null,this.pageTitle="",this.executingClassicScript=null,this.surface=null,this.resizeListeners.clear(),this.resizeBus=new EventTarget}dispatchResize(){this.resizeBus.dispatchEvent(new Event("resize"))}viewport(){const t=this.surface;return t?{width:t.clientWidth,height:t.clientHeight}:null}get title(){return this.pageTitle}set title(t){this.pageTitle=String(t)}get currentScript(){return this.executingClassicScript}withCurrentScript(t,n){const o=this.executingClassicScript,a=document.createElement("script");a.src=t,this.executingClassicScript=a;try{return n()}finally{this.executingClassicScript=o}}head(){const t=this.surface;if(!t)return null;if(!this.headElement||this.headElement.parentElement!==t){const n=document.createElement("div");n.dataset.volterGameHead="",n.hidden=!0,t.prepend(n),this.headElement=n}return this.headElement}}function rt(e){const t=`(__volterHost.__volterGameRealm?__volterHost.__volterGameRealm(${JSON.stringify("")}):null)`;return ot.replace("__VOLTER_REALM__",t)}const ot=`const __volterHost=({}).constructor.constructor('return globalThis')(),__volterR=__VOLTER_REALM__,__volterGlobal=((__volterR&&__volterR.globalThis)||__volterHost.__volterGameWindow||__volterHost),globalThis=__volterGlobal,__volterSched=((__volterR&&__volterR.timers)||__volterHost.__volterGameTimers||__volterHost),__volterBind=function(n){var f=__volterSched[n];return typeof f==='function'?f.bind(__volterSched):f;},console=((__volterR&&__volterR.console)||__volterHost.__volterGameConsole||__volterHost.console),window=((__volterR&&__volterR.window)||__volterHost.__volterGameWindow||__volterGlobal.window),document=((__volterR&&__volterR.document)||__volterHost.__volterGameDocument||__volterGlobal.document),__volterWindowBind=function(n){var f=window&&window[n];return typeof f==='function'?f.bind(window):f;},localStorage=(window&&window.localStorage),sessionStorage=(window&&window.sessionStorage),location=(window&&window.location),addEventListener=__volterWindowBind('addEventListener'),removeEventListener=__volterWindowBind('removeEventListener'),dispatchEvent=__volterWindowBind('dispatchEvent'),fetch=function(){var f=__volterHost.__volterProjectFetch;return f?f.apply(null,arguments):__volterHost.fetch.apply(__volterHost,arguments)},setTimeout=__volterBind('setTimeout'),clearTimeout=__volterBind('clearTimeout'),setInterval=__volterBind('setInterval'),clearInterval=__volterBind('clearInterval'),requestAnimationFrame=__volterBind('requestAnimationFrame'),cancelAnimationFrame=__volterBind('cancelAnimationFrame');
3
- `,on=rt(),st=new Set(["href","protocol","host","hostname","port","pathname","search"]),at=new Set(["assign","replace","reload"]),it=new Set(["play","project","hub","scene","ingest","create-from","checkout_id"]);function lt(e){return it.has(e)||e.startsWith("volter")}function _e(e){const t=e.startsWith("?")?e.slice(1):e;if(!t)return"";const n=new URLSearchParams;for(const[a,u]of new URLSearchParams(t))lt(a)||n.append(a,u);const o=n.toString();return o.length>0?`?${o}`:""}function ct(e){try{const t=new URL(e);return t.search=_e(t.search),t.href}catch{return e}}function ut(e,t,n){const o=Object.create(null);return new Proxy(o,{get(a,u){if(typeof u=="string"&&at.has(u))return(...g)=>{u==="reload"&&n?.reloadGame?.()||t(`location.${u}(${g.map(h=>String(h)).join(", ")})`)};if(u==="search")return _e(String(Reflect.get(e,"search")??""));if(u==="href")return ct(String(Reflect.get(e,"href")??""));const i=Reflect.get(e,u);return typeof i=="function"?i.bind(e):i},set(a,u,i){return typeof u=="string"&&st.has(u)?(t(`location.${u} = ${String(i)}`),!0):Reflect.set(e,u,i)},has(a,u){return Reflect.has(e,u)}})}function dt(e){return`Ingested game attempted to navigate the editor away (${e}) — refused. A game running in-realm shares the editor's document, so leaving it would take the whole session with it; game code sees a scoped \`location\` facade whose reads pass through and whose navigating writes do not (packages/editor/src/game-location-guard.ts).`}function ft(e){let t=0,n=0;const o=Object.create(Object.getPrototypeOf(e)),a=w=>(t+=1,e.getItem(String(w))),u=(w,d)=>{n+=1,e.setItem(String(w),String(d))},i=w=>{n+=1,e.removeItem(String(w))},g=()=>{n+=1,e.clear()},h=w=>(t+=1,e.key(Number(w)));return{storage:new Proxy(o,{get(w,d){return d==="length"?(t+=1,e.length):d==="getItem"?a:d==="setItem"?u:d==="removeItem"?i:d==="clear"?g:d==="key"?h:d===Symbol.toStringTag?"Storage":typeof d=="string"?a(d)??void 0:Reflect.get(o,d,o)},set(w,d,p){return typeof d!="string"?Reflect.set(o,d,p,o):(u(d,String(p)),!0)},deleteProperty(w,d){return typeof d!="string"?Reflect.deleteProperty(o,d):(i(d),!0)},defineProperty(w,d,p){return typeof d!="string"||!("value"in p)?!1:(u(d,String(p.value)),!0)},has(w,d){return typeof d!="string"?Reflect.has(o,d):d in o?!0:a(d)!==null},ownKeys(){const w=[];for(let d=0;d<e.length;d+=1){const p=e.key(d);p!==null&&w.push(p)}return w},getOwnPropertyDescriptor(w,d){if(typeof d!="string")return;const p=e.getItem(d);return p===null?void 0:{configurable:!0,enumerable:!0,value:p,writable:!0}}}),stats:()=>({reads:t,writes:n})}}function mt(e){return!e||e.loop!=="gated"&&e.loop!=="self-driven"?null:{verdict:e.loop,evidence:e.evidence}}function gt(e){let t="open",n=0,o=0,a=0,u=0,i=0,g=0,h=0,y=0,w=!1;const d=[],p=new Set,T=new Set,I=new Set,S=new Map,A=()=>(t==="held"?h:e.now())-y,c=m=>{a++,t==="held"&&u++;try{m.run()}catch(_){e.setTimeout(()=>{throw _},0)}},f=()=>{const m=d.splice(0,d.length);S.clear();for(const _ of m)c(_)},s=m=>{d.push(m)},r=m=>()=>{if(t==="held"){s(m);return}c(m)},l=()=>{t!=="held"&&(h=e.now(),t="held")},v=()=>{t==="held"&&(y+=e.now()-h)};return{schedulers:{setTimeout(m,_,...E){if(o++,w)return-1;const R={run:()=>m(...E)};let L=-1;const C=r(R);return L=e.setTimeout(()=>{p.delete(L),C()},_),p.add(L),R.timerId=L,L},clearTimeout(m){e.clearTimeout(m),p.delete(m);const _=d.findIndex(E=>E.timerId===m);_!==-1&&d.splice(_,1)},setInterval(m,_,...E){if(o++,w)return-1;let R=-1;const L=()=>{const C={run:()=>m(...E)};if(t==="held"){const re=S.get(R);if(re){const oe=d.indexOf(re);oe!==-1&&d.splice(oe,1)}S.set(R,C),s(C);return}c(C)};return R=e.setInterval(L,_),T.add(R),R},clearInterval(m){e.clearInterval(m),T.delete(m);const _=S.get(m);if(_){S.delete(m);const E=d.indexOf(_);E!==-1&&d.splice(E,1)}},requestAnimationFrame(m){if(o++,w)return-1;const _={run:()=>m(A())};let E=-1;const R=r(_);return E=e.requestAnimationFrame(()=>{I.delete(E),R()}),I.add(E),_.frameId=E,E},cancelAnimationFrame(m){e.cancelAnimationFrame(m),I.delete(m);const _=d.findIndex(E=>E.frameId===m);_!==-1&&d.splice(_,1)}},hold:l,release(){w||(v(),t="open",f())},step(m=1){if(!w){for(v(),n=m>0?m:1,t="step";n>0&&d.length>0;)n--,f();t="held",h=e.now()}},stats(){return{mode:t,pending:d.length,requests:o,fired:a,firedWhileHeld:u,activeTimeouts:p.size,activeIntervals:T.size,activeAnimationFrames:I.size,input:i,inputBlocked:g}},recordInput(m){i++,m&&g++},dispose(){if(w)return{timeouts:0,intervals:0,animationFrames:0,parkedCallbacks:0};w=!0;const m={timeouts:p.size,intervals:T.size,animationFrames:I.size,parkedCallbacks:d.length};for(const _ of p)e.clearTimeout(_);for(const _ of T)e.clearInterval(_);for(const _ of I)e.cancelAnimationFrame(_);return p.clear(),T.clear(),I.clear(),d.length=0,S.clear(),n=0,t="held",h=e.now(),m}}}async function sn(e){const t=e.windowMs??1500,n=Math.max(1,Math.min(e.sampleMs??50,t)),o=e.sleep??(T=>new Promise(I=>setTimeout(I,T))),a=e.gate;if(!a)return{loop:"self-driven",reason:"no same-realm loop gate is installed, so nothing here controls this game’s scheduling",evidence:{pendingWhileHeld:0,firedWhileHeld:0,progressBefore:0,progressAfter:0,windowMs:t}};const u=a.stats(),i=e.progress();let g=u,h=i,y=u.pending,w=u.mode==="held";for(let T=0;T<t;T+=n)if(await o(Math.min(n,t-T)),g=a.stats(),h=e.progress(),y=Math.max(y,g.pending),g.mode!=="held"){w=!1;break}const d=g.firedWhileHeld-u.firedWhileHeld,p={pendingWhileHeld:y,firedWhileHeld:d,progressBefore:i,progressAfter:h,windowMs:t};return!w||g.mode!=="held"?{loop:"unmeasured",reason:"the gate was not held for the whole probe window — something else released it, so control was not measured",evidence:p}:d>0?{loop:"self-driven",reason:`${d} gated callback(s) ran while the gate was held — the gate leaked, so it cannot claim control`,evidence:p}:h>i?{loop:"self-driven",reason:`the game kept rendering while its scheduling was withheld (frame ${i} → ${h} in ${t}ms) — something outside this gate drives its loop`,evidence:p}:y===0?{loop:"unmeasured",reason:"nothing was due while the gate was held, so it withheld nothing and the probe learned nothing about this loop — note a hidden or backgrounded tab schedules no frames at all, which is a fact about the TAB, never about the game",evidence:p}:{loop:"gated",reason:`verified: ${y} scheduled callback(s) withheld, none ran, and no frame advanced in ${t}ms of held time`,evidence:p}}let V=null;function ht(){return V}const z=new Set(["keydown","keyup","keypress","mousedown","mouseup","mousemove","click","dblclick","contextmenu","wheel","pointerdown","pointerup","pointermove","pointercancel","touchstart","touchmove","touchend","touchcancel"]);function Se(e){const t=new Set,n=new WeakSet,o=((a,u)=>{const i=vt(a,u),g=yt(a,u);if(e()){for(const y of i)t.add(y);for(const y of g)t.delete(y);return!1}if(n.has(u))return!1;let h=!1;for(const y of g)t.delete(y)&&(h=!0);return h&&n.add(u),!h});return o.outstandingReleases=()=>{const a=[];for(const u of t){const i=u.indexOf(":"),g=u.slice(0,i),h=u.slice(i+1);g==="key"?a.push(new KeyboardEvent("keyup",{code:h,key:wt(h),bubbles:!0})):g==="mouse"?a.push(new MouseEvent("mouseup",{button:Number(h),bubbles:!0})):g==="pointer"&&typeof PointerEvent=="function"&&a.push(new PointerEvent("pointerup",{pointerId:Number(h),bubbles:!0}))}return a},o}function wt(e){const t=/^Key([A-Z])$/.exec(e);if(t)return t[1].toLowerCase();const n=/^Digit(\d)$/.exec(e);return n?n[1]:e==="Space"?" ":e}function be(e){const t=e.changedTouches;return t?Array.from(t,n=>`touch:${n.identifier}`):["touch"]}function vt(e,t){switch(e){case"keydown":return[`key:${t.code}`];case"mousedown":return[`mouse:${t.button}`];case"pointerdown":return[`pointer:${t.pointerId}`];case"touchstart":return be(t);default:return[]}}function yt(e,t){switch(e){case"keyup":return[`key:${t.code}`];case"mouseup":return[`mouse:${t.button}`];case"pointerup":case"pointercancel":return[`pointer:${t.pointerId}`];case"touchend":case"touchcancel":return be(t);default:return[]}}const Ee=new Set(["setTimeout","clearTimeout","setInterval","clearInterval","requestAnimationFrame","cancelAnimationFrame"]);function Re(e,t){return typeof e!="function"||Object.hasOwn(e,"prototype")?e:e.bind(t)}const k="",F=new Map,U=new Map,H=new Map,ce=new WeakMap;function K(e){let t=H.get(e);return t||(t=new nt,H.set(e,t)),t}function an(e,t=k){const n=K(t);return n.surface=e,n}function ln(e=k){H.get(e)?.reset()}function cn(e=k){return K(e)}function un(){const e=[];for(const[t,n]of H)n.surface&&e.push({surface:n.surface,gate:Te(t)});return e}function Te(e){return()=>Fe()&&(U.get(e)??(()=>!0))()}function pt(e,t){const n=Te(e);return()=>t.alive&&n()}const M=[];function _t(){return M[M.length-1]??null}De(_t);function $(e,t){M.push(e);try{return t()}finally{M.pop()}}function St(e,t){return{setTimeout(n,o,...a){return t.setTimeout((...u)=>$(e,()=>n(...u)),o,...a)},clearTimeout:n=>t.clearTimeout(n),setInterval(n,o,...a){return t.setInterval((...u)=>$(e,()=>n(...u)),o,...a)},clearInterval:n=>t.clearInterval(n),requestAnimationFrame(n){return t.requestAnimationFrame(o=>$(e,()=>n(o)))},cancelAnimationFrame:n=>t.cancelAnimationFrame(n)}}function bt(e){const t=new Map;return new Proxy(console,{get(n,o){const a=Reflect.get(n,o,n);if(typeof a!="function")return a;let u=t.get(o);return u||(u=(...i)=>$(e,()=>a.apply(n,i)),t.set(o,u)),u}})}function ue(e){let t=!1,n=null;return()=>{if(t)return n;t=!0;try{n=ft(window[e])}catch{n=null}return n}}let Ie=null;function Et(e){Ie=e}let Pe=null;function Rt(e){const t={alive:!0},n=new Map,o=pt(e,t),a=gt({setTimeout:(S,A)=>window.setTimeout(S,A),clearTimeout:S=>window.clearTimeout(S),setInterval:(S,A)=>window.setInterval(S,A),clearInterval:S=>window.clearInterval(S),requestAnimationFrame:S=>window.requestAnimationFrame(S),cancelAnimationFrame:S=>window.cancelAnimationFrame(S),now:()=>performance.now()}),u=new WeakSet,i=(S,A)=>{u.has(S)||(u.add(S),a.recordInput?.(A))};e===k&&(Pe=a);const g=K(e),h=St(e,a.schedulers),y=ue("localStorage"),w=ue("sessionStorage");let d,p;const T=me(de(window,()=>!0,{page:g,role:"window"}),o,{execute:S=>$(e,S),realmId:e,recordInput:i,role:"window",schedulers:h,self:()=>d,document:()=>p,localStorage:y,sessionStorage:w,isolateExpandos:!0});d=T.proxy;const I=me(de(document,()=>!0,{page:g,role:"document"}),o,{execute:S=>$(e,S),realmId:e,recordInput:i,role:"document",self:()=>d});return p=I.proxy,{moduleUrls:n,live:t,loop:a,document:I,localStorage:y,sessionStorage:w,window:T,public:{recordModuleUrl(S){t.alive&&n.set(new URL(S).pathname,S)},console:bt(e),document:p,globalThis:d,timers:h,window:d}}}function Y(e=k){let t=F.get(e);return t||(t=Rt(e),F.set(e,t)),t.public}function Tt(e){return[...F.get(e)?.moduleUrls.values()??[]]}function dn(e){const t=F.get(e);if(!t)return null;const n={reads:0,writes:0};return{globals:t.window.expandoCount(),mountId:e,loop:t.loop.stats(),listeners:{document:t.document.count(),window:t.window.count()},storage:{local:t.localStorage()?.stats()??n,session:t.sessionStorage()?.stats()??n}}}function It(e=k){U.delete(e),H.get(e)?.reset(),e!==k&&H.delete(e);const n=F.get(e);if(!n)return{mountId:e,listeners:0,timers:{timeouts:0,intervals:0,animationFrames:0,parkedCallbacks:0}};F.delete(e),n.moduleUrls.clear(),n.live.alive=!1;const o=n.document.dispose()+n.window.dispose(),a=n.loop.dispose?.()??{timeouts:0,intervals:0,animationFrames:0,parkedCallbacks:0};return e===k&&Ce(),{mountId:e,listeners:o,timers:a}}function fn(e,t=k){U.set(t,e)}function de(e,t,n){const o=new Map,a=Se(t),u=()=>n?.page.surface??null,i=()=>n?.role==="window"&&n.page.surface?n.page:null,g=(c,f,s)=>{const r=i();if(r&&c==="resize"&&f!==null){r.addResizeListener(f,s);return}if((c==="load"||c==="DOMContentLoaded"||c==="pageshow")&&f!==null&&document.readyState==="complete"){window.setTimeout(()=>{const l=new Event(c);typeof f=="function"?f.call(p,l):f.handleEvent(l)},0);return}if(z.has(c)&&f!==null){let l=o.get(c);l||(l=new Map,o.set(c,l));const v=f;let b=l.get(v);b||(b=function(m){if(!a(c,m))return typeof v=="function"?v.call(this,m):v.handleEvent(m)},l.set(v,b)),e.addEventListener(c,b,s);return}e.addEventListener(c,f,s)},h=(c,f,s)=>{const r=i();if(r&&c==="resize"&&f!==null){r.removeResizeListener(f,s);return}if(z.has(c)&&f!==null){const l=o.get(c),v=l?.get(f);if(v){l?.delete(f),e.removeEventListener(c,v,s);return}}e.removeEventListener(c,f,s)},y=new WeakMap,w=c=>{if(typeof c!="string"||!c.startsWith("on"))return null;const f=c.slice(2);return z.has(f)?f:null},d=c=>{console.error(dt(c))};let p;const T=()=>{const c=Reflect.get(e,"location",e);if(!c||!n)return null;const f=ce.get(n.page);if(f?.source===c)return{value:f.view};const s=ut(c,d,{reloadGame:()=>{const r=Ie;return r?(r(),!0):!1}});return ce.set(n.page,{source:c,view:s}),{value:s}},I=c=>{const f=i();if(!f)return null;if(c==="window"||c==="self"||c==="top"||c==="parent")return{value:p};if(c!=="innerWidth"&&c!=="outerWidth"&&c!=="innerHeight"&&c!=="outerHeight")return null;const s=f.viewport();return s?c==="innerWidth"||c==="outerWidth"?{value:s.width}:c==="innerHeight"||c==="outerHeight"?{value:s.height}:null:null},S=c=>{if(!n)return null;if(c==="location")return T();if(n.role==="document"){const f=u();if(f&&(c==="body"||c==="documentElement"))return{value:f};if(f&&c==="head")return{value:n.page.head()};if(f&&c==="title")return{value:n.page.title};if(f&&c==="currentScript")return{value:n.page.currentScript};if(f&&c==="activeElement"){const s=Reflect.get(e,"activeElement",e);return{value:s&&f.contains(s)?s:f}}}return I(c)},A=c=>{if(n?.role!=="document"||typeof c!="string")return;const f=u();if(!f)return;const s=e;if(c==="querySelector")return r=>r.trim().toLowerCase()==="head"?n.page.head():f.matches(r)?f:f.querySelector(r);if(c==="querySelectorAll")return f.querySelectorAll.bind(f);if(c==="getElementById")return r=>{const l=s.getElementById(r);return l&&f.contains(l)?l:null};if(c==="getElementsByClassName")return f.getElementsByClassName.bind(f);if(c==="getElementsByTagName")return r=>{if(r.toLowerCase()!=="head")return f.getElementsByTagName(r);const l=n.page.head();return l?Object.assign([l],{item:v=>v===0?l:null,namedItem:v=>l.id===v?l:null}):[]};if(c==="elementFromPoint"||c==="elementsFromPoint")return(r,l)=>{const v=f.getBoundingClientRect(),m=s[c].bind(s)(r+v.left,l+v.top);return Array.isArray(m)?m.filter(_=>f.contains(_)):m&&f.contains(m)?m:null}};return p=new Proxy(e,{get(c,f){if(f==="addEventListener")return g;if(f==="removeEventListener")return h;const s=S(f);if(s)return s.value;const r=A(f);if(r)return r;if(typeof f=="string"&&Ee.has(f)){const v=V;if(v)return v.schedulers[f]}const l=Reflect.get(c,f,c);return typeof l!="function"?l:y.get(l)??Re(l,c)},set(c,f,s){if(f==="location"&&n)return d(`${n.role}.location = ${String(s)}`),!0;if(n?.role==="document"&&f==="title"&&n.page.surface)return n.page.title=String(s),!0;if(w(f)!==null&&typeof s=="function"){const l=s,v=function(b){if(t())return l.call(this,b)};return y.set(v,l),Reflect.set(c,f,v,c)}if(f==="onload"&&typeof s=="function"&&document.readyState==="complete"){const l=s;return window.setTimeout(()=>l.call(p,new Event("load")),0),!0}return Reflect.set(c,f,s,c)}}),p}function fe(e){return typeof e=="boolean"?e:e?.capture??!1}function me(e,t,n){const o=n.execute??(s=>s()),a=[],u=Se(t);let i=!1,g=!1;const h=s=>{if(g)return;g=!0;const r=n.realmId?`"${n.realmId}"`:"the default realm";console.warn(`volter: a stopped game tried to register ${s} on its ${n.role} after its realm (${r}) was reclaimed; refused. Later refusals in this generation are silent.`)},y=new Map,w=new Map,d=new WeakMap;let p;const T=s=>n.role==="window"&&n.self&&(s===e||typeof window<"u"&&s===window)?n.self():n.document&&(s===n.document()||typeof document<"u"&&s===document)?n.document():s,I=s=>{const r=d.get(s);if(r)return r;const l=new Proxy(s,{get(v,b){if(b==="currentTarget")return p;if(b==="target"||b==="srcElement"){const _=Reflect.get(v,b,v);return _===v.currentTarget?p:T(_)}if(b==="view")return T(Reflect.get(v,b,v));if(b==="composedPath")return()=>v.composedPath().map(T);const m=Reflect.get(v,b,v);return typeof m=="function"?m.bind(v):m}});return d.set(s,l),l},S=s=>{const r=a.indexOf(s);r!==-1&&a.splice(r,1),e.removeEventListener(s.type,s.actual,s.capture),s.abort?.signal.removeEventListener("abort",s.abort.handler)},A=(s,r,l)=>{if(r===null)return;if(i){h(`a "${s}" listener`);return}const v=fe(l),b=l&&typeof l!="boolean"?l.signal:void 0;if(b?.aborted||a.some(R=>R.type===s&&R.original===r&&R.capture===v))return;let m;const _=function(R){if(l&&typeof l!="boolean"&&l.once){const C=a.indexOf(m);C!==-1&&a.splice(C,1),m.abort?.signal.removeEventListener("abort",m.abort.handler)}if(z.has(s)){const C=u(s,R);if(n.recordInput?.(R,C),C)return}const L=I(R);return o(()=>typeof r=="function"?r.call(p,L):r.handleEvent(L))},E=()=>S(m);m={type:s,original:r,actual:_,capture:v,...b?{abort:{signal:b,handler:E}}:{}},a.push(m),e.addEventListener(s,_,l),b?.addEventListener("abort",E,{once:!0}),(s==="load"||s==="DOMContentLoaded"||s==="pageshow")&&document.readyState==="complete"&&window.setTimeout(()=>{!i&&a.includes(m)&&_.call(e,new Event(s))},0)},c=(s,r,l)=>{if(r===null)return;const v=fe(l),b=a.find(m=>m.type===s&&m.original===r&&m.capture===v);b?S(b):e.removeEventListener(s,r,l)},f=s=>typeof s=="string"&&s.startsWith("on")&&s.length>2?s.slice(2):null;return p=new Proxy(e,{get(s,r){if(r==="addEventListener")return A;if(r==="removeEventListener")return c;const l=w.get(r);if(l)return l.original;if(n.self&&(n.role==="window"&&(r==="window"||r==="self"||r==="frames"||r==="top"||r==="parent")||n.role==="document"&&r==="defaultView"))return n.self();if(n.role==="window"&&r==="document"&&n.document)return n.document();if(n.role==="window"&&r==="globalThis"&&n.self)return n.self();if(n.role==="window"&&r==="localStorage"&&n.localStorage)return n.localStorage()?.storage;if(n.role==="window"&&r==="sessionStorage"&&n.sessionStorage)return n.sessionStorage()?.storage;if(typeof r=="string"&&Ee.has(r)&&n.schedulers)return n.schedulers[r];const v=y.get(r);if(v)return v.get?v.get.call(p):v.value;const b=Reflect.get(s,r,s);return typeof b!="function"?b:Re(b,s)},set(s,r,l){if(r==="location")return Reflect.set(s,r,l,s);if(n.role==="window"&&(r==="document"||r==="globalThis"||r==="localStorage"||r==="sessionStorage"))return!0;const v=f(r);if(v){if(i)return h(`an "${String(r)}" handler`),!0;const b=w.get(r);if(b&&(e.removeEventListener(b.type,b.actual),w.delete(r)),typeof l!="function")return!0;const m=l,_=(v==="load"||v==="DOMContentLoaded"||v==="pageshow")&&document.readyState==="complete",E=function(R){if(z.has(v)){const C=u(v,R);if(n.recordInput?.(R,C),C)return}const L=o(()=>m.call(p,I(R)));return L===!1&&R.preventDefault(),L};return w.set(r,{type:v,original:m,actual:E}),e.addEventListener(v,E),_&&window.setTimeout(()=>{!i&&w.get(r)?.actual===E&&E.call(e,new Event(v))},0),!0}return n.isolateExpandos?(y.set(r,{configurable:!0,enumerable:!0,value:l,writable:!0}),!0):Reflect.set(s,r,l,s)},defineProperty(s,r,l){return n.isolateExpandos?Reflect.getOwnPropertyDescriptor(s,r)?.configurable===!1?!1:(y.set(r,{...l,configurable:!0,enumerable:l.enumerable??!0}),!0):Reflect.defineProperty(s,r,l)},deleteProperty(s,r){return y.delete(r)?!0:n.isolateExpandos?Reflect.getOwnPropertyDescriptor(s,r)?.configurable!==!1:Reflect.deleteProperty(s,r)},has(s,r){return y.has(r)||Reflect.has(s,r)},ownKeys(s){const r=new Set(Reflect.ownKeys(s));for(const l of y.keys())typeof l!="number"&&r.add(l);return[...r]},getOwnPropertyDescriptor(s,r){const l=Reflect.getOwnPropertyDescriptor(s,r);return l?.configurable===!1?l:y.get(r)??l}}),{proxy:p,count:()=>a.length+w.size,expandoCount:()=>y.size,dispose(){for(const r of u.outstandingReleases()){for(const l of[...a])l.type===r.type&&l.actual.call(p,r);for(const l of w.values())l.type===r.type&&l.actual.call(p,r)}i=!0;const s=a.length+w.size;for(const r of[...a])S(r);for(const r of w.values())e.removeEventListener(r.type,r.actual);return w.clear(),y.clear(),s}}}let B=!1;function Ce(){if(!B)return;const e=globalThis,t=Y();V=Pe,e.__volterGameTimers=t.timers,e.__volterGameWindow=t.window,e.__volterGameDocument=t.document,e.__volterGameConsole=t.console}function mn(){if(B||typeof window>"u"||typeof document>"u")return;B=!0;const e=globalThis;He(),e.__volterGameModuleUrls=Tt,e.__volterGameRealm=t=>(M.push(t),queueMicrotask(()=>{const n=M.lastIndexOf(t);n>=0&&M.splice(n,1)}),Y(t)),Ce()}function Q(e,t){const n=It(e),o=n.timers.timeouts+n.timers.intervals+n.timers.animationFrames+n.timers.parkedCallbacks;if(n.listeners===0&&o===0)return;const a=[];n.listeners>0&&a.push(`${n.listeners} window/document listener${n.listeners===1?"":"s"}`),o>0&&a.push(`${o} timer/frame callback${o===1?"":"s"}`),P.logStructured("warn",`${t} stopped without releasing ${a.join(" and ")}; the editor reclaimed them.`,"environment",void 0,{instanceId:e,instanceName:t})}function Le(e=typeof window>"u"?null:window){const t=e?.volterGame;return!t||t.contractVersion!==1?null:t}const Pt=Object.entries(Oe).filter(([,e])=>!e.optional).map(([e])=>e);function Ae(e){const t=e?.scenes;if(t==null)return{scenes:null,malformed:null};if(typeof t!="object")return{scenes:null,malformed:`declared as ${typeof t}; expected an object with list(), current() and goTo()`};const n=Pt.filter(o=>typeof t[o]!="function");return n.length>0?{scenes:null,malformed:`declared a scenes surface missing required member(s): ${n.join(", ")}`}:{scenes:t,malformed:null}}function Ct(e){const t=e?.ready;if(t==null)return{ready:null,malformed:null};if(typeof t=="function"){const n=t;return{ready:()=>Promise.resolve(n()),malformed:null}}if(typeof t.then=="function"){const n=t;return{ready:()=>Promise.resolve(n),malformed:null}}return{ready:null,malformed:`declared \`ready\` as ${typeof t}; expected a promise or a function returning one`}}function Lt(e){const t=e?.world;return t==null?{world:null,malformed:null}:typeof t!="object"||t.isScene!==!0?{world:null,malformed:`declared \`world\` as ${typeof t}; expected the game's own THREE.Scene`}:{world:t,malformed:null}}function At(e){const t=e?.presentation;if(t==null)return{canvas:null,malformed:null};const n=t;return typeof n!="object"||n.tagName!=="CANVAS"||typeof n.getContext!="function"?{canvas:null,malformed:`declared \`presentation\` as ${typeof t=="object"?String(n.tagName??"object"):typeof t}; expected the game's own <canvas> element`}:{canvas:t,malformed:null}}const gn=Object.freeze(Object.defineProperty({__proto__:null,readGameContract:Le,readGamePresentation:At,readGameReady:Ct,readGameScenes:Ae,readGameWorld:Lt},Symbol.toStringTag,{value:"Module"}));function kt(e){if(!Array.isArray(e))throw new Error("scenes.list() did not return an array");const t=new Set;for(const n of e){if(typeof n!="object"||n===null||typeof n.id!="string"||n.id.trim().length===0||typeof n.label!="string"||n.label.trim().length===0)throw new Error("scenes.list() returned an invalid { id, label } scene");if(t.has(n.id))throw new Error(`scenes.list() returned duplicate id "${n.id}"`);t.add(n.id)}return e}function xt(e){return typeof e?.goToScene=="function"}function hn(e,t={}){const{scenes:n,malformed:o}=Ae(e);if(o!==null&&P.warn(`Ignored the game contract's \`scenes\` surface: ${o}`,"ingest"),!n)return null;let a=!1;const u=()=>{try{return kt(n.list())}catch(g){return a||(a=!0,P.warn(`Ignored invalid game-contract scenes: ${g instanceof Error?g.message:String(g)}`,"ingest")),[]}},i=g=>{const h=u().map(w=>w.id);return h.includes(g)?(t.onSwitchAccepted?.(g),{ok:!0,settled:(async()=>{try{return await n.goTo(g),{requested:g,current:n.current()}}catch(w){return{requested:g,current:n.current(),error:w instanceof Error?w.message:String(w)}}})()}):{ok:!1,error:`scenes.goTo: "${g}" is not one of this game's scenes (${h.length>0?h.join(", "):"it lists none"}).`,known:h}};return{title:"Scenes",storiesFor:g=>u().map(({id:h,label:y})=>({id:h,label:y})),active:g=>n.current(),goToScene:i,apply:(g,h)=>{if(h===null){P.warn("This game’s scenes cannot be cleared: it is always in one of its own scenes. Pick the scene to switch to instead.","ingest");return}const y=i(h);if(!y.ok){P.warn(`${y.error} — ignoring.`,"ingest");return}y.settled.then(w=>{w.error!==void 0&&P.error(`scenes.goTo("${h}") failed: ${w.error}`,"ingest")})}}}function Gt(){const e=G();if(!e)return null;const n=(()=>{switch(e.kind){case"canvas":return e.session.adapter;case"dom":return e.session.adapter;case"three":return e.session.mount?.authoring}})()?.stories;return xt(n)?n:null}let J=!1;function ge(){return J}function wn(){J=!0}function vn(){J=!1}let D=null,x=null;function yn(e){D=e,e||X()}function pn(){D=null,X()}function X(){const e=x;x=null,e&&(clearTimeout(e.timer),e.settle(null))}function ke(){const e=D?.renderer.domElement;return typeof e=="object"&&e!==null?e:null}function _n(){const e=x;if(!(!e||!D))try{const t=D.renderer;if(typeof t.getRenderTarget=="function"&&t.getRenderTarget()!==null)return;const n=ke();if(!n||n.width===0||n.height===0)return;const o=e.image??n.ownerDocument.createElement("canvas");o.width=n.width,o.height=n.height;const a=o.getContext("2d");if(!a||(a.drawImage(n,0,0),e.image=o,e.delivering))return;e.delivering=!0,setTimeout(()=>{x===e&&(x=null,clearTimeout(e.timer),e.settle(e.image))},0)}catch{}}function Mt(e=2e3){return D?(X(),new Promise(t=>{const n=setTimeout(()=>{x?.timer===n&&(x=null),t(null)},e);x={settle:t,timer:n,image:null,delivering:!1}})):Promise.resolve(null)}const $t={play:e=>(e.play(),"driven"),resume:e=>(e.resume(),"driven"),stop:(e,t)=>t?.stopEndsRun?"declined":(e.pause(),"driven"),pause:e=>(e.pause(),"driven"),step:e=>e.canStep?(e.step(),"driven"):{ok:!1,error:"this ingested game cannot be stepped — no serve-time loop gate measured control over its frames, so a single-frame step would be a button that lies (see ingest/same-realm-loop-gate.ts)"}};function Ft(e,t,n){if(!je(t))return null;const o=$t[t](e,n);return o==="declined"?null:o!=="driven"?o:{ok:!0,data:{ingest:!0,playing:e.playing}}}function Ht(){return Y().window}function Z(){return typeof window>"u"?null:Le(Ht())}let ee=!1;function Dt(){return ee}function N(e){ee=e}function jt(){N(!1);const e=window;delete e.__volterMountCold,delete e.__volterIngestPlayed}function he(e,t,n){const o=(a,u)=>ze({seam:`contract.lifecycle.${t}`,subject:"game",epoch:qe(e),stage:"effect",outcome:a,source:"consumer",detail:u});try{n(),o("pass",`the mounted ingest lifecycle consumed lifecycle.${t}`)}catch(a){throw o("fail",`lifecycle.${t} failed: ${a instanceof Error?a.message:String(a)}`),a}}function Sn(e={}){const t=Z(),n=t?.lifecycle,o=()=>{if(t&&n?.start){he(t,"start",()=>n.start?.());return}window.dispatchEvent(new CustomEvent("volter:ingest-play"))},a=typeof n?.pause=="function",u=typeof n?.resume=="function";return t&&a!==u?{start:o,pauseGap:a?"the game contract declares lifecycle.pause without lifecycle.resume":"the game contract declares lifecycle.resume without lifecycle.pause"}:t&&a&&u?{start:o,setPaused:i=>he(t,i?"pause":"resume",()=>{i?n?.pause?.():n?.resume?.()})}:e.setPaused?{start:o,setPaused:e.setPaused,...e.step?{step:e.step}:{},...e.canStep?{canStep:e.canStep}:{}}:{start:o,pauseGap:e.pauseGap??"the game declares no lifecycle.pause/resume pair and its mounted adapter exposes no setPaused capability"}}function bn(){const e=G();return e?e.session.lifecycle.pauseGap??null:null}function we(e){const t=G();if(t)for(const n of t.siblings)try{n.setPaused?.(e)}catch(o){P.error(`Composite sibling setPaused(${e}) failed: ${o}`,"ingest")}}function zt(){return Z()}function xe(){const e=G()?.session.lifecycle;if(!e?.setPaused)return null;const t=()=>{e.setPaused?.(!0),we(!0),N(!1)},n=()=>{e.setPaused?.(!1),we(!1),N(!0)};return{get playing(){return ee},play(){Ne();const o=window;if(o.__volterIngestPlayed)return n();o.__volterIngestPlayed=!0,e.start(),n()},pause:t,resume:n,canStep:!!e.step&&(e.canStep?.()??!0),step(){e.canStep?.()!==!1&&(e.step?.(),N(!1))}}}function En(e){const t=xe();return t?(t.pause(),!0):!1}const Nt=Ve(e=>{e.level==="warn"?P.warn(e.message,"ingest"):P.log(e.message,"ingest")});let Bt=0,Ge="";function Rn(e){Ge=`${e}#${++Bt}`}function Tn(e){const t=mt(e.realmLoopVerdict?.()),n=e.realmLoopVerdict?.()?.reason??null;return t!==null||n!==null?{loop:t,reason:n}:e.realmLoopVerdict?{loop:null,reason:null}:{loop:null,reason:Wt}}function In(){return{loop:null,reason:"⏸ calls the host runtime's own play pause on this route, but no probe has measured whether that reaches this game's frames — an unmodified React game that schedules its own timers is not held by the host loop"}}const Wt="this mount installs no loop gate, so no verdict will ever be measured here — nothing in the editor holds this game's frames";function Ot(e,t,n){const o=Ze(t?.systems,n),a=new Map(o.empty.map(i=>[i.slot,i.evidence])),u=new Map(o.malformed.map(i=>[i.slot,i.reason]));return Ye.map(i=>{if(e[i]!=null)return{slot:i,state:"bound",proof:Be({slot:i,adapter:e[i],subject:"game"})};const g=a.get(i);if(g!==void 0)return{slot:i,state:"empty",evidence:g};const h=u.get(i);return h!==void 0?{slot:i,state:"malformed",evidence:h}:{slot:i,state:"unanswered"}})}function qt(){const e=Je();switch(e.state){case"absent":return null;case"loading":return{state:"loading"};case"ready":return{state:"ready",dataFile:e.writer.dataFile};default:return{state:"failed",reason:e.reason}}}function te(){const e=G(),t=e?.coverage;if(!e||!t)return null;const n=Qe(),o=t.loop(),a=zt();return Ue({worldId:e.worldId,reach:t.reach,surface:e.kind,reachMechanism:t.reachMechanism,loop:o.loop,loopReason:o.reason,contract:Ke(a),systemAdapters:Ot(pe(),a,e.kind),ownership:n?{writable:n.writable,reason:n.reason??null,recorder:n.recorder??null}:null,dataWriter:qt(),projectVerbs:[],writeReach:t.writeReach?.()??null})}function Pn(e){const t=G();if(!t)return;t.coverage=e;const n=te();n&&Nt.report(Ge,n)}function Cn(e,t){if(!t)return;const n=`Ingest "${e}" loop: ${t.loop} — ${t.reason}`;t.loop==="gated"?P.log(n,"ingest"):P.warn(n,"adapter")}const Vt=["hierarchy","selection","transforms","inspector","assetSubject","structure","persistence","pickable","rects","boxEdit","text","colorSample","stories","truth","assetDrop"];function Ut(e){return Vt.filter(t=>e[t]!==void 0)}function Ln(e){return{coverage:()=>te(),prepareCoverage:()=>Xe(),authoringProviders:()=>Ut(e),engineSystems:()=>Object.keys(pe())}}function An(e,t){Object.defineProperties(e,{loop:{enumerable:!0,get:()=>t.realmLoopVerdict?.()?.loop??null},loopReason:{enumerable:!0,get:()=>t.realmLoopVerdict?.()?.reason??null}}),e.realmLoopStats=()=>ht()?.stats()??null}function kn(e,t){const n=e,o=typeof n.querySelectorAll=="function"?n.querySelectorAll("*").length:t.nodeCount(),a=Object.keys(e).some(u=>u.startsWith("__reactContainer"));return{elementCount:o,hierarchyNodeCount:t.nodeCount(),reactRootPresent:a}}function xn(e,t){window[e]=t}function ne(e){delete window[e]}function Me(){Et(null);const e=G();if(e){Jt(null),jt();try{Z()?.lifecycle?.dispose?.()}catch(t){P.error(`The game's own lifecycle.dispose threw at teardown: ${t}`,"ingest")}for(let t=e.siblings.length-1;t>=0;t--)try{e.siblings[t].dispose()}catch(n){P.error(`Composite sibling dispose failed: ${n}`,"ingest")}switch(e.kind){case"three":Kt(e.session);return;case"canvas":Yt(e.session);return;case"dom":Qt(e.session);return}}}function Kt(e){if(e.mount?.authoring&&e.mount.authoring.dispose?.(),W(null),O(null),q(),e.resizeObserver?.disconnect(),e.inputGateUnsubscribe?.(),e.mount)try{e.store.exitPlayScene()}catch{}e.store.shell.setPlayState("stopped");try{e.mount?.game.dispose()}catch{}Q("","The ingested game"),ne("__volterIngest"),P.log("Ingest root unmounted","ingest")}function Yt(e){e.adapter&&e.adapter.dispose(),W(null),O(null),q(),e.store.shell.setPlayState("stopped");try{e.dispose()}catch{}Q("","The ingested canvas game"),ne("__volterIngest2D"),P.log("canvas ingest root unmounted","ingest")}function Qt(e){e.adapter.dispose(),W(null),O(null),q(),e.store.shell.setPlayState("stopped");try{e.stop()}catch{}Q("","The ingested DOM game"),ne("__volterIngestReact"),P.log("DOM ingest root unmounted","ingest")}function Gn(){G()?.kind==="three"&&Me()}let j=null;function G(){return j}function Jt(e){j=e}function $e(){return j?.kind??null}function ve(){return $e()!==null}function Mn(e){j&&(j.siblings=[...e])}let ye=Promise.resolve();function $n(e){const t=ye.then(e);return ye=t.then(()=>{},()=>{}),t}We({id:"ingest",priority:1,mounted:ve,playing:()=>Dt()||ge(),stop:Me,instanceContainer:()=>null,frameCanvas:ke,snapshotFrame:()=>Mt(),command:e=>{const t=ve()?xe():null;return t?Ft(t,e.type,{stopEndsRun:ge()}):null},scenes:Gt,surface:$e,coverage:te,authoringRefusal:()=>j?.kind==="dom"?"This is an ingested native-React game: its components render directly as a DOM layer under the host React — there is no scene graph or renderer to introspect, and authoring is deliberately off for react ingests (the editor never writes JSX back into an unmodified game). The game is hosted, sized, and disposed; play it in the Game tab.":null});export{Q as $,un as A,an as B,Ct as C,Z as D,ln as E,At as F,rn as G,Ht as H,sn as I,pn as J,ht as K,Lt as L,Rn as M,N,Cn as O,Tn as P,An as Q,dn as R,Gt as S,hn as T,Wt as U,yn as V,_n as W,on as X,cn as Y,et as Z,ie as _,G as a,mn as a0,_t as a1,gn as a2,wn as b,Me as c,ge as d,vn as e,bn as f,xe as g,En as h,ve as i,Sn as j,Jt as k,fn as l,In as m,kn as n,Ln as o,xn as p,mt as q,Pn as r,$n as s,te as t,Dt as u,jt as v,Mn as w,$e as x,Gn as y,zt as z};
@@ -1 +0,0 @@
1
- import{J as i,r as m}from"./index-C5ZAyrKq.js";import{e as p}from"./game-network-DW5ARz4R.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-BlrALjM3.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-ggQWxtu-.js";import"./contract-system-adapters-Cn7OW_ay.js";import"./game-contract-seams-tyKDsfaP.js";import"./seeded-random-BJthDRMu.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-CYeuVCYr.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-bQE2NA0D.js";import"./live-project-verbs-CdFmLYOo.js";import"./capability-coverage-ByWftxk4.js";import"./edit-mode-authoring-D5f7aHHl.js";import"./json-history-resource-Uqrihfc8.js";import"./binding-resolver-DGbk9_XR.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-Do9J6nsb.js";import"./canvas-entry-runtime-BST8yRuK.js";import"./three-ingest-runtime-CwTqAHgX.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./active-ingest-0QjJWb7i.js";import"./ingest-source-persistence-6ShMoSCa.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-hRLF0BeO.js";import"./mounted-authoring-DxMISwvR.js";import"./entity-object-MKYemTFM.js";import"./user-data-C84W0V47.js";import"./workspace-arrangement-DqG5sUns.js";import"./three-contract-Dkt6PmWY.js";import"./three-DiL6vMXq.js";import"./editor-layers-D-CTUqco.js";import"./component-instance-root-DLI40MiB.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-CkLR2zGf.js";import"./source-persistence-backend-au3WtEn6.js";import"./three-projection-core-B7Lf8tOp.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-Cx8yhuwt.js";import"./deferred-ingest-play-B2JUlwlT.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-CnzxMtYz.js";import"./board-guides-CjHQ9Ynm.js";import"./relative-import-specifier-CPFTrxi4.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-Cz3Zyx_1.js";import"./inference-diagnostics-DLt9ql9I.js";import"./writer-tw6EcuVO.js";import"./three-state-BCACvUtm.js";import"./editor-shell-store-DHVWS8cE.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-BARIpMu-.js";const Mt="workspace.service";function e(o){p().catch(t=>{m().console.error(`${o}: ${t instanceof Error?t.message:String(t)}`,"play")})}function Rt(){let o,t=!1;const r=i(()=>{t||new URLSearchParams(window.location.search).get("play")==="1"&&(t=!0,o=window.setTimeout(()=>e("Could not enter requested Play mode"),0))});return()=>{o!==void 0&&window.clearTimeout(o),r()}}export{Mt as point,Rt as start};
@@ -1,3 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-C5ZAyrKq.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/editor-api-BM7H_F4G.js","assets/game-network-DW5ARz4R.js","assets/index-OZVqp6xS.js","assets/index-Da9JhEvW.js","assets/native-debug-module-BlrALjM3.js","assets/native-entry-surface-BE8LJNdu.js","assets/debug-registry-ggQWxtu-.js","assets/contract-system-adapters-Cn7OW_ay.js","assets/game-contract-seams-tyKDsfaP.js","assets/seeded-random-BJthDRMu.js","assets/game-audio-BeCyd0Ha.js","assets/rapier-physics-adapter-CaZqWLu0.js","assets/events-156d8d12.esm-CYeuVCYr.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/index-bQE2NA0D.js","assets/live-project-verbs-CdFmLYOo.js","assets/capability-coverage-ByWftxk4.js","assets/edit-mode-authoring-D5f7aHHl.js","assets/json-history-resource-Uqrihfc8.js","assets/binding-resolver-DGbk9_XR.js","assets/adapter-surface-Y37Nzcyw.js","assets/structural-signature-Dc7skRiy.js","assets/webgl-frame-capture-DdJkM2mi.js","assets/realm-services-Do9J6nsb.js","assets/canvas-entry-runtime-BST8yRuK.js","assets/three-ingest-runtime-CwTqAHgX.js","assets/EffectComposer-BEAt0PtQ.js","assets/CopyShader-BzTUYzf6.js","assets/ShaderPass-DTnDQXm0.js","assets/Pass-D1MRT672.js","assets/CSS3DRenderer-BsAqfavI.js","assets/relative-path-guard-GiM7Lsz8.js","assets/react-root-BHA-cdrW.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/active-ingest-0QjJWb7i.js","assets/ingest-source-persistence-6ShMoSCa.js","assets/pixi-story-model-DNkfnWUV.js","assets/surface-content-Dg9Kkazf.js","assets/viewport-root-presentation-hRLF0BeO.js","assets/mounted-authoring-DxMISwvR.js","assets/entity-object-MKYemTFM.js","assets/user-data-C84W0V47.js","assets/workspace-arrangement-DqG5sUns.js","assets/three-contract-Dkt6PmWY.js","assets/three-DiL6vMXq.js","assets/editor-layers-D-CTUqco.js","assets/component-instance-root-DLI40MiB.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/three-authoring-adapter-CkLR2zGf.js","assets/source-persistence-backend-au3WtEn6.js","assets/three-projection-core-B7Lf8tOp.js","assets/body-marks-C1LxJtQb.js","assets/user-data-CODoGZqA.js","assets/object-marks-BnvSuCTt.js","assets/structural-ids-BOo2BRoY.js","assets/object3d-authoring-subject-XccsO0xG.js","assets/r3f-physics-binding-Cx8yhuwt.js","assets/deferred-ingest-play-B2JUlwlT.js","assets/rrweb-Cd2ifIRP.js","assets/react-world-authoring-adapter-CnzxMtYz.js","assets/board-guides-CjHQ9Ynm.js","assets/relative-import-specifier-CPFTrxi4.js","assets/story-arg-descriptors-Ek86ExX7.js","assets/inspect-Cz3Zyx_1.js","assets/inference-diagnostics-DLt9ql9I.js","assets/writer-tw6EcuVO.js","assets/three-state-BCACvUtm.js","assets/editor-shell-store-DHVWS8cE.js","assets/output-pass-HurwNl0G.js","assets/viewport-door-BARIpMu-.js"])))=>i.map(i=>d[i]);
2
- import{a5 as _,j6 as $,j7 as N,j8 as f,j9 as g,ja as U,_ as R,jb as V,U as B,jc as M,O as C,jd as G,B as k}from"./index-C5ZAyrKq.js";import{g as l,a as b,A as D,B as j,C as F,d as O,D as x,E as q}from"./game-network-DW5ARz4R.js";import{e as H,c as z}from"./gameplay-replay-HRenPTtU.js";import{n as A,s as h}from"./command-results-CUQD49AB.js";import{z as K,i as y}from"./active-ingest-0QjJWb7i.js";import{g as W}from"./capability-coverage-ByWftxk4.js";import{w as Z,H as X}from"./debug-bridge-BD1XVAIB.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-BlrALjM3.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-ggQWxtu-.js";import"./contract-system-adapters-Cn7OW_ay.js";import"./game-contract-seams-tyKDsfaP.js";import"./seeded-random-BJthDRMu.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-CYeuVCYr.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-bQE2NA0D.js";import"./live-project-verbs-CdFmLYOo.js";import"./edit-mode-authoring-D5f7aHHl.js";import"./json-history-resource-Uqrihfc8.js";import"./binding-resolver-DGbk9_XR.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-Do9J6nsb.js";import"./canvas-entry-runtime-BST8yRuK.js";import"./three-ingest-runtime-CwTqAHgX.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-hRLF0BeO.js";import"./mounted-authoring-DxMISwvR.js";import"./entity-object-MKYemTFM.js";import"./user-data-C84W0V47.js";import"./workspace-arrangement-DqG5sUns.js";import"./three-contract-Dkt6PmWY.js";import"./three-DiL6vMXq.js";import"./editor-layers-D-CTUqco.js";import"./component-instance-root-DLI40MiB.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-CkLR2zGf.js";import"./source-persistence-backend-au3WtEn6.js";import"./ingest-source-persistence-6ShMoSCa.js";import"./three-projection-core-B7Lf8tOp.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-Cx8yhuwt.js";import"./deferred-ingest-play-B2JUlwlT.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-CnzxMtYz.js";import"./board-guides-CjHQ9Ynm.js";import"./relative-import-specifier-CPFTrxi4.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-Cz3Zyx_1.js";import"./inference-diagnostics-DLt9ql9I.js";import"./writer-tw6EcuVO.js";import"./three-state-BCACvUtm.js";import"./editor-shell-store-DHVWS8cE.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-BARIpMu-.js";import"./output-DK8waum9.js";const E=()=>_().debug!=null;function d(e,t,s){const a=new Error(t);return a.code=e,s&&(a.data=s),a}function S(e){return Array.isArray(e)?new Set(e.filter(t=>!!(t&&typeof t=="object"&&typeof t.name=="string")).map(t=>t.name)):new Set}function J(e,t,s,a,i){if(e==="commands"){const c=S(t);return Array.isArray(t)&&[...a].every(o=>c.has(o))}if(e==="providers"){const c=S(t);return Array.isArray(t)&&[...i].every(o=>c.has(o))}return s?e==="state"?i.has(s):e==="invoke"?a.has(s):!1:!1}function T(e,t,s){const a=K(),i=a?.systems;if(!a||!i)return;const c=new Set((i.commands??[]).map(n=>n.name)),o=new Set((i.state??[]).map(n=>n.name));J(e,t,s,c,o)&&f({seam:"contract.systems",subject:"game",epoch:W(a),stage:"operation",outcome:"pass",source:"consumer",detail:`the session wire consumed contract systems through debug.${e}`})}async function Q(e,t,s){let a;try{a=$(s).debug}catch(o){throw o instanceof N?d("INSTANCE_UNRESOLVED",`session wire: "${e}" — ${o.message}`,{instances:o.instances}):o}const i=()=>{if(!a)throw d("DEBUG_ADAPTER_UNAVAILABLE",`session wire: "${e}" — this game exposes no debug adapter`);return a},c=(o,n,r)=>{const u=i(),m=g(u);try{const p=r();return f({seam:`system.debug.${o}`,subject:"game",epoch:m,stage:n,outcome:"pass",source:"consumer",detail:`the session wire called debug.${o} and received its result`}),f({seam:"system.debug",subject:"game",epoch:m,stage:"operation",outcome:"pass",source:"consumer",detail:"the session wire consumed the mounted debug adapter"}),T(o,p,t[0]),p}catch(p){throw f({seam:`system.debug.${o}`,subject:"game",epoch:m,stage:n,outcome:"fail",source:"consumer",detail:`the session wire called debug.${o} and it failed: ${p instanceof Error?p.message:String(p)}`}),p}};switch(e){case"state":return c("state","operation",()=>i().state(t[0]));case"stateAll":return c("stateAll","operation",()=>i().stateAll());case"providers":return c("providers","operation",()=>i().providers());case"commands":return c("commands","operation",()=>i().commands());case"events":return c("events","operation",()=>i().events(t[0]));case"snapshot":{const o=i();return{time:c("state","operation",()=>o.state("time")),state:c("stateAll","operation",()=>o.stateAll()),events:c("events","operation",()=>o.events(t[0])),pageErrors:U()}}case"invoke":{const o=t[0],n=t[1]??[];try{const r=await i().invoke(o,n),u=i();return f({seam:"system.debug.invoke",subject:"game",epoch:g(u),stage:"effect",outcome:"pass",source:"consumer",detail:`the session wire invoked debug command "${o}" and received its result`}),f({seam:"system.debug",subject:"game",epoch:g(u),stage:"operation",outcome:"pass",source:"consumer",detail:"the session wire consumed the mounted debug adapter"}),T("invoke",r,o),r}catch(r){const u=i();throw f({seam:"system.debug.invoke",subject:"game",epoch:g(u),stage:"effect",outcome:"fail",source:"consumer",detail:`the session wire invoked debug command "${o}" and it failed: ${r instanceof Error?r.message:String(r)}`}),r}}case"runTicks":{const o=l();if(!o?.runTicks)throw d("RUN_TICKS_UNAVAILABLE","this play session has no first-party Game to run ticks on");const n=t[0],r=t[1];o.runTicks(n,r);return}case"runTicksSettled":{const o=l();if(!o?.runTicksSettled)throw d("RUN_TICKS_UNAVAILABLE","this play session has no first-party Game to run ticks on");const n=t[0],r=t[1];await o.runTicksSettled(n,r);return}case"input.setVirtualAction":case"input.tapVirtualAction":case"input.clearVirtualActions":case"input.startRecording":case"input.stopRecording":case"input.isRecording":{const o=l(),n=e==="input.setVirtualAction"?t[2]:e==="input.tapVirtualAction"?t[1]:t[0],r=o?o.getInputTarget(n):null;if(!r)throw d("DEBUG_INPUT_UNAVAILABLE",`session wire: ${e}() has no virtual-input target wired — no root entry exports \`debug.input\` (the game's own input door), or none has mounted yet`);if(e==="input.setVirtualAction")return r.setVirtualAction(t[0],t[1]);if(e==="input.tapVirtualAction")return r.tapVirtualAction(t[0]);if(e==="input.clearVirtualActions"){r.clearVirtualActions();return}if(e==="input.startRecording"){r.startInputRecording();return}if(e==="input.stopRecording"){r.stopInputRecording();return}return r.isInputRecording()}case"input.scheduleActionAtTick":{const o=l(),n=t[0],r=t[1],u=t[2],m=t[3],p=o?o.getInputTarget(m):null;if(!p)throw d("DEBUG_INPUT_UNAVAILABLE","session wire: input.scheduleActionAtTick() has no virtual-input target wired — no root entry exports `debug.input` (the game's own input door), or none has mounted yet");return p.scheduleActionAtTick(n,r,u)}case"input.injectPointerDelta":case"input.injectPointerPosition":{const o=l(),n=t[0],r=t[1],u=t[2],m=o?o.getInputTarget(u):null;if(!m)throw d("DEBUG_INPUT_UNAVAILABLE",`session wire: ${e}() has no virtual-input target wired — no root entry exports \`debug.input\` (the game's own input door), or none has mounted yet`);e==="input.injectPointerDelta"?m.injectPointerDelta(n,r):m.injectPointerPosition(n,r);return}case"holdFor":{const o=l(),n=t[2],r=o?o.getInputTarget(n):null;if(!r)throw d("DEBUG_INPUT_UNAVAILABLE","session wire: holdFor() has no virtual-input target wired — no root entry exports `debug.input` (the game's own input door), or none has mounted yet");const u=t[0],m=t[1],p=r.setVirtualAction(u,!0);if(!p.delivered)return r.clearVirtualActions(),{delivered:!1,reason:p.reason};const{stalled:v,starvedWithoutDriver:w}=await Z(i(),m,o?.runTicks?L=>o.runTicks?.(L,{render:"last"}):void 0);return r.clearVirtualActions(),v?{delivered:!1,reason:w?X:"play stopped during hold"}:{delivered:!0}}default:throw d("UNKNOWN_BRIDGE_METHOD",`session wire: unknown bridge method "${e}"`)}}async function Y(e){if(!b()&&!E())return y()?{ok:!1,error:"this ingest mount is live, but it publishes no debug plane — the mount installs no SystemAdapters.debug, so there is nothing to enumerate, read or drive through the game seam. Starting play will not change that; the game itself must declare the volter game contract (or carry a contract shim beside it) for these calls to have an answer."}:A();const t=e.method,s=e.callArgs??[];try{const a=e.instance;return{ok:!0,data:{result:await Q(t,s,a)}}}catch(a){return h(a)}}async function P(e){const{liveCanvasFrame:t}=await R(async()=>{const{liveCanvasFrame:s}=await import("./index-C5ZAyrKq.js").then(a=>a.tZ);return{liveCanvasFrame:s}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]));return t(e)}function ee(){const e=l();e?.loop.liveness==="loop-starved"&&e.runTicks?.(1,{render:"last"})}function I(e,t){const s=te();return{ok:!0,data:{base64:e,mimeType:"image/png",composite:t.composite,...t.layers?{layers:t.layers}:{},...t.flatness?{flatness:t.flatness}:{},...t.loopRecoveryFrame?{loopRecoveryFrame:!0}:{},...s?{recording:s}:{}}}}function te(){const e=F();return e?{path:e.path,startedAt:e.startedAt,notice:[`This run is being RECORDED — the still above is one frame of ${e.path}.`,"A still cannot answer a question about a moving game (did the jump land, did the shot","register). If that is the question, read the clip:","",` recording: ${e.path}${e.rotates?` (the next ${k("play")} replaces this file)`:" (named — never rotated)"}`,...e.format==="canvas-dom"?[` HUD replay: ${e.replayPath}`," The raw WebM contains the canvas only. Reconstruct HUD stills with"," editor.recording.captureReplay, or export a full video with editor.recording.exportReplay."]:[],` startedAt: ${e.startedAt} (clip offset 0)`,` play log: ${e.logFile===null?"(none — nothing is logging this run)":`logs/${e.logFile}`} (event timestamps → clip offsets)`,"","THE BAR for a temporal question: examine AT LEAST 10 frames spanning no more than 5","seconds around the moment. One frame, or ten frames spread across the run, is the same","guess a single screenshot was.","",`The clip is finalized and readable when play stops — ${k("stop")}, or the idle`,`auto-stop after ${Math.round(e.idleAutoStopMs/1e3)}s with no session command and no player input.`].join(`
3
- `)}:null}async function re(e){if(!b()&&!E()&&!y())return A();const t=e.instance,s=D(t),a=j(t),i=V(s).medium,c=l();let o=!1,n=null;if(a&&c?.loop.liveness==="loop-starved")if(e.refreshStarvedFrame===!0&&c.runTicks)try{c.runTicks(1,{render:"last"}),o=!0}catch(r){return h(r)}else return{ok:!1,error:"cannot capture a fresh game frame while the host loop reports 'loop-starved' — inspect the separate visibility readings, let presentation resume, or request a deterministic loop-recovery frame",data:{code:"BRIDGE_SCREENSHOT_STALE"}};if(s&&typeof Image<"u"&&typeof XMLSerializer<"u"&&typeof s.getBoundingClientRect=="function")try{const r=await B(s,{canvasFrame:P,...i==="unknown"?{}:{presentsOnCanvas:i==="canvas"}});if(r.layers.canvases===0&&r.layers.domOverlays===0)throw new M(i==="dom"?"dom-overlay":"composite-output","no game layers were mounted");return I(r.base64,{composite:!0,layers:r.layers,flatness:r.flatness,loopRecoveryFrame:o})}catch(r){n=r,C.warn(`Full-stack screenshot failed; returning the canvas-only fallback — ${r instanceof Error?r.message:String(r)}`,"screenshot")}if(!a){const r=n instanceof Error?n.message:String(n);return{ok:!1,error:n!==null?`full game-stack capture failed — ${r}; no canvas layer is available as a fallback`:y()?"the ingest mount is live but no DOM overlay or canvas layer is mounted for capture":"no play-mode DOM overlay or canvas layer is mounted yet",data:{code:"BRIDGE_SCREENSHOT_UNAVAILABLE"}}}try{const r=await R(()=>import("./index-C5ZAyrKq.js").then(w=>w.tZ),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),u=r.readablePngSource(await r.liveCanvasFrame(a))??a,m=u.toDataURL("image/png"),p=m.indexOf(","),v=p>=0?m.slice(p+1):m;return I(v,{composite:!1,flatness:G(u,a.ownerDocument),loopRecoveryFrame:o})}catch(r){return{ok:!1,error:`bridge-screenshot: canvas layer capture failed — ${r instanceof Error?r.message:String(r)}`+(n===null?"":`; full game-stack capture also failed — ${n instanceof Error?n.message:String(n)}`),data:{code:"BRIDGE_SCREENSHOT_UNAVAILABLE"}}}}const $t="workspace.command",Nt={"bridge-call":{timeoutMs:6e4,derivedRefresh:"always",handle:Y},"bridge-screenshot":{timeoutMs:15e3,derivedRefresh:"if-content-changed",handle:re},"bridge-recording-start":{timeoutMs:15e3,derivedRefresh:"none",handle:async e=>{if(!b()&&!E()&&!y())return A();const t=D();if(!t)return{ok:!1,error:"no play-mode game surface is mounted yet"};const s=_().audio?.acquireRecordingStream?.()??null;try{return{ok:!0,data:{...await x(t,{fps:typeof e.fps=="number"?e.fps:void 0,format:e.format==="canvas-dom"||e.format==="composite-webm"?e.format:void 0,name:typeof e.name=="string"||e.name===null?e.name:void 0,canvasFrame:P,refreshFrame:ee,audio:s})}}}catch(a){return h(a)}}},"bridge-recording-stop":{timeoutMs:6e4,derivedRefresh:"none",handle:async()=>{try{return{ok:!0,data:{...await O()}}}catch(e){return h(e)}}},"bridge-recording-timeline":{derivedRefresh:"none",handle:()=>{const e=q();return e===null?{ok:!1,error:"no gameplay recording is active"}:{ok:!0,data:{...e}}}},"bridge-recording-replay-capture":{timeoutMs:6e4,derivedRefresh:"none",handle:async e=>{try{return typeof e.replayPath!="string"?{ok:!1,error:"replayPath is required"}:typeof e.positionMs!="number"||!Number.isFinite(e.positionMs)?{ok:!1,error:"finite positionMs is required"}:{ok:!0,data:{...await z(e.replayPath,e.positionMs)}}}catch(t){return h(t)}}},"bridge-recording-replay-export":{timeoutMs:6e5,derivedRefresh:"none",handle:async e=>{try{if(typeof e.replayPath!="string")return{ok:!1,error:"replayPath is required"};const{blob:t,...s}=await H({replayPath:e.replayPath,...typeof e.fps=="number"?{fps:e.fps}:{},...typeof e.startMs=="number"?{startMs:e.startMs}:{},...typeof e.endMs=="number"?{endMs:e.endMs}:{}}),{beginGameplayRecordingSink:a,appendGameplayRecordingChunk:i,finishGameplayRecordingSink:c,abortGameplayRecordingSink:o}=await R(async()=>{const{beginGameplayRecordingSink:r,appendGameplayRecordingChunk:u,finishGameplayRecordingSink:m,abortGameplayRecordingSink:p}=await import("./editor-api-BM7H_F4G.js");return{beginGameplayRecordingSink:r,appendGameplayRecordingChunk:u,finishGameplayRecordingSink:m,abortGameplayRecordingSink:p}},__vite__mapDeps([10,0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80])),n=await a({startedAt:new Date().toISOString(),mimeType:"video/webm",purpose:"export",name:typeof e.name=="string"?e.name:`replay-export-${Date.now()}`});try{for(let r=0,u=0;r<t.size;r+=4*1024*1024,u++)await i(n,u,t.slice(r,r+4*1024*1024));await c(n,"post-processed canvas and DOM recording")}catch(r){throw await o(n),r}return{ok:!0,data:{...s,path:n.path}}}catch(t){return h(t)}}}};export{Nt as commands,$t as point};
@@ -1,2 +0,0 @@
1
- import{createGameModuleResolver as k,setFocusedInstanceProvider as M}from"./game-module-access-BTInp2NG.js";import{n as d}from"./command-results-CUQD49AB.js";import{i as g}from"./active-ingest-0QjJWb7i.js";import{a as y,u as h,v as w}from"./game-network-DW5ARz4R.js";import"./index-C5ZAyrKq.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"./game-contract-seams-tyKDsfaP.js";import"./capability-coverage-ByWftxk4.js";import"./ingest-source-persistence-6ShMoSCa.js";import"./contract-system-adapters-Cn7OW_ay.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-BlrALjM3.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-ggQWxtu-.js";import"./seeded-random-BJthDRMu.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-CYeuVCYr.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-bQE2NA0D.js";import"./live-project-verbs-CdFmLYOo.js";import"./edit-mode-authoring-D5f7aHHl.js";import"./json-history-resource-Uqrihfc8.js";import"./binding-resolver-DGbk9_XR.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-Do9J6nsb.js";import"./canvas-entry-runtime-BST8yRuK.js";import"./three-ingest-runtime-CwTqAHgX.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-hRLF0BeO.js";import"./mounted-authoring-DxMISwvR.js";import"./entity-object-MKYemTFM.js";import"./user-data-C84W0V47.js";import"./workspace-arrangement-DqG5sUns.js";import"./three-contract-Dkt6PmWY.js";import"./three-DiL6vMXq.js";import"./editor-layers-D-CTUqco.js";import"./component-instance-root-DLI40MiB.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-CkLR2zGf.js";import"./source-persistence-backend-au3WtEn6.js";import"./three-projection-core-B7Lf8tOp.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-Cx8yhuwt.js";import"./deferred-ingest-play-B2JUlwlT.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-CnzxMtYz.js";import"./board-guides-CjHQ9Ynm.js";import"./relative-import-specifier-CPFTrxi4.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-Cz3Zyx_1.js";import"./inference-diagnostics-DLt9ql9I.js";import"./writer-tw6EcuVO.js";import"./three-state-BCACvUtm.js";import"./editor-shell-store-DHVWS8cE.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-BARIpMu-.js";class E extends Error{member;supported;constructor(e,r,o){super(`playwright-shim: ${e}.${r} is not supported by the in-page shim. Supported ${e} members: ${o.join(", ")}. This shim is DOM-only — canvas gameplay input must use game.input.*, while React-only DOM games may use Page keyboard/locator input. See packages/editor/src/playwright-shim.ts for the full supported subset and the wire's closure-capture limitation.`),this.name="PageShimUnsupportedError",this.member=r,this.supported=o}}function v(t,e){const r=Object.keys(t);return new Proxy(t,{get(o,i,n){if(typeof i=="symbol"||i in o)return Reflect.get(o,i,n);throw new E(e,i,r)}})}function m(t){return t.replace(/\s+/g," ").trim()}function O(t){const e=t.tagName.toLowerCase();if(e==="button")return"button";if(e==="a"&&t.hasAttribute("href"))return"link";if(/^h[1-6]$/.test(e))return"heading";if(e==="textarea")return"textbox";if(e==="select")return"combobox";if(e==="img")return"img";if(e==="input"){const r=(t.getAttribute("type")??"text").toLowerCase();return r==="button"||r==="submit"||r==="reset"?"button":r==="checkbox"?"checkbox":r==="radio"?"radio":"textbox"}return null}function b(t){return t.getAttribute("role")??O(t)}function S(t){const e=t.getAttribute("aria-label");return e&&e.trim()?m(e):m(t.textContent??"")}function T(t,e){if(e===void 0)return!0;const r=S(t);return e instanceof RegExp?e.test(r):r===e}function x(t,e,r){return Array.from(t.querySelectorAll("*")).filter(i=>b(i)===e&&T(i,r?.name))}function I(t,e){const r=Array.from(t.querySelectorAll("*")).filter(n=>n.tagName!=="SCRIPT"&&n.tagName!=="STYLE"),o=n=>{const s=m(n.textContent??"");return s.length===0?!1:e instanceof RegExp?e.test(s):s.includes(e)},i=r.filter(o);return i.filter(n=>!i.some(s=>s!==n&&n.contains(s)))}function C(t,e){return Array.from(t.querySelectorAll("[data-testid]")).filter(r=>{const o=r.getAttribute("data-testid")??"";return e instanceof RegExp?e.test(o):o===e})}function L(t){if(!(t instanceof HTMLElement))return!0;if(t.hidden)return!1;const e=getComputedStyle(t);return e.display!=="none"&&e.visibility!=="hidden"&&e.opacity!=="0"}function _(t){const e=t.getBoundingClientRect?.()??{left:0,top:0,width:0,height:0},r=e.left+e.width/2,o=e.top+e.height/2,i={bubbles:!0,cancelable:!0,clientX:r,clientY:o,button:0};typeof PointerEvent<"u"&&t.dispatchEvent(new PointerEvent("pointerdown",{...i,pointerId:1,isPrimary:!0})),t.dispatchEvent(new MouseEvent("mousedown",i)),typeof PointerEvent<"u"&&t.dispatchEvent(new PointerEvent("pointerup",{...i,pointerId:1,isPrimary:!0})),t.dispatchEvent(new MouseEvent("mouseup",i)),t.dispatchEvent(new MouseEvent("click",i))}function N(t){const e=t instanceof HTMLTextAreaElement?HTMLTextAreaElement.prototype:HTMLInputElement.prototype,r=Object.getOwnPropertyDescriptor(e,"value");return o=>{r?.set?r.set.call(t,o):t.value=o}}function G(t,e){if(!(t instanceof HTMLInputElement)&&!(t instanceof HTMLTextAreaElement))throw new Error(`playwright-shim: fill() target is not an <input>/<textarea> (got <${t.tagName.toLowerCase()}>)`);t.focus(),N(t)(e),t.dispatchEvent(new Event("input",{bubbles:!0})),t.dispatchEvent(new Event("change",{bubbles:!0}))}const l=new Set(["Alt","Control","Meta","Shift"]);function p(t){return t!=="ControlOrMeta"?t:/Mac|iPhone|iPad/.test(navigator.platform)?"Meta":"Control"}function B(t){return/^[a-z]$/i.test(t)?`Key${t.toUpperCase()}`:/^[0-9]$/.test(t)?`Digit${t}`:t===" "?"Space":t}function K(t){const e=document.activeElement;return e instanceof HTMLElement&&t.contains(e)?e:t}function f(t,e,r,o){K(t).dispatchEvent(new KeyboardEvent(e,{key:r,code:B(r),bubbles:!0,cancelable:!0,altKey:o.has("Alt"),ctrlKey:o.has("Control"),metaKey:o.has("Meta"),shiftKey:o.has("Shift")}))}function F(t){const e=new Set,r=async i=>{const n=p(i);e.add(n),f(t,"keydown",n,e)},o=async i=>{const n=p(i);f(t,"keyup",n,e),e.delete(n)};return{down:r,up:o,async press(i){const n=i.split("+").map(p),s=n.filter(c=>l.has(c)),a=n.find(c=>!l.has(c));for(const c of s)await r(c);a&&(await r(a),await o(a));for(const c of s.reverse())await o(c)}}}function R(t){const e=[];function r(o,i){const n=b(o);if(n){const a=S(o);e.push(`${" ".repeat(i)}- ${n}${a?` "${a}"`:""}`)}const s=n?i+1:i;for(const a of Array.from(o.children))r(a,s)}for(const o of Array.from(t.children))r(o,0);return e.join(`
2
- `)}function u(t,e){const r=i=>{const n=t()[0];if(!n)throw new Error(`playwright-shim: ${i}() found no element for ${e}`);return n};return v({async click(){_(r("click"))},async fill(i){G(r("fill"),i)},async textContent(){const i=t()[0];return i?i.textContent??null:null},async evaluate(i,n){return i(r("evaluate"),n)},async count(){return t().length},async waitFor(i){const n=i?.timeout??5e3,s=i?.state??"visible",a=Date.now()+n;for(;;){const c=t()[0];if(c&&(s==="attached"||L(c)))return;if(Date.now()>=a)throw new Error(`playwright-shim: waitFor() timed out after ${n}ms waiting for ${e} to be ${s}`);await new Promise(P=>setTimeout(P,50))}},first(){return u(()=>t().slice(0,1),`${e}.first()`)},nth(i){return u(()=>{const n=t()[i];return n?[n]:[]},`${e}.nth(${i})`)},async ariaSnapshot(){return R(r("ariaSnapshot"))}},"Locator")}async function D(t,e){if(typeof t=="function")return t(e);if(typeof t=="string")return new Function("arg",`return (${t})(arg)`)(e);throw new Error("playwright-shim: evaluate() requires a function or a function-source string")}function A(t){const e={keyboard:F(t),evaluate:async(r,o)=>D(r,o),locator:r=>u(()=>Array.from(t.querySelectorAll(r)),`locator(${JSON.stringify(r)})`),getByRole:(r,o)=>u(()=>x(t,r,o),`getByRole(${JSON.stringify(r)}${o?.name!==void 0?`, {name: ${JSON.stringify(String(o.name))}}`:""})`),getByText:r=>u(()=>I(t,r),`getByText(${JSON.stringify(String(r))})`),getByTestId:r=>u(()=>C(t,r),`getByTestId(${JSON.stringify(String(r))})`),click:async r=>{await e.locator(r).click()},fill:async(r,o)=>{await e.locator(r).fill(o)},ariaSnapshot:async()=>R(t)};return v(e,"Page")}const ye="workspace.command";typeof window<"u"&&(M(w),window.__volterGameEval=async(t,e)=>{const r=await $({src:t,...e===void 0?{}:{instance:e}});if(!r.ok)throw new Error(r.error??"game-eval failed");return r.data?.result??null});async function $(t){if(!y()&&!g())return d();const e=t.src;if(typeof e!="string")return{ok:!1,error:`game-eval requires a string "src" (the step's toString())`};const r=h();if(!r)return{ok:!1,error:"game-eval: no play-mode game container is mounted yet",data:{code:"GAME_EVAL_ERROR"}};const o=t.instance,i=typeof o=="string"?o:void 0;let n;try{n=new Function("scope",`return (${e})(scope)`)}catch(a){return{ok:!1,error:`game-eval: failed to reconstruct the step function from source — ${a instanceof Error?a.message:String(a)}`,data:{code:"GAME_EVAL_ERROR"}}}const s={page:A(r),modules:k(i),instanceId:i??w()};try{const a=await n(s),c=a===void 0?null:a;try{JSON.stringify(c)}catch{return{ok:!1,error:`game-eval: the step returned an unserializable value (${Object.prototype.toString.call(c)}) — return plain data (numbers, strings, arrays, plain objects), not live module objects.`,data:{code:"GAME_EVAL_UNSERIALIZABLE"}}}return{ok:!0,data:{result:c}}}catch(a){return{ok:!1,error:`game-eval step failed: ${a instanceof Error?a.stack??a.message:String(a)}`,data:{code:"GAME_EVAL_ERROR"}}}}async function H(t){if(!y()&&!g())return d();const e=t.src;if(typeof e!="string")return{ok:!1,error:`page-script requires a string "src" (the step's toString())`};const r=h();if(!r)return{ok:!1,error:"page-script: no play-mode game container is mounted yet",data:{code:"PAGE_SCRIPT_ERROR"}};let o;try{o=new Function("page",`return (${e})(page)`)}catch(n){return{ok:!1,error:`page-script: failed to reconstruct the step function from source — ${n instanceof Error?n.message:String(n)}`,data:{code:"PAGE_SCRIPT_ERROR"}}}const i=A(r);try{const n=await o(i);return{ok:!0,data:{result:n===void 0?null:n}}}catch(n){return n instanceof E?{ok:!1,error:n.message,data:{code:"PAGE_SHIM_UNSUPPORTED",member:n.member,supported:[...n.supported]}}:{ok:!1,error:`page-script: step threw — ${n instanceof Error?n.message:String(n)}`,data:{code:"PAGE_SCRIPT_ERROR"}}}}const he={"game-eval":{timeoutMs:6e4,derivedRefresh:"always",handle:$},"page-script":{timeoutMs:6e4,derivedRefresh:"always",handle:H}};export{he as commands,ye as point};
@@ -1 +0,0 @@
1
- import{ab as m}from"./index-C5ZAyrKq.js";import{b as p,a as e,c as n,s}from"./game-network-DW5ARz4R.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-BlrALjM3.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-ggQWxtu-.js";import"./contract-system-adapters-Cn7OW_ay.js";import"./game-contract-seams-tyKDsfaP.js";import"./seeded-random-BJthDRMu.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-CYeuVCYr.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-bQE2NA0D.js";import"./live-project-verbs-CdFmLYOo.js";import"./capability-coverage-ByWftxk4.js";import"./edit-mode-authoring-D5f7aHHl.js";import"./json-history-resource-Uqrihfc8.js";import"./binding-resolver-DGbk9_XR.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-Do9J6nsb.js";import"./canvas-entry-runtime-BST8yRuK.js";import"./three-ingest-runtime-CwTqAHgX.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./active-ingest-0QjJWb7i.js";import"./ingest-source-persistence-6ShMoSCa.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-hRLF0BeO.js";import"./mounted-authoring-DxMISwvR.js";import"./entity-object-MKYemTFM.js";import"./user-data-C84W0V47.js";import"./workspace-arrangement-DqG5sUns.js";import"./three-contract-Dkt6PmWY.js";import"./three-DiL6vMXq.js";import"./editor-layers-D-CTUqco.js";import"./component-instance-root-DLI40MiB.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-CkLR2zGf.js";import"./source-persistence-backend-au3WtEn6.js";import"./three-projection-core-B7Lf8tOp.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-Cx8yhuwt.js";import"./deferred-ingest-play-B2JUlwlT.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-CnzxMtYz.js";import"./board-guides-CjHQ9Ynm.js";import"./relative-import-specifier-CPFTrxi4.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-Cz3Zyx_1.js";import"./inference-diagnostics-DLt9ql9I.js";import"./writer-tw6EcuVO.js";import"./three-state-BCACvUtm.js";import"./editor-shell-store-DHVWS8cE.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-BARIpMu-.js";const jt="workspace.command",a=()=>({ok:!1,error:"not in play mode — start play before using the debug seam"}),zt={"set-instance-count":{derivedRefresh:"always",handle:o=>{if(!e())return a();const r=o.names;if(Array.isArray(r)&&r.every(i=>typeof i=="string"))return r.length<1?{ok:!1,error:'set-instance-count "names" must have at least one entry.'}:(n(r),{ok:!0});const t=o.count;return typeof t!="number"||!Number.isFinite(t)||t<1?{ok:!1,error:`set-instance-count requires a whole "count" >= 1 (or a "names" array), got ${String(t)}.`}:(s(Math.floor(t)-1),{ok:!0})}},"list-instances":{derivedRefresh:"if-content-changed",handle:()=>({ok:!0,data:{instances:m(),named:p()}})}};export{zt as commands,jt as point};
@@ -1 +0,0 @@
1
- import{i as t}from"./game-network-DW5ARz4R.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-C5ZAyrKq.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./native-debug-module-BlrALjM3.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-ggQWxtu-.js";import"./contract-system-adapters-Cn7OW_ay.js";import"./game-contract-seams-tyKDsfaP.js";import"./seeded-random-BJthDRMu.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-CYeuVCYr.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-bQE2NA0D.js";import"./live-project-verbs-CdFmLYOo.js";import"./capability-coverage-ByWftxk4.js";import"./edit-mode-authoring-D5f7aHHl.js";import"./json-history-resource-Uqrihfc8.js";import"./binding-resolver-DGbk9_XR.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-Do9J6nsb.js";import"./canvas-entry-runtime-BST8yRuK.js";import"./three-ingest-runtime-CwTqAHgX.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./active-ingest-0QjJWb7i.js";import"./ingest-source-persistence-6ShMoSCa.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-hRLF0BeO.js";import"./mounted-authoring-DxMISwvR.js";import"./entity-object-MKYemTFM.js";import"./user-data-C84W0V47.js";import"./workspace-arrangement-DqG5sUns.js";import"./three-contract-Dkt6PmWY.js";import"./three-DiL6vMXq.js";import"./editor-layers-D-CTUqco.js";import"./component-instance-root-DLI40MiB.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-CkLR2zGf.js";import"./source-persistence-backend-au3WtEn6.js";import"./three-projection-core-B7Lf8tOp.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-Cx8yhuwt.js";import"./deferred-ingest-play-B2JUlwlT.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-CnzxMtYz.js";import"./board-guides-CjHQ9Ynm.js";import"./relative-import-specifier-CPFTrxi4.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-Cz3Zyx_1.js";import"./inference-diagnostics-DLt9ql9I.js";import"./writer-tw6EcuVO.js";import"./three-state-BCACvUtm.js";import"./editor-shell-store-DHVWS8cE.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-BARIpMu-.js";const yt="workspace.service";function zt(){t()}export{yt as point,zt as start};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/r3f-design-session-lsbFnoWH.js","assets/index-C5ZAyrKq.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/edit-mode-authoring-D5f7aHHl.js","assets/game-network-DW5ARz4R.js","assets/index-OZVqp6xS.js","assets/index-Da9JhEvW.js","assets/native-debug-module-BlrALjM3.js","assets/native-entry-surface-BE8LJNdu.js","assets/debug-registry-ggQWxtu-.js","assets/contract-system-adapters-Cn7OW_ay.js","assets/game-contract-seams-tyKDsfaP.js","assets/seeded-random-BJthDRMu.js","assets/game-audio-BeCyd0Ha.js","assets/rapier-physics-adapter-CaZqWLu0.js","assets/events-156d8d12.esm-CYeuVCYr.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/index-bQE2NA0D.js","assets/live-project-verbs-CdFmLYOo.js","assets/capability-coverage-ByWftxk4.js","assets/json-history-resource-Uqrihfc8.js","assets/binding-resolver-DGbk9_XR.js","assets/adapter-surface-Y37Nzcyw.js","assets/structural-signature-Dc7skRiy.js","assets/webgl-frame-capture-DdJkM2mi.js","assets/realm-services-Do9J6nsb.js","assets/canvas-entry-runtime-BST8yRuK.js","assets/three-ingest-runtime-CwTqAHgX.js","assets/EffectComposer-BEAt0PtQ.js","assets/CopyShader-BzTUYzf6.js","assets/ShaderPass-DTnDQXm0.js","assets/Pass-D1MRT672.js","assets/CSS3DRenderer-BsAqfavI.js","assets/relative-path-guard-GiM7Lsz8.js","assets/react-root-BHA-cdrW.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/active-ingest-0QjJWb7i.js","assets/ingest-source-persistence-6ShMoSCa.js","assets/pixi-story-model-DNkfnWUV.js","assets/surface-content-Dg9Kkazf.js","assets/viewport-root-presentation-hRLF0BeO.js","assets/mounted-authoring-DxMISwvR.js","assets/entity-object-MKYemTFM.js","assets/user-data-C84W0V47.js","assets/workspace-arrangement-DqG5sUns.js","assets/three-contract-Dkt6PmWY.js","assets/three-DiL6vMXq.js","assets/editor-layers-D-CTUqco.js","assets/component-instance-root-DLI40MiB.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/three-authoring-adapter-CkLR2zGf.js","assets/source-persistence-backend-au3WtEn6.js","assets/three-projection-core-B7Lf8tOp.js","assets/body-marks-C1LxJtQb.js","assets/user-data-CODoGZqA.js","assets/object-marks-BnvSuCTt.js","assets/structural-ids-BOo2BRoY.js","assets/object3d-authoring-subject-XccsO0xG.js","assets/r3f-physics-binding-Cx8yhuwt.js","assets/deferred-ingest-play-B2JUlwlT.js","assets/rrweb-Cd2ifIRP.js","assets/react-world-authoring-adapter-CnzxMtYz.js","assets/board-guides-CjHQ9Ynm.js","assets/relative-import-specifier-CPFTrxi4.js","assets/story-arg-descriptors-Ek86ExX7.js","assets/inspect-Cz3Zyx_1.js","assets/inference-diagnostics-DLt9ql9I.js","assets/writer-tw6EcuVO.js","assets/three-state-BCACvUtm.js","assets/editor-shell-store-DHVWS8cE.js","assets/output-pass-HurwNl0G.js","assets/viewport-door-BARIpMu-.js","assets/scene-framing-DkZKDwH3.js","assets/assets-BcrMQHRv.js","assets/loader-BTUKnX5Q.js","assets/KTX2Loader-CaqVE6nY.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/create-runtime-B_uTwsmi.js","assets/binding-Bmxqznjk.js","assets/root-stacking-BEd9ZvxC.js","assets/setup-renderer-F9mG7t6r.js","assets/index-DHhMOs_s.js","assets/defaults-DKiBJCPN.js","assets/render-settings-CRyDhHyz.js","assets/render-features-DMSV2qKJ.js","assets/loop-gate-report-N52EWFGD.js","assets/system-slot-E2mEdiih.js","assets/performance-profiler-CMbwGBuk.js","assets/live-gesture-lock-DJbrjOqf.js"])))=>i.map(i=>d[i]);
2
- import{_ as s,az as n}from"./index-C5ZAyrKq.js";import{r as a}from"./design-time-mount-registry-DUpXCg1U.js";import{q as c}from"./edit-mode-authoring-D5f7aHHl.js";import{a as u}from"./json-history-resource-Uqrihfc8.js";import{o as h}from"./three-authoring-adapter-CkLR2zGf.js";import{t as i}from"./editor-shell-store-DHVWS8cE.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./component-instance-root-DLI40MiB.js";import"./user-data-C84W0V47.js";import"./workspace-arrangement-DqG5sUns.js";import"./source-persistence-backend-au3WtEn6.js";import"./ingest-source-persistence-6ShMoSCa.js";import"./three-projection-core-B7Lf8tOp.js";import"./editor-layers-D-CTUqco.js";import"./three-DiL6vMXq.js";import"./entity-object-MKYemTFM.js";import"./three-contract-Dkt6PmWY.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three.core-3arARmh6.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./r3f-physics-binding-Cx8yhuwt.js";import"./output-pass-HurwNl0G.js";import"./three.module-BLhyNg0e.js";import"./Pass-D1MRT672.js";const U="workspace.service";function X(){const r=s(()=>import("./r3f-design-session-lsbFnoWH.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98]));r.catch(()=>{});const m=n("three",(t,o)=>h(i(t),()=>i(t).scene,o,u(o))),e=a({kind:"three",owner:"@volter/editor-game/three/three-authoring",async mountWorldRootSession(t){const o=t,{mountR3FDesignSession:p}=await r;return p(o.store,o.composite,o.renderer)}});return c(),()=>{e(),m()}}export{U as point,X as start};
@@ -1 +0,0 @@
1
- import{e as r}from"./three-integration-DXOFI88n.js";import"./index-C5ZAyrKq.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./host-hierarchy-objects-BV3WqU2w.js";import"./renderer-ownership-BovSEcLv.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./preview-renderer-BrYNFV1p.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./layered-pick-CAVQMPI7.js";import"./root-stacking-BEd9ZvxC.js";import"./user-data-C84W0V47.js";import"./workspace-arrangement-DqG5sUns.js";import"./model-thumbnail-BmQs-h6t.js";import"./studio-environment-R9qXUUcC.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./object3d-document-session-registry-CMRJdFp6.js";import"./three-state-BCACvUtm.js";import"./editor-shell-store-DHVWS8cE.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./editor-layers-D-CTUqco.js";import"./entity-object-MKYemTFM.js";import"./three-contract-Dkt6PmWY.js";import"./hierarchy-marks-BuCO8Ke-.js";import"./component-instance-root-DLI40MiB.js";import"./viewport-door-BARIpMu-.js";import"./content-bounds-DROIchTa.js";import"./asset-preview-DxlSdRZn.js";import"./bitmap-label-Ct4k6ehY.js";const Q="workspace.service";function R(){return r()}export{Q as point,R as start};
@@ -1 +0,0 @@
1
- const a={OPERATION_NOT_FOUND:"OPERATION_NOT_FOUND",INVALID_INPUT:"INVALID_INPUT",INVALID_OUTPUT:"INVALID_OUTPUT",INTERNAL_ERROR:"INTERNAL_ERROR"},m=Symbol.for("@volter/sdk.ToolError");class g extends Error{[m]=!0;code;data;constructor(e,o,r){super(o),this.name="ToolError",this.code=e,this.data=r}}function O(t){if(t instanceof g)return!0;if(t===null||typeof t!="object")return!1;const e=t;return e[m]===!0&&typeof e.code=="string"&&typeof e.message=="string"}function d(t){return t.map(e=>({path:[...e.path],message:e.message,code:e.code}))}const f=["project","editor","play","cinematic"],T=/^[a-z][a-zA-Z0-9]*(\.[a-z][a-zA-Z0-9]*)+$/;function N(t){const e=t.indexOf(".");return e===-1?t:t.slice(0,e)}function I(t){if(!T.test(t.name))throw new Error(`defineTool: "${t.name}" is not a valid dotted operation name (expected e.g. "project.scene.read" — lowercase-leading segments joined by dots).`);const e=N(t.name);if(!f.includes(e))throw new Error(`defineTool: "${t.name}" has unknown namespace "${e}" — expected one of ${f.join(", ")} (§5.7).`);const o=new Set;for(const r of t.errors){if(o.has(r.code))throw new Error(`defineTool: "${t.name}" declares duplicate error code "${r.code}".`);o.add(r.code)}return t}function R(t,e){if(O(e)){const r=t.errors.find(s=>s.code===e.code);if(!r)return{code:a.INTERNAL_ERROR,message:`"${t.name}" threw undeclared error code "${e.code}".`,data:{undeclaredCode:e.code,message:e.message}};if(r.data){const s=r.data.safeParse(e.data);return s.success?{code:e.code,message:e.message,data:s.data}:{code:a.INVALID_OUTPUT,message:`"${t.name}" threw declared code "${e.code}" but its data failed that code's own schema.`,issues:d(s.error.issues)}}return{code:e.code,message:e.message,...e.data!==void 0?{data:e.data}:{}}}const o=e instanceof Error?e.message:String(e);return{code:a.INTERNAL_ERROR,message:`"${t.name}" failed: ${o}`,data:{message:o}}}function h(t){const{impl:e,...o}=t;return o}function u(t,e,o=[]){if(Array.isArray(t)&&Array.isArray(e)){for(let s=0;s<t.length;s++){const n=u(t[s],e[s],[...o,s]);if(n)return n}return null}if(t===null||e===null||typeof t!="object"||typeof e!="object"||Array.isArray(t)||Array.isArray(e))return null;const r=e;for(const[s,n]of Object.entries(t)){if(!Object.hasOwn(r,s))return[...o,s];const i=u(n,r[s],[...o,s]);if(i)return i}return null}class A{definitions=new Map;register(e){if(this.definitions.has(e.name))throw new Error(`ToolRegistry.register: "${e.name}" is already registered — operation names must be unique and stable.`);this.definitions.set(e.name,e)}listOperations(){return[...this.definitions.values()].map(h)}getOperation(e){return this.definitions.get(e)}has(e){return this.definitions.has(e)}async dispatch(e,o,r={}){const s=this.definitions.get(e);if(!s)return{ok:!1,error:{code:a.OPERATION_NOT_FOUND,message:`No operation is registered as "${e}".`,data:{name:e}}};const n=s.input.safeParse(o);if(!n.success)return{ok:!1,error:{code:a.INVALID_INPUT,message:`Input for "${e}" failed schema validation.`,issues:d(n.error.issues)}};const i=u(o,n.data);if(i)return{ok:!1,error:{code:a.INVALID_INPUT,message:`Input for "${e}" contains an unknown field.`,issues:[{path:i,message:"Unknown input field. Check spelling; unknown fields are never ignored.",code:"unrecognized_key"}]}};let l;try{l=await s.impl(n.data,r)}catch(p){return{ok:!1,error:R(s,p)}}const c=s.result.safeParse(l);return c.success?{ok:!0,data:c.data}:{ok:!1,error:{code:a.INVALID_OUTPUT,message:`Result of "${e}" failed schema validation (implementation bug).`,issues:d(c.error.issues)}}}}export{g as ToolError,A as ToolRegistry,I as defineTool};
@@ -1 +0,0 @@
1
- import{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{r as t}from"./index-C5ZAyrKq.js";import{r as m}from"./index-nmcBqr7Y.js";import{P as p}from"./PlayBar-DsMitSgy.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./configurations-XP9YLkrt.js";import"./run-selection-B0jOdyYt.js";import"./game-network-DW5ARz4R.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-BlrALjM3.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-ggQWxtu-.js";import"./contract-system-adapters-Cn7OW_ay.js";import"./game-contract-seams-tyKDsfaP.js";import"./seeded-random-BJthDRMu.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-CYeuVCYr.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-bQE2NA0D.js";import"./live-project-verbs-CdFmLYOo.js";import"./capability-coverage-ByWftxk4.js";import"./edit-mode-authoring-D5f7aHHl.js";import"./json-history-resource-Uqrihfc8.js";import"./binding-resolver-DGbk9_XR.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-Do9J6nsb.js";import"./canvas-entry-runtime-BST8yRuK.js";import"./three-ingest-runtime-CwTqAHgX.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./active-ingest-0QjJWb7i.js";import"./ingest-source-persistence-6ShMoSCa.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-hRLF0BeO.js";import"./mounted-authoring-DxMISwvR.js";import"./entity-object-MKYemTFM.js";import"./user-data-C84W0V47.js";import"./workspace-arrangement-DqG5sUns.js";import"./three-contract-Dkt6PmWY.js";import"./three-DiL6vMXq.js";import"./editor-layers-D-CTUqco.js";import"./component-instance-root-DLI40MiB.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-CkLR2zGf.js";import"./source-persistence-backend-au3WtEn6.js";import"./three-projection-core-B7Lf8tOp.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-Cx8yhuwt.js";import"./deferred-ingest-play-B2JUlwlT.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-CnzxMtYz.js";import"./board-guides-CjHQ9Ynm.js";import"./relative-import-specifier-CPFTrxi4.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-Cz3Zyx_1.js";import"./inference-diagnostics-DLt9ql9I.js";import"./writer-tw6EcuVO.js";import"./three-state-BCACvUtm.js";import"./editor-shell-store-DHVWS8cE.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-BARIpMu-.js";const Cr="workspace.header",Dr=0;function Fr(){const{project:r}=t();return m.useSyncExternalStore(r.subscribe,r.mounts,r.mounts)?o.jsx(p,{}):null}export{Fr as default,Dr as order,Cr as point};
@@ -1,76 +0,0 @@
1
- /**
2
- * Loopback Colyseus server harness for headless multiplayer tests — a
3
- * near-verbatim copy of the engine repo's own
4
- * `packages/editor/test/helpers/colyseus-loopback.ts`, shipped INTO every
5
- * scaffolded project so a multiplayer game can prove itself headlessly:
6
- * a test under `tests/logic/` seats two peers and drives them. Driving a
7
- * second peer against the
8
- * RUNNING game is a different job, and its door is `volter-game-editor eval`.
9
- *
10
- * Starts the REAL `startColyseus` bootstrap (`./colyseus-setup.js`) with the
11
- * shipped room registry (`./rooms.js` — `ArenaRoom` + `GameRoom`) on an
12
- * OS-assigned ephemeral port, in-process. No mocks: this is the exact same
13
- * `Server` / `WebSocketTransport` a real `npm run server` would boot, just on
14
- * `port: 0` so concurrent test runs never collide on `2567`.
15
- *
16
- * Usage:
17
- * ```ts
18
- * const server = await startLoopbackColyseus();
19
- * try {
20
- * const client = new Client(server.url);
21
- * const room = await client.joinOrCreate('game_room', {}, undefined, undefined, {
22
- * allowDebugCommands: true,
23
- * });
24
- * // ...
25
- * } finally {
26
- * server.stop();
27
- * }
28
- * ```
29
- */
30
-
31
- import { startColyseus } from './colyseus-setup.js';
32
- import { rooms } from './rooms.js';
33
-
34
- export interface LoopbackColyseus {
35
- /** `ws://127.0.0.1:<port>` — the ephemeral port the server actually bound. */
36
- url: string;
37
- /** Tear down the server (closes the underlying HTTP/WS server). */
38
- stop: () => void;
39
- }
40
-
41
- /**
42
- * `@colyseus/core`'s matchmaker setup unconditionally `import("@pm2/io")`s and
43
- * registers metrics, which makes `@pm2/io` probe `process.send` and start
44
- * speaking the PM2 agent protocol (`axm:*` messages) over it. Under vitest's
45
- * forked worker pool, `process.send` is real (the runner's own parent<->child
46
- * channel), so those messages get relayed to the parent and crash its
47
- * deserializer — nothing to do with this test's own logic. Patch `process.send`
48
- * to drop only `axm:*` payloads for the harness's lifetime; everything else
49
- * (vitest's own protocol) passes through untouched.
50
- */
51
- function suppressPm2IoIpcNoise(): () => void {
52
- const original = process.send?.bind(process);
53
- if (!original) return () => {};
54
- const patched = (message: unknown, ...rest: unknown[]): boolean => {
55
- const type = (message as { type?: unknown } | null)?.type;
56
- if (typeof type === 'string' && type.startsWith('axm:')) return true;
57
- return (original as (...a: unknown[]) => boolean)(message, ...rest);
58
- };
59
- process.send = patched as NonNullable<typeof process.send>;
60
- return () => {
61
- process.send = original;
62
- };
63
- }
64
-
65
- /** Boot the real Colyseus server on an ephemeral loopback port. */
66
- export async function startLoopbackColyseus(): Promise<LoopbackColyseus> {
67
- const restorePm2IoIpc = suppressPm2IoIpcNoise();
68
- const handle = await startColyseus({ rooms, port: 0 });
69
- return {
70
- url: `ws://127.0.0.1:${handle.port}`,
71
- stop: () => {
72
- handle.stop();
73
- restorePm2IoIpc();
74
- },
75
- };
76
- }