@volter/game-editor 0.5.67 → 0.5.69

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 (568) hide show
  1. package/BUNDLED_NOTICES +10954 -5077
  2. package/LICENSE +1 -1
  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 +6 -6
  11. package/catalog/project-source/LICENSE +1 -1
  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/music/music-player.ts +18 -12
  17. package/catalog/project-source/src/lib/reflections/volume-reflection-material.ts +59 -59
  18. package/catalog/project-source/src/lib/static-batch/Frozen.tsx +1 -1
  19. package/catalog/project-source/src/lib/static-batch/mutation-watch.ts +1 -1
  20. package/catalog/project-source/src/tools/bake-preview.tool.ts +9 -9
  21. package/dist/.vite/manifest.json +4106 -3965
  22. package/dist/assets/{AssetBudgetPanel-x_FNJbfZ.js → AssetBudgetPanel-BMR3AQhc.js} +10 -10
  23. package/dist/assets/AudioViewer-DESxi7pU.js +1 -0
  24. package/dist/assets/CanvasBoardDocument-Q_nrYFlB.js +1 -0
  25. package/dist/assets/CanvasSceneViewport-WZMoKy_F.js +1 -0
  26. package/dist/assets/ColorInput-C2EK-OnD.js +1 -0
  27. package/dist/assets/{EntityModelDocument-CzUHsH9E.js → EntityModelDocument-B_4ENTCq.js} +1 -1
  28. package/dist/assets/{EnvironmentAssetDocument-ByEB7_4A.js → EnvironmentAssetDocument-BZBp6OFJ.js} +1 -1
  29. package/dist/assets/{GameplaySessionTimeline-dhG-oiqd.js → GameplaySessionTimeline-1ivaucpv.js} +1 -1
  30. package/dist/assets/ImageViewer-D16OExYu.js +1 -0
  31. package/dist/assets/{InspectorCanvasPreview-CEr_Kxna.js → InspectorCanvasPreview-BrFjhoiD.js} +1 -1
  32. package/dist/assets/InspectorObjectPreview-CY5xVsPR.js +1 -0
  33. package/dist/assets/JsonAssetDocument-CvjTlcdr.js +2 -0
  34. package/dist/assets/{LiveModuleDocument-DL8QHSlk.js → LiveModuleDocument-ne1o9giX.js} +1 -1
  35. package/dist/assets/{LutAssetDocument-BImiug2M.js → LutAssetDocument-Cp0v-O7q.js} +1 -1
  36. package/dist/assets/ModelAssetDocument-Ceu7OIN9.js +1 -0
  37. package/dist/assets/{NonThreeAuthoringBootstrap-B40qmGGS.js → NonThreeAuthoringBootstrap-DiElZf-e.js} +1 -1
  38. package/dist/assets/Object3DDocumentToolbar-BLNamqii.js +1 -0
  39. package/dist/assets/Object3DDocumentViewport-D6QoHfa_.js +2 -0
  40. package/dist/assets/{Object3DPreview-ClYDoH2L.js → Object3DPreview-ZVokr044.js} +1 -1
  41. package/dist/assets/OnlineAssetDetail-Dnckd7zB.js +1 -0
  42. package/dist/assets/PlayBar-DsMitSgy.js +1 -0
  43. package/dist/assets/{QuarksAssetDocument-B-VOj-n4.js → QuarksAssetDocument-B5J8uHFM.js} +1 -1
  44. package/dist/assets/ReactCanvasControls-CmfvxJYY.js +1 -0
  45. package/dist/assets/RootSelectionOverlay-BWsNiSuM.js +1 -0
  46. package/dist/assets/{ShaderAssetDocument-Kn8IvRGV.js → ShaderAssetDocument-CT7XzsZq.js} +5 -5
  47. package/dist/assets/ShadowEditor-YO5KEfnz.js +1 -0
  48. package/dist/assets/{SourceAssetViewer-CLQ95VSD.js → SourceAssetViewer-FSLup2km.js} +1 -1
  49. package/dist/assets/StageHost-DYfGYwvq.js +2 -0
  50. package/dist/assets/{StoryPreviewMount-D2lg37et.js → StoryPreviewMount-BhvT5QlB.js} +1 -1
  51. package/dist/assets/ThreeBoardDocument-B-z2nwnH.js +2 -0
  52. package/dist/assets/{ThreeIsolationSceneContent-DbYIylZQ.js → ThreeIsolationSceneContent-B5pU4Y6k.js} +1 -1
  53. package/dist/assets/{ToolObject3DPreview-WEi6C9uU.js → ToolObject3DPreview-VtraiQ4Q.js} +1 -1
  54. package/dist/assets/Toolbar-M62Gob9T.js +1 -0
  55. package/dist/assets/{TransientHint-BpDLhRLd.js → TransientHint-Cc40mHWE.js} +1 -1
  56. package/dist/assets/VideoViewer-BxcUwXQm.js +1 -0
  57. package/dist/assets/ViewportShadingMenu-BoMPnTVh.js +1 -0
  58. package/dist/assets/active-ingest-0QjJWb7i.js +3 -0
  59. package/dist/assets/{animation-clock-Bm80XdqP.js → animation-clock-BXEwUJtz.js} +1 -1
  60. package/dist/assets/animation-mixers.service-C-Ko4KzM.js +1 -0
  61. package/dist/assets/animation-timeline.utility-Bl15-rYb.js +1 -0
  62. package/dist/assets/{asset-budget-asset.menu-CEgP0Kiw.js → asset-budget-asset.menu-BUa3g0Wy.js} +1 -1
  63. package/dist/assets/{asset-budget.action-D4R1c3wi.js → asset-budget.action-Dl5eVPIo.js} +1 -1
  64. package/dist/assets/{asset-budget.document-Syzjn1U1.js → asset-budget.document-DJylQ-0h.js} +1 -1
  65. package/dist/assets/{asset-budget.menu-BbRiqXeM.js → asset-budget.menu-BJtvNMLj.js} +1 -1
  66. package/dist/assets/asset-editor-persistence-BIbf5u0Q.js +1 -0
  67. package/dist/assets/asset-loaders-DoNflsHL.js +2 -0
  68. package/dist/assets/{asset-preview-B1tDziF1.js → asset-preview-DxlSdRZn.js} +1 -1
  69. package/dist/assets/{audio-unlock.service-ucMfCVBw.js → audio-unlock.service-CTaiyXF9.js} +1 -1
  70. package/dist/assets/audio.utility-CEmNc68t.js +1 -0
  71. package/dist/assets/autoplay.service-BZLSUyL8.js +1 -0
  72. package/dist/assets/{babylon-authoring-adapter-C8mFMXSr.js → babylon-authoring-adapter-BZvV2bz_.js} +1 -1
  73. package/dist/assets/binding-resolver-DGbk9_XR.js +2 -0
  74. package/dist/assets/blender-emscripten-engine-B7lfg-RX.js +2 -0
  75. package/dist/assets/{blender-node-editor.document-C1YmwWls.js → blender-node-editor.document-wXJobGNH.js} +1 -1
  76. package/dist/assets/{blender-properties-tab-B8lyjgj3.js → blender-properties-tab-7GFf80ev.js} +1 -1
  77. package/dist/assets/{blender-runtime-host-CyQlImSR.js → blender-runtime-host-CILxrx5T.js} +2 -2
  78. package/dist/assets/{blender-runtime-skin-BK7ShZ6z.js → blender-runtime-skin-Cd5lQYsC.js} +7 -7
  79. package/dist/assets/{blender-runtime.document-B0nVQs0P.js → blender-runtime.document-C0r_R49S.js} +7 -7
  80. package/dist/assets/{blender-timeline.document-CMcdE2CK.js → blender-timeline.document-BaISZMBc.js} +1 -1
  81. package/dist/assets/{blender-uv-editor.document-CjqNo4sZ.js → blender-uv-editor.document-CT_fsyyA.js} +1 -1
  82. package/dist/assets/blender-version.status-DzEx7u7k.js +1 -0
  83. package/dist/assets/blender-wali-engine-DOiQCBXH.js +2 -0
  84. package/dist/assets/{blender.command-C6NmRBo5.js → blender.command-DdiKd8mZ.js} +1 -1
  85. package/dist/assets/blender.keymap-BmOBRY7p.js +1 -0
  86. package/dist/assets/blender.status-BMETIbb2.js +1 -0
  87. package/dist/assets/board-guides-CjHQ9Ynm.js +1 -0
  88. package/dist/assets/body-marks-C1LxJtQb.js +1 -0
  89. package/dist/assets/bridge.command-DXUeavn5.js +3 -0
  90. package/dist/assets/{browserAll-lF_dLQVz.js → browserAll-Dg46xT22.js} +1 -1
  91. package/dist/assets/build-player.document-BHwVV3K0.js +1 -0
  92. package/dist/assets/build-profiles.document-HkpS-Kxa.js +2 -0
  93. package/dist/assets/build-progress.status-u1J0Rm1D.js +1 -0
  94. package/dist/assets/build-session-BLboUUbw.js +9 -0
  95. package/dist/assets/{build.action-DRX2IcYt.js → build.action-C00DL83N.js} +1 -1
  96. package/dist/assets/{build.command-BGvLaLG0.js → build.command-Cjk_NY75.js} +1 -1
  97. package/dist/assets/build.header-BWNmNWFT.js +1 -0
  98. package/dist/assets/{build.menu-UenrjPWS.js → build.menu-BBYtqCIq.js} +1 -1
  99. package/dist/assets/{build.service-BIUoTY6l.js → build.service-DOU15tKN.js} +1 -1
  100. package/dist/assets/{camera-DrvaM47S.js → camera-7DGyYW7Y.js} +1 -1
  101. package/dist/assets/{camera-runtime.inspector-CjJALNO8.js → camera-runtime.inspector-n-jiOR-3.js} +1 -1
  102. package/dist/assets/canvas-design-mount-CSRHU-ag.js +6 -0
  103. package/dist/assets/canvas-entry-runtime-BST8yRuK.js +2 -0
  104. package/dist/assets/{canvas-preview-frames-C0QTagA3.js → canvas-preview-frames-Cja32aW2.js} +1 -1
  105. package/dist/assets/{canvas-story-capture.service-Dgjr-rT1.js → canvas-story-capture.service-D5R5HJ8n.js} +2 -2
  106. package/dist/assets/capability-coverage-ByWftxk4.js +7 -0
  107. package/dist/assets/{collaboration-presence-BVIQuN1l.js → collaboration-presence-D6MC9xJN.js} +1 -1
  108. package/dist/assets/{collider-C7SbIYKY.js → collider-B78EcUc9.js} +1 -1
  109. package/dist/assets/{component-board.service-BEsFAw4_.js → component-board.service-BaQI5Oas.js} +2 -2
  110. package/dist/assets/component-board.service-CkjrsD8x.js +2 -0
  111. package/dist/assets/{component-board.service-CWFaGMCO.js → component-board.service-Dvjz_g-x.js} +2 -2
  112. package/dist/assets/component-contracts.service-C3-AXQp7.js +1 -0
  113. package/dist/assets/component-instance-root-DLI40MiB.js +1 -0
  114. package/dist/assets/{component-verbs.command-oNtGgzQL.js → component-verbs.command-Brr_WcaR.js} +1 -1
  115. package/dist/assets/component-verbs.service-DC2sC3j3.js +1 -0
  116. package/dist/assets/{config-_wCzzlM_.js → config-BI_7osdR.js} +3 -3
  117. package/dist/assets/{configurations-BXU4GGbV.js → configurations-XP9YLkrt.js} +1 -1
  118. package/dist/assets/connection.status-BhRwcFx0.js +1 -0
  119. package/dist/assets/{constraint-5KLYpGm7.js → constraint-Bp1l8hY-.js} +1 -1
  120. package/dist/assets/constraints.inspector-Dm1cycK3.js +1 -0
  121. package/dist/assets/{content-bounds-BeuIXKYu.js → content-bounds-DROIchTa.js} +1 -1
  122. package/dist/assets/{contract-system-adapters-Bic_7sev.js → contract-system-adapters-Cn7OW_ay.js} +1 -1
  123. package/dist/assets/coverage.service-l42ty7lr.js +3 -0
  124. package/dist/assets/create-runtime-B_uTwsmi.js +3 -0
  125. package/dist/assets/curve-THOUsg-j.js +1 -0
  126. package/dist/assets/{data-asset-DfQ2Pjse.js → data-asset-DAANayR6.js} +1 -1
  127. package/dist/assets/data-check-core-CHqar_E8.js +1 -0
  128. package/dist/assets/data-ref-CN34UeVw.js +1 -0
  129. package/dist/assets/debug-bridge-BD1XVAIB.js +1 -0
  130. package/dist/assets/debug-registry-ggQWxtu-.js +1 -0
  131. package/dist/assets/{deferred-ingest-play-BdR4qGk6.js → deferred-ingest-play-B2JUlwlT.js} +2 -2
  132. package/dist/assets/{design-time-canvas-mount-DPQeHSN2.js → design-time-canvas-mount-as9cN9I6.js} +2 -2
  133. package/dist/assets/design-time-layers-BRseeSmV.js +1 -0
  134. package/dist/assets/{design-time-mount.service-Ks-5Wkcs.js → design-time-mount.service-BTVu3yKo.js} +2 -2
  135. package/dist/assets/{design-time-mount.service-Ca-DZGFV.js → design-time-mount.service-DKvc7lVK.js} +2 -2
  136. package/dist/assets/design-time-react-mount-C7rB56QD.js +1 -0
  137. package/dist/assets/{document-preview-three-DThkjI1S.js → document-preview-three-CxmRhCcV.js} +1 -1
  138. package/dist/assets/{dom-authoring-adapter-BrLU8IJ_.js → dom-authoring-adapter-L8OzXfmE.js} +1 -1
  139. package/dist/assets/{draco3d-B2cwv46o.js → draco3d-BjNuXv66.js} +1 -1
  140. package/dist/assets/{edit-mode-audio.service-D4ITNbsm.js → edit-mode-audio.service-BwI5u845.js} +1 -1
  141. package/dist/assets/edit-mode-authoring-D5f7aHHl.js +1 -0
  142. package/dist/assets/{edit-mode-networking.service-BNv-FTRh.js → edit-mode-networking.service-DqP_4lbI.js} +1 -1
  143. package/dist/assets/editor-api-BM7H_F4G.js +1 -0
  144. package/dist/assets/{editor-layers-BDJnAAzj.js → editor-layers-D-CTUqco.js} +1 -1
  145. package/dist/assets/editor-presentation-activity-CqJH4G9t.js +1 -0
  146. package/dist/assets/{editor-shell-store-ChLcVeNB.js → editor-shell-store-DHVWS8cE.js} +1 -1
  147. package/dist/assets/{entity-object-JmYMfLsx.js → entity-object-MKYemTFM.js} +1 -1
  148. package/dist/assets/{extend-Cc-nEa_A.js → extend-BrgqZiMY.js} +1 -1
  149. package/dist/assets/fork-menu-DE2MK3Nq.js +1 -0
  150. package/dist/assets/{frame-debugger-store-DaCbAYSW.js → frame-debugger-store-BXoLKTdZ.js} +1 -1
  151. package/dist/assets/game-audio-BeCyd0Ha.js +1 -0
  152. package/dist/assets/{game-contract-seams-BnPFGLll.js → game-contract-seams-tyKDsfaP.js} +1 -1
  153. package/dist/assets/{game-css-scope-transform-D_p7cVgW.js → game-css-scope-transform-DcjrwtVc.js} +2 -2
  154. package/dist/assets/game-document.service-CTb2itHQ.js +1 -0
  155. package/dist/assets/game-eval.command-CpDKXOQU.js +2 -0
  156. package/dist/assets/game-module-access-BTInp2NG.js +1 -0
  157. package/dist/assets/game-network-DW5ARz4R.js +22 -0
  158. package/dist/assets/{gameplay-export-BzYzLZPi.js → gameplay-export-cHk3v9y-.js} +1 -1
  159. package/dist/assets/gameplay-replay-HRenPTtU.js +1 -0
  160. package/dist/assets/gameplay.command-DcY2lKKX.js +1 -0
  161. package/dist/assets/generation-CdOATubd.css +1 -0
  162. package/dist/assets/{generation-jobs-BZhOMrp-.js → generation-jobs-CJBehuUp.js} +1 -1
  163. package/dist/assets/generation.service-BMOc-C9i.js +1 -0
  164. package/dist/assets/{generations-DVDht_31.js → generations-ssgVOe_6.js} +1 -1
  165. package/dist/assets/generations.status-B_SmPReI.js +1 -0
  166. package/dist/assets/hierarchy-marks-BuCO8Ke-.js +1 -0
  167. package/dist/assets/hierarchy-marks-CsTaTkc7.js +1 -0
  168. package/dist/assets/hosted-asset-materialization-CiXZI85V.js +2 -0
  169. package/dist/assets/{ibl-override-material-CiKkaOTW.js → ibl-override-material-CMo_a49U.js} +1 -1
  170. package/dist/assets/index-B0S4fQQV.js +1 -0
  171. package/dist/assets/{index-C3Pw-9So.js → index-B9bd4k-t.js} +1 -1
  172. package/dist/assets/index-BMxv2MNV.js +1 -0
  173. package/dist/assets/{index-DUZeuA7g.js → index-Bm4_DmRO.js} +1 -1
  174. package/dist/assets/{index-cNc-iFbq.js → index-BvBlIRwM.js} +1 -1
  175. package/dist/assets/{index-Ck3JFh48.js → index-BweKDdi_.js} +1 -1
  176. package/dist/assets/{index-BRJMIUK0.js → index-C5ZAyrKq.js} +346 -345
  177. package/dist/assets/index-CPiRKiDC.css +1 -0
  178. package/dist/assets/index-CfpGZrbC.js +1 -0
  179. package/dist/assets/index-Czvj6whv.js +1 -0
  180. package/dist/assets/{index-SS9EugVg.js → index-DgPDGGSV.js} +2 -2
  181. package/dist/assets/{inference-diagnostics-xecGdohW.js → inference-diagnostics-DLt9ql9I.js} +1 -1
  182. package/dist/assets/{ingest-boot-viewport-DAt8WFSy.js → ingest-boot-viewport-BXVXjYpG.js} +1 -1
  183. package/dist/assets/ingest-siblings-DWJ7OGB_.js +1 -0
  184. package/dist/assets/ingest-source-persistence-6ShMoSCa.js +1 -0
  185. package/dist/assets/ingest.service-BBbX8ibg.js +1 -0
  186. package/dist/assets/{inspect-Dr4qvDpJ.js → inspect-Cz3Zyx_1.js} +1 -1
  187. package/dist/assets/inspection-D8fZOHCM.js +1 -0
  188. package/dist/assets/instances.command-BrdlngrL.js +1 -0
  189. package/dist/assets/{json-history-resource-DwS10tqD.js → json-history-resource-Uqrihfc8.js} +1 -1
  190. package/dist/assets/layered-pick-CAVQMPI7.js +1 -0
  191. package/dist/assets/{light-DcFqVCmv.js → light-CqzsCWeJ.js} +1 -1
  192. package/dist/assets/{live-project-verbs-C3LzprCe.js → live-project-verbs-CdFmLYOo.js} +1 -1
  193. package/dist/assets/{machine.document-BzZxubYQ.js → machine.document-DRIFOVaa.js} +1 -1
  194. package/dist/assets/{machines.finder-BR02bfVG.js → machines.finder-DPCT6few.js} +1 -1
  195. package/dist/assets/material-BVApn1V_.js +1 -0
  196. package/dist/assets/{material-factory-COz7qZhC.js → material-factory-B_75xxFD.js} +1 -1
  197. package/dist/assets/{mesh-DcmO-mWI.js → mesh-DdA3mExo.js} +1 -1
  198. package/dist/assets/model-asset-sections-D1uxOu2v.css +1 -0
  199. package/dist/assets/model-asset-sections.service-CJnSIckZ.js +1 -0
  200. package/dist/assets/{model-inspection-CXHxrafK.js → model-inspection-DvspbmJl.js} +1 -1
  201. package/dist/assets/{model-thumbnail-BEKPWg4l.js → model-thumbnail-BmQs-h6t.js} +1 -1
  202. package/dist/assets/{models.finder-c1I0tp2M.js → models.finder-Qv_Hsccy.js} +1 -1
  203. package/dist/assets/module-mode-MJ4Gbsry.js +2 -0
  204. package/dist/assets/mount-canvas-ingest-root-BxtM8OaB.js +2 -0
  205. package/dist/assets/mount-dom-ingest-root-pGatqO46.js +2 -0
  206. package/dist/assets/mount-ingest-root-C7jb-mCl.js +2 -0
  207. package/dist/assets/mount-manifest-BfoHBuzn.js +1 -0
  208. package/dist/assets/mount-readiness-DyAd17pe.js +4 -0
  209. package/dist/assets/mount-three-ingest-root-Boa5mcaF.js +1 -0
  210. package/dist/assets/{mounted-authoring-Clftxx0x.js → mounted-authoring-DxMISwvR.js} +1 -1
  211. package/dist/assets/{mounted-story-viewport-source-B4-eAYGI.js → mounted-story-viewport-source-DfnLxI1f.js} +1 -1
  212. package/dist/assets/{native-debug-module-2_HVupdg.js → native-debug-module-BlrALjM3.js} +1 -1
  213. package/dist/assets/{navigation-CH3-zr1n.js → navigation-CqG5o5AR.js} +1 -1
  214. package/dist/assets/{navmesh.menu-Dfi-Pk-8.js → navmesh.menu-D4TdVDhe.js} +1 -1
  215. package/dist/assets/{navmesh.service-Cz7QFY-M.js → navmesh.service-DWKT5ruQ.js} +1 -1
  216. package/dist/assets/network-observer.service-ZRAquNq4.js +1 -0
  217. package/dist/assets/network.utility-DjeOEvAY.js +1 -0
  218. package/dist/assets/object-marks-BnvSuCTt.js +1 -0
  219. package/dist/assets/{object3d-authoring-subject-BDrxd1GA.js → object3d-authoring-subject-XccsO0xG.js} +1 -1
  220. package/dist/assets/{object3d-document-session-registry-DJDEDM0p.js → object3d-document-session-registry-CMRJdFp6.js} +2 -2
  221. package/dist/assets/{oid-transform-D5Kxt6ij.js → oid-transform-DaA6yW6o.js} +1 -1
  222. package/dist/assets/{particles-vRp0Lf3o.js → particles-DsQRcDBY.js} +1 -1
  223. package/dist/assets/{performance-profiler-OwnXQX0M.js → performance-profiler-CMbwGBuk.js} +1 -1
  224. package/dist/assets/pixi-authoring-adapter-BoBt8bB5.js +1 -0
  225. package/dist/assets/pixi-live-write-target-CYZgvC6U.js +1 -0
  226. package/dist/assets/play.command-D9JGJP-e.js +2 -0
  227. package/dist/assets/pose-guard-CLabLSzf.js +1 -0
  228. package/dist/assets/presentation-COhHQdmR.js +1 -0
  229. package/dist/assets/{product-CxmUIxmr.js → product-CaRGoiIH.js} +1 -1
  230. package/dist/assets/{profiler.action-Dzy9DuAc.js → profiler.action-Cz7HYWjh.js} +1 -1
  231. package/dist/assets/{profiler.menu-jLDO3U6N.js → profiler.menu-D5aR_FBy.js} +1 -1
  232. package/dist/assets/profiler.utility-KwxlIPKb.js +1 -0
  233. package/dist/assets/{project-authoring-session-C3eusefK.js → project-authoring-session-DKXHVwxO.js} +2 -2
  234. package/dist/assets/project-provenance-BGnJXJwa.js +1 -0
  235. package/dist/assets/{properties-bone-constraints.inspector-B_PbSMV7.js → properties-bone-constraints.inspector-Bo-sU8eR.js} +1 -1
  236. package/dist/assets/{properties-bone.inspector-CMDEQuBd.js → properties-bone.inspector-BQiWplQv.js} +1 -1
  237. package/dist/assets/{properties-collection.inspector-D7Ay8yRj.js → properties-collection.inspector-C5BnR-GE.js} +1 -1
  238. package/dist/assets/{properties-constraints.inspector-DS1fZgXK.js → properties-constraints.inspector-CyheU12R.js} +1 -1
  239. package/dist/assets/{properties-data.inspector-k2pGN2Mp.js → properties-data.inspector-CkycARja.js} +1 -1
  240. package/dist/assets/{properties-material.inspector-Bb3yAGUx.js → properties-material.inspector-Bl_PUmY-.js} +1 -1
  241. package/dist/assets/{properties-modifiers.inspector-BcJfe-Wy.js → properties-modifiers.inspector-j7SnOxQq.js} +1 -1
  242. package/dist/assets/{properties-object.inspector-CUSfXJuq.js → properties-object.inspector-DcR3MGLK.js} +1 -1
  243. package/dist/assets/{properties-output.inspector-BTVW2kn1.js → properties-output.inspector-BLjw6K4b.js} +1 -1
  244. package/dist/assets/{properties-particles.inspector-Cw0fxx3B.js → properties-particles.inspector-BUIm2-Jf.js} +1 -1
  245. package/dist/assets/{properties-physics.inspector-C-0bD2bu.js → properties-physics.inspector-DNvRcxb6.js} +1 -1
  246. package/dist/assets/{properties-render.inspector-C8D5UpjX.js → properties-render.inspector-8FMZ-qoZ.js} +1 -1
  247. package/dist/assets/{properties-scene.inspector-HjK6QHGg.js → properties-scene.inspector-Dx7_z75k.js} +1 -1
  248. package/dist/assets/{properties-texture.inspector-CckZgUaI.js → properties-texture.inspector-WT15951-.js} +1 -1
  249. package/dist/assets/{properties-view-layer.inspector-C1ajtVSk.js → properties-view-layer.inspector-P7VNTdqr.js} +1 -1
  250. package/dist/assets/{properties-world.inspector-BiT_EdT-.js → properties-world.inspector-B3t1q8TF.js} +1 -1
  251. package/dist/assets/r3f-design-session-lsbFnoWH.js +2 -0
  252. package/dist/assets/{r3f-physics-binding-DzrbpqjM.js → r3f-physics-binding-Cx8yhuwt.js} +1 -1
  253. package/dist/assets/{r3f-source-authoring-adapter-DbbeRcvt.js → r3f-source-authoring-adapter-jH3G0TeH.js} +2 -2
  254. package/dist/assets/react-canvas-navigation-B_gOe3CI.js +1 -0
  255. package/dist/assets/react-inspector.service-CZf1vfdX.js +1 -0
  256. package/dist/assets/react-story-board-CCm2Opwn.js +1 -0
  257. package/dist/assets/{react-three-rapier.esm-U8J7g6tH.js → react-three-rapier.esm-CHXGG51p.js} +1 -1
  258. package/dist/assets/react-world-authoring-adapter-CnzxMtYz.js +1 -0
  259. package/dist/assets/{realm-services-CnY105XU.js → realm-services-Do9J6nsb.js} +1 -1
  260. package/dist/assets/reflection-probe-capture.inspector-BAjjIybz.js +1 -0
  261. package/dist/assets/{reflection-probe-BHNGwVyz.js → reflection-probe-sIto9mh0.js} +1 -1
  262. package/dist/assets/registry-Xnduk02T.js +1 -0
  263. package/dist/assets/{relative-import-specifier-BFKIWEWs.js → relative-import-specifier-CPFTrxi4.js} +1 -1
  264. package/dist/assets/{render-env-BkKZ4uMA.js → render-env-YJlI8K0i.js} +1 -1
  265. package/dist/assets/{render-features-rxbawsRb.js → render-features-DMSV2qKJ.js} +1 -1
  266. package/dist/assets/{render-settings-DS5leCed.js → render-settings-CRyDhHyz.js} +1 -1
  267. package/dist/assets/{resolve-three-CVnMRHxw.js → resolve-three-D27rMc37.js} +19 -19
  268. package/dist/assets/root-seam-contract-gjWUd5uu.js +1 -0
  269. package/dist/assets/run-selection-B0jOdyYt.js +2 -0
  270. package/dist/assets/scene-capture-Di9cM1p4.js +1 -0
  271. package/dist/assets/scene-document.service-XxGs4HHE.js +2 -0
  272. package/dist/assets/{scene-framing-BQt72ZCw.js → scene-framing-DkZKDwH3.js} +1 -1
  273. package/dist/assets/{scene-index--lRWLEmW.js → scene-index-DHeKmalD.js} +1 -1
  274. package/dist/assets/{scene-query-s1y04OVB.js → scene-query-ByZtXA2m.js} +1 -1
  275. package/dist/assets/seeded-random-BJthDRMu.js +1 -0
  276. package/dist/assets/{session-CTXsU1lK.js → session-x8E_NJk2.js} +34 -34
  277. package/dist/assets/{setup-renderer-Cwkl1Ar6.js → setup-renderer-F9mG7t6r.js} +1 -1
  278. package/dist/assets/{source-object3d-authoring-adapter-DF679Ncb.js → source-object3d-authoring-adapter-CvmFpSUj.js} +1 -1
  279. package/dist/assets/{source-persistence-backend-CwLYVPXj.js → source-persistence-backend-au3WtEn6.js} +1 -1
  280. package/dist/assets/{spark-renderer-lifecycle-DfYpvEJa.js → spark-renderer-lifecycle-B6Axb6jm.js} +1 -1
  281. package/dist/assets/{stage-keyboard-B8BEW592.js → stage-keyboard-BQkndG_D.js} +1 -1
  282. package/dist/assets/stage-overlay-set-g6eWhuRv.js +1 -0
  283. package/dist/assets/stage-presence-markers-0CDfO5f4.js +1 -0
  284. package/dist/assets/stage-transform-tools-BzPl7OIo.js +1 -0
  285. package/dist/assets/standard-viewport-dressing-BW-dM_1h.js +24 -0
  286. package/dist/assets/{state-watch.action-DnR5Zjr-.js → state-watch.action-Z1nQ5awu.js} +1 -1
  287. package/dist/assets/{state-watch.menu-wYLCLsAw.js → state-watch.menu-CQHGUF3W.js} +1 -1
  288. package/dist/assets/state-watch.utility-DCIg2i79.js +1 -0
  289. package/dist/assets/{story-capture-BmnwHGDV.js → story-capture-BIrjDKeY.js} +1 -1
  290. package/dist/assets/story-documents-BvG2xeaR.js +3 -0
  291. package/dist/assets/{story-documents.service-B6v7Z-WE.js → story-documents.service-DOSEa3ja.js} +1 -1
  292. package/dist/assets/{story-documents.service-yagl1wGp.js → story-documents.service-y1m7XGMJ.js} +1 -1
  293. package/dist/assets/{story-media-presence-BqRMu572.js → story-media-presence-HLV-KaMj.js} +1 -1
  294. package/dist/assets/{story-pixi-preview-Da6afqLg.js → story-pixi-preview-CMhho2gG.js} +1 -1
  295. package/dist/assets/{story-presentation-DMSYRWaz.js → story-presentation-CYhVv8Ku.js} +1 -1
  296. package/dist/assets/story-three-preview-CgcLF5lE.js +2 -0
  297. package/dist/assets/{structural-ids-Br2zjINh.js → structural-ids-BOo2BRoY.js} +1 -1
  298. package/dist/assets/studio-environment-R9qXUUcC.js +2 -0
  299. package/dist/assets/{surface-state-1lTOi8FD.js → surface-state-D8Qnowo6.js} +1 -1
  300. package/dist/assets/{syntactic-prop-specs-eiQXwMIc.js → syntactic-prop-specs-8gkBuc5j.js} +1 -1
  301. package/dist/assets/team-playtest.service-BBMZ2iyk.js +1 -0
  302. package/dist/assets/{three-TCuY32m_.js → three-DiL6vMXq.js} +1 -1
  303. package/dist/assets/three-authoring-adapter-CkLR2zGf.js +1 -0
  304. package/dist/assets/three-authoring.service-CovhlCGx.js +2 -0
  305. package/dist/assets/{three-ingest-runtime-B7rtg3QE.js → three-ingest-runtime-CwTqAHgX.js} +1 -1
  306. package/dist/assets/{three-integration-BdN5Nhsg.js → three-integration-DXOFI88n.js} +2 -2
  307. package/dist/assets/three-integration.service-rCAqpqSp.js +1 -0
  308. package/dist/assets/three-projection-core-B7Lf8tOp.js +1 -0
  309. package/dist/assets/{three-state-DwFE3ay2.js → three-state-BCACvUtm.js} +1 -1
  310. package/dist/assets/{three-story-capture.service-CvpV3v5a.js → three-story-capture.service-rTFKNtHA.js} +2 -2
  311. package/dist/assets/{three-story-model-C2r2BuiA.js → three-story-model-BjKr7OMn.js} +1 -1
  312. package/dist/assets/three-viewport-presentation-CBzvc2v2.js +141 -0
  313. package/dist/assets/tools-DfctM216.js +1 -0
  314. package/dist/assets/transform-mode-request-DlEApNrA.js +1 -0
  315. package/dist/assets/transport-strip-xCg94CuI.js +1 -0
  316. package/dist/assets/transport.header-BRtdky0x.js +1 -0
  317. package/dist/assets/{trigger-volume-DP0G1VBe.js → trigger-volume-BLkHmfm9.js} +1 -1
  318. package/dist/assets/tuples-BDz3wbQL.js +1 -0
  319. package/dist/assets/ui-board-document-DvbK_HVN.js +2 -0
  320. package/dist/assets/{user-data-Bpj7diUS.js → user-data-C84W0V47.js} +1 -1
  321. package/dist/assets/user-data-CODoGZqA.js +1 -0
  322. package/dist/assets/{utility-view-state-CAfbFbKQ.js → utility-view-state-CDRxZSo-.js} +1 -1
  323. package/dist/assets/viewport-door-BARIpMu-.js +1 -0
  324. package/dist/assets/{viewport-root-presentation-vgxsTyj4.js → viewport-root-presentation-hRLF0BeO.js} +1 -1
  325. package/dist/assets/{viewport-surface-status-cwCiBGa7.js → viewport-surface-status-TUfhXKR9.js} +1 -1
  326. package/dist/assets/{webworkerAll-Cm3gTjWi.js → webworkerAll-PJtcQ1FD.js} +1 -1
  327. package/dist/assets/worker-BtXrsgFy.js +2 -0
  328. package/dist/assets/workspace-arrangement-DqG5sUns.js +1 -0
  329. package/dist/assets/world-documents-D69XaqUX.js +1 -0
  330. package/dist/assets/world-root-stage-binding-BgZWZEuD.js +1 -0
  331. package/dist/assets/{xstate-animation-binding-BGLxcZT_.js → xstate-animation-binding-CIyLzGHs.js} +1 -1
  332. package/dist/assets/{xstate-animation-meta-D_T441Ru.js → xstate-animation-meta-CbYWup3R.js} +1 -1
  333. package/dist/volter-shared-react.json +10 -0
  334. package/dist/volter-shared-three.json +3 -0
  335. package/dist-node/cli.js +253 -210
  336. package/dist-node/create.js +103 -82
  337. package/package.json +23 -20
  338. package/src/contributions.d.ts +1 -1
  339. package/src/index.ts +10 -10
  340. package/starter/cube.py +1 -1
  341. package/template/.agents/references/project-manual.md +17 -17
  342. package/template/.agents/skills/editor/SKILL.md +6 -6
  343. package/template/.agents/skills/editor/agents/openai.yaml +3 -3
  344. package/template/.agents/skills/editor/references/editor-control.md +62 -62
  345. package/template/{.claude/skills/vgai-3d-models → .agents/skills/volter-3d-models}/SKILL.md +3 -3
  346. package/template/{.github/skills/vgai-ingest-existing-game → .agents/skills/volter-ingest-existing-game}/SKILL.md +2 -2
  347. package/template/.agents/skills/{vgai-music → volter-music}/SKILL.md +35 -11
  348. package/template/{.claude/skills/vgai-threejs-authoring → .agents/skills/volter-threejs-authoring}/SKILL.md +9 -9
  349. package/template/.agents/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
  350. package/template/{.github/skills/vgai-threejs-authoring → .agents/skills/volter-threejs-authoring}/references/helper-catalog.md +1 -1
  351. package/template/.claude/skills/editor/SKILL.md +6 -6
  352. package/template/.claude/skills/editor/agents/openai.yaml +3 -3
  353. package/template/.claude/skills/editor/references/editor-control.md +62 -62
  354. package/template/{.agents/skills/vgai-3d-models → .claude/skills/volter-3d-models}/SKILL.md +3 -3
  355. package/template/{.agents/skills/vgai-ingest-existing-game → .claude/skills/volter-ingest-existing-game}/SKILL.md +2 -2
  356. package/template/{.github/skills/vgai-threejs-authoring → .claude/skills/volter-threejs-authoring}/SKILL.md +9 -9
  357. package/template/.claude/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
  358. package/template/.claude/skills/{vgai-threejs-authoring → volter-threejs-authoring}/references/helper-catalog.md +1 -1
  359. package/template/.github/copilot-instructions.md +1 -1
  360. package/template/.github/skills/editor/SKILL.md +6 -6
  361. package/template/.github/skills/editor/agents/openai.yaml +3 -3
  362. package/template/.github/skills/editor/references/editor-control.md +62 -62
  363. package/template/.github/skills/{vgai-3d-models → volter-3d-models}/SKILL.md +3 -3
  364. package/template/{.claude/skills/vgai-ingest-existing-game → .github/skills/volter-ingest-existing-game}/SKILL.md +2 -2
  365. package/template/{.agents/skills/vgai-threejs-authoring → .github/skills/volter-threejs-authoring}/SKILL.md +9 -9
  366. package/template/.github/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
  367. package/template/{.agents/skills/vgai-threejs-authoring → .github/skills/volter-threejs-authoring}/references/helper-catalog.md +1 -1
  368. package/template/.mcp.json +3 -3
  369. package/template/AGENTS.md +24 -23
  370. package/template/DEVLOG.md +1 -1
  371. package/template/IDIOMS.md +3 -3
  372. package/template/LICENSE +3 -3
  373. package/template/README.md +12 -12
  374. package/template/check-idioms.ts +51 -51
  375. package/template/manifest-entry-modules-plugin.ts +17 -4
  376. package/template/package.json +12 -12
  377. package/template/server/loopback.ts +1 -1
  378. package/template/server/main.ts +4 -4
  379. package/template/server/rooms/arena-room.ts +8 -8
  380. package/template/server/rooms/game-room.ts +8 -8
  381. package/template/server/rooms.ts +2 -2
  382. package/template/src/bot/QaTester.tsx +1 -1
  383. package/template/src/bot/bot-station.ts +2 -2
  384. package/template/src/bot/tester-station.ts +1 -1
  385. package/template/src/contributions/README.md +1 -1
  386. package/template/src/contributions/analytics.analytics.tsx +1 -1
  387. package/template/src/contributions/data.document.tsx +2 -2
  388. package/template/src/contributions/pages.finder.ts +1 -1
  389. package/template/src/contributions/tester.inspector.tsx +2 -2
  390. package/template/src/contributions/use-game-modules.ts +1 -1
  391. package/template/src/input.ts +2 -2
  392. package/template/src/lib/reflections/volume-reflection-material.ts +59 -59
  393. package/template/src/lib/static-batch/Frozen.tsx +1 -1
  394. package/template/src/lib/static-batch/mutation-watch.ts +1 -1
  395. package/template/src/main.ts +58 -6
  396. package/template/src/manifest-entry-modules.d.ts +12 -1
  397. package/template/src/prefabs/HeroBox.stories.tsx +1 -1
  398. package/template/src/world.tsx +1 -1
  399. package/template/tsconfig.json +1 -1
  400. package/template/validate-manifest.ts +3 -3
  401. package/template/vite.config.ts +11 -11
  402. package/template/{vgai.adapter.ts → volter.adapter.ts} +1 -1
  403. package/template/{vgai.project.json → volter.project.json} +2 -2
  404. package/template-dotfiles/gitignore +27 -27
  405. package/workbench/src/media/game-cover.css +11 -11
  406. package/workbench/src/product.contribution.ts +28 -28
  407. package/workbench/src/{vgaiGameSkew.ts → volterGameSkew.ts} +16 -16
  408. package/dist/assets/AudioViewer-BDPqHDfU.js +0 -1
  409. package/dist/assets/CanvasBoardDocument-mxL0oJ3N.js +0 -1
  410. package/dist/assets/CanvasSceneViewport-C_mapCwC.js +0 -1
  411. package/dist/assets/ColorInput-QUPS1pEB.js +0 -1
  412. package/dist/assets/ImageViewer-tlVvkdM4.js +0 -1
  413. package/dist/assets/InspectorObjectPreview-W-y079DS.js +0 -1
  414. package/dist/assets/JsonAssetDocument-CPmcWFPW.js +0 -2
  415. package/dist/assets/ModelAssetDocument-De1HKuxG.js +0 -1
  416. package/dist/assets/Object3DDocumentToolbar-Cks81kCS.js +0 -1
  417. package/dist/assets/Object3DDocumentViewport-DCwiSY3O.js +0 -2
  418. package/dist/assets/OnlineAssetDetail-CNuwSQRQ.js +0 -1
  419. package/dist/assets/PlayBar-bT8Xdrap.js +0 -1
  420. package/dist/assets/ReactCanvasControls-CnJrPj-B.js +0 -1
  421. package/dist/assets/RootSelectionOverlay-CpaGluQu.js +0 -1
  422. package/dist/assets/ShadowEditor-CVtMlALn.js +0 -1
  423. package/dist/assets/StageHost-B89HKcvd.js +0 -2
  424. package/dist/assets/ThreeBoardDocument-BAgHrbtu.js +0 -2
  425. package/dist/assets/Toolbar-DkTHnQto.js +0 -1
  426. package/dist/assets/VideoViewer-DMV8lf4P.js +0 -1
  427. package/dist/assets/ViewportShadingMenu-CXPi6fl8.js +0 -1
  428. package/dist/assets/active-ingest-DA426a81.js +0 -3
  429. package/dist/assets/adapter-runtime-bindings-4cmsRvRh.js +0 -2
  430. package/dist/assets/animation-mixers.service-DK64IuYq.js +0 -1
  431. package/dist/assets/animation-timeline.utility-D-g0zrOl.js +0 -1
  432. package/dist/assets/asset-editor-persistence-BGWIqZdk.js +0 -1
  433. package/dist/assets/asset-loaders-C0KQI5eY.js +0 -2
  434. package/dist/assets/audio.utility-BmE9WMUg.js +0 -1
  435. package/dist/assets/autoplay.service-CjPnv3QW.js +0 -1
  436. package/dist/assets/binding-resolver-dE0GnZT5.js +0 -2
  437. package/dist/assets/blender-emscripten-engine-BeWFjMn-.js +0 -2
  438. package/dist/assets/blender-version.status-OsFoc9SA.js +0 -1
  439. package/dist/assets/blender-wali-engine-da698rDf.js +0 -2
  440. package/dist/assets/blender.keymap-_rF_vRX8.js +0 -1
  441. package/dist/assets/blender.status-ujwGU6dU.js +0 -1
  442. package/dist/assets/board-guides-BEKPgD9M.js +0 -1
  443. package/dist/assets/body-marks-RKb_LTwL.js +0 -1
  444. package/dist/assets/bridge.command-BF00Iefm.js +0 -3
  445. package/dist/assets/build-profiles.document-CqNrDdh9.js +0 -2
  446. package/dist/assets/build-progress.status-Bo1ZgJcb.js +0 -1
  447. package/dist/assets/build-session-GZcSAfPN.js +0 -9
  448. package/dist/assets/build.header-Bt1kwHWl.js +0 -1
  449. package/dist/assets/canvas-design-mount-BbLW_Nci.js +0 -6
  450. package/dist/assets/canvas-entry-runtime-UNYuSfG0.js +0 -2
  451. package/dist/assets/capability-coverage-DZ-onC5j.js +0 -7
  452. package/dist/assets/component-board.service-q_TM9BCw.js +0 -2
  453. package/dist/assets/component-contracts.service-CPbfXE1h.js +0 -1
  454. package/dist/assets/component-instance-root-B0C5oNEm.js +0 -1
  455. package/dist/assets/component-verbs.service-CnA11bJq.js +0 -1
  456. package/dist/assets/connection.status-Yvt0bX0r.js +0 -1
  457. package/dist/assets/constraints.inspector-4r8jWq5a.js +0 -1
  458. package/dist/assets/coverage.service-DcpEoBuf.js +0 -3
  459. package/dist/assets/create-runtime-DBfUy0SO.js +0 -3
  460. package/dist/assets/curve-DVd18iAX.js +0 -1
  461. package/dist/assets/data-check-core-CQEjuFyt.js +0 -1
  462. package/dist/assets/data-ref-CWnkj-HX.js +0 -1
  463. package/dist/assets/debug-bridge-D3_-EgRE.js +0 -1
  464. package/dist/assets/debug-registry-P0_YQGWd.js +0 -1
  465. package/dist/assets/design-time-layers-ChswRUJt.js +0 -1
  466. package/dist/assets/design-time-react-mount-C85KfXOd.js +0 -1
  467. package/dist/assets/edit-mode-authoring-DeCxPcHM.js +0 -1
  468. package/dist/assets/editor-api-BFTIRlWa.js +0 -1
  469. package/dist/assets/editor-presentation-activity-C7SNSmTd.js +0 -1
  470. package/dist/assets/entry-adjudication-Dc18TIqT.js +0 -1
  471. package/dist/assets/fork-menu-DpKqRhF5.js +0 -1
  472. package/dist/assets/game-audio-CaGKzia4.js +0 -1
  473. package/dist/assets/game-document.service-Chmt4065.js +0 -1
  474. package/dist/assets/game-eval.command-DRSvOJ_1.js +0 -2
  475. package/dist/assets/game-module-access-o3iXZpCA.js +0 -1
  476. package/dist/assets/game-network-Ct2FQYmu.js +0 -1
  477. package/dist/assets/gameplay-replay-BwdxV4oF.js +0 -1
  478. package/dist/assets/gameplay.command-Boqv1hnc.js +0 -1
  479. package/dist/assets/generation-DhwCUHPf.css +0 -1
  480. package/dist/assets/generation.service-o9aXlsx4.js +0 -1
  481. package/dist/assets/generations.status-BvzgHlyk.js +0 -1
  482. package/dist/assets/hierarchy-marks-BLPfSIym.js +0 -1
  483. package/dist/assets/hierarchy-marks-Cc_3lxw6.js +0 -1
  484. package/dist/assets/hosted-asset-materialization-BpbnhJac.js +0 -2
  485. package/dist/assets/index-0Lm0Nf1M.css +0 -1
  486. package/dist/assets/index-BHoAKyAC.js +0 -1
  487. package/dist/assets/index-BeK4RPgj.js +0 -1
  488. package/dist/assets/index-C1c3eOmm.js +0 -1
  489. package/dist/assets/index.module-Ycad3DJq.js +0 -1
  490. package/dist/assets/ingest-siblings-BtiEXLnh.js +0 -1
  491. package/dist/assets/ingest-source-persistence-Dmdo-UBp.js +0 -1
  492. package/dist/assets/ingest.service-vbCucMz7.js +0 -1
  493. package/dist/assets/inspection-CObLhnrs.js +0 -1
  494. package/dist/assets/instances.command-BwayrqNm.js +0 -1
  495. package/dist/assets/layered-pick-kiQf53t5.js +0 -1
  496. package/dist/assets/material-B_V78pTt.js +0 -1
  497. package/dist/assets/model-asset-sections-CFvvihfx.css +0 -1
  498. package/dist/assets/model-asset-sections.service-CqSclZGY.js +0 -1
  499. package/dist/assets/module-mode-BH2R93XP.js +0 -2
  500. package/dist/assets/mount-canvas-ingest-root-D1z9i5B3.js +0 -2
  501. package/dist/assets/mount-dom-ingest-root-BAmmNxlm.js +0 -2
  502. package/dist/assets/mount-ingest-root-DYR0TMIt.js +0 -2
  503. package/dist/assets/mount-manifest-DdkFYdVA.js +0 -1
  504. package/dist/assets/mount-readiness-Ds0HvvLH.js +0 -4
  505. package/dist/assets/mount-three-ingest-root-DVbACDUy.js +0 -1
  506. package/dist/assets/network-observer.service-Ce83TdsU.js +0 -1
  507. package/dist/assets/network.utility-DFDul2Xb.js +0 -1
  508. package/dist/assets/object-marks-DwvIEBOK.js +0 -1
  509. package/dist/assets/pixi-authoring-adapter-BChknIdC.js +0 -1
  510. package/dist/assets/pixi-live-write-target-BjDsBQbp.js +0 -1
  511. package/dist/assets/play-mode-DICV4cKP.js +0 -22
  512. package/dist/assets/play.command-NHyi5rzF.js +0 -2
  513. package/dist/assets/pose-guard-DILO6gGq.js +0 -1
  514. package/dist/assets/presentation-BeNFBfKg.js +0 -1
  515. package/dist/assets/profiler.utility-Do2Bw7MY.js +0 -1
  516. package/dist/assets/project-provenance-4ldz-EOG.js +0 -1
  517. package/dist/assets/r3f-design-session-B5GsZI5M.js +0 -2
  518. package/dist/assets/react-canvas-navigation-Cp3cOHJa.js +0 -1
  519. package/dist/assets/react-inspector.service-Bm0OnanU.js +0 -1
  520. package/dist/assets/react-story-board-GaXqr03H.js +0 -1
  521. package/dist/assets/react-world-authoring-adapter-DOjv2pYm.js +0 -1
  522. package/dist/assets/reflection-probe-capture.inspector-DqSW9p1v.js +0 -1
  523. package/dist/assets/registry-CaCdF63N.js +0 -1
  524. package/dist/assets/root-seam-contract-CxLZaRio.js +0 -1
  525. package/dist/assets/run-selection-DzEkGesJ.js +0 -2
  526. package/dist/assets/scene-capture-0a-bTjT8.js +0 -1
  527. package/dist/assets/scene-document.service-CeDwVA7t.js +0 -2
  528. package/dist/assets/seeded-random-BgCwIAAU.js +0 -1
  529. package/dist/assets/stage-overlay-set-BGE03mqb.js +0 -1
  530. package/dist/assets/stage-presence-markers-DIP7YMcO.js +0 -1
  531. package/dist/assets/stage-transform-tools-BQB7EY4l.js +0 -1
  532. package/dist/assets/standard-viewport-dressing-BCA51Tum.js +0 -24
  533. package/dist/assets/state-watch.utility-CFG1Tu1m.js +0 -1
  534. package/dist/assets/story-documents-BTo90DiA.js +0 -3
  535. package/dist/assets/story-three-preview-R1JvrggS.js +0 -2
  536. package/dist/assets/studio-environment-DRxxq_QX.js +0 -2
  537. package/dist/assets/team-playtest.service-hLfjgScx.js +0 -1
  538. package/dist/assets/three-authoring-adapter-htbnVej2.js +0 -1
  539. package/dist/assets/three-authoring.service-BIQAtVdX.js +0 -2
  540. package/dist/assets/three-integration.service-CS8Nvbd2.js +0 -1
  541. package/dist/assets/three-projection-core-CG01r5Ta.js +0 -1
  542. package/dist/assets/three-viewport-presentation-B0z_cECu.js +0 -141
  543. package/dist/assets/tools-B_NJsk05.js +0 -1
  544. package/dist/assets/transform-mode-request-DzD9aUNA.js +0 -1
  545. package/dist/assets/transport-strip-CUjNltnb.js +0 -1
  546. package/dist/assets/transport.header-Bb4FpQ8J.js +0 -1
  547. package/dist/assets/tuples-DfWSY2tr.js +0 -1
  548. package/dist/assets/ui-board-document-CCiiXjX9.js +0 -2
  549. package/dist/assets/user-data-dHvLdpwM.js +0 -1
  550. package/dist/assets/viewport-door-Bj_ZIP85.js +0 -1
  551. package/dist/assets/worker-CC9Ug5Ei.js +0 -2
  552. package/dist/assets/workspace-arrangement-BdAlBwvd.js +0 -1
  553. package/dist/assets/world-documents-DBybpBq8.js +0 -1
  554. package/dist/assets/world-root-stage-binding-ZVYIgr74.js +0 -1
  555. package/dist/vgai-shared-react.json +0 -10
  556. package/dist/vgai-shared-three.json +0 -3
  557. package/template/.agents/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
  558. package/template/.claude/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
  559. package/template/.github/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
  560. /package/dist/assets/{vgai-shared-fontawesome-CU65D4Ij.js → volter-shared-fontawesome-CU65D4Ij.js} +0 -0
  561. /package/dist/assets/{vgai-shared-jsx-dev-runtime-DFDKL7fx.js → volter-shared-jsx-dev-runtime-DFDKL7fx.js} +0 -0
  562. /package/dist/assets/{vgai-shared-jsx-runtime-DIqBpTut.js → volter-shared-jsx-runtime-DIqBpTut.js} +0 -0
  563. /package/dist/assets/{vgai-shared-react-BT7rMc2H.js → volter-shared-react-BT7rMc2H.js} +0 -0
  564. /package/dist/assets/{vgai-shared-react-dom-DFajMqMT.js → volter-shared-react-dom-DFajMqMT.js} +0 -0
  565. /package/dist/assets/{vgai-shared-react-dom-client-S0ozfl6_.js → volter-shared-react-dom-client-S0ozfl6_.js} +0 -0
  566. /package/dist/assets/{vgai-shared-three-DH4yxKwt.js → volter-shared-three-DH4yxKwt.js} +0 -0
  567. /package/template/{.vgai → .volter}/assets.json +0 -0
  568. /package/template/{.vgai → .volter}/provenance.json +0 -0
