@vgai/engine 0.5.2 → 0.5.3

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 (185) hide show
  1. package/README.md +18 -11
  2. package/package.json +10 -6
  3. package/schemas/engine-api.json +1 -68
  4. package/schemas/engine-api.md +1 -32
  5. package/schemas/engine-capabilities.json +30 -42
  6. package/schemas/{vgai-game.schema.json → vgai-project.schema.json} +52 -34
  7. package/src/adapter/adapter-surface.ts +5 -5
  8. package/src/adapter/authoring.ts +168 -226
  9. package/src/adapter/colyseus-networking-adapter.ts +44 -5
  10. package/src/adapter/first-party-systems.ts +156 -42
  11. package/src/adapter/host-context.ts +177 -46
  12. package/src/adapter/index.ts +47 -51
  13. package/src/adapter/ingest/game-contract.ts +2 -2
  14. package/src/adapter/ingest/scene-capture.ts +18 -19
  15. package/src/adapter/ingest/structural-ids.ts +127 -0
  16. package/src/adapter/ingest/upstream-pin.ts +9 -12
  17. package/src/adapter/loop-gate-report.ts +11 -11
  18. package/src/adapter/rapier-physics-adapter.ts +27 -9
  19. package/src/adapter/root-adapter.ts +217 -0
  20. package/src/adapter/{vgai-scene-game-adapter.ts → setup-three-root-adapter.ts} +173 -351
  21. package/src/adapter/system-adapter.ts +80 -63
  22. package/src/ai/navigation.ts +1 -1
  23. package/src/animation/animation-clock.ts +1 -1
  24. package/src/animation/camera-ownership.ts +1 -2
  25. package/src/animation/cubic-spline-interpolant.ts +132 -0
  26. package/src/animation/theatre-clock-binding.ts +2 -2
  27. package/src/animation/theatre-object-binding.ts +4 -4
  28. package/src/animation/xstate-animation-binding.ts +75 -5
  29. package/src/{scene/schema → asset-formats}/camera.ts +2 -5
  30. package/src/{scene/schema → asset-formats}/collider.ts +2 -5
  31. package/src/asset-formats/index.ts +54 -0
  32. package/src/{scene/schema → asset-formats}/instances.ts +10 -6
  33. package/src/{scene/schema → asset-formats}/light.ts +3 -6
  34. package/src/{scene/schema → asset-formats}/material.ts +4 -7
  35. package/src/{scene/schema → asset-formats}/mesh.ts +4 -7
  36. package/src/asset-formats/parse.ts +39 -0
  37. package/src/{scene/schema → asset-formats}/particles.ts +3 -6
  38. package/src/{scene/schema/environment.ts → asset-formats/render-env.ts} +23 -86
  39. package/src/{scene/schema → asset-formats}/tuples.ts +1 -1
  40. package/src/{scene/asset-loaders.ts → asset-loaders.ts} +8 -9
  41. package/src/asset-parse-error.ts +33 -0
  42. package/src/{scene/asset-registry.ts → asset-registry.ts} +1 -1
  43. package/src/assets.ts +1 -1
  44. package/src/audio/wav-encode.ts +9 -9
  45. package/src/canvas-react/engine-bridge.ts +59 -0
  46. package/src/canvas-react/index.ts +50 -0
  47. package/src/canvas-react/pixi-primitive.tsx +202 -0
  48. package/src/canvas-react/pixi-react-adapter.tsx +290 -0
  49. package/src/canvas-react/pixi-react-root-factory.tsx +88 -0
  50. package/src/canvas-react/world-context.ts +328 -0
  51. package/src/core/frame-pacing.ts +100 -0
  52. package/src/core/game-loop.ts +50 -28
  53. package/src/core/seeded-random.ts +7 -7
  54. package/src/core/sim-clock.ts +388 -0
  55. package/src/core/system-runner.ts +17 -63
  56. package/src/core/types.ts +34 -15
  57. package/src/data/data-asset.ts +3 -3
  58. package/src/data/data-check-core.ts +6 -7
  59. package/src/data/data-ref.ts +11 -11
  60. package/src/data/vite-plugin-data.ts +10 -10
  61. package/src/{scene/defaults.ts → defaults.ts} +18 -40
  62. package/src/dev/render-debug-adapter.ts +1 -1
  63. package/src/dev/webgl-frame-capture.ts +1 -1
  64. package/src/ecs/scene-index.ts +439 -0
  65. package/src/ecs/scene-query.ts +43 -0
  66. package/src/{scene → ecs}/user-data.ts +17 -36
  67. package/src/index.ts +7 -9
  68. package/src/input/input-manager.ts +29 -32
  69. package/src/input/input-types.ts +2 -2
  70. package/src/input/schema.ts +5 -5
  71. package/src/loader.ts +57 -0
  72. package/src/manifest/editor-port.ts +69 -0
  73. package/src/manifest/filename.ts +49 -0
  74. package/src/manifest/index.ts +8 -2
  75. package/src/manifest/load-file.ts +11 -0
  76. package/src/manifest/load.ts +65 -77
  77. package/src/manifest/locate.ts +55 -0
  78. package/src/manifest/schema.ts +400 -233
  79. package/src/{scene → physics}/collider-dimensions.ts +3 -3
  80. package/src/physics/physics-registry.ts +1 -1
  81. package/src/{world2d/authoring-2d.ts → pixi/authoring.ts} +24 -11
  82. package/src/pixi/index.ts +43 -0
  83. package/src/{world2d/ingest-iframe-2d.ts → pixi/ingest-iframe.ts} +9 -9
  84. package/src/{world2d/ingest2d.ts → pixi/ingest.ts} +28 -28
  85. package/src/{world2d/physics2d-registry.ts → pixi/physics-registry.ts} +1 -1
  86. package/src/{world2d/scene-capture-2d.ts → pixi/scene-capture.ts} +3 -3
  87. package/src/{world2d/system-adapters-2d.ts → pixi/system-adapters.ts} +2 -2
  88. package/src/react/unmanaged-root-detector.ts +26 -1
  89. package/src/react/use-data.ts +5 -5
  90. package/src/react/use-selection.tsx +15 -42
  91. package/src/react/{game-state.tsx → world-state.tsx} +44 -46
  92. package/src/render/auto-batcher.ts +1 -2
  93. package/src/{scene → render}/instance-mesh.ts +1 -1
  94. package/src/{scene → render}/light-camera-factory.ts +14 -13
  95. package/src/render/lod.ts +17 -0
  96. package/src/{scene → render}/material-factory.ts +8 -7
  97. package/src/{scene → render}/particles-factory.ts +62 -12
  98. package/src/render/render-batch-system.ts +14 -41
  99. package/src/render/render-features.ts +1 -1
  100. package/src/render/render-settings.ts +1 -2
  101. package/src/render/spark-renderer-lifecycle.ts +1 -1
  102. package/src/runtime/create-runtime.ts +352 -463
  103. package/src/runtime/debug-bridge.ts +148 -93
  104. package/src/runtime/debug-registry.ts +79 -54
  105. package/src/runtime/dev-layers.ts +40 -0
  106. package/src/runtime/frame-selector-cache.ts +4 -4
  107. package/src/runtime/game.ts +618 -369
  108. package/src/runtime/gameplay-rng-trap.ts +6 -7
  109. package/src/runtime/input-router.ts +11 -11
  110. package/src/runtime/mount-game.ts +54 -55
  111. package/src/runtime/mount-manifest.ts +154 -150
  112. package/src/runtime/presentation.ts +141 -0
  113. package/src/runtime/render-audio-control.ts +64 -53
  114. package/src/runtime/render-control.ts +45 -51
  115. package/src/runtime/render-seed.ts +3 -4
  116. package/src/runtime/state-bridge.ts +17 -18
  117. package/src/runtime/types.ts +94 -61
  118. package/src/setup/setup-renderer.ts +11 -6
  119. package/src/world3d-react/engine-bridge.ts +46 -33
  120. package/src/world3d-react/index.ts +31 -26
  121. package/src/world3d-react/r3f-adapter.tsx +211 -96
  122. package/src/world3d-react/r3f-root-factory.tsx +91 -0
  123. package/src/world3d-react/renderer-config.ts +137 -0
  124. package/src/world3d-react/world-context.ts +141 -111
  125. package/schemas/entity2d.schema.json +0 -468
  126. package/schemas/prefab.schema.json +0 -9992
  127. package/schemas/scn2d.schema.json +0 -494
  128. package/schemas/vscn.schema.json +0 -10851
  129. package/src/adapter/game-adapter.ts +0 -164
  130. package/src/adapter/ingest/overlay-applier.ts +0 -207
  131. package/src/adapter/ingest/overlay-apply.ts +0 -168
  132. package/src/adapter/ingest/overlay-file.ts +0 -126
  133. package/src/adapter/ingest/overlay-report.ts +0 -176
  134. package/src/animation/gsap-registration.ts +0 -184
  135. package/src/audio/audio-introspection.ts +0 -290
  136. package/src/audio/index.ts +0 -39
  137. package/src/audio/tone-clock-binding.ts +0 -98
  138. package/src/audio/tone-context.ts +0 -175
  139. package/src/audio/tone-offline-render.ts +0 -167
  140. package/src/ecs/component-manager.ts +0 -814
  141. package/src/ecs/game-component.ts +0 -260
  142. package/src/ecs/hmr-swap-report.ts +0 -65
  143. package/src/physics/trigger-dispatch.ts +0 -97
  144. package/src/react/root-adapter.tsx +0 -49
  145. package/src/scene/asset-paths.ts +0 -121
  146. package/src/scene/asset-ref-check.ts +0 -248
  147. package/src/scene/component-registry.ts +0 -51
  148. package/src/scene/parse.ts +0 -204
  149. package/src/scene/scene-apply.ts +0 -407
  150. package/src/scene/scene-diff-schema.ts +0 -115
  151. package/src/scene/scene-diff-types.ts +0 -29
  152. package/src/scene/scene-loader.ts +0 -1526
  153. package/src/scene/scene-query.ts +0 -63
  154. package/src/scene/scene-types.ts +0 -33
  155. package/src/scene/scene-version.ts +0 -40
  156. package/src/scene/schema/animation.ts +0 -46
  157. package/src/scene/schema/audio.ts +0 -25
  158. package/src/scene/schema/entity-ref.ts +0 -78
  159. package/src/scene/schema/entity.ts +0 -189
  160. package/src/scene/schema/index.ts +0 -51
  161. package/src/scene/schema/joint.ts +0 -26
  162. package/src/scene/schema/physics.ts +0 -49
  163. package/src/scene/schema/scene-file.ts +0 -292
  164. package/src/scene/schema/shadow.ts +0 -24
  165. package/src/scene/schema/spline.ts +0 -21
  166. package/src/world2d/asset-paths2d.ts +0 -44
  167. package/src/world2d/capture-to-scene2d.ts +0 -52
  168. package/src/world2d/collision-2d.ts +0 -99
  169. package/src/world2d/entity2d-asset.ts +0 -22
  170. package/src/world2d/index.ts +0 -91
  171. package/src/world2d/physics2d-transform.ts +0 -173
  172. package/src/world2d/physics2d-units.ts +0 -10
  173. package/src/world2d/pixi-game-adapter.ts +0 -439
  174. package/src/world2d/pixi-surface.ts +0 -78
  175. package/src/world2d/scene2d-identity.ts +0 -49
  176. package/src/world2d/scene2d-loader.ts +0 -433
  177. package/src/world2d/schema/entity2d.ts +0 -163
  178. package/src/world2d/schema/physics2d.ts +0 -64
  179. package/src/world2d/schema/sprite.ts +0 -99
  180. package/src/world2d/schema/tilemap.ts +0 -39
  181. package/src/world2d/schema/tuples2d.ts +0 -25
  182. package/src/world2d/transform-writer-2d.ts +0 -42
  183. package/src/world2d/types.ts +0 -74
  184. package/src/world3d-react/behavior.tsx +0 -146
  185. /package/src/{scene → render}/mesh-shadow.ts +0 -0
