@volter/game-editor 0.5.68 → 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.
- package/BUNDLED_NOTICES +10954 -5077
- package/LICENSE +1 -1
- package/LICENSE-BLENDER +2 -2
- package/NOTICE +2 -2
- package/additions/canvas/package.json +8 -0
- package/additions/canvas/src/canvas-mount.ts +46 -0
- package/additions/canvas/src/scene2d.tsx +18 -0
- package/catalog/entries/bake.json +1 -1
- package/catalog/entries/blender.json +3 -3
- package/catalog/entries/music.json +5 -5
- package/catalog/project-source/LICENSE +1 -1
- package/catalog/project-source/src/contributions/bake.kind.ts +2 -2
- package/catalog/project-source/src/contributions/builder-document.tsx +1 -1
- package/catalog/project-source/src/contributions/builder-ui.tsx +3 -3
- package/catalog/project-source/src/contributions/module-source.ts +4 -4
- package/catalog/project-source/src/lib/reflections/volume-reflection-material.ts +59 -59
- package/catalog/project-source/src/lib/static-batch/Frozen.tsx +1 -1
- package/catalog/project-source/src/lib/static-batch/mutation-watch.ts +1 -1
- package/catalog/project-source/src/tools/bake-preview.tool.ts +9 -9
- package/dist/.vite/manifest.json +3999 -3999
- package/dist/assets/{AssetBudgetPanel-P2PeL_X5.js → AssetBudgetPanel-BMR3AQhc.js} +4 -4
- package/dist/assets/AudioViewer-DESxi7pU.js +1 -0
- package/dist/assets/{CanvasBoardDocument-BFJdTVGp.js → CanvasBoardDocument-Q_nrYFlB.js} +1 -1
- package/dist/assets/CanvasSceneViewport-WZMoKy_F.js +1 -0
- package/dist/assets/ColorInput-C2EK-OnD.js +1 -0
- package/dist/assets/{EntityModelDocument-Du8wIbyK.js → EntityModelDocument-B_4ENTCq.js} +1 -1
- package/dist/assets/{EnvironmentAssetDocument-_SttfMY_.js → EnvironmentAssetDocument-BZBp6OFJ.js} +1 -1
- package/dist/assets/{GameplaySessionTimeline-CWudWnfd.js → GameplaySessionTimeline-1ivaucpv.js} +1 -1
- package/dist/assets/ImageViewer-D16OExYu.js +1 -0
- package/dist/assets/{InspectorCanvasPreview-CEr_Kxna.js → InspectorCanvasPreview-BrFjhoiD.js} +1 -1
- package/dist/assets/InspectorObjectPreview-CY5xVsPR.js +1 -0
- package/dist/assets/JsonAssetDocument-CvjTlcdr.js +2 -0
- package/dist/assets/{LiveModuleDocument-BWjOzO_6.js → LiveModuleDocument-ne1o9giX.js} +1 -1
- package/dist/assets/{LutAssetDocument-DIc6nsht.js → LutAssetDocument-Cp0v-O7q.js} +1 -1
- package/dist/assets/{ModelAssetDocument-_CqTsX_A.js → ModelAssetDocument-Ceu7OIN9.js} +1 -1
- package/dist/assets/{NonThreeAuthoringBootstrap-C-V23E1e.js → NonThreeAuthoringBootstrap-DiElZf-e.js} +1 -1
- package/dist/assets/Object3DDocumentToolbar-BLNamqii.js +1 -0
- package/dist/assets/Object3DDocumentViewport-D6QoHfa_.js +2 -0
- package/dist/assets/{Object3DPreview-BPHEr3vI.js → Object3DPreview-ZVokr044.js} +1 -1
- package/dist/assets/OnlineAssetDetail-Dnckd7zB.js +1 -0
- package/dist/assets/PlayBar-DsMitSgy.js +1 -0
- package/dist/assets/{QuarksAssetDocument-4Dne3EHx.js → QuarksAssetDocument-B5J8uHFM.js} +1 -1
- package/dist/assets/ReactCanvasControls-CmfvxJYY.js +1 -0
- package/dist/assets/RootSelectionOverlay-BWsNiSuM.js +1 -0
- package/dist/assets/{ShaderAssetDocument-W3ZjLCkt.js → ShaderAssetDocument-CT7XzsZq.js} +4 -4
- package/dist/assets/ShadowEditor-YO5KEfnz.js +1 -0
- package/dist/assets/{SourceAssetViewer-BGUeDAEv.js → SourceAssetViewer-FSLup2km.js} +1 -1
- package/dist/assets/StageHost-DYfGYwvq.js +2 -0
- package/dist/assets/{StoryPreviewMount-Di8uMovM.js → StoryPreviewMount-BhvT5QlB.js} +1 -1
- package/dist/assets/ThreeBoardDocument-B-z2nwnH.js +2 -0
- package/dist/assets/{ThreeIsolationSceneContent-BAKurKW5.js → ThreeIsolationSceneContent-B5pU4Y6k.js} +1 -1
- package/dist/assets/{ToolObject3DPreview-CffvGJ1h.js → ToolObject3DPreview-VtraiQ4Q.js} +1 -1
- package/dist/assets/Toolbar-M62Gob9T.js +1 -0
- package/dist/assets/{TransientHint-CgmkrmKF.js → TransientHint-Cc40mHWE.js} +1 -1
- package/dist/assets/VideoViewer-BxcUwXQm.js +1 -0
- package/dist/assets/ViewportShadingMenu-BoMPnTVh.js +1 -0
- package/dist/assets/active-ingest-0QjJWb7i.js +3 -0
- package/dist/assets/{animation-clock-fLmY_3--.js → animation-clock-BXEwUJtz.js} +1 -1
- package/dist/assets/animation-mixers.service-C-Ko4KzM.js +1 -0
- package/dist/assets/animation-timeline.utility-Bl15-rYb.js +1 -0
- package/dist/assets/{asset-budget-asset.menu-BDRDWrvx.js → asset-budget-asset.menu-BUa3g0Wy.js} +1 -1
- package/dist/assets/{asset-budget.action-tQmNGQHC.js → asset-budget.action-Dl5eVPIo.js} +1 -1
- package/dist/assets/{asset-budget.document-BthgX37Z.js → asset-budget.document-DJylQ-0h.js} +1 -1
- package/dist/assets/{asset-budget.menu-DfyWVH6p.js → asset-budget.menu-BJtvNMLj.js} +1 -1
- package/dist/assets/asset-editor-persistence-BIbf5u0Q.js +1 -0
- package/dist/assets/asset-loaders-DoNflsHL.js +2 -0
- package/dist/assets/{asset-preview-Cv7tfD98.js → asset-preview-DxlSdRZn.js} +1 -1
- package/dist/assets/{audio-unlock.service-BvHvZjzx.js → audio-unlock.service-CTaiyXF9.js} +1 -1
- package/dist/assets/audio.utility-CEmNc68t.js +1 -0
- package/dist/assets/autoplay.service-BZLSUyL8.js +1 -0
- package/dist/assets/{babylon-authoring-adapter-Cg5ALSpr.js → babylon-authoring-adapter-BZvV2bz_.js} +1 -1
- package/dist/assets/binding-resolver-DGbk9_XR.js +2 -0
- package/dist/assets/blender-emscripten-engine-B7lfg-RX.js +2 -0
- package/dist/assets/{blender-node-editor.document-B92MO51u.js → blender-node-editor.document-wXJobGNH.js} +1 -1
- package/dist/assets/{blender-properties-tab-CDVyDAbf.js → blender-properties-tab-7GFf80ev.js} +1 -1
- package/dist/assets/{blender-runtime-host-CuniE0sy.js → blender-runtime-host-CILxrx5T.js} +2 -2
- package/dist/assets/{blender-runtime-skin-B_tOz5j5.js → blender-runtime-skin-Cd5lQYsC.js} +7 -7
- package/dist/assets/{blender-runtime.document-DxUwLiEW.js → blender-runtime.document-C0r_R49S.js} +7 -7
- package/dist/assets/{blender-timeline.document-BdEEoQbK.js → blender-timeline.document-BaISZMBc.js} +1 -1
- package/dist/assets/{blender-uv-editor.document-EMSUlRh4.js → blender-uv-editor.document-CT_fsyyA.js} +1 -1
- package/dist/assets/blender-version.status-DzEx7u7k.js +1 -0
- package/dist/assets/blender-wali-engine-DOiQCBXH.js +2 -0
- package/dist/assets/{blender.command-BkBML2SY.js → blender.command-DdiKd8mZ.js} +1 -1
- package/dist/assets/blender.status-BMETIbb2.js +1 -0
- package/dist/assets/board-guides-CjHQ9Ynm.js +1 -0
- package/dist/assets/body-marks-C1LxJtQb.js +1 -0
- package/dist/assets/{bridge.command-VnplZ81v.js → bridge.command-DXUeavn5.js} +3 -3
- package/dist/assets/{browserAll-BCmkqg8n.js → browserAll-Dg46xT22.js} +1 -1
- package/dist/assets/{build-player.document-DV7YcJQt.js → build-player.document-BHwVV3K0.js} +1 -1
- package/dist/assets/build-profiles.document-HkpS-Kxa.js +2 -0
- package/dist/assets/build-progress.status-u1J0Rm1D.js +1 -0
- package/dist/assets/{build-session-BGe0eGrQ.js → build-session-BLboUUbw.js} +2 -2
- package/dist/assets/{build.action-Bdj4ZEL_.js → build.action-C00DL83N.js} +1 -1
- package/dist/assets/{build.command-DAWiYvPa.js → build.command-Cjk_NY75.js} +1 -1
- package/dist/assets/build.header-BWNmNWFT.js +1 -0
- package/dist/assets/{build.menu-BiRNC_xc.js → build.menu-BBYtqCIq.js} +1 -1
- package/dist/assets/{build.service-Dw9K6VSF.js → build.service-DOU15tKN.js} +1 -1
- package/dist/assets/{camera-C-qXzXFf.js → camera-7DGyYW7Y.js} +1 -1
- package/dist/assets/{camera-runtime.inspector-BDrwWRlU.js → camera-runtime.inspector-n-jiOR-3.js} +1 -1
- package/dist/assets/{canvas-design-mount-DLn49Zle.js → canvas-design-mount-CSRHU-ag.js} +4 -4
- package/dist/assets/canvas-entry-runtime-BST8yRuK.js +2 -0
- package/dist/assets/{canvas-preview-frames-B5xFRjhQ.js → canvas-preview-frames-Cja32aW2.js} +1 -1
- package/dist/assets/{canvas-story-capture.service-DQ_leYyi.js → canvas-story-capture.service-D5R5HJ8n.js} +2 -2
- package/dist/assets/capability-coverage-ByWftxk4.js +7 -0
- package/dist/assets/{collaboration-presence-BOS1t8wI.js → collaboration-presence-D6MC9xJN.js} +1 -1
- package/dist/assets/{collider-Bf4Uk6LW.js → collider-B78EcUc9.js} +1 -1
- package/dist/assets/{component-board.service-DFSSCaCf.js → component-board.service-BaQI5Oas.js} +2 -2
- package/dist/assets/component-board.service-CkjrsD8x.js +2 -0
- package/dist/assets/{component-board.service-CpVXGhz5.js → component-board.service-Dvjz_g-x.js} +2 -2
- package/dist/assets/component-contracts.service-C3-AXQp7.js +1 -0
- package/dist/assets/component-instance-root-DLI40MiB.js +1 -0
- package/dist/assets/{component-verbs.command-DGzZAV_Z.js → component-verbs.command-Brr_WcaR.js} +1 -1
- package/dist/assets/{component-verbs.service-D1rVRogp.js → component-verbs.service-DC2sC3j3.js} +1 -1
- package/dist/assets/{config-D-EAAhqP.js → config-BI_7osdR.js} +4 -4
- package/dist/assets/{configurations-_HZOWZPy.js → configurations-XP9YLkrt.js} +1 -1
- package/dist/assets/connection.status-BhRwcFx0.js +1 -0
- package/dist/assets/{constraint-5KLYpGm7.js → constraint-Bp1l8hY-.js} +1 -1
- package/dist/assets/constraints.inspector-Dm1cycK3.js +1 -0
- package/dist/assets/{content-bounds-DKBD7nsv.js → content-bounds-DROIchTa.js} +1 -1
- package/dist/assets/{contract-system-adapters-h6OUBRYA.js → contract-system-adapters-Cn7OW_ay.js} +1 -1
- package/dist/assets/coverage.service-l42ty7lr.js +3 -0
- package/dist/assets/{create-runtime-Bg2uYMfh.js → create-runtime-B_uTwsmi.js} +2 -2
- package/dist/assets/curve-THOUsg-j.js +1 -0
- package/dist/assets/{data-asset-7Nfmx-28.js → data-asset-DAANayR6.js} +1 -1
- package/dist/assets/data-check-core-CHqar_E8.js +1 -0
- package/dist/assets/data-ref-CN34UeVw.js +1 -0
- package/dist/assets/debug-bridge-BD1XVAIB.js +1 -0
- package/dist/assets/debug-registry-ggQWxtu-.js +1 -0
- package/dist/assets/{deferred-ingest-play-Bej67_y9.js → deferred-ingest-play-B2JUlwlT.js} +2 -2
- package/dist/assets/{design-time-canvas-mount-CFW9ZWuk.js → design-time-canvas-mount-as9cN9I6.js} +2 -2
- package/dist/assets/design-time-layers-BRseeSmV.js +1 -0
- package/dist/assets/{design-time-mount.service-DJeAPUB_.js → design-time-mount.service-BTVu3yKo.js} +2 -2
- package/dist/assets/{design-time-mount.service-_R1UDCw3.js → design-time-mount.service-DKvc7lVK.js} +2 -2
- package/dist/assets/design-time-react-mount-C7rB56QD.js +1 -0
- package/dist/assets/{document-preview-three-5cbuuJMH.js → document-preview-three-CxmRhCcV.js} +1 -1
- package/dist/assets/{dom-authoring-adapter-CoESNvrM.js → dom-authoring-adapter-L8OzXfmE.js} +1 -1
- package/dist/assets/{draco3d-Sk9K4AUT.js → draco3d-BjNuXv66.js} +1 -1
- package/dist/assets/{edit-mode-audio.service-CH6J-8N7.js → edit-mode-audio.service-BwI5u845.js} +1 -1
- package/dist/assets/edit-mode-authoring-D5f7aHHl.js +1 -0
- package/dist/assets/{edit-mode-networking.service-C4o2pGHX.js → edit-mode-networking.service-DqP_4lbI.js} +1 -1
- package/dist/assets/editor-api-BM7H_F4G.js +1 -0
- package/dist/assets/{editor-layers-B4oYfpj8.js → editor-layers-D-CTUqco.js} +1 -1
- package/dist/assets/editor-presentation-activity-CqJH4G9t.js +1 -0
- package/dist/assets/{editor-shell-store-Bh1S7M54.js → editor-shell-store-DHVWS8cE.js} +1 -1
- package/dist/assets/{entity-object-B_5Gc0Ky.js → entity-object-MKYemTFM.js} +1 -1
- package/dist/assets/{extend-DcEyE5jI.js → extend-BrgqZiMY.js} +1 -1
- package/dist/assets/{fork-menu-CKjNh3MO.js → fork-menu-DE2MK3Nq.js} +1 -1
- package/dist/assets/{frame-debugger-store-D5YViF_8.js → frame-debugger-store-BXoLKTdZ.js} +1 -1
- package/dist/assets/game-audio-BeCyd0Ha.js +1 -0
- package/dist/assets/{game-contract-seams-C0AVYwvO.js → game-contract-seams-tyKDsfaP.js} +1 -1
- package/dist/assets/{game-css-scope-transform-8GOvVu1s.js → game-css-scope-transform-DcjrwtVc.js} +2 -2
- package/dist/assets/game-document.service-CTb2itHQ.js +1 -0
- package/dist/assets/{game-eval.command-4wa9vqWE.js → game-eval.command-CpDKXOQU.js} +2 -2
- package/dist/assets/game-module-access-BTInp2NG.js +1 -0
- package/dist/assets/game-network-DW5ARz4R.js +22 -0
- package/dist/assets/{gameplay-export-K5AcStVC.js → gameplay-export-cHk3v9y-.js} +1 -1
- package/dist/assets/gameplay-replay-HRenPTtU.js +1 -0
- package/dist/assets/{gameplay.command-DoWqBWhH.js → gameplay.command-DcY2lKKX.js} +1 -1
- package/dist/assets/generation-CdOATubd.css +1 -0
- package/dist/assets/{generation-jobs-CiabIfR0.js → generation-jobs-CJBehuUp.js} +1 -1
- package/dist/assets/generation.service-BMOc-C9i.js +1 -0
- package/dist/assets/{generations-DU9rCeQR.js → generations-ssgVOe_6.js} +1 -1
- package/dist/assets/generations.status-B_SmPReI.js +1 -0
- package/dist/assets/hierarchy-marks-BuCO8Ke-.js +1 -0
- package/dist/assets/hierarchy-marks-CsTaTkc7.js +1 -0
- package/dist/assets/hosted-asset-materialization-CiXZI85V.js +2 -0
- package/dist/assets/{ibl-override-material-CiKkaOTW.js → ibl-override-material-CMo_a49U.js} +1 -1
- package/dist/assets/index-B0S4fQQV.js +1 -0
- package/dist/assets/{index-Kb9_s5aP.js → index-B9bd4k-t.js} +1 -1
- package/dist/assets/index-BMxv2MNV.js +1 -0
- package/dist/assets/{index-CC1puVjo.js → index-Bm4_DmRO.js} +1 -1
- package/dist/assets/{index-BsYc2Oyj.js → index-BvBlIRwM.js} +1 -1
- package/dist/assets/{index-C4AUQbmq.js → index-BweKDdi_.js} +1 -1
- package/dist/assets/{index-CaG87ZF-.js → index-C5ZAyrKq.js} +271 -270
- package/dist/assets/index-CPiRKiDC.css +1 -0
- package/dist/assets/index-CfpGZrbC.js +1 -0
- package/dist/assets/index-Czvj6whv.js +1 -0
- package/dist/assets/{index-C20Flc1s.js → index-DgPDGGSV.js} +2 -2
- package/dist/assets/{inference-diagnostics-MGcIHEX6.js → inference-diagnostics-DLt9ql9I.js} +1 -1
- package/dist/assets/{ingest-boot-viewport-D2okO6JI.js → ingest-boot-viewport-BXVXjYpG.js} +1 -1
- package/dist/assets/ingest-siblings-DWJ7OGB_.js +1 -0
- package/dist/assets/ingest-source-persistence-6ShMoSCa.js +1 -0
- package/dist/assets/ingest.service-BBbX8ibg.js +1 -0
- package/dist/assets/{inspect-C8RP8G5F.js → inspect-Cz3Zyx_1.js} +1 -1
- package/dist/assets/inspection-D8fZOHCM.js +1 -0
- package/dist/assets/instances.command-BrdlngrL.js +1 -0
- package/dist/assets/{json-history-resource-CTXRV4GD.js → json-history-resource-Uqrihfc8.js} +1 -1
- package/dist/assets/{layered-pick-B_-BRrRD.js → layered-pick-CAVQMPI7.js} +1 -1
- package/dist/assets/{light-CskDQ8gF.js → light-CqzsCWeJ.js} +1 -1
- package/dist/assets/{live-project-verbs-BOAQN3ME.js → live-project-verbs-CdFmLYOo.js} +1 -1
- package/dist/assets/{machine.document-BxOoCOo9.js → machine.document-DRIFOVaa.js} +1 -1
- package/dist/assets/{machines.finder-CqEceWzS.js → machines.finder-DPCT6few.js} +1 -1
- package/dist/assets/material-BVApn1V_.js +1 -0
- package/dist/assets/{material-factory-qB9pzcQf.js → material-factory-B_75xxFD.js} +1 -1
- package/dist/assets/{mesh-5--4qA-C.js → mesh-DdA3mExo.js} +1 -1
- package/dist/assets/model-asset-sections-D1uxOu2v.css +1 -0
- package/dist/assets/model-asset-sections.service-CJnSIckZ.js +1 -0
- package/dist/assets/{model-inspection-MrJY0U_-.js → model-inspection-DvspbmJl.js} +1 -1
- package/dist/assets/{model-thumbnail-uk-2sblh.js → model-thumbnail-BmQs-h6t.js} +1 -1
- package/dist/assets/{models.finder-rk8dhgO8.js → models.finder-Qv_Hsccy.js} +1 -1
- package/dist/assets/module-mode-MJ4Gbsry.js +2 -0
- package/dist/assets/mount-canvas-ingest-root-BxtM8OaB.js +2 -0
- package/dist/assets/mount-dom-ingest-root-pGatqO46.js +2 -0
- package/dist/assets/{mount-ingest-root-BC3-1Cw1.js → mount-ingest-root-C7jb-mCl.js} +2 -2
- package/dist/assets/{mount-manifest-QJOB11Kv.js → mount-manifest-BfoHBuzn.js} +1 -1
- package/dist/assets/mount-readiness-DyAd17pe.js +4 -0
- package/dist/assets/mount-three-ingest-root-Boa5mcaF.js +1 -0
- package/dist/assets/{mounted-authoring-B7RL_V28.js → mounted-authoring-DxMISwvR.js} +1 -1
- package/dist/assets/{mounted-story-viewport-source-CnYhX3vW.js → mounted-story-viewport-source-DfnLxI1f.js} +1 -1
- package/dist/assets/{native-debug-module-B-rWJfWE.js → native-debug-module-BlrALjM3.js} +1 -1
- package/dist/assets/{navigation-BVu-aVmF.js → navigation-CqG5o5AR.js} +1 -1
- package/dist/assets/{navmesh.menu-C3M63eR4.js → navmesh.menu-D4TdVDhe.js} +1 -1
- package/dist/assets/{navmesh.service-B0H1fUfn.js → navmesh.service-DWKT5ruQ.js} +1 -1
- package/dist/assets/network-observer.service-ZRAquNq4.js +1 -0
- package/dist/assets/network.utility-DjeOEvAY.js +1 -0
- package/dist/assets/object-marks-BnvSuCTt.js +1 -0
- package/dist/assets/{object3d-authoring-subject-BDrxd1GA.js → object3d-authoring-subject-XccsO0xG.js} +1 -1
- package/dist/assets/{object3d-document-session-registry-OjqzJ86S.js → object3d-document-session-registry-CMRJdFp6.js} +2 -2
- package/dist/assets/{oid-transform-Bzc2ZJSH.js → oid-transform-DaA6yW6o.js} +1 -1
- package/dist/assets/{particles-Be7AvO4c.js → particles-DsQRcDBY.js} +1 -1
- package/dist/assets/{performance-profiler-OwnXQX0M.js → performance-profiler-CMbwGBuk.js} +1 -1
- package/dist/assets/pixi-authoring-adapter-BoBt8bB5.js +1 -0
- package/dist/assets/pixi-live-write-target-CYZgvC6U.js +1 -0
- package/dist/assets/{play.command-CIGRq8ow.js → play.command-D9JGJP-e.js} +2 -2
- package/dist/assets/pose-guard-CLabLSzf.js +1 -0
- package/dist/assets/presentation-COhHQdmR.js +1 -0
- package/dist/assets/{product-BN31wSnB.js → product-CaRGoiIH.js} +1 -1
- package/dist/assets/{profiler.action-D57Kj9ym.js → profiler.action-Cz7HYWjh.js} +1 -1
- package/dist/assets/{profiler.menu-Dh9Q5DDx.js → profiler.menu-D5aR_FBy.js} +1 -1
- package/dist/assets/profiler.utility-KwxlIPKb.js +1 -0
- package/dist/assets/{project-authoring-session-LCJAwGrD.js → project-authoring-session-DKXHVwxO.js} +2 -2
- package/dist/assets/project-provenance-BGnJXJwa.js +1 -0
- package/dist/assets/{properties-bone-constraints.inspector-CaIDq5nN.js → properties-bone-constraints.inspector-Bo-sU8eR.js} +1 -1
- package/dist/assets/{properties-bone.inspector-D2fcQGMF.js → properties-bone.inspector-BQiWplQv.js} +1 -1
- package/dist/assets/{properties-collection.inspector-CF5AtTAd.js → properties-collection.inspector-C5BnR-GE.js} +1 -1
- package/dist/assets/{properties-constraints.inspector-Bj2itDrS.js → properties-constraints.inspector-CyheU12R.js} +1 -1
- package/dist/assets/{properties-data.inspector-BfRqk0Xo.js → properties-data.inspector-CkycARja.js} +1 -1
- package/dist/assets/{properties-material.inspector-Bf8H0mvu.js → properties-material.inspector-Bl_PUmY-.js} +1 -1
- package/dist/assets/{properties-modifiers.inspector-BKShc1TH.js → properties-modifiers.inspector-j7SnOxQq.js} +1 -1
- package/dist/assets/{properties-object.inspector-YBh8ABnN.js → properties-object.inspector-DcR3MGLK.js} +1 -1
- package/dist/assets/{properties-output.inspector-CVkzfs-l.js → properties-output.inspector-BLjw6K4b.js} +1 -1
- package/dist/assets/{properties-particles.inspector-ChDpAq-2.js → properties-particles.inspector-BUIm2-Jf.js} +1 -1
- package/dist/assets/{properties-physics.inspector-BLEM7aMj.js → properties-physics.inspector-DNvRcxb6.js} +1 -1
- package/dist/assets/{properties-render.inspector-vU4D9xLL.js → properties-render.inspector-8FMZ-qoZ.js} +1 -1
- package/dist/assets/{properties-scene.inspector-C-DoN-kL.js → properties-scene.inspector-Dx7_z75k.js} +1 -1
- package/dist/assets/{properties-texture.inspector-DySxy1oU.js → properties-texture.inspector-WT15951-.js} +1 -1
- package/dist/assets/{properties-view-layer.inspector-DEKxMahJ.js → properties-view-layer.inspector-P7VNTdqr.js} +1 -1
- package/dist/assets/{properties-world.inspector-m5qL_TQV.js → properties-world.inspector-B3t1q8TF.js} +1 -1
- package/dist/assets/r3f-design-session-lsbFnoWH.js +2 -0
- package/dist/assets/{r3f-physics-binding-Bgzzd4ol.js → r3f-physics-binding-Cx8yhuwt.js} +1 -1
- package/dist/assets/{r3f-source-authoring-adapter-C8oMjdTL.js → r3f-source-authoring-adapter-jH3G0TeH.js} +1 -1
- package/dist/assets/react-canvas-navigation-B_gOe3CI.js +1 -0
- package/dist/assets/react-inspector.service-CZf1vfdX.js +1 -0
- package/dist/assets/react-story-board-CCm2Opwn.js +1 -0
- package/dist/assets/{react-three-rapier.esm-BR2ttgLS.js → react-three-rapier.esm-CHXGG51p.js} +1 -1
- package/dist/assets/react-world-authoring-adapter-CnzxMtYz.js +1 -0
- package/dist/assets/{realm-services-DefTrXnY.js → realm-services-Do9J6nsb.js} +1 -1
- package/dist/assets/reflection-probe-capture.inspector-BAjjIybz.js +1 -0
- package/dist/assets/{reflection-probe-BHNGwVyz.js → reflection-probe-sIto9mh0.js} +1 -1
- package/dist/assets/registry-Xnduk02T.js +1 -0
- package/dist/assets/{relative-import-specifier-DQzkawgj.js → relative-import-specifier-CPFTrxi4.js} +1 -1
- package/dist/assets/{render-env-BZ7LsGfk.js → render-env-YJlI8K0i.js} +1 -1
- package/dist/assets/{render-features-C7QwmhCo.js → render-features-DMSV2qKJ.js} +1 -1
- package/dist/assets/{render-settings-BBvkacR3.js → render-settings-CRyDhHyz.js} +1 -1
- package/dist/assets/resolve-three-D27rMc37.js +702 -0
- package/dist/assets/root-seam-contract-gjWUd5uu.js +1 -0
- package/dist/assets/{run-selection-BUeubtHj.js → run-selection-B0jOdyYt.js} +1 -1
- package/dist/assets/scene-capture-Di9cM1p4.js +1 -0
- package/dist/assets/scene-document.service-XxGs4HHE.js +2 -0
- package/dist/assets/{scene-framing-PVMqGU8h.js → scene-framing-DkZKDwH3.js} +1 -1
- package/dist/assets/{scene-index--lRWLEmW.js → scene-index-DHeKmalD.js} +1 -1
- package/dist/assets/{scene-query-s1y04OVB.js → scene-query-ByZtXA2m.js} +1 -1
- package/dist/assets/seeded-random-BJthDRMu.js +1 -0
- package/dist/assets/{session-CTXsU1lK.js → session-x8E_NJk2.js} +34 -34
- package/dist/assets/{setup-renderer-OOw1SykJ.js → setup-renderer-F9mG7t6r.js} +1 -1
- package/dist/assets/{source-object3d-authoring-adapter-RmutT5Dt.js → source-object3d-authoring-adapter-CvmFpSUj.js} +1 -1
- package/dist/assets/{source-persistence-backend-HviqjKZ2.js → source-persistence-backend-au3WtEn6.js} +1 -1
- package/dist/assets/{spark-renderer-lifecycle-DfYpvEJa.js → spark-renderer-lifecycle-B6Axb6jm.js} +1 -1
- package/dist/assets/{stage-keyboard-DDi7S27C.js → stage-keyboard-BQkndG_D.js} +1 -1
- package/dist/assets/stage-overlay-set-g6eWhuRv.js +1 -0
- package/dist/assets/stage-presence-markers-0CDfO5f4.js +1 -0
- package/dist/assets/stage-transform-tools-BzPl7OIo.js +1 -0
- package/dist/assets/standard-viewport-dressing-BW-dM_1h.js +24 -0
- package/dist/assets/{state-watch.action-DEdb1mNa.js → state-watch.action-Z1nQ5awu.js} +1 -1
- package/dist/assets/{state-watch.menu-jWbUM3kw.js → state-watch.menu-CQHGUF3W.js} +1 -1
- package/dist/assets/state-watch.utility-DCIg2i79.js +1 -0
- package/dist/assets/{story-capture-Dj1xkeKH.js → story-capture-BIrjDKeY.js} +1 -1
- package/dist/assets/story-documents-BvG2xeaR.js +3 -0
- package/dist/assets/{story-documents.service-iNP-ORNr.js → story-documents.service-DOSEa3ja.js} +1 -1
- package/dist/assets/{story-documents.service-BzQCuNBu.js → story-documents.service-y1m7XGMJ.js} +1 -1
- package/dist/assets/{story-media-presence-zTPlU9HR.js → story-media-presence-HLV-KaMj.js} +1 -1
- package/dist/assets/{story-pixi-preview-B7THvSl7.js → story-pixi-preview-CMhho2gG.js} +1 -1
- package/dist/assets/{story-presentation-BLXYPadR.js → story-presentation-CYhVv8Ku.js} +1 -1
- package/dist/assets/story-three-preview-CgcLF5lE.js +2 -0
- package/dist/assets/{structural-ids-Br2zjINh.js → structural-ids-BOo2BRoY.js} +1 -1
- package/dist/assets/studio-environment-R9qXUUcC.js +2 -0
- package/dist/assets/{surface-state-D9j6qNu8.js → surface-state-D8Qnowo6.js} +1 -1
- package/dist/assets/{syntactic-prop-specs-BTnsMOvH.js → syntactic-prop-specs-8gkBuc5j.js} +1 -1
- package/dist/assets/team-playtest.service-BBMZ2iyk.js +1 -0
- package/dist/assets/{three-oYrcK5SQ.js → three-DiL6vMXq.js} +1 -1
- package/dist/assets/three-authoring-adapter-CkLR2zGf.js +1 -0
- package/dist/assets/three-authoring.service-CovhlCGx.js +2 -0
- package/dist/assets/{three-ingest-runtime-CXKjNysA.js → three-ingest-runtime-CwTqAHgX.js} +1 -1
- package/dist/assets/{three-integration-CuAnYaTW.js → three-integration-DXOFI88n.js} +2 -2
- package/dist/assets/three-integration.service-rCAqpqSp.js +1 -0
- package/dist/assets/three-projection-core-B7Lf8tOp.js +1 -0
- package/dist/assets/{three-state-wXRU3rLr.js → three-state-BCACvUtm.js} +1 -1
- package/dist/assets/{three-story-capture.service-DMJRcqjr.js → three-story-capture.service-rTFKNtHA.js} +2 -2
- package/dist/assets/{three-story-model-DgiAP-oQ.js → three-story-model-BjKr7OMn.js} +1 -1
- package/dist/assets/three-viewport-presentation-CBzvc2v2.js +141 -0
- package/dist/assets/tools-DfctM216.js +1 -0
- package/dist/assets/transform-mode-request-DlEApNrA.js +1 -0
- package/dist/assets/transport-strip-xCg94CuI.js +1 -0
- package/dist/assets/transport.header-BRtdky0x.js +1 -0
- package/dist/assets/{trigger-volume-DP0G1VBe.js → trigger-volume-BLkHmfm9.js} +1 -1
- package/dist/assets/tuples-BDz3wbQL.js +1 -0
- package/dist/assets/ui-board-document-DvbK_HVN.js +2 -0
- package/dist/assets/{user-data-CqOoAowZ.js → user-data-C84W0V47.js} +1 -1
- package/dist/assets/user-data-CODoGZqA.js +1 -0
- package/dist/assets/{utility-view-state-Db97zwDz.js → utility-view-state-CDRxZSo-.js} +1 -1
- package/dist/assets/viewport-door-BARIpMu-.js +1 -0
- package/dist/assets/{viewport-root-presentation-B35t51xX.js → viewport-root-presentation-hRLF0BeO.js} +1 -1
- package/dist/assets/{viewport-surface-status-D5kZtFW5.js → viewport-surface-status-TUfhXKR9.js} +1 -1
- package/dist/assets/{webworkerAll-CfKEb4Ao.js → webworkerAll-PJtcQ1FD.js} +1 -1
- package/dist/assets/worker-BtXrsgFy.js +2 -0
- package/dist/assets/workspace-arrangement-DqG5sUns.js +1 -0
- package/dist/assets/world-documents-D69XaqUX.js +1 -0
- package/dist/assets/world-root-stage-binding-BgZWZEuD.js +1 -0
- package/dist/assets/{xstate-animation-binding-aQEmNSpm.js → xstate-animation-binding-CIyLzGHs.js} +1 -1
- package/dist/assets/{xstate-animation-meta-CnMX1Sc1.js → xstate-animation-meta-CbYWup3R.js} +1 -1
- package/dist/volter-shared-react.json +10 -0
- package/dist/volter-shared-three.json +3 -0
- package/dist-node/cli.js +239 -201
- package/dist-node/create.js +89 -73
- package/package.json +20 -19
- package/src/contributions.d.ts +1 -1
- package/src/index.ts +10 -10
- package/starter/cube.py +1 -1
- package/template/.agents/references/project-manual.md +17 -17
- package/template/.agents/skills/editor/SKILL.md +6 -6
- package/template/.agents/skills/editor/agents/openai.yaml +3 -3
- package/template/.agents/skills/editor/references/editor-control.md +62 -62
- package/template/.agents/skills/{vgai-3d-models → volter-3d-models}/SKILL.md +3 -3
- package/template/.agents/skills/{vgai-ingest-existing-game → volter-ingest-existing-game}/SKILL.md +2 -2
- package/template/.agents/skills/{vgai-music → volter-music}/SKILL.md +7 -7
- package/template/{.github/skills/vgai-threejs-authoring → .agents/skills/volter-threejs-authoring}/SKILL.md +9 -9
- package/template/.agents/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
- package/template/{.claude/skills/vgai-threejs-authoring → .agents/skills/volter-threejs-authoring}/references/helper-catalog.md +1 -1
- package/template/.claude/skills/editor/SKILL.md +6 -6
- package/template/.claude/skills/editor/agents/openai.yaml +3 -3
- package/template/.claude/skills/editor/references/editor-control.md +62 -62
- package/template/{.github/skills/vgai-3d-models → .claude/skills/volter-3d-models}/SKILL.md +3 -3
- package/template/{.github/skills/vgai-ingest-existing-game → .claude/skills/volter-ingest-existing-game}/SKILL.md +2 -2
- package/template/.claude/skills/{vgai-threejs-authoring → volter-threejs-authoring}/SKILL.md +9 -9
- package/template/.claude/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
- package/template/{.agents/skills/vgai-threejs-authoring → .claude/skills/volter-threejs-authoring}/references/helper-catalog.md +1 -1
- package/template/.github/copilot-instructions.md +1 -1
- package/template/.github/skills/editor/SKILL.md +6 -6
- package/template/.github/skills/editor/agents/openai.yaml +3 -3
- package/template/.github/skills/editor/references/editor-control.md +62 -62
- package/template/{.claude/skills/vgai-3d-models → .github/skills/volter-3d-models}/SKILL.md +3 -3
- package/template/{.claude/skills/vgai-ingest-existing-game → .github/skills/volter-ingest-existing-game}/SKILL.md +2 -2
- package/template/{.agents/skills/vgai-threejs-authoring → .github/skills/volter-threejs-authoring}/SKILL.md +9 -9
- package/template/.github/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
- package/template/.github/skills/{vgai-threejs-authoring → volter-threejs-authoring}/references/helper-catalog.md +1 -1
- package/template/.mcp.json +3 -3
- package/template/AGENTS.md +24 -23
- package/template/DEVLOG.md +1 -1
- package/template/IDIOMS.md +3 -3
- package/template/LICENSE +3 -3
- package/template/README.md +12 -12
- package/template/check-idioms.ts +51 -51
- package/template/manifest-entry-modules-plugin.ts +17 -4
- package/template/package.json +13 -15
- package/template/server/loopback.ts +1 -1
- package/template/server/main.ts +4 -4
- package/template/server/rooms/arena-room.ts +8 -8
- package/template/server/rooms/game-room.ts +8 -8
- package/template/server/rooms.ts +2 -2
- package/template/src/bot/QaTester.tsx +1 -1
- package/template/src/bot/bot-station.ts +2 -2
- package/template/src/bot/tester-station.ts +1 -1
- package/template/src/contributions/README.md +1 -1
- package/template/src/contributions/analytics.analytics.tsx +1 -1
- package/template/src/contributions/data.document.tsx +2 -2
- package/template/src/contributions/pages.finder.ts +1 -1
- package/template/src/contributions/tester.inspector.tsx +2 -2
- package/template/src/contributions/use-game-modules.ts +1 -1
- package/template/src/input.ts +1 -1
- package/template/src/lib/reflections/volume-reflection-material.ts +59 -59
- package/template/src/lib/static-batch/Frozen.tsx +1 -1
- package/template/src/lib/static-batch/mutation-watch.ts +1 -1
- package/template/src/main.ts +19 -38
- package/template/src/manifest-entry-modules.d.ts +12 -1
- package/template/src/prefabs/HeroBox.stories.tsx +1 -1
- package/template/src/world.tsx +1 -1
- package/template/tsconfig.json +1 -1
- package/template/validate-manifest.ts +3 -3
- package/template/vite.config.ts +11 -11
- package/template/{vgai.adapter.ts → volter.adapter.ts} +1 -1
- package/template/{vgai.project.json → volter.project.json} +2 -2
- package/template-dotfiles/gitignore +27 -27
- package/workbench/src/media/game-cover.css +11 -11
- package/workbench/src/product.contribution.ts +28 -28
- package/workbench/src/{vgaiGameSkew.ts → volterGameSkew.ts} +16 -16
- package/dist/assets/AudioViewer-xFb5Wv7A.js +0 -1
- package/dist/assets/CanvasSceneViewport-vqBlOz8P.js +0 -1
- package/dist/assets/ColorInput-CX1UZjYO.js +0 -1
- package/dist/assets/ImageViewer-shZzMd91.js +0 -1
- package/dist/assets/InspectorObjectPreview-BMOvJaOw.js +0 -1
- package/dist/assets/JsonAssetDocument-D_HXneWE.js +0 -2
- package/dist/assets/Object3DDocumentToolbar-BfPH9jz5.js +0 -1
- package/dist/assets/Object3DDocumentViewport-BaXWtATg.js +0 -2
- package/dist/assets/OnlineAssetDetail-BxibUH6K.js +0 -1
- package/dist/assets/PlayBar-DRANyO01.js +0 -1
- package/dist/assets/ReactCanvasControls-K98jOX9b.js +0 -1
- package/dist/assets/RootSelectionOverlay-BQC12Gdd.js +0 -1
- package/dist/assets/ShadowEditor-DP1LWynl.js +0 -1
- package/dist/assets/StageHost-V_0opXFt.js +0 -2
- package/dist/assets/ThreeBoardDocument-tgcaZDqQ.js +0 -2
- package/dist/assets/Toolbar-uLgsrB2z.js +0 -1
- package/dist/assets/VideoViewer-ClUJ6_uy.js +0 -1
- package/dist/assets/ViewportShadingMenu-Bdkc6jcd.js +0 -1
- package/dist/assets/active-ingest-CnAeQcuQ.js +0 -3
- package/dist/assets/animation-mixers.service-DiecMX_A.js +0 -1
- package/dist/assets/animation-timeline.utility-C71vPJgs.js +0 -1
- package/dist/assets/asset-editor-persistence-BQgjOCrm.js +0 -1
- package/dist/assets/asset-loaders-5PIUVvmH.js +0 -2
- package/dist/assets/audio.utility-D9Vk_WYS.js +0 -1
- package/dist/assets/autoplay.service-CFJoLPLw.js +0 -1
- package/dist/assets/binding-resolver-C_9MBSMa.js +0 -2
- package/dist/assets/blender-emscripten-engine-BeWFjMn-.js +0 -2
- package/dist/assets/blender-version.status-DtfwUahB.js +0 -1
- package/dist/assets/blender-wali-engine-da698rDf.js +0 -2
- package/dist/assets/blender.status-ujwGU6dU.js +0 -1
- package/dist/assets/board-guides-_3R1t_-2.js +0 -1
- package/dist/assets/body-marks-RKb_LTwL.js +0 -1
- package/dist/assets/build-profiles.document-CZxDuhzz.js +0 -2
- package/dist/assets/build-progress.status-Dk5u3C67.js +0 -1
- package/dist/assets/build.header--xqH6uTP.js +0 -1
- package/dist/assets/canvas-entry-runtime-DVeh71nC.js +0 -2
- package/dist/assets/capability-coverage-DQgg6UJe.js +0 -7
- package/dist/assets/component-board.service-DgujG90T.js +0 -2
- package/dist/assets/component-contracts.service-Bc_2Xxh_.js +0 -1
- package/dist/assets/component-instance-root-df4ofoOR.js +0 -1
- package/dist/assets/connection.status-CCX-mgmr.js +0 -1
- package/dist/assets/constraints.inspector-CwEEREsf.js +0 -1
- package/dist/assets/coverage.service-CV7b5Sqn.js +0 -3
- package/dist/assets/curve-BKuiAPpj.js +0 -1
- package/dist/assets/data-check-core-CQEjuFyt.js +0 -1
- package/dist/assets/data-ref-DyFQqqX6.js +0 -1
- package/dist/assets/debug-bridge-CESAxmlz.js +0 -1
- package/dist/assets/debug-registry-l7k5Hjc8.js +0 -1
- package/dist/assets/design-time-layers-CQgnmqc8.js +0 -1
- package/dist/assets/design-time-react-mount-CFvIk_rV.js +0 -1
- package/dist/assets/edit-mode-authoring-DBjaBTxM.js +0 -1
- package/dist/assets/editor-api-D2azVray.js +0 -1
- package/dist/assets/editor-presentation-activity-C7SNSmTd.js +0 -1
- package/dist/assets/game-audio-CaGKzia4.js +0 -1
- package/dist/assets/game-document.service-FdG_gFPU.js +0 -1
- package/dist/assets/game-module-access-DulnT3NH.js +0 -1
- package/dist/assets/game-network-Bo_nlDR5.js +0 -22
- package/dist/assets/gameplay-replay-CnWnlogY.js +0 -1
- package/dist/assets/generation-DhwCUHPf.css +0 -1
- package/dist/assets/generation.service-D2yeZaJu.js +0 -1
- package/dist/assets/generations.status-3CrPw_n5.js +0 -1
- package/dist/assets/hierarchy-marks-BLPfSIym.js +0 -1
- package/dist/assets/hierarchy-marks-C25dY2fR.js +0 -1
- package/dist/assets/hosted-asset-materialization-DYdcFlDf.js +0 -2
- package/dist/assets/index-B5WjeCHm.css +0 -1
- package/dist/assets/index-BcH5GC3b.js +0 -1
- package/dist/assets/index-CwCDkEl1.js +0 -1
- package/dist/assets/index-n3QdTv-T.js +0 -1
- package/dist/assets/index.module-Ycad3DJq.js +0 -1
- package/dist/assets/ingest-siblings-CkxW__go.js +0 -1
- package/dist/assets/ingest-source-persistence-6peGfPAS.js +0 -1
- package/dist/assets/ingest.service-Cc73WMIW.js +0 -1
- package/dist/assets/inspection-CObLhnrs.js +0 -1
- package/dist/assets/instances.command-CxKGnrNl.js +0 -1
- package/dist/assets/material-BwFzKPi0.js +0 -1
- package/dist/assets/model-asset-sections-CFvvihfx.css +0 -1
- package/dist/assets/model-asset-sections.service-TZ2SaBmH.js +0 -1
- package/dist/assets/module-mode-B79jV5tQ.js +0 -2
- package/dist/assets/mount-canvas-ingest-root-BhaYNuhY.js +0 -2
- package/dist/assets/mount-dom-ingest-root-BQb1u0LX.js +0 -2
- package/dist/assets/mount-readiness-Ds0HvvLH.js +0 -4
- package/dist/assets/mount-three-ingest-root-DIDBfvIH.js +0 -1
- package/dist/assets/network-observer.service-CiR4Q9Q0.js +0 -1
- package/dist/assets/network.utility-CNG3eJ0E.js +0 -1
- package/dist/assets/object-marks-DwvIEBOK.js +0 -1
- package/dist/assets/pixi-authoring-adapter-B42K4md-.js +0 -1
- package/dist/assets/pixi-live-write-target-D56tQEe_.js +0 -1
- package/dist/assets/pose-guard-DILO6gGq.js +0 -1
- package/dist/assets/presentation-DGBuGP6i.js +0 -1
- package/dist/assets/profiler.utility-DLNySW3w.js +0 -1
- package/dist/assets/project-provenance-4ldz-EOG.js +0 -1
- package/dist/assets/r3f-design-session-C0DPEChS.js +0 -2
- package/dist/assets/react-canvas-navigation-Jowa_lJq.js +0 -1
- package/dist/assets/react-inspector.service-TfTdj_Qk.js +0 -1
- package/dist/assets/react-story-board-Bx7qYytV.js +0 -1
- package/dist/assets/react-world-authoring-adapter-C1jPW_cN.js +0 -1
- package/dist/assets/reflection-probe-capture.inspector-C-6zrzZb.js +0 -1
- package/dist/assets/registry-Z28XSZHF.js +0 -1
- package/dist/assets/resolve-three-C7zDbK29.js +0 -702
- package/dist/assets/root-seam-contract-rGNbiX6q.js +0 -1
- package/dist/assets/scene-capture-BTWgUzhI.js +0 -1
- package/dist/assets/scene-document.service-DJJp-la1.js +0 -2
- package/dist/assets/seeded-random-38To73fI.js +0 -1
- package/dist/assets/stage-overlay-set-olkNSZmq.js +0 -1
- package/dist/assets/stage-presence-markers-cznMN_qq.js +0 -1
- package/dist/assets/stage-transform-tools-BDUZqRIR.js +0 -1
- package/dist/assets/standard-viewport-dressing-BZyuxyVl.js +0 -24
- package/dist/assets/state-watch.utility-DDmn3G25.js +0 -1
- package/dist/assets/story-documents-8ehMyYHo.js +0 -3
- package/dist/assets/story-three-preview-B1nNiPwP.js +0 -2
- package/dist/assets/studio-environment-yaKaHPxH.js +0 -2
- package/dist/assets/team-playtest.service-Ds9tkO4q.js +0 -1
- package/dist/assets/three-authoring-adapter-BrkGH4cd.js +0 -1
- package/dist/assets/three-authoring.service-DoamZDMx.js +0 -2
- package/dist/assets/three-integration.service-Db-VabIm.js +0 -1
- package/dist/assets/three-projection-core-jBJVt6O0.js +0 -1
- package/dist/assets/three-viewport-presentation-CgO3eWJ-.js +0 -141
- package/dist/assets/tools-B_NJsk05.js +0 -1
- package/dist/assets/transform-mode-request-BnKpgRUW.js +0 -1
- package/dist/assets/transport-strip-a9yLoPsI.js +0 -1
- package/dist/assets/transport.header-CpfoppXc.js +0 -1
- package/dist/assets/tuples-CKsHOV9T.js +0 -1
- package/dist/assets/ui-board-document-DtTR_mBr.js +0 -2
- package/dist/assets/user-data-dHvLdpwM.js +0 -1
- package/dist/assets/viewport-door-DVkMQazS.js +0 -1
- package/dist/assets/worker-CC9Ug5Ei.js +0 -2
- package/dist/assets/workspace-arrangement-DIMM7ska.js +0 -1
- package/dist/assets/world-documents-C4t3iOD-.js +0 -1
- package/dist/assets/world-root-stage-binding-ydl3JN1a.js +0 -1
- package/dist/vgai-shared-react.json +0 -10
- package/dist/vgai-shared-three.json +0 -3
- package/template/.agents/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
- package/template/.claude/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
- package/template/.github/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
- /package/dist/assets/{vgai-shared-fontawesome-CU65D4Ij.js → volter-shared-fontawesome-CU65D4Ij.js} +0 -0
- /package/dist/assets/{vgai-shared-jsx-dev-runtime-DFDKL7fx.js → volter-shared-jsx-dev-runtime-DFDKL7fx.js} +0 -0
- /package/dist/assets/{vgai-shared-jsx-runtime-DIqBpTut.js → volter-shared-jsx-runtime-DIqBpTut.js} +0 -0
- /package/dist/assets/{vgai-shared-react-BT7rMc2H.js → volter-shared-react-BT7rMc2H.js} +0 -0
- /package/dist/assets/{vgai-shared-react-dom-DFajMqMT.js → volter-shared-react-dom-DFajMqMT.js} +0 -0
- /package/dist/assets/{vgai-shared-react-dom-client-S0ozfl6_.js → volter-shared-react-dom-client-S0ozfl6_.js} +0 -0
- /package/dist/assets/{vgai-shared-three-DH4yxKwt.js → volter-shared-three-DH4yxKwt.js} +0 -0
- /package/template/{.vgai → .volter}/assets.json +0 -0
- /package/template/{.vgai → .volter}/provenance.json +0 -0
package/dist-node/create.js
CHANGED
|
@@ -4,7 +4,7 @@ import { dirname as dirname4, join as join6, resolve as resolve4 } from "node:pa
|
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
|
|
6
6
|
// node/scaffold/additions.ts
|
|
7
|
-
var SCAFFOLD_ADDITIONS = ["three", "ui", "server", "blender", "studio"];
|
|
7
|
+
var SCAFFOLD_ADDITIONS = ["three", "canvas", "ui", "server", "blender", "studio"];
|
|
8
8
|
var ADDITION_REQUIRES = {
|
|
9
9
|
studio: ["three"]
|
|
10
10
|
};
|
|
@@ -174,7 +174,7 @@ const meta = {
|
|
|
174
174
|
// states below render its presentational body with authored props.
|
|
175
175
|
component: GameUI,
|
|
176
176
|
render: (args) => <ReactGamePage {...args} />,
|
|
177
|
-
parameters: {
|
|
177
|
+
parameters: { volter: { defaultStory: 'Ready' } },
|
|
178
178
|
args: { lastInput: 'Ready', title: 'My Game' },
|
|
179
179
|
} satisfies Meta<typeof ReactGamePage>;
|
|
180
180
|
|
|
@@ -189,15 +189,15 @@ export const LongTitle: Story = {
|
|
|
189
189
|
`;
|
|
190
190
|
var REACT_ONLY_MAIN_SOURCE = `/**
|
|
191
191
|
* Standalone entry point: this game's own boot, in its own libraries. Every
|
|
192
|
-
* \`dom\` root \`
|
|
192
|
+
* \`dom\` root \`volter.project.json\` declares renders its entry's default export
|
|
193
193
|
* with react-dom, in one layer of \`#game-canvas\` per root, stacked by
|
|
194
194
|
* \`zOrder\`. The editor mounts the same entries itself.
|
|
195
195
|
*/
|
|
196
196
|
|
|
197
197
|
import { type ComponentType, createElement } from 'react';
|
|
198
198
|
import { createRoot } from 'react-dom/client';
|
|
199
|
-
import { manifestEntryModules } from 'virtual:
|
|
200
|
-
import manifest from '../
|
|
199
|
+
import { manifestEntryModules } from 'virtual:volter-manifest-entries';
|
|
200
|
+
import manifest from '../volter.project.json';
|
|
201
201
|
|
|
202
202
|
interface DeclaredRoot {
|
|
203
203
|
readonly id: string;
|
|
@@ -235,7 +235,7 @@ var REACT_ONLY_FILES = {
|
|
|
235
235
|
};
|
|
236
236
|
function withEditorDeclaration(source, declaration2) {
|
|
237
237
|
if (!source.includes("defineAdapter({"))
|
|
238
|
-
throw new Error("Starter
|
|
238
|
+
throw new Error("Starter volter.adapter.ts must call defineAdapter({ ... }).");
|
|
239
239
|
const look = [
|
|
240
240
|
declaration2.style ? `, style: ${declaration2.style.name}` : "",
|
|
241
241
|
declaration2.keymap ? `, keymap: ${declaration2.keymap.name}` : ""
|
|
@@ -253,9 +253,9 @@ function withEditorDeclaration(source, declaration2) {
|
|
|
253
253
|
return `${imports}${source.replace("defineAdapter({", `defineAdapter({
|
|
254
254
|
${editor}`)}`;
|
|
255
255
|
}
|
|
256
|
-
var MODELS_AGENTS_CONTRACT = `# AGENTS.md \u2014
|
|
256
|
+
var MODELS_AGENTS_CONTRACT = `# AGENTS.md \u2014 VOLTER Models Project
|
|
257
257
|
|
|
258
|
-
A standalone modeling project built with
|
|
258
|
+
A standalone modeling project built with VOLTER \u2014 Blender itself, compiled to
|
|
259
259
|
WebAssembly and running headless in the editor tab's worker, over this
|
|
260
260
|
project's own \`.blend\` files. Work here, not in the engine repo. The editor
|
|
261
261
|
is the authoring and verification surface; nothing here plays.
|
|
@@ -266,7 +266,7 @@ is the authoring and verification surface; nothing here plays.
|
|
|
266
266
|
| --- | --- |
|
|
267
267
|
| Model, revise or add a model | \`src/models/<name>.blend\` \u2014 read \`src/models/cube.py\`'s docstring first |
|
|
268
268
|
| Open the editor, look, or verify | \`.agents/skills/editor/SKILL.md\` |
|
|
269
|
-
| Blender-style modeling craft | \`.agents/skills/
|
|
269
|
+
| Blender-style modeling craft | \`.agents/skills/volter-3d-models/SKILL.md\` |
|
|
270
270
|
|
|
271
271
|
\`.agents/\` is canonical; \`.claude/skills/\` and \`.github/skills/\` are
|
|
272
272
|
generated projections (never edit); \`CLAUDE.md\` and
|
|
@@ -282,7 +282,7 @@ opens. The document does not run the script \u2014 you do, through the session's
|
|
|
282
282
|
Blender:
|
|
283
283
|
|
|
284
284
|
\`\`\`bash
|
|
285
|
-
npm run --silent
|
|
285
|
+
npm run --silent volter -- blender-mcp # the MCP transport onto the tab's Blender
|
|
286
286
|
\`\`\`
|
|
287
287
|
|
|
288
288
|
Every call is ordinary bpy against the open document, and the session saves it
|
|
@@ -293,33 +293,33 @@ finder lists every \`.blend\` as a document. Coordinates are metres and Z is up
|
|
|
293
293
|
## The editor
|
|
294
294
|
|
|
295
295
|
Workspaces: \`model\`, \`sculpt\`, \`texture\`, \`animate\`, \`design\`, \`look\`
|
|
296
|
-
(\`npm run --silent
|
|
296
|
+
(\`npm run --silent volter -- eval 'editor.workspace("sculpt")'\`; a wrong id
|
|
297
297
|
refuses and names the list). The look and keymap are Blender's
|
|
298
298
|
(\`@volter/editor-blender\` contributes them). There is no Game workspace and
|
|
299
|
-
\`
|
|
299
|
+
\`volter-game-editor play\` refuses: this project declares no roots.
|
|
300
300
|
|
|
301
301
|
## Verification contract \u2014 after every change
|
|
302
302
|
|
|
303
303
|
1. \`npm run typecheck\` \u2014 the gate.
|
|
304
304
|
2. Open the model's document and read the change through a door:
|
|
305
|
-
\`npm run --silent
|
|
306
|
-
document; \`npm run --silent
|
|
305
|
+
\`npm run --silent volter -- eval 'editor.currentView()'\` names the open
|
|
306
|
+
document; \`npm run --silent volter -- screenshot editor\` shows it; and
|
|
307
307
|
\`get_scene_info\` over \`blender-mcp\` is what the engine itself says is in
|
|
308
308
|
the file.
|
|
309
|
-
3. \`npm run --silent
|
|
309
|
+
3. \`npm run --silent volter -- console\` silent \u2014 an unresolved entry is
|
|
310
310
|
remaining work, never noise.
|
|
311
311
|
|
|
312
312
|
## Commands
|
|
313
313
|
|
|
314
314
|
\\\`\\\`\\\`bash
|
|
315
315
|
npm run dev # open/reuse this project's editor
|
|
316
|
-
npm run --silent
|
|
317
|
-
npm run --silent
|
|
318
|
-
npm run --silent
|
|
316
|
+
npm run --silent volter -- status # require connected: true
|
|
317
|
+
npm run --silent volter -- screenshot # visible evidence
|
|
318
|
+
npm run --silent volter -- eval '<js>' # THE door onto the editor
|
|
319
319
|
npm run typecheck # THE gate
|
|
320
320
|
\\\`\\\`\\\`
|
|
321
321
|
|
|
322
|
-
Always \`npm run --silent
|
|
322
|
+
Always \`npm run --silent volter -- <verb>\`, never a bare \`volter\` (a global one may
|
|
323
323
|
belong to another checkout).
|
|
324
324
|
`;
|
|
325
325
|
function withAgentsContract(source, additions) {
|
|
@@ -390,7 +390,7 @@ function assertScaffoldComposition(value, source, product) {
|
|
|
390
390
|
if (!packages.includes(product))
|
|
391
391
|
fail(
|
|
392
392
|
source,
|
|
393
|
-
`compose() returned editorPackages ${JSON.stringify(packages)}, which omits ${product}. A scaffolded project declares the product it opens in \u2014 that declaration is how \`
|
|
393
|
+
`compose() returned editorPackages ${JSON.stringify(packages)}, which omits ${product}. A scaffolded project declares the product it opens in \u2014 that declaration is how \`volter edit\` finds the editor to run (ARCHITECTURE-CORE \xA7The target shape, rule 4).`
|
|
394
394
|
);
|
|
395
395
|
const editor = composition?.editor;
|
|
396
396
|
if (typeof editor?.inspector !== "string" || editor.inspector.length === 0)
|
|
@@ -425,7 +425,7 @@ import {
|
|
|
425
425
|
} from "node:fs";
|
|
426
426
|
import { basename, dirname as dirname2, join as join4, relative as relative3, resolve as resolve2 } from "node:path";
|
|
427
427
|
|
|
428
|
-
//
|
|
428
|
+
// ../../node_modules/jsonc-parser/lib/esm/impl/scanner.js
|
|
429
429
|
function createScanner(text, ignoreTrivia = false) {
|
|
430
430
|
const len = text.length;
|
|
431
431
|
let pos = 0, value = "", tokenOffset = 0, token = 16, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0;
|
|
@@ -846,7 +846,7 @@ var CharacterCodes;
|
|
|
846
846
|
CharacterCodes2[CharacterCodes2["tab"] = 9] = "tab";
|
|
847
847
|
})(CharacterCodes || (CharacterCodes = {}));
|
|
848
848
|
|
|
849
|
-
//
|
|
849
|
+
// ../../node_modules/jsonc-parser/lib/esm/impl/string-intern.js
|
|
850
850
|
var cachedSpaces = new Array(20).fill(0).map((_, index) => {
|
|
851
851
|
return " ".repeat(index);
|
|
852
852
|
});
|
|
@@ -876,7 +876,7 @@ var cachedBreakLinesWithSpaces = {
|
|
|
876
876
|
}
|
|
877
877
|
};
|
|
878
878
|
|
|
879
|
-
//
|
|
879
|
+
// ../../node_modules/jsonc-parser/lib/esm/impl/parser.js
|
|
880
880
|
var ParseOptions;
|
|
881
881
|
(function(ParseOptions2) {
|
|
882
882
|
ParseOptions2.DEFAULT = {
|
|
@@ -1232,7 +1232,7 @@ function visit(text, visitor, options = ParseOptions.DEFAULT) {
|
|
|
1232
1232
|
return true;
|
|
1233
1233
|
}
|
|
1234
1234
|
|
|
1235
|
-
//
|
|
1235
|
+
// ../../node_modules/jsonc-parser/lib/esm/main.js
|
|
1236
1236
|
var ScanError;
|
|
1237
1237
|
(function(ScanError2) {
|
|
1238
1238
|
ScanError2[ScanError2["None"] = 0] = "None";
|
|
@@ -1326,8 +1326,8 @@ import { existsSync } from "node:fs";
|
|
|
1326
1326
|
import { join } from "node:path";
|
|
1327
1327
|
|
|
1328
1328
|
// ../editor-project/src/manifest/filename.ts
|
|
1329
|
-
var MANIFEST_FILENAME = "
|
|
1330
|
-
var REMOVED_MANIFEST_FILENAME = "
|
|
1329
|
+
var MANIFEST_FILENAME = "volter.project.json";
|
|
1330
|
+
var REMOVED_MANIFEST_FILENAME = "volter.game.json";
|
|
1331
1331
|
function removedManifestFilenameMessage(where) {
|
|
1332
1332
|
return `${where}: found \`${REMOVED_MANIFEST_FILENAME}\` and no \`${MANIFEST_FILENAME}\`. \`${REMOVED_MANIFEST_FILENAME}\` was REMOVED (the legacy-removal doctrine, docs/ARCHITECTURE-CORE.md \xA7Vocabulary) \u2014 nothing reads it any more, and it is deliberately NOT read as a fallback, because a second accepted name is the defect.
|
|
1333
1333
|
Fix: rename it \u2014 \`git mv ${REMOVED_MANIFEST_FILENAME} ${MANIFEST_FILENAME}\`. The contents are unchanged; only the filename moved.`;
|
|
@@ -1353,7 +1353,7 @@ import { execFileSync } from "node:child_process";
|
|
|
1353
1353
|
import { createHash } from "node:crypto";
|
|
1354
1354
|
import { mkdirSync, readdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
1355
1355
|
import { join as join2, relative, sep } from "node:path";
|
|
1356
|
-
var SCAFFOLD_BASELINE_RELATIVE_PATH = ".
|
|
1356
|
+
var SCAFFOLD_BASELINE_RELATIVE_PATH = ".volter/scaffold-baseline.json";
|
|
1357
1357
|
function readEngineSourceState(engineDir) {
|
|
1358
1358
|
try {
|
|
1359
1359
|
const sha = execFileSync("git", ["-C", engineDir, "rev-parse", "HEAD"], {
|
|
@@ -1395,7 +1395,7 @@ function buildScaffoldBaseline(targetDir, engineVersion, engineDir) {
|
|
|
1395
1395
|
}
|
|
1396
1396
|
function writeScaffoldBaseline(targetDir, engineVersion, engineDir) {
|
|
1397
1397
|
const baseline = buildScaffoldBaseline(targetDir, engineVersion, engineDir);
|
|
1398
|
-
mkdirSync(join2(targetDir, ".
|
|
1398
|
+
mkdirSync(join2(targetDir, ".volter"), { recursive: true });
|
|
1399
1399
|
writeFileSync(
|
|
1400
1400
|
join2(targetDir, SCAFFOLD_BASELINE_RELATIVE_PATH),
|
|
1401
1401
|
`${JSON.stringify(baseline, null, 2)}
|
|
@@ -1497,7 +1497,7 @@ ${indent}},`;
|
|
|
1497
1497
|
}
|
|
1498
1498
|
function mergeAdapterRegionIncludes(source, additions) {
|
|
1499
1499
|
if (additions.length === 0) return { kind: "unchanged" };
|
|
1500
|
-
const parsed = typescript().createSourceFile("
|
|
1500
|
+
const parsed = typescript().createSourceFile("volter.adapter.ts", source, typescript().ScriptTarget.Latest, true);
|
|
1501
1501
|
const definition = definitionObject(parsed);
|
|
1502
1502
|
if ("reason" in definition) return { kind: "unreadable", reason: definition.reason };
|
|
1503
1503
|
const listed = propertyOf(definition.object, "regions");
|
|
@@ -1588,7 +1588,7 @@ function finderText(addition, quote) {
|
|
|
1588
1588
|
}
|
|
1589
1589
|
function mergeAdapterFinders(source, additions) {
|
|
1590
1590
|
if (additions.length === 0) return { kind: "unchanged" };
|
|
1591
|
-
const parsed = typescript().createSourceFile("
|
|
1591
|
+
const parsed = typescript().createSourceFile("volter.adapter.ts", source, typescript().ScriptTarget.Latest, true);
|
|
1592
1592
|
const definition = definitionObject(parsed);
|
|
1593
1593
|
if ("reason" in definition) return { kind: "unreadable", reason: definition.reason };
|
|
1594
1594
|
const quote = quoteLike(source, void 0);
|
|
@@ -1649,7 +1649,7 @@ ${indentAt(source, array.getStart())}${source.slice(closing)}`;
|
|
|
1649
1649
|
}
|
|
1650
1650
|
|
|
1651
1651
|
// node/scaffold/catalog.ts
|
|
1652
|
-
var PROJECT_CATALOG_DIR = join3(".
|
|
1652
|
+
var PROJECT_CATALOG_DIR = join3(".volter", "catalog");
|
|
1653
1653
|
var CATALOG_SURFACES = ["three", "canvas", "dom"];
|
|
1654
1654
|
var CAPABILITY_STAMP_FILENAME = "capability.json";
|
|
1655
1655
|
function capabilityStampPath(entry) {
|
|
@@ -1668,7 +1668,7 @@ function stringArray(value, field, manifestPath) {
|
|
|
1668
1668
|
var RENAMED_CAPABILITY_IDS = /* @__PURE__ */ new Map([["mesh", "blender"]]);
|
|
1669
1669
|
function renamedCapabilityIdMessage(where, oldId, newId) {
|
|
1670
1670
|
return `${where}: capability id \`${oldId}\` was RENAMED to \`${newId}\` (2026-09-19). Nothing reads \`${oldId}\` any more, and it is deliberately NOT mapped onto \`${newId}\`, because a second accepted name is the defect.
|
|
1671
|
-
Fix: in this project, rename the file \u2014 \`git mv .
|
|
1671
|
+
Fix: in this project, rename the file \u2014 \`git mv .volter/catalog/${oldId}.json .volter/catalog/${newId}.json\` \u2014 and change its \`"id"\` to \`"${newId}"\`. If a stamp file names the old id, rename that too (\`src/tools/${oldId}.*\` -> \`src/tools/${newId}.*\`). Then \`volter-game-editor outdated\` will report against the current entry. Nothing else about the capability changed.`;
|
|
1672
1672
|
}
|
|
1673
1673
|
function readCatalogEntry(path) {
|
|
1674
1674
|
const parsed = JSON.parse(readFileSync2(path, "utf8"));
|
|
@@ -1706,15 +1706,15 @@ function readCatalogEntry(path) {
|
|
|
1706
1706
|
path
|
|
1707
1707
|
);
|
|
1708
1708
|
const scripts = readStringRecord(packageJson["scripts"], "scripts", path);
|
|
1709
|
-
const
|
|
1710
|
-
if (
|
|
1711
|
-
throw new Error(`${path}: packageJson.
|
|
1709
|
+
const volterTools = packageJson["volterTools"];
|
|
1710
|
+
if (volterTools !== void 0 && (!Array.isArray(volterTools) || volterTools.some((entry) => typeof entry !== "string" && !isRecord(entry)))) {
|
|
1711
|
+
throw new Error(`${path}: packageJson.volterTools must be an array of module paths`);
|
|
1712
1712
|
}
|
|
1713
1713
|
manifest.packageJson = {
|
|
1714
1714
|
...dependencies ? { dependencies } : {},
|
|
1715
1715
|
...devDependencies ? { devDependencies } : {},
|
|
1716
1716
|
...scripts ? { scripts } : {},
|
|
1717
|
-
...
|
|
1717
|
+
...volterTools ? { volterTools } : {}
|
|
1718
1718
|
};
|
|
1719
1719
|
}
|
|
1720
1720
|
const assetPacks = readAssetPacks(parsed["assetPacks"], path);
|
|
@@ -2029,29 +2029,29 @@ function planCapabilityPackageJson(originalBytes, manifests, label = "package.js
|
|
|
2029
2029
|
resolveSpec
|
|
2030
2030
|
);
|
|
2031
2031
|
mergeStringDependencies(parsed, "scripts", patch.scripts, manifest.id, origins);
|
|
2032
|
-
if (patch.
|
|
2033
|
-
const
|
|
2034
|
-
if (!isRecord(
|
|
2035
|
-
const currentTools =
|
|
2032
|
+
if (patch.volterTools) {
|
|
2033
|
+
const volter = parsed["volter"] === void 0 ? {} : parsed["volter"];
|
|
2034
|
+
if (!isRecord(volter)) throw new Error(`${label}: volter must be an object`);
|
|
2035
|
+
const currentTools = volter["tools"] === void 0 ? [] : volter["tools"];
|
|
2036
2036
|
if (!Array.isArray(currentTools) || currentTools.some((tool) => typeof tool !== "string" && !isRecord(tool))) {
|
|
2037
|
-
throw new Error(`${label}:
|
|
2037
|
+
throw new Error(`${label}: volter.tools must be an array of strings or objects`);
|
|
2038
2038
|
}
|
|
2039
2039
|
const tools = currentTools.map(
|
|
2040
2040
|
(tool) => typeof tool === "string" ? tool : { ...tool }
|
|
2041
2041
|
);
|
|
2042
|
-
for (const tool of patch.
|
|
2042
|
+
for (const tool of patch.volterTools) {
|
|
2043
2043
|
const id = toolIdentity(tool);
|
|
2044
2044
|
const existing = tools.find((candidate) => toolIdentity(candidate) === id);
|
|
2045
2045
|
if (existing && JSON.stringify(existing) !== JSON.stringify(tool)) {
|
|
2046
2046
|
throw new Error(
|
|
2047
|
-
`Capability ${manifest.id} conflicts with existing
|
|
2047
|
+
`Capability ${manifest.id} conflicts with existing volter.tools entry ${id}`
|
|
2048
2048
|
);
|
|
2049
2049
|
}
|
|
2050
2050
|
if (!existing) tools.push(tool);
|
|
2051
2051
|
}
|
|
2052
2052
|
tools.sort((a, b) => toolIdentity(a).localeCompare(toolIdentity(b)));
|
|
2053
|
-
|
|
2054
|
-
parsed["
|
|
2053
|
+
volter["tools"] = tools;
|
|
2054
|
+
parsed["volter"] = volter;
|
|
2055
2055
|
}
|
|
2056
2056
|
}
|
|
2057
2057
|
return Buffer.from(`${JSON.stringify(parsed, null, 2)}
|
|
@@ -2107,7 +2107,7 @@ function mergedAssetManifest(projectDir, manifests) {
|
|
|
2107
2107
|
);
|
|
2108
2108
|
return { bytes, changed: !original.equals(bytes), declared: merged };
|
|
2109
2109
|
}
|
|
2110
|
-
var ADAPTER_MODULE_FILE = "
|
|
2110
|
+
var ADAPTER_MODULE_FILE = "volter.adapter.ts";
|
|
2111
2111
|
function rootSurfaces(projectDir) {
|
|
2112
2112
|
const surfaces = /* @__PURE__ */ new Map();
|
|
2113
2113
|
let manifest;
|
|
@@ -2647,7 +2647,7 @@ Fix: create the project without --example, which scaffolds from the starter temp
|
|
|
2647
2647
|
);
|
|
2648
2648
|
}
|
|
2649
2649
|
throw new Error(
|
|
2650
|
-
`Unknown example id "${exampleId}": no
|
|
2650
|
+
`Unknown example id "${exampleId}": no volter.project.json found at ${examplesSrcDir}`
|
|
2651
2651
|
);
|
|
2652
2652
|
}
|
|
2653
2653
|
mkdirSync3(targetDir, { recursive: true });
|
|
@@ -2695,7 +2695,7 @@ function assertDevelopmentLog(targetDir) {
|
|
|
2695
2695
|
const path = join4(targetDir, PROJECT_DEVELOPMENT_LOG_RELATIVE_PATH);
|
|
2696
2696
|
if (!existsSync3(path)) {
|
|
2697
2697
|
throw new Error(
|
|
2698
|
-
`Scaffolded project is missing ${PROJECT_DEVELOPMENT_LOG_RELATIVE_PATH}; restore it from the
|
|
2698
|
+
`Scaffolded project is missing ${PROJECT_DEVELOPMENT_LOG_RELATIVE_PATH}; restore it from the VOLTER starter template`
|
|
2699
2699
|
);
|
|
2700
2700
|
}
|
|
2701
2701
|
}
|
|
@@ -2720,7 +2720,7 @@ function trackedExampleFiles(exampleDir) {
|
|
|
2720
2720
|
});
|
|
2721
2721
|
if (result.status !== 0 || !result.stdout) return null;
|
|
2722
2722
|
const paths = result.stdout.toString("utf8").split("\0").filter(Boolean);
|
|
2723
|
-
return paths.includes("
|
|
2723
|
+
return paths.includes("volter.project.json") ? paths : null;
|
|
2724
2724
|
}
|
|
2725
2725
|
function copyTrackedExampleFiles(exampleDir, targetDir) {
|
|
2726
2726
|
const paths = trackedExampleFiles(exampleDir);
|
|
@@ -2752,11 +2752,11 @@ function writeExampleReadme(targetDir, projectName, exampleId) {
|
|
|
2752
2752
|
path,
|
|
2753
2753
|
`# ${projectName}
|
|
2754
2754
|
|
|
2755
|
-
An editable standalone
|
|
2755
|
+
An editable standalone VOLTER project scaffolded from the \`${exampleId ?? "example"}\` reference. Its gameplay source and assets were copied unchanged; this folder is now your project.
|
|
2756
2756
|
|
|
2757
2757
|
\`\`\`bash
|
|
2758
2758
|
npm run dev # open/reuse the visual editor
|
|
2759
|
-
npm run
|
|
2759
|
+
npm run volter -- play # verify Play mode
|
|
2760
2760
|
npm run typecheck
|
|
2761
2761
|
npm run validate-manifest
|
|
2762
2762
|
\`\`\`
|
|
@@ -2770,12 +2770,12 @@ function shouldCopyExamplePath(exampleDir, sourcePath) {
|
|
|
2770
2770
|
const relativePath = relative3(exampleDir, sourcePath).replaceAll("\\", "/");
|
|
2771
2771
|
const topLevel = relativePath.split("/")[0] ?? "";
|
|
2772
2772
|
const segments = relativePath.split("/");
|
|
2773
|
-
return !["node_modules", "dist", "logs", ".
|
|
2773
|
+
return !["node_modules", "dist", "logs", ".volter", ".git", "package-lock.json"].includes(topLevel) && !segments.some((segment) => segment === ".env" || segment.startsWith(".env."));
|
|
2774
2774
|
}
|
|
2775
2775
|
function shouldCopyStarterPath(templateDir, sourcePath) {
|
|
2776
2776
|
const relativePath = relative3(templateDir, sourcePath).replaceAll("\\", "/");
|
|
2777
2777
|
const topLevel = relativePath.split("/")[0] ?? "";
|
|
2778
|
-
return !["node_modules", "dist", "logs", ".
|
|
2778
|
+
return !["node_modules", "dist", "logs", ".volter"].includes(topLevel);
|
|
2779
2779
|
}
|
|
2780
2780
|
function rewritePackageJson(targetDir, slug, engineDir, monoRoot) {
|
|
2781
2781
|
const pkgPath = join4(targetDir, "package.json");
|
|
@@ -2805,8 +2805,8 @@ function rewritePackageJson(targetDir, slug, engineDir, monoRoot) {
|
|
|
2805
2805
|
}
|
|
2806
2806
|
pkg.scripts ??= {};
|
|
2807
2807
|
for (const [name, script] of Object.entries(pkg.scripts)) {
|
|
2808
|
-
if (name !== "
|
|
2809
|
-
pkg.scripts[name] = `npm run
|
|
2808
|
+
if (name !== "volter" && script.startsWith("volter ")) {
|
|
2809
|
+
pkg.scripts[name] = `npm run volter -- ${script.slice("volter ".length)}`;
|
|
2810
2810
|
}
|
|
2811
2811
|
}
|
|
2812
2812
|
pkg.devDependencies = pkg.devDependencies ?? {};
|
|
@@ -2842,7 +2842,7 @@ function engineDependencySpec(monoRoot, packageName, checkoutRelPath = "") {
|
|
|
2842
2842
|
return `^${version}`;
|
|
2843
2843
|
}
|
|
2844
2844
|
function rewriteGameManifest(targetDir, name, slug, additions, monoRoot) {
|
|
2845
|
-
const manifestPath = join4(targetDir, "
|
|
2845
|
+
const manifestPath = join4(targetDir, "volter.project.json");
|
|
2846
2846
|
const engineVersion = readInstalledVersion(monoRoot, "@volter/editor-project");
|
|
2847
2847
|
let manifest;
|
|
2848
2848
|
if (existsSync3(manifestPath)) {
|
|
@@ -2861,12 +2861,14 @@ function rewriteGameManifest(targetDir, name, slug, additions, monoRoot) {
|
|
|
2861
2861
|
}
|
|
2862
2862
|
manifest["name"] = name;
|
|
2863
2863
|
manifest["manifestVersion"] = 2;
|
|
2864
|
-
manifest["$schema"] = "./node_modules/@volter/editor-project/schemas/
|
|
2864
|
+
manifest["$schema"] = "./node_modules/@volter/editor-project/schemas/volter-project.schema.json";
|
|
2865
2865
|
manifest["appId"] = `com.example.${slug.replace(/[^a-zA-Z0-9]/g, "")}`;
|
|
2866
2866
|
if (additions) {
|
|
2867
2867
|
const roots = [];
|
|
2868
2868
|
if (additions.has("three"))
|
|
2869
2869
|
roots.push({ id: "world", adapter: "three", entry: "src/world.tsx" });
|
|
2870
|
+
if (additions.has("canvas"))
|
|
2871
|
+
roots.push({ id: "scene2d", adapter: "canvas", entry: "src/scene2d.tsx" });
|
|
2870
2872
|
if (additions.has("ui"))
|
|
2871
2873
|
roots.push({ id: "ui", adapter: "dom", entry: "src/ui/game.tsx", zOrder: 0 });
|
|
2872
2874
|
manifest["roots"] = roots;
|
|
@@ -2905,14 +2907,14 @@ function repinEngineAfterInstall(targetDir) {
|
|
|
2905
2907
|
try {
|
|
2906
2908
|
const baseline = JSON.parse(readFileSync3(baselinePath, "utf-8"));
|
|
2907
2909
|
baseline.engineVersion = installed;
|
|
2908
|
-
baseline.files["
|
|
2910
|
+
baseline.files["volter.project.json"] = hashFile(manifestPath);
|
|
2909
2911
|
writeFileSync3(baselinePath, `${JSON.stringify(baseline, null, 2)}
|
|
2910
2912
|
`, "utf-8");
|
|
2911
2913
|
} catch {
|
|
2912
2914
|
}
|
|
2913
2915
|
return { from, to: installed };
|
|
2914
2916
|
}
|
|
2915
|
-
function
|
|
2917
|
+
function checkoutVolterPackageDirs(monoRoot) {
|
|
2916
2918
|
const found = /* @__PURE__ */ new Map();
|
|
2917
2919
|
const packagesDir = join4(monoRoot, "packages");
|
|
2918
2920
|
let entries;
|
|
@@ -2961,7 +2963,7 @@ function pointUnpublishedPackagesAtCheckout(projectDir, monoRoot) {
|
|
|
2961
2963
|
return rewritten;
|
|
2962
2964
|
}
|
|
2963
2965
|
function checkoutPackageSpec(name, monoRoot) {
|
|
2964
|
-
const dir =
|
|
2966
|
+
const dir = checkoutVolterPackageDirs(monoRoot).get(name);
|
|
2965
2967
|
return dir === void 0 ? null : `file:${dir}`;
|
|
2966
2968
|
}
|
|
2967
2969
|
function writeEditorPackages(targetDir, wanted) {
|
|
@@ -2994,6 +2996,16 @@ function writeNetworkedInput(targetDir) {
|
|
|
2994
2996
|
}
|
|
2995
2997
|
writeFileSync3(inputPath, input, "utf-8");
|
|
2996
2998
|
}
|
|
2999
|
+
function applyCanvasAddition(targetDir, productDir) {
|
|
3000
|
+
const additionDir = join4(productDir, "additions", "canvas");
|
|
3001
|
+
cpSync(join4(additionDir, "src"), join4(targetDir, "src"), { recursive: true });
|
|
3002
|
+
const own = JSON.parse(readFileSync3(join4(additionDir, "package.json"), "utf-8"));
|
|
3003
|
+
const pkgPath = join4(targetDir, "package.json");
|
|
3004
|
+
const pkg = JSON.parse(readFileSync3(pkgPath, "utf-8"));
|
|
3005
|
+
pkg.dependencies = { ...pkg.dependencies };
|
|
3006
|
+
for (const [name, spec] of Object.entries(own.dependencies ?? {})) pkg.dependencies[name] ??= spec;
|
|
3007
|
+
writeJson(pkgPath, pkg);
|
|
3008
|
+
}
|
|
2997
3009
|
function rewriteTemplateVariantFiles(targetDir, composition, additions, starterDir) {
|
|
2998
3010
|
if (!additions.has("three") || !additions.has("studio")) {
|
|
2999
3011
|
for (const relative4 of STUDIO_OWNED_PATHS) {
|
|
@@ -3023,9 +3035,9 @@ function rewriteTemplateVariantFiles(targetDir, composition, additions, starterD
|
|
|
3023
3035
|
for (const relative4 of THREE_OWNED_PATHS) {
|
|
3024
3036
|
rmSync2(join4(targetDir, relative4), { recursive: true, force: true });
|
|
3025
3037
|
}
|
|
3026
|
-
writeFileSync3(join4(targetDir, "
|
|
3038
|
+
writeFileSync3(join4(targetDir, "volter.adapter.ts"), adapterSourceFor(additions), "utf-8");
|
|
3027
3039
|
} else {
|
|
3028
|
-
const adapterPath = join4(targetDir, "
|
|
3040
|
+
const adapterPath = join4(targetDir, "volter.adapter.ts");
|
|
3029
3041
|
const source = joinAdditionFinders(readFileSync3(adapterPath, "utf-8"), additions);
|
|
3030
3042
|
writeFileSync3(adapterPath, source, "utf-8");
|
|
3031
3043
|
}
|
|
@@ -3082,7 +3094,7 @@ function rewriteTsconfig(targetDir, engineRelPath, editorRelPath) {
|
|
|
3082
3094
|
])
|
|
3083
3095
|
),
|
|
3084
3096
|
// `@volter/editor-blender`'s two VALUE exports — the look and the layout a models
|
|
3085
|
-
// project's `
|
|
3097
|
+
// project's `volter.adapter.ts` imports. Spelled entry by entry rather than
|
|
3086
3098
|
// as a wildcard because the package's `exports` names them individually;
|
|
3087
3099
|
// both entries are inert for a project that never declares the package.
|
|
3088
3100
|
"@volter/editor-blender/looks": ["node_modules/@volter/editor-blender/src/looks.ts"],
|
|
@@ -3180,7 +3192,8 @@ function scaffoldProject(opts) {
|
|
|
3180
3192
|
additions,
|
|
3181
3193
|
resolveScaffoldStarterDir(productDir)
|
|
3182
3194
|
);
|
|
3183
|
-
|
|
3195
|
+
if (additions.has("canvas")) applyCanvasAddition(targetDir, productDir);
|
|
3196
|
+
const adapterPath = join4(targetDir, "volter.adapter.ts");
|
|
3184
3197
|
writeFileSync3(
|
|
3185
3198
|
adapterPath,
|
|
3186
3199
|
withEditorDeclaration(readFileSync3(adapterPath, "utf-8"), composition.editor),
|
|
@@ -3322,7 +3335,7 @@ function initGitRepo(targetDir, projectName) {
|
|
|
3322
3335
|
notice: "Skipped git init \u2014 the project is already inside a git work tree."
|
|
3323
3336
|
};
|
|
3324
3337
|
}
|
|
3325
|
-
const authorFallback = hasCommitterIdentity(targetDir) ? [] : ["-c", "user.name=
|
|
3338
|
+
const authorFallback = hasCommitterIdentity(targetDir) ? [] : ["-c", "user.name=volter", "-c", "user.email=scaffold@volter"];
|
|
3326
3339
|
const steps = [
|
|
3327
3340
|
{ label: "git init", args: ["init", "--quiet"] },
|
|
3328
3341
|
{ label: "git add", args: ["add", "-A"] },
|
|
@@ -3361,13 +3374,15 @@ var presets = {
|
|
|
3361
3374
|
// silent console the agent contract requires; they are an author's TODO
|
|
3362
3375
|
// from the moment the author ASKS for those panels (`--with studio`, or
|
|
3363
3376
|
// `--template full`).
|
|
3364
|
-
game
|
|
3377
|
+
// A game's UI is React DOM: its HUD is the `ui` root over the world. A `canvas` (Pixi) root
|
|
3378
|
+
// is 2D game rendering, never the UI layer.
|
|
3379
|
+
game: { additions: ["three", "ui", "server", "blender"] },
|
|
3365
3380
|
/** A 3D world and its models: the smallest thing that plays. */
|
|
3366
3381
|
prototype: { additions: ["three", "blender"] },
|
|
3367
3382
|
// EVERY addition in one project — the composition acceptance made
|
|
3368
3383
|
// permanent. Check it against `SCAFFOLD_ADDITIONS` (./scaffold/additions.ts)
|
|
3369
3384
|
// when the scaffolder grows one.
|
|
3370
|
-
full: { additions: ["three", "ui", "server", "blender", "studio"] },
|
|
3385
|
+
full: { additions: ["three", "canvas", "ui", "server", "blender", "studio"] },
|
|
3371
3386
|
/** The design skew: a React root and no 3D world. */
|
|
3372
3387
|
website: { additions: ["ui"] },
|
|
3373
3388
|
/** Nothing but the project — the shape an author adds to. */
|
|
@@ -3378,15 +3393,16 @@ var presets = {
|
|
|
3378
3393
|
examples: true,
|
|
3379
3394
|
compose(additions) {
|
|
3380
3395
|
const three = additions.has("three");
|
|
3396
|
+
const world = three || additions.has("canvas");
|
|
3381
3397
|
const studio = additions.has("studio");
|
|
3382
3398
|
const layouts = "@volter/editor-sdk/layouts";
|
|
3383
|
-
const design = additions.has("ui") && !
|
|
3399
|
+
const design = additions.has("ui") && !world;
|
|
3384
3400
|
return {
|
|
3385
|
-
// THE PRODUCT THIS PROJECT OPENS IN, and the
|
|
3386
|
-
// `@volter/editor-game` is the
|
|
3387
|
-
//
|
|
3388
|
-
// a running game to run.
|
|
3389
|
-
editorPackages: [PRODUCT2, ...
|
|
3401
|
+
// THE PRODUCT THIS PROJECT OPENS IN, and the game lane beside it:
|
|
3402
|
+
// `@volter/editor-game` is the lane of a game world (3D, or a 2D scene), and
|
|
3403
|
+
// a project with no world has nothing for Play, the Game workspace or the
|
|
3404
|
+
// instruments over a running game to run.
|
|
3405
|
+
editorPackages: [PRODUCT2, ...world ? ["@volter/editor-game"] : []],
|
|
3390
3406
|
editor: {
|
|
3391
3407
|
layout: { name: design ? "DesignLayout" : studio ? "StudioLayout" : "GameLayout", from: layouts },
|
|
3392
3408
|
inspector: studio ? "column" : "card"
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volter/game-editor",
|
|
3
3
|
"author": "Volter AI, Inc.",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.69",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"workbench",
|
|
29
29
|
"template",
|
|
30
30
|
"template-dotfiles",
|
|
31
|
+
"additions",
|
|
31
32
|
"catalog",
|
|
32
33
|
"starter",
|
|
33
34
|
"BUNDLED_NOTICES"
|
|
@@ -37,34 +38,34 @@
|
|
|
37
38
|
"build:node": "node scripts/build-node.mjs",
|
|
38
39
|
"typecheck": "tsc -p tsconfig.node.json"
|
|
39
40
|
},
|
|
40
|
-
"
|
|
41
|
+
"volter": {
|
|
41
42
|
"product": {
|
|
42
43
|
"entry": "./src/index.ts",
|
|
43
44
|
"displayName": "Volter Game Editor",
|
|
44
45
|
"colorTheme": "dark",
|
|
45
46
|
"workbench": {
|
|
46
|
-
"release": "game-editor-
|
|
47
|
-
"tarballSha256": "
|
|
47
|
+
"release": "game-editor-f16dc165c0df-7829035e8e51-darwin-arm64",
|
|
48
|
+
"tarballSha256": "5737029b2bfe64a22466ccf000e80056cf9cebfdc3650022a27fa990e037a421"
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
51
|
},
|
|
51
52
|
"dependencies": {
|
|
52
|
-
"@volter/editor-core": "0.5.
|
|
53
|
-
"@volter/editor-game": "0.5.
|
|
54
|
-
"@volter/editor-react": "0.5.
|
|
55
|
-
"@volter/editor-threejs": "0.5.
|
|
56
|
-
"@volter/editor-xstate": "0.5.
|
|
57
|
-
"@volter/editor-blender": "0.1.
|
|
58
|
-
"@volter/dawproject": "0.5.
|
|
59
|
-
"@volter/editor-dawproject": "0.5.
|
|
60
|
-
"@volter/blender-engine": "0.1.
|
|
61
|
-
"@volter/editor-project": "0.5.
|
|
62
|
-
"@volter/editor-sdk": "0.5.
|
|
63
|
-
"@volter/editor-live": "0.5.
|
|
64
|
-
"@volter/game-live": "0.5.
|
|
53
|
+
"@volter/editor-core": "0.5.69",
|
|
54
|
+
"@volter/editor-game": "0.5.69",
|
|
55
|
+
"@volter/editor-react": "0.5.69",
|
|
56
|
+
"@volter/editor-threejs": "0.5.69",
|
|
57
|
+
"@volter/editor-xstate": "0.5.69",
|
|
58
|
+
"@volter/editor-blender": "0.1.12",
|
|
59
|
+
"@volter/dawproject": "0.5.69",
|
|
60
|
+
"@volter/editor-dawproject": "0.5.69",
|
|
61
|
+
"@volter/blender-engine": "0.1.10",
|
|
62
|
+
"@volter/editor-project": "0.5.69",
|
|
63
|
+
"@volter/editor-sdk": "0.5.69",
|
|
64
|
+
"@volter/editor-live": "0.5.69",
|
|
65
|
+
"@volter/game-live": "0.5.69",
|
|
65
66
|
"@modelcontextprotocol/sdk": "1.30.0",
|
|
66
|
-
"@volter/game-runtime": "0.5.
|
|
67
|
-
"@volter/threejs-runtime": "0.5.
|
|
67
|
+
"@volter/game-runtime": "0.5.69",
|
|
68
|
+
"@volter/threejs-runtime": "0.5.69",
|
|
68
69
|
"undici": "7.29.1",
|
|
69
70
|
"typescript": "5.9.3",
|
|
70
71
|
"@colyseus/schema": "^4.0.14",
|
package/src/contributions.d.ts
CHANGED
package/src/index.ts
CHANGED
|
@@ -5,31 +5,31 @@
|
|
|
5
5
|
* building a game needs. Three decisions, each a product's to make and nobody
|
|
6
6
|
* else's:
|
|
7
7
|
*
|
|
8
|
-
* - WHICH PACKAGES, in mount order. `
|
|
9
|
-
* package's own `package.json#
|
|
8
|
+
* - WHICH PACKAGES, in mount order. `volter:contributions/<package>` is that
|
|
9
|
+
* package's own `package.json#volter.contributions`, read at build time
|
|
10
10
|
* (`@volter/editor-core/build/product-contributions`) — the product names
|
|
11
11
|
* the package, never its modules, so a package that grows a contribution
|
|
12
12
|
* grows this product with no edit here.
|
|
13
13
|
* - THE LOOK. `classic` — the editor's own Graphite, which is the reference
|
|
14
14
|
* frame every host-default shape was measured against. A DEFAULT:
|
|
15
|
-
* `~/.
|
|
15
|
+
* `~/.volter/settings.json`, the project's own, and its adapter's declaration
|
|
16
16
|
* each outrank it.
|
|
17
17
|
* - THE WORKSPACE. `game` — `@volter/editor-game`'s own workspace
|
|
18
18
|
* contribution, which applies to a project with at least one root that
|
|
19
19
|
* plays.
|
|
20
20
|
*
|
|
21
|
-
* `
|
|
21
|
+
* `mountVolter` is what the workbench contribution reads off this module once
|
|
22
22
|
* `/__editor/served-modules` hands it this file's URL.
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
|
-
import blender from '
|
|
26
|
-
import game from '
|
|
27
|
-
import react from '
|
|
28
|
-
import threejs from '
|
|
29
|
-
import xstate from '
|
|
25
|
+
import blender from 'volter:contributions/@volter/editor-blender';
|
|
26
|
+
import game from 'volter:contributions/@volter/editor-game';
|
|
27
|
+
import react from 'volter:contributions/@volter/editor-react';
|
|
28
|
+
import threejs from 'volter:contributions/@volter/editor-threejs';
|
|
29
|
+
import xstate from 'volter:contributions/@volter/editor-xstate';
|
|
30
30
|
import { product } from '@volter/editor-core/frame/product';
|
|
31
31
|
|
|
32
|
-
export const {
|
|
32
|
+
export const { mountVolter } = product({
|
|
33
33
|
id: 'game-editor',
|
|
34
34
|
packages: {
|
|
35
35
|
'@volter/editor-game': game,
|
package/starter/cube.py
CHANGED
|
@@ -36,7 +36,7 @@ either way.
|
|
|
36
36
|
|
|
37
37
|
Run it through the session's Blender, from this project:
|
|
38
38
|
|
|
39
|
-
npm run --silent
|
|
39
|
+
npm run --silent volter -- blender-mcp # the transport an agent drives
|
|
40
40
|
# or, in a live editor session:
|
|
41
41
|
# editor.blender('blender-execute', { code: open('src/models/cube.py').read() })
|
|
42
42
|
|