@volter/game-editor 0.5.65
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 +11228 -0
- package/LICENSE +686 -0
- package/LICENSE-BLENDER +1409 -0
- package/LICENSE-MCP +21 -0
- package/NOTICE +21 -0
- package/catalog/entries/audio.json +14 -0
- package/catalog/entries/bake.json +36 -0
- package/catalog/entries/blender.json +17 -0
- package/catalog/entries/react-root.json +24 -0
- package/catalog/entries/reflections.json +29 -0
- package/catalog/entries/static-batch.json +25 -0
- package/catalog/project-source/LICENSE +37 -0
- package/catalog/project-source/src/contributions/bake.kind.ts +40 -0
- package/catalog/project-source/src/contributions/builder-document.tsx +65 -0
- package/catalog/project-source/src/contributions/builder-state.ts +27 -0
- package/catalog/project-source/src/contributions/builder-ui.tsx +61 -0
- package/catalog/project-source/src/contributions/module-source.ts +502 -0
- package/catalog/project-source/src/contributions/pages.finder.ts +61 -0
- package/catalog/project-source/src/lib/audio/sfx.ts +255 -0
- package/catalog/project-source/src/lib/bake/asset-seed.ts +128 -0
- package/catalog/project-source/src/lib/bake/bake-schema.ts +65 -0
- package/catalog/project-source/src/lib/bake/clip-layering.ts +203 -0
- package/catalog/project-source/src/lib/bake/gltf-bake.ts +657 -0
- package/catalog/project-source/src/lib/bake/mesh-slice.ts +157 -0
- package/catalog/project-source/src/lib/bake/node-image.ts +463 -0
- package/catalog/project-source/src/lib/bake/object3d-bake.ts +121 -0
- package/catalog/project-source/src/lib/bake/object3d-lifecycle.ts +15 -0
- package/catalog/project-source/src/lib/bake/object3d-source.ts +8 -0
- package/catalog/project-source/src/lib/bake/params.ts +75 -0
- package/catalog/project-source/src/lib/bake/rest-relative-animation.ts +217 -0
- package/catalog/project-source/src/lib/bake/use-model.ts +95 -0
- package/catalog/project-source/src/lib/react-root/index.ts +20 -0
- package/catalog/project-source/src/lib/react-root/react-root-adapter.tsx +57 -0
- package/catalog/project-source/src/lib/reflections/ReflectionProbe.tsx +201 -0
- package/catalog/project-source/src/lib/reflections/index.ts +19 -0
- package/catalog/project-source/src/lib/reflections/probe-controller.ts +75 -0
- package/catalog/project-source/src/lib/reflections/reflection-probe-registry.ts +402 -0
- package/catalog/project-source/src/lib/reflections/volume-reflection-material.ts +416 -0
- package/catalog/project-source/src/lib/static-batch/Frozen.tsx +91 -0
- package/catalog/project-source/src/lib/static-batch/freeze.ts +579 -0
- package/catalog/project-source/src/lib/static-batch/index.ts +44 -0
- package/catalog/project-source/src/lib/static-batch/mutation-watch.ts +149 -0
- package/catalog/project-source/src/lib/static-batch/shadow-cache.ts +171 -0
- package/catalog/project-source/src/tools/bake-module.tool.ts +139 -0
- package/catalog/project-source/src/tools/bake-preview.tool.ts +475 -0
- package/dist/.vite/manifest.json +8304 -0
- package/dist/assets/AssetBudgetPanel-J9--TZPU.js +23 -0
- package/dist/assets/AudioViewer-CR7333fe.js +1 -0
- package/dist/assets/BVHLoader-6bQIXhMX.js +1 -0
- package/dist/assets/BufferGeometryUtils-Nz37EVXf.js +1 -0
- package/dist/assets/CCDIKSolver-CD7vLpsK.js +1 -0
- package/dist/assets/CSS3DRenderer-CL7ABLVK.js +1 -0
- package/dist/assets/CanvasSceneViewport-Bpi6gVTC.js +1 -0
- package/dist/assets/ColladaLoader-aVOPIsCh.js +3 -0
- package/dist/assets/ColorInput-DQBNrW-K.js +1 -0
- package/dist/assets/ConvexGeometry-CAzXlPVG.js +1 -0
- package/dist/assets/ConvexHull-BINCESFp.js +1 -0
- package/dist/assets/CopyShader-BzTUYzf6.js +24 -0
- package/dist/assets/DecalGeometry-160KRdfg.js +1 -0
- package/dist/assets/EXRLoader-Cdans_oJ.js +1 -0
- package/dist/assets/EffectComposer-DQxfsXBZ.js +1 -0
- package/dist/assets/EntityModelDocument-Ccvw66N9.js +1 -0
- package/dist/assets/EnvironmentAssetDocument-Dg-Qq6O6.js +1 -0
- package/dist/assets/FBXLoader-B4MoUtAn.js +1 -0
- package/dist/assets/Fbo-Dz-Soul3.js +1 -0
- package/dist/assets/FontLoader-CvGoVI5a.js +2 -0
- package/dist/assets/GLTFExporter-HgrCle4L.js +1 -0
- package/dist/assets/GameplaySessionTimeline-B52W3FVZ.js +1 -0
- package/dist/assets/Gltf-UHVWKz65.js +2 -0
- package/dist/assets/HDRLoader-THU88oVD.js +5 -0
- package/dist/assets/ImageViewer-Tn7s_MnW.js +1 -0
- package/dist/assets/InspectorCanvasPreview-CEr_Kxna.js +1 -0
- package/dist/assets/InspectorObjectPreview-CVejvLRg.js +1 -0
- package/dist/assets/JsonAssetDocument-C7VGcLhu.js +3 -0
- package/dist/assets/LineSegments2-CsOpKSiM.js +370 -0
- package/dist/assets/MTLLoader-_Xzd4_0p.js +2 -0
- package/dist/assets/MarchingCubes-Bsp4wrzd.js +1 -0
- package/dist/assets/MeshBVH-BiDHDcu-.js +1 -0
- package/dist/assets/ModelAssetDocument-F5GACirk.js +1 -0
- package/dist/assets/NonThreeAuthoringBootstrap-C3woOMxX.js +1 -0
- package/dist/assets/OBJLoader-BhIC6Hwo.js +5 -0
- package/dist/assets/Object3DDocumentViewport-DB7T0NTl.js +2 -0
- package/dist/assets/Object3DPreview-DL8oi7Xs.js +2 -0
- package/dist/assets/OnlineAssetDetail-C6z9RvYK.js +2 -0
- package/dist/assets/OrbitControls-CM3bPray.js +1 -0
- package/dist/assets/OrbitControls-DLpayAaK.js +1 -0
- package/dist/assets/OrthographicCamera-bQozawrh.js +1 -0
- package/dist/assets/PLYLoader-DYQqs5Ik.js +2 -0
- package/dist/assets/PerspectiveCamera-CQ2lh01o.js +1 -0
- package/dist/assets/PlayBar-BR-Vg3Jb.js +2 -0
- package/dist/assets/RGBELoader-BgBcQv8j.js +1 -0
- package/dist/assets/RectAreaLightUniformsLib-CMMoWfll.js +1 -0
- package/dist/assets/RenderPass-DPrn-Uky.js +1 -0
- package/dist/assets/ResolutionPicker-C67vs1F3.js +1 -0
- package/dist/assets/RootSelectionOverlay-BZPlxmXU.js +1 -0
- package/dist/assets/RoundedBox-BDGBg6QZ.js +1 -0
- package/dist/assets/RoundedBoxGeometry-CyUuYPfW.js +1 -0
- package/dist/assets/STLLoader-Dyv3lsxY.js +1 -0
- package/dist/assets/SelectionBox-D_75KrNW.js +1 -0
- package/dist/assets/ShaderPass-QYRpPuFJ.js +1 -0
- package/dist/assets/ShadowEditor-DkImwu1Y.js +1 -0
- package/dist/assets/SimplifyModifier-C8ayvRzd.js +1 -0
- package/dist/assets/SkeletonUtils-Cps8GOC6.js +1 -0
- package/dist/assets/Sky-CQKCgYDs.js +154 -0
- package/dist/assets/SourceAssetViewer-2SWQoUut.js +12 -0
- package/dist/assets/StageHost-BN-IoTef.js +2 -0
- package/dist/assets/StoryPreviewMount-DjyxRCXu.js +1 -0
- package/dist/assets/TDSLoader-D_T8XJ81.js +1 -0
- package/dist/assets/TextGeometry-DOWAEUV0.js +1 -0
- package/dist/assets/ThreeBoardDocument-CVncZyIq.js +2 -0
- package/dist/assets/ThreeIsolationSceneContent-C8C8whSF.js +1 -0
- package/dist/assets/ToolObject3DPreview-BRoDWe4Q.js +1 -0
- package/dist/assets/TrackballControls-DfznuQTh.js +1 -0
- package/dist/assets/TransientHint-BB1fwrvK.js +1 -0
- package/dist/assets/UnrealBloomPass-CR-cS_K5.js +83 -0
- package/dist/assets/VideoViewer-C6kocgIU.js +1 -0
- package/dist/assets/_commonjsHelpers-D6-XlEtG.js +1 -0
- package/dist/assets/active-ingest-CT6jSGhr.js +3 -0
- package/dist/assets/adapter-surface-Y37Nzcyw.js +1 -0
- package/dist/assets/after-paint-CB4bz1-e.js +1 -0
- package/dist/assets/agx-base-srgb-BjWZJgrZ.lut +0 -0
- package/dist/assets/agx-look-medium-high-contrast-D5F_ob1L.lut +0 -0
- package/dist/assets/agx-look-punchy-dxsnycNs.lut +0 -0
- package/dist/assets/animation-clock-CnjZqfJp.js +1 -0
- package/dist/assets/asset-budget-asset.menu-Di3KiQCd.js +1 -0
- package/dist/assets/asset-budget.action-DCzzcuTh.js +1 -0
- package/dist/assets/asset-budget.document-BWU8wnVW.js +1 -0
- package/dist/assets/asset-budget.menu-BGZpT_31.js +1 -0
- package/dist/assets/asset-editor-persistence-BBaONOJt.js +1 -0
- package/dist/assets/asset-loaders-BOy5Ss8k.js +2 -0
- package/dist/assets/asset-parse-error-BHMwBRU3.js +3 -0
- package/dist/assets/assets-BuSoGjBX.js +1 -0
- package/dist/assets/audio-meter-CyiToeUW.js +1 -0
- package/dist/assets/audio-unlock.service-CfUgUQVy.js +1 -0
- package/dist/assets/audio.utility-C6K6jem8.js +1 -0
- package/dist/assets/authoring-CgcOFhGS.js +1 -0
- package/dist/assets/autoplay.service-BZBGNSvt.js +1 -0
- package/dist/assets/axe-LkjAB6Lv.js +30 -0
- package/dist/assets/babylon-authoring-adapter-CL02gWDn.js +1 -0
- package/dist/assets/binding-Bmxqznjk.js +1 -0
- package/dist/assets/binding-identity-DcTpbvyg.js +1 -0
- package/dist/assets/binding-resolver-Dsh-6Vor.js +2 -0
- package/dist/assets/blender-emscripten-engine-9ZIRYNhe.js +2 -0
- package/dist/assets/blender-node-editor.document-iIDkB9sI.js +1 -0
- package/dist/assets/blender-properties-tab-C5CyPydi.js +3 -0
- package/dist/assets/blender-runtime-host-BpBwGv7r.js +4 -0
- package/dist/assets/blender-runtime-skin-DyQ9B6CR.js +7140 -0
- package/dist/assets/blender-runtime.document-lIYhhPtv.js +8 -0
- package/dist/assets/blender-timeline.document-77fx96N7.js +1 -0
- package/dist/assets/blender-uv-editor.document-fsT7B4gV.js +1 -0
- package/dist/assets/blender-version.status-o6dBm3n6.js +1 -0
- package/dist/assets/blender-wali-engine-wTOcrOMC.js +2 -0
- package/dist/assets/blender.command-BtJeWk-A.js +1 -0
- package/dist/assets/blender.keymap-GAQgeklK.js +1 -0
- package/dist/assets/blender.status-ujwGU6dU.js +1 -0
- package/dist/assets/blender.style-Dcem5f_T.js +1 -0
- package/dist/assets/board-guides-DziKSTss.js +1 -0
- package/dist/assets/body-marks-h_xDxiDE.js +1 -0
- package/dist/assets/bridge.command-o5gDNEwa.js +3 -0
- package/dist/assets/browserAll-DeWblVez.js +1 -0
- package/dist/assets/build-profiles.document-kW8iw8Xj.js +2 -0
- package/dist/assets/build-progress.status-BNRLytg2.js +1 -0
- package/dist/assets/build-session-C_sg3CEn.js +9 -0
- package/dist/assets/build.action-lYjTLb7K.js +1 -0
- package/dist/assets/build.command-DIGgUPU_.js +1 -0
- package/dist/assets/build.header-CKajx5U3.js +1 -0
- package/dist/assets/build.menu-BdU0QXny.js +1 -0
- package/dist/assets/build.service-CbBAyeu3.js +1 -0
- package/dist/assets/bus-mixer-CGfWDP3C.js +1 -0
- package/dist/assets/camera-KEsKvOL7.js +1 -0
- package/dist/assets/camera-runtime.inspector-B7unX4g1.js +1 -0
- package/dist/assets/canvas-entry-runtime-SfBxaR9M.js +2 -0
- package/dist/assets/capability-coverage-Czas4C18.js +7 -0
- package/dist/assets/chrome-trace-YZHMz60-.js +1 -0
- package/dist/assets/client-DNXj_opT.js +25 -0
- package/dist/assets/clip-planes-CnAI6DZn.js +1 -0
- package/dist/assets/collaboration-presence-DLoZ7EA3.js +1 -0
- package/dist/assets/collider-Bw0mXlsW.js +1 -0
- package/dist/assets/collider-dimensions-9xoFADXN.js +1 -0
- package/dist/assets/collision-system-DpNUJRJ3.js +1 -0
- package/dist/assets/command-results-CUQD49AB.js +1 -0
- package/dist/assets/component-board-registry-DrIa2csL.js +1 -0
- package/dist/assets/component-board.service-DCwcUssB.js +2 -0
- package/dist/assets/component-board.service-DidCyM4O.js +2 -0
- package/dist/assets/component-verbs.command-7xzfjGMZ.js +1 -0
- package/dist/assets/component-verbs.service-Bv9jId3q.js +1 -0
- package/dist/assets/config-CEZk921y.js +6 -0
- package/dist/assets/configurations-DTBMdaTL.js +1 -0
- package/dist/assets/connection.status-BifnQdOs.js +1 -0
- package/dist/assets/console-bridge-CHcb-xk5.js +1 -0
- package/dist/assets/constraint-De8f1Uiq.js +1 -0
- package/dist/assets/constraints.inspector-B9U9Yj-u.js +1 -0
- package/dist/assets/countdown-timer-CUm74dom.js +1 -0
- package/dist/assets/coverage.service-VTX5Mcsx.js +3 -0
- package/dist/assets/crash-null-boundary-v3a0uEgw.js +1 -0
- package/dist/assets/create-runtime-CVCc1BDx.js +1 -0
- package/dist/assets/curve-7Q79VgU4.js +1 -0
- package/dist/assets/data-asset-4hjS642k.js +5 -0
- package/dist/assets/data-check-core-CQEjuFyt.js +1 -0
- package/dist/assets/data-ref-CQI28C0D.js +1 -0
- package/dist/assets/debug-bridge-CCohG-d-.js +1 -0
- package/dist/assets/debug-registry-Dgvitx8M.js +1 -0
- package/dist/assets/defaults-DKiBJCPN.js +1 -0
- package/dist/assets/deferred-commands-CEMmvL47.js +1 -0
- package/dist/assets/deferred-ingest-play-DCJi_Pgu.js +2 -0
- package/dist/assets/design-time-layers-wYgOTgni.js +1 -0
- package/dist/assets/design-time-mount-registry-DUpXCg1U.js +1 -0
- package/dist/assets/design-time-mount.service-BzY21e1F.js +2 -0
- package/dist/assets/design-time-react-mount-DM9WLrF2.js +1 -0
- package/dist/assets/dev-build-gDYrq68M.js +1 -0
- package/dist/assets/directional-shadow-fit-BVkOKAv2.js +1 -0
- package/dist/assets/document-preview-three-Kbg2GCLm.js +1 -0
- package/dist/assets/dom-authoring-adapter-CY8C7f4T.js +1 -0
- package/dist/assets/draco3d-BBUTcNkz.js +1 -0
- package/dist/assets/draco_decoder-DsQ12WqX.wasm +0 -0
- package/dist/assets/draco_encoder-2Tcju8Ns.wasm +0 -0
- package/dist/assets/edit-mode-audio.service-Bzetwd5B.js +1 -0
- package/dist/assets/edit-mode-authoring-B47TfLqu.js +1 -0
- package/dist/assets/edit-mode-networking.service-YCX6RRb_.js +1 -0
- package/dist/assets/editor-api-BoJIcyZG.js +1 -0
- package/dist/assets/editor-port-C_FeBdeV.js +1 -0
- package/dist/assets/editor-presentation-activity-C7SNSmTd.js +1 -0
- package/dist/assets/entry-adjudication-Cq8Yeb74.js +1 -0
- package/dist/assets/environment-capture-7himRh2L.js +1 -0
- package/dist/assets/esbuild-BHljloGq.wasm +0 -0
- package/dist/assets/events-156d8d12.esm-ErOhDXXB.js +36 -0
- package/dist/assets/extend-B-eOccUm.js +36 -0
- package/dist/assets/extends-CF3RwP-h.js +1 -0
- package/dist/assets/eyedropper-session-bjPXnfeX.js +1 -0
- package/dist/assets/fflate.module-DPuTF8aG.js +6 -0
- package/dist/assets/filmic-srgb-Ct35FIH6.lut +0 -0
- package/dist/assets/first-party-audio-system-DxnGJOER.js +1 -0
- package/dist/assets/first-party-navigation-system-CL5Bquub.js +1 -0
- package/dist/assets/fork-menu-BoVyw2Wu.js +1 -0
- package/dist/assets/frame-debugger-store-D1Mf_5up.js +1 -0
- package/dist/assets/frame-delta-D2nsw_Ht.js +1 -0
- package/dist/assets/frame-pacing-D5acoOzO.js +1 -0
- package/dist/assets/frame-selector-cache-cCeUbcjG.js +1 -0
- package/dist/assets/game-DHOZVb-7.js +1 -0
- package/dist/assets/game-contract-seams-a5YXejOu.js +1 -0
- package/dist/assets/game-css-scope-transform-Eng4wS8E.js +33 -0
- package/dist/assets/game-document.service-DbRfx2V0.js +1 -0
- package/dist/assets/game-eval.command-D-7Dxbj_.js +2 -0
- package/dist/assets/game-input-seams-CIQdetRw.js +1 -0
- package/dist/assets/game-loop-CZvXlY00.js +1 -0
- package/dist/assets/game-module-access-B2mFxv-i.js +1 -0
- package/dist/assets/game.layout-CBASrvQu.js +1 -0
- package/dist/assets/gameplay-export-BoKXm51x.js +1 -0
- package/dist/assets/gameplay-replay-e5umMlXv.js +1 -0
- package/dist/assets/gameplay-rng-trap-CTNhm-UW.js +3 -0
- package/dist/assets/gameplay.command-DxcVYX6F.js +1 -0
- package/dist/assets/generation-DhwCUHPf.css +1 -0
- package/dist/assets/generation-jobs-BQrXbGp_.js +1 -0
- package/dist/assets/generation.service-CDIgObuw.js +1 -0
- package/dist/assets/generations-DzUogZsM.js +1 -0
- package/dist/assets/generations.status-CgOUBCum.js +1 -0
- package/dist/assets/hierarchy-marks-BLPfSIym.js +1 -0
- package/dist/assets/host-pointer-DbGSCjE9.js +1 -0
- package/dist/assets/hosted-asset-materialization-CiIvWkGU.js +2 -0
- package/dist/assets/ibl-override-material-BlmCxFKq.js +6 -0
- package/dist/assets/index-96FBF1Oj.js +1 -0
- package/dist/assets/index-BAWkB0dv.js +1 -0
- package/dist/assets/index-BDnS2b6S.js +1 -0
- package/dist/assets/index-BHp07vN0.js +2 -0
- package/dist/assets/index-BMxv2MNV.js +1 -0
- package/dist/assets/index-BP6wv2A0.js +5 -0
- package/dist/assets/index-BcCBqgM_.js +952 -0
- package/dist/assets/index-Bge9JUr6.js +1 -0
- package/dist/assets/index-BjTCPEQ7.js +134 -0
- package/dist/assets/index-BncK9THk.js +1 -0
- package/dist/assets/index-CJbYy-CF.js +3 -0
- package/dist/assets/index-CVCb_ImQ.js +1 -0
- package/dist/assets/index-CZd9o7Lu.js +1 -0
- package/dist/assets/index-CanA16PU.js +2 -0
- package/dist/assets/index-CinJrH5C.js +9 -0
- package/dist/assets/index-CtzuWnCS.js +1 -0
- package/dist/assets/index-D2fNXpHa.css +1 -0
- package/dist/assets/index-DUpHH6JR.js +3120 -0
- package/dist/assets/index-DUqP1RMl.js +1 -0
- package/dist/assets/index-D_NuPfjr.js +9 -0
- package/dist/assets/index-Da9JhEvW.js +25 -0
- package/dist/assets/index-DgapqSPi.js +7 -0
- package/dist/assets/index-FUuS4qwW.js +562 -0
- package/dist/assets/index-GIL7oGEO.js +4894 -0
- package/dist/assets/index-IEjydI9d.js +1 -0
- package/dist/assets/index-OrYXPk3Z.js +487 -0
- package/dist/assets/index-V1R-e5Bd.js +1 -0
- package/dist/assets/index-bQE2NA0D.js +1 -0
- package/dist/assets/index-gHZae-lw.js +13 -0
- package/dist/assets/index-mjWQmGhM.js +1 -0
- package/dist/assets/index-nmcBqr7Y.js +1 -0
- package/dist/assets/inference-diagnostics-Dhmtfbq_.js +1 -0
- package/dist/assets/ingest-BbYMC2vQ.js +1 -0
- package/dist/assets/ingest-boot-viewport-D5rI_Kk_.js +1 -0
- package/dist/assets/ingest-siblings-Bop2kqVl.js +1 -0
- package/dist/assets/ingest-source-persistence-C_6Hiyra.js +1 -0
- package/dist/assets/ingest.service-BTDnQfM1.js +1 -0
- package/dist/assets/input-manager-DH_hGW6d.js +1 -0
- package/dist/assets/input-router-BNQvtIqw.js +1 -0
- package/dist/assets/inspect-BZfi3mmo.js +1 -0
- package/dist/assets/inspection-CObLhnrs.js +1 -0
- package/dist/assets/instance-fork-actions-D3sRzS3K.js +1 -0
- package/dist/assets/instances.command-D6UkZNO8.js +1 -0
- package/dist/assets/instruments-CKR02Y8I.js +1 -0
- package/dist/assets/json-history-resource-BbxllWfV.js +1 -0
- package/dist/assets/jsx-runtime-DPjLkJKQ.js +9 -0
- package/dist/assets/light-D-_wsKTq.js +1 -0
- package/dist/assets/light-camera-factory-CWbbe9gI.js +1 -0
- package/dist/assets/lil-gui.module.min-BF55BEwA.js +10 -0
- package/dist/assets/live-behaviors-Bxq49Maz.js +1 -0
- package/dist/assets/live-gesture-lock-DJbrjOqf.js +1 -0
- package/dist/assets/loader-CaF_I7Yt.js +1 -0
- package/dist/assets/logger-Dqis-7W1.js +1 -0
- package/dist/assets/loop-gate-report-N52EWFGD.js +1 -0
- package/dist/assets/matcap-texture-CVfalpWT.js +1 -0
- package/dist/assets/material-CpAdjDxn.js +1 -0
- package/dist/assets/material-factory-Bz6h__6g.js +1 -0
- package/dist/assets/mesh-B3WPtNKO.js +1 -0
- package/dist/assets/mesh-shadow-CZnXrw_l.js +1 -0
- package/dist/assets/mikktspace.module-DO88SLib.js +1 -0
- package/dist/assets/model-asset-sections-CFvvihfx.css +1 -0
- package/dist/assets/model-asset-sections.service-CHhFS3ZX.js +1 -0
- package/dist/assets/model.layout-BJUEQYUI.js +1 -0
- package/dist/assets/models.finder-G2jQgIRu.js +1 -0
- package/dist/assets/module-mode-DVBLT9d-.js +2 -0
- package/dist/assets/mount-canvas-ingest-root-DDuAWf_C.js +2 -0
- package/dist/assets/mount-dom-ingest-root-D_EiBgpn.js +2 -0
- package/dist/assets/mount-game-6t9cKNo4.js +1 -0
- package/dist/assets/mount-ingest-root-glv2SSWf.js +2 -0
- package/dist/assets/mount-manifest-CGVxhmAw.js +1 -0
- package/dist/assets/mount-readiness-Ds0HvvLH.js +4 -0
- package/dist/assets/mount-three-ingest-root-hrUt9VVU.js +1 -0
- package/dist/assets/mounted-authoring-Dmg5xmhP.js +1 -0
- package/dist/assets/mounted-story-viewport-source-DjP6RA9U.js +1 -0
- package/dist/assets/native-debug-module-CWicoSGD.js +1 -0
- package/dist/assets/native-entry-surface-BE8LJNdu.js +1 -0
- package/dist/assets/navigation-CIiCx-SM.js +1 -0
- package/dist/assets/navmesh-workflow-store-Cmnm57TB.js +1 -0
- package/dist/assets/navmesh.menu-CAKiH8PW.js +1 -0
- package/dist/assets/navmesh.service-jgDWlgj1.js +1 -0
- package/dist/assets/network.utility-CEu5nHf7.js +1 -0
- package/dist/assets/object-marks-DwvIEBOK.js +1 -0
- package/dist/assets/object3d-authoring-subject-CH5sI2oP.js +1 -0
- package/dist/assets/output-DK8waum9.js +195 -0
- package/dist/assets/particles-Y626p22p.js +1 -0
- package/dist/assets/particles-factory-DnLOHXT8.js +1 -0
- package/dist/assets/pasteboard-materialize-BqSS4QzV.js +20 -0
- package/dist/assets/pasteboard.action-DU3UHtJG.js +2 -0
- package/dist/assets/performance-profiler-D_Jey87L.js +1 -0
- package/dist/assets/physics-registry-B2Jkp8e6.js +1 -0
- package/dist/assets/physics-registry-CUB9cT9p.js +1 -0
- package/dist/assets/pixi-authoring-adapter-CjibysC3.js +1 -0
- package/dist/assets/pixi-live-write-target-DuWydlWb.js +1 -0
- package/dist/assets/pixi-primitive-DlWbUPN9.js +1 -0
- package/dist/assets/pixi-react-root-factory-DYsznYRQ.js +1 -0
- package/dist/assets/pixi-story-model-DNkfnWUV.js +1 -0
- package/dist/assets/pixi-transform-channels-VjdohT11.js +1 -0
- package/dist/assets/play-mode-BFU2PCkG.js +22 -0
- package/dist/assets/play.command-BpqqLqkq.js +2 -0
- package/dist/assets/playtest-BXIL1JEF.js +1 -0
- package/dist/assets/pose-guard-6Osb2cFu.js +1 -0
- package/dist/assets/presentation-BPP5pXeQ.js +1 -0
- package/dist/assets/product-DFhyARJj.js +1 -0
- package/dist/assets/profiler.action-CaXJDp3t.js +1 -0
- package/dist/assets/profiler.menu-BIMF6Bi4.js +1 -0
- package/dist/assets/profiler.utility-BExw9wBO.js +1 -0
- package/dist/assets/project-authoring-session-Bnt6icLr.js +2 -0
- package/dist/assets/project-provenance-BoP3nrle.js +1 -0
- package/dist/assets/prompt-labels-DSMdM2_B.js +1 -0
- package/dist/assets/properties-bone-constraints.inspector-ByT6p7S-.js +1 -0
- package/dist/assets/properties-bone.inspector-z4qJwKO5.js +1 -0
- package/dist/assets/properties-collection.inspector-D0_3ijWU.js +1 -0
- package/dist/assets/properties-constraints.inspector-CESzjuls.js +1 -0
- package/dist/assets/properties-data.inspector-hG8Wgyzb.js +1 -0
- package/dist/assets/properties-material.inspector-CzY0JCQ6.js +1 -0
- package/dist/assets/properties-modifiers.inspector-3dDhwf7g.js +1 -0
- package/dist/assets/properties-object.inspector-CiarfxkT.js +1 -0
- package/dist/assets/properties-output.inspector-DKJxmKSD.js +1 -0
- package/dist/assets/properties-particles.inspector-CCEdYWGm.js +1 -0
- package/dist/assets/properties-physics.inspector-B2c0KUyA.js +1 -0
- package/dist/assets/properties-render.inspector-Bcm0HLRW.js +1 -0
- package/dist/assets/properties-scene.inspector-PIM_eTb_.js +1 -0
- package/dist/assets/properties-texture.inspector-CgFlnyr8.js +1 -0
- package/dist/assets/properties-view-layer.inspector-DGjF_Aqo.js +1 -0
- package/dist/assets/properties-world.inspector-CrMvaRvB.js +1 -0
- package/dist/assets/r3f-design-session-D-4yyDO9.js +2 -0
- package/dist/assets/r3f-physics-binding-BBo8oma9.js +1 -0
- package/dist/assets/r3f-root-factory-z9llD1OU.js +1 -0
- package/dist/assets/r3f-source-authoring-adapter-w6Bc60K-.js +13 -0
- package/dist/assets/rapier-physics-adapter-CaZqWLu0.js +1 -0
- package/dist/assets/rapier-physics-bridge-CMoeVo3Y.js +1 -0
- package/dist/assets/react-18-By2b4xR9.js +1 -0
- package/dist/assets/react-inspector.service-B_neRnSK.js +1 -0
- package/dist/assets/react-root-CEz5NTck.js +1 -0
- package/dist/assets/react-story-board-BDDwiE2H.js +1 -0
- package/dist/assets/react-three-fiber.esm-CycrbDlA.js +1 -0
- package/dist/assets/react-three-rapier.esm-CEfKpvxT.js +1 -0
- package/dist/assets/react-world-authoring-adapter-DmrwM3py.js +1 -0
- package/dist/assets/realm-services-CobQsq_X.js +1 -0
- package/dist/assets/rebind-controller-Dtq19Vb3.js +1 -0
- package/dist/assets/recast-navigation.wasm-compat-Dsoa_MD-.js +1 -0
- package/dist/assets/reflection-probe-Don-M3Fj.js +1 -0
- package/dist/assets/reflection-probe-capture.inspector-CmFUoJCx.js +1 -0
- package/dist/assets/register-render-vitals-BiZk29b2.js +1 -0
- package/dist/assets/registry-02YZjMNp.js +1 -0
- package/dist/assets/relative-path-guard-GiM7Lsz8.js +1 -0
- package/dist/assets/render-audio-control-vMRlePWb.js +1 -0
- package/dist/assets/render-batch-system-0vq7p0VC.js +1 -0
- package/dist/assets/render-census-BrQX_CXv.js +1 -0
- package/dist/assets/render-control-Df3yTiyr.js +1 -0
- package/dist/assets/render-env-D2IV2x5k.js +1 -0
- package/dist/assets/render-features-CPQ_e568.js +1 -0
- package/dist/assets/render-seed-DF4JHy7P.js +1 -0
- package/dist/assets/render-settings-Bw4W9SYF.js +1 -0
- package/dist/assets/render-vitals-BZ5HtvMi.js +1 -0
- package/dist/assets/renderer-config-BqG4O8i9.js +1 -0
- package/dist/assets/resolve-three-SZE_WWUM.js +702 -0
- package/dist/assets/root-seam-contract-Z0VWX3Bk.js +1 -0
- package/dist/assets/rrweb-Cd2ifIRP.js +142 -0
- package/dist/assets/run-ticks-settled-C4ksViyA.js +1 -0
- package/dist/assets/runtime-inspection-l2iFQSsg.js +1 -0
- package/dist/assets/scene-capture-BQKzU0NT.js +1 -0
- package/dist/assets/scene-capture-CGYF-Viw.js +1 -0
- package/dist/assets/scene-document.service-qkDjUrlP.js +2 -0
- package/dist/assets/scene-framing-Cat0GtyJ.js +1 -0
- package/dist/assets/scene-index-B6BZOHMk.js +1 -0
- package/dist/assets/scene-query-C7_N-TpI.js +1 -0
- package/dist/assets/schema-kl9-2B_J.js +1 -0
- package/dist/assets/sculpt.layout-zJF55yCR.js +1 -0
- package/dist/assets/seeded-random-i3mtgBKZ.js +1 -0
- package/dist/assets/session-CZ5JPg-z.js +4877 -0
- package/dist/assets/setup-audio-S8GQF91f.js +1 -0
- package/dist/assets/setup-particles-GCXlnkj_.js +1 -0
- package/dist/assets/setup-physics-BeZ7-LKD.js +1 -0
- package/dist/assets/setup-renderer-DVXaSGin.js +1587 -0
- package/dist/assets/shading.layout-DULYZV6M.js +1 -0
- package/dist/assets/sim-clock-CLflx7kg.js +1 -0
- package/dist/assets/sky-precompute-worker-ChN7J87v.js +1 -0
- package/dist/assets/soft-particle-depth-DGvfQDi1.js +1 -0
- package/dist/assets/source-object3d-authoring-adapter-B-L6Ha6f.js +1 -0
- package/dist/assets/source-persistence-backend-C-aR-B_Y.js +1 -0
- package/dist/assets/spark-renderer-lifecycle-ynWESJcv.js +1 -0
- package/dist/assets/spark.module-4pXQoz5d.js +12120 -0
- package/dist/assets/stage-invalidation-DBg3C3Ta.js +1 -0
- package/dist/assets/stage-keyboard-n-5kKH-m.js +1 -0
- package/dist/assets/stage-overlay-set-B9zp2sLB.js +1 -0
- package/dist/assets/stage-presence-markers-DiGI6A45.js +1 -0
- package/dist/assets/standard-viewport-dressing-CzjAe_0A.js +7 -0
- package/dist/assets/state-bridge-DLP1jLRW.js +1 -0
- package/dist/assets/state-watch.action-BOvQR2qt.js +1 -0
- package/dist/assets/state-watch.menu-CNLvDeeY.js +1 -0
- package/dist/assets/state-watch.utility-Bg1tTTQU.js +1 -0
- package/dist/assets/static-batch-advisor-B13QEH7d.js +1 -0
- package/dist/assets/stats.module-BL02l9NC.js +1 -0
- package/dist/assets/story-arg-descriptors-Ek86ExX7.js +1 -0
- package/dist/assets/story-capture-_gC8dXV-.js +1 -0
- package/dist/assets/story-documents--TDLaPeL.js +3 -0
- package/dist/assets/story-documents.service-BiS_YbNQ.js +1 -0
- package/dist/assets/story-documents.service-CxOPYJ2j.js +1 -0
- package/dist/assets/story-media-presence-BHzk2IV5.js +1 -0
- package/dist/assets/story-mount-turn-DFRTj5hi.js +1 -0
- package/dist/assets/story-pixi-preview-BUrOJZXS.js +1 -0
- package/dist/assets/story-presentation-j2AVN-mK.js +1 -0
- package/dist/assets/story-three-preview-BHEDZzcl.js +2 -0
- package/dist/assets/structural-ids-Dc-7rEwi.js +1 -0
- package/dist/assets/structural-signature-0w-i_ats.js +1 -0
- package/dist/assets/surface-content-Dg9Kkazf.js +1 -0
- package/dist/assets/surface-state-DaxyruCj.js +3 -0
- package/dist/assets/system-adapters-rIC8FSGP.js +1 -0
- package/dist/assets/system-runner-DkOjxEBt.js +1 -0
- package/dist/assets/system-slot-E2mEdiih.js +1 -0
- package/dist/assets/team-playtest.service-DqOinFVA.js +1 -0
- package/dist/assets/texture.layout-DASpHVht.js +1 -0
- package/dist/assets/three-CDSueJyJ.js +1 -0
- package/dist/assets/three-authoring-adapter-CmSQ3Vui.js +1 -0
- package/dist/assets/three-authoring.service-iuHLwtf1.js +2 -0
- package/dist/assets/three-ingest-runtime-QzDYk6tU.js +1 -0
- package/dist/assets/three-projection-core-BmKMZ-nf.js +1 -0
- package/dist/assets/three-viewport-presentation-QBQpSdMh.js +1 -0
- package/dist/assets/three.module-D396a9Mn.js +3840 -0
- package/dist/assets/three.quarks.esm-B1C61jGo.js +1039 -0
- package/dist/assets/tools-B_NJsk05.js +1 -0
- package/dist/assets/transform-writer-BhBBTx33.js +1 -0
- package/dist/assets/transport.header-B-6HQlU2.js +1 -0
- package/dist/assets/trigger-volume-BNK2XzPL.js +1 -0
- package/dist/assets/tuples-CIQ4Bn1U.js +1 -0
- package/dist/assets/tween.module-DciWpAG6.js +1 -0
- package/dist/assets/ui-board-document-Bwtt--xp.js +2 -0
- package/dist/assets/unexported-game-trap-Dm1JYKHy.js +2 -0
- package/dist/assets/unmanaged-root-detector-B8CpbkSN.js +2 -0
- package/dist/assets/upstream-pin-BdgRH6ID.js +1 -0
- package/dist/assets/use-data-Dzq-MytE.js +1 -0
- package/dist/assets/use-live-actor-state-DErbWQWF.js +1 -0
- package/dist/assets/use-selection-DbR73-xd.js +1 -0
- package/dist/assets/user-data-BB2Of6Ht.js +1 -0
- package/dist/assets/utility-view-state-BHypxA33.js +1 -0
- package/dist/assets/uv-editing.layout-BEKHxmHw.js +1 -0
- package/dist/assets/vgai-shared-fontawesome-CU65D4Ij.js +1 -0
- package/dist/assets/vgai-shared-jsx-dev-runtime-DFDKL7fx.js +1 -0
- package/dist/assets/vgai-shared-jsx-runtime-DIqBpTut.js +1 -0
- package/dist/assets/vgai-shared-react-BT7rMc2H.js +1 -0
- package/dist/assets/vgai-shared-react-dom-DFajMqMT.js +1 -0
- package/dist/assets/vgai-shared-react-dom-client-S0ozfl6_.js +1 -0
- package/dist/assets/vgai-shared-three-Bc5PvpLM.js +1 -0
- package/dist/assets/viewport-pick-context-DkawXbEi.js +1 -0
- package/dist/assets/viewport-root-presentation-CWsE56K6.js +1 -0
- package/dist/assets/viewport-shading-BuA88e_A.js +1 -0
- package/dist/assets/viewport-shading-boundary-B_-_gABg.js +82 -0
- package/dist/assets/viewport-surface-status-B3om4Kcf.js +1 -0
- package/dist/assets/vision_bundle-DX0dWqEa.js +15 -0
- package/dist/assets/voxel-surface-DtcsSWRL.js +1 -0
- package/dist/assets/wav-encode-D31zWF6O.js +1 -0
- package/dist/assets/webgl-frame-capture-FlF9zQmW.js +1 -0
- package/dist/assets/webgl-gpu-timer-D3YX7RaD.js +1 -0
- package/dist/assets/webworkerAll-CM2o_dnz.js +1 -0
- package/dist/assets/worker-UrMcrc5_.js +2 -0
- package/dist/assets/world-documents-147tiFZe.js +1 -0
- package/dist/assets/world-root-stage-binding-vwTrtBz6.js +1 -0
- package/dist/assets/world-state-BWG-IcOd.js +1 -0
- package/dist/assets/writer-B-KovzkA.js +5 -0
- package/dist/assets/xstate-animation-binding-Brd0NST6.js +1 -0
- package/dist/assets/xstate-animation-meta-Q3u9zh_m.js +1 -0
- package/dist/assets/xstate-behavior.action-B8UluFBK.js +1 -0
- package/dist/assets/xstate-behavior.document-CKAsE45I.js +1 -0
- package/dist/assets/xstate-behavior.inspector-vJJyuifc.js +1 -0
- package/dist/assets/xstate-behavior.menu-BXbPICIh.js +1 -0
- package/dist/assets/xstate-inspection-BsZv8LS9.js +1 -0
- package/dist/vgai-shared-react.json +10 -0
- package/dist/vgai-shared-three.json +3 -0
- package/dist-node/cli.js +9320 -0
- package/dist-node/create.js +3239 -0
- package/package.json +91 -0
- package/presets.mjs +2 -0
- package/src/contributions.d.ts +4 -0
- package/src/index.ts +38 -0
- package/starter/cube.blend +0 -0
- package/starter/cube.py +81 -0
- package/template/.agents/references/project-manual.md +341 -0
- package/template/.agents/skills/editor/SKILL.md +53 -0
- package/template/.agents/skills/editor/agents/openai.yaml +4 -0
- package/template/.agents/skills/editor/references/editor-control.md +363 -0
- package/template/.agents/skills/vgai-3d-models/SKILL.md +64 -0
- package/template/.agents/skills/vgai-ingest-existing-game/SKILL.md +112 -0
- package/template/.agents/skills/vgai-threejs-authoring/SKILL.md +347 -0
- package/template/.agents/skills/vgai-threejs-authoring/agents/openai.yaml +4 -0
- package/template/.agents/skills/vgai-threejs-authoring/references/helper-catalog.md +65 -0
- package/template/.claude/skills/editor/SKILL.md +53 -0
- package/template/.claude/skills/editor/agents/openai.yaml +4 -0
- package/template/.claude/skills/editor/references/editor-control.md +363 -0
- package/template/.claude/skills/vgai-3d-models/SKILL.md +64 -0
- package/template/.claude/skills/vgai-ingest-existing-game/SKILL.md +112 -0
- package/template/.claude/skills/vgai-threejs-authoring/SKILL.md +347 -0
- package/template/.claude/skills/vgai-threejs-authoring/agents/openai.yaml +4 -0
- package/template/.claude/skills/vgai-threejs-authoring/references/helper-catalog.md +65 -0
- package/template/.github/copilot-instructions.md +6 -0
- package/template/.github/skills/editor/SKILL.md +53 -0
- package/template/.github/skills/editor/agents/openai.yaml +4 -0
- package/template/.github/skills/editor/references/editor-control.md +363 -0
- package/template/.github/skills/vgai-3d-models/SKILL.md +64 -0
- package/template/.github/skills/vgai-ingest-existing-game/SKILL.md +112 -0
- package/template/.github/skills/vgai-threejs-authoring/SKILL.md +347 -0
- package/template/.github/skills/vgai-threejs-authoring/agents/openai.yaml +4 -0
- package/template/.github/skills/vgai-threejs-authoring/references/helper-catalog.md +65 -0
- package/template/.mcp.json +12 -0
- package/template/.vgai/assets.json +1 -0
- package/template/.vgai/provenance.json +4 -0
- package/template/.volter/tracker/validation/.preset.base.mts +178 -0
- package/template/.volter/tracker/validation/preset.mts +186 -0
- package/template/.volter/tracker/visualizer/.extension.base.tsx +14 -0
- package/template/.volter/tracker/visualizer/extension.tsx +14 -0
- package/template/.volter/tracker-config.json +17 -0
- package/template/AGENTS.md +176 -0
- package/template/CLAUDE.md +1 -0
- package/template/DEVLOG.md +20 -0
- package/template/IDIOMS.md +118 -0
- package/template/LICENSE +30 -0
- package/template/README.md +83 -0
- package/template/ROADMAP.md +20 -0
- package/template/asset-manifest.json +3 -0
- package/template/check-idioms.ts +1533 -0
- package/template/index.html +18 -0
- package/template/manifest-entry-modules-plugin.ts +53 -0
- package/template/package.json +62 -0
- package/template/public/jsm/libs/basis/basis_transcoder.js +19 -0
- package/template/public/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/template/public/jsm/libs/draco/gltf/draco_decoder.js +33 -0
- package/template/public/jsm/libs/draco/gltf/draco_decoder.wasm +0 -0
- package/template/public/jsm/libs/draco/gltf/draco_encoder.js +33 -0
- package/template/public/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -0
- package/template/public/shaders/daylight-sky.frag.glsl +15 -0
- package/template/public/shaders/daylight-sky.vert.glsl +7 -0
- package/template/scripts/patch-drei-stats-gl.mjs +35 -0
- package/template/server/colyseus-setup.ts +111 -0
- package/template/server/loopback.ts +76 -0
- package/template/server/main.ts +78 -0
- package/template/server/rooms/arena-room.ts +488 -0
- package/template/server/rooms/game-room.ts +274 -0
- package/template/server/rooms.ts +15 -0
- package/template/server/tsconfig.json +19 -0
- package/template/src/bot/QaTester.tsx +35 -0
- package/template/src/bot/behaviors.ts +203 -0
- package/template/src/bot/bot-station.ts +192 -0
- package/template/src/bot/tester-run.ts +238 -0
- package/template/src/bot/tester-station.ts +193 -0
- package/template/src/components/environment/DaylightSky.tsx +54 -0
- package/template/src/components/environment/Ground.tsx +129 -0
- package/template/src/components/environment/SceneAtmosphere.tsx +14 -0
- package/template/src/components/environment/SoftGroundShadow.tsx +62 -0
- package/template/src/components/environment/SunShadowFit.tsx +141 -0
- package/template/src/contributions/README.md +98 -0
- package/template/src/contributions/analytics.analytics.tsx +26 -0
- package/template/src/contributions/data.document.tsx +35 -0
- package/template/src/contributions/pages.finder.ts +61 -0
- package/template/src/contributions/tester.inspector.tsx +64 -0
- package/template/src/contributions/use-game-modules.ts +80 -0
- package/template/src/data/README.md +17 -0
- package/template/src/input.ts +97 -0
- package/template/src/lib/audio/capability.json +4 -0
- package/template/src/lib/audio/sfx.ts +255 -0
- package/template/src/lib/react-root/capability.json +4 -0
- package/template/src/lib/react-root/index.ts +20 -0
- package/template/src/lib/react-root/react-root-adapter.tsx +57 -0
- package/template/src/lib/reflections/ReflectionProbe.tsx +201 -0
- package/template/src/lib/reflections/capability.json +4 -0
- package/template/src/lib/reflections/index.ts +19 -0
- package/template/src/lib/reflections/probe-controller.ts +75 -0
- package/template/src/lib/reflections/reflection-probe-registry.ts +402 -0
- package/template/src/lib/reflections/volume-reflection-material.ts +416 -0
- package/template/src/lib/static-batch/Frozen.tsx +91 -0
- package/template/src/lib/static-batch/capability.json +4 -0
- package/template/src/lib/static-batch/freeze.ts +579 -0
- package/template/src/lib/static-batch/index.ts +44 -0
- package/template/src/lib/static-batch/mutation-watch.ts +149 -0
- package/template/src/lib/static-batch/shadow-cache.ts +171 -0
- package/template/src/main.ts +63 -0
- package/template/src/manifest-entry-modules.d.ts +3 -0
- package/template/src/prefabs/HeroBox.stories.tsx +23 -0
- package/template/src/prefabs/HeroBox.tsx +35 -0
- package/template/src/scenes/MainScene.tsx +77 -0
- package/template/src/world.tsx +87 -0
- package/template/tsconfig.json +35 -0
- package/template/tsconfig.node.json +32 -0
- package/template/tsconfig.tools.json +22 -0
- package/template/validate-asset-content.ts +27 -0
- package/template/validate-assets.ts +60 -0
- package/template/validate-manifest.ts +55 -0
- package/template/vgai.adapter.ts +76 -0
- package/template/vgai.project.json +24 -0
- package/template/vite.config.ts +247 -0
- package/template-dotfiles/gitignore +63 -0
- package/workbench/src/media/game-cover.css +83 -0
- package/workbench/src/product.contribution.ts +188 -0
- package/workbench/src/vgaiGameSkew.ts +276 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-GIL7oGEO.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/three.module-D396a9Mn.js","assets/index-D2fNXpHa.css","assets/editor-api-BoJIcyZG.js","assets/play-mode-BFU2PCkG.js","assets/native-debug-module-CWicoSGD.js","assets/native-entry-surface-BE8LJNdu.js","assets/debug-registry-Dgvitx8M.js","assets/playtest-BXIL1JEF.js","assets/game-contract-seams-a5YXejOu.js","assets/instruments-CKR02Y8I.js","assets/frame-pacing-D5acoOzO.js","assets/edit-mode-authoring-B47TfLqu.js","assets/json-history-resource-BbxllWfV.js","assets/binding-resolver-Dsh-6Vor.js","assets/adapter-surface-Y37Nzcyw.js","assets/entry-adjudication-Cq8Yeb74.js","assets/r3f-root-factory-z9llD1OU.js","assets/register-render-vitals-BiZk29b2.js","assets/render-census-BrQX_CXv.js","assets/structural-signature-0w-i_ats.js","assets/render-vitals-BZ5HtvMi.js","assets/static-batch-advisor-B13QEH7d.js","assets/webgl-frame-capture-FlF9zQmW.js","assets/world-state-BWG-IcOd.js","assets/frame-selector-cache-cCeUbcjG.js","assets/dev-build-gDYrq68M.js","assets/game-input-seams-CIQdetRw.js","assets/seeded-random-i3mtgBKZ.js","assets/render-seed-DF4JHy7P.js","assets/frame-delta-D2nsw_Ht.js","assets/events-156d8d12.esm-ErOhDXXB.js","assets/index-bQE2NA0D.js","assets/realm-services-CobQsq_X.js","assets/canvas-entry-runtime-SfBxaR9M.js","assets/three-ingest-runtime-QzDYk6tU.js","assets/EffectComposer-DQxfsXBZ.js","assets/CopyShader-BzTUYzf6.js","assets/ShaderPass-QYRpPuFJ.js","assets/CSS3DRenderer-CL7ABLVK.js","assets/relative-path-guard-GiM7Lsz8.js","assets/capability-coverage-Czas4C18.js","assets/react-root-CEz5NTck.js","assets/editor-presentation-activity-C7SNSmTd.js","assets/active-ingest-CT6jSGhr.js","assets/ingest-source-persistence-C_6Hiyra.js","assets/pixi-story-model-DNkfnWUV.js","assets/surface-content-Dg9Kkazf.js","assets/viewport-root-presentation-CWsE56K6.js","assets/mounted-authoring-Dmg5xmhP.js","assets/three-CDSueJyJ.js","assets/viewport-pick-context-DkawXbEi.js","assets/logger-Dqis-7W1.js","assets/run-ticks-settled-C4ksViyA.js","assets/three-authoring-adapter-CmSQ3Vui.js","assets/source-persistence-backend-C-aR-B_Y.js","assets/three-projection-core-BmKMZ-nf.js","assets/body-marks-h_xDxiDE.js","assets/user-data-BB2Of6Ht.js","assets/object-marks-DwvIEBOK.js","assets/structural-ids-Dc-7rEwi.js","assets/object3d-authoring-subject-CH5sI2oP.js","assets/rapier-physics-adapter-CaZqWLu0.js","assets/r3f-physics-binding-BBo8oma9.js","assets/deferred-ingest-play-DCJi_Pgu.js","assets/rrweb-Cd2ifIRP.js","assets/react-world-authoring-adapter-DmrwM3py.js","assets/board-guides-DziKSTss.js","assets/writer-B-KovzkA.js","assets/story-arg-descriptors-Ek86ExX7.js","assets/inspect-BZfi3mmo.js","assets/inference-diagnostics-Dhmtfbq_.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{ad as _,i$ as $,j0 as V,j1 as f,j2 as g,j3 as N,_ as R,j4 as U,$ as B,j5 as M,V as j,j6 as C,B as E}from"./index-GIL7oGEO.js";import{g as l,i as b,y as D,z as G,A as F,c as O,B as x,C as q}from"./play-mode-BFU2PCkG.js";import{e as H,c as z}from"./gameplay-replay-e5umMlXv.js";import{n as A,s as h}from"./command-results-CUQD49AB.js";import{z as K,i as y}from"./active-ingest-CT6jSGhr.js";import{g as W}from"./capability-coverage-Czas4C18.js";import{waitForHoldBudget as Y,HOLD_STARVED_NO_DRIVER_REASON as X}from"./debug-bridge-CCohG-d-.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";import"./native-debug-module-CWicoSGD.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-Dgvitx8M.js";import"./playtest-BXIL1JEF.js";import"./game-contract-seams-a5YXejOu.js";import"./instruments-CKR02Y8I.js";import"./frame-pacing-D5acoOzO.js";import"./edit-mode-authoring-B47TfLqu.js";import"./json-history-resource-BbxllWfV.js";import"./binding-resolver-Dsh-6Vor.js";import"./adapter-surface-Y37Nzcyw.js";import"./entry-adjudication-Cq8Yeb74.js";import"./r3f-root-factory-z9llD1OU.js";import"./register-render-vitals-BiZk29b2.js";import"./render-census-BrQX_CXv.js";import"./structural-signature-0w-i_ats.js";import"./render-vitals-BZ5HtvMi.js";import"./static-batch-advisor-B13QEH7d.js";import"./webgl-frame-capture-FlF9zQmW.js";import"./world-state-BWG-IcOd.js";import"./frame-selector-cache-cCeUbcjG.js";import"./dev-build-gDYrq68M.js";import"./game-input-seams-CIQdetRw.js";import"./seeded-random-i3mtgBKZ.js";import"./render-seed-DF4JHy7P.js";import"./frame-delta-D2nsw_Ht.js";import"./events-156d8d12.esm-ErOhDXXB.js";import"./index-bQE2NA0D.js";import"./realm-services-CobQsq_X.js";import"./canvas-entry-runtime-SfBxaR9M.js";import"./three-ingest-runtime-QzDYk6tU.js";import"./EffectComposer-DQxfsXBZ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-QYRpPuFJ.js";import"./CSS3DRenderer-CL7ABLVK.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-CEz5NTck.js";import"./editor-presentation-activity-C7SNSmTd.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-CWsE56K6.js";import"./mounted-authoring-Dmg5xmhP.js";import"./three-CDSueJyJ.js";import"./viewport-pick-context-DkawXbEi.js";import"./logger-Dqis-7W1.js";import"./run-ticks-settled-C4ksViyA.js";import"./three-authoring-adapter-CmSQ3Vui.js";import"./source-persistence-backend-C-aR-B_Y.js";import"./ingest-source-persistence-C_6Hiyra.js";import"./three-projection-core-BmKMZ-nf.js";import"./body-marks-h_xDxiDE.js";import"./user-data-BB2Of6Ht.js";import"./object-marks-DwvIEBOK.js";import"./structural-ids-Dc-7rEwi.js";import"./object3d-authoring-subject-CH5sI2oP.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./r3f-physics-binding-BBo8oma9.js";import"./deferred-ingest-play-DCJi_Pgu.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-DmrwM3py.js";import"./board-guides-DziKSTss.js";import"./writer-B-KovzkA.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BZfi3mmo.js";import"./inference-diagnostics-Dhmtfbq_.js";import"./output-DK8waum9.js";const k=()=>_().debug!=null;function m(e,t,s){const a=new Error(t);return a.code=e,s&&(a.data=s),a}function S(e){return Array.isArray(e)?new Set(e.filter(t=>!!(t&&typeof t=="object"&&typeof t.name=="string")).map(t=>t.name)):new Set}function J(e,t,s,a,i){if(e==="commands"){const c=S(t);return Array.isArray(t)&&[...a].every(o=>c.has(o))}if(e==="providers"){const c=S(t);return Array.isArray(t)&&[...i].every(o=>c.has(o))}return s?e==="state"?i.has(s):e==="invoke"?a.has(s):!1:!1}function T(e,t,s){const a=K(),i=a?.systems;if(!a||!i)return;const c=new Set((i.commands??[]).map(n=>n.name)),o=new Set((i.state??[]).map(n=>n.name));J(e,t,s,c,o)&&f({seam:"contract.systems",subject:"game",epoch:W(a),stage:"operation",outcome:"pass",source:"consumer",detail:`the session wire consumed contract systems through debug.${e}`})}async function Q(e,t,s){let a;try{a=$(s).debug}catch(o){throw o instanceof V?m("INSTANCE_UNRESOLVED",`session wire: "${e}" — ${o.message}`,{instances:o.instances}):o}const i=()=>{if(!a)throw m("DEBUG_ADAPTER_UNAVAILABLE",`session wire: "${e}" — this game exposes no debug adapter`);return a},c=(o,n,r)=>{const u=i(),d=g(u);try{const p=r();return f({seam:`system.debug.${o}`,subject:"game",epoch:d,stage:n,outcome:"pass",source:"consumer",detail:`the session wire called debug.${o} and received its result`}),f({seam:"system.debug",subject:"game",epoch:d,stage:"operation",outcome:"pass",source:"consumer",detail:"the session wire consumed the mounted debug adapter"}),T(o,p,t[0]),p}catch(p){throw f({seam:`system.debug.${o}`,subject:"game",epoch:d,stage:n,outcome:"fail",source:"consumer",detail:`the session wire called debug.${o} and it failed: ${p instanceof Error?p.message:String(p)}`}),p}};switch(e){case"state":return c("state","operation",()=>i().state(t[0]));case"stateAll":return c("stateAll","operation",()=>i().stateAll());case"providers":return c("providers","operation",()=>i().providers());case"commands":return c("commands","operation",()=>i().commands());case"events":return c("events","operation",()=>i().events(t[0]));case"snapshot":{const o=i();return{time:c("state","operation",()=>o.state("time")),state:c("stateAll","operation",()=>o.stateAll()),events:c("events","operation",()=>o.events(t[0])),pageErrors:N()}}case"invoke":{const o=t[0],n=t[1]??[];try{const r=await i().invoke(o,n),u=i();return f({seam:"system.debug.invoke",subject:"game",epoch:g(u),stage:"effect",outcome:"pass",source:"consumer",detail:`the session wire invoked debug command "${o}" and received its result`}),f({seam:"system.debug",subject:"game",epoch:g(u),stage:"operation",outcome:"pass",source:"consumer",detail:"the session wire consumed the mounted debug adapter"}),T("invoke",r,o),r}catch(r){const u=i();throw f({seam:"system.debug.invoke",subject:"game",epoch:g(u),stage:"effect",outcome:"fail",source:"consumer",detail:`the session wire invoked debug command "${o}" and it failed: ${r instanceof Error?r.message:String(r)}`}),r}}case"runTicks":{const o=l();if(!o?.runTicks)throw m("RUN_TICKS_UNAVAILABLE","this play session has no first-party Game to run ticks on");const n=t[0],r=t[1];o.runTicks(n,r);return}case"runTicksSettled":{const o=l();if(!o?.runTicksSettled)throw m("RUN_TICKS_UNAVAILABLE","this play session has no first-party Game to run ticks on");const n=t[0],r=t[1];await o.runTicksSettled(n,r);return}case"input.setVirtualAction":case"input.tapVirtualAction":case"input.clearVirtualActions":case"input.startRecording":case"input.stopRecording":case"input.isRecording":{const o=l(),n=e==="input.setVirtualAction"?t[2]:e==="input.tapVirtualAction"?t[1]:t[0],r=o?o.getInputTarget(n):null;if(!r)throw m("DEBUG_INPUT_UNAVAILABLE",`session wire: ${e}() has no virtual-input target wired — no default three world has mounted yet, or this project's mount path never wired one`);if(e==="input.setVirtualAction")return r.setVirtualAction(t[0],t[1]);if(e==="input.tapVirtualAction")return r.tapVirtualAction(t[0]);if(e==="input.clearVirtualActions"){r.clearVirtualActions();return}if(e==="input.startRecording"){r.startInputRecording();return}if(e==="input.stopRecording"){r.stopInputRecording();return}return r.isInputRecording()}case"input.scheduleActionAtTick":{const o=l(),n=t[0],r=t[1],u=t[2],d=t[3],p=o?o.getInputTarget(d):null;if(!p)throw m("DEBUG_INPUT_UNAVAILABLE","session wire: input.scheduleActionAtTick() has no virtual-input target wired — no default three world has mounted yet, or this project's mount path never wired one");return p.scheduleActionAtTick(n,r,u)}case"input.injectPointerDelta":case"input.injectPointerPosition":{const o=l(),n=t[0],r=t[1],u=t[2],d=o?o.getInputTarget(u):null;if(!d)throw m("DEBUG_INPUT_UNAVAILABLE",`session wire: ${e}() has no virtual-input target wired — no default three world has mounted yet, or this project's mount path never wired one`);e==="input.injectPointerDelta"?d.injectPointerDelta(n,r):d.injectPointerPosition(n,r);return}case"holdFor":{const o=l(),n=t[2],r=o?o.getInputTarget(n):null;if(!r)throw m("DEBUG_INPUT_UNAVAILABLE","session wire: holdFor() has no virtual-input target wired — no default three world has mounted yet, or this project's mount path never wired one");const u=t[0],d=t[1],p=r.setVirtualAction(u,!0);if(!p.delivered)return r.clearVirtualActions(),{delivered:!1,reason:p.reason};const{stalled:v,starvedWithoutDriver:w}=await Y(i(),d,o?.runTicks?L=>o.runTicks?.(L,{render:"last"}):void 0);return r.clearVirtualActions(),v?{delivered:!1,reason:w?X:"play stopped during hold"}:{delivered:!0}}default:throw m("UNKNOWN_BRIDGE_METHOD",`session wire: unknown bridge method "${e}"`)}}async function Z(e){if(!b()&&!k())return y()?{ok:!1,error:"this ingest mount is live, but it publishes no debug plane — the mount installs no SystemAdapters.debug, so there is nothing to enumerate, read or drive through the game seam. Starting play will not change that; the game itself must declare the vgai game contract (or carry a contract shim beside it) for these calls to have an answer."}:A();const t=e.method,s=e.callArgs??[];try{const a=e.instance;return{ok:!0,data:{result:await Q(t,s,a)}}}catch(a){return h(a)}}async function P(e){const{liveCanvasFrame:t}=await R(async()=>{const{liveCanvasFrame:s}=await import("./index-GIL7oGEO.js").then(a=>a.tY);return{liveCanvasFrame:s}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]));return t(e)}function ee(){const e=l();e?.loop.liveness==="loop-starved"&&e.runTicks?.(1,{render:"last"})}function I(e,t){const s=te();return{ok:!0,data:{base64:e,mimeType:"image/png",composite:t.composite,...t.layers?{layers:t.layers}:{},...t.flatness?{flatness:t.flatness}:{},...t.loopRecoveryFrame?{loopRecoveryFrame:!0}:{},...s?{recording:s}:{}}}}function te(){const e=F();return e?{path:e.path,startedAt:e.startedAt,notice:[`This run is being RECORDED — the still above is one frame of ${e.path}.`,"A still cannot answer a question about a moving game (did the jump land, did the shot","register). If that is the question, read the clip:","",` recording: ${e.path}${e.rotates?` (the next ${E("play")} replaces this file)`:" (named — never rotated)"}`,...e.format==="canvas-dom"?[` HUD replay: ${e.replayPath}`," The raw WebM contains the canvas only. Reconstruct HUD stills with"," editor.recording.captureReplay, or export a full video with editor.recording.exportReplay."]:[],` startedAt: ${e.startedAt} (clip offset 0)`,` play log: ${e.logFile===null?"(none — nothing is logging this run)":`logs/${e.logFile}`} (event timestamps → clip offsets)`,"","THE BAR for a temporal question: examine AT LEAST 10 frames spanning no more than 5","seconds around the moment. One frame, or ten frames spread across the run, is the same","guess a single screenshot was.","",`The clip is finalized and readable when play stops — ${E("stop")}, or the idle`,`auto-stop after ${Math.round(e.idleAutoStopMs/1e3)}s with no session command and no player input.`].join(`
|
|
3
|
+
`)}:null}async function re(e){if(!b()&&!k()&&!y())return A();const t=e.instance,s=D(t),a=G(t),i=U(s).medium,c=l();let o=!1,n=null;if(a&&c?.loop.liveness==="loop-starved")if(e.refreshStarvedFrame===!0&&c.runTicks)try{c.runTicks(1,{render:"last"}),o=!0}catch(r){return h(r)}else return{ok:!1,error:"cannot capture a fresh game frame while the host loop reports 'loop-starved' — inspect the separate visibility readings, let presentation resume, or request a deterministic loop-recovery frame",data:{code:"BRIDGE_SCREENSHOT_STALE"}};if(s&&typeof Image<"u"&&typeof XMLSerializer<"u"&&typeof s.getBoundingClientRect=="function")try{const r=await B(s,{canvasFrame:P,...i==="unknown"?{}:{presentsOnCanvas:i==="canvas"}});if(r.layers.canvases===0&&r.layers.domOverlays===0)throw new M(i==="dom"?"dom-overlay":"composite-output","no game layers were mounted");return I(r.base64,{composite:!0,layers:r.layers,flatness:r.flatness,loopRecoveryFrame:o})}catch(r){n=r,j.warn(`Full-stack screenshot failed; returning the canvas-only fallback — ${r instanceof Error?r.message:String(r)}`,"screenshot")}if(!a){const r=n instanceof Error?n.message:String(n);return{ok:!1,error:n!==null?`full game-stack capture failed — ${r}; no canvas layer is available as a fallback`:y()?"the ingest mount is live but no DOM overlay or canvas layer is mounted for capture":"no play-mode DOM overlay or canvas layer is mounted yet",data:{code:"BRIDGE_SCREENSHOT_UNAVAILABLE"}}}try{const r=await R(()=>import("./index-GIL7oGEO.js").then(w=>w.tY),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])),u=r.readablePngSource(await r.liveCanvasFrame(a))??a,d=u.toDataURL("image/png"),p=d.indexOf(","),v=p>=0?d.slice(p+1):d;return I(v,{composite:!1,flatness:C(u,a.ownerDocument),loopRecoveryFrame:o})}catch(r){return{ok:!1,error:`bridge-screenshot: canvas layer capture failed — ${r instanceof Error?r.message:String(r)}`+(n===null?"":`; full game-stack capture also failed — ${n instanceof Error?n.message:String(n)}`),data:{code:"BRIDGE_SCREENSHOT_UNAVAILABLE"}}}}const Lt="workspace.command",$t={"bridge-call":{timeoutMs:6e4,derivedRefresh:"always",handle:Z},"bridge-screenshot":{timeoutMs:15e3,derivedRefresh:"if-content-changed",handle:re},"bridge-recording-start":{timeoutMs:15e3,derivedRefresh:"none",handle:async e=>{if(!b()&&!k()&&!y())return A();const t=D();if(!t)return{ok:!1,error:"no play-mode game surface is mounted yet"};const s=_().audio?.acquireRecordingStream?.()??null;try{return{ok:!0,data:{...await x(t,{fps:typeof e.fps=="number"?e.fps:void 0,format:e.format==="canvas-dom"||e.format==="composite-webm"?e.format:void 0,name:typeof e.name=="string"||e.name===null?e.name:void 0,canvasFrame:P,refreshFrame:ee,audio:s})}}}catch(a){return h(a)}}},"bridge-recording-stop":{timeoutMs:6e4,derivedRefresh:"none",handle:async()=>{try{return{ok:!0,data:{...await O()}}}catch(e){return h(e)}}},"bridge-recording-timeline":{derivedRefresh:"none",handle:()=>{const e=q();return e===null?{ok:!1,error:"no gameplay recording is active"}:{ok:!0,data:{...e}}}},"bridge-recording-replay-capture":{timeoutMs:6e4,derivedRefresh:"none",handle:async e=>{try{return typeof e.replayPath!="string"?{ok:!1,error:"replayPath is required"}:typeof e.positionMs!="number"||!Number.isFinite(e.positionMs)?{ok:!1,error:"finite positionMs is required"}:{ok:!0,data:{...await z(e.replayPath,e.positionMs)}}}catch(t){return h(t)}}},"bridge-recording-replay-export":{timeoutMs:6e5,derivedRefresh:"none",handle:async e=>{try{if(typeof e.replayPath!="string")return{ok:!1,error:"replayPath is required"};const{blob:t,...s}=await H({replayPath:e.replayPath,...typeof e.fps=="number"?{fps:e.fps}:{},...typeof e.startMs=="number"?{startMs:e.startMs}:{},...typeof e.endMs=="number"?{endMs:e.endMs}:{}}),{beginGameplayRecordingSink:a,appendGameplayRecordingChunk:i,finishGameplayRecordingSink:c,abortGameplayRecordingSink:o}=await R(async()=>{const{beginGameplayRecordingSink:r,appendGameplayRecordingChunk:u,finishGameplayRecordingSink:d,abortGameplayRecordingSink:p}=await import("./editor-api-BoJIcyZG.js");return{beginGameplayRecordingSink:r,appendGameplayRecordingChunk:u,finishGameplayRecordingSink:d,abortGameplayRecordingSink:p}},__vite__mapDeps([11,0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79])),n=await a({startedAt:new Date().toISOString(),mimeType:"video/webm",purpose:"export",name:typeof e.name=="string"?e.name:`replay-export-${Date.now()}`});try{for(let r=0,u=0;r<t.size;r+=4*1024*1024,u++)await i(n,u,t.slice(r,r+4*1024*1024));await c(n,"post-processed canvas and DOM recording")}catch(r){throw await o(n),r}return{ok:!0,data:{...s,path:n.path}}}catch(t){return h(t)}}}};export{$t as commands,Lt as point};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{gy as i,gz as m,c8 as t,gA as r,gB as a,gC as o,gD as s}from"./index-GIL7oGEO.js";import"./webworkerAll-CM2o_dnz.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";i.add(m);i.mixin(t,r);i.add(a);i.add(o);i.mixin(t,s);
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{b8 as W,cS as E,d1 as D,dM as A,dN as z,dO as M,dP as i,a5 as H,dQ as F,bg as a,dR as n,dS as L,bo as j,a4 as R,b9 as G,dT as V,dU as J,ct as U,dV as _,dW as Q}from"./index-GIL7oGEO.js";import{r}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{s as Y,b as P,u as q,c as K,g as X,d as Z,r as ee,f as k}from"./build-session-C_sg3CEn.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"./three.module-D396a9Mn.js";import"./configurations-DTBMdaTL.js";const m="vgai.project.json",S={name:"My Game",resolution:{width:1280,height:720},appId:"com.example.mygame"};function te(){r.useSyncExternalStore(Y,P,P);const s=X(),p=G(),o=p?W(p):null,[y,T]=r.useState(S),f=q(),[c,I]=r.useState("");r.useEffect(()=>{!c&&f.length>0&&I(f[0]?.id??"")},[f,c]);const g=r.useRef(null),x=r.useCallback(async()=>{const t=await E(m),l=t?JSON.parse(t):S;T({...S,...l,resolution:{...S.resolution,...l.resolution}})},[]);r.useEffect(()=>(x().catch(()=>{}),o?.subscribeAll(t=>{t===m&&x().catch(()=>{})})??(()=>{})),[o,x]),r.useEffect(()=>()=>{g.current&&clearTimeout(g.current)},[]);const b=r.useCallback(t=>{g.current&&clearTimeout(g.current),g.current=setTimeout(async()=>{const l=await E(m);if(!l)throw new Error(`Cannot edit build settings: ${m} is missing`);const u=JSON.parse(l),h=`${JSON.stringify({...u,name:t.name,resolution:t.resolution,appId:t.appId},null,2)}
|
|
2
|
+
`;if(!o){await D(m,h);return}await o.write(m,h,{label:"Edit Build Settings",kind:"settings",contentType:"application/json"}).catch(()=>void x().catch(()=>{}))},500)},[o,x]),N=r.useCallback(t=>{T(l=>{const u={...l,...t};return b(u),u})},[b]),$=r.useCallback((t,l)=>{T(u=>{const h={...u,resolution:{...u.resolution,[t]:Math.round(l)}};return b(h),h})},[b]),d=s.phase,v=s.result?.report?.artifact??null;return e.jsxs("div",{"data-testid":"build-profiles-document",style:{display:"flex",flex:1,minHeight:0,background:A[1],pointerEvents:"auto"},children:[e.jsx("div",{style:se,children:f.map(t=>e.jsx(M,{selected:c===t.id,disabled:d==="building",onClick:()=>{d!=="building"&&I(t.id)},style:{padding:`${i[4]} ${i[6]}`,opacity:d==="building"&&c!==t.id?.4:1},children:e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:i[4]},children:[e.jsx(H,{icon:L,style:{fontSize:n.lg,color:c===t.id?F:a[2]}}),e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:n.md,fontWeight:600,color:c===t.id?a[1]:a[2]},children:t.label}),e.jsx("div",{style:{fontSize:n.sm,color:a[3],marginTop:1},children:t.subtitle})]})]})},t.id))}),e.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",minWidth:0,padding:`${i[5]} ${i[8]}`,maxWidth:560},children:[e.jsx("div",{style:O,children:"Project"}),e.jsxs("div",{style:w,children:[e.jsx("label",{style:B,children:"Name"}),e.jsx(j,{className:"vgai-input",style:{flex:1},value:y.name,onChange:t=>N({name:t.target.value})})]}),e.jsxs("div",{style:w,children:[e.jsx("label",{style:B,children:"Resolution"}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:i[2],flex:1},children:[e.jsx(j,{type:"number",className:"vgai-input",style:{width:0,flex:1},value:y.resolution.width,onChange:t=>{const l=Number.parseInt(t.target.value,10);Number.isFinite(l)&&l>0&&$("width",l)}}),e.jsx("span",{style:{fontSize:n.sm,color:a[3]},children:"×"}),e.jsx(j,{type:"number",className:"vgai-input",style:{width:0,flex:1},value:y.resolution.height,onChange:t=>{const l=Number.parseInt(t.target.value,10);Number.isFinite(l)&&l>0&&$("height",l)}})]})]}),e.jsxs("div",{style:w,children:[e.jsx("label",{style:B,children:"App ID"}),e.jsx(j,{className:"vgai-input",style:{flex:1},value:y.appId,onChange:t=>N({appId:t.target.value})})]}),e.jsxs("div",{style:{...w,marginTop:i[2]},children:[e.jsx("label",{style:B,children:"Output"}),e.jsx("span",{style:{fontSize:n.md,color:a[2]},children:v??"Artifact appears here after a build"})]}),e.jsx("div",{style:{marginTop:i[6],display:"flex",alignItems:"center",gap:i[4],paddingTop:i[4],borderTop:`1px solid ${z[1]}`},children:d==="building"?e.jsxs(e.Fragment,{children:[e.jsxs("span",{style:{fontSize:n.md,fontWeight:600,color:F},children:["Building for ",f.find(t=>t.id===s.target)?.label??s.target,"… (log in Build Output below)"]}),e.jsx(R,{size:"compact",onClick:Z,children:"Cancel"})]}):e.jsxs(e.Fragment,{children:[d==="done"&&s.result&&e.jsx("span",{"data-testid":"build-profiles-result",style:{fontSize:n.md,fontWeight:600,color:s.result.ok?V:J},children:s.result.ok?"✓ Build complete":`✗ Build failed (exit ${s.result.code??"unknown"})`}),d==="done"&&s.result?.ok&&v&&e.jsx("a",{href:U(v),download:v,className:"vgai-btn","data-variant":"secondary","data-size":"default",style:{textDecoration:"none",display:"inline-flex"},children:"Download"}),e.jsx(R,{variant:"primary","data-testid":"build-profiles-build",onClick:()=>{c&&(d==="done"&&ee(),K(c))},style:{marginLeft:"auto"},children:d==="done"?"Build Again":"Build"})]})}),d==="done"&&s.result?.report&&e.jsx(ie,{report:s.result.report})]})]})}function ie({report:s}){const p=s.largestFiles[0]?.bytes??1;return e.jsxs("section",{"data-testid":"build-report",style:{marginTop:i[6],paddingTop:i[5],borderTop:`1px solid ${z[1]}`},children:[e.jsx("div",{style:O,children:"Build report"}),e.jsxs("div",{style:{display:"flex",gap:i[4],marginBottom:i[5]},children:[e.jsx(C,{label:"Package",value:k(s.artifactBytes)}),e.jsx(C,{label:"Output",value:k(s.outputBytes)}),e.jsx(C,{label:"Files",value:String(s.fileCount)})]}),e.jsx("div",{style:{fontSize:n.sm,color:a[3],marginBottom:i[2]},children:"Largest output files"}),e.jsx("div",{style:{display:"grid",gap:3},children:s.largestFiles.slice(0,8).map(o=>e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) max-content",gap:i[3]},children:[e.jsxs("div",{title:o.path,style:{position:"relative",minWidth:0,overflow:"hidden",borderRadius:2},children:[e.jsx("div",{"aria-hidden":"true",style:{position:"absolute",inset:0,width:`${Math.max(2,o.bytes/p*100)}%`,background:"color-mix(in srgb, var(--vgai-accent) 16%, transparent)"}}),e.jsx("div",{style:{position:"relative",padding:`${i[1]} ${i[2]}`,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:_,fontSize:n.sm,color:a[2]},children:o.path})]}),e.jsx("div",{style:{textAlign:"right",padding:`${i[1]} 0`,fontSize:n.sm,color:a[2]},children:k(o.bytes)})]},o.path))})]})}function C({label:s,value:p}){return e.jsxs("div",{style:{flex:1,padding:`${i[3]} ${i[4]}`,background:A[2],borderRadius:Q.sm},children:[e.jsx("div",{style:{fontSize:n.sm,color:a[3]},children:s}),e.jsx("div",{style:{marginTop:i[1],fontSize:n.lg,fontWeight:650,color:a[1]},children:p})]})}const se={width:160,flexShrink:0,borderRight:`1px solid ${z[1]}`,overflowY:"auto"},O={fontSize:n.sm,fontWeight:700,textTransform:"uppercase",color:a[3],letterSpacing:"0.05em",marginBottom:i[3]},w={display:"flex",alignItems:"center",gap:i[3],marginBottom:i[2]},B={width:65,fontSize:n.base,color:a[2],flexShrink:0},xe="workspace.document",he="Build Profiles";function ye(s){return e.jsx(te,{})}export{ye as default,xe as point,he as title};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{r as i}from"./index-nmcBqr7Y.js";import{s as a,b as e,g as r}from"./build-session-C_sg3CEn.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./configurations-DTBMdaTL.js";import"./index-GIL7oGEO.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";const B="workspace.status",h="Build Progress",S="left",k=30;function j(){i.useSyncExternalStore(a,e,e);const s=r();return s.phase==="idle"?null:s.phase==="building"?t.jsxs("span",{className:"vgai-status-copy","data-testid":"status-build-progress","data-build-phase":"building","data-status-tone":"accent",children:["Building ",s.target,"…"]}):t.jsx("span",{className:"vgai-status-copy","data-testid":"status-build-progress","data-build-phase":s.result?.ok?"complete":"failed","data-status-tone":s.result?.ok?"success":"danger",children:s.result?.ok?"Build complete":"Build failed"})}export{S as align,j as default,k as order,B as point,h as title};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{l as D,s as _}from"./configurations-DTBMdaTL.js";import{q as p}from"./index-GIL7oGEO.js";import{r as m}from"./index-nmcBqr7Y.js";function b(e){if(e<1024)return`${e} B`;const s=["KB","MB","GB"];let t=e/1024,n=s[0];for(let o=1;o<s.length&&t>=1024;o++)t/=1024,n=s[o];return`${t>=10?t.toFixed(1):t.toFixed(2)} ${n}`}const B="build",v="build-profiles.document";function N(){return p().workspace.openContributedDocument(v)}function P(){const[e,s]=m.useState([]);return m.useEffect(()=>{let t=!1;return D().then(n=>{t||s(n.filter(o=>o.role==="build").map(o=>({id:o.id,label:o.id,subtitle:o.describe??o.kind})))}).catch(()=>{t||s([])}),()=>{t=!0}},[]),e}let i={phase:"idle",target:"",log:[],result:null},w=0;const f=new Set;let $=null;function u(e){i={...i,...e},w++,x();for(const s of f)s()}function U(e){return f.add(e),()=>{f.delete(e)}}function L(){return w}function y(){return i}function M(){i.phase!=="building"&&u({phase:"idle",log:[],result:null})}function W(){$?.abort(),u({phase:"idle"})}function E(){x(),p().output.show(B)}function x(){const e=y();let s=e.log.length?`${e.log.join(`
|
|
2
|
+
`)}
|
|
3
|
+
`:"";if(e.phase==="done"&&e.result&&(s+=`
|
|
4
|
+
${e.result.ok?"Build complete.":`Build failed (exit code: ${e.result.code??"unknown"}).`}
|
|
5
|
+
`,e.result.report)){const t=e.result.report;s+=`${b(t.artifactBytes)} package · ${b(t.outputBytes)} output · ${t.fileCount} files
|
|
6
|
+
`}p().output.write(B,"Build",s,O(s))}function O(e){const s=[],t=e.replace(/\u001b\[[0-9;]*m/g,"");for(const n of t.split(/\r?\n/)){const o=n.match(/^(.+?)\((\d+),(\d+)\):\s*(error|warning)\s+(.*)$/)??n.match(/^(.+?):(\d+):(\d+)\s*[-:]?\s*(error|warning)\s*:?[ ]*(.*)$/i);if(!o)continue;const l=o[1].trim();l.startsWith("/")||l.split(/[\\/]/).includes("..")||s.push({path:l,line:Math.max(1,Number(o[2])),column:Math.max(1,Number(o[3])),severity:o[4].toLowerCase()==="warning"?"warning":"error",message:o[5]})}return s}async function F(e){if(i.phase==="building")return;u({phase:"building",target:e,log:[],result:null}),E();const s=new AbortController;$=s;try{const t=await _(e,s.signal);if(!t.ok){const c=await t.json().catch(()=>({error:"Build request failed"}));u({phase:"done",log:[...i.log,`Error: ${c.error??t.statusText}`],result:{ok:!1,code:null}});return}const n=t.body.getReader(),o=new TextDecoder;let l="";for(;;){const{done:c,value:k}=await n.read();if(c)break;l+=o.decode(k,{stream:!0});const h=l.split(`
|
|
7
|
+
|
|
8
|
+
`);l=h.pop();for(const g of h){if(g.startsWith(":"))continue;const S=g.split(`
|
|
9
|
+
`);let d="",a="";for(const r of S)r.startsWith("event: ")?d=r.slice(7):r.startsWith("data: ")&&(a=r.slice(6));if(d==="log"){let r;try{r=JSON.parse(a)}catch{r=a}u({log:[...i.log,r]})}else if(d==="done"){let r;try{r=JSON.parse(a)}catch{r={ok:!1,code:null}}u({phase:"done",result:r})}}}}catch(t){t.name!=="AbortError"&&u({phase:"done",log:[...i.log,`Error: ${t.message}`],result:{ok:!1,code:null}})}}export{E as a,L as b,F as c,W as d,b as f,y as g,N as o,M as r,U as s,P as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o}from"./build-session-C_sg3CEn.js";import"./configurations-DTBMdaTL.js";import"./index-GIL7oGEO.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";const n="workspace.action",b=[{id:"build.web",label:"Build for Web (itch.io)",execute:()=>{o()}},{id:"build.steam",label:"Build for Desktop (Steam)",execute:()=>{o()}}];export{b as actions,n as point};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o}from"./build-session-C_sg3CEn.js";import"./configurations-DTBMdaTL.js";import"./index-GIL7oGEO.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";const c="workspace.command",f={"show-build":{derivedRefresh:"always",handle:()=>o()?{ok:!0}:{ok:!1,error:"The Build Profiles document is not registered in this session."}}};export{f as commands,c as point};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as r}from"./jsx-runtime-DPjLkJKQ.js";import{q as a,a4 as e,a5 as s,a6 as i}from"./index-GIL7oGEO.js";import{r as p}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.js";import{o as n}from"./build-session-C_sg3CEn.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"./three.module-D396a9Mn.js";import"./configurations-DTBMdaTL.js";const h="workspace.header",v=10;function B(){const{session:t}=a(),o=p.useSyncExternalStore(t.subscribe,t.playState,t.playState)!=="stopped";return r.jsxs(e,{variant:"ghost",size:"compact","data-testid":"project-export","aria-label":"Export project",disabled:o,title:o?"Stop Play mode before exporting the project":"Export project",className:"vgai-chrome-island vgai-glass-island",onClick:()=>{n()},children:[r.jsx(s,{icon:i.action.export}),"Export"]})}export{B as default,v as order,h as point};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as t,a as i}from"./build-session-C_sg3CEn.js";import"./configurations-DTBMdaTL.js";import"./index-GIL7oGEO.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";const c="workspace.menu",f={menu:"window",items:[{id:"build-profiles",label:"Build Profiles",testId:"menu-build-profiles",execute:()=>{t()}},{id:"build-output",label:"Build Output",testId:"menu-build-output",execute:()=>{i()}}]};export{f as menu,c as point};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as i,g as t,a as r}from"./build-session-C_sg3CEn.js";import"./configurations-DTBMdaTL.js";import"./index-GIL7oGEO.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";const b="workspace.service",g=()=>{let s=t().phase;return i(()=>{const o=t();o.phase==="done"&&s!=="done"&&o.result?.ok===!1&&r(),s=o.phase})};export{b as point,g as start};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function f(i){return 10**(i/20)}function c(i){try{i.disconnect()}catch{}}function g(i){const{context:d,destination:u}=i,t=new Map;function s(e,n){const o=t.get(e);if(o!==void 0){if(n!==void 0&&n!==o.parent)throw new Error(`audio bus ${JSON.stringify(e)} already routes into ${o.parent===void 0?"the destination":JSON.stringify(o.parent)}; it cannot also route into ${JSON.stringify(n)}. Routing is decided when a bus is created (see packages/game-runtime/src/audio/bus-mixer.ts).`);return o.node}const a=n===void 0?u:s(n),r=d.createGain();return r.gain.value=1,r.connect(a),t.set(e,{node:r,parent:n}),r}return{bus:s,find:e=>t.get(e)?.node??null,setDb:(e,n,o)=>{s(e,o).gain.value=f(n)},remove:e=>{const n=t.get(e);n!==void 0&&(t.delete(e),c(n.node))},disconnect:()=>{for(const e of t.values())c(e.node);t.clear()}}}export{g as createAudioBusMixer,f as dbToLinear};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as i,L as e,c4 as r}from"./index-GIL7oGEO.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";const d=i({type:r(["perspective","orthographic"]).describe("Camera projection type"),fov:e().optional().describe("Vertical field of view in degrees (perspective only)"),near:e().optional().describe("Near clipping plane distance"),far:e().optional().describe("Far clipping plane distance"),orthoSize:e().optional().describe("Half-height of the orthographic frustum (orthographic only)"),width:e().optional().describe("Render width in pixels. Defaults to viewport width"),height:e().optional().describe("Render height in pixels. Defaults to viewport height")}).describe("Camera configuration");export{d as CameraDescriptorSchema};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./jsx-runtime-DPjLkJKQ.js";import{eD as m,eE as x,eF as j,eG as s,a9 as l}from"./index-GIL7oGEO.js";import{r as u}from"./index-nmcBqr7Y.js";import"./index-CtzuWnCS.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"./three.module-D396a9Mn.js";function h(n,t){const r=t?n.hierarchy.object3D?.(t):null;if(!r)return null;if(r.isCamera)return r;const i=r.userData._camera;return i?.isCamera?i:null}function f(n,t){return!!m()&&!!h(t,n?.id??null)}function b(n,t){return t.cameras.find(r=>r.nativeId===n.uuid)??t.cameras.find(r=>r.id===n.name||r.label===n.name)??null}function C(n){const[,t]=u.useReducer(r=>r+1,0);return u.useEffect(()=>{if(n)return n.subscribe(t)},[n]),n?.snapshot()??null}function v({adapter:n,nodeId:t}){const r=m(),i=C(r);if(!i)return null;const c=h(n,t);if(!c)return null;const a=b(c,i),d=a?.id===i.activeCameraId,o=i.transition,p=o?Math.max(0,o.durationSeconds-o.elapsedSeconds):null;return e.jsxs("div",{style:{display:"grid",gap:8},children:[a?null:e.jsx(x,{tone:"info",children:"This native camera is not registered with the active runtime controller."}),e.jsxs(j,{children:[e.jsx(s,{label:"Role",children:e.jsx(l,{tone:d?"success":"muted",children:d?"Active camera":a?"Registered camera":"Scene camera"})}),a?e.jsx(s,{label:"Runtime ID",children:e.jsx(l,{tone:"muted",children:a.id})}):null,a?.priority!==void 0?e.jsx(s,{label:"Priority",children:e.jsx(l,{tone:"muted",children:a.priority})}):null,a?.enabled!==void 0?e.jsx(s,{label:"Enabled",children:e.jsx(l,{tone:a.enabled?"success":"muted",children:a.enabled?"Yes":"No"})}):null,e.jsx(s,{label:"Active camera",children:e.jsx(l,{tone:"muted",children:i.activeCameraId??"None"})}),e.jsx(s,{label:"Controller",children:e.jsx(l,{tone:"muted",children:i.activeControllerId??"Gameplay / unowned"})}),e.jsx(s,{label:"Ownership depth",children:e.jsx(l,{tone:"muted",children:i.ownershipDepth})}),o?e.jsxs(e.Fragment,{children:[e.jsx(s,{label:"Blend",children:e.jsx(l,{tone:"muted",children:`${o.fromCameraId??"current pose"} → ${o.toCameraId}`})}),e.jsx(s,{label:"Progress",children:e.jsx(l,{tone:"muted",children:`${Math.round(o.progress*100)}% · ${p?.toFixed(2)}s left`})})]}):null]})]})}const $="selection.inspector",G="Runtime Camera",N="camera",B=350;function M(n,t){return f(n,t)}function P({adapter:n,nodeId:t}){return e.jsx(v,{adapter:n,nodeId:t})}export{P as default,N as icon,M as match,B as order,$ as point,G as title};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-GIL7oGEO.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/three.module-D396a9Mn.js","assets/index-D2fNXpHa.css","assets/index-CZd9o7Lu.js","assets/pixi-primitive-DlWbUPN9.js","assets/extend-B-eOccUm.js","assets/index-bQE2NA0D.js","assets/pixi-react-root-factory-DYsznYRQ.js","assets/world-state-BWG-IcOd.js","assets/debug-registry-Dgvitx8M.js","assets/frame-selector-cache-cCeUbcjG.js","assets/game-input-seams-CIQdetRw.js","assets/seeded-random-i3mtgBKZ.js","assets/render-seed-DF4JHy7P.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{Q as i,_ as o,T as p}from"./index-GIL7oGEO.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./three.module-D396a9Mn.js";let e=null;async function a(){const t=await import(p);if(typeof t.resolveCanvasEntryAdapter!="function")throw new Error("The packaged runtime's synthetic canvas module did not export `resolveCanvasEntryAdapter` — see vite-plugin-module-doorways.ts.");if(typeof t.projectPixi!="object"||t.projectPixi===null)throw new Error("The packaged runtime's synthetic canvas module did not export `projectPixi` — see vite-plugin-module-doorways.ts.");return{resolve:t.resolveCanvasEntryAdapter,projectPixi:t.projectPixi}}async function w(){return await i()?(e||(e=a()),(await e).projectPixi):o(()=>import("./index-GIL7oGEO.js").then(t=>t.c9),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]))}async function P(t,r){if(!await i()){const{resolveCanvasEntryAdapter:n}=await o(async()=>{const{resolveCanvasEntryAdapter:s}=await import("./index-CZd9o7Lu.js");return{resolveCanvasEntryAdapter:s}},__vite__mapDeps([11,12,13,4,2,14,1,3,0,5,6,7,8,9,10,15,16,17,18,19,20,21]));return n(t,r)}return e||(e=a()),(await e).resolve(t,r)}export{P as resolveCanvasEntryAdapterForEditor,w as resolveCanvasPixiForEditor};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{iY as P,iZ as M,o as T,b as w,n as $,i_ as F,m as N,f as L,B as A,W as H}from"./index-GIL7oGEO.js";import{GAME_CONTRACT_SHAPE as V,GAME_LIFECYCLE_SHAPE as B,GAME_SYSTEMS_SHAPE as U}from"./game-contract-seams-a5YXejOu.js";function z(e,t){const o=[];let s=!0;for(const r of t.childIds){const i=e.hierarchy.node(r);!i||i.parentId!==t.id?s=!1:o.push(i)}return{valid:s,children:o}}function W(e){return typeof e=="object"&&e!==null&&e.isObject3D===!0}const Y=64;function K(e,t,o){const s=[];let r=null;for(const i of t){let n;try{n=e(i)}catch(a){r=`hierarchy.object3D threw on the walked node ${i}: ${a instanceof Error?a.message:String(a)}`;break}if(n!=null){if(!W(n)){r=`hierarchy.object3D answered the walked node ${i} with a ${typeof n} that is not an Object3D`;break}s.push({id:i,object:n})}}return o("editor.hierarchy.object3D",r?"fail":"pass",r??`hierarchy.object3D answered ${s.length} of ${t.length} walked node(s) with an Object3D and the rest with null`),{objects:r?[]:s}}function q(e,t,o,s){let r;try{r=e(o)}catch(i){return`hierarchy.idForObject3D threw on the object hierarchy.object3D returned for ${t}: ${i instanceof Error?i.message:String(i)}`}return r==null?null:typeof r!="string"||!s.has(r)?`hierarchy.idForObject3D answered ${JSON.stringify(r)} for the object hierarchy.object3D returned for ${t}, which is not a node this walk listed`:!0}function J(e,t,o,s){if(t.length===0){s("editor.hierarchy.idForObject3D","fail","hierarchy.idForObject3D could not be asked about anything: hierarchy.object3D handed back no Object3D for any walked node");return}let r=0,i=null;for(const{id:n,object:a}of t){const c=q(e,n,a,o);if(c===!0){r+=1;continue}if(c!==null){i=c;break}}!i&&r===0&&(i=`hierarchy.idForObject3D answered null for all ${t.length} object(s) hierarchy.object3D handed back, so nothing it returned could be checked against the walk`),s("editor.hierarchy.idForObject3D",i?"fail":"pass",i??`hierarchy.idForObject3D named ${r} of ${t.length} object(s) hierarchy.object3D returned with an id this walk listed`)}function X(e){const{adapter:t,subject:o,epoch:s,receipts:r,walked:i}=e,{object3D:n,idForObject3D:a}=t.hierarchy;if(!n)return;const c=(h,f,g)=>{r.push({seam:h,subject:o,epoch:s,stage:"operation",outcome:f,source:"conformance-probe",detail:g})},{objects:d}=K(n,i.slice(0,Y),c);a&&J(a,d,new Set(i),c)}function Z(e){const{adapter:t,subject:o,epoch:s,record:r,receipts:i}=e,n=r("editor.hierarchy.roots","operation",()=>t.hierarchy.roots(),l=>Array.isArray(l)&&l.length>0),a=Array.isArray(n)?n:[];let c=a.length>0;const d=new Set,h=[...a],f=1e4;for(;h.length>0&&d.size<f;){const l=h.shift();if(!l||d.has(l.id)){c=!1;continue}d.add(l.id);const b=r("editor.hierarchy.node","operation",()=>t.hierarchy.node(l.id),y=>y!==null&&typeof y=="object"&&y.id===l.id&&Array.isArray(y.childIds));if(!b){c=!1;continue}const S=z(t,b);c&&=S.valid,h.push(...S.children)}const g=h.length>0&&d.size>=f;return i.push({seam:"editor.hierarchy",subject:o,epoch:s,stage:"operation",outcome:c?"pass":"fail",source:"conformance-probe",detail:c?`hierarchy roots/node walked ${d.size} unique node(s) with reciprocal parent/child ids${g?` (walk budget reached with ${h.length} node(s) still pending — a larger tree, not a broken one)`:""}`:"hierarchy roots/node did not form a finite, non-empty, reciprocal tree"}),t.hierarchy.crossSurfaceStructureSignature&&r("editor.hierarchy.crossSurfaceStructureSignature","operation",()=>t.hierarchy.crossSurfaceStructureSignature?.(),l=>l===null||typeof l=="string"),X({adapter:t,subject:o,epoch:s,receipts:i,walked:[...d]}),a}function Q(e,t,o){if(e.selection&&(o("editor.selection.get","operation",()=>e.selection?.get(),Array.isArray),e.selection.resolve&&o("editor.selection.resolve","operation",()=>e.selection?.resolve?.(t),s=>s===null||typeof s=="object"&&typeof s.id=="string")),e.transforms){let s=!0;if(e.transforms.dimensions){const r=o("editor.transforms.dimensions","operation",()=>e.transforms?.dimensions?.(t),i=>i===null||i==="2d"||i==="3d");s=r==="2d"||r==="3d"}s&&(o("editor.transforms.get","operation",()=>e.transforms?.get(t),r=>{if(!r||typeof r!="object")return!1;const i=r;return["position","rotation","scale"].every(n=>{const a=i[n];return Array.isArray(a)&&a.every(Number.isFinite)})}),e.transforms.editability&&o("editor.transforms.editability","operation",()=>e.transforms?.editability?.(t,"position"),r=>r!==null&&typeof r=="object"&&typeof r.writable=="boolean"))}if(e.inspector){const s=o("editor.inspector.properties","operation",()=>e.inspector?.properties(t),Array.isArray);if(Array.isArray(s))for(const r of s)r&&typeof r=="object"&&typeof r.path=="string"&&(o("editor.inspector.get","operation",()=>e.inspector?.get(t,r.path)),e.inspector.editability&&o("editor.inspector.editability","operation",()=>e.inspector?.editability?.(t,r.path),i=>i!==null&&typeof i=="object"&&typeof i.writable=="boolean"))}}function ee(e,t,o,s){e.assetSubject&&(o("editor.assetSubject.get","operation",()=>e.assetSubject?.get(t)),e.assetSubject.entries&&o("editor.assetSubject.entries","operation",()=>e.assetSubject?.entries?.(),Array.isArray),s("editor.assetSubject")),e.related&&(o("editor.related.links","operation",()=>e.related?.links(t),Array.isArray),s("editor.related")),e.instances&&o("editor.instances.describe","operation",()=>e.instances?.describe(t)),e.truth&&(o("editor.truth.resolve","operation",()=>e.truth?.resolve(t,""),r=>r!==null&&typeof r=="object"),s("editor.truth"))}function te(e,t,o,s){e.pickable&&(o("editor.pickable.pick","operation",()=>e.pickable?.pick(0,0),r=>r===null||typeof r=="string"),e.pickable.candidates&&o("editor.pickable.candidates","operation",()=>e.pickable?.candidates?.(0,0),Array.isArray),s("editor.pickable")),e.rects&&(o("editor.rects.rect","operation",()=>e.rects?.rect(t),r=>{if(r===null)return!0;if(!r||typeof r!="object")return!1;const i=r;return["x","y","width","height"].every(n=>Number.isFinite(i[n]))}),e.rects.contextRects&&o("editor.rects.contextRects","operation",()=>e.rects?.contextRects?.(t)),e.rects.emptyContainers&&o("editor.rects.emptyContainers","operation",()=>e.rects?.emptyContainers?.(),Array.isArray),s("editor.rects")),e.colorSample&&(o("editor.colorSample.backgroundChainAt","operation",()=>e.colorSample?.backgroundChainAt(0,0),r=>r===null||Array.isArray(r)),s("editor.colorSample")),e.spatialHandles&&o("editor.spatialHandles.layers","operation",()=>e.spatialHandles?.layers(t),Array.isArray)}function oe(e,t,o){e.persistence&&(o("editor.persistence.isDirty","operation",()=>e.persistence?.isDirty(),s=>typeof s=="boolean"),e.persistence.lastError&&o("editor.persistence.lastError","operation",()=>e.persistence?.lastError?.(),s=>s===null||typeof s=="string")),e.text&&o("editor.text.get","operation",()=>e.text?.get(t)),e.stories&&(o("editor.stories.storiesFor","operation",()=>e.stories?.storiesFor(t),Array.isArray),o("editor.stories.active","operation",()=>e.stories?.active(t),s=>s===null||typeof s=="string")),e.assetDrop&&o("editor.assetDrop.accepts","operation",()=>e.assetDrop?.accepts(t,"__vgai_read_probe__"),s=>typeof s=="boolean")}function se(e){const{adapter:t,subject:o,epoch:s}=e,r=[],i=(d,h,f,g=()=>!0)=>{try{const l=f(),b=g(l);return r.push({seam:d,subject:o,epoch:s,stage:h,outcome:b?"pass":"fail",source:"conformance-probe",detail:b?`${d} returned a value accepted by its consumer-facing shape`:`${d} returned a value outside its consumer-facing shape`}),l}catch(l){r.push({seam:d,subject:o,epoch:s,stage:h,outcome:"fail",source:"conformance-probe",detail:`${d} threw while read: ${l instanceof Error?l.message:String(l)}`});return}},n=d=>{r.push({seam:d,subject:o,epoch:s,stage:"operation",outcome:"pass",source:"conformance-probe",detail:`${d} served a real read against the mounted projection`})},c=Z({adapter:t,subject:o,epoch:s,record:i,receipts:r})[0]?.id;return c&&(Q(t,c,i),ee(t,c,i,n),te(t,c,i,n),oe(t,c,i)),r}const v={missing:"the editor never reached this game’s scene, so hierarchy, inspector and gizmo have nothing to work on — not one object in it can be listed, selected, inspected or moved",fix:"make the game’s own runtime instance reachable to the host: a bare, un-rewritten `import 'three'` / `import 'pixi.js'` in the game's own source, so it resolves in the editor’s realm to the very instance the capture trap is installed on"},j={missing:"this root’s hierarchy does not agree with itself: the editor reached the world and can list it, but `hierarchy.node(id).parentId` and the parent’s own `childIds` name different nodes, so anything that walks UPWARD — reparent targets, paste anchors, ancestor selection — resolves against a tree the panel is not showing",fix:"make the adapter’s `hierarchy` reciprocal: for every id in a node’s `childIds`, `hierarchy.node(childId).parentId` must be that node’s own id. The report’s `detail` names which direction disagreed"},m={provenance:{missing:"the shell shows no provenance badge for this root, so nothing tells the author what the rows they are editing are backed by or how writable it is",fix:"the adapter must declare `provenance` (`AuthoringAdapter.provenance`)"},selection:{missing:"this root owns no selection, so a viewport hit cannot be resolved to the node the author actually means — a click lands on whatever raw id the substrate reports",fix:"the adapter must expose a `selection` provider (`AuthoringAdapter.selection`)"},transforms:{missing:"the gizmo cannot move, rotate or scale anything in this world",fix:"the adapter must expose a `transforms` provider (`AuthoringAdapter.transforms`) over the captured tree"},inspector:{missing:"the inspector shows no properties for a selected object in this world",fix:"the adapter must expose an `inspector` provider (`AuthoringAdapter.inspector`)"},assetSubject:{missing:"an authored node that IS an asset (inline SVG, an embedded image) cannot be opened in the Asset Editor from this root — it stays an opaque row",fix:"the adapter must expose an `assetSubject` provider (`AuthoringAdapter.assetSubject`)"},related:{missing:"the inspector offers no jump from a selected subject to the document that defines it (a component to its source, an instance to its story) — navigation stops at the row",fix:"the adapter must expose a `related` provider (`AuthoringAdapter.related`)"},instances:{missing:"the inspector cannot distinguish a prefab instance override from its component default, so authors cannot revert the instance or deliberately apply its value to the component",fix:"the adapter must expose an `instances` provider (`AuthoringAdapter.instances`) derived from native component source"},structure:{missing:"nothing in this world can be created, deleted, duplicated or reparented: the creation palette is empty and the hierarchy’s drag-drop and context-menu structure ops do nothing",fix:"the adapter must expose a `structure` provider (`AuthoringAdapter.structure`)"},persistence:{missing:"edits to this world are live-only — the mount carries no write-back route to the game’s own source, so nothing you change survives the session",fix:"the adapter must expose a `persistence` provider (`AuthoringAdapter.persistence`)"},pickable:{missing:"this root is not pickable in the viewport: clicking its content selects nothing, so it can only be reached from the hierarchy list",fix:"the adapter must expose a `pickable` provider (`AuthoringAdapter.pickable`)"},rects:{missing:"the editor has no screen geometry for this root’s nodes, so the selection overlay, the measure/snap guides and the empty-container hints cannot be drawn",fix:"the adapter must expose a `rects` provider (`AuthoringAdapter.rects`)"},boxEdit:{missing:"nothing in this root can be moved or resized by dragging it — its spatial values are reachable only by typing numbers into the inspector",fix:"the adapter must expose a `boxEdit` provider (`AuthoringAdapter.boxEdit`)"},text:{missing:"text in this root cannot be edited in place — double-click does nothing",fix:"the adapter must expose a `text` provider (`AuthoringAdapter.text`)"},colorSample:{missing:"the eyedropper has no fallback path on this root, so colour picking is dead wherever the browser has no native `EyeDropper`",fix:"the adapter must expose a `colorSample` provider (`AuthoringAdapter.colorSample`)"},stories:{missing:"no component of this root can be opened against a story: its prefabs never appear on the component board, and a designer cannot open, apply or isolate a design-time state",fix:"the adapter must expose a `stories` provider (`AuthoringAdapter.stories`) reading the root’s colocated portable CSF"},truth:{missing:"the editor cannot say where any object in this world came from, so an inspector edit has no source address to be written back to",fix:"the adapter must expose a `truth` provider (`AuthoringAdapter.truth`)"},spatialHandles:{missing:"component-owned spatial values in this world (an audio attenuation radius, a light cone, a collider extent) are invisible in the viewport and cannot be dragged",fix:"the adapter must expose a `spatialHandles` provider (`AuthoringAdapter.spatialHandles`)"},assetDrop:{missing:"nothing can be dropped into this world: a model, image or material dragged from the asset browser onto the viewport or the hierarchy is refused",fix:"the adapter must expose an `assetDrop` provider (`AuthoringAdapter.assetDrop`)"},subscribe:{missing:"this root never tells the editor its tree changed, so the hierarchy and inspector show a stale projection until something else happens to re-render them",fix:"the adapter must implement `subscribe` (`AuthoringAdapter.subscribe`)"}},re={three:{assetSubject:"the current asset-subject contract is an inline SVG embedded in a DOM source document; a Three scene-graph node has no such representation",rects:"screen rects are the DOM visual editor’s coordinate system; a three root is manipulated in world space through the gizmo",boxEdit:"the CSS box model has no three analogue — spatial editing here is the `transforms` provider plus the gizmo",text:"a three world has no editable element text body",colorSample:"the eyedropper’s CSS background-chain walk has no three analogue"},canvas:{assetSubject:"the current asset-subject contract is an inline SVG embedded in a DOM source document; a canvas display node has no such representation",text:"a canvas world has no editable element text body",colorSample:"the eyedropper’s CSS background-chain walk has no canvas analogue"},dom:{transforms:"a DOM root has no 3D transform; its spatial editing is the `boxEdit` provider, which is reported on its own row",spatialHandles:"world-space component guides have no DOM analogue — a DOM root’s geometry is its box, reported by `rects`/`boxEdit`"}},ie=Object.freeze(Object.fromEntries(w.map(e=>[e,!1]))),ne=Object.freeze({captured:!1,providers:ie});function Je(e,t="root"){const{authoring:o}=e;return o?ae(o,t):ne}function ae(e,t="root"){const o=P(e),s=M({adapter:e,subject:t,epoch:o,receipts:se({adapter:e,subject:t,epoch:o})}),r={...T(e)},i=e.childAdapters?.();return i&&(r.pickable||=i.some(n=>n.adapter.pickable!==void 0),r.provenance||=i.some(n=>n.adapter.provenance!==void 0)),{captured:!0,providers:r,providerEvidence:s.providers,captureEvidence:s.hierarchyWalk}}function C(e,t){return e===null?null:re[e]?.[t]??null}function ce(e,t=null){return w.filter(o=>!e.providers[o]&&C(t,o)===null)}const de="capability-gap";function Xe(e,t,o,s=null){const r=[];t.captured||r.push(` ✗ capture — ${v.missing}
|
|
2
|
+
fix: ${v.fix}`);for(const i of ce(t,s))r.push(` ✗ ${i} — ${m[i].missing}
|
|
3
|
+
fix: ${m[i].fix}`);return r.length===0?null:[`${de} world "${e}" — ${r.length} editor capabilit${r.length===1?"y is":"ies are"} missing (${o}). This world is not authorable the way a native one is:`,...r].join(`
|
|
4
|
+
`)}const k=new WeakMap;let le=1;function he(e){const t=k.get(e);if(t)return t;const o=`contract-${le++}`;return k.set(e,o),o}function ue(e){const t=e.subject??"game",o=e.epoch??he(e.contract),s=[...$({prefix:"contract",value:e.contract,shape:V,subject:t,epoch:o}),...$({prefix:"contract.lifecycle",value:e.contract.lifecycle,shape:B,subject:t,epoch:o}),...$({prefix:"contract.systems",value:e.contract.systems,shape:U,subject:t,epoch:o}),...F.receipts({subject:t,epoch:o}),...e.receipts??[]],r=(i,n)=>N({seam:i,subject:t,epoch:o,required:n,receipts:s});return{root:r("contract.root","effect"),start:r("contract.lifecycle.start","effect"),pause:r("contract.lifecycle.pause","effect"),resume:r("contract.lifecycle.resume","effect"),systems:r("contract.systems","operation")}}class p extends Error{constructor(t){super(`coverage-accounting: ${t}`),this.name="CoverageReconcileError"}}function pe(e){const t=e.indexOf(".");return t===-1?e:e.slice(0,t)}function fe(e){return e?/^\[([^\]]+)\] /.exec(e)?.[1]??null:null}function me(e){return e.subject!==void 0&&e.subject!==null&&e.subject!==""?e.subject:fe(e.detail)}function I(e,t){const o=e??{gap:!1,applicable:!1};return t==="na"?o:{gap:o.gap||t==="gap",applicable:!0}}function ge(e,t){const o=new Map;for(const i of t)o.set(i.seam,I(o.get(i.seam),i.status));let s=0,r=0;for(const i of o.values())i.applicable&&(s+=1,i.gap&&(r+=1));return{family:e,capabilities:s,capabilityGaps:r,rootInstances:t.length}}function O(e){const t=new Set,o=new Map;for(const a of e){const c=me(a);c!==null&&t.add(c);const d=pe(a.seam),h=o.get(d);h?h.push(a):o.set(d,[a])}const s=[...o].map(([a,c])=>ge(a,c)),r=new Map;for(const a of e)r.set(a.seam,I(r.get(a.seam),a.status));let i=0,n=0;for(const a of r.values())a.applicable&&(i+=1,a.gap&&(n+=1));return{capabilities:i,capabilityGaps:n,rootsGraded:t.size,rootInstances:e.length,families:s}}function be(e){return`${e.capabilityGaps} of ${e.capabilities} capabilities are MISSING`}function ye(e){return`${e.rootsGraded>0?`${e.rootsGraded} roots graded; `:""}${e.rootInstances} root-instances`}function we(e,t={}){const o=t.rootsGraded??0,s=e.rootInstances!==e.capabilities||o>1,r=`${e.family} ${e.capabilityGaps} of ${e.capabilities} capabilities`;if(!s)return r;const i=o>1?`${o} roots graded; `:"";return`${r} (${i}${e.rootInstances} root-instances)`}function ve(e,t){return e.family==="editor"?{rootsGraded:t.rootsGraded}:{}}function $e(e,t){const o=t.families.map(s=>we(s,ve(s,t))).join(", ");return`${e} — ${be(t)} (${ye(t)}: ${o}).`}function xe(e){const t=/(\d+) of (\d+) capabilities are MISSING/.exec(e);if(!t)throw new p('headline does not state the capabilities unit (missing "N of M capabilities are MISSING")');const o=/(\d+) roots graded/.exec(e),s=/(\d+) root-instances/.exec(e);if(!s)throw new p("headline does not state root-instances");return{capabilityGaps:Number(t[1]),capabilities:Number(t[2]),rootsGraded:o?Number(o[1]):0,rootInstances:Number(s[1])}}function Ae(e,t){const o=O(e),s=xe(t);if(s.capabilityGaps!==o.capabilityGaps)throw new p(`headline capability-gaps ${s.capabilityGaps} !== row-derived ${o.capabilityGaps}`);if(s.capabilities!==o.capabilities)throw new p(`headline capabilities ${s.capabilities} !== row-derived ${o.capabilities}`);if(s.rootInstances!==o.rootInstances)throw new p(`headline root-instances ${s.rootInstances} !== row-derived ${o.rootInstances}`);if(s.rootsGraded!==o.rootsGraded)throw new p(`headline roots-graded ${s.rootsGraded} !== row-derived ${o.rootsGraded}`);const r=o.families.reduce((n,a)=>n+a.rootInstances,0);if(r!==o.rootInstances)throw new p(`family root-instances ${r} !== ${o.rootInstances}`);const i=o.families.reduce((n,a)=>n+a.capabilities,0);if(i!==o.capabilities)throw new p(`family capabilities ${i} !== ${o.capabilities}`)}const Se={export:!0},Ze=Object.keys(Se),Qe=Object.keys(L);function et(e){const t=e?.systems;return{declared:e!==null,root:e?.root!==void 0,start:e?.lifecycle?.start!==void 0,pause:e?.lifecycle?.pause!==void 0,resume:e?.lifecycle?.resume!==void 0,systems:t?{commands:(t.commands??[]).map(o=>o.name),state:(t.state??[]).map(o=>o.name)}:null,proof:e?ue({contract:e}):null}}const je="a game whose bytes must stay unmodified declares it from a host-side carrier instead — a contract shim beside the game (`ingest.contractShim` in its vgai.project.json, injected ahead of the game`s entry module; see public/ingest/simcity/vgai.shim.js) or a recorded patch",u=e=>`declare ${e} in the game's own entry; ${je}`;function ke(e){const t=e.reachMechanism?` — ${e.reachMechanism}`:"";if(e.reach===null)return[{seam:"editor.capture",status:"info",detail:"no mount has measured what the editor reaches on this root yet"},...w.map(i=>({seam:`editor.${i}`,status:"info",detail:`no mount has measured whether this root exposes ${i} yet`}))];const o=e.reach,s=o.captured?o.captureEvidence?.state==="verified"?{seam:"editor.capture",status:"ok",detail:`the editor reached this root's own runtime and exercised its hierarchy — ${o.captureEvidence.detail}${t}`}:o.captureEvidence?.state==="failed"?{seam:"editor.capture",status:"gap",detail:`an authoring object was captured, but its hierarchy seam failed — ${o.captureEvidence.detail}${t}`,missing:j.missing,fix:j.fix}:{seam:"editor.capture",status:"info",detail:`an authoring object was captured, but no current-epoch hierarchy operation proves it projects this root's runtime${o.captureEvidence?` — ${o.captureEvidence.detail}`:""}${t}`}:{seam:"editor.capture",status:"gap",detail:`the editor never reached this root's runtime${t}`,missing:v.missing,fix:v.fix},r=w.map(i=>{const n=`editor.${i}`,a=o.providerEvidence?.[i],c=C(e.surface,i);return!o.providers[i]&&c!==null?{seam:n,status:"na",detail:`not applicable to a ${e.surface} root — ${c}`}:a?.state==="verified"?{seam:n,status:"ok",detail:a.detail}:a?.state==="failed"?{seam:n,status:"gap",detail:`${i} is exposed but malformed or failed — ${a.detail}${t}`,missing:m[i].missing,fix:m[i].fix}:o.providers[i]?{seam:n,status:"info",detail:a?.detail??`this root exposes ${i}, but no operational proof was recorded`}:{seam:n,status:"gap",detail:`this root exposes no ${i} provider${t}`,missing:m[i].missing,fix:m[i].fix}});return[s,...r]}function Ee(e){const t=e.loopReason?` — ${e.loopReason}`:"",{pause:o,resume:s}=e.contract;return o&&s&&e.contract.proof?.pause.state==="verified"&&e.contract.proof.resume.state==="verified"?{seam:"loop",status:"ok",detail:`the game's own declared lifecycle.pause + resume control its frames, and that is what ▶/⏸ call${e.loopReason?` (the host's fallback gate, unused here, reports: ${e.loopReason})`:""}`}:e.loop?.verdict==="gated"?{seam:"loop",status:"ok",detail:`gated${t}`}:e.loop?.verdict==="self-driven"?{seam:"loop",status:"gap",detail:`self-driven${t}`,missing:"nothing in this editor controls the game's frames: ▶/⏸ and Step do not stop it, and Edit mode cannot be quiet — it keeps simulating while you author",fix:u("window.vgaiGame.lifecycle.pause + resume")}:{seam:"loop",status:"info",detail:e.loopReason??"no loop verdict has been measured yet — the probe runs at the first pause"}}function Re(e){return e.contract.root?e.contract.proof?.root.state==="failed"?{seam:"contract.root",status:"gap",detail:`the game declares a root, but the seam failed — ${e.contract.proof.root.detail}`,missing:"the host cannot trust that the declared element owns the game DOM rather than an unrelated or detached subtree",fix:u("window.vgaiGame.root")}:{seam:"contract.root",status:e.contract.proof?.root.state==="verified"?"ok":"info",detail:e.contract.proof?.root.state==="verified"?e.contract.proof.root.detail:"the game declares a root element, but no consumer has proved it owns the mounted game DOM"}:{seam:"contract.root",status:"gap",detail:e.contract.declared?"a contract is declared, but it names no root element":"no game→host contract is declared at all",missing:"the host adopts the bare canvas, so any DOM this game owns beside it (HUD, overlays, portals) is stranded at page level over the editor chrome instead of living in the game pane",fix:u("window.vgaiGame.root")}}function De(e){return e.contract.start?e.contract.proof?.start.state==="failed"?{seam:"contract.lifecycle.start",status:"gap",detail:`lifecycle.start is declared but failed — ${e.contract.proof.start.detail}`,missing:"the mount cannot prove it starts cold and enters a session only when Play requests one",fix:u("window.vgaiGame.lifecycle.start")}:{seam:"contract.lifecycle.start",status:e.contract.proof?.start.state==="verified"?"ok":"info",detail:e.contract.proof?.start.state==="verified"?e.contract.proof.start.detail:"the game declares lifecycle.start, but no current-epoch effect proves that ▶ starts the session"}:{seam:"contract.lifecycle.start",status:"gap",detail:e.contract.declared?"a contract is declared, but it names no lifecycle.start":"no game→host contract is declared at all",missing:"the mount cannot be COLD: this game runs its session side-effects (backend connections, audio, narrative) as it loads, so opening it in the editor starts playing it, and ▶ is a wire event the game may ignore",fix:u("window.vgaiGame.lifecycle.start")}}function E(e){return e.loop?.verdict==="gated"?"pausing this game is the host's outside-in loop gate only. That gate is MEASURED to hold the work this game schedules, so ⏸ does stop it — but a host reaching in is not the game quieting itself: anything it drives from outside its own scheduling (a worker, a socket, a media callback) keeps running, and it gets no chance to stop its audio, drop its connections, or checkpoint before the pause":e.loop?.verdict==="self-driven"?"pausing this game is the host's outside-in loop gate only, and that gate is MEASURED not to control this loop — so ⏸ may freeze the picture while the game keeps running underneath it":"pausing this game is the host's outside-in loop gate only, and no probe has measured whether that gate reaches this loop yet — so ⏸ may freeze the picture while the game keeps running underneath it"}function Ce(e){const{pause:t,resume:o,declared:s}=e.contract;if(t&&o){const i=e.contract.proof?.pause.state==="verified",n=e.contract.proof?.resume.state==="verified",a=[e.contract.proof?.pause,e.contract.proof?.resume].find(c=>c?.state==="failed");return a?{seam:"contract.lifecycle.pause",status:"gap",detail:`pause/resume is declared but failed — ${a.detail}`,missing:E(e),fix:u("window.vgaiGame.lifecycle.pause + resume")}:{seam:"contract.lifecycle.pause",status:i&&n?"ok":"info",detail:i&&n?"the mounted lifecycle exercised both declared pause + resume effects":"the game declares pause + resume, but declaration alone does not prove either changes its frames"}}const r=Ie(t,o);return{seam:"contract.lifecycle.pause",status:"gap",detail:r?`the contract declares ${r} — the host needs both to hand control back`:s?"a contract is declared, but it names no lifecycle.pause/resume":"no game→host contract is declared at all",missing:E(e),fix:u("window.vgaiGame.lifecycle.pause + resume")}}function Ie(e,t){return e?"lifecycle.pause without a resume":t?"lifecycle.resume without a pause":null}function G(e){const t=e?.byKind;if(!t)return"";const o=H.filter(s=>(t[s]??0)>0).map(s=>`${s} ${t[s]}`);return o.length>0?` (by write lane: ${o.join(", ")})`:""}function Oe(e){return{seam:"persistence",status:"gap",detail:`this game's base is writable, but NONE of the ${e.total} object(s) the editor projects from the mounted world has a source address — every edit stays ${e.destination}`+G(e),missing:"nothing you change here survives the session: the base may be written, but no line of this game's own source is known to address any object in it",fix:"serve this game's own source through the editor's authoring transform so its elements carry source stamps (a JSX world), or give it construction sites the creation-site index can see (a `new` expression in the game's own served module)"}}function Ge(e,t,o,s){const r=e.recorder??"whatever records this folder",i=t?`; ${t.addressable} of ${t.total} projected object(s) resolve to one, and the rest are runtime or library parts with no source of their own${G(t)}`:"",n=o!==null&&o.state!=="ready",a=_e(o);return s?.state==="failed"?{seam:"persistence",status:"gap",detail:`the write path is addressable, but its round trip failed — ${s.detail}`,missing:"the editor can issue a write but cannot trust that the game source and a cold remount reflect it",fix:"fix the failing write receipt named above; provider presence and a write acknowledgement are not persistence"}:{seam:"persistence",status:n?"gap":s?.state==="verified"?"ok":"info",detail:`this game's base is writable, so an edit can be written back to the line of its own source that built the object${i}${a}; the diff is recorded in ${r}`+(s?.state==="verified"?`; ${s.detail}`:"; no current-epoch cold-remount round trip has verified that path"),...n?{missing:"every object this game places from its own level data — its whole placed cargo — is unwritable while that writer is unreachable",fix:`make \`ingest.dataWriter\` loadable: ${o.reason??"it has not resolved yet"}`}:{}}}function _e(e){if(e===null)return"";if(e.state==="ready")return`, and an object the game anchored to a record in ${e.dataFile} is written back into that file`;const t=e.reason?` (${e.reason})`:"";return`, but its declared data writer is ${e.state}${t}, so an object anchored to a level-data record stays live-only`}function Pe(e){const{ownership:t}=e;if(t===null)return{seam:"persistence",status:"info",detail:"the editor has not asked who owns this game's source yet — until it answers, edits stay live-only"};const o=e.writeReach;return t.writable&&o!==null&&o.addressable===0?Oe(o):t.writable?Ge(t,o,e.dataWriter,e.persistenceProof):{seam:"persistence",status:"gap",detail:`edits are live-only — ${t.reason??"this game's source is not writable"}`,missing:"nothing you change survives the session: no source write-back, and by doctrine no sidecar will ever be invented to fake one",fix:"open this game from a folder the editor can write — creation-site persistence needs a writable base (the server decides, not the editor)"}}function R(e,t){return`${t.length} ${e}(s)${t.length>0?`: ${t.join(", ")}`:""}`}function Me(e){const{systems:t,declared:o}=e.contract,s=t?.commands??[],r=t?.state??[];return s.length>0||r.length>0?e.contract.proof?.systems.state==="failed"?{seam:"systems",status:"gap",detail:`the systems carrier is declared but failed — ${e.contract.proof.systems.detail}`,missing:"`game.commands()` / `game.providers()` cannot safely enumerate or invoke this carrier",fix:u("window.vgaiGame.systems (commands + state)")}:{seam:"systems",status:e.contract.proof?.systems.state==="verified"?"ok":"info",detail:e.contract.proof?.systems.state==="verified"?e.contract.proof.systems.detail:`the game declares ${R("command",s)}; ${R("state provider",r)}, but the agent door has not operationally enumerated/read them in this epoch`}:{seam:"systems",status:"gap",detail:t?"the contract declares a systems surface that names no commands and no state providers":o?"a contract is declared, but it names no systems":"no game→host contract is declared at all",missing:`this game exposes no verbs and no state to drive or read it with: \`game.commands()\` and \`game.providers()\` enumerate nothing, so there is no \`game.command(...)\` to play it from ${A("eval")} and no \`game.state(...)\` for ${A("status")} to see anything of what it is doing`,fix:u("window.vgaiGame.systems (commands + state)")}}const x={physics:"the editor cannot freeze a simulated body while the gizmo edits it, so a physics-driven object's pose is overwritten the next frame",networking:"the Network inspector shows nothing: no connection state, no room, no peers, and no authority answer to keep a server-owned object inspect-only",navigation:"the Navigation panel has no navmesh to report, query a path through, or draw",audio:"⏸ cannot silence this world's audio and the Audio debugger has no graph, transport, meters or events to show",camera:"the selected-camera Inspector cannot report which native camera/controller is active or whether a blend is in progress",get debug(){return`\`game.commands()\` and \`game.providers()\` enumerate nothing, so there is no verb to drive this game with and no state read for ${A("status")} to see`},renderDebug:"the Frame debugger cannot capture a frame and the Profiler has no render-memory snapshot"};function Te(e){return e==="renderDebug"?"nothing a game declares reaches this slot — the host derives it from the captured renderer's own WebGL2 context (`ingest/ingest-render-debug.ts`), so a mount whose renderer has no such context (a stub context) can never have it":u(e==="debug"?"window.vgaiGame.systems (commands + state)":`window.vgaiGame.systems.systemAdapters.${e}`)}function Fe(e){const t=`system.${e.slot}`;return e.state==="bound"?e.proof?.state==="failed"?{seam:t,status:"gap",detail:`a ${e.slot} adapter is bound, but its contract failed — ${e.proof.detail}`,missing:x[e.slot],fix:`fix the bound ${e.slot} adapter; registration is not evidence that its operations work`}:e.proof?.state!=="verified"?{seam:t,status:"info",detail:e.proof?.detail??`a ${e.slot} adapter is installed, but no current-epoch operational proof was recorded`}:{seam:t,status:"ok",detail:`a ${e.slot} adapter is installed in the editor's live system registry`}:e.state==="empty"?e.attestedBy==="host"?{seam:t,status:"info",attestedBy:"host",detail:`derived-empty (the HOST's observation, not the game's answer) — nothing filled ${e.slot} on a live mount: ${e.evidence??""}. The game has not itself declared this absence; \`absent(reason)\` in its \`systems\` table is what turns the host's inference into the game's own statement.`}:{seam:t,status:"info",attestedBy:"game",detail:`declared-empty (an attestation, not a mechanically verified absence) — the game answers that it has no ${e.slot}: ${e.evidence??""}`}:e.state==="malformed"?{seam:t,status:"gap",detail:`the game declared a ${e.slot} slot that could not be honoured — ${e.evidence??""}`,missing:x[e.slot],fix:"fix the declaration to engage with the row's evidence — the detail above names the specific conflict (a declared absence must name a contradicting shipped dependency; a declared adapter must be a real adapter or a { present: false, evidence } record)"}:{seam:t,status:"gap",detail:`no ${e.slot} adapter is installed and the game declares no answer for the slot`,missing:x[e.slot],fix:e.fix??Te(e.slot)}}function Ne(e){const t=`project.${e.slot}`;return e.state==="present"?Le(e,t):{seam:t,status:e.state==="absent"?"gap":"info",detail:e.evidence,...e.missing?{missing:e.missing}:{},...e.fix?{fix:e.fix}:{}}}function Le(e,t){if(e.proof?.state==="failed")return{seam:t,status:"gap",detail:`${e.evidence}; the real verb failed — ${e.proof.detail}`,...e.missing?{missing:e.missing}:{},...e.fix?{fix:e.fix}:{}};const o=e.proof?.state==="verified";return{seam:t,status:o?"ok":"info",detail:o?`${e.evidence}; ${e.proof?.detail}`:`${e.evidence}; declaration is only a precondition — this verb has not completed successfully in the current evidence run`}}function He(e){const t=e.authoringSurface;if(!t)return[];const o=t.sceneDocuments===0?{seam:"authoring.scenes",status:"gap",detail:"the adapter scene table names no authorable scene with a document to open",missing:"Edit has no scene tab — a captured runtime can still be healthy while the authoring surface is empty",fix:"declare authorable scene-table entries with a mountable source or root region so planSceneDocument produces a document"}:t.availableIsolationDocuments<t.isolationDocuments?{seam:"authoring.scenes",status:"gap",detail:`the table plans ${t.isolationDocuments} isolation document(s) but only ${t.availableIsolationDocuments} are available to open`,missing:"declared scenes are absent from the Content catalog",fix:"register every planned isolation document in the available-document catalog"}:{seam:"authoring.scenes",status:"ok",detail:`${t.sceneDocuments} scene document(s) planned`+(t.isolationDocuments>0?`, ${t.openIsolationDocuments} of ${t.isolationDocuments} isolation tab(s) open, ${t.availableIsolationDocuments} available from Content`:"")},s=t.pieces===0&&t.sceneEntries===0?{seam:"authoring.pieces",status:"na",detail:"the scene table declares no scenes, so there is no surface to place prefabs on (a models or website project)"}:t.pieces===0?{seam:"authoring.pieces",status:"gap",detail:"the resolved scene table contains no prefab entries",missing:"Content has no project pieces and the component board has nothing to show",fix:"add portable CSF stories inside the adapter region include globs so prefabsFromStories resolves entries"}:{seam:"authoring.pieces",status:"ok",detail:`${t.pieces} prefab(s) resolved from the scene table`};return[o,s]}function Ve(e){return{worldId:e.worldId,reach:e.reach??null,surface:e.surface??null,reachMechanism:e.reachMechanism??null,loop:e.loop??null,loopReason:e.loopReason??null,contract:e.contract??{declared:!1,root:!1,start:!1,pause:!1,resume:!1,systems:null},ownership:e.ownership??null,writeReach:e.writeReach??null,dataWriter:e.dataWriter??null,persistenceProof:e.persistenceProof,systemAdapters:e.systemAdapters??[],projectVerbs:e.projectVerbs??[],authoringSurface:e.authoringSurface??null}}function Be(e,t){const o="reach"in e||"surface"in e||"reachMechanism"in e,s="loop"in e||"loopReason"in e||"contract"in e,r="contract"in e,i="ownership"in e||"writeReach"in e||"dataWriter"in e||"persistenceProof"in e;return[...o?ke(t):[],...s?[Ee(t)]:[],...r?[Re(t),De(t),Ce(t)]:[],...i?[Pe(t)]:[],...r?[Me(t)]:[],...t.systemAdapters.map(Fe),...t.projectVerbs.map(Ne),..."authoringSurface"in e?He(t):[]]}function tt(e){const t=Be(e,Ve(e));return{rows:t,summary:{worldId:e.worldId,rows:t.length,gaps:t.filter(o=>o.status==="gap").length,ok:t.filter(o=>o.status==="ok").length,na:t.filter(o=>o.status==="na").length,info:t.filter(o=>o.status==="info").length}}}function _(e,t){if(e===t)return!0;for(let o=0;o<e.children.length;o++){const s=e.children[o];if(s&&_(s,t))return!0}return!1}function ot(e){const t=[],o=(i,n)=>{if(i.tagName.toLowerCase()==="canvas"){const a=i.getBoundingClientRect();t.push({element:i,depth:n,area:Math.max(0,a.right-a.left)*Math.max(0,a.bottom-a.top)})}for(let a=0;a<i.children.length;a++){const c=i.children[a];c&&o(c,n+1)}};o(e,0);const s=t.filter(i=>i.area>0),r=s.length>0?s:t;return r.sort((i,n)=>n.area-i.area||i.depth-n.depth),r[0]?.element??null}const Ue=new Set(["script","style","link","meta","base","title","noscript"]);function st(e,t){const o=[],s=r=>{for(let i=0;i<r.children.length;i++){const n=r.children[i];n&&(_(n,t)?s(n):Ue.has(n.tagName.toLowerCase())||o.push(n))}};return s(e),o}const ze={gap:"✗",ok:"✓",na:"–",info:"·"};function D(e){const t=[` ${ze[e.status]} ${e.seam} — ${e.detail}`];return e.missing&&t.push(` missing: ${e.missing}`),e.fix&&t.push(` fix: ${e.fix}`),t.join(`
|
|
5
|
+
`)}function We(e,t){const o=$e(e,O(t));return Ae(t,o),o}function rt(e,t){const o=t.flatMap(s=>s.report.rows.map(r=>s.label?{...r,detail:`[${s.label}] ${r.detail}`}:r));return{rows:o,summary:{worldId:e,rows:o.length,gaps:o.filter(s=>s.status==="gap").length,ok:o.filter(s=>s.status==="ok").length,na:o.filter(s=>s.status==="na").length,info:o.filter(s=>s.status==="info").length}}}function Ye(e,t){const{summary:o}=e,s=t??`root coverage "${o.worldId}"`,r=[],i=e.rows.filter(a=>a.status==="gap"),n=e.rows.filter(a=>a.status!=="gap");return i.length>0&&r.push({level:"warn",message:[`${We(s,e.rows)} This game mounts, but the editor cannot do the following with it:`,...i.map(D)].join(`
|
|
6
|
+
`)}),n.length>0&&r.push({level:"info",message:[`${s} — ${o.ok} seam(s) present, ${o.na} not applicable to this surface, ${o.info} measured-only:`,...n.map(D)].join(`
|
|
7
|
+
`)}),r}function it(e){let t=null;return{report(o,s){if(t===o)return!1;t=o;for(const r of Ye(s))e(r);return!0}}}export{Ze as P,Qe as S,ae as a,Ye as b,it as c,tt as d,et as e,Xe as f,he as g,ot as h,st as i,Je as m,rt as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function t(r){return Math.round(r*1e3)}function p(r,n){const s=[];s.push({name:"process_name",cat:"__metadata",ph:"M",ts:0,dur:0,pid:1,tid:1,args:{name:n.processName}}),s.push({name:"thread_name",cat:"__metadata",ph:"M",ts:0,dur:0,pid:1,tid:1,args:{name:n.threadName}});for(const a of r){const d=a.timestamp-a.cpuMs,m=t(d);s.push({name:`frame ${a.id}`,cat:"frame",ph:"X",ts:m,dur:t(a.cpuMs),pid:1,tid:1,args:{id:a.id,drawCalls:a.render.drawCalls,triangles:a.render.triangles}});for(const e of a.phases)s.push({name:e.name,cat:"phase",ph:"X",ts:t(d+(e.startMs??0)),dur:t(e.ms),pid:1,tid:1});for(const e of a.systems)s.push({name:e.name,cat:"system",ph:"X",ts:t(d+e.startMs),dur:t(e.ms),pid:1,tid:1,args:{phase:e.phase}});s.push({name:"render",cat:"counter",ph:"C",ts:m,dur:0,pid:1,tid:1,args:{drawCalls:a.render.drawCalls,triangles:a.render.triangles}})}return{traceEvents:s,displayTimeUnit:"ms",otherData:{version:2,processName:n.processName,threadName:n.threadName,frameCount:r.length}}}export{p as buildChromeTrace};
|