@@ -1,494 +0,0 @@
1
- {
2
- "$comment": "AUTO-GENERATED by scripts/generate-schema.ts — do not edit manually",
3
- "$schema": "https://json-schema.org/draft/2020-12/schema",
4
- "type": "object",
5
- "properties": {
6
- "version": {
7
- "description": "Scene format version",
8
- "type": "number"
9
- },
10
- "name": {
11
- "description": "Scene name shown in the native 2D document hierarchy and inspector",
12
- "type": "string"
13
- },
14
- "surface": {
15
- "description": "Render surface. Always 'world2d'",
16
- "type": "string",
17
- "const": "world2d"
18
- },
19
- "gravity": {
20
- "description": "World gravity [x, y] in px/s^2. Default [0, 9.8 * pixelsPerMeter] ([0, 980] at the default scale)",
21
- "type": "array",
22
- "prefixItems": [
23
- {
24
- "type": "number"
25
- },
26
- {
27
- "type": "number"
28
- }
29
- ]
30
- },
31
- "pixelsPerMeter": {
32
- "description": "Authored pixels per physics meter. Configures native Rapier World.lengthUnit and scales default gravity. Default 100",
33
- "type": "number",
34
- "exclusiveMinimum": 0
35
- },
36
- "background": {
37
- "description": "Background color hex string. Default '#10101a'",
38
- "type": "string"
39
- },
40
- "entities": {
41
- "type": "array",
42
- "items": {
43
- "$ref": "#/$defs/__schema0"
44
- },
45
- "description": "Root entities of the world2d scene"
46
- }
47
- },
48
- "required": [
49
- "entities"
50
- ],
51
- "additionalProperties": false,
52
- "description": "A world2d scene (PixiJS render surface)",
53
- "$defs": {
54
- "__schema0": {
55
- "type": "object",
56
- "properties": {
57
- "id": {
58
- "description": "Unique entity ID. Auto-generated if omitted",
59
- "type": "string"
60
- },
61
- "name": {
62
- "type": "string",
63
- "description": "Human-readable entity name (shown in hierarchy panel)"
64
- },
65
- "surface": {
66
- "description": "Render surface that instantiates this entity. Default 'world2d' in a Scene2D file. The 'world3d' value is REJECTED at parse (T4.1): declared but has no runtime reader — authoring surface: 'world3d' throws. Do not author it ('world2d', the default, is fine).",
67
- "type": "string",
68
- "enum": [
69
- "world2d",
70
- "world3d"
71
- ]
72
- },
73
- "visible": {
74
- "description": "Whether the entity and its children are rendered",
75
- "type": "boolean"
76
- },
77
- "locked": {
78
- "description": "Prevent selection and editing in the native 2D scene editor",
79
- "type": "boolean"
80
- },
81
- "tags": {
82
- "description": "Arbitrary string tags for runtime queries. REJECTED at parse (T4.1): declared but has no runtime reader — authoring this field throws. Do not author.",
83
- "type": "array",
84
- "items": {
85
- "type": "string"
86
- }
87
- },
88
- "transform2d": {
89
- "description": "Local 2D transform relative to parent",
90
- "type": "object",
91
- "properties": {
92
- "position": {
93
- "description": "Local position [x, y] in world2d pixels",
94
- "type": "array",
95
- "prefixItems": [
96
- {
97
- "type": "number"
98
- },
99
- {
100
- "type": "number"
101
- }
102
- ]
103
- },
104
- "rotation": {
105
- "description": "Rotation in radians about the Z axis. Default 0",
106
- "type": "number"
107
- },
108
- "scale": {
109
- "description": "Scale per axis [x, y]. Default [1, 1]",
110
- "type": "array",
111
- "prefixItems": [
112
- {
113
- "type": "number"
114
- },
115
- {
116
- "type": "number"
117
- }
118
- ]
119
- },
120
- "pivot": {
121
- "description": "Local pivot point [x, y] (center of rotation/scale)",
122
- "type": "array",
123
- "prefixItems": [
124
- {
125
- "type": "number"
126
- },
127
- {
128
- "type": "number"
129
- }
130
- ]
131
- }
132
- },
133
- "additionalProperties": false
134
- },
135
- "pivot": {
136
- "description": "Local-space pivot point [x, y]",
137
- "type": "array",
138
- "prefixItems": [
139
- {
140
- "type": "number"
141
- },
142
- {
143
- "type": "number"
144
- }
145
- ]
146
- },
147
- "sprite": {
148
- "description": "2D sprite appearance",
149
- "type": "object",
150
- "properties": {
151
- "texture": {
152
- "description": "Texture asset URL (loaded via PIXI.Assets). Omit for a tintable 1x1 white texture",
153
- "type": "string"
154
- },
155
- "frame": {
156
- "description": "Spritesheet frame/sub-texture name when `texture` is a spritesheet atlas",
157
- "type": "string",
158
- "minLength": 1
159
- },
160
- "animation": {
161
- "description": "Named spritesheet animation from `texture` (PIXI.Spritesheet.animations); mutually exclusive with `frame`",
162
- "type": "string",
163
- "minLength": 1
164
- },
165
- "anchor": {
166
- "description": "Normalized anchor [x, y] (0..1). Default [0.5, 0.5]",
167
- "type": "array",
168
- "prefixItems": [
169
- {
170
- "type": "number"
171
- },
172
- {
173
- "type": "number"
174
- }
175
- ]
176
- },
177
- "tint": {
178
- "description": "Tint color as hex string (e.g. '#ff8800'). Default white",
179
- "type": "string"
180
- },
181
- "alpha": {
182
- "description": "Opacity 0..1. Default 1",
183
- "type": "number",
184
- "minimum": 0,
185
- "maximum": 1
186
- },
187
- "width": {
188
- "description": "Explicit display width in pixels (overrides texture size)",
189
- "type": "number"
190
- },
191
- "height": {
192
- "description": "Explicit display height in pixels (overrides texture size)",
193
- "type": "number"
194
- },
195
- "blendMode": {
196
- "description": "PixiJS blend mode. Default normal",
197
- "type": "string",
198
- "enum": [
199
- "normal",
200
- "add",
201
- "multiply",
202
- "screen"
203
- ]
204
- },
205
- "interactive": {
206
- "description": "Enable federated pointer events (eventMode=static) so this sprite can be picked",
207
- "type": "boolean"
208
- },
209
- "filter": {
210
- "description": "Apply a PixiJS filter (BlurFilter / ColorMatrix desaturate). Default none",
211
- "type": "string",
212
- "enum": [
213
- "none",
214
- "blur",
215
- "desaturate"
216
- ]
217
- },
218
- "fps": {
219
- "description": "AnimatedSprite playback speed in frames/sec. Default 8",
220
- "type": "number",
221
- "exclusiveMinimum": 0
222
- },
223
- "loop": {
224
- "description": "Whether the named spritesheet animation loops. Default true",
225
- "type": "boolean"
226
- }
227
- },
228
- "additionalProperties": false
229
- },
230
- "text": {
231
- "description": "World-space text label",
232
- "type": "object",
233
- "properties": {
234
- "text": {
235
- "type": "string",
236
- "description": "The string to display"
237
- },
238
- "fontSize": {
239
- "description": "Font size in pixels. Default 24",
240
- "type": "number"
241
- },
242
- "fill": {
243
- "description": "Text color as hex string. Default '#ffffff'",
244
- "type": "string"
245
- },
246
- "anchor": {
247
- "description": "Normalized anchor [x, y] (0..1). Default [0.5, 0.5]",
248
- "type": "array",
249
- "prefixItems": [
250
- {
251
- "type": "number"
252
- },
253
- {
254
- "type": "number"
255
- }
256
- ]
257
- }
258
- },
259
- "required": [
260
- "text"
261
- ],
262
- "additionalProperties": false
263
- },
264
- "tilemap": {
265
- "description": "2D tilemap (CompositeTilemap)",
266
- "type": "object",
267
- "properties": {
268
- "frames": {
269
- "minItems": 1,
270
- "type": "array",
271
- "items": {
272
- "type": "string",
273
- "minLength": 1
274
- },
275
- "description": "Ordered Pixi spritesheet frame names used as tile indices"
276
- },
277
- "texture": {
278
- "type": "string",
279
- "minLength": 1,
280
- "description": "URL or project path to a Pixi spritesheet JSON asset"
281
- },
282
- "tileSize": {
283
- "type": "number",
284
- "exclusiveMinimum": 0,
285
- "description": "Positive square tile width/height in pixels"
286
- },
287
- "tiles": {
288
- "type": "array",
289
- "items": {
290
- "type": "array",
291
- "items": {
292
- "type": "integer",
293
- "minimum": -9007199254740991,
294
- "maximum": 9007199254740991
295
- }
296
- },
297
- "description": "Row-major grid of frame indices; -1 is an empty cell (each row is an array of tile indices)"
298
- }
299
- },
300
- "required": [
301
- "frames",
302
- "texture",
303
- "tileSize",
304
- "tiles"
305
- ],
306
- "additionalProperties": false
307
- },
308
- "physics2d": {
309
- "description": "2D physics rigid body + collider",
310
- "type": "object",
311
- "properties": {
312
- "bodyType": {
313
- "type": "string",
314
- "enum": [
315
- "dynamic",
316
- "fixed",
317
- "kinematicVelocity",
318
- "kinematicPosition"
319
- ],
320
- "description": "Rapier 2D rigid-body type. A body of any type nested below a dynamic or kinematic body is rejected: Rapier has no parent/child body relationship. Nesting below a fixed or physics-less transformed parent is supported for fixed bodies. Dynamic and kinematic bodies additionally require a conformal parent chain (uniform scale plus rotation/reflection), because later body rotation cannot round-trip through non-uniform parent scale without shearing the Pixi visual."
321
- },
322
- "collider": {
323
- "oneOf": [
324
- {
325
- "type": "object",
326
- "properties": {
327
- "shape": {
328
- "type": "string",
329
- "const": "cuboid",
330
- "description": "Box collider aligned to the rigid-body rotation"
331
- },
332
- "halfExtents": {
333
- "type": "array",
334
- "prefixItems": [
335
- {
336
- "type": "number"
337
- },
338
- {
339
- "type": "number"
340
- }
341
- ],
342
- "description": "Half-width and half-height [hx, hy] in pixels"
343
- }
344
- },
345
- "required": [
346
- "shape",
347
- "halfExtents"
348
- ],
349
- "additionalProperties": false
350
- },
351
- {
352
- "type": "object",
353
- "properties": {
354
- "shape": {
355
- "type": "string",
356
- "const": "ball",
357
- "description": "Circle collider"
358
- },
359
- "radius": {
360
- "type": "number",
361
- "description": "Radius in pixels"
362
- }
363
- },
364
- "required": [
365
- "shape",
366
- "radius"
367
- ],
368
- "additionalProperties": false
369
- },
370
- {
371
- "type": "object",
372
- "properties": {
373
- "shape": {
374
- "type": "string",
375
- "const": "capsule",
376
- "description": "Capsule collider (vertical)"
377
- },
378
- "halfHeight": {
379
- "type": "number",
380
- "description": "Half the straight segment length"
381
- },
382
- "radius": {
383
- "type": "number",
384
- "description": "Cap radius"
385
- }
386
- },
387
- "required": [
388
- "shape",
389
- "halfHeight",
390
- "radius"
391
- ],
392
- "additionalProperties": false
393
- }
394
- ],
395
- "description": "Collider shape attached to the body. Its pose and dimensions use the composed parent transform at spawn. Cuboids support non-uniform scale; ball/capsule colliders reject non-uniform scale because Rapier cannot represent an ellipse."
396
- },
397
- "sensor": {
398
- "description": "If true, a sensor (trigger) collider — overlaps fire onTriggerEnter/Exit, no solid response",
399
- "type": "boolean"
400
- },
401
- "density": {
402
- "description": "Collider density (drives mass). Default 1",
403
- "type": "number"
404
- },
405
- "friction": {
406
- "description": "Coefficient of friction. Default 0.5",
407
- "type": "number"
408
- },
409
- "restitution": {
410
- "description": "Bounciness 0..1. Default 0",
411
- "type": "number"
412
- },
413
- "linearDamping": {
414
- "description": "Linear velocity damping. Default 0",
415
- "type": "number"
416
- },
417
- "gravityScale": {
418
- "description": "Per-body gravity multiplier. Default 1",
419
- "type": "number"
420
- },
421
- "lockRotations": {
422
- "description": "Lock the body so it cannot rotate. Default false",
423
- "type": "boolean"
424
- }
425
- },
426
- "required": [
427
- "bodyType",
428
- "collider"
429
- ],
430
- "additionalProperties": false
431
- },
432
- "components": {
433
- "description": "User-defined components (validated against the world2d component registry)",
434
- "type": "object",
435
- "propertyNames": {
436
- "type": "string"
437
- },
438
- "additionalProperties": {
439
- "type": "object",
440
- "propertyNames": {
441
- "type": "string"
442
- },
443
- "additionalProperties": {
444
- "anyOf": [
445
- {
446
- "anyOf": [
447
- {
448
- "type": "number"
449
- },
450
- {
451
- "type": "string"
452
- },
453
- {
454
- "type": "boolean"
455
- }
456
- ]
457
- },
458
- {
459
- "type": "array",
460
- "items": {
461
- "type": "number"
462
- }
463
- },
464
- {
465
- "type": "array",
466
- "items": {
467
- "type": "string"
468
- }
469
- },
470
- {
471
- "type": "array",
472
- "items": {
473
- "type": "boolean"
474
- }
475
- }
476
- ]
477
- }
478
- }
479
- },
480
- "children": {
481
- "description": "Child entities",
482
- "type": "array",
483
- "items": {
484
- "$ref": "#/$defs/__schema0"
485
- }
486
- }
487
- },
488
- "required": [
489
- "name"
490
- ],
491
- "additionalProperties": false
492
- }
493
- }
494
- }