@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,6 +1,6 @@
1
- # VGAI game project
1
+ # Volter game project
2
2
 
3
- This is a standalone game project created by VGAI. Describe the game you want
3
+ This is a standalone game project created by Volter. Describe the game you want
4
4
  to a coding agent, or open the shared visual editor directly:
5
5
 
6
6
  ```bash
@@ -17,8 +17,7 @@ exported builds only.
17
17
  npm run dev # open/reuse this project's editor
18
18
  npm run check-idioms # project architecture and completion diagnostics
19
19
  npm run typecheck # game, editor contributions, Node config, and server
20
- npm run validate # project files and React design states
21
- npm run validate-manifest # vgai.project.json
20
+ npm run validate-manifest # volter.project.json
22
21
  npm run build # production game bundle
23
22
  ```
24
23
 
@@ -26,7 +25,7 @@ The `studio` addition (`game-editor create <name> --with studio`, or `--template
26
25
  brings three development contributions; no other preset does. The files are:
27
26
  `src/contributions/tester.inspector.tsx`, `src/contributions/data.document.tsx` and
28
27
  `src/contributions/analytics.analytics.tsx`. They emit
29
- `VGAI_STUB_UNIMPLEMENTED`, so the editor console and `check-idioms` remain red
28
+ `VOLTER_STUB_UNIMPLEMENTED`, so the editor console and `check-idioms` remain red
30
29
  until the game supplies its own Tester, Data and Analytics surfaces (or deletes
31
30
  Data because it genuinely has no authored content tables). Analytics must provide
32
31
  game-specific analysis. The editor already provides session selection, playback
@@ -50,23 +49,23 @@ example must not silently erase the architecture it demonstrates.
50
49
  Drive/read the running game through its own exported modules:
51
50
 
52
51
  ```bash
53
- npm run vgai -- eval 'return game.run(async ({ modules }) => { const bot = await modules("src/bot/tester-station.ts"); return bot.describeTester(); })'
52
+ npm run volter -- eval 'return game.run(async ({ modules }) => { const bot = await modules("src/bot/tester-station.ts"); return bot.describeTester(); })'
54
53
  ```
55
54
 
56
55
  Record through the same eval door while Play is running:
57
56
 
58
57
  ```bash
59
- npm run vgai -- eval 'return editor.recording.start({ fps: 30 })'
58
+ npm run volter -- eval 'return editor.recording.start({ fps: 30 })'
60
59
  # direct the resident tester and advance simulation time
61
- npm run vgai -- eval 'return editor.recording.stop()'
60
+ npm run volter -- eval 'return editor.recording.stop()'
62
61
  ```
63
62
 
64
- Recordings are standard WebM files under `.vgai/recordings/`. Inspect and trim
63
+ Recordings are standard WebM files under `.volter/recordings/`. Inspect and trim
65
64
  them with ordinary `ffmpeg`/`ffprobe`; promote only reviewed evidence into
66
65
  `media/`. Structured Gameplay Session logs live under `logs/play-*.jsonl` and
67
66
  remain the durable Analytics source after Stop or reload.
68
67
 
69
- The project manifest is `vgai.project.json`. `ROADMAP.md` owns major feature
68
+ The project manifest is `volter.project.json`. `ROADMAP.md` owns major feature
70
69
  arcs; `DEVLOG.md` is the development journal. Coding agents begin with
71
70
  `AGENTS.md`, which routes task-specific details to `.agents/` skills and the
72
71
  project manual.
@@ -76,8 +75,8 @@ Editor runtime image for its engine version (`~/.volter/images/`), which
76
75
  carries every package the template and the catalog's capabilities use; the
77
76
  game is its own code. `package.json` still declares what the game uses, so
78
77
  replacing the link with `npm install` gives a standalone installation.
79
- `npm run vgai -- status` reports the product serving the active session.
78
+ `npm run volter -- status` reports the product serving the active session.
80
79
 
81
- Learn and manual: https://vgai-learn.pages.dev
80
+ Learn and manual: https://volter-learn.pages.dev
82
81
 
83
- Hosted editor: https://vgai-editor.pages.dev
82
+ Hosted editor: https://volter-editor.pages.dev
@@ -21,7 +21,7 @@ import { fileURLToPath } from 'node:url';
21
21
  // ERROR (exit 1 always) — unambiguous drift, one canonical fix each:
22
22
  // E1. `playwright`/`@playwright/test` imported anywhere in the project —
23
23
  // the resident tester (directed through its running game module via
24
- // `vgai eval`) is the ONE bot harness, and a
24
+ // `volter-game-editor eval`) is the ONE bot harness, and a
25
25
  // hand-rolled browser boot is banned.
26
26
  // VALUE imports only: a type-only import (`import type {Page}`, or
27
27
  // an inline `{ type Page }` with no value specifier) binds nothing
@@ -30,18 +30,18 @@ import { fileURLToPath } from 'node:url';
30
30
  // step normally needs, so the direct import is usually avoidable
31
31
  // anyway.
32
32
  // E2. package.json scripts invoking `playwright` directly.
33
- // E3. `window.__vgai` accessed in src/** (the bot/CLI consumer
33
+ // E3. `window.__volter` accessed in src/** (the bot/CLI consumer
34
34
  // surface, not the authoring surface — export the state from a module).
35
35
  // E4. `?bot=`-style query-param bot plumbing in src/** — the project's
36
36
  // resident tester owns bot entry.
37
37
  // E5. raw `Math.random()`/`Date.now()`/`performance.now()` in
38
38
  // src/scripts/** gameplay code — ONLY when this project's OWN
39
- // vgai.project.json declares `determinism.seededRandom: true`; silent
39
+ // volter.project.json declares `determinism.seededRandom: true`; silent
40
40
  // when undeclared (D15, T-D15.3's third enforcer leg — the other
41
41
  // two, the engine-src permanent scan and the examples/ burn-down
42
42
  // scan, live in the engine repo's own test suite; see
43
43
  // packages/engine/test/gameplay-rng-ban.test.ts).
44
- // E6. `VGAI_STUB_UNIMPLEMENTED` remains in src/tools/** or src/contributions/** — this
44
+ // E6. `VOLTER_STUB_UNIMPLEMENTED` remains in src/tools/** or src/contributions/** — this
45
45
  // is the starter's explicit unfinished-work sentinel, so a completion
46
46
  // check containing it cannot be green. Replace the Tester/Data/Analytics stub
47
47
  // whole in the game's vocabulary; a game with no content tables may
@@ -104,12 +104,11 @@ import { fileURLToPath } from 'node:url';
104
104
  //
105
105
  // E9 is the one rule that does NOT answer its question from the file tree
106
106
  // alone: the R3F00x codes come from the editor's own source analyzer
107
- // (`ui-source/r3f-project-contracts.ts`), the same pass validate-on-save and
108
- // `vgai status` report from. It is loaded OFFLINE — the analyzer is a pure
107
+ // (`@volter/editor-react`'s `src/source/r3f-project-contracts.ts`), the same pass validate-on-save and
108
+ // `volter-game-editor status` report from. It is loaded OFFLINE — the analyzer is a pure
109
109
  // `(code, file) => diagnostics` function over `typescript`, with no dev
110
- // server, browser or editor session anywhere in it — through this project's
111
- // own `@editor/*` tsconfig mapping, so check-idioms never requires a running
112
- // editor. See `loadR3fAnalyzer`.
110
+ // server, browser or editor session anywhere in it — from the installed
111
+ // package, so check-idioms never requires a running editor. See `loadR3fAnalyzer`.
113
112
  //
114
113
  // Suppression: put `// idioms-ignore <rule-id> <reason>` on the flagged
115
114
  // line. The reason is REQUIRED — an empty/missing reason does not suppress
@@ -117,7 +116,7 @@ import { fileURLToPath } from 'node:url';
117
116
  // incomplete). This is intentionally a dumb line/regex scanner, not an AST
118
117
  // pass — it comment-strips PURE comment lines (lines whose trimmed text
119
118
  // starts with `//`, `/*`, `*`, or is exactly `*/`) before matching rule
120
- // patterns, so doc-comment prose that merely MENTIONS e.g. `window.__vgai`
119
+ // patterns, so doc-comment prose that merely MENTIONS e.g. `window.__volter`
121
120
  // doesn't trip a finding, but it does not understand string literals,
122
121
  // template strings, or multi-statement lines. False positives are expected
123
122
  // occasionally; suppress them with a reason rather than fighting the regex.
@@ -147,7 +146,7 @@ if (!existsSync(rootDir)) {
147
146
 
148
147
  // This script's own resolved path — excluded from every scan so its rule
149
148
  // regexes (which literally contain the strings they look for, e.g.
150
- // 'colyseus.js', 'window.__vgai', '@playwright/test') never self-flag.
149
+ // 'colyseus.js', 'window.__volter', '@playwright/test') never self-flag.
151
150
  const SELF_PATH = resolve(fileURLToPath(import.meta.url));
152
151
 
153
152
  // ---------------------------------------------------------------------------
@@ -166,7 +165,7 @@ const SKIP_DIRS = new Set([
166
165
  '.github',
167
166
  'dist',
168
167
  'build',
169
- '.vgai',
168
+ '.volter',
170
169
  'coverage',
171
170
  '.turbo',
172
171
  ]);
@@ -347,7 +346,7 @@ function checkPlaywrightImports(): void {
347
346
  'error',
348
347
  'bot-canonical',
349
348
  `"${pkg}" imported — the resident tester, directed through the running game's own module, is the ONE bot harness; hand-rolled Playwright boots are banned.`,
350
- "Drive the game through the live session (vgai eval + the running tester module), or take the Playwright types from '@volter/game-live' as a type-only import.",
349
+ "Drive the game through the live session (volter-game-editor eval + the running tester module), or take the Playwright types from '@volter/game-live' as a type-only import.",
351
350
  );
