@iwsdk/core 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/README.md +94 -0
  2. package/dist/asset/loaders/hdr-texture-loader.d.ts +1 -1
  3. package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -1
  4. package/dist/asset/loaders/hdr-texture-loader.js +4 -4
  5. package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
  6. package/dist/audio/audio-system.d.ts +6 -2
  7. package/dist/audio/audio-system.d.ts.map +1 -1
  8. package/dist/audio/audio-system.js +1 -0
  9. package/dist/audio/audio-system.js.map +1 -1
  10. package/dist/audio/audio.d.ts +3 -1
  11. package/dist/audio/audio.d.ts.map +1 -1
  12. package/dist/audio/audio.js +8 -2
  13. package/dist/audio/audio.js.map +1 -1
  14. package/dist/camera/camera-source.js +1 -0
  15. package/dist/camera/camera-source.js.map +1 -1
  16. package/dist/camera/camera-system.d.ts.map +1 -1
  17. package/dist/camera/camera-system.js +1 -0
  18. package/dist/camera/camera-system.js.map +1 -1
  19. package/dist/camera/camera-utils.d.ts.map +1 -1
  20. package/dist/camera/camera-utils.js.map +1 -1
  21. package/dist/depth/depth-occludable.d.ts +48 -0
  22. package/dist/depth/depth-occludable.d.ts.map +1 -0
  23. package/dist/depth/depth-occludable.js +48 -0
  24. package/dist/depth/depth-occludable.js.map +1 -0
  25. package/dist/depth/depth-sensing-system.d.ts +164 -0
  26. package/dist/depth/depth-sensing-system.d.ts.map +1 -0
  27. package/dist/depth/depth-sensing-system.js +453 -0
  28. package/dist/depth/depth-sensing-system.js.map +1 -0
  29. package/dist/depth/depth-textures.d.ts +53 -0
  30. package/dist/depth/depth-textures.d.ts.map +1 -0
  31. package/dist/depth/depth-textures.js +114 -0
  32. package/dist/depth/depth-textures.js.map +1 -0
  33. package/dist/depth/index.d.ts +10 -0
  34. package/dist/depth/index.d.ts.map +1 -0
  35. package/dist/depth/occlusion/preprocessing-pass.d.ts +52 -0
  36. package/dist/depth/occlusion/preprocessing-pass.d.ts.map +1 -0
  37. package/dist/depth/occlusion/preprocessing-pass.js +105 -0
  38. package/dist/depth/occlusion/preprocessing-pass.js.map +1 -0
  39. package/dist/depth/occlusion/preprocessing-shader.glsl.d.ts +22 -0
  40. package/dist/depth/occlusion/preprocessing-shader.glsl.d.ts.map +1 -0
  41. package/dist/depth/occlusion/preprocessing-shader.glsl.js +115 -0
  42. package/dist/depth/occlusion/preprocessing-shader.glsl.js.map +1 -0
  43. package/dist/ecs/entity.d.ts +17 -1
  44. package/dist/ecs/entity.d.ts.map +1 -1
  45. package/dist/ecs/entity.js +7 -1
  46. package/dist/ecs/entity.js.map +1 -1
  47. package/dist/ecs/world.d.ts +12 -0
  48. package/dist/ecs/world.d.ts.map +1 -1
  49. package/dist/ecs/world.js +47 -3
  50. package/dist/ecs/world.js.map +1 -1
  51. package/dist/environment/dome-gradient.js +1 -0
  52. package/dist/environment/dome-gradient.js.map +1 -1
  53. package/dist/environment/dome-texture.d.ts +3 -1
  54. package/dist/environment/dome-texture.d.ts.map +1 -1
  55. package/dist/environment/dome-texture.js +7 -1
  56. package/dist/environment/dome-texture.js.map +1 -1
  57. package/dist/environment/environment-system.d.ts +8 -0
  58. package/dist/environment/environment-system.d.ts.map +1 -1
  59. package/dist/environment/environment-system.js +78 -2
  60. package/dist/environment/environment-system.js.map +1 -1
  61. package/dist/environment/ibl-gradient.js +1 -0
  62. package/dist/environment/ibl-gradient.js.map +1 -1
  63. package/dist/environment/ibl-texture.d.ts +3 -1
  64. package/dist/environment/ibl-texture.d.ts.map +1 -1
  65. package/dist/environment/ibl-texture.js +7 -1
  66. package/dist/environment/ibl-texture.js.map +1 -1
  67. package/dist/environment-raycast/environment-raycast.d.ts +136 -0
  68. package/dist/environment-raycast/environment-raycast.d.ts.map +1 -0
  69. package/dist/environment-raycast/environment-raycast.js +333 -0
  70. package/dist/environment-raycast/environment-raycast.js.map +1 -0
  71. package/dist/environment-raycast/index.d.ts +9 -0
  72. package/dist/environment-raycast/index.d.ts.map +1 -0
  73. package/dist/environment-raycast/raycast-target.d.ts +114 -0
  74. package/dist/environment-raycast/raycast-target.d.ts.map +1 -0
  75. package/dist/environment-raycast/raycast-target.js +84 -0
  76. package/dist/environment-raycast/raycast-target.js.map +1 -0
  77. package/dist/grab/distance-grabbable.d.ts +27 -2
  78. package/dist/grab/distance-grabbable.d.ts.map +1 -1
  79. package/dist/grab/distance-grabbable.js +25 -2
  80. package/dist/grab/distance-grabbable.js.map +1 -1
  81. package/dist/grab/grab-system.d.ts +106 -61
  82. package/dist/grab/grab-system.d.ts.map +1 -1
  83. package/dist/grab/grab-system.js +61 -10
  84. package/dist/grab/grab-system.js.map +1 -1
  85. package/dist/grab/handles.d.ts +14 -4
  86. package/dist/grab/handles.d.ts.map +1 -1
  87. package/dist/grab/handles.js +45 -18
  88. package/dist/grab/handles.js.map +1 -1
  89. package/dist/grab/index.d.ts +0 -1
  90. package/dist/grab/index.d.ts.map +1 -1
  91. package/dist/grab/index.js +0 -2
  92. package/dist/grab/index.js.map +1 -1
  93. package/dist/grab/one-hand-grabbable.js +1 -0
  94. package/dist/grab/one-hand-grabbable.js.map +1 -1
  95. package/dist/grab/two-hands-grabbable.js +1 -0
  96. package/dist/grab/two-hands-grabbable.js.map +1 -1
  97. package/dist/index.d.ts +3 -0
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +9 -1
  100. package/dist/index.js.map +1 -1
  101. package/dist/init/world-initializer.d.ts +17 -3
  102. package/dist/init/world-initializer.d.ts.map +1 -1
  103. package/dist/init/world-initializer.js +86 -19
  104. package/dist/init/world-initializer.js.map +1 -1
  105. package/dist/init/xr.d.ts +1 -0
  106. package/dist/init/xr.d.ts.map +1 -1
  107. package/dist/init/xr.js +6 -0
  108. package/dist/init/xr.js.map +1 -1
  109. package/dist/input/input-system.d.ts +408 -5
  110. package/dist/input/input-system.d.ts.map +1 -1
  111. package/dist/input/input-system.js +146 -23
  112. package/dist/input/input-system.js.map +1 -1
  113. package/dist/input/state-tags.d.ts +32 -15
  114. package/dist/input/state-tags.d.ts.map +1 -1
  115. package/dist/input/state-tags.js +34 -16
  116. package/dist/input/state-tags.js.map +1 -1
  117. package/dist/level/level-entity-creator.js +1 -0
  118. package/dist/level/level-entity-creator.js.map +1 -1
  119. package/dist/level/level-root.js +1 -0
  120. package/dist/level/level-root.js.map +1 -1
  121. package/dist/level/level-system.js +1 -0
  122. package/dist/level/level-system.js.map +1 -1
  123. package/dist/level/level-tag.js +1 -0
  124. package/dist/level/level-tag.js.map +1 -1
  125. package/dist/locomotion/locomotion.d.ts +10 -0
  126. package/dist/locomotion/locomotion.d.ts.map +1 -1
  127. package/dist/locomotion/locomotion.js +17 -1
  128. package/dist/locomotion/locomotion.js.map +1 -1
  129. package/dist/locomotion/slide.d.ts +10 -0
  130. package/dist/locomotion/slide.d.ts.map +1 -1
  131. package/dist/locomotion/slide.js +6 -2
  132. package/dist/locomotion/slide.js.map +1 -1
  133. package/dist/locomotion/teleport.js +1 -0
  134. package/dist/locomotion/teleport.js.map +1 -1
  135. package/dist/mcp/ecs-debug-tools.d.ts +167 -0
  136. package/dist/mcp/ecs-debug-tools.d.ts.map +1 -0
  137. package/dist/mcp/ecs-debug-tools.js +602 -0
  138. package/dist/mcp/ecs-debug-tools.js.map +1 -0
  139. package/dist/mcp/index.d.ts +10 -0
  140. package/dist/mcp/index.d.ts.map +1 -0
  141. package/dist/mcp/mcp-runtime.d.ts +31 -0
  142. package/dist/mcp/mcp-runtime.d.ts.map +1 -0
  143. package/dist/mcp/mcp-runtime.js +85 -0
  144. package/dist/mcp/mcp-runtime.js.map +1 -0
  145. package/dist/mcp/scene-tools.d.ts +41 -0
  146. package/dist/mcp/scene-tools.d.ts.map +1 -0
  147. package/dist/mcp/scene-tools.js +95 -0
  148. package/dist/mcp/scene-tools.js.map +1 -0
  149. package/dist/physics/physics-system.d.ts +1 -1
  150. package/dist/physics/physics-system.d.ts.map +1 -1
  151. package/dist/physics/physics-system.js +9 -4
  152. package/dist/physics/physics-system.js.map +1 -1
  153. package/dist/physics/utils.d.ts.map +1 -1
  154. package/dist/physics/utils.js +1 -1
  155. package/dist/scene-understanding/anchor.js +1 -0
  156. package/dist/scene-understanding/anchor.js.map +1 -1
  157. package/dist/scene-understanding/mesh.js +1 -0
  158. package/dist/scene-understanding/mesh.js.map +1 -1
  159. package/dist/scene-understanding/plane.js +1 -0
  160. package/dist/scene-understanding/plane.js.map +1 -1
  161. package/dist/scene-understanding/scene-understanding-system.d.ts +29 -0
  162. package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -1
  163. package/dist/scene-understanding/scene-understanding-system.js +118 -18
  164. package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
  165. package/dist/transform/index.d.ts +2 -0
  166. package/dist/transform/index.d.ts.map +1 -1
  167. package/dist/transform/synced-euler.d.ts +62 -0
  168. package/dist/transform/synced-euler.d.ts.map +1 -0
  169. package/dist/transform/synced-euler.js +212 -0
  170. package/dist/transform/synced-euler.js.map +1 -0
  171. package/dist/transform/synced-quaternion.d.ts +11 -0
  172. package/dist/transform/synced-quaternion.d.ts.map +1 -1
  173. package/dist/transform/synced-quaternion.js +29 -0
  174. package/dist/transform/synced-quaternion.js.map +1 -1
  175. package/dist/transform/transform-utils.d.ts +24 -0
  176. package/dist/transform/transform-utils.d.ts.map +1 -0
  177. package/dist/transform/transform-utils.js +53 -0
  178. package/dist/transform/transform-utils.js.map +1 -0
  179. package/dist/transform/transform.d.ts.map +1 -1
  180. package/dist/transform/transform.js +19 -2
  181. package/dist/transform/transform.js.map +1 -1
  182. package/dist/ui/follow.js +1 -0
  183. package/dist/ui/follow.js.map +1 -1
  184. package/dist/ui/index.d.ts +1 -1
  185. package/dist/ui/index.d.ts.map +1 -1
  186. package/dist/ui/screenspace.js +1 -0
  187. package/dist/ui/screenspace.js.map +1 -1
  188. package/dist/ui/ui.d.ts.map +1 -1
  189. package/dist/ui/ui.js +2 -8
  190. package/dist/ui/ui.js.map +1 -1
  191. package/dist/version.d.ts +1 -1
  192. package/dist/version.js +1 -1
  193. package/dist/visibility/visibility.d.ts.map +1 -1
  194. package/dist/visibility/visibility.js +4 -1
  195. package/dist/visibility/visibility.js.map +1 -1
  196. package/package.json +16 -9
  197. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.1.7_super-three@0.177.0/node_modules/@pmndrs/uikitml/dist/interpreter/html.js +0 -128
  198. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.1.7_super-three@0.177.0/node_modules/@pmndrs/uikitml/dist/interpreter/html.js.map +0 -1
  199. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.1.7_super-three@0.177.0/node_modules/@pmndrs/uikitml/dist/interpreter/index.js +0 -161
  200. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.1.7_super-three@0.177.0/node_modules/@pmndrs/uikitml/dist/interpreter/index.js.map +0 -1
  201. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js +0 -66
  202. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js.map +0 -1
  203. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js +0 -162
  204. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js.map +0 -1
  205. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js +0 -519
  206. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js.map +0 -1
  207. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js +0 -15
  208. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js.map +0 -1
  209. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js +0 -32
  210. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js.map +0 -1
  211. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js +0 -10
  212. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js.map +0 -1
  213. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js +0 -41
  214. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js.map +0 -1
  215. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js +0 -35
  216. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js.map +0 -1
  217. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js +0 -24
  218. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js.map +0 -1
  219. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js +0 -92
  220. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js.map +0 -1
  221. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js +0 -382
  222. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js.map +0 -1
  223. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js +0 -2587
  224. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js.map +0 -1
  225. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js +0 -477
  226. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js.map +0 -1
  227. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js +0 -17
  228. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js.map +0 -1