@@ -31,6 +31,6 @@
31
31
  "@editor/*": ["node_modules/@volter/editor-core/src/*"]
32
32
  }
33
33
  },
34
- "include": ["src", "vgai.adapter.ts"],
34
+ "include": ["src", "volter.adapter.ts"],
35
35
  "exclude": ["src/tools", "src/contributions"]
36
36
  }
@@ -9,18 +9,18 @@ import { loadGameManifestFile } from '@volter/editor-project/manifest/load-file'
9
9
  // Single source of truth for game-manifest validation, shipped IN the
10
10
  // project template so every scaffolded game
11
11
  // gets a working `npm run validate-manifest`. Validates each given
12
- // `vgai.project.json` path via `loadGameManifestFile` (parse -> cross-field
12
+ // `volter.project.json` path via `loadGameManifestFile` (parse -> cross-field
13
13
  // checks -> resolution) and prints the
14
14
  // resolved adapter-root list (id, adapter identity) on success. Any failure
15
15
  // prints a descriptive error and
16
16
  // exits 1.
17
17
  //
18
- // Defaults to THIS template's own manifest (`vgai.project.json`, a sibling of
18
+ // Defaults to THIS template's own manifest (`volter.project.json`, a sibling of
19
19
  // this script) when no path is given, so `npm run validate-manifest` works
