@iwsdk/core 0.5.3 → 1.0.0-rc.1
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/README.md +22 -1
- package/dist/asset/asset-manager.d.ts.map +1 -1
- package/dist/asset/asset-manager.js +3 -2
- package/dist/asset/asset-manager.js.map +1 -1
- package/dist/asset/cache-manager.js.map +1 -1
- package/dist/asset/loaders/audio-loader.js.map +1 -1
- package/dist/asset/loaders/cached-asset-load.js.map +1 -1
- package/dist/asset/loaders/gltf-loader.js.map +1 -1
- package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
- package/dist/asset/loaders/texture-loader.js.map +1 -1
- package/dist/asset/loaders/uikitml-loader.js.map +1 -1
- package/dist/audio/audio-pool.js.map +1 -1
- package/dist/audio/audio-system.js.map +1 -1
- package/dist/audio/audio-utils.js.map +1 -1
- package/dist/audio/audio.js.map +1 -1
- package/dist/camera/camera-source.js.map +1 -1
- package/dist/camera/camera-system.d.ts +7 -3
- package/dist/camera/camera-system.d.ts.map +1 -1
- package/dist/camera/camera-system.js +81 -50
- package/dist/camera/camera-system.js.map +1 -1
- package/dist/camera/camera-utils.d.ts +5 -0
- package/dist/camera/camera-utils.d.ts.map +1 -1
- package/dist/camera/camera-utils.js +8 -1
- package/dist/camera/camera-utils.js.map +1 -1
- package/dist/camera/types.js.map +1 -1
- package/dist/depth/depth-occludable.js.map +1 -1
- package/dist/depth/depth-sensing-system.d.ts +3 -0
- package/dist/depth/depth-sensing-system.d.ts.map +1 -1
- package/dist/depth/depth-sensing-system.js +55 -1
- package/dist/depth/depth-sensing-system.js.map +1 -1
- package/dist/depth/depth-textures.js.map +1 -1
- package/dist/depth/occlusion/preprocessing-pass.js.map +1 -1
- package/dist/depth/occlusion/preprocessing-shader.glsl.js.map +1 -1
- package/dist/ecs/builtin-components.js.map +1 -1
- package/dist/ecs/component-editor-metadata.js.map +1 -1
- package/dist/ecs/component-manifest.js.map +1 -1
- package/dist/ecs/entity.js.map +1 -1
- package/dist/ecs/system.js.map +1 -1
- package/dist/ecs/world.d.ts +2 -0
- package/dist/ecs/world.d.ts.map +1 -1
- package/dist/ecs/world.js +4 -0
- package/dist/ecs/world.js.map +1 -1
- package/dist/environment/dome-gradient.js.map +1 -1
- package/dist/environment/dome-texture.js.map +1 -1
- package/dist/environment/environment-system.js.map +1 -1
- package/dist/environment/gradient-environment.js.map +1 -1
- package/dist/environment/ibl-gradient.js.map +1 -1
- package/dist/environment/ibl-texture.js.map +1 -1
- package/dist/environment/scene-ar-environment.js.map +1 -1
- package/dist/environment-raycast/environment-raycast.js.map +1 -1
- package/dist/environment-raycast/raycast-target.js.map +1 -1
- package/dist/grab/distance-grabbable.d.ts +5 -0
- package/dist/grab/distance-grabbable.d.ts.map +1 -1
- package/dist/grab/distance-grabbable.js +5 -0
- package/dist/grab/distance-grabbable.js.map +1 -1
- package/dist/grab/grab-helpers.js.map +1 -1
- package/dist/grab/grab-system.js.map +1 -1
- package/dist/grab/grab-warnings.js.map +1 -1
- package/dist/grab/grabbed.js.map +1 -1
- package/dist/grab/handles.d.ts +6 -0
- package/dist/grab/handles.d.ts.map +1 -1
- package/dist/grab/handles.js +46 -12
- package/dist/grab/handles.js.map +1 -1
- package/dist/grab/index.js.map +1 -1
- package/dist/grab/one-hand-grabbable.d.ts +5 -0
- package/dist/grab/one-hand-grabbable.d.ts.map +1 -1
- package/dist/grab/one-hand-grabbable.js +5 -0
- package/dist/grab/one-hand-grabbable.js.map +1 -1
- package/dist/grab/pointer-events-patch.js.map +1 -1
- package/dist/grab/two-hands-grabbable.d.ts +5 -0
- package/dist/grab/two-hands-grabbable.d.ts.map +1 -1
- package/dist/grab/two-hands-grabbable.js +5 -0
- package/dist/grab/two-hands-grabbable.js.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/init/browser-camera.js.map +1 -1
- package/dist/init/index.d.ts +2 -2
- package/dist/init/index.d.ts.map +1 -1
- package/dist/init/player-camera.js.map +1 -1
- package/dist/init/session-grant.d.ts +34 -0
- package/dist/init/session-grant.d.ts.map +1 -0
- package/dist/init/session-grant.js +89 -0
- package/dist/init/session-grant.js.map +1 -0
- package/dist/init/world-initializer.d.ts +87 -4
- package/dist/init/world-initializer.d.ts.map +1 -1
- package/dist/init/world-initializer.js +45 -41
- package/dist/init/world-initializer.js.map +1 -1
- package/dist/init/xr.d.ts +19 -0
- package/dist/init/xr.d.ts.map +1 -1
- package/dist/init/xr.js +136 -41
- package/dist/init/xr.js.map +1 -1
- package/dist/input/canvas-pointer-system.d.ts +2 -0
- package/dist/input/canvas-pointer-system.d.ts.map +1 -1
- package/dist/input/canvas-pointer-system.js +33 -13
- package/dist/input/canvas-pointer-system.js.map +1 -1
- package/dist/input/input-actions.js.map +1 -1
- package/dist/input/input-manager.js.map +1 -1
- package/dist/input/input-system.d.ts.map +1 -1
- package/dist/input/input-system.js +5 -2
- package/dist/input/input-system.js.map +1 -1
- package/dist/input/state-tags.js.map +1 -1
- package/dist/input/stateful-browser-gamepad.js.map +1 -1
- package/dist/input/stateful-keyboard.js.map +1 -1
- package/dist/layers/xr-cylinder-layer.d.ts +2 -1
- package/dist/layers/xr-cylinder-layer.d.ts.map +1 -1
- package/dist/layers/xr-cylinder-layer.js +2 -1
- package/dist/layers/xr-cylinder-layer.js.map +1 -1
- package/dist/layers/xr-layer-init.d.ts +19 -0
- package/dist/layers/xr-layer-init.d.ts.map +1 -0
- package/dist/layers/xr-layer-init.js +20 -0
- package/dist/layers/xr-layer-init.js.map +1 -0
- package/dist/layers/xr-layer-state.js.map +1 -1
- package/dist/layers/xr-layer-system.d.ts +41 -1
- package/dist/layers/xr-layer-system.d.ts.map +1 -1
- package/dist/layers/xr-layer-system.js +506 -132
- package/dist/layers/xr-layer-system.js.map +1 -1
- package/dist/layers/xr-layer-transform.d.ts +18 -0
- package/dist/layers/xr-layer-transform.d.ts.map +1 -0
- package/dist/layers/xr-layer-transform.js +115 -0
- package/dist/layers/xr-layer-transform.js.map +1 -0
- package/dist/layers/xr-quad-layer.d.ts +2 -1
- package/dist/layers/xr-quad-layer.d.ts.map +1 -1
- package/dist/layers/xr-quad-layer.js +2 -1
- package/dist/layers/xr-quad-layer.js.map +1 -1
- package/dist/level/level-component-applier.d.ts +2 -0
- package/dist/level/level-component-applier.d.ts.map +1 -1
- package/dist/level/level-component-applier.js +24 -5
- package/dist/level/level-component-applier.js.map +1 -1
- package/dist/level/level-player-rig.js.map +1 -1
- package/dist/level/level-root.js.map +1 -1
- package/dist/level/level-scene-environment.js.map +1 -1
- package/dist/level/level-scene-json-importer.js.map +1 -1
- package/dist/level/level-scene-material.js.map +1 -1
- package/dist/level/level-scene-object.js.map +1 -1
- package/dist/level/level-scene-primitive.js.map +1 -1
- package/dist/level/level-system.js.map +1 -1
- package/dist/level/level-tag.js.map +1 -1
- package/dist/lighting/light-binding.js.map +1 -1
- package/dist/lighting/light-components.js.map +1 -1
- package/dist/lighting/light-system.js.map +1 -1
- package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -1
- package/dist/locomotion/locomotion-environment.js.map +1 -1
- package/dist/locomotion/locomotion-input-provider.js.map +1 -1
- package/dist/locomotion/locomotion.js.map +1 -1
- package/dist/locomotion/materials/line.js.map +1 -1
- package/dist/locomotion/slide.js.map +1 -1
- package/dist/locomotion/teleport.js.map +1 -1
- package/dist/locomotion/turn.js.map +1 -1
- package/dist/mcp/ecs-debug-tools.d.ts +4 -1
- package/dist/mcp/ecs-debug-tools.d.ts.map +1 -1
- package/dist/mcp/ecs-debug-tools.js +113 -10
- package/dist/mcp/ecs-debug-tools.js.map +1 -1
- package/dist/mcp/index.d.ts +1 -0
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/mcp-runtime.d.ts +2 -0
- package/dist/mcp/mcp-runtime.d.ts.map +1 -1
- package/dist/mcp/mcp-runtime.js +41 -0
- package/dist/mcp/mcp-runtime.js.map +1 -1
- package/dist/mcp/scene-tools.js.map +1 -1
- package/dist/mcp/ui-debug-tools.d.ts +56 -0
- package/dist/mcp/ui-debug-tools.d.ts.map +1 -0
- package/dist/mcp/ui-debug-tools.js +412 -0
- package/dist/mcp/ui-debug-tools.js.map +1 -0
- package/dist/physics/index.js +1 -1
- package/dist/physics/physics-runtime.d.ts +22 -0
- package/dist/physics/physics-runtime.d.ts.map +1 -0
- package/dist/physics/physics-runtime.js +423 -0
- package/dist/physics/physics-runtime.js.map +1 -0
- package/dist/physics/physics-system.d.ts +84 -108
- package/dist/physics/physics-system.d.ts.map +1 -1
- package/dist/physics/physics-system.js +686 -555
- package/dist/physics/physics-system.js.map +1 -1
- package/dist/physics/physics-transport.d.ts +20 -0
- package/dist/physics/physics-transport.d.ts.map +1 -0
- package/dist/physics/physics-transport.js +111 -0
- package/dist/physics/physics-transport.js.map +1 -0
- package/dist/physics/physics-worker-protocol.d.ts +144 -0
- package/dist/physics/physics-worker-protocol.d.ts.map +1 -0
- package/dist/physics/physics-worker-protocol.js +41 -0
- package/dist/physics/physics-worker-protocol.js.map +1 -0
- package/dist/physics/physics-worker-utils.d.ts +8 -0
- package/dist/physics/physics-worker-utils.d.ts.map +1 -0
- package/dist/physics/physics-worker-utils.js +12 -0
- package/dist/physics/physics-worker-utils.js.map +1 -0
- package/dist/physics/physics-worker.d.ts +8 -0
- package/dist/physics/physics-worker.d.ts.map +1 -0
- package/dist/physics/physics-worker.js +66 -0
- package/dist/physics/physics-worker.js.map +1 -0
- package/dist/physics/physicsBody.js.map +1 -1
- package/dist/physics/physicsManipulation.js.map +1 -1
- package/dist/physics/physicsShape.js.map +1 -1
- package/dist/physics/utils.js.map +1 -1
- package/dist/project/normalize.js +7 -1
- package/dist/project/normalize.js.map +1 -1
- package/dist/project/paths.js.map +1 -1
- package/dist/project/types.d.ts +7 -1
- package/dist/project/types.d.ts.map +1 -1
- package/dist/project/types.js.map +1 -1
- package/dist/project/validation.js +36 -2
- package/dist/project/validation.js.map +1 -1
- package/dist/runtime/three.js.map +1 -1
- package/dist/scene-understanding/anchor.js.map +1 -1
- package/dist/scene-understanding/mesh.js.map +1 -1
- package/dist/scene-understanding/plane.js.map +1 -1
- package/dist/scene-understanding/scene-understanding-system.d.ts +42 -6
- package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -1
- package/dist/scene-understanding/scene-understanding-system.js +391 -106
- package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
- package/dist/schemas/iwsdk-project.v1.schema.json +20 -1
- package/dist/transform/synced-euler.js.map +1 -1
- package/dist/transform/synced-quaternion.js.map +1 -1
- package/dist/transform/synced-vector3.js.map +1 -1
- package/dist/transform/transform-component.js.map +1 -1
- package/dist/transform/transform-utils.js.map +1 -1
- package/dist/transform/transform.js.map +1 -1
- package/dist/ui/document.js.map +1 -1
- package/dist/ui/follow-component.js.map +1 -1
- package/dist/ui/follow.d.ts.map +1 -1
- package/dist/ui/follow.js +0 -1
- package/dist/ui/follow.js.map +1 -1
- package/dist/ui/panel-components.js.map +1 -1
- package/dist/ui/screenspace-component.js.map +1 -1
- package/dist/ui/screenspace.js.map +1 -1
- package/dist/ui/ui.js.map +1 -1
- package/dist/ui/uikitml-asset.js.map +1 -1
- package/dist/ui/uikitml.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/visibility/visibility-component.js.map +1 -1
- package/dist/visibility/visibility.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecs-debug-tools.js","sources":["../../src/mcp/ecs-debug-tools.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAMH;AACA;AACA;AAEA,MAAM,UAAU,GAAG;AACjB,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,WAAW,EAAE,IAA2B;IACxC,SAAS,EAAE,CAAC,GAAG,EAAE;AACjB,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,aAAa,EAAE,CAAC;CACjB;AAED;AACA;AACA;AAEA,IAAI,cAAc,GAAmD,IAAI;AACzE,IAAI,WAAW,GAAiB,IAAI;AAE9B,SAAU,gBAAgB,CAAC,KAAY,EAAA;AAC3C,IAAA,IAAI,WAAW,KAAK,KAAK,EAAE;QACzB;AACF,IAAA,CAAC;IAED,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACzC,WAAW,GAAG,KAAK;IAEnB,KAAK,CAAC,MAAM,GAAG,CAAC,KAAa,EAAE,IAAY,KAAU;QACnD,UAAU,CAAC,UAAU,EAAE;QAEvB,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;;YAEhD;QACF;QAEA,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,WAAW,EAAE;;AAE/C,YAAA,cAAe,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC;AAC3C,YAAA,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW;AACtC,YAAA,UAAU,CAAC,WAAW,GAAG,IAAI;AAC7B,YAAA,OAAO,EAAE;YACT;QACF;AAEA,QAAA,cAAe,CAAC,KAAK,EAAE,IAAI,CAAC;AAC9B,IAAA,CAAC;AACH;AAYM,SAAU,QAAQ,CAAC,KAAY,EAAA;AACnC,IAAA,UAAU,CAAC,MAAM,GAAG,IAAI;AACxB,IAAA,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,UAAU;IAChD,OAAO;AACL,QAAA,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,UAAU,CAAC,UAAU;AAC5B,QAAA,WAAW,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,MAAM;KACvC;AACH;AAWA,IAAI,oBAAoB,GAAG,KAAK;AAE1B,SAAU,SAAS,CAAC,KAAY,EAAA;IACpC,MAAM,iBAAiB,GAAG,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,aAAa;AAC1E,IAAA,UAAU,CAAC,MAAM,GAAG,KAAK;AACzB,IAAA,UAAU,CAAC,WAAW,GAAG,IAAI;;AAG7B,IAAA,IAAI,CAAC,oBAAoB,IAAI,cAAc,EAAE;AAC3C,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM;QAClC,IAAI,SAAS,GAAG,IAAI;QACpB,KAAK,CAAC,MAAM,GAAG,CAAC,KAAa,EAAE,IAAY,KAAU;YACnD,IAAI,SAAS,EAAE;gBACb,SAAS,GAAG,KAAK;AACjB,gBAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;AACvB,gBAAA,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC;;AAE9C,gBAAA,KAAK,CAAC,MAAM,GAAG,aAAa;gBAC5B;YACF;AACA,YAAA,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC;AAC5B,QAAA,CAAC;;QAED,oBAAoB,GAAG,IAAI;;QAE3B,UAAU,CAAC,MAAK;YACd,oBAAoB,GAAG,KAAK;QAC9B,CAAC,EAAE,CAAC,CAAC;IACP;IAEA,OAAO;AACL,QAAA,MAAM,EAAE,KAAK;QACb,iBAAiB;KAClB;AACH;AAgBO,eAAe,OAAO,CAC3B,MAAa,EACb,MAA+B,EAAA;AAE/B,IAAA,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,MAAuB;AAE7D,IAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACtB,QAAA,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D;IACH;IAEA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,IAAA,UAAU,CAAC,SAAS,GAAG,KAAK;;;;;IAM5B,MAAM,eAAe,GAAG,IAAI;AAE5B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;AAC1C,YAAA,UAAU,CAAC,WAAW,GAAG,MAAK;gBAC5B,YAAY,CAAC,KAAK,CAAC;AACnB,gBAAA,OAAO,EAAE;AACX,YAAA,CAAC;AACD,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,MAAK;AAC5B,gBAAA,UAAU,CAAC,WAAW,GAAG,IAAI;AAC7B,gBAAA,MAAM,CACJ,IAAI,KAAK,CACP,CAAA,mBAAA,EAAsB,eAAe,CAAA,yCAAA,CAA2C;oBAC9E,CAAA,8DAAA,CAAgE,CACnE,CACF;YACH,CAAC,EAAE,eAAe,CAAC;AACrB,QAAA,CAAC,CAAC;IACJ;IAEA,OAAO;AACL,QAAA,cAAc,EAAE,UAAU;QAC1B,UAAU,EAAE,UAAU,CAAC,UAAU;KAClC;AACH;AAEA;AACA;AACA;AAEA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC/D,MAAM,iBAAiB,GAAG,GAAG;AAC7B,MAAM,SAAS,GAAG,CAAC;AACnB,MAAM,wBAAwB,GAAG,EAAE;AAEnC,SAAS,aAAa,CACpB,KAAc,EACd,KAAA,GAAgB,CAAC,EACjB,IAAA,GAAwB,IAAI,OAAO,EAAE,EAAA;IAErC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,IAAI,GAAG,OAAO,KAAK;IACzB,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE;AAC3C,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AACrB,QAAA,OAAQ,KAAgB,CAAC,MAAM,GAAG;cAC7B,KAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAAG;cAChD,KAAK;IACX;AACA,IAAA,IAAI,IAAI,KAAK,UAAU,EAAE;AACvB,QAAA,OAAO,YAAY;IACrB;AAEA,IAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AACrB,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB;IAEA,MAAM,GAAG,GAAG,KAAgC;;AAG5C,IAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACjB,QAAA,OAAO,YAAY;IACrB;AACA,IAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;;AAGb,IAAA,IAAI,KAAK,IAAI,SAAS,EAAE;AACtB,QAAA,OAAO,UAAU;IACnB;;IAGA,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,IAAI,GAAG,EAAE;QAC9C,MAAM,GAAG,GAAG,GAAmC;AAC/C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC;QAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5D,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,wBAAwB,EAAE;AACzC,YAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;QACrE;AACA,QAAA,OAAO,MAAM;IACf;;AAGA,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACtB,QAAA,OAAO;AACJ,aAAA,KAAK,CAAC,CAAC,EAAE,wBAAwB;AACjC,aAAA,GAAG,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACxD;;AAGA,IAAA,IAAK,GAAW,CAAC,UAAU,EAAE;QAC3B,OAAO,CAAA,UAAA,EAAc,GAAW,CAAC,IAAI,IAAK,GAAW,CAAC,IAAI,IAAI,SAAS,CAAA,CAAA,CAAG;IAC5E;AACA,IAAA,IAAK,GAAW,CAAC,UAAU,EAAE;AAC3B,QAAA,OAAO,aAAc,GAAW,CAAC,IAAI,IAAI,SAAS,GAAG;IACvD;AACA,IAAA,IAAK,GAAW,CAAC,SAAS,EAAE;AAC1B,QAAA,OAAO,YAAa,GAAW,CAAC,IAAI,IAAI,SAAS,GAAG;IACtD;AACA,IAAA,IAAK,GAAW,CAAC,gBAAgB,EAAE;AACjC,QAAA,OAAO,kBAAkB;IAC3B;;IAGA,MAAM,MAAM,GAA4B,EAAE;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7B,IAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACnC,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC;IACxD;AACA,IAAA,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE;QACpB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA,UAAA,CAAY;IACjD;AACA,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,uBAAuB,CAC9B,MAA8B,EAC9B,SAAuB,EACvB,GAAW,EACX,WAA6B,EAAA;;AAE7B,IAAA,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI;AAE7B,IAAA,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;;AAE1B,QAAA,OAAO,KAAK,CAAC,IAAI,CAAE,MAAc,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAClE;;IAGA,MAAM,GAAG,GAAI,MAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC;AAEpD,IAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AACrB,QAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AAChB,YAAA,OAAO,IAAI;QACb;QACA,MAAM,GAAG,GAAG,GAA6B;QACzC,OAAO;YACL,WAAW,EAAE,GAAG,CAAC,KAAK;YACtB,IAAI,EAAE,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI,KAAI,SAAS;SACtC;IACH;AAEA,IAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AACrB,QAAA,OAAO,aAAa,CAAC,GAAG,CAAC;IAC3B;AAEA,IAAA,OAAO,GAAG;AACZ;AAwBM,SAAU,cAAc,CAC5B,KAAY,EACZ,MAA+B,EAAA;;AAE/B,IAAA,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAyC;IAE7E,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE;AACrD,QAAA,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG;IACH;IAEA,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,WAAW,CAAC;IAChE,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,MAAM,IAAI,KAAK,CACb,UAAU,WAAW,CAAA,uGAAA,CAAyG,CAC/H;IACH;AAEA,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,EAAE;;IAG/C,IAAI,gBAAgB,GAAG,gBAAgB;IACvC,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC;AACrC,QAAA,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACxE;IAEA,MAAM,iBAAiB,GAAoB,gBAAgB,CAAC,GAAG,CAC7D,CAAC,SAAS,KAAI;QACZ,MAAM,MAAM,GAA4B,EAAE;AAC1C,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM;QAE/B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,uBAAuB,CACnC,MAAM,EACN,SAAS,EACT,GAAG,EACH,MAAM,CAAC,GAAG,CAAC,CACZ;QACH;QAEA,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,EAAE;YACzB,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,MAAM;SACP;AACH,IAAA,CAAC,CACF;IAED,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,KAAK;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI,KAAI,SAAS;AACxC,QAAA,UAAU,EAAE,iBAAiB;KAC9B;AACH;AAyBM,SAAU,eAAe,CAC7B,KAAY,EACZ,MAA+B,EAAA;;AAE/B,IAAA,MAAM,EACJ,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,KAAK,GAAG,EAAE,GACX,GAAG,MAA+B;;IAGnC,MAAM,kBAAkB,GAAmB,EAAE;IAC7C,IAAI,cAAc,EAAE;AAClB,QAAA,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;YACjC,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC;YAC5C,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,MAAM,IAAI,KAAK,CACb,cAAc,IAAI,CAAA,gDAAA,CAAkD,CACrE;YACH;AACA,YAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B;IACF;IAEA,MAAM,kBAAkB,GAAmB,EAAE;IAC7C,IAAI,iBAAiB,EAAE;AACrB,QAAA,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE;YACpC,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC;YAC5C,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,MAAM,IAAI,KAAK,CACb,cAAc,IAAI,CAAA,gDAAA,CAAkD,CACrE;YACH;AACA,YAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B;IACF;IAEA,IAAI,SAAS,GAAkB,IAAI;IACnC,IAAI,WAAW,EAAE;QACf,SAAS,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC;IAC1C;AAEA,IAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,OAAO,GAAoB,EAAE;;;;AAKnC,IAAA,MAAM,MAAM,GAAI,KAAK,CAAC,aAAqB,CAAC,WAGzC;AAEH,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAC7B;QACF;;QAGA,IAAI,KAAK,GAAG,IAAI;AAChB,QAAA,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE;YACrC,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;gBAC1C,KAAK,GAAG,KAAK;gBACb;YACF;QACF;QACA,IAAI,CAAC,KAAK,EAAE;YACV;QACF;;AAGA,QAAA,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE;AACrC,YAAA,IAAI,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;gBACzC,KAAK,GAAG,KAAK;gBACb;YACF;QACF;QACA,IAAI,CAAC,KAAK,EAAE;YACV;QACF;;QAGA,IAAI,SAAS,EAAE;YACb,MAAM,IAAI,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI;YAClC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAClC;YACF;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAe,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC;YACX,WAAW,EAAE,MAAM,CAAC,KAAK;YACzB,IAAI,EAAE,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI,KAAI,SAAS;YACxC,YAAY;AACb,SAAA,CAAC;IACJ;AAEA,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM;IACnC,MAAM,OAAO,GAAG;AACb,SAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,sBAAsB,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC;AACpE,SAAA,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;IAEvB,OAAO;AACL,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,YAAY,GAAG,UAAU;KACnC;AACH;AAEA,SAAS,uBAAuB,CAC9B,MAA8B,EAC9B,SAAuB,EAAA;AAEvB,IAAA,IAAI,SAAS,CAAC,OAAO,IAAI,IAAI,EAAE;AAC7B,QAAA,OAAO,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC;IACvC;IACA,OAAO,MAAM,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,KAAmB,KAAI;QACzD,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE;AACzD,IAAA,CAAC,CAAC;AACJ;AAEA,SAAS,sBAAsB,CAAC,MAAqB,EAAA;;;;IAInD,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC7C,QAAA,OAAO,CAAC;IACV;AACA,IAAA,OAAO,CAAC;AACV;AAqBM,SAAU,cAAc,CAAC,KAAY,EAAA;AACzC,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE;IAClC,MAAM,MAAM,GAAiB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;;AACzD,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACpD,MAAM,YAAY,GAA2B,EAAE;AAC/C,QAAA,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;AAC9B,YAAA,YAAY,CAAC,KAAK,CAAC,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,0CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC;QAClE;QACA,OAAO;AACL,YAAA,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI;YAC7B,KAAK;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YAC5C,UAAU;YACV,YAAY;SACb;AACH,IAAA,CAAC,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;AAClD;SAiBgB,iBAAiB,GAAA;AAC/B,IAAA,MAAM,GAAG,GAAG,iBAAiB,CAAC,gBAAgB,EAAE;IAChD,MAAM,MAAM,GAAoB,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;QAC/C,MAAM,MAAM,GAAuD,EAAE;AACrE,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACtD,MAAM,CAAC,GAAG,CAAC,GAAG;gBACZ,IAAI,EAAG,KAAa,CAAC,IAAI;gBACzB,OAAO,EAAG,KAAa,CAAC,OAAO;aAChC;QACH;QACA,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM;SACP;AACH,IAAA,CAAC,CAAC;IACF,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;AACrD;AAgBM,SAAU,eAAe,CAC7B,KAAY,EACZ,MAA+B,EAAA;AAE/B,IAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAA0C;AACnE,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE;AAClC,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC;IAC/D,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,CAAA,QAAA,EAAW,IAAI,CAAA,gCAAA,EAAmC,SAAS,CAAA,CAAE,CAC9D;IACH;AACA,IAAA,MAAM,YAAY,GAAG,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ;IACrE,IAAI,YAAY,EAAE;QAChB,MAAM,CAAC,IAAI,EAAE;IACf;SAAO;QACL,MAAM,CAAC,IAAI,EAAE;IACf;AACA,IAAA,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;AACrE;AAqBM,SAAU,eAAe,CAC7B,KAAY,EACZ,MAA+B,EAAA;IAE/B,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,GAC9C,MAA0C;IAE5C,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,WAAW,CAAC;IAChE,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,MAAM,IAAI,KAAK,CAAC,UAAU,WAAW,CAAA,WAAA,CAAa,CAAC;IACrD;IAEA,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC;IACxD,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,MAAM,IAAI,KAAK,CAAC,cAAc,WAAW,CAAA,wBAAA,CAA0B,CAAC;IACtE;IAEA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CACb,CAAA,OAAA,EAAU,WAAW,CAAA,0BAAA,EAA6B,WAAW,CAAA,EAAA,CAAI,CAClE;IACH;IAEA,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3C,IAAI,CAAC,WAAW,EAAE;AAChB,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1D,MAAM,IAAI,KAAK,CACb,CAAA,OAAA,EAAU,KAAK,CAAA,gBAAA,EAAmB,WAAW,CAAA,cAAA,EAAiB,SAAS,CAAA,CAAE,CAC1E;IACH;;AAGA,IAAA,MAAM,aAAa,GAAG,uBAAuB,CAC3C,MAAM,EACN,SAAS,EACT,KAAK,EACL,WAAW,CACZ;AAED,IAAA,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI;AAC7B,IAAA,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;;;QAG1B,MAAM,IAAI,GAAI,MAAc,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC;;QAE5D,IAAI,GAAG,GAAG,KAAK;AACf,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAI;AACF,gBAAA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YACvB;AAAE,YAAA,OAAA,EAAA,EAAM;gBACN,MAAM,IAAI,KAAK,CACb,CAAA,EAAG,IAAI,CAAA,QAAA,EAAW,KAAK,CAAA,8CAAA,CAAgD,CACxE;YACH;QACF;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AACrD,YAAA,MAAM,IAAI,KAAK,CACb,CAAA,EAAG,IAAI,CAAA,QAAA,EAAW,KAAK,CAAA,uBAAA,EAA0B,IAAI,CAAC,MAAM,CAAA,SAAA,CAAW,CACxE;QACH;AACA,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAClB;IACF;SAAO;;;QAGJ,MAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC;IACnD;;AAGA,IAAA,MAAM,QAAQ,GAAG,uBAAuB,CACtC,MAAM,EACN,SAAS,EACT,KAAK,EACL,WAAW,CACZ;IAED,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE;AACrE;AAEA;AACA;AACA;AAEA;AACA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB;AA0B1C,SAAU,WAAW,CACzB,KAAY,EACZ,MAA+B,EAAA;;IAE/B,MAAM,EAAE,KAAK,GAAG,CAAA,KAAA,EAAQ,SAAS,CAAC,IAAI,CAAA,CAAE,EAAE,GAAG,MAA2B;;AAGxE,IAAA,MAAM,MAAM,GAAI,KAAK,CAAC,aAAqB,CAAC,WAGzC;IACH,MAAM,QAAQ,GAAqB,EAAE;IACrC,IAAI,cAAc,GAAG,CAAC;AAEtB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAC7B;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE;QACpC,MAAM,UAAU,GAA4C,EAAE;AAE9D,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,MAAM,GAA4B,EAAE;AAC1C,YAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC1C,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,uBAAuB,CACnC,MAAM,EACN,IAAI,EACJ,GAAG,EACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CACjB;YACH;AACA,YAAA,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM;AAC5B,YAAA,cAAc,EAAE;QAClB;QAEA,QAAQ,CAAC,IAAI,CAAC;YACZ,WAAW,EAAE,MAAM,CAAC,KAAK;YACzB,IAAI,EAAE,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI,KAAI,SAAS;YACxC,UAAU;AACX,SAAA,CAAC;IACJ;AAEA,IAAA,MAAM,QAAQ,GAAgB;QAC5B,KAAK;AACL,QAAA,SAAS,EAAE,WAAW,CAAC,GAAG,EAAE;QAC5B,KAAK,EAAE,UAAU,CAAC,UAAU;QAC5B,QAAQ;KACT;;AAGD,IAAA,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAChD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM;AAC7C,QAAA,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;IAC1B;AACA,IAAA,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC;IAE9B,OAAO;QACL,KAAK;QACL,WAAW,EAAE,QAAQ,CAAC,MAAM;QAC5B,cAAc;QACd,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KAC9C;AACH;AAqCM,SAAU,OAAO,CACrB,MAAa,EACb,MAA+B,EAAA;AAE/B,IAAA,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,MAAkC;IAEvD,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IACpC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;IAChC,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,KAAK,CACb,CAAA,UAAA,EAAa,IAAI,CAAA,qBAAA,EAAwB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CACnF;IACH;IACA,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,KAAK,CACb,CAAA,UAAA,EAAa,EAAE,CAAA,qBAAA,EAAwB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CACjF;IACH;;IAGA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IAErE,MAAM,KAAK,GAAiB,EAAE;IAC9B,IAAI,KAAK,GAAG,CAAC,EACX,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,CAAC;;IAGb,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,OAAO,EAAE;QACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QAC/B,IAAI,CAAC,QAAQ,EAAE;YACb,KAAK,CAAC,IAAI,CAAC;AACT,gBAAA,WAAW,EAAE,GAAG;gBAChB,IAAI,EAAE,UAAU,CAAC,IAAI;AACrB,gBAAA,MAAM,EAAE,SAAS;AAClB,aAAA,CAAC;AACF,YAAA,OAAO,EAAE;YACT;QACF;;QAEA,MAAM,SAAS,GAAoB,EAAE;AACrC,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;AACzB,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AACrC,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACpC,SAAA,CAAC;AACF,QAAA,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;YAC/B,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;YAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;YAC1C,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;gBACxD;YACF;YACA,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gBAC1D;YACF;;YAEA,MAAM,UAAU,GAAgB,EAAE;YAClC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACzC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxC,gBAAA,IAAI,EAAE,KAAK,EAAE,EAAE;oBACb,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtE;YACF;;YAEA,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACvC,gBAAA,IAAI,EAAE,KAAK,IAAI,QAAQ,CAAC,EAAE;oBACxB,UAAU,CAAC,IAAI,CAAC;wBACd,KAAK;AACL,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC;AAClB,qBAAA,CAAC;gBACJ;YACF;AACA,YAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,SAAS,CAAC,IAAI,CAAC;AACb,oBAAA,WAAW,EAAE,MAAM;AACnB,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,MAAM,EAAE,UAAU;AACnB,iBAAA,CAAC;YACJ;QACF;AACA,QAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,KAAK,CAAC,IAAI,CAAC;AACT,gBAAA,WAAW,EAAE,GAAG;gBAChB,IAAI,EAAE,UAAU,CAAC,IAAI;AACrB,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,UAAU,EAAE,SAAS;AACtB,aAAA,CAAC;AACF,YAAA,OAAO,EAAE;QACX;IACF;;IAGA,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,KAAK,EAAE;QACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACrB,KAAK,CAAC,IAAI,CAAC;AACT,gBAAA,WAAW,EAAE,GAAG;gBAChB,IAAI,EAAE,QAAQ,CAAC,IAAI;AACnB,gBAAA,MAAM,EAAE,OAAO;AAChB,aAAA,CAAC;AACF,YAAA,KAAK,EAAE;QACT;IACF;IAEA,OAAO;QACL,IAAI;QACJ,EAAE;AACF,QAAA,UAAU,EAAE,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;AACzC,QAAA,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS;AAChD,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;KACrC;AACH;;;;"}
|
|
1
|
+
{"version":3,"file":"ecs-debug-tools.js","sources":["../../src/mcp/ecs-debug-tools.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { ComponentRegistry } from 'elics';\nimport type { AnyComponent } from 'elics';\nimport type { World } from '../ecs/world.js';\n\n// ---------------------------------------------------------------------------\n// Debug state (module-scoped singleton — only one World per page)\n// ---------------------------------------------------------------------------\n\nconst debugState = {\n paused: false,\n stepResolve: null as (() => void) | null,\n stepReject: null as ((error: Error) => void) | null,\n stepInFlight: false,\n stepDelta: 1 / 72,\n frameCount: 0,\n pausedAtFrame: 0,\n};\n\ninterface DebugFrameSynchronizer {\n prepareDebugFrame?(delta: number): void;\n flushDebugFrame(): Promise<void>;\n}\n\nconst DEBUG_SYNC_TIMEOUT_MS = 5000;\n\nfunction isDebugFrameSynchronizer(\n system: unknown,\n): system is DebugFrameSynchronizer {\n return (\n typeof system === 'object' &&\n system !== null &&\n 'flushDebugFrame' in system &&\n typeof system.flushDebugFrame === 'function'\n );\n}\n\nasync function flushDebugSystems(world: World): Promise<void> {\n await Promise.all(\n world\n .getSystems()\n .map((system) =>\n isDebugFrameSynchronizer(system)\n ? system.flushDebugFrame()\n : Promise.resolve(),\n ),\n );\n}\n\nfunction prepareDebugSystems(world: World, delta: number): void {\n for (const system of world.getSystems()) {\n if (isDebugFrameSynchronizer(system)) {\n system.prepareDebugFrame?.(delta);\n }\n }\n}\n\nasync function flushDebugSystemsWithTimeout(\n world: World,\n operation: string,\n): Promise<void> {\n let timer: ReturnType<typeof setTimeout> | undefined;\n try {\n await Promise.race([\n flushDebugSystems(world),\n new Promise<never>((_, reject) => {\n timer = setTimeout(() => {\n reject(\n new Error(\n `${operation} timed out after ${DEBUG_SYNC_TIMEOUT_MS}ms while waiting for asynchronous systems to settle`,\n ),\n );\n }, DEBUG_SYNC_TIMEOUT_MS);\n }),\n ]);\n } finally {\n if (timer !== undefined) {\n clearTimeout(timer);\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Install debug hook — monkey-patches world.update()\n// ---------------------------------------------------------------------------\n\nlet originalUpdate: ((delta: number, time: number) => void) | null = null;\nlet hookedWorld: World | null = null;\n\nexport function installDebugHook(world: World): void {\n if (hookedWorld === world) {\n return;\n } // already installed\n\n originalUpdate = world.update.bind(world);\n hookedWorld = world;\n\n world.update = (delta: number, time: number): void => {\n debugState.frameCount++;\n\n if (debugState.paused && !debugState.stepResolve) {\n // Skip ECS updates; renderer.render() still runs after this\n return;\n }\n\n if (debugState.paused && debugState.stepResolve) {\n if (debugState.stepInFlight) {\n return;\n }\n // Stepping — use fixed timestep\n const resolve = debugState.stepResolve;\n const reject = debugState.stepReject;\n debugState.stepResolve = null;\n debugState.stepReject = null;\n debugState.stepInFlight = true;\n try {\n prepareDebugSystems(world, debugState.stepDelta);\n originalUpdate!(debugState.stepDelta, time);\n } catch (error) {\n debugState.stepInFlight = false;\n reject?.(error instanceof Error ? error : new Error(String(error)));\n return;\n }\n void flushDebugSystems(world).then(\n () => {\n debugState.stepInFlight = false;\n resolve();\n },\n (error) => {\n debugState.stepInFlight = false;\n reject?.(error instanceof Error ? error : new Error(String(error)));\n },\n );\n return;\n }\n\n originalUpdate!(delta, time);\n };\n}\n\n// ---------------------------------------------------------------------------\n// ecs_pause\n// ---------------------------------------------------------------------------\n\nexport interface EcsPauseResult {\n paused: boolean;\n frame: number;\n systemCount: number;\n}\n\nexport async function ecsPause(world: World): Promise<EcsPauseResult> {\n debugState.paused = true;\n debugState.pausedAtFrame = debugState.frameCount;\n await flushDebugSystemsWithTimeout(world, 'Pause');\n return {\n paused: true,\n frame: debugState.frameCount,\n systemCount: world.getSystems().length,\n };\n}\n\n// ---------------------------------------------------------------------------\n// ecs_resume\n// ---------------------------------------------------------------------------\n\nexport interface EcsResumeResult {\n paused: boolean;\n framesWhilePaused: number;\n}\n\nlet resumeClampInstalled = false;\n\nexport function ecsResume(world: World): EcsResumeResult {\n const framesWhilePaused = debugState.frameCount - debugState.pausedAtFrame;\n debugState.paused = false;\n debugState.stepResolve = null;\n debugState.stepReject = null;\n // Keep stepInFlight set until its asynchronous system flush actually\n // settles. Normal updates can resume, but a later debugger step must not\n // overlap the abandoned exchange.\n\n // Cap first real delta after resume to avoid physics explosions\n if (!resumeClampInstalled && originalUpdate) {\n const currentUpdate = world.update;\n let clampNext = true;\n world.update = (delta: number, time: number): void => {\n if (clampNext) {\n clampNext = false;\n const maxDelta = 1 / 30;\n currentUpdate(Math.min(delta, maxDelta), time);\n // Restore the regular patched update\n world.update = currentUpdate;\n return;\n }\n currentUpdate(delta, time);\n };\n // Only need to do this once per resume\n resumeClampInstalled = true;\n // Reset so the next resume can install again\n setTimeout(() => {\n resumeClampInstalled = false;\n }, 0);\n }\n\n return {\n paused: false,\n framesWhilePaused,\n };\n}\n\n// ---------------------------------------------------------------------------\n// ecs_step\n// ---------------------------------------------------------------------------\n\nexport interface EcsStepParams {\n count?: number;\n delta?: number;\n}\n\nexport interface EcsStepResult {\n framesAdvanced: number;\n totalFrame: number;\n}\n\nexport async function ecsStep(\n _world: World,\n params: Record<string, unknown>,\n): Promise<EcsStepResult> {\n const { count = 1, delta = 1 / 72 } = params as EcsStepParams;\n\n if (!debugState.paused) {\n throw new Error(\n 'Cannot step when ECS is not paused. Call ecs_pause first.',\n );\n }\n\n const frameCount = Math.max(1, Math.min(120, Math.round(count)));\n debugState.stepDelta = delta;\n\n // Per-step timeout: if the render loop isn't running (tab backgrounded,\n // no active XR session, page hidden), the resolve callback from\n // world.update() never fires. A 5s timeout per step prevents the MCP\n // call from hanging indefinitely.\n for (let i = 0; i < frameCount; i++) {\n await new Promise<void>((resolve, reject) => {\n debugState.stepResolve = () => {\n clearTimeout(timer);\n resolve();\n };\n debugState.stepReject = (error) => {\n clearTimeout(timer);\n reject(error);\n };\n const timer = setTimeout(() => {\n debugState.stepResolve = null;\n debugState.stepReject = null;\n // If world.update already started this step, its asynchronous flush is\n // still physically in flight. Leave the guard set so a retry cannot\n // submit another exact step until that work really settles.\n reject(\n new Error(\n `Step timeout after ${DEBUG_SYNC_TIMEOUT_MS}ms — the render loop may not be running. ` +\n `Ensure an XR session is active and the browser tab is visible.`,\n ),\n );\n }, DEBUG_SYNC_TIMEOUT_MS);\n });\n }\n\n return {\n framesAdvanced: frameCount,\n totalFrame: debugState.frameCount,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Component serialization helpers\n// ---------------------------------------------------------------------------\n\nconst VECTOR_TYPES = new Set(['Vec2', 'Vec3', 'Vec4', 'Color']);\nconst MAX_STRING_LENGTH = 200;\nconst MAX_DEPTH = 3;\nconst MAX_TYPED_ARRAY_ELEMENTS = 16;\n\nfunction safeSerialize(\n value: unknown,\n depth: number = 0,\n seen: WeakSet<object> = new WeakSet(),\n): unknown {\n if (value === null || value === undefined) {\n return value;\n }\n\n const type = typeof value;\n if (type === 'number' || type === 'boolean') {\n return value;\n }\n if (type === 'string') {\n return (value as string).length > MAX_STRING_LENGTH\n ? (value as string).slice(0, MAX_STRING_LENGTH) + '...'\n : value;\n }\n if (type === 'function') {\n return '<function>';\n }\n\n if (type !== 'object') {\n return String(value);\n }\n\n const obj = value as Record<string, unknown>;\n\n // Circular reference check\n if (seen.has(obj)) {\n return '<circular>';\n }\n seen.add(obj);\n\n // Depth limit\n if (depth >= MAX_DEPTH) {\n return '<object>';\n }\n\n // TypedArray\n if (ArrayBuffer.isView(obj) && 'length' in obj) {\n const arr = obj as unknown as ArrayLike<number>;\n const len = Math.min(arr.length, MAX_TYPED_ARRAY_ELEMENTS);\n const result = Array.from({ length: len }, (_, i) => arr[i]);\n if (arr.length > MAX_TYPED_ARRAY_ELEMENTS) {\n return { values: result, truncated: true, totalLength: arr.length };\n }\n return result;\n }\n\n // Array\n if (Array.isArray(obj)) {\n return obj\n .slice(0, MAX_TYPED_ARRAY_ELEMENTS)\n .map((item) => safeSerialize(item, depth + 1, seen));\n }\n\n // Three.js sentinel detection — return type tag instead of full object\n if ((obj as any).isObject3D) {\n return `<Object3D:${(obj as any).name || (obj as any).type || 'unnamed'}>`;\n }\n if ((obj as any).isMaterial) {\n return `<Material:${(obj as any).type || 'unknown'}>`;\n }\n if ((obj as any).isTexture) {\n return `<Texture:${(obj as any).name || 'unnamed'}>`;\n }\n if ((obj as any).isBufferGeometry) {\n return `<BufferGeometry>`;\n }\n\n // Plain object\n const result: Record<string, unknown> = {};\n const keys = Object.keys(obj);\n for (const key of keys.slice(0, 20)) {\n result[key] = safeSerialize(obj[key], depth + 1, seen);\n }\n if (keys.length > 20) {\n result['...'] = `${keys.length - 20} more keys`;\n }\n return result;\n}\n\nfunction serializeComponentValue(\n entity: import('elics').Entity,\n component: AnyComponent,\n key: string,\n schemaField: { type: string },\n): unknown {\n const type = schemaField.type;\n\n if (VECTOR_TYPES.has(type)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from((entity as any).getVectorView(component, key));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const raw = (entity as any).getValue(component, key);\n\n if (type === 'Entity') {\n if (raw === null) {\n return null;\n }\n const ref = raw as import('elics').Entity;\n return {\n entityIndex: ref.index,\n name: ref.object3D?.name || undefined,\n };\n }\n\n if (type === 'Object') {\n return safeSerialize(raw);\n }\n\n return raw;\n}\n\n// ---------------------------------------------------------------------------\n// ecs_query_entity\n// ---------------------------------------------------------------------------\n\nexport interface EcsQueryEntityParams {\n entityIndex: number;\n components?: string[];\n}\n\nexport interface ComponentData {\n componentId: string;\n description?: string;\n values: Record<string, unknown>;\n}\n\nexport interface EcsQueryEntityResult {\n entityIndex: number;\n active: boolean;\n name?: string;\n components: ComponentData[];\n}\n\nexport function ecsQueryEntity(\n world: World,\n params: Record<string, unknown>,\n): EcsQueryEntityResult {\n const { entityIndex, components } = params as unknown as EcsQueryEntityParams;\n\n if (entityIndex === undefined || entityIndex === null) {\n throw new Error(\n 'entityIndex is required. Use get_scene_hierarchy or ecs_find_entities to discover entity indices.',\n );\n }\n\n const entity = world.entityManager.getEntityByIndex(entityIndex);\n if (!entity) {\n throw new Error(\n `Entity ${entityIndex} not found or has been destroyed. Use get_scene_hierarchy or ecs_find_entities to find active entities.`,\n );\n }\n\n const entityComponents = entity.getComponents();\n\n // Filter to requested components if specified\n let targetComponents = entityComponents;\n if (components && components.length > 0) {\n const filterSet = new Set(components);\n targetComponents = entityComponents.filter((c) => filterSet.has(c.id));\n }\n\n const componentDataList: ComponentData[] = targetComponents.map(\n (component) => {\n const values: Record<string, unknown> = {};\n const schema = component.schema;\n\n for (const key of Object.keys(schema)) {\n values[key] = serializeComponentValue(\n entity,\n component,\n key,\n schema[key],\n );\n }\n\n return {\n componentId: component.id,\n description: component.description,\n values,\n };\n },\n );\n\n return {\n entityIndex: entity.index,\n active: entity.active,\n name: entity.object3D?.name || undefined,\n components: componentDataList,\n };\n}\n\n// ---------------------------------------------------------------------------\n// ecs_find_entities\n// ---------------------------------------------------------------------------\n\nexport interface EcsFindEntitiesParams {\n withComponents?: string[];\n withoutComponents?: string[];\n namePattern?: string;\n limit?: number;\n}\n\nexport interface EntitySummary {\n entityIndex: number;\n name?: string;\n componentIds: string[];\n}\n\nexport interface EcsFindEntitiesResult {\n entities: EntitySummary[];\n total: number;\n limited: boolean;\n}\n\nexport function ecsFindEntities(\n world: World,\n params: Record<string, unknown>,\n): EcsFindEntitiesResult {\n const {\n withComponents,\n withoutComponents,\n namePattern,\n limit = 50,\n } = params as EcsFindEntitiesParams;\n\n // Resolve component names to component objects\n const requiredComponents: AnyComponent[] = [];\n if (withComponents) {\n for (const name of withComponents) {\n const comp = ComponentRegistry.getById(name);\n if (!comp) {\n throw new Error(\n `Component '${name}' not found in registry. Check the component ID.`,\n );\n }\n requiredComponents.push(comp);\n }\n }\n\n const excludedComponents: AnyComponent[] = [];\n if (withoutComponents) {\n for (const name of withoutComponents) {\n const comp = ComponentRegistry.getById(name);\n if (!comp) {\n throw new Error(\n `Component '${name}' not found in registry. Check the component ID.`,\n );\n }\n excludedComponents.push(comp);\n }\n }\n\n let nameRegex: RegExp | null = null;\n if (namePattern) {\n nameRegex = new RegExp(namePattern, 'i');\n }\n\n const maxResults = Math.max(1, Math.min(50, limit));\n const matches: EntitySummary[] = [];\n\n // indexLookup is internal to ELICS (not part of the public API). If an\n // iteration API becomes public, migrate to that instead. For now, direct\n // access is the only way to enumerate all live entities efficiently.\n const lookup = (world.entityManager as any).indexLookup as (\n | import('elics').Entity\n | null\n )[];\n\n for (let i = 0; i < lookup.length; i++) {\n const entity = lookup[i];\n if (!entity || !entity.active) {\n continue;\n }\n\n // Check required components\n let match = true;\n for (const comp of requiredComponents) {\n if (!entityHasDebugComponent(entity, comp)) {\n match = false;\n break;\n }\n }\n if (!match) {\n continue;\n }\n\n // Check excluded components\n for (const comp of excludedComponents) {\n if (entityHasDebugComponent(entity, comp)) {\n match = false;\n break;\n }\n }\n if (!match) {\n continue;\n }\n\n // Check name pattern\n if (nameRegex) {\n const name = entity.object3D?.name;\n if (!name || !nameRegex.test(name)) {\n continue;\n }\n }\n\n const componentIds = entity.getComponents().map((c: AnyComponent) => c.id);\n matches.push({\n entityIndex: entity.index,\n name: entity.object3D?.name || undefined,\n componentIds,\n });\n }\n\n const totalMatches = matches.length;\n const results = matches\n .sort((a, b) => getEntityDebugSortRank(a) - getEntityDebugSortRank(b))\n .slice(0, maxResults);\n\n return {\n entities: results,\n total: totalMatches,\n limited: totalMatches > maxResults,\n };\n}\n\nfunction entityHasDebugComponent(\n entity: import('elics').Entity,\n component: AnyComponent,\n): boolean {\n if (component.bitmask != null) {\n return entity.hasComponent(component);\n }\n return entity.getComponents().some((entry: AnyComponent) => {\n return entry === component || entry.id === component.id;\n });\n}\n\nfunction getEntityDebugSortRank(entity: EntitySummary): number {\n // Keep infrastructure roots discoverable but list mutable level content first.\n // Tools and agents often pick the first match for quick probes; LevelRoot is\n // intentionally reset to identity every frame by LevelSystem.\n if (entity.componentIds.includes('LevelRoot')) {\n return 1;\n }\n return 0;\n}\n\n// ---------------------------------------------------------------------------\n// ecs_list_systems\n// ---------------------------------------------------------------------------\n\nexport interface SystemInfo {\n name: string;\n index: number;\n priority: number;\n isPaused: boolean;\n configKeys: string[];\n queryNames: string[];\n entityCounts: Record<string, number>;\n}\n\nexport interface EcsListSystemsResult {\n systems: SystemInfo[];\n total: number;\n}\n\nexport function ecsListSystems(world: World): EcsListSystemsResult {\n const systems = world.getSystems();\n const result: SystemInfo[] = systems.map((system, index) => {\n const queryNames = Object.keys(system.queries || {});\n const entityCounts: Record<string, number> = {};\n for (const qName of queryNames) {\n entityCounts[qName] = system.queries[qName]?.entities?.size ?? 0;\n }\n return {\n name: system.constructor.name,\n index,\n priority: system.priority,\n isPaused: system.isPaused,\n configKeys: Object.keys(system.config || {}),\n queryNames,\n entityCounts,\n };\n });\n return { systems: result, total: result.length };\n}\n\n// ---------------------------------------------------------------------------\n// ecs_list_components\n// ---------------------------------------------------------------------------\n\nexport interface ComponentInfo {\n id: string;\n description?: string;\n fields: Record<string, { type: string; default: unknown }>;\n}\n\nexport interface EcsListComponentsResult {\n components: ComponentInfo[];\n total: number;\n}\n\nexport function ecsListComponents(): EcsListComponentsResult {\n const all = ComponentRegistry.getAllComponents();\n const result: ComponentInfo[] = all.map((comp) => {\n const fields: Record<string, { type: string; default: unknown }> = {};\n for (const [key, field] of Object.entries(comp.schema)) {\n fields[key] = {\n type: (field as any).type,\n default: (field as any).default,\n };\n }\n return {\n id: comp.id,\n description: comp.description,\n fields,\n };\n });\n return { components: result, total: result.length };\n}\n\n// ---------------------------------------------------------------------------\n// ecs_toggle_system\n// ---------------------------------------------------------------------------\n\nexport interface EcsToggleSystemParams {\n name: string;\n paused?: boolean;\n}\n\nexport interface EcsToggleSystemResult {\n name: string;\n isPaused: boolean;\n}\n\nexport function ecsToggleSystem(\n world: World,\n params: Record<string, unknown>,\n): EcsToggleSystemResult {\n const { name, paused } = params as unknown as EcsToggleSystemParams;\n const systems = world.getSystems();\n const system = systems.find((s) => s.constructor.name === name);\n if (!system) {\n const available = systems.map((s) => s.constructor.name).join(', ');\n throw new Error(\n `System '${name}' not found. Available systems: ${available}`,\n );\n }\n const targetPaused = paused !== undefined ? paused : !system.isPaused;\n if (targetPaused) {\n system.stop();\n } else {\n system.play();\n }\n return { name: system.constructor.name, isPaused: system.isPaused };\n}\n\n// ---------------------------------------------------------------------------\n// ecs_set_component\n// ---------------------------------------------------------------------------\n\nexport interface EcsSetComponentParams {\n entityIndex: number;\n componentId: string;\n field: string;\n value: unknown;\n}\n\nexport interface EcsSetComponentResult {\n entityIndex: number;\n componentId: string;\n field: string;\n previousValue: unknown;\n newValue: unknown;\n}\n\nexport function ecsSetComponent(\n world: World,\n params: Record<string, unknown>,\n): EcsSetComponentResult {\n const { entityIndex, componentId, field, value } =\n params as unknown as EcsSetComponentParams;\n\n const entity = world.entityManager.getEntityByIndex(entityIndex);\n if (!entity) {\n throw new Error(`Entity ${entityIndex} not found.`);\n }\n\n const component = ComponentRegistry.getById(componentId);\n if (!component) {\n throw new Error(`Component '${componentId}' not found in registry.`);\n }\n\n if (!entity.hasComponent(component)) {\n throw new Error(\n `Entity ${entityIndex} does not have component '${componentId}'.`,\n );\n }\n\n const schemaField = component.schema[field];\n if (!schemaField) {\n const available = Object.keys(component.schema).join(', ');\n throw new Error(\n `Field '${field}' not found on '${componentId}'. Available: ${available}`,\n );\n }\n\n // Read previous value using existing serialization helper\n const previousValue = serializeComponentValue(\n entity,\n component,\n field,\n schemaField,\n );\n\n const type = schemaField.type;\n if (VECTOR_TYPES.has(type)) {\n // Vector types: write via getVectorView\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const view = (entity as any).getVectorView(component, field);\n // Value may arrive as a JSON string from MCP clients (e.g. \"[0, 1.2, -1.5]\")\n let arr = value;\n if (typeof arr === 'string') {\n try {\n arr = JSON.parse(arr);\n } catch {\n throw new Error(\n `${type} field '${field}': could not parse value string as JSON array.`,\n );\n }\n }\n if (!Array.isArray(arr) || arr.length !== view.length) {\n throw new Error(\n `${type} field '${field}' requires an array of ${view.length} numbers.`,\n );\n }\n for (let i = 0; i < view.length; i++) {\n view[i] = arr[i];\n }\n } else {\n // Scalar types: use setValue (handles validation, query updates)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (entity as any).setValue(component, field, value);\n }\n\n // Read back new value\n const newValue = serializeComponentValue(\n entity,\n component,\n field,\n schemaField,\n );\n\n return { entityIndex, componentId, field, previousValue, newValue };\n}\n\n// ---------------------------------------------------------------------------\n// ecs_snapshot / ecs_diff\n// ---------------------------------------------------------------------------\n\n// Module-scoped snapshot storage\nconst snapshots = new Map<string, EcsSnapshot>();\nconst DEFAULT_SNAPSHOT_CAPACITY = 2;\nconst MAX_SNAPSHOT_CAPACITY = 20;\nlet snapshotCapacity = DEFAULT_SNAPSHOT_CAPACITY;\nlet nextSnapshotSequence = 0;\n\nfunction nextSnapshotLabel(): string {\n let label: string;\n do {\n label = `snap-${nextSnapshotSequence++}`;\n } while (snapshots.has(label));\n return label;\n}\n\ninterface EntitySnapshot {\n entityIndex: number;\n name?: string;\n components: Record<string, Record<string, unknown>>;\n}\n\nexport interface EcsSnapshot {\n label: string;\n timestamp: number;\n frame: number;\n entities: EntitySnapshot[];\n}\n\nexport interface EcsSnapshotParams {\n label?: string;\n capacity?: number;\n}\n\nexport interface EcsSnapshotResult {\n label: string;\n entityCount: number;\n componentCount: number;\n storedSnapshots: string[];\n snapshotCapacity: number;\n evictedSnapshots: string[];\n}\n\nexport function ecsSnapshot(\n world: World,\n params: Record<string, unknown>,\n): EcsSnapshotResult {\n const { capacity, label: requestedLabel } = params as EcsSnapshotParams;\n const label = requestedLabel ?? nextSnapshotLabel();\n if (capacity !== undefined) {\n if (\n !Number.isInteger(capacity) ||\n capacity < DEFAULT_SNAPSHOT_CAPACITY ||\n capacity > MAX_SNAPSHOT_CAPACITY\n ) {\n throw new Error(\n `Snapshot capacity must be an integer from ${DEFAULT_SNAPSHOT_CAPACITY} to ${MAX_SNAPSHOT_CAPACITY}.`,\n );\n }\n snapshotCapacity = capacity;\n }\n\n // See comment in ecsFindEntities — indexLookup is internal to ELICS.\n const lookup = (world.entityManager as any).indexLookup as (\n | import('elics').Entity\n | null\n )[];\n const entities: EntitySnapshot[] = [];\n let componentCount = 0;\n\n for (let i = 0; i < lookup.length; i++) {\n const entity = lookup[i];\n if (!entity || !entity.active) {\n continue;\n }\n\n const comps = entity.getComponents();\n const components: Record<string, Record<string, unknown>> = {};\n\n for (const comp of comps) {\n const values: Record<string, unknown> = {};\n for (const key of Object.keys(comp.schema)) {\n values[key] = serializeComponentValue(\n entity,\n comp,\n key,\n comp.schema[key],\n );\n }\n components[comp.id] = values;\n componentCount++;\n }\n\n entities.push({\n entityIndex: entity.index,\n name: entity.object3D?.name || undefined,\n components,\n });\n }\n\n const snapshot: EcsSnapshot = {\n label,\n timestamp: performance.now(),\n frame: debugState.frameCount,\n entities,\n };\n\n // Replacing a named snapshot should make the new capture the most recent\n // entry. Map.set() preserves an existing key's insertion order, which could\n // otherwise evict the snapshot we just wrote when capacity is reduced.\n snapshots.delete(label);\n snapshots.set(label, snapshot);\n\n // Map insertion order makes retention deterministic: oldest labels leave\n // first and replaced labels move to the newest position.\n const evictedSnapshots: string[] = [];\n while (snapshots.size > snapshotCapacity) {\n const oldest = snapshots.keys().next().value!;\n snapshots.delete(oldest);\n evictedSnapshots.push(oldest);\n }\n\n return {\n label,\n entityCount: entities.length,\n componentCount,\n storedSnapshots: Array.from(snapshots.keys()),\n snapshotCapacity,\n evictedSnapshots,\n };\n}\n\n// --- ecs_diff ---\n\nexport interface EcsDiffParams {\n from: string;\n to: string;\n}\n\ninterface FieldDiff {\n field: string;\n from: unknown;\n to: unknown;\n}\n\ninterface ComponentDiff {\n componentId: string;\n status: 'changed' | 'added' | 'removed';\n fields?: FieldDiff[];\n}\n\ninterface EntityDiff {\n entityIndex: number;\n name?: string;\n status: 'changed' | 'added' | 'removed';\n components?: ComponentDiff[];\n}\n\nexport interface EcsDiffResult {\n from: string;\n to: string;\n frameDelta: number;\n timeDelta: number;\n entities: EntityDiff[];\n summary: { added: number; removed: number; changed: number };\n}\n\nexport function ecsDiff(\n _world: World,\n params: Record<string, unknown>,\n): EcsDiffResult {\n const { from, to } = params as unknown as EcsDiffParams;\n\n const snapFrom = snapshots.get(from);\n const snapTo = snapshots.get(to);\n if (!snapFrom) {\n throw new Error(\n `Snapshot '${from}' not found. Stored: ${Array.from(snapshots.keys()).join(', ')}`,\n );\n }\n if (!snapTo) {\n throw new Error(\n `Snapshot '${to}' not found. Stored: ${Array.from(snapshots.keys()).join(', ')}`,\n );\n }\n\n // Index by entityIndex\n const fromMap = new Map(snapFrom.entities.map((e) => [e.entityIndex, e]));\n const toMap = new Map(snapTo.entities.map((e) => [e.entityIndex, e]));\n\n const diffs: EntityDiff[] = [];\n let added = 0,\n removed = 0,\n changed = 0;\n\n // Check removed + changed\n for (const [idx, fromEntity] of fromMap) {\n const toEntity = toMap.get(idx);\n if (!toEntity) {\n diffs.push({\n entityIndex: idx,\n name: fromEntity.name,\n status: 'removed',\n });\n removed++;\n continue;\n }\n // Diff components\n const compDiffs: ComponentDiff[] = [];\n const allCompIds = new Set([\n ...Object.keys(fromEntity.components),\n ...Object.keys(toEntity.components),\n ]);\n for (const compId of allCompIds) {\n const fromComp = fromEntity.components[compId];\n const toComp = toEntity.components[compId];\n if (!fromComp) {\n compDiffs.push({ componentId: compId, status: 'added' });\n continue;\n }\n if (!toComp) {\n compDiffs.push({ componentId: compId, status: 'removed' });\n continue;\n }\n // Diff fields\n const fieldDiffs: FieldDiff[] = [];\n for (const field of Object.keys(fromComp)) {\n const fv = JSON.stringify(fromComp[field]);\n const tv = JSON.stringify(toComp[field]);\n if (fv !== tv) {\n fieldDiffs.push({ field, from: fromComp[field], to: toComp[field] });\n }\n }\n // Check for fields added in toComp\n for (const field of Object.keys(toComp)) {\n if (!(field in fromComp)) {\n fieldDiffs.push({\n field,\n from: undefined,\n to: toComp[field],\n });\n }\n }\n if (fieldDiffs.length > 0) {\n compDiffs.push({\n componentId: compId,\n status: 'changed',\n fields: fieldDiffs,\n });\n }\n }\n if (compDiffs.length > 0) {\n diffs.push({\n entityIndex: idx,\n name: fromEntity.name,\n status: 'changed',\n components: compDiffs,\n });\n changed++;\n }\n }\n\n // Check added\n for (const [idx, toEntity] of toMap) {\n if (!fromMap.has(idx)) {\n diffs.push({\n entityIndex: idx,\n name: toEntity.name,\n status: 'added',\n });\n added++;\n }\n }\n\n return {\n from,\n to,\n frameDelta: snapTo.frame - snapFrom.frame,\n timeDelta: snapTo.timestamp - snapFrom.timestamp,\n entities: diffs,\n summary: { added, removed, changed },\n };\n}\n"],"names":[],"mappings":"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"}
|
package/dist/mcp/index.d.ts
CHANGED
|
@@ -7,4 +7,5 @@
|
|
|
7
7
|
export { MCPRuntime } from './mcp-runtime.js';
|
|
8
8
|
export type { HierarchyNode, ObjectTransform } from './scene-tools.js';
|
|
9
9
|
export type { EcsPauseResult, EcsResumeResult, EcsStepParams, EcsStepResult, EcsQueryEntityParams, EcsQueryEntityResult, ComponentData, EcsFindEntitiesParams, EcsFindEntitiesResult, EntitySummary, SystemInfo, EcsListSystemsResult, ComponentInfo, EcsListComponentsResult, EcsToggleSystemParams, EcsToggleSystemResult, EcsSetComponentParams, EcsSetComponentResult, EcsSnapshot, EcsSnapshotParams, EcsSnapshotResult, EcsDiffParams, EcsDiffResult, } from './ecs-debug-tools.js';
|
|
10
|
+
export type { UiElementInspection, UiInspectParams, UiInspectResult, } from './ui-debug-tools.js';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/mcp/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvE,YAAY,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvE,YAAY,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,eAAe,GAChB,MAAM,qBAAqB,CAAC"}
|
|
@@ -15,6 +15,8 @@ import type { World } from '../ecs/world.js';
|
|
|
15
15
|
export declare class MCPRuntime {
|
|
16
16
|
private world;
|
|
17
17
|
constructor(world: World);
|
|
18
|
+
/** Release native XR before the development bridge navigates this page. */
|
|
19
|
+
prepareForReload(): Promise<void>;
|
|
18
20
|
/**
|
|
19
21
|
* Returns true if this runtime handles the given method.
|
|
20
22
|
* Used by vite-plugin-dev to route requests appropriately.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-runtime.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-runtime.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAyC7C;;;;;;GAMG;AACH,qBAAa,UAAU;IACT,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAIhC,2EAA2E;IACrE,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuCvC;;;OAGG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIhC;;;;;OAKG;IACG,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,OAAO,CAAC;CAsCpB"}
|
package/dist/mcp/mcp-runtime.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { installDebugHook, ecsDiff, ecsSnapshot, ecsSetComponent, ecsToggleSystem, ecsListComponents, ecsListSystems, ecsFindEntities, ecsQueryEntity, ecsStep, ecsResume, ecsPause } from './ecs-debug-tools.js';
|
|
2
2
|
import { getRenderStats, getObjectTransform, getSceneHierarchy } from './scene-tools.js';
|
|
3
|
+
import { uiInspect } from './ui-debug-tools.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
@@ -22,6 +23,7 @@ const SUPPORTED_METHODS = [
|
|
|
22
23
|
'ecs_set_component',
|
|
23
24
|
'ecs_snapshot',
|
|
24
25
|
'ecs_diff',
|
|
26
|
+
'ui_inspect',
|
|
25
27
|
];
|
|
26
28
|
/**
|
|
27
29
|
* MCP Runtime for IWSDK that provides framework-specific tools.
|
|
@@ -35,6 +37,43 @@ class MCPRuntime {
|
|
|
35
37
|
this.world = world;
|
|
36
38
|
installDebugHook(world);
|
|
37
39
|
}
|
|
40
|
+
/** Release native XR before the development bridge navigates this page. */
|
|
41
|
+
async prepareForReload() {
|
|
42
|
+
var _a;
|
|
43
|
+
// Three adopts the session before World finishes reference-space setup.
|
|
44
|
+
// Reload can arrive during that interval as well as after full adoption.
|
|
45
|
+
const session = (_a = this.world.session) !== null && _a !== void 0 ? _a : this.world.renderer.xr.getSession();
|
|
46
|
+
if (!session) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// Quest resolves end() before delivering the end event. Navigation must
|
|
50
|
+
// wait for that event so the renderer and compositor can release XR.
|
|
51
|
+
await new Promise((resolve, reject) => {
|
|
52
|
+
const finish = (error) => {
|
|
53
|
+
clearTimeout(timer);
|
|
54
|
+
session.removeEventListener('end', ended);
|
|
55
|
+
if (error !== undefined) {
|
|
56
|
+
reject(error);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
resolve();
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
const ended = () => finish();
|
|
63
|
+
const timer = setTimeout(() => finish(new Error('Native XR did not finish ending before reload.')), 10000);
|
|
64
|
+
session.addEventListener('end', ended, { once: true });
|
|
65
|
+
void Promise.resolve()
|
|
66
|
+
.then(() => session.end())
|
|
67
|
+
.catch((error) => {
|
|
68
|
+
// The app, device UI, or another command may already be ending XR.
|
|
69
|
+
// Chromium rejects a second end(); the pending end event remains
|
|
70
|
+
// the teardown boundary, with the same deadline as the first call.
|
|
71
|
+
if ((error === null || error === void 0 ? void 0 : error.name) !== 'InvalidStateError') {
|
|
72
|
+
finish(error !== null && error !== void 0 ? error : new Error('Native XR rejected session teardown.'));
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
}
|
|
38
77
|
/**
|
|
39
78
|
* Returns true if this runtime handles the given method.
|
|
40
79
|
* Used by vite-plugin-dev to route requests appropriately.
|
|
@@ -78,6 +117,8 @@ class MCPRuntime {
|
|
|
78
117
|
return ecsSnapshot(this.world, params);
|
|
79
118
|
case 'ecs_diff':
|
|
80
119
|
return ecsDiff(this.world, params);
|
|
120
|
+
case 'ui_inspect':
|
|
121
|
+
return uiInspect(this.world, params);
|
|
81
122
|
default:
|
|
82
123
|
throw new Error(`Unknown IWSDK method '${method}'. Available methods: ${SUPPORTED_METHODS.join(', ')}`);
|
|
83
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-runtime.js","sources":["../../src/mcp/mcp-runtime.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"mcp-runtime.js","sources":["../../src/mcp/mcp-runtime.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport type { World } from '../ecs/world.js';\nimport {\n installDebugHook,\n ecsPause,\n ecsResume,\n ecsStep,\n ecsQueryEntity,\n ecsFindEntities,\n ecsListSystems,\n ecsListComponents,\n ecsToggleSystem,\n ecsSetComponent,\n ecsSnapshot,\n ecsDiff,\n} from './ecs-debug-tools.js';\nimport {\n getObjectTransform,\n getRenderStats,\n getSceneHierarchy,\n} from './scene-tools.js';\nimport { uiInspect } from './ui-debug-tools.js';\n\nconst SUPPORTED_METHODS = [\n 'get_scene_hierarchy',\n 'get_object_transform',\n 'get_render_stats',\n 'ecs_pause',\n 'ecs_resume',\n 'ecs_step',\n 'ecs_query_entity',\n 'ecs_find_entities',\n 'ecs_list_systems',\n 'ecs_list_components',\n 'ecs_toggle_system',\n 'ecs_set_component',\n 'ecs_snapshot',\n 'ecs_diff',\n 'ui_inspect',\n] as const;\ntype SupportedMethod = (typeof SUPPORTED_METHODS)[number];\n\n/**\n * MCP Runtime for IWSDK that provides framework-specific tools.\n * This is set on window.FRAMEWORK_MCP_RUNTIME during World.create()\n * for the vite-plugin-dev to route requests to.\n *\n * @category Runtime\n */\nexport class MCPRuntime {\n constructor(private world: World) {\n installDebugHook(world);\n }\n\n /** Release native XR before the development bridge navigates this page. */\n async prepareForReload(): Promise<void> {\n // Three adopts the session before World finishes reference-space setup.\n // Reload can arrive during that interval as well as after full adoption.\n const session = this.world.session ?? this.world.renderer.xr.getSession();\n if (!session) {\n return;\n }\n // Quest resolves end() before delivering the end event. Navigation must\n // wait for that event so the renderer and compositor can release XR.\n await new Promise<void>((resolve, reject) => {\n const finish = (error?: unknown) => {\n clearTimeout(timer);\n session.removeEventListener('end', ended);\n if (error !== undefined) {\n reject(error);\n } else {\n resolve();\n }\n };\n const ended = () => finish();\n const timer = setTimeout(\n () =>\n finish(new Error('Native XR did not finish ending before reload.')),\n 10000,\n );\n session.addEventListener('end', ended, { once: true });\n void Promise.resolve()\n .then(() => session.end())\n .catch((error) => {\n // The app, device UI, or another command may already be ending XR.\n // Chromium rejects a second end(); the pending end event remains\n // the teardown boundary, with the same deadline as the first call.\n if (error?.name !== 'InvalidStateError') {\n finish(error ?? new Error('Native XR rejected session teardown.'));\n }\n });\n });\n }\n\n /**\n * Returns true if this runtime handles the given method.\n * Used by vite-plugin-dev to route requests appropriately.\n */\n handles(method: string): boolean {\n return SUPPORTED_METHODS.includes(method as SupportedMethod);\n }\n\n /**\n * Dispatch a method call. Returns result or throws an error.\n * @param method - The MCP tool name (e.g., 'get_scene_hierarchy')\n * @param params - Parameters passed to the tool\n * @returns Promise resolving to the tool result\n */\n async dispatch(\n method: string,\n params: Record<string, unknown>,\n ): Promise<unknown> {\n switch (method) {\n case 'get_scene_hierarchy':\n return getSceneHierarchy(this.world, params);\n case 'get_object_transform':\n return getObjectTransform(this.world, params);\n case 'get_render_stats':\n return getRenderStats(this.world);\n case 'ecs_pause':\n return ecsPause(this.world);\n case 'ecs_resume':\n return ecsResume(this.world);\n case 'ecs_step':\n return ecsStep(this.world, params);\n case 'ecs_query_entity':\n return ecsQueryEntity(this.world, params);\n case 'ecs_find_entities':\n return ecsFindEntities(this.world, params);\n case 'ecs_list_systems':\n return ecsListSystems(this.world);\n case 'ecs_list_components':\n return ecsListComponents();\n case 'ecs_toggle_system':\n return ecsToggleSystem(this.world, params);\n case 'ecs_set_component':\n return ecsSetComponent(this.world, params);\n case 'ecs_snapshot':\n return ecsSnapshot(this.world, params);\n case 'ecs_diff':\n return ecsDiff(this.world, params);\n case 'ui_inspect':\n return uiInspect(this.world, params);\n default:\n throw new Error(\n `Unknown IWSDK method '${method}'. Available methods: ${SUPPORTED_METHODS.join(', ')}`,\n );\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-tools.js","sources":["../../src/mcp/scene-tools.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scene-tools.js","sources":["../../src/mcp/scene-tools.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { sha256Bytes } from '@iwsdk/scene-composition';\nimport type {\n JsonObject,\n SceneEnvironment,\n SceneNodeFramingRole,\n SceneNodeContent,\n SceneResources,\n SceneMaterialTextures,\n Sha256,\n} from '@iwsdk/scene-composition';\nimport type { World } from '../ecs/world.js';\nimport {\n ACESFilmicToneMapping,\n BasicShadowMap,\n BackSide,\n Box3,\n CineonToneMapping,\n DoubleSide,\n FrontSide,\n LinearToneMapping,\n NoToneMapping,\n Object3D,\n PCFShadowMap,\n PCFSoftShadowMap,\n Quaternion,\n ReinhardToneMapping,\n Vector3,\n} from '../runtime/index.js';\n\n/**\n * Hierarchy node returned by get_scene_hierarchy\n */\nexport interface HierarchyNode {\n name: string;\n uuid: string;\n objectType?: string;\n sceneNodeId?: string;\n sourceNodeId?: string;\n runtimeHash?: Sha256;\n contentType?: SceneNodeContent['type'];\n content?: SceneNodeContent;\n framingRole?: SceneNodeFramingRole;\n metadata?: JsonObject;\n assetId?: string;\n resourceRefs?: HierarchyResourceRefs;\n instanceIds?: string[];\n truncatedInstances?: number;\n resources?: SceneResources;\n environment?: SceneEnvironment;\n documentMetadata?: JsonObject;\n entityIndex?: number;\n children?: HierarchyNode[];\n /** Present when children were truncated due to breadth limit. */\n truncatedChildren?: number;\n}\n\nexport interface HierarchyResourceRefs {\n assetId?: string;\n prefabId?: string;\n}\n\n/**\n * Transform data returned by get_object_transform\n */\nexport interface ObjectTransform {\n localPosition: [number, number, number];\n localQuaternion: [number, number, number, number];\n localScale: [number, number, number];\n globalPosition: [number, number, number];\n globalQuaternion: [number, number, number, number];\n globalScale: [number, number, number];\n positionRelativeToXROrigin: [number, number, number] | null;\n}\n\nexport interface RuntimeRenderStats {\n available: true;\n calls: number;\n triangles: number;\n points: number;\n lines: number;\n geometries: number;\n textures: number;\n programs: number;\n meshCount: number;\n materialCount: number;\n shadowCasters: number;\n worldBounds: {\n min: [number, number, number];\n max: [number, number, number];\n size: [number, number, number];\n } | null;\n /** Bounds of framing-role content geometry; support geometry is excluded. */\n framingBounds: {\n min: [number, number, number];\n max: [number, number, number];\n size: [number, number, number];\n } | null;\n environment: {\n canvas: { width: number; height: number };\n pixelRatio: number;\n renderer: string;\n shadows: boolean;\n toneMapping: number;\n };\n sceneAssets: RuntimeSceneAssetState[];\n sceneEnvironment: RuntimeSceneEnvironmentState;\n sceneLights: RuntimeSceneLightState[];\n sceneMaterials: RuntimeSceneMaterialState[];\n}\n\nexport interface RuntimeSceneAssetState {\n id: string;\n meshCount: number;\n}\n\nexport interface RuntimeSceneEnvironmentState {\n background:\n | { color: string; type: 'color' }\n | {\n bottomColor: string;\n exponent: number;\n topColor: string;\n type: 'gradient';\n }\n | { type: 'transparent' }\n | null;\n clearAlpha: number;\n exposure: number;\n fog:\n | { color: string; far: number; near: number; type: 'linear' }\n | { color: string; density: number; type: 'exponential' }\n | null;\n shadows: boolean;\n shadowMapType: NonNullable<SceneEnvironment['shadowMapType']> | 'unknown';\n imageBasedLighting: {\n intensity: number;\n sigma: number;\n texture: boolean;\n type: 'room';\n } | null;\n toneMapping: NonNullable<SceneEnvironment['toneMapping']> | 'unknown';\n}\n\nexport interface RuntimeSceneLightState {\n angleDeg?: number;\n castShadow: boolean;\n color?: string;\n decay?: number;\n distance?: number;\n groundColor?: string;\n intensity: number;\n nodeId: string;\n penumbra?: number;\n skyColor?: string;\n sourceNodeId?: string;\n type: string;\n width?: number;\n height?: number;\n shadow?: Record<string, unknown>;\n}\n\nexport interface RuntimeSceneProceduralTextureState {\n algorithm: string;\n channel: string;\n dataHash: string;\n height: number;\n recipeHash: string;\n width: number;\n}\n\nexport interface RuntimeSceneMaterialState {\n baseColor: string;\n emissive?: string;\n emissiveIntensity?: number;\n flatShading?: boolean;\n id: string;\n metalness?: number;\n model: 'basic' | 'standard' | 'physical' | 'unknown';\n opacity: number;\n roughness?: number;\n side: 'front' | 'back' | 'double' | 'unknown';\n textures?: Partial<\n Record<keyof SceneMaterialTextures, RuntimeSceneProceduralTextureState>\n >;\n clearcoat?: number;\n clearcoatRoughness?: number;\n ior?: number;\n envMapIntensity?: number;\n sheen?: number;\n sheenColor?: string;\n sheenRoughness?: number;\n transmission?: number;\n thickness?: number;\n attenuationColor?: string;\n attenuationDistance?: number | 'infinity';\n specularIntensity?: number;\n specularColor?: string;\n anisotropy?: number;\n anisotropyRotationDeg?: number;\n}\n\ninterface GetSceneHierarchyParams {\n parentId?: string;\n maxDepth?: number;\n maxChildren?: number;\n}\n\ninterface GetObjectTransformParams {\n nodeId?: string;\n uuid?: string;\n}\n\n/** Default maximum number of children per node before truncation. */\nconst DEFAULT_MAX_CHILDREN = 50;\n\n/** Read raw renderer counters and scene resource counts without applying a profile. */\nexport function getRenderStats(world: World): RuntimeRenderStats {\n const geometries = new Set<unknown>();\n const materials = new Set<unknown>();\n const sceneAssets: RuntimeSceneAssetState[] = [];\n const sceneLights: RuntimeSceneLightState[] = [];\n const sceneMaterials: RuntimeSceneMaterialState[] = [];\n let meshCount = 0;\n let shadowCasters = 0;\n world.scene.traverse((object) => {\n const assetId = object.userData?.iwsdkSceneAssetId;\n if (typeof assetId === 'string') {\n let assetMeshCount = 0;\n object.traverse((descendant) => {\n if ((descendant as Object3D & { isMesh?: boolean }).isMesh === true) {\n assetMeshCount += 1;\n }\n });\n sceneAssets.push({\n id: assetId,\n meshCount: assetMeshCount,\n });\n }\n const lightState = inspectSceneLight(object);\n if (lightState != null) {\n sceneLights.push(lightState);\n }\n const renderable = object as Object3D & {\n castShadow?: boolean;\n geometry?: unknown;\n isMesh?: boolean;\n material?: unknown | unknown[];\n };\n if (renderable.isMesh !== true) {\n return;\n }\n meshCount += 1;\n if (renderable.castShadow === true) {\n shadowCasters += 1;\n }\n if (renderable.geometry != null) {\n geometries.add(renderable.geometry);\n }\n const objectMaterials = Array.isArray(renderable.material)\n ? renderable.material\n : [renderable.material];\n objectMaterials.forEach((material) => {\n if (material != null) {\n const firstUse = !materials.has(material);\n materials.add(material);\n if (firstUse) {\n const materialState = inspectSceneMaterial(material);\n if (materialState != null) {\n sceneMaterials.push(materialState);\n }\n }\n }\n });\n });\n\n world.scene.updateMatrixWorld(true);\n const activeRoot = world.getActiveRoot();\n const worldBounds = serializeRuntimeBounds(\n new Box3().setFromObject(activeRoot),\n );\n const framingBounds = serializeRuntimeBounds(\n measureFramingBounds(activeRoot),\n );\n const info = world.renderer.info;\n return {\n available: true,\n calls: info.render.calls,\n triangles: info.render.triangles,\n points: info.render.points,\n lines: info.render.lines,\n geometries: info.memory.geometries,\n textures: info.memory.textures,\n programs: info.programs?.length ?? 0,\n meshCount,\n materialCount: materials.size,\n shadowCasters,\n framingBounds,\n worldBounds,\n environment: {\n canvas: {\n width: world.renderer.domElement.width,\n height: world.renderer.domElement.height,\n },\n pixelRatio: world.renderer.getPixelRatio(),\n renderer: world.renderer.constructor.name,\n shadows: world.renderer.shadowMap.enabled,\n toneMapping: world.renderer.toneMapping,\n },\n sceneAssets: sceneAssets.sort(compareRuntimeState),\n sceneEnvironment: inspectSceneEnvironment(world),\n sceneLights: sceneLights.sort(compareRuntimeState),\n sceneMaterials: sceneMaterials.sort(compareRuntimeState),\n };\n}\n\ninterface RuntimeBoundsGeometry {\n boundingBox: Box3 | null;\n computeBoundingBox?: () => void;\n}\n\ninterface RuntimeBoundsObject extends Object3D {\n boundingBox?: Box3 | null;\n computeBoundingBox?: () => void;\n geometry?: RuntimeBoundsGeometry;\n isInstancedMesh?: boolean;\n isSkinnedMesh?: boolean;\n}\n\nfunction measureFramingBounds(root: Object3D): Box3 {\n const bounds = new Box3().makeEmpty();\n root.traverseVisible((object) => {\n if (object.userData?.iwsdkSceneFramingRole === 'support') {\n return;\n }\n expandByOwnGeometry(bounds, object as RuntimeBoundsObject);\n });\n return bounds;\n}\n\nfunction expandByOwnGeometry(bounds: Box3, object: RuntimeBoundsObject): void {\n const geometry = object.geometry;\n if (geometry == null) {\n return;\n }\n let localBounds: Box3 | null | undefined;\n if (object.isInstancedMesh === true || object.isSkinnedMesh === true) {\n object.computeBoundingBox?.();\n localBounds = object.boundingBox;\n } else {\n geometry.computeBoundingBox?.();\n localBounds = geometry.boundingBox;\n }\n if (localBounds == null || localBounds.isEmpty()) {\n return;\n }\n bounds.union(localBounds.clone().applyMatrix4(object.matrixWorld));\n}\n\nfunction serializeRuntimeBounds(\n bounds: Box3,\n): RuntimeRenderStats['worldBounds'] {\n if (bounds.isEmpty()) {\n return null;\n }\n return {\n min: bounds.min.toArray() as [number, number, number],\n max: bounds.max.toArray() as [number, number, number],\n size: bounds.getSize(new Vector3()).toArray() as [number, number, number],\n };\n}\n\ninterface RuntimeColorLike {\n getHexString?: () => string;\n}\n\ninterface RuntimeMaterialLike {\n alphaMap?: RuntimeTextureLike;\n anisotropy?: number;\n anisotropyRotation?: number;\n aoMap?: RuntimeTextureLike;\n attenuationColor?: RuntimeColorLike;\n attenuationDistance?: number;\n bumpMap?: RuntimeTextureLike;\n clearcoat?: number;\n clearcoatRoughness?: number;\n color?: RuntimeColorLike;\n emissive?: RuntimeColorLike;\n emissiveMap?: RuntimeTextureLike;\n emissiveIntensity?: number;\n envMapIntensity?: number;\n flatShading?: boolean;\n isMeshBasicMaterial?: boolean;\n isMeshPhysicalMaterial?: boolean;\n isMeshStandardMaterial?: boolean;\n ior?: number;\n map?: RuntimeTextureLike;\n metalness?: number;\n metalnessMap?: RuntimeTextureLike;\n normalMap?: RuntimeTextureLike;\n opacity?: number;\n roughness?: number;\n roughnessMap?: RuntimeTextureLike;\n sheen?: number;\n sheenColor?: RuntimeColorLike;\n sheenRoughness?: number;\n side?: number;\n specularColor?: RuntimeColorLike;\n specularIntensity?: number;\n thickness?: number;\n transmission?: number;\n userData?: Record<string, unknown>;\n}\n\ninterface RuntimeTextureLike {\n image?: { data?: Uint8Array; height?: number; width?: number };\n userData?: Record<string, unknown>;\n}\n\nfunction inspectSceneMaterial(\n value: unknown,\n): RuntimeSceneMaterialState | null {\n const material = value as RuntimeMaterialLike;\n const id = material.userData?.iwsdkSceneMaterialId;\n if (typeof id !== 'string') {\n return null;\n }\n const model = material.isMeshPhysicalMaterial\n ? 'physical'\n : material.isMeshStandardMaterial\n ? 'standard'\n : material.isMeshBasicMaterial\n ? 'basic'\n : 'unknown';\n const textures = inspectMaterialTextures(material);\n return {\n baseColor: colorToHex(material.color) ?? '#000000',\n ...(model === 'standard' || model === 'physical'\n ? {\n emissive: colorToHex(material.emissive) ?? '#000000',\n emissiveIntensity: finiteNumber(material.emissiveIntensity, 1),\n flatShading: material.flatShading === true,\n metalness: finiteNumber(material.metalness, 0),\n roughness: finiteNumber(material.roughness, 0),\n }\n : {}),\n ...(model === 'physical'\n ? {\n anisotropy: finiteNumber(material.anisotropy, 0),\n anisotropyRotationDeg:\n (finiteNumber(material.anisotropyRotation, 0) * 180) / Math.PI,\n attenuationColor: colorToHex(material.attenuationColor) ?? '#ffffff',\n attenuationDistance:\n material.attenuationDistance === Infinity\n ? ('infinity' as const)\n : finiteNumber(material.attenuationDistance, 0),\n clearcoat: finiteNumber(material.clearcoat, 0),\n clearcoatRoughness: finiteNumber(material.clearcoatRoughness, 0),\n envMapIntensity: finiteNumber(material.envMapIntensity, 1),\n ior: finiteNumber(material.ior, 1.5),\n sheen: finiteNumber(material.sheen, 0),\n sheenColor: colorToHex(material.sheenColor) ?? '#000000',\n sheenRoughness: finiteNumber(material.sheenRoughness, 1),\n specularColor: colorToHex(material.specularColor) ?? '#ffffff',\n specularIntensity: finiteNumber(material.specularIntensity, 1),\n thickness: finiteNumber(material.thickness, 0),\n transmission: finiteNumber(material.transmission, 0),\n }\n : {}),\n id,\n model,\n opacity: finiteNumber(material.opacity, 1),\n side: materialSideName(material.side),\n ...(Object.keys(textures).length === 0 ? {} : { textures }),\n };\n}\n\nfunction inspectMaterialTextures(\n material: RuntimeMaterialLike,\n): Partial<\n Record<keyof SceneMaterialTextures, RuntimeSceneProceduralTextureState>\n> {\n const result: Partial<\n Record<keyof SceneMaterialTextures, RuntimeSceneProceduralTextureState>\n > = {};\n const mappings: [\n keyof SceneMaterialTextures,\n RuntimeTextureLike | undefined,\n ][] = [\n ['albedo', material.map],\n ['emissive', material.emissiveMap],\n ['roughness', material.roughnessMap],\n ['metalness', material.metalnessMap],\n ['ambientOcclusion', material.aoMap],\n ['alpha', material.alphaMap],\n ['normal', material.normalMap],\n ['bump', material.bumpMap],\n ];\n for (const [channel, texture] of mappings) {\n const metadata = texture?.userData?.iwsdkSceneProceduralTexture;\n const data = texture?.image?.data;\n if (\n metadata == null ||\n typeof metadata !== 'object' ||\n data == null ||\n !(data instanceof Uint8Array)\n ) {\n continue;\n }\n const values = metadata as Record<string, unknown>;\n result[channel] = {\n algorithm: String(values.algorithm ?? ''),\n channel,\n dataHash: sha256Bytes(data),\n height: finiteNumber(texture?.image?.height, 0),\n recipeHash: String(values.recipeHash ?? ''),\n width: finiteNumber(texture?.image?.width, 0),\n };\n }\n return result;\n}\n\nfunction inspectSceneLight(object: Object3D): RuntimeSceneLightState | null {\n const light = object as Object3D & {\n angle?: number;\n castShadow?: boolean;\n color?: RuntimeColorLike;\n decay?: number;\n distance?: number;\n groundColor?: RuntimeColorLike;\n intensity?: number;\n isLight?: boolean;\n penumbra?: number;\n target?: { position?: { toArray?: () => number[] } };\n width?: number;\n height?: number;\n shadow?: {\n bias?: number;\n blurSamples?: number;\n camera?: Record<string, unknown>;\n mapSize?: { toArray?: () => number[] };\n normalBias?: number;\n radius?: number;\n };\n };\n const nodeId = light.userData?.iwsdkSceneNodeId;\n if (light.isLight !== true || typeof nodeId !== 'string') {\n return null;\n }\n const type = lightTypeName(light.type);\n const sourceNodeId = light.userData?.iwsdkSceneSourceNodeId;\n const color = colorToHex(light.color);\n const groundColor = colorToHex(light.groundColor);\n return {\n ...(type === 'spot' && typeof light.angle === 'number'\n ? { angleDeg: (light.angle * 180) / Math.PI }\n : {}),\n castShadow: light.castShadow === true,\n ...(color != null\n ? type === 'hemisphere'\n ? { skyColor: color }\n : { color }\n : {}),\n ...((type === 'point' || type === 'spot') && typeof light.decay === 'number'\n ? { decay: light.decay }\n : {}),\n ...((type === 'point' || type === 'spot') &&\n typeof light.distance === 'number'\n ? { distance: light.distance }\n : {}),\n ...(type === 'hemisphere' && groundColor != null ? { groundColor } : {}),\n ...(type === 'rect-area' && typeof light.width === 'number'\n ? { width: light.width }\n : {}),\n ...(type === 'rect-area' && typeof light.height === 'number'\n ? { height: light.height }\n : {}),\n intensity: finiteNumber(light.intensity, 1),\n nodeId,\n ...(type === 'spot' && typeof light.penumbra === 'number'\n ? { penumbra: light.penumbra }\n : {}),\n ...(typeof sourceNodeId === 'string' ? { sourceNodeId } : {}),\n ...(light.castShadow === true && light.shadow != null\n ? { shadow: inspectSceneShadow(light.shadow, type) }\n : {}),\n type,\n };\n}\n\nfunction inspectSceneShadow(\n shadow: NonNullable<\n (Object3D & { shadow?: Record<string, unknown> })['shadow']\n >,\n lightType: string,\n): Record<string, unknown> {\n const value = shadow as {\n bias?: number;\n blurSamples?: number;\n camera?: {\n bottom?: number;\n far?: number;\n left?: number;\n near?: number;\n right?: number;\n top?: number;\n };\n mapSize?: { toArray?: () => number[] };\n normalBias?: number;\n radius?: number;\n };\n const mapSize = value.mapSize?.toArray?.();\n return {\n bias: finiteNumber(value.bias, 0),\n ...(value.camera != null\n ? {\n camera: {\n far: finiteNumber(value.camera.far, 0),\n near: finiteNumber(value.camera.near, 0),\n ...(lightType === 'directional'\n ? {\n bottom: finiteNumber(value.camera.bottom, 0),\n left: finiteNumber(value.camera.left, 0),\n right: finiteNumber(value.camera.right, 0),\n top: finiteNumber(value.camera.top, 0),\n }\n : {}),\n },\n }\n : {}),\n mapSize:\n Array.isArray(mapSize) && mapSize.length >= 2\n ? mapSize.slice(0, 2)\n : [512, 512],\n normalBias: finiteNumber(value.normalBias, 0),\n radius: finiteNumber(value.radius, 1),\n };\n}\n\nfunction inspectSceneEnvironment(world: World): RuntimeSceneEnvironmentState {\n const background = world.scene.background as\n | (RuntimeColorLike & {\n isColor?: boolean;\n isTexture?: boolean;\n userData?: Record<string, unknown>;\n })\n | null;\n const environmentTexture = world.scene.environment as {\n isTexture?: boolean;\n userData?: Record<string, unknown>;\n } | null;\n const gradient = background?.userData?.iwsdkSceneGradientBackground as\n | {\n bottomColor?: unknown;\n exponent?: unknown;\n topColor?: unknown;\n type?: unknown;\n }\n | undefined;\n const imageBasedLighting = environmentTexture?.userData\n ?.iwsdkSceneImageBasedLighting as\n | { intensity?: unknown; sigma?: unknown; type?: unknown }\n | undefined;\n const fog = world.scene.fog as {\n color?: RuntimeColorLike;\n density?: number;\n far?: number;\n isFog?: boolean;\n isFogExp2?: boolean;\n near?: number;\n } | null;\n return {\n background:\n background?.isColor === true\n ? { color: colorToHex(background) ?? '#000000', type: 'color' }\n : background?.isTexture === true && gradient?.type === 'gradient'\n ? {\n bottomColor: normalizeHexColor(gradient.bottomColor),\n exponent: finiteNumber(gradient.exponent, 1),\n topColor: normalizeHexColor(gradient.topColor),\n type: 'gradient',\n }\n : background == null && world.renderer.getClearAlpha() === 0\n ? { type: 'transparent' }\n : null,\n clearAlpha: world.renderer.getClearAlpha(),\n exposure: world.renderer.toneMappingExposure,\n imageBasedLighting:\n imageBasedLighting?.type === 'room'\n ? {\n intensity: world.scene.environmentIntensity,\n sigma: finiteNumber(imageBasedLighting.sigma, 0.04),\n texture: environmentTexture?.isTexture === true,\n type: 'room',\n }\n : null,\n fog:\n fog?.isFog === true\n ? {\n color: colorToHex(fog.color) ?? '#000000',\n far: finiteNumber(fog.far, 0),\n near: finiteNumber(fog.near, 0),\n type: 'linear',\n }\n : fog?.isFogExp2 === true\n ? {\n color: colorToHex(fog.color) ?? '#000000',\n density: finiteNumber(fog.density, 0),\n type: 'exponential',\n }\n : null,\n shadows: world.renderer.shadowMap.enabled,\n shadowMapType: shadowMapTypeName(world.renderer.shadowMap.type),\n toneMapping: toneMappingName(world.renderer.toneMapping),\n };\n}\n\nfunction shadowMapTypeName(\n value: number,\n): RuntimeSceneEnvironmentState['shadowMapType'] {\n switch (value) {\n case BasicShadowMap:\n return 'basic';\n case PCFShadowMap:\n return 'pcf';\n case PCFSoftShadowMap:\n return 'pcf-soft';\n default:\n return 'unknown';\n }\n}\n\nfunction colorToHex(value: RuntimeColorLike | undefined): string | null {\n const hex = value?.getHexString?.();\n return typeof hex === 'string' && /^[0-9a-f]{6}$/i.test(hex)\n ? `#${hex.toLowerCase()}`\n : null;\n}\n\nfunction normalizeHexColor(value: unknown): string {\n const color = String(value);\n return /^#[0-9a-f]{6}$/i.test(color) ? color.toLowerCase() : color;\n}\n\nfunction finiteNumber(value: unknown, fallback: number): number {\n return typeof value === 'number' && Number.isFinite(value) ? value : fallback;\n}\n\nfunction lightTypeName(type: string): string {\n if (type === 'RectAreaLight') {\n return 'rect-area';\n }\n return type.endsWith('Light')\n ? type.slice(0, -'Light'.length).toLowerCase()\n : type.toLowerCase();\n}\n\nfunction materialSideName(\n side: number | undefined,\n): RuntimeSceneMaterialState['side'] {\n switch (side) {\n case FrontSide:\n return 'front';\n case BackSide:\n return 'back';\n case DoubleSide:\n return 'double';\n default:\n return 'unknown';\n }\n}\n\nfunction toneMappingName(\n value: number,\n): RuntimeSceneEnvironmentState['toneMapping'] {\n switch (value) {\n case NoToneMapping:\n return 'none';\n case LinearToneMapping:\n return 'linear';\n case ReinhardToneMapping:\n return 'reinhard';\n case CineonToneMapping:\n return 'cineon';\n case ACESFilmicToneMapping:\n return 'aces';\n default:\n return 'unknown';\n }\n}\n\nfunction compareRuntimeState(\n left:\n | RuntimeSceneAssetState\n | RuntimeSceneLightState\n | RuntimeSceneMaterialState,\n right:\n | RuntimeSceneAssetState\n | RuntimeSceneLightState\n | RuntimeSceneMaterialState,\n): number {\n return JSON.stringify(left).localeCompare(JSON.stringify(right));\n}\n\n/**\n * Get the Three.js scene hierarchy as a JSON tree.\n * Returns object identity, native scene render metadata, and entity indices.\n */\nexport function getSceneHierarchy(\n world: World,\n params: Record<string, unknown>,\n): HierarchyNode {\n const {\n parentId,\n maxDepth = 5,\n maxChildren = DEFAULT_MAX_CHILDREN,\n } = params as unknown as GetSceneHierarchyParams;\n\n let root: Object3D | undefined;\n\n if (parentId) {\n root = world.scene.getObjectByProperty('uuid', parentId);\n if (!root) {\n throw new Error(\n `Object not found with UUID '${parentId}'. Use get_scene_hierarchy without parentId to see all available objects.`,\n );\n }\n } else {\n root = world.scene;\n }\n\n return buildHierarchy(root, 0, maxDepth, maxChildren);\n}\n\nfunction buildHierarchy(\n obj: Object3D,\n depth: number,\n maxDepth: number,\n maxChildren: number,\n): HierarchyNode {\n const node: HierarchyNode = {\n name: obj.name || '(unnamed)',\n uuid: obj.uuid,\n };\n if (typeof obj.type === 'string' && obj.type.length > 0) {\n node.objectType = obj.type;\n }\n if (typeof obj.userData?.iwsdkSceneNodeId === 'string') {\n node.sceneNodeId = obj.userData.iwsdkSceneNodeId;\n }\n if (typeof obj.userData?.iwsdkSceneSourceNodeId === 'string') {\n node.sourceNodeId = obj.userData.iwsdkSceneSourceNodeId;\n }\n const runtimeHash = cloneRuntimeHash(obj.userData?.iwsdkSceneRuntimeHash);\n if (runtimeHash != null) {\n node.runtimeHash = runtimeHash;\n }\n const content = cloneSceneContent(obj.userData?.iwsdkSceneContent);\n if (content != null) {\n node.contentType = content.type;\n node.content = content;\n }\n const framingRole = obj.userData?.iwsdkSceneFramingRole;\n if (framingRole === 'content' || framingRole === 'support') {\n node.framingRole = framingRole;\n }\n const metadata = cloneJsonObject(obj.userData?.iwsdkSceneMetadata);\n if (metadata != null) {\n node.metadata = metadata;\n }\n const resourceRefs = getResourceRefs(content);\n const userDataAssetId = obj.userData?.iwsdkSceneAssetId;\n if (typeof userDataAssetId === 'string') {\n resourceRefs.assetId = userDataAssetId;\n }\n if (Object.keys(resourceRefs).length > 0) {\n node.resourceRefs = resourceRefs;\n node.assetId = resourceRefs.assetId;\n }\n const instanceIds = cloneStringArray(obj.userData?.iwsdkSceneInstanceIds);\n if (instanceIds != null) {\n const limit = Math.max(1, maxChildren);\n node.instanceIds = instanceIds.slice(0, limit);\n if (instanceIds.length > limit) {\n node.truncatedInstances = instanceIds.length - limit;\n }\n }\n const resources = cloneJsonObjectAs<SceneResources>(\n obj.userData?.iwsdkSceneResources,\n );\n if (resources != null) {\n node.resources = resources;\n }\n const environment = cloneJsonObjectAs<SceneEnvironment>(\n obj.userData?.iwsdkSceneEnvironment,\n );\n if (environment != null) {\n node.environment = environment;\n }\n const documentMetadata = cloneJsonObject(\n obj.userData?.iwsdkSceneDocumentMetadata,\n );\n if (documentMetadata != null) {\n node.documentMetadata = documentMetadata;\n }\n\n // Check if Object3D has associated entity (entityIdx is set by Transform component)\n if ('entityIdx' in obj && typeof (obj as any).entityIdx === 'number') {\n node.entityIndex = (obj as any).entityIdx;\n }\n\n if (depth < maxDepth && obj.children.length > 0) {\n const total = obj.children.length;\n const limit = Math.max(1, maxChildren);\n const childrenToInclude = obj.children.slice(0, limit);\n node.children = childrenToInclude.map((child) =>\n buildHierarchy(child, depth + 1, maxDepth, maxChildren),\n );\n if (total > limit) {\n node.truncatedChildren = total - limit;\n }\n }\n\n return node;\n}\n\nfunction cloneSceneContent(value: unknown): SceneNodeContent | undefined {\n if (!isRecord(value) || !isSceneContentType(value.type)) {\n return undefined;\n }\n return cloneJson(value) as unknown as SceneNodeContent;\n}\n\nfunction isSceneContentType(value: unknown): value is SceneNodeContent['type'] {\n return (\n value === 'group' ||\n value === 'asset' ||\n value === 'instance' ||\n value === 'pattern'\n );\n}\n\nfunction getResourceRefs(\n content: SceneNodeContent | undefined,\n): HierarchyResourceRefs {\n switch (content?.type) {\n case 'asset':\n return { assetId: content.asset };\n case 'instance':\n case 'pattern':\n return { prefabId: content.prefab };\n default:\n return {};\n }\n}\n\nfunction cloneRuntimeHash(value: unknown): Sha256 | undefined {\n return typeof value === 'string' && /^sha256:[0-9a-f]{64}$/u.test(value)\n ? (value as Sha256)\n : undefined;\n}\n\nfunction cloneStringArray(value: unknown): string[] | undefined {\n return Array.isArray(value) &&\n value.every((entry) => typeof entry === 'string')\n ? [...value]\n : undefined;\n}\n\nfunction cloneJsonObject(value: unknown): JsonObject | undefined {\n return cloneJsonObjectAs<JsonObject>(value);\n}\n\nfunction cloneJsonObjectAs<T>(value: unknown): T | undefined {\n return isRecord(value) ? (cloneJson(value) as T) : undefined;\n}\n\nfunction cloneJson<T>(value: T): T {\n return JSON.parse(JSON.stringify(value)) as T;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\n/**\n * Get local and global transforms of an Object3D.\n * Includes positionRelativeToXROrigin which can be used directly with IWER look_at tool.\n */\nexport function getObjectTransform(\n world: World,\n params: Record<string, unknown>,\n): ObjectTransform {\n const { nodeId, uuid } = params as unknown as GetObjectTransformParams;\n\n if (!uuid && !nodeId) {\n throw new Error(\n 'uuid or nodeId parameter is required. Use get_scene_hierarchy for Object3D UUIDs or scene_get_hierarchy for native scene node ids.',\n );\n }\n\n const obj =\n uuid != null\n ? world.scene.getObjectByProperty('uuid', uuid)\n : findObjectBySceneNodeId(world.scene, nodeId!);\n if (!obj) {\n throw new Error(\n uuid != null\n ? `Object not found with UUID '${uuid}'. Use get_scene_hierarchy to discover available objects.`\n : `Object not found with scene node id '${nodeId}'. Use scene_get_hierarchy to discover native scene node ids.`,\n );\n }\n\n // Ensure world matrix is up to date\n obj.updateWorldMatrix(true, false);\n\n // Local transform (direct properties)\n const localPosition = obj.position.toArray() as [number, number, number];\n const localQuaternion = obj.quaternion.toArray() as [\n number,\n number,\n number,\n number,\n ];\n const localScale = obj.scale.toArray() as [number, number, number];\n\n // Global transform (decompose from world matrix)\n const globalPosition = new Vector3();\n const globalQuaternion = new Quaternion();\n const globalScale = new Vector3();\n obj.matrixWorld.decompose(globalPosition, globalQuaternion, globalScale);\n\n // Position relative to XR origin\n let positionRelativeToXROrigin: [number, number, number] | null = null;\n\n if (world.player) {\n // Clone the global position and convert to XR origin local space\n const relativePos = globalPosition.clone();\n world.player.updateWorldMatrix(true, false);\n world.player.worldToLocal(relativePos);\n positionRelativeToXROrigin = relativePos.toArray() as [\n number,\n number,\n number,\n ];\n }\n\n return {\n localPosition,\n localQuaternion,\n localScale,\n globalPosition: globalPosition.toArray() as [number, number, number],\n globalQuaternion: globalQuaternion.toArray() as [\n number,\n number,\n number,\n number,\n ],\n globalScale: globalScale.toArray() as [number, number, number],\n positionRelativeToXROrigin,\n };\n}\n\nfunction findObjectBySceneNodeId(\n object: Object3D,\n nodeId: string,\n): Object3D | undefined {\n if (object.userData?.iwsdkSceneNodeId === nodeId) {\n return object;\n }\n\n for (const child of object.children) {\n const found = findObjectBySceneNodeId(child, nodeId);\n if (found != null) {\n return found;\n }\n }\n\n return undefined;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import type { World } from '../ecs/world.js';
|
|
8
|
+
export interface UiInspectParams {
|
|
9
|
+
entityIndex: number;
|
|
10
|
+
selector?: string;
|
|
11
|
+
properties?: string[];
|
|
12
|
+
limit?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface UiElementInspection {
|
|
15
|
+
id?: string;
|
|
16
|
+
classes: string[];
|
|
17
|
+
componentType: string;
|
|
18
|
+
uuid: string;
|
|
19
|
+
text?: string;
|
|
20
|
+
state: {
|
|
21
|
+
active: boolean;
|
|
22
|
+
clipped: boolean;
|
|
23
|
+
disabled: boolean;
|
|
24
|
+
displayed: boolean;
|
|
25
|
+
hovered: boolean;
|
|
26
|
+
visible: boolean;
|
|
27
|
+
};
|
|
28
|
+
layout: {
|
|
29
|
+
relativeCenter: [number, number] | null;
|
|
30
|
+
size: [number, number] | null;
|
|
31
|
+
};
|
|
32
|
+
properties: Record<string, unknown>;
|
|
33
|
+
missingProperties?: string[];
|
|
34
|
+
}
|
|
35
|
+
export interface UiInspectResult {
|
|
36
|
+
panel: {
|
|
37
|
+
entityIndex: number;
|
|
38
|
+
name?: string;
|
|
39
|
+
assetId?: string;
|
|
40
|
+
computedSize: {
|
|
41
|
+
width: number;
|
|
42
|
+
height: number;
|
|
43
|
+
} | null;
|
|
44
|
+
targetSize: {
|
|
45
|
+
width: number;
|
|
46
|
+
height: number;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
selector?: string;
|
|
50
|
+
elements: UiElementInspection[];
|
|
51
|
+
total: number;
|
|
52
|
+
limited: boolean;
|
|
53
|
+
}
|
|
54
|
+
/** Inspect stable, live UIKitML elements owned by one ECS panel entity. */
|
|
55
|
+
export declare function uiInspect(world: World, params: Record<string, unknown>): UiInspectResult;
|
|
56
|
+
//# sourceMappingURL=ui-debug-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-debug-tools.d.ts","sourceRoot":"","sources":["../../src/mcp/ui-debug-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AA6B7C,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QACL,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,OAAO,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,MAAM,EAAE;QACN,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;QACxC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KAC/B,CAAC;IACF,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QACvD,UAAU,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAOD,2EAA2E;AAC3E,wBAAgB,SAAS,CACvB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,eAAe,CAiDjB"}
|