@@ -0,0 +1,602 @@
1
+ import { ComponentRegistry } from 'elics';
2
+
3
+ /**
4
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ // ---------------------------------------------------------------------------
10
+ // Debug state (module-scoped singleton — only one World per page)
11
+ // ---------------------------------------------------------------------------
12
+ const debugState = {
13
+ paused: false,
14
+ stepResolve: null,
15
+ stepDelta: 1 / 72,
16
+ frameCount: 0,
17
+ pausedAtFrame: 0,
18
+ };
19
+ // ---------------------------------------------------------------------------
20
+ // Install debug hook — monkey-patches world.update()
21
+ // ---------------------------------------------------------------------------
22
+ let originalUpdate = null;
23
+ let hookedWorld = null;
24
+ function installDebugHook(world) {
25
+ if (hookedWorld === world) {
26
+ return;
27
+ } // already installed
28
+ originalUpdate = world.update.bind(world);
29
+ hookedWorld = world;
30
+ world.update = (delta, time) => {
31
+ debugState.frameCount++;
32
+ if (debugState.paused && !debugState.stepResolve) {
33
+ // Skip ECS updates; renderer.render() still runs after this
34
+ return;
35
+ }
36
+ if (debugState.paused && debugState.stepResolve) {
37
+ // Stepping — use fixed timestep
38
+ originalUpdate(debugState.stepDelta, time);
39
+ const resolve = debugState.stepResolve;
40
+ debugState.stepResolve = null;
41
+ resolve();
42
+ return;
43
+ }
44
+ originalUpdate(delta, time);
45
+ };
46
+ }
47
+ function ecsPause(world) {
48
+ debugState.paused = true;
49
+ debugState.pausedAtFrame = debugState.frameCount;
50
+ return {
51
+ paused: true,
52
+ frame: debugState.frameCount,
53
+ systemCount: world.getSystems().length,
54
+ };
55
+ }
56
+ let resumeClampInstalled = false;
57
+ function ecsResume(world) {
58
+ const framesWhilePaused = debugState.frameCount - debugState.pausedAtFrame;
59
+ debugState.paused = false;
60
+ debugState.stepResolve = null;
61
+ // Cap first real delta after resume to avoid physics explosions
62
+ if (!resumeClampInstalled && originalUpdate) {
63
+ const currentUpdate = world.update;
64
+ let clampNext = true;
65
+ world.update = (delta, time) => {
66
+ if (clampNext) {
67
+ clampNext = false;
68
+ const maxDelta = 1 / 30;
69
+ currentUpdate(Math.min(delta, maxDelta), time);
70
+ // Restore the regular patched update
71
+ world.update = currentUpdate;
72
+ return;
73
+ }
74
+ currentUpdate(delta, time);
75
+ };
76
+ // Only need to do this once per resume
77
+ resumeClampInstalled = true;
78
+ // Reset so the next resume can install again
79
+ setTimeout(() => {
80
+ resumeClampInstalled = false;
81
+ }, 0);
82
+ }
83
+ return {
84
+ paused: false,
85
+ framesWhilePaused,
86
+ };
87
+ }
88
+ async function ecsStep(_world, params) {
89
+ const { count = 1, delta = 1 / 72 } = params;
90
+ if (!debugState.paused) {
91
+ throw new Error('Cannot step when ECS is not paused. Call ecs_pause first.');
92
+ }
93
+ const frameCount = Math.max(1, Math.min(120, Math.round(count)));
94
+ debugState.stepDelta = delta;
95
+ // Per-step timeout: if the render loop isn't running (tab backgrounded,
96
+ // no active XR session, page hidden), the resolve callback from
97
+ // world.update() never fires. A 5s timeout per step prevents the MCP
98
+ // call from hanging indefinitely.
99
+ const STEP_TIMEOUT_MS = 5000;
100
+ for (let i = 0; i < frameCount; i++) {
101
+ await new Promise((resolve, reject) => {
102
+ debugState.stepResolve = () => {
103
+ clearTimeout(timer);
104
+ resolve();
105
+ };
106
+ const timer = setTimeout(() => {
107
+ debugState.stepResolve = null;
108
+ reject(new Error(`Step timeout after ${STEP_TIMEOUT_MS}ms — the render loop may not be running. ` +
109
+ `Ensure an XR session is active and the browser tab is visible.`));
110
+ }, STEP_TIMEOUT_MS);
111
+ });
112
+ }
113
+ return {
114
+ framesAdvanced: frameCount,
115
+ totalFrame: debugState.frameCount,
116
+ };
117
+ }
118
+ // ---------------------------------------------------------------------------
119
+ // Component serialization helpers
120
+ // ---------------------------------------------------------------------------
121
+ const VECTOR_TYPES = new Set(['Vec2', 'Vec3', 'Vec4', 'Color']);
122
+ const MAX_STRING_LENGTH = 200;
123
+ const MAX_DEPTH = 3;
124
+ const MAX_TYPED_ARRAY_ELEMENTS = 16;
125
+ function safeSerialize(value, depth = 0, seen = new WeakSet()) {
126
+ if (value === null || value === undefined) {
127
+ return value;
128
+ }
129
+ const type = typeof value;
130
+ if (type === 'number' || type === 'boolean') {
131
+ return value;
132
+ }
133
+ if (type === 'string') {
134
+ return value.length > MAX_STRING_LENGTH
135
+ ? value.slice(0, MAX_STRING_LENGTH) + '...'
136
+ : value;
137
+ }
138
+ if (type === 'function') {
139
+ return '<function>';
140
+ }
141
+ if (type !== 'object') {
142
+ return String(value);
143
+ }
144
+ const obj = value;
145
+ // Circular reference check
146
+ if (seen.has(obj)) {
147
+ return '<circular>';
148
+ }
149
+ seen.add(obj);
150
+ // Depth limit
151
+ if (depth >= MAX_DEPTH) {
152
+ return '<object>';
153
+ }
154
+ // TypedArray
155
+ if (ArrayBuffer.isView(obj) && 'length' in obj) {
156
+ const arr = obj;
157
+ const len = Math.min(arr.length, MAX_TYPED_ARRAY_ELEMENTS);
158
+ const result = Array.from({ length: len }, (_, i) => arr[i]);
159
+ if (arr.length > MAX_TYPED_ARRAY_ELEMENTS) {
160
+ return { values: result, truncated: true, totalLength: arr.length };
161
+ }
162
+ return result;
163
+ }
164
+ // Array
165
+ if (Array.isArray(obj)) {
166
+ return obj
167
+ .slice(0, MAX_TYPED_ARRAY_ELEMENTS)
168
+ .map((item) => safeSerialize(item, depth + 1, seen));
169
+ }
170
+ // Three.js sentinel detection — return type tag instead of full object
171
+ if (obj.isObject3D) {
172
+ return `<Object3D:${obj.name || obj.type || 'unnamed'}>`;
173
+ }
174
+ if (obj.isMaterial) {
175
+ return `<Material:${obj.type || 'unknown'}>`;
176
+ }
177
+ if (obj.isTexture) {
178
+ return `<Texture:${obj.name || 'unnamed'}>`;
179
+ }
180
+ if (obj.isBufferGeometry) {
181
+ return `<BufferGeometry>`;
182
+ }
183
+ // Plain object
184
+ const result = {};
185
+ const keys = Object.keys(obj);
186
+ for (const key of keys.slice(0, 20)) {
187
+ result[key] = safeSerialize(obj[key], depth + 1, seen);
188
+ }
189
+ if (keys.length > 20) {
190
+ result['...'] = `${keys.length - 20} more keys`;
191
+ }
192
+ return result;
193
+ }
194
+ function serializeComponentValue(entity, component, key, schemaField) {
195
+ var _a;
196
+ const type = schemaField.type;
197
+ if (VECTOR_TYPES.has(type)) {
198
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
199
+ return Array.from(entity.getVectorView(component, key));
200
+ }
201
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
202
+ const raw = entity.getValue(component, key);
203
+ if (type === 'Entity') {
204
+ if (raw === null) {
205
+ return null;
206
+ }
207
+ const ref = raw;
208
+ return {
209
+ entityIndex: ref.index,
210
+ name: ((_a = ref.object3D) === null || _a === void 0 ? void 0 : _a.name) || undefined,
211
+ };
212
+ }
213
+ if (type === 'Object') {
214
+ return safeSerialize(raw);
215
+ }
216
+ return raw;
217
+ }
218
+ function ecsQueryEntity(world, params) {
219
+ var _a;
220
+ const { entityIndex, components } = params;
221
+ if (entityIndex === undefined || entityIndex === null) {
222
+ throw new Error('entityIndex is required. Use get_scene_hierarchy or ecs_find_entities to discover entity indices.');
223
+ }
224
+ const entity = world.entityManager.getEntityByIndex(entityIndex);
225
+ if (!entity) {
226
+ throw new Error(`Entity ${entityIndex} not found or has been destroyed. Use get_scene_hierarchy or ecs_find_entities to find active entities.`);
227
+ }
228
+ const entityComponents = entity.getComponents();
229
+ // Filter to requested components if specified
230
+ let targetComponents = entityComponents;
231
+ if (components && components.length > 0) {
232
+ const filterSet = new Set(components);
233
+ targetComponents = entityComponents.filter((c) => filterSet.has(c.id));
234
+ }
235
+ const componentDataList = targetComponents.map((component) => {
236
+ const values = {};
237
+ const schema = component.schema;
238
+ for (const key of Object.keys(schema)) {
239
+ values[key] = serializeComponentValue(entity, component, key, schema[key]);
240
+ }
241
+ return {
242
+ componentId: component.id,
243
+ description: component.description,
244
+ values,
245
+ };
246
+ });
247
+ return {
248
+ entityIndex: entity.index,
249
+ active: entity.active,
250
+ name: ((_a = entity.object3D) === null || _a === void 0 ? void 0 : _a.name) || undefined,
251
+ components: componentDataList,
252
+ };
253
+ }
254
+ function ecsFindEntities(world, params) {
255
+ var _a, _b;
256
+ const { withComponents, withoutComponents, namePattern, limit = 50, } = params;
257
+ // Resolve component names to component objects
258
+ const requiredComponents = [];
259
+ if (withComponents) {
260
+ for (const name of withComponents) {
261
+ const comp = ComponentRegistry.getById(name);
262
+ if (!comp) {
263
+ throw new Error(`Component '${name}' not found in registry. Check the component ID.`);
264
+ }
265
+ requiredComponents.push(comp);
266
+ }
267
+ }
268
+ const excludedComponents = [];
269
+ if (withoutComponents) {
270
+ for (const name of withoutComponents) {
271
+ const comp = ComponentRegistry.getById(name);
272
+ if (!comp) {
273
+ throw new Error(`Component '${name}' not found in registry. Check the component ID.`);
274
+ }
275
+ excludedComponents.push(comp);
276
+ }
277
+ }
278
+ let nameRegex = null;
279
+ if (namePattern) {
280
+ nameRegex = new RegExp(namePattern, 'i');
281
+ }
282
+ const maxResults = Math.max(1, Math.min(50, limit));
283
+ const results = [];
284
+ let totalMatches = 0;
285
+ // indexLookup is internal to ELICS (not part of the public API). If an
286
+ // iteration API becomes public, migrate to that instead. For now, direct
287
+ // access is the only way to enumerate all live entities efficiently.
288
+ const lookup = world.entityManager.indexLookup;
289
+ for (let i = 0; i < lookup.length; i++) {
290
+ const entity = lookup[i];
291
+ if (!entity || !entity.active) {
292
+ continue;
293
+ }
294
+ // Check required components
295
+ let match = true;
296
+ for (const comp of requiredComponents) {
297
+ if (!entity.hasComponent(comp)) {
298
+ match = false;
299
+ break;
300
+ }
301
+ }
302
+ if (!match) {
303
+ continue;
304
+ }
305
+ // Check excluded components
306
+ for (const comp of excludedComponents) {
307
+ if (entity.hasComponent(comp)) {
308
+ match = false;
309
+ break;
310
+ }
311
+ }
312
+ if (!match) {
313
+ continue;
314
+ }
315
+ // Check name pattern
316
+ if (nameRegex) {
317
+ const name = (_a = entity.object3D) === null || _a === void 0 ? void 0 : _a.name;
318
+ if (!name || !nameRegex.test(name)) {
319
+ continue;
320
+ }
321
+ }
322
+ totalMatches++;
323
+ if (results.length < maxResults) {
324
+ const componentIds = entity
325
+ .getComponents()
326
+ .map((c) => c.id);
327
+ results.push({
328
+ entityIndex: entity.index,
329
+ name: ((_b = entity.object3D) === null || _b === void 0 ? void 0 : _b.name) || undefined,
330
+ componentIds,
331
+ });
332
+ }
333
+ }
334
+ return {
335
+ entities: results,
336
+ total: totalMatches,
337
+ limited: totalMatches > maxResults,
338
+ };
339
+ }
340
+ function ecsListSystems(world) {
341
+ const systems = world.getSystems();
342
+ const result = systems.map((system, index) => {
343
+ var _a, _b, _c;
344
+ const queryNames = Object.keys(system.queries || {});
345
+ const entityCounts = {};
346
+ for (const qName of queryNames) {
347
+ entityCounts[qName] = (_c = (_b = (_a = system.queries[qName]) === null || _a === void 0 ? void 0 : _a.entities) === null || _b === void 0 ? void 0 : _b.size) !== null && _c !== void 0 ? _c : 0;
348
+ }
349
+ return {
350
+ name: system.constructor.name,
351
+ index,
352
+ priority: system.priority,
353
+ isPaused: system.isPaused,
354
+ configKeys: Object.keys(system.config || {}),
355
+ queryNames,
356
+ entityCounts,
357
+ };
358
+ });
359
+ return { systems: result, total: result.length };
360
+ }
361
+ function ecsListComponents() {
362
+ const all = ComponentRegistry.getAllComponents();
363
+ const result = all.map((comp) => {
364
+ const fields = {};
365
+ for (const [key, field] of Object.entries(comp.schema)) {
366
+ fields[key] = {
367
+ type: field.type,
368
+ default: field.default,
369
+ };
370
+ }
371
+ return {
372
+ id: comp.id,
373
+ description: comp.description,
374
+ fields,
375
+ };
376
+ });
377
+ return { components: result, total: result.length };
378
+ }
379
+ function ecsToggleSystem(world, params) {
380
+ const { name, paused } = params;
381
+ const systems = world.getSystems();
382
+ const system = systems.find((s) => s.constructor.name === name);
383
+ if (!system) {
384
+ const available = systems.map((s) => s.constructor.name).join(', ');
385
+ throw new Error(`System '${name}' not found. Available systems: ${available}`);
386
+ }
387
+ const targetPaused = paused !== undefined ? paused : !system.isPaused;
388
+ if (targetPaused) {
389
+ system.stop();
390
+ }
391
+ else {
392
+ system.play();
393
+ }
394
+ return { name: system.constructor.name, isPaused: system.isPaused };
395
+ }
396
+ function ecsSetComponent(world, params) {
397
+ const { entityIndex, componentId, field, value } = params;
398
+ const entity = world.entityManager.getEntityByIndex(entityIndex);
399
+ if (!entity) {
400
+ throw new Error(`Entity ${entityIndex} not found.`);
401
+ }
402
+ const component = ComponentRegistry.getById(componentId);
403
+ if (!component) {
404
+ throw new Error(`Component '${componentId}' not found in registry.`);
405
+ }
406
+ if (!entity.hasComponent(component)) {
407
+ throw new Error(`Entity ${entityIndex} does not have component '${componentId}'.`);
408
+ }
409
+ const schemaField = component.schema[field];
410
+ if (!schemaField) {
411
+ const available = Object.keys(component.schema).join(', ');
412
+ throw new Error(`Field '${field}' not found on '${componentId}'. Available: ${available}`);
413
+ }
414
+ // Read previous value using existing serialization helper
415
+ const previousValue = serializeComponentValue(entity, component, field, schemaField);
416
+ const type = schemaField.type;
417
+ if (VECTOR_TYPES.has(type)) {
418
+ // Vector types: write via getVectorView
419
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
420
+ const view = entity.getVectorView(component, field);
421
+ // Value may arrive as a JSON string from MCP clients (e.g. "[0, 1.2, -1.5]")
422
+ let arr = value;
423
+ if (typeof arr === 'string') {
424
+ try {
425
+ arr = JSON.parse(arr);
426
+ }
427
+ catch (_a) {
428
+ throw new Error(`${type} field '${field}': could not parse value string as JSON array.`);
429
+ }
430
+ }
431
+ if (!Array.isArray(arr) || arr.length !== view.length) {
432
+ throw new Error(`${type} field '${field}' requires an array of ${view.length} numbers.`);
433
+ }
434
+ for (let i = 0; i < view.length; i++) {
435
+ view[i] = arr[i];
436
+ }
437
+ }
438
+ else {
439
+ // Scalar types: use setValue (handles validation, query updates)
440
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
441
+ entity.setValue(component, field, value);
442
+ }
443
+ // Read back new value
444
+ const newValue = serializeComponentValue(entity, component, field, schemaField);
445
+ return { entityIndex, componentId, field, previousValue, newValue };
446
+ }
447
+ // ---------------------------------------------------------------------------
448
+ // ecs_snapshot / ecs_diff
449
+ // ---------------------------------------------------------------------------
450
+ // Module-scoped snapshot storage
451
+ const snapshots = new Map();
452
+ function ecsSnapshot(world, params) {
453
+ var _a;
454
+ const { label = `snap-${snapshots.size}` } = params;
455
+ // See comment in ecsFindEntities — indexLookup is internal to ELICS.
456
+ const lookup = world.entityManager.indexLookup;
457
+ const entities = [];
458
+ let componentCount = 0;
459
+ for (let i = 0; i < lookup.length; i++) {
460
+ const entity = lookup[i];
461
+ if (!entity || !entity.active) {
462
+ continue;
463
+ }
464
+ const comps = entity.getComponents();
465
+ const components = {};
466
+ for (const comp of comps) {
467
+ const values = {};
468
+ for (const key of Object.keys(comp.schema)) {
469
+ values[key] = serializeComponentValue(entity, comp, key, comp.schema[key]);
470
+ }
471
+ components[comp.id] = values;
472
+ componentCount++;
473
+ }
474
+ entities.push({
475
+ entityIndex: entity.index,
476
+ name: ((_a = entity.object3D) === null || _a === void 0 ? void 0 : _a.name) || undefined,
477
+ components,
478
+ });
479
+ }
480
+ const snapshot = {
481
+ label,
482
+ timestamp: performance.now(),
483
+ frame: debugState.frameCount,
484
+ entities,
485
+ };
486
+ // Evict oldest if at capacity
487
+ if (snapshots.size >= 2 && !snapshots.has(label)) {
488
+ const oldest = snapshots.keys().next().value;
489
+ snapshots.delete(oldest);
490
+ }
491
+ snapshots.set(label, snapshot);
492
+ return {
493
+ label,
494
+ entityCount: entities.length,
495
+ componentCount,
496
+ storedSnapshots: Array.from(snapshots.keys()),
497
+ };
498
+ }
499
+ function ecsDiff(_world, params) {
500
+ const { from, to } = params;
501
+ const snapFrom = snapshots.get(from);
502
+ const snapTo = snapshots.get(to);
503
+ if (!snapFrom) {
504
+ throw new Error(`Snapshot '${from}' not found. Stored: ${Array.from(snapshots.keys()).join(', ')}`);
505
+ }
506
+ if (!snapTo) {
507
+ throw new Error(`Snapshot '${to}' not found. Stored: ${Array.from(snapshots.keys()).join(', ')}`);
508
+ }
509
+ // Index by entityIndex
510
+ const fromMap = new Map(snapFrom.entities.map((e) => [e.entityIndex, e]));
511
+ const toMap = new Map(snapTo.entities.map((e) => [e.entityIndex, e]));
512
+ const diffs = [];
513
+ let added = 0, removed = 0, changed = 0;
514
+ // Check removed + changed
515
+ for (const [idx, fromEntity] of fromMap) {
516
+ const toEntity = toMap.get(idx);
517
+ if (!toEntity) {
518
+ diffs.push({
519
+ entityIndex: idx,
520
+ name: fromEntity.name,
521
+ status: 'removed',
522
+ });
523
+ removed++;
524
+ continue;
525
+ }
526
+ // Diff components
527
+ const compDiffs = [];
528
+ const allCompIds = new Set([
529
+ ...Object.keys(fromEntity.components),
530
+ ...Object.keys(toEntity.components),
531
+ ]);
532
+ for (const compId of allCompIds) {
533
+ const fromComp = fromEntity.components[compId];
534
+ const toComp = toEntity.components[compId];
535
+ if (!fromComp) {
536
+ compDiffs.push({ componentId: compId, status: 'added' });
537
+ continue;
538
+ }
539
+ if (!toComp) {
540
+ compDiffs.push({ componentId: compId, status: 'removed' });
541
+ continue;
542
+ }
543
+ // Diff fields
544
+ const fieldDiffs = [];
545
+ for (const field of Object.keys(fromComp)) {
546
+ const fv = JSON.stringify(fromComp[field]);
547
+ const tv = JSON.stringify(toComp[field]);
548
+ if (fv !== tv) {
549
+ fieldDiffs.push({ field, from: fromComp[field], to: toComp[field] });
550
+ }
551
+ }
552
+ // Check for fields added in toComp
553
+ for (const field of Object.keys(toComp)) {
554
+ if (!(field in fromComp)) {
555
+ fieldDiffs.push({
556
+ field,
557
+ from: undefined,
558
+ to: toComp[field],
559
+ });
560
+ }
561
+ }
562
+ if (fieldDiffs.length > 0) {
563
+ compDiffs.push({
564
+ componentId: compId,
565
+ status: 'changed',
566
+ fields: fieldDiffs,
567
+ });
568
+ }
569
+ }
570
+ if (compDiffs.length > 0) {
571
+ diffs.push({
572
+ entityIndex: idx,
573
+ name: fromEntity.name,
574
+ status: 'changed',
575
+ components: compDiffs,
576
+ });
577
+ changed++;
578
+ }
579
+ }
580
+ // Check added
581
+ for (const [idx, toEntity] of toMap) {
582
+ if (!fromMap.has(idx)) {
583
+ diffs.push({
584
+ entityIndex: idx,
585
+ name: toEntity.name,
586
+ status: 'added',
587
+ });
588
+ added++;
589
+ }
590
+ }
591
+ return {
592
+ from,
593
+ to,
594
+ frameDelta: snapTo.frame - snapFrom.frame,
595
+ timeDelta: snapTo.timestamp - snapFrom.timestamp,
596
+ entities: diffs,
597
+ summary: { added, removed, changed },
598
+ };
599
+ }
600
+
601
+ export { ecsDiff, ecsFindEntities, ecsListComponents, ecsListSystems, ecsPause, ecsQueryEntity, ecsResume, ecsSetComponent, ecsSnapshot, ecsStep, ecsToggleSystem, installDebugHook };
602
+ //# sourceMappingURL=ecs-debug-tools.js.map
@@ -0,0 +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;IACnC,IAAI,YAAY,GAAG,CAAC;;;;AAKpB,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,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;gBAC9B,KAAK,GAAG,KAAK;gBACb;YACF;QACF;QACA,IAAI,CAAC,KAAK,EAAE;YACV;QACF;;AAGA,QAAA,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE;AACrC,YAAA,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;gBAC7B,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,YAAY,EAAE;AAEd,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,UAAU,EAAE;YAC/B,MAAM,YAAY,GAAG;AAClB,iBAAA,aAAa;iBACb,GAAG,CAAC,CAAC,CAAe,KAAK,CAAC,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC;gBACX,WAAW,EAAE,MAAM,CAAC,KAAK;gBACzB,IAAI,EAAE,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI,KAAI,SAAS;gBACxC,YAAY;AACb,aAAA,CAAC;QACJ;IACF;IAEA,OAAO;AACL,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,YAAY,GAAG,UAAU;KACnC;AACH;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,MAA+B;AACxD,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,MAA+B;IAEjC,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,MAAuB;IAE5C,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;;;;"}
@@ -0,0 +1,10 @@
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
+ export { MCPRuntime } from './mcp-runtime.js';
8
+ export type { HierarchyNode, ObjectTransform } from './scene-tools.js';
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
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,31 @@
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
+ /**
9
+ * MCP Runtime for IWSDK that provides framework-specific tools.
10
+ * This is set on window.FRAMEWORK_MCP_RUNTIME during World.create()
11
+ * for the vite-plugin-dev to route requests to.
12
+ *
13
+ * @category Runtime
14
+ */
15
+ export declare class MCPRuntime {
16
+ private world;
17
+ constructor(world: World);
18
+ /**
19
+ * Returns true if this runtime handles the given method.
20
+ * Used by vite-plugin-dev to route requests appropriately.
21
+ */
22
+ handles(method: string): boolean;
23
+ /**
24
+ * Dispatch a method call. Returns result or throws an error.
25
+ * @param method - The MCP tool name (e.g., 'get_scene_hierarchy')
26
+ * @param params - Parameters passed to the tool
27
+ * @returns Promise resolving to the tool result
28
+ */
29
+ dispatch(method: string, params: Record<string, unknown>): Promise<unknown>;
30
+ }
31
+ //# sourceMappingURL=mcp-runtime.d.ts.map