@volter/game-editor 0.5.68 → 0.5.70

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 (551) hide show
  1. package/BUNDLED_NOTICES +10941 -5080
  2. package/LICENSE +9 -10
  3. package/LICENSE-BLENDER +2 -2
  4. package/NOTICE +2 -2
  5. package/additions/canvas/package.json +8 -0
  6. package/additions/canvas/src/canvas-mount.ts +46 -0
  7. package/additions/canvas/src/scene2d.tsx +18 -0
  8. package/catalog/entries/bake.json +1 -1
  9. package/catalog/entries/blender.json +3 -3
  10. package/catalog/entries/music.json +5 -5
  11. package/catalog/project-source/LICENSE +6 -6
  12. package/catalog/project-source/src/contributions/bake.kind.ts +2 -2
  13. package/catalog/project-source/src/contributions/builder-document.tsx +1 -1
  14. package/catalog/project-source/src/contributions/builder-ui.tsx +3 -3
  15. package/catalog/project-source/src/contributions/module-source.ts +4 -4
  16. package/catalog/project-source/src/lib/reflections/volume-reflection-material.ts +59 -59
  17. package/catalog/project-source/src/lib/static-batch/Frozen.tsx +1 -1
  18. package/catalog/project-source/src/lib/static-batch/mutation-watch.ts +1 -1
  19. package/catalog/project-source/src/tools/bake-preview.tool.ts +9 -9
  20. package/dist/.vite/manifest.json +4026 -4026
  21. package/dist/assets/{AssetBudgetPanel-P2PeL_X5.js → AssetBudgetPanel-DpXsaQ6w.js} +4 -4
  22. package/dist/assets/AudioViewer-BdTHfNhD.js +1 -0
  23. package/dist/assets/{CanvasBoardDocument-BFJdTVGp.js → CanvasBoardDocument-DY-7zohc.js} +1 -1
  24. package/dist/assets/CanvasSceneViewport-57CEFqSM.js +1 -0
  25. package/dist/assets/ColorInput-Co6tCY9p.js +1 -0
  26. package/dist/assets/{EntityModelDocument-Du8wIbyK.js → EntityModelDocument-C-lhKrxv.js} +1 -1
  27. package/dist/assets/{EnvironmentAssetDocument-_SttfMY_.js → EnvironmentAssetDocument-BNe6ANTN.js} +1 -1
  28. package/dist/assets/{GameplaySessionTimeline-CWudWnfd.js → GameplaySessionTimeline-CryFYfYN.js} +1 -1
  29. package/dist/assets/ImageViewer-DiD2yIG4.js +1 -0
  30. package/dist/assets/{InspectorCanvasPreview-CEr_Kxna.js → InspectorCanvasPreview-BrFjhoiD.js} +1 -1
  31. package/dist/assets/InspectorObjectPreview-BBVO8bDT.js +1 -0
  32. package/dist/assets/JsonAssetDocument-xyXetSbl.js +2 -0
  33. package/dist/assets/{LiveModuleDocument-BWjOzO_6.js → LiveModuleDocument-BiAunjHS.js} +1 -1
  34. package/dist/assets/{LutAssetDocument-DIc6nsht.js → LutAssetDocument-5sW-5rb0.js} +1 -1
  35. package/dist/assets/{ModelAssetDocument-_CqTsX_A.js → ModelAssetDocument-Bdy7x47a.js} +1 -1
  36. package/dist/assets/{NonThreeAuthoringBootstrap-C-V23E1e.js → NonThreeAuthoringBootstrap-BP-1bVEr.js} +1 -1
  37. package/dist/assets/Object3DDocumentToolbar-CvnSLDPI.js +1 -0
  38. package/dist/assets/Object3DDocumentViewport-BE_OPc8T.js +2 -0
  39. package/dist/assets/{Object3DPreview-BPHEr3vI.js → Object3DPreview-D3w_dKrX.js} +1 -1
  40. package/dist/assets/OnlineAssetDetail-BnT8_p1W.js +1 -0
  41. package/dist/assets/PlayBar-C8Mn-EI0.js +1 -0
  42. package/dist/assets/{QuarksAssetDocument-4Dne3EHx.js → QuarksAssetDocument-DLMH5Csk.js} +1 -1
  43. package/dist/assets/ReactCanvasControls-rNz8syVB.js +1 -0
  44. package/dist/assets/RootSelectionOverlay-Cn2Rbr1N.js +1 -0
  45. package/dist/assets/{ShaderAssetDocument-W3ZjLCkt.js → ShaderAssetDocument-CsJCsNfA.js} +4 -4
  46. package/dist/assets/ShadowEditor-jB05hr1W.js +1 -0
  47. package/dist/assets/{SourceAssetViewer-BGUeDAEv.js → SourceAssetViewer-D0NgGrER.js} +1 -1
  48. package/dist/assets/StageHost-B3Yt4I7r.js +2 -0
  49. package/dist/assets/{StoryPreviewMount-Di8uMovM.js → StoryPreviewMount-CzzRn24c.js} +1 -1
  50. package/dist/assets/ThreeBoardDocument-BoHTN4Vl.js +2 -0
  51. package/dist/assets/{ThreeIsolationSceneContent-BAKurKW5.js → ThreeIsolationSceneContent-BM-0S6J5.js} +1 -1
  52. package/dist/assets/{ToolObject3DPreview-CffvGJ1h.js → ToolObject3DPreview-BeM_kx_u.js} +1 -1
  53. package/dist/assets/Toolbar-BZyog9MR.js +1 -0
  54. package/dist/assets/{TransientHint-CgmkrmKF.js → TransientHint-RJEkOJoy.js} +1 -1
  55. package/dist/assets/VideoViewer-CxajgKrf.js +1 -0
  56. package/dist/assets/ViewportShadingMenu-S2lADFJg.js +1 -0
  57. package/dist/assets/active-ingest-CjZtqL7Q.js +3 -0
  58. package/dist/assets/{animation-clock-fLmY_3--.js → animation-clock-CWVW-mqY.js} +1 -1
  59. package/dist/assets/animation-mixers.service-CpoYw8cs.js +1 -0
  60. package/dist/assets/animation-timeline.utility-CEerojaB.js +1 -0
  61. package/dist/assets/{asset-budget-asset.menu-BDRDWrvx.js → asset-budget-asset.menu-Bk6scVWQ.js} +1 -1
  62. package/dist/assets/{asset-budget.action-tQmNGQHC.js → asset-budget.action-DtBDSfDj.js} +1 -1
  63. package/dist/assets/{asset-budget.document-BthgX37Z.js → asset-budget.document-R2zyoJ8E.js} +1 -1
  64. package/dist/assets/{asset-budget.menu-DfyWVH6p.js → asset-budget.menu-D6jza5Bc.js} +1 -1
  65. package/dist/assets/asset-editor-persistence-DrgwOZIW.js +1 -0
  66. package/dist/assets/asset-loaders-CUeYIjeH.js +2 -0
  67. package/dist/assets/{asset-preview-Cv7tfD98.js → asset-preview-CQfnI2cX.js} +1 -1
  68. package/dist/assets/{audio-unlock.service-BvHvZjzx.js → audio-unlock.service-W3UBKsw9.js} +1 -1
  69. package/dist/assets/audio.utility-qrXBdGXg.js +1 -0
  70. package/dist/assets/autoplay.service-DQD3Swo9.js +1 -0
  71. package/dist/assets/{babylon-authoring-adapter-Cg5ALSpr.js → babylon-authoring-adapter-CS9LZNmz.js} +1 -1
  72. package/dist/assets/binding-resolver-B9VI52zt.js +2 -0
  73. package/dist/assets/blender-emscripten-engine-Cd6az4pU.js +2 -0
  74. package/dist/assets/{blender-node-editor.document-B92MO51u.js → blender-node-editor.document-BWLFvA2g.js} +1 -1
  75. package/dist/assets/{blender-properties-tab-CDVyDAbf.js → blender-properties-tab-BSmWG9d0.js} +1 -1
  76. package/dist/assets/{blender-runtime-host-CuniE0sy.js → blender-runtime-host-Cbkie7m4.js} +2 -2
  77. package/dist/assets/{blender-runtime-skin-B_tOz5j5.js → blender-runtime-skin-C_ATCb-z.js} +7 -7
  78. package/dist/assets/{blender-runtime.document-DxUwLiEW.js → blender-runtime.document-P9zdgwMt.js} +7 -7
  79. package/dist/assets/{blender-timeline.document-BdEEoQbK.js → blender-timeline.document-DRwySEJO.js} +1 -1
  80. package/dist/assets/{blender-uv-editor.document-EMSUlRh4.js → blender-uv-editor.document-CmLoL2Vo.js} +1 -1
  81. package/dist/assets/blender-version.status-CP4Jqkry.js +1 -0
  82. package/dist/assets/blender-wali-engine-CZcS3eAd.js +2 -0
  83. package/dist/assets/{blender.command-BkBML2SY.js → blender.command-BYGm0Q_s.js} +1 -1
  84. package/dist/assets/blender.status-BMETIbb2.js +1 -0
  85. package/dist/assets/board-guides-BG-MHK2G.js +1 -0
  86. package/dist/assets/body-marks-C1LxJtQb.js +1 -0
  87. package/dist/assets/{bridge.command-VnplZ81v.js → bridge.command-DpUNErKN.js} +3 -3
  88. package/dist/assets/{browserAll-BCmkqg8n.js → browserAll-DES3i79H.js} +1 -1
  89. package/dist/assets/{build-player.document-DV7YcJQt.js → build-player.document-B42HrdSU.js} +1 -1
  90. package/dist/assets/build-profiles.document-Di5CQoH9.js +2 -0
  91. package/dist/assets/build-progress.status-B4te7-3j.js +1 -0
  92. package/dist/assets/{build-session-BGe0eGrQ.js → build-session-Yw4JoE8T.js} +2 -2
  93. package/dist/assets/{build.action-Bdj4ZEL_.js → build.action-B-DBpUj6.js} +1 -1
  94. package/dist/assets/{build.command-DAWiYvPa.js → build.command-CfWoHNp0.js} +1 -1
  95. package/dist/assets/build.header-BaURztYD.js +1 -0
  96. package/dist/assets/{build.menu-BiRNC_xc.js → build.menu-BFBn-dPJ.js} +1 -1
  97. package/dist/assets/{build.service-Dw9K6VSF.js → build.service-D8gYWB3n.js} +1 -1
  98. package/dist/assets/{camera-C-qXzXFf.js → camera-C-uR_xQp.js} +1 -1
  99. package/dist/assets/{camera-runtime.inspector-BDrwWRlU.js → camera-runtime.inspector-BOGGEqVq.js} +1 -1
  100. package/dist/assets/{canvas-design-mount-DLn49Zle.js → canvas-design-mount-DamLAaWn.js} +4 -4
  101. package/dist/assets/canvas-entry-runtime-a6N7Rsrj.js +2 -0
  102. package/dist/assets/{canvas-preview-frames-B5xFRjhQ.js → canvas-preview-frames-XbrKuyJu.js} +1 -1
  103. package/dist/assets/{canvas-story-capture.service-DQ_leYyi.js → canvas-story-capture.service-DYRdEzkG.js} +2 -2
  104. package/dist/assets/capability-coverage-7wKVA3PF.js +7 -0
  105. package/dist/assets/{collaboration-presence-BOS1t8wI.js → collaboration-presence-DaVKEfxs.js} +1 -1
  106. package/dist/assets/{collider-Bf4Uk6LW.js → collider-BEwlgkG5.js} +1 -1
  107. package/dist/assets/component-board.service-BWSBM2Bb.js +2 -0
  108. package/dist/assets/{component-board.service-DFSSCaCf.js → component-board.service-C9ZouakC.js} +2 -2
  109. package/dist/assets/{component-board.service-CpVXGhz5.js → component-board.service-D2eGKqHf.js} +2 -2
  110. package/dist/assets/component-contracts.service-D0uElctD.js +1 -0
  111. package/dist/assets/component-instance-root-C1Xf4SwR.js +1 -0
  112. package/dist/assets/{component-verbs.command-DGzZAV_Z.js → component-verbs.command-N-Tj8KOS.js} +1 -1
  113. package/dist/assets/{component-verbs.service-D1rVRogp.js → component-verbs.service-CWh4mQ7X.js} +1 -1
  114. package/dist/assets/{config-D-EAAhqP.js → config-hmmj-QHZ.js} +4 -4
  115. package/dist/assets/{configurations-_HZOWZPy.js → configurations-B9Pi_eRN.js} +1 -1
  116. package/dist/assets/connection.status-C2HPxoww.js +1 -0
  117. package/dist/assets/{constraint-5KLYpGm7.js → constraint-Bp1l8hY-.js} +1 -1
  118. package/dist/assets/constraints.inspector-D-h1f3K2.js +1 -0
  119. package/dist/assets/{content-bounds-DKBD7nsv.js → content-bounds-7UyI42Vj.js} +1 -1
  120. package/dist/assets/{contract-system-adapters-h6OUBRYA.js → contract-system-adapters-Bq1LGdjs.js} +1 -1
  121. package/dist/assets/coverage.service-BiBikIsV.js +3 -0
  122. package/dist/assets/{create-runtime-Bg2uYMfh.js → create-runtime-Cx-q5z2y.js} +2 -2
  123. package/dist/assets/curve-Co_mro-I.js +1 -0
  124. package/dist/assets/{data-asset-7Nfmx-28.js → data-asset-Ckx4D_U_.js} +1 -1
  125. package/dist/assets/data-check-core-CHqar_E8.js +1 -0
  126. package/dist/assets/data-ref-70PUrMuT.js +1 -0
  127. package/dist/assets/debug-bridge-CarsgKpm.js +1 -0
  128. package/dist/assets/debug-registry-DgYNlhH_.js +1 -0
  129. package/dist/assets/{deferred-ingest-play-Bej67_y9.js → deferred-ingest-play-Bpdhu2i-.js} +2 -2
  130. package/dist/assets/{design-time-canvas-mount-CFW9ZWuk.js → design-time-canvas-mount-Ca9Q75Ui.js} +2 -2
  131. package/dist/assets/design-time-layers-BIb71snu.js +1 -0
  132. package/dist/assets/{design-time-mount.service-DJeAPUB_.js → design-time-mount.service-DL6ZK2TQ.js} +2 -2
  133. package/dist/assets/{design-time-mount.service-_R1UDCw3.js → design-time-mount.service-zKUVjKAu.js} +2 -2
  134. package/dist/assets/design-time-react-mount-NrWimSxY.js +1 -0
  135. package/dist/assets/{document-preview-three-5cbuuJMH.js → document-preview-three-DoDs6q1q.js} +1 -1
  136. package/dist/assets/{dom-authoring-adapter-CoESNvrM.js → dom-authoring-adapter-adLQog9l.js} +1 -1
  137. package/dist/assets/{draco3d-Sk9K4AUT.js → draco3d-aUvQF1Zx.js} +1 -1
  138. package/dist/assets/{edit-mode-audio.service-CH6J-8N7.js → edit-mode-audio.service-CHZ1ultu.js} +1 -1
  139. package/dist/assets/edit-mode-authoring-ZQuUwc6e.js +1 -0
  140. package/dist/assets/{edit-mode-networking.service-C4o2pGHX.js → edit-mode-networking.service-C7fk2fL1.js} +1 -1
  141. package/dist/assets/editor-api-C8MUOrwt.js +1 -0
  142. package/dist/assets/{editor-layers-B4oYfpj8.js → editor-layers-CGX7iCSP.js} +1 -1
  143. package/dist/assets/editor-presentation-activity-CqJH4G9t.js +1 -0
  144. package/dist/assets/{editor-shell-store-Bh1S7M54.js → editor-shell-store-BRqB1JZO.js} +1 -1
  145. package/dist/assets/{entity-object-B_5Gc0Ky.js → entity-object--ZpqIat7.js} +1 -1
  146. package/dist/assets/{extend-DcEyE5jI.js → extend-BZQIQ18F.js} +1 -1
  147. package/dist/assets/{fork-menu-CKjNh3MO.js → fork-menu-CziehkPx.js} +1 -1
  148. package/dist/assets/{frame-debugger-store-D5YViF_8.js → frame-debugger-store-BOQjrPsh.js} +1 -1
  149. package/dist/assets/game-audio-BeCyd0Ha.js +1 -0
  150. package/dist/assets/{game-contract-seams-C0AVYwvO.js → game-contract-seams-Dgqv6S8X.js} +1 -1
  151. package/dist/assets/{game-css-scope-transform-8GOvVu1s.js → game-css-scope-transform-anfk8vP_.js} +2 -2
  152. package/dist/assets/game-document.service-CqmgrRUA.js +1 -0
  153. package/dist/assets/game-eval.command-CoetFm6_.js +2 -0
  154. package/dist/assets/game-module-access-Cg1EB8Mx.js +1 -0
  155. package/dist/assets/game-network-BqI-Ehz0.js +22 -0
  156. package/dist/assets/{gameplay-export-K5AcStVC.js → gameplay-export-D0hZoeSg.js} +1 -1
  157. package/dist/assets/gameplay-replay-BHz6VAVa.js +1 -0
  158. package/dist/assets/{gameplay.command-DoWqBWhH.js → gameplay.command-CPc9GKuW.js} +1 -1
  159. package/dist/assets/generation-CdOATubd.css +1 -0
  160. package/dist/assets/{generation-jobs-CiabIfR0.js → generation-jobs-D-zXQNZI.js} +1 -1
  161. package/dist/assets/generation.service-Bwt9lQEG.js +1 -0
  162. package/dist/assets/{generations-DU9rCeQR.js → generations-d-U9lCVo.js} +1 -1
  163. package/dist/assets/generations.status-BQ8xhaLN.js +1 -0
  164. package/dist/assets/hierarchy-marks-CndAXtie.js +1 -0
  165. package/dist/assets/hierarchy-marks-CsTaTkc7.js +1 -0
  166. package/dist/assets/hosted-asset-materialization-r2vKfJGY.js +2 -0
  167. package/dist/assets/{ibl-override-material-CiKkaOTW.js → ibl-override-material-CMo_a49U.js} +1 -1
  168. package/dist/assets/index-BMxv2MNV.js +1 -0
  169. package/dist/assets/index-BPVnvJfX.js +1 -0
  170. package/dist/assets/{index-C4AUQbmq.js → index-BqzpzjSB.js} +1 -1
  171. package/dist/assets/{index-CC1puVjo.js → index-CMU7lnXk.js} +1 -1
  172. package/dist/assets/index-CPiRKiDC.css +1 -0
  173. package/dist/assets/{index-CaG87ZF-.js → index-Cr9NTnJp.js} +271 -270
  174. package/dist/assets/index-DSMLYme2.js +1 -0
  175. package/dist/assets/index-DoGlzvsX.js +1 -0
  176. package/dist/assets/{index-BsYc2Oyj.js → index-dlvCCB72.js} +1 -1
  177. package/dist/assets/{index-Kb9_s5aP.js → index-xjc_62Ha.js} +1 -1
  178. package/dist/assets/{index-C20Flc1s.js → index-z0_InXxO.js} +2 -2
  179. package/dist/assets/{inference-diagnostics-MGcIHEX6.js → inference-diagnostics-D5jfxI5p.js} +1 -1
  180. package/dist/assets/{ingest-boot-viewport-D2okO6JI.js → ingest-boot-viewport-Be0v44yf.js} +1 -1
  181. package/dist/assets/ingest-siblings-BowXSozE.js +1 -0
  182. package/dist/assets/ingest-source-persistence-BGIvThcv.js +1 -0
  183. package/dist/assets/ingest.service-wVm-ZcTI.js +1 -0
  184. package/dist/assets/{inspect-C8RP8G5F.js → inspect-CN92MgRT.js} +1 -1
  185. package/dist/assets/inspection-D8fZOHCM.js +1 -0
  186. package/dist/assets/instances.command-B6gJuL1Z.js +1 -0
  187. package/dist/assets/{json-history-resource-CTXRV4GD.js → json-history-resource-C9G_vCX9.js} +1 -1
  188. package/dist/assets/{layered-pick-B_-BRrRD.js → layered-pick-D9tIz_m7.js} +1 -1
  189. package/dist/assets/{light-CskDQ8gF.js → light-BGbl1a8K.js} +1 -1
  190. package/dist/assets/{live-project-verbs-BOAQN3ME.js → live-project-verbs-p1sdTwhF.js} +1 -1
  191. package/dist/assets/{machine.document-BxOoCOo9.js → machine.document-C1acXU7l.js} +1 -1
  192. package/dist/assets/{machines.finder-CqEceWzS.js → machines.finder-sOxNTYPx.js} +1 -1
  193. package/dist/assets/material-D7289cYI.js +1 -0
  194. package/dist/assets/{material-factory-qB9pzcQf.js → material-factory-D0T-DH8c.js} +1 -1
  195. package/dist/assets/{mesh-5--4qA-C.js → mesh-1A-HHxD6.js} +1 -1
  196. package/dist/assets/model-asset-sections-D1uxOu2v.css +1 -0
  197. package/dist/assets/model-asset-sections.service-DF-mllTL.js +1 -0
  198. package/dist/assets/{model-inspection-MrJY0U_-.js → model-inspection-CuVwNVvv.js} +1 -1
  199. package/dist/assets/{model-thumbnail-uk-2sblh.js → model-thumbnail-xm1Fabi2.js} +1 -1
  200. package/dist/assets/{models.finder-rk8dhgO8.js → models.finder-DrvU1qGk.js} +1 -1
  201. package/dist/assets/module-mode-BHOAAbgO.js +2 -0
  202. package/dist/assets/mount-canvas-ingest-root-aVZkVNh4.js +2 -0
  203. package/dist/assets/mount-dom-ingest-root-eOOGPaxi.js +2 -0
  204. package/dist/assets/{mount-ingest-root-BC3-1Cw1.js → mount-ingest-root-BsWbEvr_.js} +2 -2
  205. package/dist/assets/{mount-manifest-QJOB11Kv.js → mount-manifest-t6ipNsoF.js} +1 -1
  206. package/dist/assets/mount-readiness-DyAd17pe.js +4 -0
  207. package/dist/assets/mount-three-ingest-root-DIR0wKrN.js +1 -0
  208. package/dist/assets/{mounted-authoring-B7RL_V28.js → mounted-authoring-DX3DC9PJ.js} +1 -1
  209. package/dist/assets/{mounted-story-viewport-source-CnYhX3vW.js → mounted-story-viewport-source-D8FqGpci.js} +1 -1
  210. package/dist/assets/{native-debug-module-B-rWJfWE.js → native-debug-module-CB738yQu.js} +1 -1
  211. package/dist/assets/{navigation-BVu-aVmF.js → navigation-B9ihB0qU.js} +1 -1
  212. package/dist/assets/{navmesh.menu-C3M63eR4.js → navmesh.menu-CPxr9LPT.js} +1 -1
  213. package/dist/assets/{navmesh.service-B0H1fUfn.js → navmesh.service-BAtili_Y.js} +1 -1
  214. package/dist/assets/network-observer.service-CqTuZNtI.js +1 -0
  215. package/dist/assets/network.utility-CclYEmfV.js +1 -0
  216. package/dist/assets/object-marks-BnvSuCTt.js +1 -0
  217. package/dist/assets/{object3d-authoring-subject-BDrxd1GA.js → object3d-authoring-subject-XccsO0xG.js} +1 -1
  218. package/dist/assets/{object3d-document-session-registry-OjqzJ86S.js → object3d-document-session-registry-BWeuL0nf.js} +2 -2
  219. package/dist/assets/{oid-transform-Bzc2ZJSH.js → oid-transform-BYeAsBKI.js} +1 -1
  220. package/dist/assets/{particles-Be7AvO4c.js → particles-BXiQDiB-.js} +1 -1
  221. package/dist/assets/{performance-profiler-OwnXQX0M.js → performance-profiler-CMbwGBuk.js} +1 -1
  222. package/dist/assets/pixi-authoring-adapter-CPsN0Yk7.js +1 -0
  223. package/dist/assets/pixi-live-write-target-BUbt5ixX.js +1 -0
  224. package/dist/assets/{play.command-CIGRq8ow.js → play.command-Bz5Ra6Uj.js} +2 -2
  225. package/dist/assets/pose-guard-CLabLSzf.js +1 -0
  226. package/dist/assets/presentation-C7ZHYsKF.js +1 -0
  227. package/dist/assets/{product-BN31wSnB.js → product-MSpbAqgo.js} +1 -1
  228. package/dist/assets/{profiler.action-D57Kj9ym.js → profiler.action-1Jbc-7Q4.js} +1 -1
  229. package/dist/assets/{profiler.menu-Dh9Q5DDx.js → profiler.menu-C544DxWZ.js} +1 -1
  230. package/dist/assets/profiler.utility-QnzedS3X.js +1 -0
  231. package/dist/assets/{project-authoring-session-LCJAwGrD.js → project-authoring-session-BhNfg7TY.js} +2 -2
  232. package/dist/assets/project-provenance-BGnJXJwa.js +1 -0
  233. package/dist/assets/{properties-bone-constraints.inspector-CaIDq5nN.js → properties-bone-constraints.inspector-DRCPfugt.js} +1 -1
  234. package/dist/assets/{properties-bone.inspector-D2fcQGMF.js → properties-bone.inspector-CYHeZX0p.js} +1 -1
  235. package/dist/assets/{properties-collection.inspector-CF5AtTAd.js → properties-collection.inspector-DtGhPkiU.js} +1 -1
  236. package/dist/assets/{properties-constraints.inspector-Bj2itDrS.js → properties-constraints.inspector-TIyIV777.js} +1 -1
  237. package/dist/assets/{properties-data.inspector-BfRqk0Xo.js → properties-data.inspector-vA0MTaup.js} +1 -1
  238. package/dist/assets/{properties-material.inspector-Bf8H0mvu.js → properties-material.inspector-C73spBQh.js} +1 -1
  239. package/dist/assets/{properties-modifiers.inspector-BKShc1TH.js → properties-modifiers.inspector-9oyLBBE0.js} +1 -1
  240. package/dist/assets/{properties-object.inspector-YBh8ABnN.js → properties-object.inspector-7BuiUgbd.js} +1 -1
  241. package/dist/assets/{properties-output.inspector-CVkzfs-l.js → properties-output.inspector-CjYAggz2.js} +1 -1
  242. package/dist/assets/{properties-particles.inspector-ChDpAq-2.js → properties-particles.inspector-DpSfjykX.js} +1 -1
  243. package/dist/assets/{properties-physics.inspector-BLEM7aMj.js → properties-physics.inspector-BUTvmfU9.js} +1 -1
  244. package/dist/assets/{properties-render.inspector-vU4D9xLL.js → properties-render.inspector-CEdsDqbI.js} +1 -1
  245. package/dist/assets/{properties-scene.inspector-C-DoN-kL.js → properties-scene.inspector-4kp0sLNw.js} +1 -1
  246. package/dist/assets/{properties-texture.inspector-DySxy1oU.js → properties-texture.inspector-Ckpqy9eo.js} +1 -1
  247. package/dist/assets/{properties-view-layer.inspector-DEKxMahJ.js → properties-view-layer.inspector-CQIFbY8-.js} +1 -1
  248. package/dist/assets/{properties-world.inspector-m5qL_TQV.js → properties-world.inspector-xZgNV6rI.js} +1 -1
  249. package/dist/assets/r3f-design-session-D8VF-hty.js +2 -0
  250. package/dist/assets/{r3f-physics-binding-Bgzzd4ol.js → r3f-physics-binding-oippu1v_.js} +1 -1
  251. package/dist/assets/{r3f-source-authoring-adapter-C8oMjdTL.js → r3f-source-authoring-adapter-CZJX6VLM.js} +1 -1
  252. package/dist/assets/react-canvas-navigation-DuzvnFoN.js +1 -0
  253. package/dist/assets/react-inspector.service-CV4p6nrb.js +1 -0
  254. package/dist/assets/react-story-board-mhldts6w.js +1 -0
  255. package/dist/assets/{react-three-rapier.esm-BR2ttgLS.js → react-three-rapier.esm-Bo9LjrZe.js} +1 -1
  256. package/dist/assets/react-world-authoring-adapter-CuyruDfq.js +1 -0
  257. package/dist/assets/{realm-services-DefTrXnY.js → realm-services-BtiLE3a-.js} +1 -1
  258. package/dist/assets/reflection-probe-capture.inspector-mrrOHs-9.js +1 -0
  259. package/dist/assets/{reflection-probe-BHNGwVyz.js → reflection-probe-sIto9mh0.js} +1 -1
  260. package/dist/assets/registry-DpUr2YIM.js +1 -0
  261. package/dist/assets/{relative-import-specifier-DQzkawgj.js → relative-import-specifier-CyT6yU4l.js} +1 -1
  262. package/dist/assets/{render-env-BZ7LsGfk.js → render-env-C63BGT5v.js} +1 -1
  263. package/dist/assets/{render-features-C7QwmhCo.js → render-features-CBl6rom9.js} +1 -1
  264. package/dist/assets/{render-settings-BBvkacR3.js → render-settings-DjarlnjI.js} +1 -1
  265. package/dist/assets/resolve-three-OiswFiIS.js +702 -0
  266. package/dist/assets/root-seam-contract-BYLQx4CQ.js +1 -0
  267. package/dist/assets/{run-selection-BUeubtHj.js → run-selection-BMu0v3qC.js} +1 -1
  268. package/dist/assets/scene-capture-BLf3lJ44.js +1 -0
  269. package/dist/assets/scene-document.service-CjPDph5k.js +2 -0
  270. package/dist/assets/{scene-framing-PVMqGU8h.js → scene-framing-BhNk0WhI.js} +1 -1
  271. package/dist/assets/{scene-index--lRWLEmW.js → scene-index-DHeKmalD.js} +1 -1
  272. package/dist/assets/{scene-query-s1y04OVB.js → scene-query-ByZtXA2m.js} +1 -1
  273. package/dist/assets/seeded-random-DmdE0u-C.js +1 -0
  274. package/dist/assets/{session-CTXsU1lK.js → session-CeyQA0Dv.js} +35 -35
  275. package/dist/assets/{setup-renderer-OOw1SykJ.js → setup-renderer-Bf8g2S0f.js} +1 -1
  276. package/dist/assets/{source-object3d-authoring-adapter-RmutT5Dt.js → source-object3d-authoring-adapter-IDRws2Nk.js} +1 -1
  277. package/dist/assets/{source-persistence-backend-HviqjKZ2.js → source-persistence-backend-Dzc6MsmN.js} +1 -1
  278. package/dist/assets/{spark-renderer-lifecycle-DfYpvEJa.js → spark-renderer-lifecycle-B6Axb6jm.js} +1 -1
  279. package/dist/assets/{stage-keyboard-DDi7S27C.js → stage-keyboard-CpnIYiph.js} +1 -1
  280. package/dist/assets/stage-overlay-set-BrJzOTCe.js +1 -0
  281. package/dist/assets/stage-presence-markers-BFTl9Djp.js +1 -0
  282. package/dist/assets/stage-transform-tools-QaenmSrC.js +1 -0
  283. package/dist/assets/standard-viewport-dressing-DuKH01r4.js +24 -0
  284. package/dist/assets/{state-watch.action-DEdb1mNa.js → state-watch.action-BaRZ6YII.js} +1 -1
  285. package/dist/assets/{state-watch.menu-jWbUM3kw.js → state-watch.menu-DR2AtQ6r.js} +1 -1
  286. package/dist/assets/state-watch.utility-VW8H9Fgi.js +1 -0
  287. package/dist/assets/{story-capture-Dj1xkeKH.js → story-capture-BEVV48wm.js} +1 -1
  288. package/dist/assets/story-documents-DndjqJ7Y.js +3 -0
  289. package/dist/assets/{story-documents.service-BzQCuNBu.js → story-documents.service-CPrZ7gRM.js} +1 -1
  290. package/dist/assets/{story-documents.service-iNP-ORNr.js → story-documents.service-wCVmBPhh.js} +1 -1
  291. package/dist/assets/{story-media-presence-zTPlU9HR.js → story-media-presence-BSX78yVJ.js} +1 -1
  292. package/dist/assets/{story-pixi-preview-B7THvSl7.js → story-pixi-preview-D4FuH7lJ.js} +1 -1
  293. package/dist/assets/{story-presentation-BLXYPadR.js → story-presentation-2AxtnKGb.js} +1 -1
  294. package/dist/assets/story-three-preview-DjObHSAF.js +2 -0
  295. package/dist/assets/{structural-ids-Br2zjINh.js → structural-ids-BOo2BRoY.js} +1 -1
  296. package/dist/assets/studio-environment-B--4k2mN.js +2 -0
  297. package/dist/assets/{surface-state-D9j6qNu8.js → surface-state-CQHVfsma.js} +1 -1
  298. package/dist/assets/{syntactic-prop-specs-BTnsMOvH.js → syntactic-prop-specs-CewRyC4c.js} +1 -1
  299. package/dist/assets/team-playtest.service-B9m6CNk7.js +1 -0
  300. package/dist/assets/{three-oYrcK5SQ.js → three-B86IzdNg.js} +1 -1
  301. package/dist/assets/three-authoring-adapter-BD8_MtYK.js +1 -0
  302. package/dist/assets/three-authoring.service-BjJ9wetk.js +2 -0
  303. package/dist/assets/{three-ingest-runtime-CXKjNysA.js → three-ingest-runtime-CXySzulx.js} +1 -1
  304. package/dist/assets/{three-integration-CuAnYaTW.js → three-integration-nl5TC6EF.js} +2 -2
  305. package/dist/assets/three-integration.service-BEk5QkKM.js +1 -0
  306. package/dist/assets/three-projection-core-D4m8lsPU.js +1 -0
  307. package/dist/assets/{three-state-wXRU3rLr.js → three-state-C36FeFK4.js} +1 -1
  308. package/dist/assets/{three-story-capture.service-DMJRcqjr.js → three-story-capture.service-C0icETyL.js} +2 -2
  309. package/dist/assets/{three-story-model-DgiAP-oQ.js → three-story-model-CqWu9S2a.js} +1 -1
  310. package/dist/assets/three-viewport-presentation-CCMgGLI2.js +141 -0
  311. package/dist/assets/tools-BnE3UWVA.js +1 -0
  312. package/dist/assets/transform-mode-request-CIgYj1Qb.js +1 -0
  313. package/dist/assets/transport-strip-B1AJKpn-.js +1 -0
  314. package/dist/assets/transport.header-D-n6dQ5n.js +1 -0
  315. package/dist/assets/{trigger-volume-DP0G1VBe.js → trigger-volume-BLkHmfm9.js} +1 -1
  316. package/dist/assets/tuples-uyiMYXrv.js +1 -0
  317. package/dist/assets/ui-board-document-6e4w4a8B.js +2 -0
  318. package/dist/assets/{user-data-CqOoAowZ.js → user-data-BXFD1jg-.js} +1 -1
  319. package/dist/assets/user-data-CODoGZqA.js +1 -0
  320. package/dist/assets/{utility-view-state-Db97zwDz.js → utility-view-state-I_o0WThv.js} +1 -1
  321. package/dist/assets/viewport-door-AsLxGhLN.js +1 -0
  322. package/dist/assets/{viewport-root-presentation-B35t51xX.js → viewport-root-presentation-B1qtThOB.js} +1 -1
  323. package/dist/assets/{viewport-surface-status-D5kZtFW5.js → viewport-surface-status-CWmQeKTO.js} +1 -1
  324. package/dist/assets/{webworkerAll-CfKEb4Ao.js → webworkerAll-DC445ANd.js} +1 -1
  325. package/dist/assets/worker-jepHAPPr.js +2 -0
  326. package/dist/assets/workspace-arrangement-dkubzCff.js +1 -0
  327. package/dist/assets/world-documents-psBK5u_2.js +1 -0
  328. package/dist/assets/world-root-stage-binding-BrvO8VMz.js +1 -0
  329. package/dist/assets/{xstate-animation-binding-aQEmNSpm.js → xstate-animation-binding-ChVFHSlM.js} +1 -1
  330. package/dist/assets/{xstate-animation-meta-CnMX1Sc1.js → xstate-animation-meta-D7xnhyCE.js} +1 -1
  331. package/dist/volter-shared-react.json +10 -0
  332. package/dist/volter-shared-three.json +3 -0
  333. package/dist-node/cli.js +247 -209
  334. package/dist-node/create.js +90 -74
  335. package/package.json +20 -19
  336. package/src/contributions.d.ts +1 -1
  337. package/src/index.ts +10 -10
  338. package/starter/cube.py +1 -1
  339. package/template/.agents/references/project-manual.md +17 -18
  340. package/template/.agents/skills/editor/SKILL.md +6 -6
  341. package/template/.agents/skills/editor/agents/openai.yaml +3 -3
  342. package/template/.agents/skills/editor/references/editor-control.md +62 -62
  343. package/template/.agents/skills/{vgai-3d-models → volter-3d-models}/SKILL.md +3 -3
  344. package/template/.agents/skills/{vgai-ingest-existing-game → volter-ingest-existing-game}/SKILL.md +3 -3
  345. package/template/.agents/skills/{vgai-music → volter-music}/SKILL.md +7 -7
  346. package/template/{.github/skills/vgai-threejs-authoring → .agents/skills/volter-threejs-authoring}/SKILL.md +9 -9
  347. package/template/.agents/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
  348. package/template/{.claude/skills/vgai-threejs-authoring → .agents/skills/volter-threejs-authoring}/references/helper-catalog.md +1 -1
  349. package/template/.claude/skills/editor/SKILL.md +6 -6
  350. package/template/.claude/skills/editor/agents/openai.yaml +3 -3
  351. package/template/.claude/skills/editor/references/editor-control.md +62 -62
  352. package/template/{.github/skills/vgai-3d-models → .claude/skills/volter-3d-models}/SKILL.md +3 -3
  353. package/template/{.github/skills/vgai-ingest-existing-game → .claude/skills/volter-ingest-existing-game}/SKILL.md +3 -3
  354. package/template/.claude/skills/{vgai-threejs-authoring → volter-threejs-authoring}/SKILL.md +9 -9
  355. package/template/.claude/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
  356. package/template/{.agents/skills/vgai-threejs-authoring → .claude/skills/volter-threejs-authoring}/references/helper-catalog.md +1 -1
  357. package/template/.github/copilot-instructions.md +1 -1
  358. package/template/.github/skills/editor/SKILL.md +6 -6
  359. package/template/.github/skills/editor/agents/openai.yaml +3 -3
  360. package/template/.github/skills/editor/references/editor-control.md +62 -62
  361. package/template/{.claude/skills/vgai-3d-models → .github/skills/volter-3d-models}/SKILL.md +3 -3
  362. package/template/{.claude/skills/vgai-ingest-existing-game → .github/skills/volter-ingest-existing-game}/SKILL.md +3 -3
  363. package/template/{.agents/skills/vgai-threejs-authoring → .github/skills/volter-threejs-authoring}/SKILL.md +9 -9
  364. package/template/.github/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
  365. package/template/.github/skills/{vgai-threejs-authoring → volter-threejs-authoring}/references/helper-catalog.md +1 -1
  366. package/template/.mcp.json +3 -3
  367. package/template/AGENTS.md +25 -25
  368. package/template/DEVLOG.md +1 -1
  369. package/template/IDIOMS.md +3 -3
  370. package/template/LICENSE +3 -3
  371. package/template/README.md +12 -13
  372. package/template/check-idioms.ts +71 -95
  373. package/template/manifest-entry-modules-plugin.ts +17 -4
  374. package/template/package.json +13 -15
  375. package/template/server/colyseus-setup.ts +1 -9
  376. package/template/server/main.ts +4 -9
  377. package/template/server/rooms/arena-room.ts +10 -10
  378. package/template/server/rooms/game-room.ts +10 -10
  379. package/template/server/rooms.ts +3 -5
  380. package/template/src/bot/QaTester.tsx +1 -1
  381. package/template/src/bot/bot-station.ts +2 -2
  382. package/template/src/bot/tester-station.ts +1 -1
  383. package/template/src/contributions/README.md +1 -1
  384. package/template/src/contributions/analytics.analytics.tsx +1 -1
  385. package/template/src/contributions/data.document.tsx +2 -2
  386. package/template/src/contributions/pages.finder.ts +1 -1
  387. package/template/src/contributions/tester.inspector.tsx +2 -2
  388. package/template/src/contributions/use-game-modules.ts +1 -1
  389. package/template/src/input.ts +1 -1
  390. package/template/src/lib/reflections/volume-reflection-material.ts +59 -59
  391. package/template/src/lib/static-batch/Frozen.tsx +1 -1
  392. package/template/src/lib/static-batch/mutation-watch.ts +1 -1
  393. package/template/src/main.ts +19 -38
  394. package/template/src/manifest-entry-modules.d.ts +12 -1
  395. package/template/src/net/NetworkedPlayers.tsx +3 -3
  396. package/template/src/prefabs/HeroBox.stories.tsx +1 -1
  397. package/template/src/world.tsx +1 -1
  398. package/template/tsconfig.json +1 -1
  399. package/template/validate-manifest.ts +3 -3
  400. package/template/vite.config.ts +12 -12
  401. package/template/{vgai.adapter.ts → volter.adapter.ts} +1 -1
  402. package/template/{vgai.project.json → volter.project.json} +2 -2
  403. package/template-dotfiles/gitignore +27 -27
  404. package/workbench/src/media/game-cover.css +11 -11
  405. package/workbench/src/product.contribution.ts +28 -28
  406. package/workbench/src/{vgaiGameSkew.ts → volterGameSkew.ts} +16 -16
  407. package/dist/assets/AudioViewer-xFb5Wv7A.js +0 -1
  408. package/dist/assets/CanvasSceneViewport-vqBlOz8P.js +0 -1
  409. package/dist/assets/ColorInput-CX1UZjYO.js +0 -1
  410. package/dist/assets/ImageViewer-shZzMd91.js +0 -1
  411. package/dist/assets/InspectorObjectPreview-BMOvJaOw.js +0 -1
  412. package/dist/assets/JsonAssetDocument-D_HXneWE.js +0 -2
  413. package/dist/assets/Object3DDocumentToolbar-BfPH9jz5.js +0 -1
  414. package/dist/assets/Object3DDocumentViewport-BaXWtATg.js +0 -2
  415. package/dist/assets/OnlineAssetDetail-BxibUH6K.js +0 -1
  416. package/dist/assets/PlayBar-DRANyO01.js +0 -1
  417. package/dist/assets/ReactCanvasControls-K98jOX9b.js +0 -1
  418. package/dist/assets/RootSelectionOverlay-BQC12Gdd.js +0 -1
  419. package/dist/assets/ShadowEditor-DP1LWynl.js +0 -1
  420. package/dist/assets/StageHost-V_0opXFt.js +0 -2
  421. package/dist/assets/ThreeBoardDocument-tgcaZDqQ.js +0 -2
  422. package/dist/assets/Toolbar-uLgsrB2z.js +0 -1
  423. package/dist/assets/VideoViewer-ClUJ6_uy.js +0 -1
  424. package/dist/assets/ViewportShadingMenu-Bdkc6jcd.js +0 -1
  425. package/dist/assets/active-ingest-CnAeQcuQ.js +0 -3
  426. package/dist/assets/animation-mixers.service-DiecMX_A.js +0 -1
  427. package/dist/assets/animation-timeline.utility-C71vPJgs.js +0 -1
  428. package/dist/assets/asset-editor-persistence-BQgjOCrm.js +0 -1
  429. package/dist/assets/asset-loaders-5PIUVvmH.js +0 -2
  430. package/dist/assets/audio.utility-D9Vk_WYS.js +0 -1
  431. package/dist/assets/autoplay.service-CFJoLPLw.js +0 -1
  432. package/dist/assets/binding-resolver-C_9MBSMa.js +0 -2
  433. package/dist/assets/blender-emscripten-engine-BeWFjMn-.js +0 -2
  434. package/dist/assets/blender-version.status-DtfwUahB.js +0 -1
  435. package/dist/assets/blender-wali-engine-da698rDf.js +0 -2
  436. package/dist/assets/blender.status-ujwGU6dU.js +0 -1
  437. package/dist/assets/board-guides-_3R1t_-2.js +0 -1
  438. package/dist/assets/body-marks-RKb_LTwL.js +0 -1
  439. package/dist/assets/build-profiles.document-CZxDuhzz.js +0 -2
  440. package/dist/assets/build-progress.status-Dk5u3C67.js +0 -1
  441. package/dist/assets/build.header--xqH6uTP.js +0 -1
  442. package/dist/assets/canvas-entry-runtime-DVeh71nC.js +0 -2
  443. package/dist/assets/capability-coverage-DQgg6UJe.js +0 -7
  444. package/dist/assets/component-board.service-DgujG90T.js +0 -2
  445. package/dist/assets/component-contracts.service-Bc_2Xxh_.js +0 -1
  446. package/dist/assets/component-instance-root-df4ofoOR.js +0 -1
  447. package/dist/assets/connection.status-CCX-mgmr.js +0 -1
  448. package/dist/assets/constraints.inspector-CwEEREsf.js +0 -1
  449. package/dist/assets/coverage.service-CV7b5Sqn.js +0 -3
  450. package/dist/assets/curve-BKuiAPpj.js +0 -1
  451. package/dist/assets/data-check-core-CQEjuFyt.js +0 -1
  452. package/dist/assets/data-ref-DyFQqqX6.js +0 -1
  453. package/dist/assets/debug-bridge-CESAxmlz.js +0 -1
  454. package/dist/assets/debug-registry-l7k5Hjc8.js +0 -1
  455. package/dist/assets/design-time-layers-CQgnmqc8.js +0 -1
  456. package/dist/assets/design-time-react-mount-CFvIk_rV.js +0 -1
  457. package/dist/assets/edit-mode-authoring-DBjaBTxM.js +0 -1
  458. package/dist/assets/editor-api-D2azVray.js +0 -1
  459. package/dist/assets/editor-presentation-activity-C7SNSmTd.js +0 -1
  460. package/dist/assets/game-audio-CaGKzia4.js +0 -1
  461. package/dist/assets/game-document.service-FdG_gFPU.js +0 -1
  462. package/dist/assets/game-eval.command-4wa9vqWE.js +0 -2
  463. package/dist/assets/game-module-access-DulnT3NH.js +0 -1
  464. package/dist/assets/game-network-Bo_nlDR5.js +0 -22
  465. package/dist/assets/gameplay-replay-CnWnlogY.js +0 -1
  466. package/dist/assets/generation-DhwCUHPf.css +0 -1
  467. package/dist/assets/generation.service-D2yeZaJu.js +0 -1
  468. package/dist/assets/generations.status-3CrPw_n5.js +0 -1
  469. package/dist/assets/hierarchy-marks-BLPfSIym.js +0 -1
  470. package/dist/assets/hierarchy-marks-C25dY2fR.js +0 -1
  471. package/dist/assets/hosted-asset-materialization-DYdcFlDf.js +0 -2
  472. package/dist/assets/index-B5WjeCHm.css +0 -1
  473. package/dist/assets/index-BcH5GC3b.js +0 -1
  474. package/dist/assets/index-CwCDkEl1.js +0 -1
  475. package/dist/assets/index-n3QdTv-T.js +0 -1
  476. package/dist/assets/index.module-Ycad3DJq.js +0 -1
  477. package/dist/assets/ingest-siblings-CkxW__go.js +0 -1
  478. package/dist/assets/ingest-source-persistence-6peGfPAS.js +0 -1
  479. package/dist/assets/ingest.service-Cc73WMIW.js +0 -1
  480. package/dist/assets/inspection-CObLhnrs.js +0 -1
  481. package/dist/assets/instances.command-CxKGnrNl.js +0 -1
  482. package/dist/assets/material-BwFzKPi0.js +0 -1
  483. package/dist/assets/model-asset-sections-CFvvihfx.css +0 -1
  484. package/dist/assets/model-asset-sections.service-TZ2SaBmH.js +0 -1
  485. package/dist/assets/module-mode-B79jV5tQ.js +0 -2
  486. package/dist/assets/mount-canvas-ingest-root-BhaYNuhY.js +0 -2
  487. package/dist/assets/mount-dom-ingest-root-BQb1u0LX.js +0 -2
  488. package/dist/assets/mount-readiness-Ds0HvvLH.js +0 -4
  489. package/dist/assets/mount-three-ingest-root-DIDBfvIH.js +0 -1
  490. package/dist/assets/network-observer.service-CiR4Q9Q0.js +0 -1
  491. package/dist/assets/network.utility-CNG3eJ0E.js +0 -1
  492. package/dist/assets/object-marks-DwvIEBOK.js +0 -1
  493. package/dist/assets/pixi-authoring-adapter-B42K4md-.js +0 -1
  494. package/dist/assets/pixi-live-write-target-D56tQEe_.js +0 -1
  495. package/dist/assets/pose-guard-DILO6gGq.js +0 -1
  496. package/dist/assets/presentation-DGBuGP6i.js +0 -1
  497. package/dist/assets/profiler.utility-DLNySW3w.js +0 -1
  498. package/dist/assets/project-provenance-4ldz-EOG.js +0 -1
  499. package/dist/assets/r3f-design-session-C0DPEChS.js +0 -2
  500. package/dist/assets/react-canvas-navigation-Jowa_lJq.js +0 -1
  501. package/dist/assets/react-inspector.service-TfTdj_Qk.js +0 -1
  502. package/dist/assets/react-story-board-Bx7qYytV.js +0 -1
  503. package/dist/assets/react-world-authoring-adapter-C1jPW_cN.js +0 -1
  504. package/dist/assets/reflection-probe-capture.inspector-C-6zrzZb.js +0 -1
  505. package/dist/assets/registry-Z28XSZHF.js +0 -1
  506. package/dist/assets/resolve-three-C7zDbK29.js +0 -702
  507. package/dist/assets/root-seam-contract-rGNbiX6q.js +0 -1
  508. package/dist/assets/scene-capture-BTWgUzhI.js +0 -1
  509. package/dist/assets/scene-document.service-DJJp-la1.js +0 -2
  510. package/dist/assets/seeded-random-38To73fI.js +0 -1
  511. package/dist/assets/stage-overlay-set-olkNSZmq.js +0 -1
  512. package/dist/assets/stage-presence-markers-cznMN_qq.js +0 -1
  513. package/dist/assets/stage-transform-tools-BDUZqRIR.js +0 -1
  514. package/dist/assets/standard-viewport-dressing-BZyuxyVl.js +0 -24
  515. package/dist/assets/state-watch.utility-DDmn3G25.js +0 -1
  516. package/dist/assets/story-documents-8ehMyYHo.js +0 -3
  517. package/dist/assets/story-three-preview-B1nNiPwP.js +0 -2
  518. package/dist/assets/studio-environment-yaKaHPxH.js +0 -2
  519. package/dist/assets/team-playtest.service-Ds9tkO4q.js +0 -1
  520. package/dist/assets/three-authoring-adapter-BrkGH4cd.js +0 -1
  521. package/dist/assets/three-authoring.service-DoamZDMx.js +0 -2
  522. package/dist/assets/three-integration.service-Db-VabIm.js +0 -1
  523. package/dist/assets/three-projection-core-jBJVt6O0.js +0 -1
  524. package/dist/assets/three-viewport-presentation-CgO3eWJ-.js +0 -141
  525. package/dist/assets/tools-B_NJsk05.js +0 -1
  526. package/dist/assets/transform-mode-request-BnKpgRUW.js +0 -1
  527. package/dist/assets/transport-strip-a9yLoPsI.js +0 -1
  528. package/dist/assets/transport.header-CpfoppXc.js +0 -1
  529. package/dist/assets/tuples-CKsHOV9T.js +0 -1
  530. package/dist/assets/ui-board-document-DtTR_mBr.js +0 -2
  531. package/dist/assets/user-data-dHvLdpwM.js +0 -1
  532. package/dist/assets/viewport-door-DVkMQazS.js +0 -1
  533. package/dist/assets/worker-CC9Ug5Ei.js +0 -2
  534. package/dist/assets/workspace-arrangement-DIMM7ska.js +0 -1
  535. package/dist/assets/world-documents-C4t3iOD-.js +0 -1
  536. package/dist/assets/world-root-stage-binding-ydl3JN1a.js +0 -1
  537. package/dist/vgai-shared-react.json +0 -10
  538. package/dist/vgai-shared-three.json +0 -3
  539. package/template/.agents/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
  540. package/template/.claude/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
  541. package/template/.github/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
  542. package/template/server/loopback.ts +0 -76
  543. /package/dist/assets/{vgai-shared-fontawesome-CU65D4Ij.js → volter-shared-fontawesome-CU65D4Ij.js} +0 -0
  544. /package/dist/assets/{vgai-shared-jsx-dev-runtime-DFDKL7fx.js → volter-shared-jsx-dev-runtime-DFDKL7fx.js} +0 -0
  545. /package/dist/assets/{vgai-shared-jsx-runtime-DIqBpTut.js → volter-shared-jsx-runtime-DIqBpTut.js} +0 -0
  546. /package/dist/assets/{vgai-shared-react-BT7rMc2H.js → volter-shared-react-BT7rMc2H.js} +0 -0
  547. /package/dist/assets/{vgai-shared-react-dom-DFajMqMT.js → volter-shared-react-dom-DFajMqMT.js} +0 -0
  548. /package/dist/assets/{vgai-shared-react-dom-client-S0ozfl6_.js → volter-shared-react-dom-client-S0ozfl6_.js} +0 -0
  549. /package/dist/assets/{vgai-shared-three-DH4yxKwt.js → volter-shared-three-DH4yxKwt.js} +0 -0
  550. /package/template/{.vgai → .volter}/assets.json +0 -0
  551. /package/template/{.vgai → .volter}/provenance.json +0 -0