352
351
  }
353
352
  }
@@ -380,7 +379,7 @@ function checkPackageJsonScripts(): void {
380
379
  'error',
381
380
  'bot-canonical',
382
381
  `script "${name}" invokes playwright directly ("${cmd}") — this project has no Playwright lane to own a browser binary or config.`,
383
- `Delete the "${name}" script — playtesting is the live session (vgai eval + the running tester module), not a script.`,
382
+ `Delete the "${name}" script — playtesting is the live session (volter-game-editor eval + the running tester module), not a script.`,
384
383
  );
385
384
  }
386
385
  }
@@ -393,7 +392,7 @@ function checkPackageJsonScripts(): void {
393
392
  * file enters an endless cycle of rewriting assertions and actions (owner
394
393
  * ruling, 2026-08-21 — measured live: three assertion renegotiations in
395
394
  * twenty minutes on one balance suite). The playtest loop is INTERACTIVE:
396
- * `vgai eval` + cheats set the situation, bot policy runs behavior, event
395
+ * `volter-game-editor eval` + cheats set the situation, bot policy runs behavior, event
397
396
  * logs are read on an interval, and the run is redirected live until the
398
397
  * operator is satisfied. The play log (logs/play-*.jsonl) is the receipt. This
399
398
  * rule keeps the furniture out so the cheapest path stays the sanctioned
@@ -403,7 +402,7 @@ function checkNoTestFurniture(): void {
403
402
  'Delete it and playtest LIVE: eval + cheats set the situation, bot goals run behavior, the ' +
404
403
  'event log is read on an interval, the run is redirected until satisfied; the play log ' +
405
404
  '(logs/play-*.jsonl) is the receipt.';
406
- const SKIP_DIRS = new Set(['node_modules', '.git', 'dist', '.vgai', 'logs', 'media', 'public']);
405
+ const SKIP_DIRS = new Set(['node_modules', '.git', 'dist', '.volter', 'logs', 'media', 'public']);
407
406
  const testFile = /\.(test|spec)\.[cm]?[jt]sx?$/;
408
407
  const walk = (dir: string): void => {
409
408
  for (const entry of readdirSync(dir)) {
@@ -477,31 +476,31 @@ function checkNoTestFurniture(): void {
477
476
  }
478
477
 
479
478
  // ---------------------------------------------------------------------------
480
- // E3 — window.__vgai accessed in src/**
479
+ // E3 — window.__volter accessed in src/**
481
480
  // ---------------------------------------------------------------------------
482
481
 
483
- function checkWindowVgai(): void {
484
- // Two-part, same-line heuristic rather than a single `window\.__vgai`
482
+ function checkWindowVolter(): void {
483
+ // Two-part, same-line heuristic rather than a single `window\.__volter`
485
484
  // regex: this codebase's OWN canonical way to reach the bridge (see
486
485
  // @volter/game-live's game-client/client.ts) is a cast in between —
487
- // `(window as unknown as { __vgai?: ... }).__vgai` — so `window` and
488
- // `.__vgai` are literal-adjacent only coincidentally. Flag any line that
489
- // mentions the `window` token AND a bare `.__vgai`/`['__vgai']` property
486
+ // `(window as unknown as { __volter?: ... }).__volter` — so `window` and
487
+ // `.__volter` are literal-adjacent only coincidentally. Flag any line that
488
+ // mentions the `window` token AND a bare `.__volter`/`['__volter']` property
490
489
  // access. The negative lookahead on the dotted form keeps this off
491
- // `__vgaiScene`/`__vgaiCamera`/`__vgaiRender`/`__vgaiBatch` etc. — those
492
- // are different, unrelated dev-only globals, not the frozen `window.__vgai`
490
+ // `__volterScene`/`__volterCamera`/`__volterRender`/`__volterBatch` etc. — those
491
+ // are different, unrelated dev-only globals, not the frozen `window.__volter`
493
492
  // debug-bridge shape (D18). A file-scoped `window` ALIAS on its own line
494
- // (`const w = window as …; w['__vgai']`) is a known miss — this is a
493
+ // (`const w = window as …; w['__volter']`) is a known miss — this is a
495
494
  // line-scan, not an AST pass.
496
495
  const windowRe = /\bwindow\b/;
497
- const vgaiAccessRe = /\.__vgai(?![A-Za-z0-9_])|\[\s*['"]__vgai['"]\s*\]/g;
496
+ const volterAccessRe = /\.__volter(?![A-Za-z0-9_])|\[\s*['"]__volter['"]\s*\]/g;
498
497
  for (const file of srcFiles) {
499
498
  const { rawLines, blanked } = readFileText(file);
500
499
  const blankedLines = blanked.split('\n');
501
500
  blankedLines.forEach((line, i) => {
502
501
  if (!windowRe.test(line)) return;
503
- vgaiAccessRe.lastIndex = 0;
504
- if (!vgaiAccessRe.test(line)) return;
502
+ volterAccessRe.lastIndex = 0;
503
+ if (!volterAccessRe.test(line)) return;
505
504
  addFinding(
506
505
  file,
507
506
  rawLines,
@@ -509,7 +508,7 @@ function checkWindowVgai(): void {
509
508
  'E3',
510
509
  'error',
511
510
  'bot-canonical',
512
- 'window.__vgai accessed directly in src/** — this is the bot/CLI consumer surface, not the authoring surface.',
511
+ 'window.__volter accessed directly in src/** — this is the bot/CLI consumer surface, not the authoring surface.',
513
512
  'Read and drive the game through its own exported modules instead (game.run(({ modules }) => …)).',
514
513
  );
515
514
  });
@@ -550,7 +549,7 @@ function checkBotParam(): void {
550
549
  * reads as "none" — validating its shape is validate-manifest.ts's job. */
551
550
  function manifestDomRootEntries(): Set<string> {
552
551
  const entries = new Set<string>();
553
- const manifestPath = join(rootDir, 'vgai.project.json');
552
+ const manifestPath = join(rootDir, 'volter.project.json');
554
553
  if (!existsSync(manifestPath)) return entries;
555
554
  try {
556
555
  const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8')) as {
@@ -710,11 +709,6 @@ function checkTriggerNameIdentity(): void {
710
709
  // ---------------------------------------------------------------------------
711
710
  // git-history plumbing shared by slice-proxy rules (W9)
712
711
  // ---------------------------------------------------------------------------
713
- // The vgai CLI mirrors this exact measurement (source path, gameplay
714
- // pathspecs, threshold, silent-on-unaskable) as `vgai status`'s ambient
715
- // bot-drift line — engine repo, packages/vgai-cli/src/instrumentation-signal.ts.
716
- // If you change any of the three constants below, change them there too, or
717
- // the ambient signal and this rule will disagree about whether a bot drifted.
718
712
 
719
713
  /** The files that ARE the game, for slice-proxy measurements (W9). Deliberately
720
714
  * NOT all of src/ — churn in src/ui/, src/tools/ or src/data/ is not by
@@ -833,7 +827,7 @@ function checkUseFramePriority(): void {
833
827
 
834
828
  /** The one way a project shows that Play has actually run: `logs/play-*.jsonl`
835
829
  * — the editor server opens one per Play session
836
- * (packages/editor/server/editor-server.ts, POST /__editor/log-session).
830
+ * (packages/editor-core/server/editor-server.ts, POST /__editor/log-session).
837
831
  * A working-tree fact, not a git fact (`logs/` is gitignored), written by
838
832
  * the tool itself, so it cannot be produced by intending to play. This
839
833
  * receipt is also the playtest's proof (owner ruling 2026-08-21). */
@@ -848,7 +842,7 @@ function hasPlayEvidence(): boolean {
848
842
  }
849
843
 
850
844
  /** The scaffolder's own record of where this project came from
851
- * (packages/create-vgai-project/src/baseline.ts). W9's history ANCHOR.
845
+ * (packages/game-editor/node/scaffold/baseline.ts). W9's history ANCHOR.
852
846
  *
853
847
  * W7 anchors its window on a file's last commit; W9 does the same, and this
854
848
  * is the file that means "this project began here". Anchoring matters: an
@@ -859,7 +853,7 @@ function hasPlayEvidence(): boolean {
859
853
  * maintenance history, and a rule that shouts at our own reference material
860
854
  * on every run is noise, not a tripwire. A project with no committed
861
855
  * baseline cannot be asked when it started, so W9 stays silent there. */
862
- const SCAFFOLD_BASELINE_SOURCE = '.vgai/scaffold-baseline.json';
856
+ const SCAFFOLD_BASELINE_SOURCE = '.volter/scaffold-baseline.json';
863
857
 
864
858
  /** Gameplay commits since the scaffold anchor, at or above which a project
865
859
  * that has never been played is reported.
@@ -900,23 +894,23 @@ function checkPlayedBeforeAuthoring(): void {
900
894
  'typecheck and unit tests cannot see: a blank canvas, an invisible mesh, a camera inside ' +
901
895
  'the geometry.',
902
896
  'Author in playable slices (AGENTS.md) — enter Play before writing the next slice: run ' +
903
- '`npm run vgai -- play`, look at the game, playtest live, then continue; reading the ' +
897
+ '`npm run volter -- play`, look at the game, playtest live, then continue; reading the ' +
904
898
  'code again does not count.',
905
899
  );
906
900
  }
907
901
 
908
902
  // ---------------------------------------------------------------------------
909
903
  // E5 — raw Math.random()/Date.now()/performance.now() in src/scripts/**,
910
- // only when THIS project's own vgai.project.json declares
904
+ // only when THIS project's own volter.project.json declares
911
905
  // determinism.seededRandom (D15, T-D15.3's third enforcer leg).
912
906
  // ---------------------------------------------------------------------------
913
907
 
914
- /** Reads rootDir/vgai.project.json and reports whether it declares
908
+ /** Reads rootDir/volter.project.json and reports whether it declares
915
909
  * `determinism.seededRandom: true`. Missing/malformed manifests read as
916
910
  * "not declared" (silent) — validating the manifest's own shape is
917
911
  * validate-manifest.ts's job, not this scanner's. */
918
912
  function projectDeclaresSeededRandom(): boolean {
919
- const manifestPath = join(rootDir, 'vgai.project.json');
913
+ const manifestPath = join(rootDir, 'volter.project.json');
920
914
  if (!existsSync(manifestPath)) return false;
921
915
  try {
922
916
  const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8')) as {
@@ -943,7 +937,7 @@ function checkDeterminismRng(): void {
943
937
  'E5',
944
938
  'error',
945
939
  'gameplay-rng-ctx-random',
946
- `raw "${m[1]}(" in src/scripts/** — this project's vgai.project.json declares ` +
940
+ `raw "${m[1]}(" in src/scripts/** — this project's volter.project.json declares ` +
947
941
  'determinism.seededRandom, so ALL gameplay RNG/wall-clock reads must flow through ' +
948
942
  'ctx.random, not raw Math.random()/Date.now()/performance.now().',
949
943
  'Use ctx.random() (or ctx.random.stream(name) for an independent named stream) instead.',
@@ -957,7 +951,7 @@ function checkDeterminismRng(): void {
957
951
  // ---------------------------------------------------------------------------
958
952
 
959
953
  function checkUnconfiguredProjectTools(): void {
960
- const sentinel = /\bVGAI_STUB_UNIMPLEMENTED\b/g;
954
+ const sentinel = /\bVOLTER_STUB_UNIMPLEMENTED\b/g;
961
955
  const toolFiles = srcFiles.filter((file) => /^(src\/tools|src\/contributions)\//.test(relPath(file)));
962
956
  for (const file of toolFiles) {
963
957
  const { rawLines, blanked } = readFileText(file);
@@ -969,7 +963,7 @@ function checkUnconfiguredProjectTools(): void {
969
963
  'E6',
970
964
  'error',
971
965
  'studio-surfaces-complete',
972
- 'VGAI_STUB_UNIMPLEMENTED remains in an editor contribution — this is an explicit starter obligation, not a usable game-specific surface.',
966
+ 'VOLTER_STUB_UNIMPLEMENTED remains in an editor contribution — this is an explicit starter obligation, not a usable game-specific surface.',
973
967
  "Rewrite the stub whole in this game's vocabulary and remove its warning. If this is the Data stub and the game genuinely has no authored content tables, delete the file.",
974
968
  );
975
969
  }
@@ -1007,8 +1001,8 @@ type R3fAnalyzer = (
1007
1001
  ) => R3fDiagnostic[];
1008
1002
 
1009
1003
  /**
1010
- * The editor's OWN R3F source analyzer, resolved from this project's
1011
- * `@editor/*` tsconfig mapping and loaded synchronously.
1004
+ * The editor's OWN R3F source analyzer, resolved from the installed
1005
+ * `@volter/editor-react` package and loaded synchronously.
1012
1006
  *
1013
1007
  * Why not re-implement the codes here: they are a real TypeScript AST pass
1014
1008
  * over the project's import graph (relative imports, re-exports, shared prop
@@ -1018,49 +1012,28 @@ type R3fAnalyzer = (
1018
1012
  * pure (`(code, file) => diagnostics`, `typescript` + `node:fs` and nothing
1019
1013
  * else), so nothing about reusing it needs a server or a session.
1020
1014
  *
1021
- * The mapping is read from the project's own `tsconfig.json` instead of
1022
- * hardcoding a path because it is exactly what the scaffolder rewrites per
1023
- * dependency mode: an in-checkout project points at the engine checkout's
1024
- * `packages/editor/src`, an installed one at
1025
- * `node_modules/@volter/editor-core/src` (the published package ships `src/`).
1026
- * Reading the alias means one code path serves both without knowing which.
1027
- * A node_modules target uses Node's package resolution as a fallback so the
1028
- * same mapping also works when a workspace manager hoists the package.
1015
+ * The published packages ship `src/`, so a module is found as
1016
+ * `node_modules/<package>/<file>` in the project or any directory above it
1017
+ * (a workspace manager may hoist the package).
1029
1018
  *
1030
1019
  * Returns null when the analyzer genuinely cannot be reached. E9 reports that
1031
1020
  * as a finding of its own rather than passing silently — a floor rule that
1032
1021
  * disappears when its instrument is missing reads as a clean bill of health,
1033
1022
  * which is the one thing an analyzer must never produce.
1034
1023
  */
1035
- function resolveEditorModule(relative: string): string | null {
1036
- const tsconfig = join(rootDir, 'tsconfig.json');
1037
- if (!existsSync(tsconfig)) return null;
1038
- let mapped: string;
1039
- try {
1040
- const raw = readFileSync(tsconfig, 'utf-8');
1041
- // Deliberately a text match, not JSON.parse: tsconfigs legitimately carry
1042
- // comments, and this needs one string out of a known key.
1043
- const alias = raw.match(/"@editor\/\*"\s*:\s*\[\s*"([^"]+)"/);
1044
- if (!alias) return null;
1045
- const baseUrl = raw.match(/"baseUrl"\s*:\s*"([^"]+)"/)?.[1] ?? '.';
1046
- const aliasTarget = alias[1]!.replace('*', relative);
1047
- mapped = resolve(rootDir, baseUrl, aliasTarget);
1048
- if (!existsSync(mapped)) {
1049
- const nodeModulesMarker = 'node_modules/';
1050
- const normalizedTarget = aliasTarget.replaceAll('\\', '/');
1051
- const markerIndex = normalizedTarget.lastIndexOf(nodeModulesMarker);
1052
- if (markerIndex < 0) return null;
1053
- const packageTarget = normalizedTarget.slice(markerIndex + nodeModulesMarker.length);
1054
- mapped = createRequire(join(rootDir, 'package.json')).resolve(packageTarget);
1055
- }
1056
- } catch {
1057
- return null;
1024
+ function resolvePackageModule(packageName: string, relative: string): string | null {
1025
+ let dir = rootDir;
1026
+ for (;;) {
1027
+ const candidate = join(dir, 'node_modules', packageName, relative);
1028
+ if (existsSync(candidate)) return candidate;
1029
+ const parent = dirname(dir);
1030
+ if (parent === dir) return null;
1031
+ dir = parent;
1058
1032
  }
1059
- return existsSync(mapped) ? mapped : null;
1060
1033
  }
1061
1034
 
1062
1035
  function loadR3fAnalyzer(): R3fAnalyzer | null {
1063
- const mapped = resolveEditorModule('ui-source/r3f-project-contracts.ts');
1036
+ const mapped = resolvePackageModule('@volter/editor-react', 'src/source/r3f-project-contracts.ts');
1064
1037
  if (!mapped) return null;
1065
1038
  try {
1066
1039
  const loaded = createRequire(import.meta.url)(mapped) as {
@@ -1087,7 +1060,7 @@ function loadR3fAnalyzer(): R3fAnalyzer | null {
1087
1060
  */
1088
1061
  interface RegionSurfaces {
1089
1062
  surfaces: ReadonlyMap<string, string>;
1090
- /** This project's `vgai.adapter.ts` declares a `regions` binding the static
1063
+ /** This project's `volter.adapter.ts` declares a `regions` binding the static
1091
1064
  * reader could not evaluate, so its `include` globs were not consulted.
1092
1065
  * Carried rather than dropped: the editor's own loader EVALUATES that module
1093
1066
  * and would honor those globs, so silence here means the two readers
@@ -1096,7 +1069,10 @@ interface RegionSurfaces {
1096
1069
  }
1097
1070
 
1098
1071
  function loadRegionSurfaces(): RegionSurfaces | null {
1099
- const mapped = resolveEditorModule('asset-workflow/project-content.ts');
1072
+ const mapped = resolvePackageModule(
1073
+ '@volter/editor-sdk',
1074
+ 'src/kit/asset-workflow/project-source-index.ts',
1075
+ );
1100
1076
  if (!mapped) return null;
1101
1077
  try {
1102
1078
  const loaded = createRequire(import.meta.url)(mapped) as {
@@ -1121,7 +1097,7 @@ function loadRegionSurfaces(): RegionSurfaces | null {
1121
1097
  m: string,
1122
1098
  a: string,
1123
1099
  ) => { regions: unknown[]; unreadable: boolean }
1124
- )(read('vgai.project.json'), read('vgai.adapter.ts'));
1100
+ )(read('volter.project.json'), read('volter.adapter.ts'));
1125
1101
  const sources = srcFiles.map((file) => ({
1126
1102
  path: relPath(file),
1127
1103
  source: readFileSync(file, 'utf-8'),
@@ -1141,31 +1117,31 @@ function loadRegionSurfaces(): RegionSurfaces | null {
1141
1117
  function checkAuthoringWarnings(): void {
1142
1118
  const analyze = loadR3fAnalyzer();
1143
1119
  if (!analyze) {
1144
- // Silent for a folder that is not a vgai project at all — this scanner
1120
+ // Silent for a folder that is not a volter-game-editor project at all — this scanner
1145
1121
  // is pointed at scratch directories by its own tests and by curious
1146
1122
  // agents, and a rule about a missing tsconfig mapping is a rule about a
1147
1123
  // project. Inside a real project the mapping is scaffolded, so its
1148
1124
  // absence is worth saying out loud rather than passing quietly.
1149
- if (!existsSync(join(rootDir, 'vgai.project.json'))) return;
1125
+ if (!existsSync(join(rootDir, 'volter.project.json'))) return;
1150
1126
  addProjectFinding(
1151
1127
  'E9',
1152
1128
  'warn',
1153
1129
  'authoring-warnings-zero',
1154
- 'the R3F authoring analyzer could not be loaded, so authoring warnings were NOT checked — this run says nothing about them. It resolves through this project\'s tsconfig.json "@editor/*" path mapping.',
1155
- 'Restore the "@editor/*" mapping in tsconfig.json (it points at the engine checkout, or at node_modules/@volter/editor-core/src) and re-run. `npm run vgai -- status` reports the same counts from the live editor meanwhile.',
1130
+ 'the R3F authoring analyzer could not be loaded, so authoring warnings were NOT checked — this run says nothing about them. It resolves from the installed `@volter/editor-react` package.',
1131
+ 'Install the project\'s dependencies (`npm install`): the analyzer is `@volter/editor-react`\'s source and the region resolver `@volter/editor-sdk`\'s. `npm run volter -- status` reports the same counts from the live editor meanwhile.',
1156
1132
  );
1157
1133
  return;
1158
1134
  }
1159
1135
 
1160
1136
  const resolved = loadRegionSurfaces();
1161
1137
  if (!resolved) {
1162
- if (!existsSync(join(rootDir, 'vgai.project.json'))) return;
1138
+ if (!existsSync(join(rootDir, 'volter.project.json'))) return;
1163
1139
  addProjectFinding(
1164
1140
  'E9',
1165
1141
  'warn',
1166
1142
  'authoring-warnings-zero',
1167
1143
  "the region resolver could not be loaded, so no file could be attributed to this project's `three` region and authoring warnings were NOT checked — this run says nothing about them.",
1168
- 'Restore the "@editor/*" mapping in tsconfig.json (it points at the engine checkout, or at node_modules/@volter/editor-core/src) and re-run. `npm run vgai -- status` reports the same counts from the live editor meanwhile.',
1144
+ 'Install the project\'s dependencies (`npm install`): the analyzer is `@volter/editor-react`\'s source and the region resolver `@volter/editor-sdk`\'s. `npm run volter -- status` reports the same counts from the live editor meanwhile.',
1169
1145
  );
1170
1146
  return;
1171
1147
  }
@@ -1175,7 +1151,7 @@ function checkAuthoringWarnings(): void {
1175
1151
  'E9',
1176
1152
  'warn',
1177
1153
  'authoring-warnings-zero',
1178
- "vgai.adapter.ts declares a `regions` binding that cannot be read statically, so its `include` globs were NOT consulted — any file those globs place is missing from this run, while the editor's own loader still honors them.",
1154
+ "volter.adapter.ts declares a `regions` binding that cannot be read statically, so its `include` globs were NOT consulted — any file those globs place is missing from this run, while the editor's own loader still honors them.",
1179
1155
  'Write the regions as an array of object literals passed directly to defineAdapter({…}), with literal `id` and `include` values (not a hoisted const, not a spread).',
1180
1156
  );
1181
1157
  }
@@ -1349,7 +1325,7 @@ function checkPrefabStories(): void {
1349
1325
  // ---------------------------------------------------------------------------
1350
1326
 
1351
1327
  function manifestHasThreeRoot(): boolean {
1352
- const manifestPath = join(rootDir, 'vgai.project.json');
1328
+ const manifestPath = join(rootDir, 'volter.project.json');
1353
1329
  if (!existsSync(manifestPath)) return false;
1354
1330
  try {
1355
1331
  const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8')) as {
@@ -1448,7 +1424,7 @@ function checkSceneFolderContract(): void {
1448
1424
  checkPlaywrightImports();
1449
1425
  checkPackageJsonScripts();
1450
1426
  checkNoTestFurniture();
1451
- checkWindowVgai();
1427
+ checkWindowVolter();
1452
1428
  checkBotParam();
1453
1429
  checkPollingPump();
1454
1430
  checkColyseusStaticImport();
@@ -1470,7 +1446,7 @@ const warnFindings = findings.filter((f) => f.severity === 'warn');
1470
1446
  *
1471
1447
  * Measured failure: a blind probe ran `typecheck` seven times and this scanner
1472
1448
  * once, at minute 19, which turned every open finding into an end-of-build
1473
- * scramble. `vgai status` — the command an agent polls constantly — reads this
1449
+ * scramble. `volter-game-editor status` — the command an agent polls constantly — reads this
1474
1450
  * file and surfaces the open ERROR findings as an advisory count, so they are
1475
1451
  * visible from the first status call while THIS script stays the gate.
1476
1452
  *
@@ -1479,9 +1455,9 @@ const warnFindings = findings.filter((f) => f.severity === 'warn');
1479
1455
  */
1480
1456
  function writeFindingsRecord(): void {
1481
1457
  try {
1482
- mkdirSync(join(rootDir, '.vgai'), { recursive: true });
1458
+ mkdirSync(join(rootDir, '.volter'), { recursive: true });
1483
1459
  writeFileSync(
1484
- join(rootDir, '.vgai', 'check-idioms.json'),
1460
+ join(rootDir, '.volter', 'check-idioms.json'),
1485
1461
  `${JSON.stringify(
1486
1462
  {
1487
1463
  at: new Date().toISOString(),
@@ -1,6 +1,6 @@
1
1
  import type { Plugin } from 'vite';
2
2
 
3
- const MANIFEST_ENTRIES_ID = 'virtual:vgai-manifest-entries';
3
+ const MANIFEST_ENTRIES_ID = 'virtual:volter-manifest-entries';
4
4
  const RESOLVED_MANIFEST_ENTRIES_ID = `\0${MANIFEST_ENTRIES_ID}`;
5
5
 
6
6
  function collectManifestEntries(manifest: unknown): string[] {
@@ -20,7 +20,7 @@ function collectManifestEntries(manifest: unknown): string[] {
20
20
 
21
21
  for (const entry of entries) {
22
22
  if (entry.startsWith('/') || entry.includes('\\') || entry.split('/').includes('..')) {
23
- throw new Error(`vgai.project.json world entry must be project-relative: ${entry}`);
23
+ throw new Error(`volter.project.json world entry must be project-relative: ${entry}`);
24
24
  }
25
25
  }
26
26
 
@@ -31,18 +31,31 @@ function collectManifestEntries(manifest: unknown): string[] {
31
31
  * Render imports for the manifest's exact `roots[].entry` declarations.
32
32
  * The manifest—not a filename convention—is the only discovery source.
33
33
  */
34
+ function declaresCanvasRoot(manifest: unknown): boolean {
35
+ const roots = manifest && typeof manifest === 'object' ? (manifest as { roots?: unknown }).roots : undefined;
36
+ return (
37
+ Array.isArray(roots) &&
38
+ roots.some((root) => root && typeof root === 'object' && (root as { adapter?: unknown }).adapter === 'canvas')
39
+ );
40
+ }
41
+
34
42
  export function renderManifestEntryModule(manifest: unknown): string {
35
43
  const entries = collectManifestEntries(manifest);
36
44
  const imports = entries.map(
37
45
  (entry, index) => `import * as entry${index} from ${JSON.stringify(`/${entry}`)};`,
38
46
  );
39
47
  const members = entries.map((entry, index) => `${JSON.stringify(entry)}: entry${index}`);
40
- return `${imports.join('\n')}\nexport const manifestEntryModules = {${members.join(',')}};\n`;
48
+ // Pixi rides only with a declared `canvas` root: its mount (and the two packages it imports)
49
+ // is `src/canvas-mount.ts`, which only such a project carries.
50
+ const canvas = declaresCanvasRoot(manifest)
51
+ ? `export { mountCanvasRoot } from "/src/canvas-mount.ts";`
52
+ : 'export const mountCanvasRoot = undefined;';
53
+ return `${imports.join('\n')}\nexport const manifestEntryModules = {${members.join(',')}};\n${canvas}\n`;
41
54
  }
42
55
 
43
56
  export function manifestEntryModulesPlugin(manifest: unknown): Plugin {
44
57
  return {
45
- name: 'vgai:manifest-entry-modules',
58
+ name: 'volter:manifest-entry-modules',
46
59
  resolveId(id) {
47
60
  return id === MANIFEST_ENTRIES_ID ? RESOLVED_MANIFEST_ENTRIES_ID : undefined;
48
61
  },
@@ -8,14 +8,14 @@
8
8
  "node": ">=22.0.0"
9
9
  },
10
10
  "scripts": {
11
- "vgai": "volter-game-editor",
11
+ "volter": "volter-game-editor",
12
12
  "dev": "volter-game-editor edit .",
13
13
  "dev:standalone": "vite",
14
14
  "build": "tsc && vite build",
15
15
  "preview": "vite preview",
16
16
  "postinstall": "node scripts/patch-drei-stats-gl.mjs",
17
17
  "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.tools.json && tsc --noEmit -p tsconfig.node.json && tsc --noEmit -p server/tsconfig.json",
18
- "validate-manifest": "npx tsx validate-manifest.ts vgai.project.json",
18
+ "validate-manifest": "npx tsx validate-manifest.ts volter.project.json",
19
19
  "check-idioms": "npx tsx check-idioms.ts .",
20
20
  "server": "npx tsx --tsconfig server/tsconfig.json server/main.ts"
21
21
  },
@@ -24,15 +24,13 @@
24
24
  "@colyseus/sdk": "^0.17.34",
25
25
  "@react-three/drei": "^10.7.7",
26
26
  "@react-three/fiber": "^9.6.1",
27
- "@volter/editor-project": "^0.5.68",
28
- "@volter/game-runtime": "^0.5.68",
29
- "@volter/threejs-runtime": "^0.5.68",
27
+ "@volter/editor-project": "^0.5.70",
28
+ "@volter/game-runtime": "^0.5.70",
29
+ "@volter/threejs-runtime": "^0.5.70",
30
30
  "react": "~19.2.4",
31
31
  "react-dom": "~19.2.4",
32
32
  "three": "^0.180.0",
33
- "zod": "^4.3.6",
34
- "@pixi/react": "8.0.5",
35
- "pixi.js": "^8.6.0"
33
+ "zod": "^4.3.6"
36
34
  },
37
35
  "devDependencies": {
38
36
  "@colyseus/ws-transport": "^0.17.9",
@@ -42,13 +40,13 @@
42
40
  "@types/react-dom": "^19.2.3",
43
41
  "@types/three": "^0.180.0",
44
42
  "@vitejs/plugin-react": "^5.1.4",
45
- "@volter/editor-core": "^0.5.68",
46
- "@volter/editor-game": "^0.5.68",
47
- "@volter/editor-live": "^0.5.68",
48
- "@volter/editor-sdk": "^0.5.68",
49
- "@volter/editor-threejs": "^0.5.68",
50
- "@volter/game-editor": "^0.5.68",
51
- "@volter/game-live": "^0.5.68",
43
+ "@volter/editor-core": "^0.5.70",
44
+ "@volter/editor-game": "^0.5.70",
45
+ "@volter/editor-live": "^0.5.70",
46
+ "@volter/editor-sdk": "^0.5.70",
47
+ "@volter/editor-threejs": "^0.5.70",
48
+ "@volter/game-editor": "^0.5.70",
49
+ "@volter/game-live": "^0.5.70",
52
50
  "colyseus": "^0.17.8",
53
51
  "storybook": "10.6.0",
54
52
  "tsx": "^4.23.0",