20
20
  // out of the box both from the monorepo root and from a scaffolded project.
21
21
  // ---------------------------------------------------------------------------
22
22
 
23
- const defaultManifestPath = fileURLToPath(new URL('./vgai.project.json', import.meta.url));
23
+ const defaultManifestPath = fileURLToPath(new URL('./volter.project.json', import.meta.url));
24
24
 
25
25
  const args = process.argv.slice(2);
26
26
  const manifestPaths = args.length > 0 ? args.map((p) => resolve(p)) : [defaultManifestPath];
@@ -4,9 +4,9 @@ import { defineConfig } from 'vite';
4
4
  // Config-relative TS imports get bundled the same way — that is what lets the
5
5
  // project's executable Zod schemas reach the build-time check below.
6
6
  import { manifestEntryModulesPlugin } from './manifest-entry-modules-plugin';
7
- import manifest from './vgai.project.json';
7
+ import manifest from './volter.project.json';
8
8
 
9
- /** A vgai runtime package served as SOURCE, the way the editor serves it. */
9
+ /** A volter runtime package served as SOURCE, the way the editor serves it. */
10
10
  const packageSource = (name: string) =>
11
11
  path.join(path.dirname(createRequire(import.meta.url).resolve(`${name}/package.json`)), 'src');
12
12
 