@@ -1 +0,0 @@
1
- import{a as c}from"./jsx-runtime-DPjLkJKQ.js";import{d9 as L,da as X,eR as j,fk as H,aD as C,fT as $,fU as K,cw as A,fV as q,cx as M,eA as N,dl as Q,w as Z,fW as J,aO as ee,fX as te,fY as oe,fZ as ne,f_ as re,f$ as se,g0 as ae,fQ as ie,cz as ce,g1 as le,aw as de,g2 as P,g3 as ue,dj as pe}from"./index-CaG87ZF-.js";import{r as p}from"./index-nmcBqr7Y.js";import{d as fe,m as me}from"./design-time-layers-CQgnmqc8.js";import{I as be,B as xe}from"./edit-mode-authoring-DBjaBTxM.js";import{b as he,i as ge}from"./react-canvas-navigation-Jowa_lJq.js";import{R as _,i as ve}from"./react-story-board-Bx7qYytV.js";import{s as we,c as ye,a as Se,b as ke}from"./component-board-registry-DrIa2csL.js";import{e as Re,S as Ee}from"./surface-state-D9j6qNu8.js";import"./index-CtzuWnCS.js";import{c as Ie,d as Ce,r as F,e as G,f as Ae,m as O,b as De,a as je,s as Be}from"./board-guides-_3R1t_-2.js";import{C as V,a as $e,b as Me}from"./CanvasSceneViewport-vqBlOz8P.js";import{R as ze}from"./ReactCanvasControls-K98jOX9b.js";import{R as _e}from"./RootSelectionOverlay-BQC12Gdd.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./root-stacking-BEd9ZvxC.js";import"./design-time-mount-registry-DUpXCg1U.js";import"./Toolbar-uLgsrB2z.js";import"./transform-mode-request-BnKpgRUW.js";import"./TransientHint-CgmkrmKF.js";import"./layered-pick-B_-BRrRD.js";import"./eyedropper-session-bjPXnfeX.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./inspect-C8RP8G5F.js";import"./inference-diagnostics-MGcIHEX6.js";const w=16,z="rgba(255, 82, 82, 0.9)",U="rgba(18, 22, 26, 0.92)",D="rgba(255, 255, 255, 0.28)";function Te(s){return[10,25,50,100,250,500,1e3,2500,5e3].find(n=>n*s>=60)??1e4}function W(s){return Math.abs(s)>=1e3?`${s/1e3}k`:String(s)}function Ne({docId:s,containerRef:l}){const n=p.useSyncExternalStore(L,X),x=p.useSyncExternalStore(Ie,()=>Ce(s)),[r,d]=p.useState(null),v=p.useRef(null);p.useEffect(()=>{const t=l.current;if(!t)return;const o=t.getBoundingClientRect();return F(s,{originX:o.left,originY:o.top,panX:n.x,panY:n.y,zoom:n.zoom}),()=>F(s,null)},[s,l,n.x,n.y,n.zoom]);const f=(t,o)=>Math.round((t-(o==="x"?n.x:n.y))/n.zoom),u=(t,o)=>(o==="x"?n.x:n.y)+t*n.zoom,m=t=>{const o=l.current?.getBoundingClientRect();return o?{x:t.clientX-o.left,y:t.clientY-o.top}:{x:0,y:0}},k=t=>o=>{o.preventDefault(),o.currentTarget.setPointerCapture(o.pointerId);const e=m(o);d({kind:"place",axis:t,id:null,at:t==="x"?e.x:e.y})},S=t=>o=>{o.preventDefault(),o.stopPropagation(),o.currentTarget.setPointerCapture(o.pointerId);const e=m(o);d({kind:"move",axis:t.axis,id:t.id,at:t.axis==="x"?e.x:e.y})},R=t=>{if(!r)return;const o=m(t),e=r.axis==="x"?o.x:o.y;d({...r,at:e}),r.kind==="move"&&r.id&&O(s,r.id,f(e,r.axis))},E=t=>{if(!r)return;const o=m(t),e=r.axis==="x"?o.x:o.y,i=e<=w;r.kind==="place"?i||Ae(s,r.axis,f(e,r.axis)):r.id&&(i?G(s,r.id):O(s,r.id,f(e,r.axis))),d(null)},a=t=>{const o=l.current,e=o?t==="x"?o.clientWidth:o.clientHeight:0,i=Te(n.zoom),g=Math.ceil(f(w,t)/i)*i,y=f(e,t),b=[];for(let I=g;I<=y&&b.length<200;I+=i)b.push(I);return b},h={position:"absolute",background:U,zIndex:61,userSelect:"none",touchAction:"none",overflow:"hidden"};return c.jsxs("div",{ref:v,"data-testid":"board-rulers",style:{position:"absolute",inset:0,pointerEvents:"none",zIndex:60},onPointerMove:R,onPointerUp:E,children:[x.map(t=>{const o=u(t.value,t.axis),e=t.axis==="x";return c.jsx("div",{"data-testid":`board-guide-${t.axis}-${t.value}`,title:`${t.axis} = ${t.value} — drag to move, drop on the ruler or double-click to remove`,onPointerDown:S(t),onPointerMove:R,onPointerUp:E,onDoubleClick:()=>G(s,t.id),style:{position:"absolute",pointerEvents:"auto",cursor:e?"col-resize":"row-resize",zIndex:60,...e?{left:o-2,top:0,bottom:0,width:5}:{top:o-2,left:0,right:0,height:5}},children:c.jsx("div",{style:{position:"absolute",background:z,...e?{left:2,top:0,bottom:0,width:1}:{top:2,left:0,right:0,height:1}}})},t.id)}),r&&c.jsx("div",{style:{position:"absolute",background:z,zIndex:62,...r.axis==="x"?{left:r.at,top:0,bottom:0,width:1}:{top:r.at,left:0,right:0,height:1}},children:c.jsx("span",{style:{position:"absolute",...r.axis==="x"?{top:w+4,left:4}:{left:w+4,top:4},fontSize:9,fontFamily:"ui-monospace, monospace",color:z,background:U,padding:"1px 3px",borderRadius:3,whiteSpace:"nowrap"},children:f(r.at,r.axis)})}),c.jsx("div",{"data-testid":"board-ruler-top",onPointerDown:k("y"),style:{...h,top:0,left:w,right:0,height:w,cursor:"row-resize",pointerEvents:"auto"},children:a("x").map(t=>c.jsx("span",{style:{position:"absolute",left:u(t,"x"),bottom:0,borderLeft:`1px solid ${D}`,height:5},children:c.jsx("span",{style:{position:"absolute",left:2,bottom:3,fontSize:8,color:D,fontFamily:"ui-monospace, monospace"},children:W(t)})},t))}),c.jsx("div",{"data-testid":"board-ruler-left",onPointerDown:k("x"),style:{...h,top:w,left:0,bottom:0,width:w,cursor:"col-resize",pointerEvents:"auto"},children:a("y").map(t=>c.jsx("span",{style:{position:"absolute",top:u(t,"y"),right:0,borderTop:`1px solid ${D}`,width:5},children:c.jsx("span",{style:{position:"absolute",top:1,right:3,fontSize:8,color:D,fontFamily:"ui-monospace, monospace",writingMode:"vertical-rl"},children:W(t)})},t))}),c.jsx(Pe,{}),c.jsx("div",{style:{...h,top:0,left:0,width:w,height:w,borderRight:`1px solid ${j.border}`,borderBottom:`1px solid ${j.border}`}})]})}function Pe(){const s=p.useSyncExternalStore(De,je);return s?c.jsxs("button",{type:"button","data-testid":"board-breakpoint-pill",title:"Style edits are scoped to this breakpoint — click to return to Base",onClick:()=>Be(null),style:{position:"absolute",top:w+8,right:12,zIndex:62,pointerEvents:"auto",background:"rgba(18, 22, 26, 0.92)",color:j.accent,border:`1px solid ${j.accent}`,borderRadius:999,fontSize:10,padding:"3px 10px",cursor:"pointer"},children:["@ ",s," · editing this breakpoint — click to clear"]}):null}const Fe="Scene";function Ge({active:s,composite:l,descriptor:n,documentId:x,store:r}){const d=p.useRef(null),v=p.useRef(null),[f]=p.useState(oe),u=n.kind==="canvas",m=u?f:ce;p.useSyncExternalStore(r.subscribe,r.getSnapshot);const k=p.useSyncExternalStore(ne,re),S=p.useSyncExternalStore(se,ae),[R,E]=p.useState(null),a=l.childAdapters().find(b=>b.worldId===n.worldId)?.adapter??R??void 0,h=u&&a?.provenance?.label==="babylon",t=a?.hierarchy.roots()??[],o=new Set(a?.rects?.emptyContainers?.().map(b=>b.id)??[]),e=t.some(b=>!o.has(b.id)),i=Re({surface:u?"Scene":n.kind==="dom"?"UI":"World",rootIds:[n.worldId],playSuspended:r.playState!=="stopped"&&(!a||a.provenance?.source==="boundary"),phase:!a||a.provenance?.source==="boundary"?"loading":"ready",content:!a||a.provenance?.source==="boundary"?"unknown":e?"present":"empty",readiness:k,failures:S,disclosure:a instanceof xe?a.disclosure:null});p.useEffect(()=>{if(a)return ie(x,()=>({adapter:a,nodeId:[...r.selectedEntityIds].find(b=>a.hierarchy.node(b))??null}))},[l,a,x,r]),p.useEffect(()=>{const b=d.current;if(b&&!h)return u?he(b,m):ge(b,m)},[m,h,u]),p.useEffect(()=>{if(!s)return;if(!!!v.current&&d.current){v.current=me(d.current,l,r,[n],(Ve,Y)=>E(Y),u?{canvasSceneView:f}:void 0,x);return}let I=0,B=0;const T=()=>{if(I+=1,I<2){B=requestAnimationFrame(T);return}pe(x)};return B=requestAnimationFrame(T),()=>cancelAnimationFrame(B)},[s,f,l,n,x,u,r]),p.useEffect(()=>()=>{v.current?.(),v.current=null},[]);const g=le(de(r),r.selectedEntityIds),y=g?.worldId===n.worldId?g:a?.rects?{worldId:n.worldId,kind:"dom",adapter:a}:null;return c.jsxs("div",{ref:d,"data-testid":`world-document:${n.worldId}`,"data-vgai-backdrop-color":s?h?"#111827":u?V:_:void 0,"data-vgai-backdrop-policy":s?"dark-frost":void 0,onPointerDown:()=>ue("viewport"),style:{position:"absolute",inset:0,overflow:"hidden",pointerEvents:"auto",backgroundColor:h?"#111827":u?V:_,touchAction:"none"},children:[h?null:u?c.jsx($e,{view:f,documentId:x}):c.jsx(Oe,{}),c.jsx(_e,{...a?{adapter:a}:{},...u&&!h?{view:f,transformModeAware:!0,presentationId:x}:{}},`selection:${P(a)}`),c.jsx(Ee,{explanation:i,testId:`world-surface-status:${n.worldId}`,style:{zIndex:20}}),h?null:u?c.jsx(Me,{active:s,...a?{adapter:a}:{},containerRef:d,view:f,documentId:x},`controls:${P(a)}`):c.jsxs(c.Fragment,{children:[c.jsx(Ne,{docId:n.worldId,containerRef:d}),c.jsx(ze,{containerRef:d,context:y})]})]})}function Oe(){const s=p.useSyncExternalStore(L,X),l=Math.max(8,24*s.zoom),n=Math.max(.7,Math.min(1.4,s.zoom));return c.jsx("div",{"data-testid":"react-design-canvas-backdrop","aria-hidden":"true",style:{position:"absolute",inset:0,pointerEvents:"none",backgroundColor:_,backgroundImage:`radial-gradient(circle, ${ve} ${n}px, transparent ${n}px)`,backgroundPosition:`${s.x}px ${s.y}px`,backgroundSize:`${l}px ${l}px`}})}function gt(s,l){const n=Z(),x=l.childAdapters().some(e=>e.role==="world"&&e.kind==="three"),r=l.childAdapters().some(e=>e.kind===be);!x&&!r&&H(C,{discardDirty:!0});const d=new Set,v=[];let f=!1;for(const e of l.childAdapters())e.role==="world"&&e.kind==="three"&&v.push($(e.worldId,C));const u=fe(l),m=u.find(e=>e.kind==="canvas");m&&v.push($(m.worldId,A));const k=new Set([...l.childAdapters().filter(e=>e.role==="world"&&e.kind==="three"),...m?[m]:[]].map(e=>e.worldId)),S=new Map;function R(){for(const e of u){if(k.has(e.worldId)||S.has(e.worldId))continue;const i=Se(e.kind);if(!i)continue;const g=$(e.worldId,i.documentId),y=J(e.worldId,()=>i.presence()==="absent"?`Root "${e.worldId}" has no document of its own: its design surface is the project's ${i.title} board (${i.documentId}). ${i.absentReason()}`:null);S.set(e.worldId,()=>{y(),g()})}}v.push(K(e=>{const i=ee();if(i.some(y=>y.descriptor.id===e))return null;const g=ke(e);return g?g.presence()==="absent"?g.absentReason():null:`No workspace document is named "${e}". Open in this session: ${i.map(y=>y.descriptor.id).join(", ")||"(none)"}. A component board is present only when the package that owns its medium says this project has one, so a board id can be absent for this project and present for another.`}));function E(e){const i=g=>c.jsx(Ge,{...g,composite:l,descriptor:e,store:s});Q({id:A,title:Fe,kind:"world",workspaceRole:"authored-subject",provenance:{rootId:e.worldId,...e.path?{sourcePath:e.path}:{}},Content:i,presentation:()=>({kind:"world",id:e.worldId})},{category:"scene",default:!x,rootId:e.worldId})}function a(e){d.add(e.documentId);const i=()=>{d.delete(e.documentId)};try{Promise.resolve(e.install({store:s,composite:l})).catch(i)}catch{i()}}function h(){if(!f){R();for(const e of ye()){const i=e.presence();if(i===null)continue;const g=d.has(e.documentId);i==="present"!==g&&(i==="present"?a(e):(N(e.documentId),d.delete(e.documentId)))}}}m&&(E(m),d.add(A)),h();const t=we(h),o=m?A:[...d][0];return te()||(!x&&o!==void 0&&(n===null||n===C||n===q)?M(o):n?M(n):x&&M(C)),()=>{f=!0,t();for(const e of v)e();for(const e of S.values())e();S.clear();for(const e of d)N(e)}}export{Ge as RootDocumentContent,gt as installRootDocuments};
@@ -1 +0,0 @@
1
- import{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{EDITOR_LAYER as Xe}from"./editor-layers-B4oYfpj8.js";import{cL as Oe,a0 as V,dS as Ke,aJ as te,cD as G,aK as Q,kz as Ye,dR as Ze,cJ as et,$,gZ as tt,hF as rt,jR as at,kA as nt,M as j,z as st,bL as it,kB as Se,b_ as ot,kC as ct,kD as lt,kE as ut,kF as Ce,kG as xe,aw as x,cl as dt,kH as mt,bT as pt,bY as ft,kI as Pe,kJ as Ee,kK as je,kL as ht,ae as gt,kM as bt,kN as ke,dj as vt,kO as wt,kP as yt,hc as St,iU as Ct,iV as xt,gI as Pt,gJ as Et,j0 as jt,fZ as kt,f_ as Tt,f$ as At,g0 as Rt}from"./index-CaG87ZF-.js";import{s as Mt,o as Vt}from"./object3d-document-session-registry-OjqzJ86S.js";import{R as Ot}from"./RootSelectionOverlay-BQC12Gdd.js";import{e as Lt,S as Ft}from"./surface-state-D9j6qNu8.js";import{r as f}from"./index-nmcBqr7Y.js";import{t as It}from"./surface-content-Dg9Kkazf.js";import"./index-CtzuWnCS.js";import{s as zt,d as Te,c as B,t as Wt,p as Le,v as Ae,b as _t,e as Dt,l as Nt,i as $t}from"./camera-authoring-DYjhU5Zp.js";import{c as Gt}from"./performance-profiler-OwnXQX0M.js";import{m as Qt}from"./renderer-ownership-BovSEcLv.js";import{applyWorldRendererConfig as Bt}from"./renderer-config-CaPR4dB_.js";import{getUserData as Fe}from"./user-data-dHvLdpwM.js";import{detectKtx2Support as Ht}from"./loader-BTUKnX5Q.js";import{resolveRenderSettings as Ut}from"./render-settings-BBvkacR3.js";import{createSoftParticleDepthPass as qt}from"./soft-particle-depth-DNGwWJ8c.js";import{ViewportShadingRenderer as Jt}from"./viewport-shading-D9BMDb1N.js";import{applyRendererSettings as Xt,applySceneRenderPipeline as Kt}from"./setup-renderer-OOw1SykJ.js";import{EffectComposer as Yt,EffectPass as Zt,BlendFunction as er,KernelSize as tr,OutlineEffect as rr}from"./index-DHhMOs_s.js";import{W as ar,T as nr}from"./three.module-BLhyNg0e.js";import{d as sr}from"./design-time-mount-registry-DUpXCg1U.js";import{a as ir}from"./project-authoring-session-LCJAwGrD.js";import"./three-integration-CuAnYaTW.js";import{registerPresentedCanvasFrame as or}from"./canvas-preview-frames-B5xFRjhQ.js";import{i as cr}from"./editor-presentation-activity-C7SNSmTd.js";import{E as lr,s as ur,a as dr,t as mr,b as pr,c as fr,d as hr,r as gr,i as br}from"./three-viewport-presentation-CgO3eWJ-.js";import{a as Z}from"./entity-object-B_5Gc0Ky.js";import{w as vr}from"./editor-shell-store-Bh1S7M54.js";import{p as wr}from"./viewport-root-presentation-B35t51xX.js";import{d as yr}from"./asset-editor-persistence-BQgjOCrm.js";import{bindStagePresenceMarkers as Sr}from"./stage-presence-markers-cznMN_qq.js";import{el as Cr,_ as ee,fo as N,d7 as xr,dp as Re}from"./three.core-3arARmh6.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./workspace-arrangement-DIMM7ska.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./eyedropper-session-bjPXnfeX.js";import"./layered-pick-B_-BRrRD.js";import"./root-stacking-BEd9ZvxC.js";import"./react-story-board-Bx7qYytV.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./inspect-C8RP8G5F.js";import"./inference-diagnostics-MGcIHEX6.js";import"./object-marks-DwvIEBOK.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./render-features-C7QwmhCo.js";import"./matcap-texture-Dm2c-VQa.js";import"./defaults-DKiBJCPN.js";import"./edit-mode-authoring-DBjaBTxM.js";import"./host-hierarchy-objects-BV3WqU2w.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"./user-data-CqOoAowZ.js";import"./model-thumbnail-uk-2sblh.js";import"./studio-environment-yaKaHPxH.js";import"./three-state-wXRU3rLr.js";import"./hierarchy-marks-C25dY2fR.js";import"./component-instance-root-df4ofoOR.js";import"./three-contract-Dkt6PmWY.js";import"./viewport-door-DVkMQazS.js";import"./content-bounds-DKBD7nsv.js";import"./asset-preview-Cv7tfD98.js";import"./bitmap-label-Ct4k6ehY.js";import"./index-C20Flc1s.js";import"./standard-viewport-dressing-BZyuxyVl.js";import"./clip-planes-CnAI6DZn.js";import"./three-oYrcK5SQ.js";import"./model-inspection-MrJY0U_-.js";import"./OrbitControls-B13MKuwC.js";import"./LineSegments2-DN9pUfWA.js";import"./three.quarks.esm-C_HmSKXo.js";import"./live-gesture-lock-DJbrjOqf.js";import"./scene-framing-PVMqGU8h.js";import"./live-mixers-B-bwLZ7c.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./mounted-authoring-B7RL_V28.js";import"./collaboration-presence-BOS1t8wI.js";function Pr({previewRef:r}){const{preview:e,previewPinned:s}=B(),[n,c]=f.useState(!1),i=f.useRef(null);if(f.useEffect(()=>{if(!n)return;const u=E=>{i.current?.contains(E.target)||c(!1)};return document.addEventListener("pointerdown",u),()=>document.removeEventListener("pointerdown",u)},[n]),!e)return null;const m=e.camera.isPerspectiveCamera&&Number.isFinite(e.camera.aspect)?e.camera.aspect:16/9;return o.jsxs("div",{className:"vgai-camera-preview","data-testid":"camera-preview",children:[o.jsxs(Oe,{className:"vgai-camera-preview-header",gap:4,align:"center",children:[o.jsx(V,{icon:Ke,size:"sm"}),o.jsx(te,{variant:"label",truncate:!0,className:"vgai-camera-preview-title",title:`${e.name} · ${e.lens}`,children:e.name}),o.jsx(G,{text:s?"Unpin camera preview":"Pin camera preview",children:o.jsx(Q,{"aria-label":s?"Unpin camera preview":"Pin camera preview","aria-pressed":s,size:"compact",onClick:Wt,children:o.jsx(V,{icon:Ye,size:"sm"})})}),o.jsxs("div",{ref:i,className:"vgai-camera-preview-menu-anchor",children:[o.jsx(G,{text:"Camera actions",children:o.jsx(Q,{"aria-label":"Camera actions","aria-expanded":n,size:"compact",onClick:()=>c(u=>!u),children:o.jsx(V,{icon:Ze,size:"sm"})})}),n?o.jsxs(et,{className:"vgai-camera-preview-menu",children:[o.jsx($,{variant:"ghost",size:"compact",disabled:!e.canAuthorPose,title:e.poseRefusal,onClick:()=>{c(!1),Le(e)},children:"Pilot Camera"}),o.jsx($,{variant:"ghost",size:"compact",onClick:()=>{c(!1),Ae(e)},children:"View Through Camera"}),o.jsx($,{variant:"ghost",size:"compact",disabled:!e.canAuthorPose,title:e.poseRefusal,onClick:()=>{c(!1),_t(e)},children:"Align Camera to Current View"})]}):null]})]}),o.jsx("div",{ref:r,className:"vgai-camera-preview-image",style:{aspectRatio:String(Math.max(.5,Math.min(3,m)))},role:"img","aria-label":`Live view through ${e.name}`,onDoubleClick:()=>Ae(e)})]})}function Er(){return o.jsxs("div",{className:"vgai-camera-guides","aria-hidden":"true",children:[o.jsx("div",{className:"vgai-camera-guide vgai-camera-guide-v1"}),o.jsx("div",{className:"vgai-camera-guide vgai-camera-guide-v2"}),o.jsx("div",{className:"vgai-camera-guide vgai-camera-guide-h1"}),o.jsx("div",{className:"vgai-camera-guide vgai-camera-guide-h2"}),o.jsx("div",{className:"vgai-camera-safe-frame"}),o.jsx("div",{className:"vgai-camera-center-mark"})]})}function jr(){const{view:r,guidesVisible:e}=B();if(!r)return null;const s=r.mode==="pilot";return o.jsxs(o.Fragment,{children:[e?o.jsx(Er,{}):null,o.jsx(tt,{variant:"overlay",border:!0,className:"vgai-camera-view-banner vgai-chrome-island vgai-glass-island","data-testid":"camera-view-banner",children:o.jsxs(Oe,{gap:6,align:"center",children:[o.jsx(rt,{children:s?"PILOTING":"CAMERA VIEW"}),o.jsx(te,{variant:"label",children:r.subject.name}),o.jsx(te,{variant:"caption",tone:"muted",children:"Exact camera view"}),o.jsx(G,{text:e?"Hide composition guides":"Show composition guides",children:o.jsx(Q,{"aria-label":e?"Hide composition guides":"Show composition guides","aria-pressed":e,size:"compact",onClick:Dt,children:o.jsx(V,{icon:at,size:"sm"})})}),s?null:o.jsx($,{size:"compact",variant:"primary",disabled:!r.subject.canAuthorPose,title:r.subject.poseRefusal,onClick:()=>Le(r.subject),children:"Pilot"}),o.jsx(G,{text:"Exit camera view",children:o.jsx(Q,{"aria-label":"Exit camera view",size:"compact",onClick:Nt,children:o.jsx(V,{icon:nt,size:"sm"})})})]})})]})}function kr({previewRef:r}){return f.useSyncExternalStore(zt,Te,Te),o.jsxs(o.Fragment,{children:[o.jsx(Pr,{previewRef:r}),o.jsx(jr,{})]})}function Tr(r){const e=r,s=e.getExtension("EXT_disjoint_timer_query_webgl2"),n=s!==null&&typeof e.createQuery=="function",c=[];let i=null,m=null;return{begin(){!n||i||(i=e.createQuery(),i&&e.beginQuery(s.TIME_ELAPSED_EXT,i))},end(){!n||!i||(e.endQuery(s.TIME_ELAPSED_EXT),c.push(i),i=null)},poll(){if(!n)return null;if(e.getParameter(s.GPU_DISJOINT_EXT)){for(const u of c.splice(0))e.deleteQuery(u);return null}for(;c.length>0;){const u=c[0];if(!e.getQueryParameter(u,e.QUERY_RESULT_AVAILABLE))break;c.shift(),m=e.getQueryParameter(u,e.QUERY_RESULT)/1e6,e.deleteQuery(u)}return m},dispose(){i&&(e.endQuery(s.TIME_ELAPSED_EXT),e.deleteQuery(i),i=null);for(const u of c.splice(0))e.deleteQuery(u)}}}const Ar=2e4,Rr=250,Mr=5e3;class Vr{#e=0;#t=0;#r=0;#a;constructor(e){this.#a=e}get pending(){return this.#e>0||this.#t>0}begin(e,s){this.#e=e+Ar,this.#t=s?e+Mr:0,this.#r=0,this.tick(e)}tick(e){if(!(!this.pending||e<this.#r)){if(this.#r=e+Rr,this.#t>0&&this.#a.seedFromGameCamera()){this.cancel();return}this.#e>0&&this.#a.frameContent()&&(this.#e=0),e>=this.#e&&(this.#e=0),e>=this.#t&&(this.#t=0)}}cancel(){this.#e=0,this.#t=0}}const Me=new WeakMap;function Or(r,e){if(!r)return e(),!0;if(Me.has(r))return!1;try{return e(),!0}catch(s){const n=s instanceof Error?s.message:String(s);return Me.set(r,n),j.warn(`The Scene view cannot draw this world with the editor's own renderer, and has stopped trying: ${n}. This world was built by a copy of three the editor did not make (a vendored bundle pins its own revision), and the editor draws it with ITS three — across a wide enough revision gap the two disagree about the renderer/material contract. The game itself is unaffected and still drawing: its own canvas is what the Game tab and ${st("screenshot")} show, and hierarchy, selection and inspection all still read the live world. It closes when the game resolves \`three\` to the host's instance — a bare, un-rewritten \`import 'three'\` in its own source.`,"ingest"),!1}}function Lr(){const r=it();r.addEventListener("server-log",s=>{try{Se(JSON.parse(s.data))}catch{}});let e=!1;return(async()=>{try{const s=await ot();if(e)return;for(const n of s)Se(n)}catch{}})(),()=>{e=!0,r.close()}}const Ie="viewportPose";function Fr(){const r=ct(Ie);return r&&Array.isArray(r.position)&&r.position.length===3&&r.position.every(Number.isFinite)&&Array.isArray(r.target)&&r.target.length===3&&r.target.every(Number.isFinite)?r:null}function Ir(r,e){lt(Ie,{position:[r.position.x,r.position.y,r.position.z],target:[e.x,e.y,e.z]})}const Ve={id:"world",title:"World",lights:[{color:"#ffffff",intensity:1,direction:[-10,-20,-10],space:"world"}],ambient:{color:"#ffffff",intensity:.5},environmentIntensity:0};yt(Ve),St("world",{all:{lighting:{source:"studio",studioPreset:Ve.id,auto:{takeover:["light"],overridable:!0}}}});function zr(r,e,s){const n=document.createElement("canvas");n.setAttribute("aria-label",`${s} authoring viewport`),n.setAttribute("data-testid","editor-canvas"),n.setAttribute("aria-hidden","true"),n.tabIndex=-1,n.style.width="100%",n.style.height="100%",n.style.display="block",n.style.pointerEvents="auto",r.appendChild(n);const c=Math.max(1,e.clientWidth),i=Math.max(1,e.clientHeight),m=Math.min(window.devicePixelRatio||1,2);n.width=Math.ceil(c*m),n.height=Math.ceil(i*m);const u=Qt(new ar({canvas:n,antialias:!!Ut(void 0).antialias,powerPreference:"high-performance"}));return Xt(u,void 0,m),u.setSize(c,i),u.shadowMap.type=xr,u.info.autoReset=!1,Ht(u),{canvas:n,renderer:u,lease:null}}async function Wr(r){const e=pt(r.source,r.id);if(e)return e;let s=r.url,n=r.format??"gltf",c=r.includes;if(!s){const u=(await ft(r.source,r.id))[0];if(!u)return j.error(`No downloadable files for ${r.name}.`,"asset"),null;s=u.url,n=u.format,c=u.includes}const i={source:r.source,id:r.id,name:r.name,url:s,format:n};c&&(i.includes=c);const m=await yr(i);return m.ok&&m.path?`/${m.path}`:(j.error(`Could not download ${r.name}.`,"asset"),null)}function _r(r){if(r.isCamera)return r;const e=Fe(r,"_camera");return e?.isCamera?e:null}function Dr(r){const e=r;if(e.isPerspectiveCamera)return`${e.fov.toFixed(0)}° perspective`;const s=r;return s.isOrthographicCamera?`Orthographic · ${s.zoom.toFixed(2)}×`:r.type}function Nr(r,e){const s=r.transforms;if(!s)return{canAuthorPose:!1,poseRefusal:"This camera has no transform authoring path."};const n=s.editability?.(e,"position")??{writable:!0},c=s.editability?.(e,"rotation")??{writable:!0};return n.writable&&c.writable?{canAuthorPose:!0}:{canAuthorPose:!1,poseRefusal:n.reason??c.reason??"This camera pose is read-only."}}function $r(r,e,s){const n=e.get(s)??null;if(!n)return null;const c=_r(n);return c?{id:s,name:n.name||c.name||"Camera",camera:c,lens:Dr(c),...Nr(r,s)}:null}function Gr(r){const e=new Map;for(const[s,n]of r.objectMap){const c=Fe(n,"tags");Array.isArray(c)&&c.length>0&&e.set(s,c)}return e}function Qr(r){const{store:e,documentId:s,container:n,canvas:c,renderer:i,stats:m}=r,u=new Yt(i),E=qt(),O=new Jt,g=Gt(),L=Tr(i.getContext()),ze=t=>{g.enabled&&L.begin();try{t()}finally{L.end()}},We=()=>g.enabled?L.poll():null,_e=ut({id:s,label:"Scene viewport",kind:"scene",profiler:g}),b=new Cr,re=11184810;let H=Ce(c).background??re;b.background=new ee(H);const De=xe(c,()=>{const t=Ce(c).background??re,l=b.background;l instanceof ee&&l.getHex()===H&&(b.background=new ee(t)),H=t});e.bindScene(b,i);const a=new lr(c,b,e,n,{renderer:i,onlineAssetResolver:Wr,onProjectionChange:ur}),Ne=a.bindPresentation(s,"world");e.bindScene(b,i,a.batchedRenderer,a.camera),e.setOrbitTarget(a.orbitControls.target);const U=new N,F=new N,ae=new N,ne=()=>{const t=a.renderCamera;t.getWorldPosition(U),a.cameraViewMode==="pilot"?F.copy(a.orbitControls.target):a.cameraViewMode?(t.getWorldDirection(ae),F.copy(U).add(ae.multiplyScalar(10))):F.copy(a.orbitControls.target);const l=t.fov;return{position:U,target:F,fov:typeof l=="number"?l:0}},k=Sr({scene:b,store:e,documentId:s,container:n,canvas:c,viewport:a,readVisibleCameraPose:ne});let se="",q=null,h=null,S=null,I=null;const ie=()=>{h&&fr(h,ke(i.domElement))},$e=xe(i.domElement,ie),oe=()=>{if(!h)return;const t=x(e.shell),l=[...e.shell.selectedEntityIds].filter(d=>t.hierarchy.node(d)!==null).map(d=>Z(t,e.objectMap,d)).filter(d=>d!==null);hr(h,l);const p=h.selection.size>0;S&&(S.enabled=p,S.renderToScreen=p),I&&(I.renderToScreen=!p)};function T(){bt(e.shell),q?.(),q=null,h&&gr(i,h,S),h=null,S=null,I=null,Kt(u,i,e.scene??b,a.renderCamera,void 0,{basePixelRatio:Math.min(window.devicePixelRatio||1,2),objectMap:e.objectMap,entityTags:Gr(e)}),h=pr({BlendFunction:er,KernelSize:tr,OutlineEffect:rr},i,e.scene??b,a.renderCamera,ke(i.domElement)),ie(),I=u.passes.at(-1)??null,S=new Zt(a.renderCamera,h),S.enabled=!1,u.addPass(S),oe();const t=e.adoptedImageConfig;t&&(q=Bt(nr,i,t))}const ce=()=>{a.setProjection(mr().projection),e.setViewportCamera(a.freeCamera),T()},Ge=dr(ce);ce();const J=t=>$r(x(e.shell),e.objectMap,t);let v=null;const A=()=>{v&&(je(x(e.shell),v),v=null)},le=()=>{const t=B().view;t?.mode!=="pilot"||!t.subject.canAuthorPose||(v=t.subject.id,Pe(x(e.shell),v))},ue=()=>{if(!v||a.cameraViewMode!=="pilot")return;const t=J(v),l=x(e.shell),p=l.transforms;if(!t||!p)return;let d;try{d=p.get(v)}catch(w){j.error(w instanceof Error?w.message:String(w),"camera-authoring"),A();return}Ee(l,v,{position:t.camera.position.toArray(),rotation:t.camera.quaternion.toArray(),scale:d.scale}),e.shell.notifyIngestEdit()};a.orbitControls.addEventListener("start",le),a.orbitControls.addEventListener("change",ue),a.orbitControls.addEventListener("end",A);const Qe=$t({active:()=>e.shell.playState==="stopped"&&e.shell.activeViewportTab==="edit",selected:()=>{const t=e.shell.selectedEntityId;return t?J(t):null},resolve:J,showView:(t,l)=>{A(),a.setCameraView(t.camera,l),T(),k.reportCamera()},leaveView:()=>{A(),a.clearCameraView(),T(),k.reportCamera()},alignToViewport:t=>{const l=x(e.shell),p=l.transforms;if(!p||!t.canAuthorPose)return;const d=e.objectMap.get(t.id)??null;if(!d)return;const w=a.camera.getWorldPosition(new N),C=a.camera.getWorldQuaternion(new Re),y=w.clone(),R=C.clone();if(d.parent){d.parent.updateWorldMatrix(!0,!1),d.parent.worldToLocal(y);const M=d.parent.getWorldQuaternion(new Re);R.premultiply(M.invert())}let ye;try{ye=p.get(t.id)}catch(M){j.error(M instanceof Error?M.message:String(M),"camera-authoring");return}Pe(l,t.id),Ee(l,t.id,{position:y.toArray(),rotation:R.toArray(),scale:ye.scale}),e.shell.notifyIngestEdit(),je(l,t.id)},subscribe:e.shell.subscribe});let de=null;const me=()=>{const t=ht(e.shell);t!==de&&(de=t,c.style.opacity=t?"1":"0",n.style.backgroundColor=t?"":gt.surface.raised,n.style.backgroundImage=t?"":"linear-gradient(45deg, #444649 25%, transparent 25%, transparent 75%, #444649 75%), linear-gradient(45deg, #444649 25%, transparent 25%, transparent 75%, #444649 75%)",n.style.backgroundPosition=t?"":"0 0, 8px 8px",n.style.backgroundSize=t?"":"16px 16px")};me();let pe=e.composerVersion;const Be=e.shell.subscribe(()=>{me();const t=e.scene;t&&t!==a.currentScene&&a.setScene(t),a.objectMap=e.objectMap,a.syncFromStore(),e.composerVersion!==pe?(pe=e.composerVersion,T()):oe()});let z=null;const X=new Vr({seedFromGameCamera:()=>{const t=z?.()??null;return!!t&&a.seedFromGameCamera(t)},frameContent:()=>a.focusOnScene()}),fe=()=>{X.cancel(),z=null};a.orbitControls.addEventListener("start",fe);const he=()=>Ir(a.camera,a.orbitControls.target);a.orbitControls.addEventListener("end",he);const He=e.shell.onViewportAction(t=>{switch(t.type){case"focus-entity":{const l=Z(x(e.shell),e.objectMap,t.id);l&&a.focusOn(l);break}case"focus-scene":{{const l=Fr();if(l){a.camera.position.set(...l.position),a.orbitControls.target.set(...l.target),a.orbitControls.update();break}}z=e.sceneCameraLookup,X.begin(performance.now(),z!==null);break}case"focus-selection":{const l=x(e.shell),p=[...e.shell.selectedEntityIds].map(d=>Z(l,e.objectMap,d)).filter(d=>d!==null);a.focusOnMultiple(p);break}case"snap-selection-to-floor":a.snapSelectionToFloor();break;case"set-view-preset":a.setViewPreset(t.preset);break;case"step-view":a.stepView(t.step);break;case"frame-all":a.focusOnScene();break;case"zoom-view":a.zoomStep(t.direction);break;case"set-camera-pose":a.setPose(t.position,t.target,t.fov);break}});Lr();const ge=new ResizeObserver(()=>{const t=Math.max(1,n.clientWidth),l=Math.max(1,n.clientHeight);i.setSize(t,l),u.setSize(t,l),a.resize(t,l)});ge.observe(n);let W=performance.now(),_=!0,P=!1,be=!1;function ve(t){return Or(a.currentScene,()=>{E.render(i,a.currentScene,a.renderCamera),a.renderWithInfrastructure(()=>{vr(a.currentScene,()=>O.render(a.currentScene,e.shadingMode,()=>u.render(t),br)),a.renderViewCube(i),a.renderCameraPreview(i,B().preview?.camera??null,r.cameraPreview())})})}const Ue=or(c,async()=>{if(P||!cr()||!n.checkVisibility({visibilityProperty:!0,checkVisibilityCSS:!0})||!ve(0))return null;const t=document.createElement("canvas");return t.width=c.width,t.height=c.height,t.getContext("2d").drawImage(c,0,0),t}),K=()=>wt(e.shell)===e.shell;function qe(t,l){if(P)return;if(l&&(W=t),!n.checkVisibility({visibilityProperty:!0,checkVisibilityCSS:!0})){W=t,_=!0;return}g.beginFrame();const p=t-W,d=p/1e3;K()&&(m.frameTime=p,m.fps=1e3/p),W=t,k.syncMarkers(d),X.tick(t),g.beginPhase(),a.update(d),r.runFrame(d),a.batchedRenderer.update(d),g.endPhase("editor"),g.beginPhase(),i.info.reset(),ze(()=>{ve(d)}),g.reportRender({gpuMs:We(),drawCalls:i.info.render.calls,triangles:i.info.render.triangles,geometries:i.info.memory.geometries,textures:i.info.memory.textures}),g.endPhase("render"),K()&&(m.drawCalls=i.info.render.calls,m.triangles=i.info.render.triangles),_&&be&&(_=!1,vt(s)),g.endFrame();const w=ne(),C=w.position,y=w.target;K()&&(m.cameraPosition.x=C.x,m.cameraPosition.y=C.y,m.cameraPosition.z=C.z,m.cameraTarget.x=y.x,m.cameraTarget.y=y.y,m.cameraTarget.z=y.z);const R=`${C.x},${C.y},${C.z},${y.x},${y.y},${y.z},${w.fov}`;R!==se&&(se=R,k.reportCamera())}a.objectMap=e.objectMap,a.syncFromStore(),T();let Y,D;async function Je(t){if(P)return;r.onMountStatus("mounting"),D?.(),D=void 0,Y=t,r.onRootIds(t.childAdapters().filter(d=>d.role==="world"&&d.kind==="three").map(d=>d.worldId));const l=sr("three");if(P||Y!==t)return;const p=l?await l.mountWorldRootSession({store:e,composite:t,renderer:i}):()=>{};if(P||Y!==t){p();return}D=p,P||r.onMountStatus("ready")}const we=ir(e.shell,Je);return we.ready.then(()=>dt(mt(e.shell))).catch(t=>{j.error(`Editor boot failed: ${t instanceof Error?t.message:String(t)}`,"scene"),r.onMountStatus("ready")}).finally(()=>{be=!0,_=!0}),{scene:b,viewport:a,frame:qe,present:t=>wr(e,t),setHelper:(t,l)=>a.setHelper(t,l),dispose:()=>{P=!0,_e(),Ue(),ge.disconnect(),Be(),He(),Qe(),a.orbitControls.removeEventListener("start",le),a.orbitControls.removeEventListener("change",ue),a.orbitControls.removeEventListener("end",A),a.orbitControls.removeEventListener("start",fe),a.orbitControls.removeEventListener("end",he),we.dispose(),D?.(),k.dispose(),O.dispose(),L.dispose(),Ge(),$e(),De(),Ne(),h?.selection.clear(),E.dispose(),u.dispose()}}}function Br({store:r,rootIds:e,mountStatus:s}){f.useSyncExternalStore(r.shell.subscribe,r.shell.getSnapshot);const n=f.useSyncExternalStore(kt,Tt),c=f.useSyncExternalStore(At,Rt),i=r.scene?.background,m=i!==null&&!(i?.isColor===!0&&i.getHex()===11184810),u=f.useMemo(()=>!!(r.scene&&It(r.scene,{includeBackground:!1,ignoredLayer:Xe})),[r.scene,r.shell.contentVersion]),E=!!(r.scene&&(m||u)),O=Lt({surface:"Scene",rootIds:e,phase:s==="mounting"?"loading":"ready",content:E?"present":s==="mounting"?"unknown":"empty",readiness:n,failures:c});return o.jsx(Ft,{explanation:O,testId:"scene-viewport-status"})}function Hr({store:r,documentId:e,cameraPreviewRef:s,mountStatus:n,rootIds:c}){f.useSyncExternalStore(r.shell.subscribe,r.shell.getShellSnapshot??r.shell.getSnapshot),f.useSyncExternalStore(Ct,xt),f.useSyncExternalStore(Mt,Vt),f.useSyncExternalStore(Pt,Et);const i=jt(r.shell,e,"document");return o.jsxs(o.Fragment,{children:[i.surface!==null?o.jsx(Ot,{}):null,i.surface==="three"?o.jsx(kr,{previewRef:s}):null,o.jsx(Br,{store:r,rootIds:c,mountStatus:n})]})}const jn={mountWorldRootSurface:zr,installWorldRootStage:Qr,Overlays:Hr};export{jn as worldRootStageBinding};
@@ -1,10 +0,0 @@
1
- {
2
- "files": {
3
- "react": "assets/vgai-shared-react-BT7rMc2H.js",
4
- "react-dom": "assets/vgai-shared-react-dom-DFajMqMT.js",
5
- "react-dom/client": "assets/vgai-shared-react-dom-client-S0ozfl6_.js",
6
- "react/jsx-runtime": "assets/vgai-shared-jsx-runtime-DIqBpTut.js",
7
- "react/jsx-dev-runtime": "assets/vgai-shared-jsx-dev-runtime-DFDKL7fx.js",
8
- "@fortawesome/react-fontawesome": "assets/vgai-shared-fontawesome-CU65D4Ij.js"
9
- }
10
- }
@@ -1,3 +0,0 @@
1
- {
2
- "file": "assets/vgai-shared-three-DH4yxKwt.js"
3
- }
@@ -1,4 +0,0 @@
1
- interface:
2
- display_name: "VGAI Three.js Authoring"
3
- short_description: "Build polished native Three.js scenes and assets"
4
- default_prompt: "Use $vgai-threejs-authoring to build and visually refine native Three.js source without introducing a parallel scene model."
@@ -1,4 +0,0 @@
1
- interface:
2
- display_name: "VGAI Three.js Authoring"
3
- short_description: "Build polished native Three.js scenes and assets"
4
- default_prompt: "Use $vgai-threejs-authoring to build and visually refine native Three.js source without introducing a parallel scene model."
@@ -1,4 +0,0 @@
1
- interface:
2
- display_name: "VGAI Three.js Authoring"
3
- short_description: "Build polished native Three.js scenes and assets"
4
- default_prompt: "Use $vgai-threejs-authoring to build and visually refine native Three.js source without introducing a parallel scene model."
@@ -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 `vgai 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
- }
File without changes
File without changes