@@ -18,7 +18,7 @@ const packageSource = (name: string) =>
18
18
  * inotify, so without polling this standalone server (`npm run dev:standalone`)
19
19
  * silently misses every external file edit — the same failure mode
20
20
  * `dev.ts`'s comment documents for the editor. Before this fix, this file
21
- * read ONLY `VGAI_WATCH_POLL`, so a project on drvfs polled in the editor
21
+ * read ONLY `VOLTER_WATCH_POLL`, so a project on drvfs polled in the editor
22
22
  * but NOT in the standalone server — the two disagreed for no reason a
23
23
  * developer could see.
24
24
  *
@@ -26,11 +26,11 @@ const packageSource = (name: string) =>
26
26
  * contract, so this
27
27
  * duplicates the tiny drvfs check rather than reaching across a package
28
28
  * boundary that doesn't exist here — same contract as the editor's own
29
- * helper: `VGAI_WATCH_POLL=0` forces polling off anywhere, `=1`/`=<ms>`
29
+ * helper: `VOLTER_WATCH_POLL=0` forces polling off anywhere, `=1`/`=<ms>`
30
30
  * forces it on with that interval, unset auto-enables on a drvfs mount.
31
31
  */
32
32
  function resolveWatchOption(): { usePolling: true; interval: number } | undefined {
33
- const raw = process.env['VGAI_WATCH_POLL'];
33
+ const raw = process.env['VOLTER_WATCH_POLL'];
34
34
  if (raw !== undefined && raw !== '') {
35
35
  if (raw === '0') return undefined;
36
36
  const ms = Number(raw);
@@ -68,7 +68,7 @@ export default defineConfig({
68
68
  //
69
69
  // This project has no `@vitejs/plugin-react`; Vite's built-in esbuild does
70
70
  // the JSX transform, and it picks the runtime from the tsconfig nearest the
71
- // FILE. That covers `src/**`, but the vgai runtime packages are served as
71
+ // FILE. That covers `src/**`, but the volter runtime packages are served as
72
72
  // source out of their installed directories (see the aliases below), where
73
73
  // the project's tsconfig does not reach — so their `.tsx` compiled with the CLASSIC runtime, emitting
74
74
  // bare `React.createElement` calls into a module that never imports React.
@@ -97,7 +97,7 @@ export default defineConfig({
97
97
  // example modules (or injected by the JSX transform, like the React
98
98
  // runtimes) so Vite does not discover them at runtime, re-optimize, and
99
99
  // hard-reload the standalone runtime the first time a game selects them —
100
- // that mid-session reload resets `window.__vgaiScene`/the menu out from
100
+ // that mid-session reload resets `window.__volterScene`/the menu out from
101
101
  // under whatever is driving the page (the dep-optimize-reload flake the
102
102
  // 04 spec hit: the first cold select of `editor-tutorial` reloaded on
103
103
  // `react/jsx-dev-runtime`). Verified against a cold scaffold: with these
@@ -146,20 +146,20 @@ export default defineConfig({
146
146
  // WSL when the project lives on a Windows drive (/mnt/c, drvfs: inotify
147
147
  // never fires there), or edits to src/data/ or src/ generally silently never
148
148
  // hot-reload into the running game.
149
- // `VGAI_WATCH_POLL` is an explicit override (`=0` off anywhere, `=1`/
149
+ // `VOLTER_WATCH_POLL` is an explicit override (`=0` off anywhere, `=1`/
150
150
  // `=<ms>` on anywhere) — see `resolveWatchOption` above, which the
151
151
  // EDITOR dev server's own auto-detect mirrors, so one behavior covers
152
152
  // both surfaces without the developer having to set anything. Safe to
153
153
  // enable here: this standalone server only watches the project tree,
154
154
  // which is small.
155
155
  //
156
- // VGAI_NO_WATCH=1 (set by a harness driving this page):
156
+ // VOLTER_NO_WATCH=1 (set by a harness driving this page):
157
157
  // disable watching entirely — a mid-run Vite reload resets
158
- // `window.__vgai`/whatever is driving the standalone page out from under
158
+ // `window.__volter`/whatever is driving the standalone page out from under
159
159
  // an in-flight run (the hollowstone reload-kills-the-run
160
160
  // lesson). Mutually exclusive with the poll option (same `server.watch`
161
161
  // key) — NO_WATCH wins when both would otherwise apply.
162
- ...(process.env['VGAI_NO_WATCH']
162
+ ...(process.env['VOLTER_NO_WATCH']
163
163
  ? { watch: null }
164
164
  : // Watch source; never watch output: a build (`npm run build`,
165
165
  // `vercel build`) rewriting dist/ or .vercel/output/ inside the
@@ -7,7 +7,7 @@
7
7
  * whatever it declares about itself. An adapter's SIZE measures this game's
8
8
  * distance from native — which is why yours fits on a screen.
9
9
  *
10
- * Regions are derived mechanically from `vgai.project.json`'s `roots[]` — add
10
+ * Regions are derived mechanically from `volter.project.json`'s `roots[]` — add
11
11
  * a root to the manifest and its region appears here for free, with no edit to
12
12
  * this file. `regionIncludes` states the PARAMETERS that derivation cannot
13
13
  * produce: which source files each region owns beyond its entry's import reach.
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "./node_modules/@volter/editor-project/schemas/vgai-project.schema.json",
2
+ "$schema": "./node_modules/@volter/editor-project/schemas/volter-project.schema.json",
3
3
  "manifestVersion": 2,
4
4
  "name": "My Game",
5
5
  "appId": "com.example.mygame",
@@ -19,7 +19,7 @@
19
19
  "entry": "server/main.ts",
20
20
  "command": "npx tsx --tsconfig server/tsconfig.json server/main.ts",
21
21
  "port": 2567,
22
- "env": { "VGAI_ROOM_MONITOR": "1" }
22
+ "env": { "VOLTER_ROOM_MONITOR": "1" }
23
23
  },
24
24
  { "id": "play + server", "kind": "compound", "run": ["server", "play"] }
25
25
  ],
@@ -10,58 +10,58 @@ dist-server/
10
10
  .vite/
11
11
 
12
12
  # Editor autosaved UI state (panel layout etc.) — local-machine ephemeral.
13
- # NOT the rest of .vgai/: .vgai/scaffold-baseline.json is committed project
14
- # state `vgai upgrade` diffs against (packages/create-vgai-project/src/baseline.ts),
15
- # and .vgai/overlays/*.json + .vgai/thumbnail.png + .vgai/provenance.json +
16
- # .vgai/generations.json are real project data too.
17
- .vgai/editor-state.json
18
- .vgai/workbench-storage.json
13
+ # NOT the rest of .volter/: .volter/scaffold-baseline.json is committed project
14
+ # state: the scaffold's record of the files it wrote (node/scaffold/baseline.ts),
15
+ # and .volter/overlays/*.json + .volter/thumbnail.png + .volter/provenance.json +
16
+ # .volter/generations.json are real project data too.
17
+ .volter/editor-state.json
18
+ .volter/workbench-storage.json
19
19
  # Which Code-OSS workbench THIS machine opens the project in — an absolute path
20
20
  # to an extracted release or a fork checkout, so it is a fact about this box and
21
21
  # never about the project. The product's `create --workbench <dir>` writes it;
22
- # `vgai edit --workbench <dir>` overrides it for one launch.
23
- .vgai/workbench.json
22
+ # `volter-game-editor edit --workbench <dir>` overrides it for one launch.
23
+ .volter/workbench.json
24
24
  # The editor's chat panel: which agent harness this machine chose and its conversations.
25
- .vgai/chat-selection.json
26
- .vgai/chat-sessions.json
25
+ .volter/chat-selection.json
26
+ .volter/chat-sessions.json
27
27
  # #146 — more local-machine ephemera: the live session's discovery file
28
28
  # (written by the dev server at boot, removed on shutdown) and agent
29
- # screenshot captures (GET /__vgai/screenshot).
30
- .vgai/session.json
31
- .vgai/collaboration.json
32
- .vgai/captures/
33
- .vgai/tmp/
34
- .vgai/last-run/
35
- # `vgai screenshot`'s default output directory — looking at the game is the
29
+ # screenshot captures (GET /__volter/screenshot).
30
+ .volter/session.json
31
+ .volter/collaboration.json
32
+ .volter/captures/
33
+ .volter/tmp/
34
+ .volter/last-run/
35
+ # `volter-game-editor screenshot`'s default output directory — looking at the game is the
36
36
  # documented way to verify it, so an ordinary session leaves dozens of PNGs here.
37
- .vgai/screenshots/
38
- # `vgai play`'s gameplay video. EVERY play records, so this directory is
37
+ .volter/screenshots/
38
+ # `volter-game-editor play`'s gameplay video. EVERY play records, so this directory is
39
39
  # written on every run — and it is bounded by design, not by cleanup: the
40
40
  # unnamed clip is one rotating file (play-latest.webm) that each play
41
41
  # overwrites, and `--record <name>` keepsakes are the user's own. Never
42
42
  # committed either way: video is build-shaped output, and a repo that carries
43
43
  # one run's footage is carrying the wrong artifact.
44
- .vgai/recordings/
44
+ .volter/recordings/
45
45
  # Run artifacts a driving script writes (screenshots a failure block points at,
46
46
  # the last run's scratch). Overwritten every run — nothing here is worth
47
47
  # committing.
48
- .vgai/prev-run/
48
+ .volter/prev-run/
49
49
  # The idiom scanner's last findings (check-idioms.ts writes it every run, and
50
- # `vgai status` reads it so open ERROR findings surface from the first status
50
+ # `volter-game-editor status` reads it so open ERROR findings surface from the first status
51
51
  # call instead of at handoff). A cache of a fact recomputable in under a
52
52
  # second — machine-local, never project state.
53
- .vgai/check-idioms.json
53
+ .volter/check-idioms.json
54
54
  # Rebuildable Scene/Canvas Content preview images. Authored framing remains in
55
- # .vgai/thumbnails.json; only these generated pixels are machine-local.
56
- .vgai/cache/document-previews/
55
+ # .volter/thumbnails.json; only these generated pixels are machine-local.
56
+ .volter/cache/document-previews/
57
57
  # The build-discipline tripwires' announce gate (which step each tripwire has
58
58
  # already announced, keyed on what makes it go quiet). Persisted so a dev-server
59
59
  # restart cannot re-arm a long dirty batch at "nothing announced" — machine-local
60
60
  # by nature, and it MUST stay untracked: a tracked gate file would add itself to
61
61
  # the very dirty-file count the commit-cadence tripwire reports.
62
- .vgai/tripwire-gate.json
62
+ .volter/tripwire-gate.json
63
63
 
64
- # `vgai play`'s run logs (logs/play-*.jsonl — see packages/vgai-cli/src/index.ts)
64
+ # `volter-game-editor play`'s run logs (logs/play-*.jsonl — see packages/volter-cli/src/index.ts)
65
65
  logs/
66
66
  *.jsonl
67
67
 
@@ -1,12 +1,12 @@
1
1
  /* THE GAME EDITOR'S OWN SPLASH — what this product draws into the kit's opening cover
2
- (`VgaiProduct.cover`, `packages/editor-core/workbench/src/vgaiCover.ts`).
2
+ (`VolterProduct.cover`, `packages/editor-core/workbench/src/volterCover.ts`).
3
3
 
4
4
  IT SPELLS CLASSIC'S PALETTE, for the same reason the model editor's spells Blender's: the
5
5
  cover paints BEFORE any theme extension is registered — the web workbench's first frame is
6
6
  the page config's `initialColorTheme` — so a splash written against `--vscode-*` would wear
7
7
  the workbench's default dark for exactly the seconds it exists instead of this product's
8
8
  look. Classic is the editor's own Graphite and it ships no theme extension at all, so these
9
- values come from `@vgai/editor-sdk`'s `widgets/theme.ts`, named beside them:
9
+ values come from `@volter/editor-sdk`'s `widgets/theme.ts`, named beside them:
10
10
 
11
11
  #1a1a1a GRAPHITE_BG[0] surface.shell — the window's outermost band
12
12
  #242424 GRAPHITE_BG[1] surface.panel
@@ -18,7 +18,7 @@
18
18
  Nothing here names a font: Classic is the workbench's own UI font, which is what this
19
19
  product wearing no look extension means. */
20
20
 
21
- .vgai-game-cover {
21
+ .volter-game-cover {
22
22
  position: absolute;
23
23
  inset: 0;
24
24
  display: flex;
@@ -33,26 +33,26 @@
33
33
  /* THE MARK: a play triangle inside the panel surface — the one glyph this product's whole
34
34
  transport is built around. Inline SVG in the product's own markup, so there is no image to
35
35
  fetch and the first frame is the first frame. */
36
- .vgai-game-cover-mark {
36
+ .volter-game-cover-mark {
37
37
  width: 56px;
38
38
  height: 56px;
39
39
  opacity: 0.92;
40
40
  }
41
41
 
42
- .vgai-game-cover-title {
42
+ .volter-game-cover-title {
43
43
  font-size: 26px;
44
44
  font-weight: 600;
45
45
  letter-spacing: 0.02em;
46
46
  }
47
47
 
48
- .vgai-game-cover-folder {
48
+ .volter-game-cover-folder {
49
49
  font-size: 12px;
50
50
  color: #9aa0a6;
51
51
  }
52
52
 
53
53
  /* Indeterminate ON PURPOSE: this product knows WHAT it is waiting for and not how far along it
54
54
  is, and a bar that invented a percentage would be a lie a person can see. */
55
- .vgai-game-cover-rail {
55
+ .volter-game-cover-rail {
56
56
  position: relative;
57
57
  width: 220px;
58
58
  height: 2px;
@@ -61,22 +61,22 @@
61
61
  background: #333333;
62
62
  }
63
63
 
64
- .vgai-game-cover-rail::after {
64
+ .volter-game-cover-rail::after {
65
65
  content: "";
66
66
  position: absolute;
67
67
  top: 0;
68
68
  bottom: 0;
69
69
  width: 40%;
70
70
  background: #579eff;
71
- animation: vgai-game-cover-travel 1.25s ease-in-out infinite;
71
+ animation: volter-game-cover-travel 1.25s ease-in-out infinite;
72
72
  }
73
73
 
74
- @keyframes vgai-game-cover-travel {
74
+ @keyframes volter-game-cover-travel {
75
75
  0% { left: -40%; }
76
76
  100% { left: 100%; }
77
77
  }
78
78
 
79
- .vgai-game-cover-state {
79
+ .volter-game-cover-state {
80
80
  font-size: 11px;
81
81
  min-height: 14px;
82
82
  color: #9aa0a6;
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * It is the counterpart of `packages/game-editor/src/index.ts`, which composes the SAME
10
10
  * product in the editor's own realm. There is exactly one piece of workbench code that is a
11
- * game editor's and not any editor's, and it is `vgaiGameSkew.ts` beside this file: what the
11
+ * game editor's and not any editor's, and it is `volterGameSkew.ts` beside this file: what the
12
12
  * frame must answer for a GAME layout — immersive Play, the semantic dock commands, and the
13
13
  * surface-keyboard probe. Everything else a game editor draws is the kit's.
14
14
  *
@@ -19,19 +19,19 @@
19
19
  *
20
20
  * IT DOES SHIP ONE STYLESHEET, and only one: `media/game-cover.css`, this product's own
21
21
  * opening splash. It spells Classic's palette because the cover paints before any theme is
22
- * registered at all — see that file's header, and `vgaiProduct.ts`'s `cover`.
22
+ * registered at all — see that file's header, and `volterProduct.ts`'s `cover`.
23
23
  *--------------------------------------------------------------------------------------------*/
24
24
 
25
25
  import './media/game-cover.css';
26
26
  import { $ } from '../../../../base/browser/dom.js';
27
27
  import { mainWindow } from '../../../../base/browser/window.js';
28
28
  import { localize } from '../../../../nls.js';
29
- import { registerVgaiProduct, type VgaiProductCover, type VgaiProductCoverContext, type VgaiProductMountContext } from '../../vgai/browser/vgaiProduct.js';
30
- import { VgaiGameSkew, type VgaiGameBridge } from './vgaiGameSkew.js';
29
+ import { registerVolterProduct, type VolterProductCover, type VolterProductCoverContext, type VolterProductMountContext } from '../../volter/browser/volterProduct.js';
30
+ import { VolterGameSkew, type VolterGameBridge } from './volterGameSkew.js';
31
31
 
32
32
  /** What this product reads off the mount to know its Game document is open and drawn — a
33
- * MIRROR of the kit's `VgaiDocumentsBridge`, declared here for the same reason
34
- * `VgaiGameBridge` is: a product declares the shape it expects (`vgaiProduct.ts`'s header),
33
+ * MIRROR of the kit's `VolterDocumentsBridge`, declared here for the same reason
34
+ * `VolterGameBridge` is: a product declares the shape it expects (`volterProduct.ts`'s header),
35
35
  * and a door this build's kit does not have reads as missing rather than as a crash. */
36
36
  interface DocumentsRegistry {
37
37
  whenRestored?(): Promise<void>;
@@ -73,13 +73,13 @@ const GAME_OPEN_BUDGET_MS = 60_000;
73
73
  * cover it drew. Set by `cover`, cleared by the handle's `dispose`. */
74
74
  let splash: { say(text: string): void } | undefined;
75
75
 
76
- registerVgaiProduct({
76
+ registerVolterProduct({
77
77
  id: 'game-editor',
78
78
  layout: {
79
79
  sidebarWidth: 260,
80
80
  containers: [
81
81
  {
82
- id: 'workbench.view.vgai',
82
+ id: 'workbench.view.volter',
83
83
  title: 'Game',
84
84
  location: 'sidebar',
85
85
  views: [
@@ -88,39 +88,39 @@ registerVgaiProduct({
88
88
  ],
89
89
  },
90
90
  {
91
- id: 'workbench.view.vgai.inspector',
91
+ id: 'workbench.view.volter.inspector',
92
92
  title: 'Inspector',
93
93
  location: 'auxiliarybar',
94
94
  views: [{ part: 'properties', title: 'Inspector', weight: 100 }],
95
95
  },
96
96
  ],
97
97
  },
98
- title: localize('vgaiGameTitle', "Volter Game Editor"),
98
+ title: localize('volterGameTitle', "Volter Game Editor"),
99
99
  // The workbench's own trust prompt, in this product's words: a game project runs its own
100
100
  // code the moment it opens — its contributions from its `node_modules`, its dev server, and
101
101
  // the game itself in the pane.
102
- trustSentence: localize('vgaiGameTrustRequest', "Volter Game Editor runs this project's own code — its editor contributions, its dev server and its game. Trust this folder to open it."),
102
+ trustSentence: localize('volterGameTrustRequest', "Volter Game Editor runs this project's own code — its editor contributions, its dev server and its game. Trust this folder to open it."),
103
103
  // THIS PRODUCT'S OWN SPLASH (F4). The kit owns the cover's mechanism — when it goes up,
104
104
  // that it comes away whole, what a refusal looks like; this is the picture inside it, in
105
105
  // Classic's own palette and this product's own words, drawn with no image to fetch so the
106
106
  // first painted frame is already this.
107
- cover(host: HTMLElement, context: VgaiProductCoverContext): VgaiProductCover {
108
- const root = $('.vgai-game-cover');
107
+ cover(host: HTMLElement, context: VolterProductCoverContext): VolterProductCover {
108
+ const root = $('.volter-game-cover');
109
109
  // THE MARK, built as ELEMENTS. Not `innerHTML` — the page carries a Trusted Types
110
110
  // policy and the workbench's own code never assigns markup — and not a file either,
111
111
  // because an image to fetch is a frame to wait for.
112
- const mark = $.SVG<SVGElement>('svg', { class: 'vgai-game-cover-mark', viewBox: '0 0 48 48', 'aria-hidden': 'true' });
112
+ const mark = $.SVG<SVGElement>('svg', { class: 'volter-game-cover-mark', viewBox: '0 0 48 48', 'aria-hidden': 'true' });
113
113
  mark.append(
114
114
  $.SVG<SVGElement>('rect', { x: '4', y: '4', width: '40', height: '40', rx: '9', fill: '#242424', stroke: '#333333' }),
115
115
  $.SVG<SVGElement>('path', { d: 'M20 16 L34 24 L20 32 Z', fill: '#579eff' }),
116
116
  );
117
- const title = $('.vgai-game-cover-title');
118
- title.textContent = localize('vgaiGameCoverTitle', "Game");
119
- const folder = $('.vgai-game-cover-folder');
117
+ const title = $('.volter-game-cover-title');
118
+ title.textContent = localize('volterGameCoverTitle', "Game");
119
+ const folder = $('.volter-game-cover-folder');
120
120
  folder.textContent = context.folderName;
121
- const state = $('.vgai-game-cover-state');
122
- state.textContent = localize('vgaiGameCoverStarting', "Starting the editor…");
123
- root.append(mark, title, folder, $('.vgai-game-cover-rail'), state);
121
+ const state = $('.volter-game-cover-state');
122
+ state.textContent = localize('volterGameCoverStarting', "Starting the editor…");
123
+ root.append(mark, title, folder, $('.volter-game-cover-rail'), state);
124
124
  host.appendChild(root);
125
125
  splash = { say: (text: string) => { state.textContent = text; } };
126
126
  return {
@@ -134,7 +134,7 @@ registerVgaiProduct({
134
134
  // mount resolving is the EDITOR being assembled — the project's own modules still have to
135
135
  // load and the scene still has to draw, and the editor's own "No document open yet" is
136
136
  // what a person would otherwise watch in that window.
137
- async ready(context: VgaiProductMountContext): Promise<void> {
137
+ async ready(context: VolterProductMountContext): Promise<void> {
138
138
  const registry = context.mount['documents'] as DocumentsRegistry | undefined;
139
139
  // A bridge without the door is a MISSING door: with nothing to watch, the mount
140
140
  // resolving is the answer, which is what this product did before `ready` existed.
@@ -144,7 +144,7 @@ registerVgaiProduct({
144
144
  if (registry.list().length === 0) { return; }
145
145
  const open = (): boolean => openDocument(registry);
146
146
  if (!open()) {
147
- splash?.say(localize('vgaiGameCoverWaiting', "Opening the game…"));
147
+ splash?.say(localize('volterGameCoverWaiting', "Opening the game…"));
148
148
  await new Promise<void>((resolve, reject) => {
149
149
  let unsubscribe: (() => void) | undefined;
150
150
  let timer: number | undefined;
@@ -158,7 +158,7 @@ registerVgaiProduct({
158
158
  };
159
159
  timer = mainWindow.setTimeout(() => {
160
160
  stop();
161
- reject(new Error(localize('vgaiGameCoverTimedOut', "No document opened within {0}s. The project's own modules load through the editor session; `volter-game-editor console` is where it says why.", Math.round(GAME_OPEN_BUDGET_MS / 1000))));
161
+ reject(new Error(localize('volterGameCoverTimedOut', "No document opened within {0}s. The project's own modules load through the editor session; `volter-game-editor console` is where it says why.", Math.round(GAME_OPEN_BUDGET_MS / 1000))));
162
162
  }, GAME_OPEN_BUDGET_MS);
163
163
  unsubscribe = registry.subscribe?.(() => { if (open()) { stop(); resolve(); } });
164
164
  // One more read after subscribing: the document can land between the check
@@ -169,16 +169,16 @@ registerVgaiProduct({
169
169
  // DRAWN, not merely registered — the pane paints the active document on the frame
170
170
  // after the registry names it, so the cover lifts onto the game and not onto the empty
171
171
  // pane it was covering.
172
- splash?.say(localize('vgaiGameCoverDrawing', "Drawing…"));
172
+ splash?.say(localize('volterGameCoverDrawing', "Drawing…"));
173
173
  await new Promise<void>((resolve) => mainWindow.requestAnimationFrame(() => mainWindow.requestAnimationFrame(() => resolve())));
174
174
  },
175
- mount(context: VgaiProductMountContext): void {
176
- // THE GAME SKEW'S THREE FRAME ANSWERS (vgaiGameSkew.ts, U2). The bridge publishes its
175
+ mount(context: VolterProductMountContext): void {
176
+ // THE GAME SKEW'S THREE FRAME ANSWERS (volterGameSkew.ts, U2). The bridge publishes its
177
177
  // half beside the kit's doors; a bridge without it is a missing door rather than a
178
178
  // crash, which is the same rule every other door here follows.
179
- const bridge = context.mount['game'] as VgaiGameBridge | undefined;
179
+ const bridge = context.mount['game'] as VolterGameBridge | undefined;
180
180
  if (!bridge) { return; }
181
- context.store.add(context.instantiationService.createInstance(VgaiGameSkew, bridge, {
181
+ context.store.add(context.instantiationService.createInstance(VolterGameSkew, bridge, {
182
182
  pane: context.ids.pane,
183
183
  hierarchyView: context.ids.hierarchyView,
184
184
  inspectorView: context.ids.inspectorView,
@@ -38,7 +38,7 @@
38
38
  * implementation, so under the frame every such call QUEUED FOREVER (the controller holds
39
39
  * pending resolvers until one arrives): `playUtilities` on a layout, the Generations button,
40
40
  * every menu item that reveals a utility. Here they are the views service: a utility is the
41
- * view U8 gave it (`vgai.utility.<id>` in the panel container), the two static panels are the
41
+ * view U8 gave it (`volter.utility.<id>` in the panel container), the two static panels are the
42
42
  * outliner and properties views, and focus mode is the editor group's own maximize.
43
43
  *
44
44
  * 3. THE SURFACE-KEYBOARD PROBE, and it is the one that closes a real defect. The play-input
@@ -52,8 +52,8 @@
52
52
  * `tabindex` leaves focus on `body`, so a focus-based probe would go false on the first click
53
53
  * INTO the game.
54
54
  *
55
- * Nothing under `src/vs/` imports an editor module: what arrives is `VgaiGameBridge`, whose
56
- * counterpart is `bridge.tsx`'s `VgaiGameHandle`.
55
+ * Nothing under `src/vs/` imports an editor module: what arrives is `VolterGameBridge`, whose
56
+ * counterpart is `bridge.tsx`'s `VolterGameHandle`.
57
57
  *--------------------------------------------------------------------------------------------*/
58
58
 
59
59
  import { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';
@@ -71,14 +71,14 @@ import { IViewsService } from '../../../services/views/common/viewsService.js';
71
71
  import { ChatViewId } from '../../chat/browser/chat.js';
72
72
 
73
73
  /** What the frame performs when the editor asks for immersive Play, and its exact reversal. */
74
- export interface VgaiImmersiveAct {
74
+ export interface VolterImmersiveAct {
75
75
  enter(): void;
76
76
  exit(): void;
77
77
  }
78
78
 
79
79
  /** The editor's semantic dock vocabulary, as the frame answers it. Every member is optional on
80
80
  * the editor's own `WorkspaceDockCommands` except the two that are not; the bridge adapts. */
81
- export interface VgaiDockCommands {
81
+ export interface VolterDockCommands {
82
82
  showUtility(id: string): void;
83
83
  toggleUtility(id: string): void;
84
84
  ensureUtility(id: string): void;
@@ -89,27 +89,27 @@ export interface VgaiDockCommands {
89
89
  toggleFocus(): void;
90
90
  }
91
91
 
92
- export interface VgaiGameBridge {
92
+ export interface VolterGameBridge {
93
93
  setActiveStaticPanel(kind: string | null): void;
94
94
  focusCompactInspector(): boolean;
95
95
  /** Whether OUR editor pane currently holds the keyboard, pushed on every change. */
96
96
  setPaneActive(active: boolean): void;
97
97
  /** Install the immersive-Play layout act (null uninstalls). */
98
- setImmersive(act: VgaiImmersiveAct | null): void;
98
+ setImmersive(act: VolterImmersiveAct | null): void;
99
99
  /** Install the frame's answers for the semantic dock commands (null uninstalls). */
100
- setDockCommands(commands: VgaiDockCommands | null): void;
100
+ setDockCommands(commands: VolterDockCommands | null): void;
101
101
  /** Say something in the editor's OWN console, where `volter-game-editor console` reads it. */
102
102
  report(level: 'warn' | 'error', message: string): void;
103
103
  }
104
104
 
105
- /** The view id U8 gives a `workspace.utility`; kept in step with `vgaiUtilityViews.ts`'s own
105
+ /** The view id U8 gives a `workspace.utility`; kept in step with `volterUtilityViews.ts`'s own
106
106
  * `viewIdFor`, which is its single author — this file only needs to name one. */
107
107
  function utilityViewId(id: string): string {
108
- return `vgai.utility.${id}`;
108
+ return `volter.utility.${id}`;
109
109
  }
110
110
 
111
111
  /** What `hideChrome` recorded, so `showChrome` restores rather than reveals. */
112
- const PLAY_LAYOUT_KEY = 'vgai.play.layout';
112
+ const PLAY_LAYOUT_KEY = 'volter.play.layout';
113
113
 
114
114
  interface LayoutSnapshot {
115
115
  readonly sideBar: boolean;
@@ -118,7 +118,7 @@ interface LayoutSnapshot {
118
118
  readonly maximized: boolean;
119
119
  }
120
120
 
121
- export class VgaiGameSkew extends Disposable {
121
+ export class VolterGameSkew extends Disposable {
122
122
 
123
123
  /** Non-null exactly while immersive Play is in force. Also the re-entrancy guard: a second
124
124
  * `enter()` (a re-mount inside one play session) must not overwrite the pre-play layout
@@ -128,7 +128,7 @@ export class VgaiGameSkew extends Disposable {
128
128
  private readonly playTabOptions = this._register(new MutableDisposable());
129
129
 
130
130
  constructor(
131
- private readonly bridge: VgaiGameBridge,
131
+ private readonly bridge: VolterGameBridge,
132
132
  /** The contribution's own ids — passed rather than imported, so this file never becomes a
133
133
  * second author of an id the contribution already spells (and never imports the module
134
134
  * that constructs it). */
@@ -145,7 +145,7 @@ export class VgaiGameSkew extends Disposable {
145
145
  const restoredGroups = this.editorGroupsService.groups.map(group => ({ id: group.id, editors: group.editors.map(editor => editor.getName()) }));
146
146
  // Read the native owners when diagnosing a missing view or tab strip. This
147
147
  // command reports state; it never reveals views or rewrites preferences.
148
- this._register(CommandsRegistry.registerCommand('vgai.layout.inspect', accessor => ({
148
+ this._register(CommandsRegistry.registerCommand('volter.layout.inspect', accessor => ({
149
149
  settings: ['workbench.editor.showTabs', 'zenMode.showTabs'].map(key => {
150
150
  const value = accessor.get(IConfigurationService).inspect(key);
151
151
  return { key, value: value.value, defaultValue: value.defaultValue, userValue: value.userValue, workspaceValue: value.workspaceValue, memoryValue: value.memoryValue };
@@ -272,7 +272,7 @@ export class VgaiGameSkew extends Disposable {
272
272
  // A utility whose availability gate is closed has no view registered, and a silent
273
273
  // nothing is how a menu item becomes a lie. The editor's own console is where a
274
274
  // person (and `volter-game-editor console`) sees it.
275
- if (!view) { this.bridge.report('warn', localize('vgaiUtilityMissing', "The “{0}” utility has no view in this window, so it could not be opened — its availability gate is closed, or the panel's views have not been published yet.", id)); }
275
+ if (!view) { this.bridge.report('warn', localize('volterUtilityMissing', "The “{0}” utility has no view in this window, so it could not be opened — its availability gate is closed, or the panel's views have not been published yet.", id)); }
276
276
  }
277
277
 
278
278
  private async toggleUtility(id: string): Promise<void> {
@@ -285,7 +285,7 @@ export class VgaiGameSkew extends Disposable {
285
285
  // Resolve semantic panel commands to the product's real native views.
286
286
  const viewId = kind === 'hierarchy' ? this.ids.hierarchyView : kind === 'inspector' ? this.ids.inspectorView : kind === 'assets' ? this.ids.contentView : kind === 'agent' ? ChatViewId : null;
287
287
  if (!viewId) {
288
- this.bridge.report('warn', localize('vgaiStaticPanelMissing', "The “{0}” panel has no view under the VS Code frame, so it could not be focused.", kind));
288
+ this.bridge.report('warn', localize('volterStaticPanelMissing', "The “{0}” panel has no view under the VS Code frame, so it could not be focused.", kind));
289
289
  return;
290
290
  }
291
291
  if (kind === 'inspector' && this.bridge.focusCompactInspector()) return;
@@ -1 +0,0 @@
1
- import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{r as l}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{ad as r,Z as k,aP as w,aQ as z,aR as C}from"./index-BRJMIUK0.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";const m={fontSize:11,color:r.content.dim,marginBottom:2};function L({assetPath:s}){const i=l.useRef(null),[a,p]=l.useState(!1),[n,f]=l.useState(null),[c,x]=l.useState(0),[h,g]=l.useState(!1),[v,y]=l.useState(1),j=s.split("/").pop()??s,b=s.split(".").pop()?.toUpperCase()??"";l.useEffect(()=>()=>{i.current?.pause()},[]);const S=()=>{const t=i.current;t&&(a?t.pause():t.play(),p(!a))},d=t=>{const o=Math.floor(t/60),u=Math.floor(t%60);return`${o}:${u.toString().padStart(2,"0")}`};return e.jsxs("div",{style:{padding:8,display:"flex",flexDirection:"column",gap:8},children:[e.jsx("div",{style:{fontWeight:600,fontSize:12,color:r.content.primary,wordBreak:"break-all"},children:j}),e.jsxs("div",{className:"vgai-content-frost",style:{width:"100%",border:`1px solid ${r.boundary.default}`,borderRadius:r.shape.small,display:"flex",alignItems:"center",justifyContent:"center",flexDirection:"column",gap:8,padding:16},children:[e.jsxs("svg",{viewBox:"0 0 24 24",width:48,height:48,children:[e.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",fill:"var(--vgai-asset-icon-audio)"}),e.jsx("path",{d:"M9 8l4-2v12l-4-2H7V10h2zm6 1v6m2-5v4",stroke:"var(--vgai-text-1)",strokeWidth:"1.5",fill:"none",strokeLinecap:"round"})]}),n!=null&&e.jsxs("div",{style:{width:"100%",fontSize:10,color:r.content.muted,textAlign:"center"},children:[d(c)," / ",d(n)]}),n!=null&&n>0&&e.jsx("div",{style:{width:"100%",height:4,background:r.surface.raised,borderRadius:r.shape.small,cursor:"pointer",position:"relative"},onClick:t=>{const o=t.currentTarget.getBoundingClientRect(),u=(t.clientX-o.left)/o.width;i.current&&(i.current.currentTime=u*n)},children:e.jsx("div",{style:{width:`${c/n*100}%`,height:"100%",background:"var(--vgai-asset-icon-audio)",borderRadius:r.shape.small}})}),e.jsx(k,{type:"button",variant:"secondary",size:"comfortable",onClick:S,children:a?"Pause":"Play"}),e.jsx("div",{role:"img","aria-label":"Audio waveform",style:{width:"100%",height:36,display:"flex",alignItems:"center",gap:2},children:Array.from({length:48},(t,o)=>e.jsx("i",{style:{flex:1,height:`${20+o*37%75}%`,background:"var(--vgai-asset-icon-audio)",opacity:o/48<=c/(n||1)?1:.3}},o))}),e.jsxs("label",{style:{fontSize:11,color:r.content.muted},children:[e.jsx(w,{checked:h,onChange:t=>g(t.target.checked)})," Loop"]}),e.jsxs("label",{style:{fontSize:11,color:r.content.muted},children:["Volume"," ",e.jsx(z,{"aria-label":"Audio volume",min:"0",max:"1",step:"0.05",value:v,onChange:t=>{const o=Number(t.target.value);y(o),i.current&&(i.current.volume=o)}})]})]}),e.jsx("audio",{ref:i,src:s,loop:h,onLoadedMetadata:()=>{i.current&&f(i.current.duration)},onTimeUpdate:()=>{i.current&&x(i.current.currentTime)},onEnded:()=>p(!1)}),e.jsx(C,{label:"Info",children:e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[e.jsxs("div",{children:[e.jsx("div",{style:m,children:"Path"}),e.jsx("div",{style:{fontSize:11,color:r.content.primary,wordBreak:"break-all"},children:s})]}),n!=null&&e.jsxs("div",{children:[e.jsx("div",{style:m,children:"Duration"}),e.jsx("div",{style:{fontSize:11,color:r.content.primary},children:d(n)})]}),e.jsxs("div",{children:[e.jsx("div",{style:m,children:"Format"}),e.jsx("div",{style:{fontSize:11,color:r.content.primary},children:b})]})]})})]})}export{L as AudioViewer};
@@ -1 +0,0 @@
1
- import{a as h}from"./jsx-runtime-DPjLkJKQ.js";import{i as j}from"./react-canvas-navigation-Cp3cOHJa.js";import{R as E,h as O,i as D}from"./react-story-board-GaXqr03H.js";import{am as z,ao as B,bf as F,fG as L,fH as I,an as X,dy as G,eP as k,ak as K,al as V,c2 as Y,M as H,fI as q,fJ as U,ad as x,fK as W,dp as $,dq as N,ds as Z}from"./index-BRJMIUK0.js";import{registerPresentedPixiApps as J}from"./canvas-preview-frames-C0QTagA3.js";import{R as Q}from"./ReactCanvasControls-CnJrPj-B.js";import{r as m}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{s as tt}from"./story-presentation-DMSYRWaz.js";import{m as et}from"./pixi-story-model-DNkfnWUV.js";import{withPixiStoryMountTurn as T}from"./story-pixi-preview-Da6afqLg.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"./index-SS9EugVg.js";import"./crash-null-boundary-v3a0uEgw.js";import"./story-mount-turn-DFRTj5hi.js";const nt="No story yet",ot={width:160,height:160},A={width:240,height:180},R=96;function st(e){return{stories:e.length,modules:new Set(e.map(n=>n.modulePath)).size}}function rt(e){const n=e.layout;return n==="fullscreen"||n==="padded"||n==="centered"?n:"padded"}function at(e,n,r){if(!r.componentName)return!0;const a=I(e,r.componentName,n);return!a||a.modulePath===n&&a.name===r.name}function it(e){const n=[],r=new Map,a=X();for(const t of e)if(t.ok)for(const o of t.stories){const c=z({modulePath:t.modulePath,regions:a});if(c.medium!=="canvas"){c.via==="undeclared"&&B(t.modulePath,c.reason);continue}if(!at(e,t.modulePath,o))continue;const y=F({modulePath:t.modulePath,...o.title===void 0?{}:{title:o.title}}),g=L(y),u=`${g}/${y.leaf}`;r.set(u,(r.get(u)??0)+1),n.push({identity:{id:`${t.modulePath}#${o.name}`,storyName:o.name,modulePath:t.modulePath,district:g},leafKey:u,leaf:y.leaf,storyLabel:o.label,Component:o.Component,layout:rt(o.parameters)})}return n.map(({identity:t,leafKey:o,leaf:c,storyLabel:y,Component:g,layout:u})=>({identity:{...t,label:(r.get(o)??0)>1?`${c} · ${y}`:c},Component:g,layout:u}))}function ct(e,n){const r=new Set,a=[];for(const t of n){if(t.surface!=="canvas"||t.contentKind==="image")continue;const o=`${t.path}#${t.name}`;r.has(o)||(r.add(o),!I(e,t.name,t.path)&&a.push({key:o,name:t.name,path:t.path,line:t.line}))}return a}function lt(e,n){const r=n==="fullscreen"?e.app.screen:e.stage.getBounds(),a=n==="fullscreen"?0:8,t={x:Math.floor(r.x-a),y:Math.floor(r.y-a),width:Math.ceil(r.width+a*2),height:Math.ceil(r.height+a*2)};if(!Number.isFinite(t.width)||!Number.isFinite(t.height)||t.width<1||t.height<1)return{frameSize:{...A},crop:{x:0,y:0,...A}};if(n!=="fullscreen"){const o=Math.max(R,t.width),c=Math.max(R,t.height);t.x-=(o-t.width)/2,t.y-=(c-t.height)/2,t.width=o,t.height=c}return{frameSize:{width:t.width,height:t.height},crop:t}}function dt(e){return e instanceof Error?e.message:String(e)}async function ut(e,n,r){const a=[],t=[];for(const{identity:o,Component:c,layout:y}of e){if(n?.aborted)break;const g=u=>{t.push({id:o.id,modulePath:o.modulePath,storyName:o.storyName,reason:u})};try{const u=await r(c);if(!et(u.stage)){u.dispose(),g("The story mounted no Pixi content.");continue}a.push({...o,mounted:u,...lt(u,y)})}catch(u){g(dt(u))}}return{exhibits:a,skipped:t}}function pt(e,n=[],r){return T(async a=>{const{exhibits:t,skipped:o}=await ut(it(e),r,a),c={exhibits:t,ghosts:ct(e,n),skipped:o};if(r?.aborted)throw _(c),new Error("The 2D board build was superseded by a newer one.");return c})}function M(e){return T(async()=>{_(e)})}function _(e){for(const n of e.exhibits)try{n.mounted.dispose()}catch(r){console.error("[canvas-board] a story mount failed to dispose.",r)}}const mt="2D",ft=4;function ht(e){return[...e.exhibits.map(n=>({id:n.id,label:n.label,modulePath:n.modulePath,...n.district?{title:n.district}:{},frameSize:n.frameSize})),...e.ghosts.map(n=>({id:n.key,label:n.name,modulePath:n.path,title:nt,frameSize:ot}))]}function yt(e,n,r){const a=ht(n),t=a[0];if(!t)return null;const o=document.createElement("div");o.dataset.testid="canvas-board-layer",o.style.position="absolute",o.style.left="0",o.style.top="0",o.style.transformOrigin="0 0",e.appendChild(o);let c=null,y=t.id;c=O(o,a,t.id,(i,f)=>{y=i,c?.activate(i,f==="zoom"),r?.()},tt(a));const g=[];for(const i of n.exhibits){const f=c.frames.get(i.id);if(!f)continue;const p=i.mounted.host;p.setAttribute("style",`position:absolute;left:${-i.crop.x}px;top:${-i.crop.y}px;width:${i.mounted.app.screen.width}px;height:${i.mounted.app.screen.height}px;overflow:visible;contain:layout paint;`);const P=i.mounted.app.canvas;P.style.display="block",P.style.width=`${i.mounted.app.screen.width}px`,P.style.height=`${i.mounted.app.screen.height}px`,f.content.appendChild(p),g.push(P)}for(const i of n.ghosts){const f=c.frames.get(i.key);if(!f)continue;f.element.style.border=`1px dashed ${x.boundary.strong}`;const p=document.createElement("div");p.dataset.testid="canvas-board-ghost",p.textContent="No story yet",p.style.position="absolute",p.style.inset="0",p.style.display="flex",p.style.alignItems="center",p.style.justifyContent="center",p.style.color=x.content.dim,p.style.font=`11px ${x.typography.sans}`,p.style.pointerEvents="none",f.content.appendChild(p)}const u=J(n.exhibits.map(i=>i.mounted.app)),b=()=>{const i=N();o.style.transform=Z(i)??"";const f=i.zoom>=1?"pixelated":"auto";for(const p of g)p.style.imageRendering=f},w=$(b);b();const v=requestAnimationFrame(()=>c?.fitAll());let S=!1,s=0,l=0,d=0;const C=i=>{s=requestAnimationFrame(C),d+=l===0?16:Math.min(100,i-l),l=i;for(const f of n.exhibits)try{f.mounted.ticker.update(d)}catch(p){console.error("[canvas-board] an exhibit failed to tick.",p)}};return{selectAt(i,f){return c?.selectAtClientPoint(i,f)??!1},activeStoryId(){return y},zoomAt(i,f){return c?.zoomAtClientPoint(i,f)??!1},setPlaying(i){i!==S&&(S=i,i?(l=0,s=requestAnimationFrame(C)):(cancelAnimationFrame(s),s=0))},dispose(){cancelAnimationFrame(s),cancelAnimationFrame(v),w(),u();for(const i of n.exhibits)i.mounted.host.remove();c?.dispose(),c=null,o.remove()}}}function gt({active:e}){const n=m.useSyncExternalStore(K,V),r=m.useRef(null),a=m.useRef(null),t=m.useRef(null),o=m.useRef(null),[c,y]=m.useState({status:"idle"}),[g,u]=m.useState(e);m.useEffect(()=>{e&&u(!0)},[e]),m.useEffect(()=>{const s=r.current;if(s)return j(s)},[]),m.useEffect(()=>{if(!g)return;const s=new AbortController;let l=null;return y({status:"building"}),Y().then(d=>(d.ok||H.warn(`Component index unavailable, so this board shows no ghost frames: ${d.reason}`,"canvas-board"),pt(n,d.ok?d.entries:[],s.signal))).then(d=>{if(s.signal.aborted){M(d);return}l=d,y({status:"ready",board:d})},d=>{s.signal.aborted||y({status:"error",message:d instanceof Error?d.message:String(d)})}),()=>{s.abort(),l&&M(l)}},[n,g]);const b=c.status==="ready"?c.board:null,[w,v]=m.useState(null);m.useEffect(()=>{const s=r.current;if(!s||!b)return;const l=yt(s,b,()=>{v(a.current?.activeStoryId()??null)});return a.current=l,v(l?.activeStoryId()??null),()=>{a.current=null,l?.dispose()}},[b]);const S=b?.exhibits.find(s=>s.id===w)??null;return m.useEffect(()=>{if(e)return q(k,()=>({adapter:null,nodeId:null}))},[e]),m.useEffect(()=>{if(!(!e||!S))return U(k,()=>({id:S.id,title:S.label,kindLabel:"Canvas story",note:{text:`${S.storyName} · ${S.modulePath}`,testId:"canvas-board-subject-note"},sections:[]}))},[e,S]),m.useEffect(()=>(a.current?.setPlaying(e),()=>a.current?.setPlaying(!1)),[e,b]),h.jsxs("div",{"data-testid":"canvas-board","data-vgai-backdrop-color":e?E:void 0,"data-vgai-backdrop-policy":e?"dark-frost":void 0,style:{position:"absolute",inset:0,overflow:"hidden",pointerEvents:"auto",touchAction:"none",userSelect:"none",WebkitUserSelect:"none",backgroundColor:E},ref:r,onPointerDown:s=>{t.current={x:s.clientX,y:s.clientY},o.current={x:s.clientX,y:s.clientY},s.currentTarget.setPointerCapture(s.pointerId)},onPointerMove:s=>{const l=o.current;if(!l)return;const d=s.clientX-l.x,C=s.clientY-l.y;d===0&&C===0||(o.current={x:s.clientX,y:s.clientY},W(d,C))},onPointerUp:s=>{const l=t.current;t.current=null,o.current=null,s.currentTarget.hasPointerCapture(s.pointerId)&&s.currentTarget.releasePointerCapture(s.pointerId),!(!l||Math.hypot(s.clientX-l.x,s.clientY-l.y)>ft)&&a.current?.selectAt(s.clientX,s.clientY)},onPointerCancel:()=>{t.current=null,o.current=null},onDoubleClick:s=>{a.current?.zoomAt(s.clientX,s.clientY)},children:[h.jsx(bt,{}),b?h.jsx(xt,{board:b}):h.jsxs("div",{"data-testid":"canvas-board-status",style:{padding:16,fontSize:12,color:x.content.muted},children:[c.status==="error"&&c.message,c.status==="building"&&"Mounting every canvas story off-screen…",c.status==="idle"&&"Open this tab to lay out every canvas story at 1× texels."]}),h.jsx(Q,{containerRef:r,context:null,boardOnly:!0})]})}function bt(){const e=m.useSyncExternalStore($,N),n=Math.max(8,24*e.zoom),r=Math.max(.7,Math.min(1.4,e.zoom));return h.jsx("div",{"data-testid":"react-design-canvas-backdrop","aria-hidden":"true",style:{position:"absolute",inset:0,pointerEvents:"none",backgroundColor:E,backgroundImage:`radial-gradient(circle, ${D} ${r}px, transparent ${r}px)`,backgroundPosition:`${e.x}px ${e.y}px`,backgroundSize:`${n}px ${n}px`}})}function xt({board:e}){const[n,r]=m.useState(!1),a=st(e.skipped);return h.jsxs("div",{"data-testid":"canvas-board-status",style:{position:"absolute",left:8,bottom:8,maxWidth:420,padding:"4px 8px",borderRadius:x.shape.small,background:x.surface.raised,border:`1px solid ${x.boundary.default}`,fontSize:10,color:x.content.muted,pointerEvents:"auto"},children:[e.exhibits.length," exhibit",e.exhibits.length===1?"":"s",e.ghosts.length>0&&h.jsxs(h.Fragment,{children:[" · ",e.ghosts.length," component",e.ghosts.length===1?"":"s"," without stories"]}),e.skipped.length>0&&h.jsxs(h.Fragment,{children:[" · ",h.jsxs("span",{role:"button",tabIndex:0,"aria-expanded":n,onClick:()=>r(t=>!t),onKeyDown:t=>{(t.key===" "||t.key==="Enter")&&(t.preventDefault(),r(o=>!o))},style:{cursor:"pointer",color:x.accent.default},children:[a.stories," ",a.stories===1?"story":"stories"," in ",a.modules," ",a.modules===1?"module":"modules"," not on this board"]})]}),n&&h.jsx("div",{style:{marginTop:4,maxHeight:160,overflow:"auto"},children:e.skipped.map(t=>h.jsxs("div",{style:{padding:"1px 0"},children:[h.jsxs("code",{style:{color:x.content.dim},children:[t.modulePath,"#",t.storyName]})," ","— ",t.reason]},t.id))})]})}function Bt(){return G({id:k,title:mt,kind:"content-browser",workspaceRole:"workspace-reference",Content:gt,closeable:!1,readOnly:!0,presentation:()=>({kind:"workspace",id:k})},{category:"canvas"})}export{k as CANVAS_COMPONENTS_DOCUMENT_ID,Bt as installCanvasBoardDocument};