@vgai/engine 0.5.21 → 0.5.23

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 (339) hide show
  1. package/README.md +6 -3
  2. package/dist/adapter/adapter-module.d.ts.map +1 -1
  3. package/dist/adapter/adapter-module.js +2 -4
  4. package/dist/adapter/adapter-surface.d.ts +1 -1
  5. package/dist/adapter/adapter-surface.js +1 -1
  6. package/dist/adapter/authoring.d.ts +19 -21
  7. package/dist/adapter/authoring.d.ts.map +1 -1
  8. package/dist/adapter/authoring.js +2 -2
  9. package/dist/adapter/binding.d.ts +341 -0
  10. package/dist/adapter/binding.d.ts.map +1 -0
  11. package/dist/adapter/binding.js +148 -0
  12. package/dist/adapter/colyseus-networking-adapter.d.ts.map +1 -1
  13. package/dist/adapter/colyseus-networking-adapter.js +23 -4
  14. package/dist/adapter/entrypoint-selection-readers.d.ts +24 -0
  15. package/dist/adapter/entrypoint-selection-readers.d.ts.map +1 -0
  16. package/dist/adapter/entrypoint-selection-readers.js +63 -0
  17. package/dist/adapter/entrypoint-selection-source.d.ts.map +1 -1
  18. package/dist/adapter/entrypoint-selection-source.js +1 -44
  19. package/dist/adapter/finders/scenes-from-entrypoint-selection.d.ts.map +1 -1
  20. package/dist/adapter/finders/scenes-from-entrypoint-selection.js +1 -52
  21. package/dist/adapter/host-context.d.ts +46 -15
  22. package/dist/adapter/host-context.d.ts.map +1 -1
  23. package/dist/adapter/host-context.js +2 -9
  24. package/dist/adapter/index.d.ts +11 -12
  25. package/dist/adapter/index.d.ts.map +1 -1
  26. package/dist/adapter/index.js +9 -10
  27. package/dist/adapter/ingest/game-contract.d.ts +0 -3
  28. package/dist/adapter/ingest/game-contract.d.ts.map +1 -1
  29. package/dist/adapter/ingest/game-contract.js +0 -3
  30. package/dist/adapter/ingest/scene-capture.d.ts +19 -23
  31. package/dist/adapter/ingest/scene-capture.d.ts.map +1 -1
  32. package/dist/adapter/ingest/scene-capture.js +143 -17
  33. package/dist/adapter/ingest/visible-capture-window.d.ts +34 -0
  34. package/dist/adapter/ingest/visible-capture-window.d.ts.map +1 -1
  35. package/dist/adapter/manifest-interpreter.d.ts +59 -0
  36. package/dist/adapter/manifest-interpreter.d.ts.map +1 -0
  37. package/dist/adapter/manifest-interpreter.js +50 -0
  38. package/dist/adapter/native-debug-module.d.ts +71 -3
  39. package/dist/adapter/native-debug-module.d.ts.map +1 -1
  40. package/dist/adapter/native-debug-module.js +146 -10
  41. package/dist/adapter/rapier-physics-adapter.d.ts +31 -1
  42. package/dist/adapter/rapier-physics-adapter.d.ts.map +1 -1
  43. package/dist/adapter/rapier-physics-adapter.js +50 -36
  44. package/dist/adapter/renderer-config.d.ts +3 -3
  45. package/dist/adapter/renderer-config.js +3 -3
  46. package/dist/adapter/root-adapter.d.ts +7 -7
  47. package/dist/adapter/root-adapter.js +4 -4
  48. package/dist/adapter/system-adapter.d.ts +45 -7
  49. package/dist/adapter/system-adapter.d.ts.map +1 -1
  50. package/dist/adapter/system-seam-contract.d.ts +3 -3
  51. package/dist/adapter/system-seam-contract.js +3 -3
  52. package/dist/adapter/system-slot.d.ts +168 -0
  53. package/dist/adapter/system-slot.d.ts.map +1 -0
  54. package/dist/adapter/system-slot.js +229 -0
  55. package/dist/adapter/transform.d.ts +11 -1
  56. package/dist/adapter/transform.d.ts.map +1 -1
  57. package/dist/ai/navigation.d.ts +17 -1
  58. package/dist/ai/navigation.d.ts.map +1 -1
  59. package/dist/ai/navigation.js +26 -5
  60. package/dist/animation/anim-graph-types.d.ts +11 -3
  61. package/dist/animation/anim-graph-types.d.ts.map +1 -1
  62. package/dist/animation/theatre-clock-binding.d.ts +4 -4
  63. package/dist/animation/theatre-clock-binding.js +4 -4
  64. package/dist/animation/xstate-animation-binding.d.ts.map +1 -1
  65. package/dist/animation/xstate-animation-binding.js +2 -2
  66. package/dist/animation/xstate-animation-meta.d.ts +13 -0
  67. package/dist/animation/xstate-animation-meta.d.ts.map +1 -1
  68. package/dist/animation/xstate-animation-meta.js +14 -0
  69. package/dist/asset-formats/index.d.ts +4 -7
  70. package/dist/asset-formats/index.d.ts.map +1 -1
  71. package/dist/asset-formats/index.js +4 -7
  72. package/dist/asset-formats/render-env.d.ts +5 -8
  73. package/dist/asset-formats/render-env.d.ts.map +1 -1
  74. package/dist/asset-formats/render-env.js +3 -6
  75. package/dist/asset-parse-error.d.ts +2 -5
  76. package/dist/asset-parse-error.d.ts.map +1 -1
  77. package/dist/asset-parse-error.js +2 -5
  78. package/dist/audio/bus-mixer.d.ts +101 -0
  79. package/dist/audio/bus-mixer.d.ts.map +1 -0
  80. package/dist/audio/bus-mixer.js +115 -0
  81. package/dist/canvas-react/index.d.ts +5 -12
  82. package/dist/canvas-react/index.d.ts.map +1 -1
  83. package/dist/canvas-react/index.js +5 -12
  84. package/dist/canvas-react/pixi-react-root-factory.d.ts +34 -21
  85. package/dist/canvas-react/pixi-react-root-factory.d.ts.map +1 -1
  86. package/dist/canvas-react/pixi-react-root-factory.js +274 -36
  87. package/dist/core/countdown-timer.d.ts +118 -0
  88. package/dist/core/countdown-timer.d.ts.map +1 -0
  89. package/dist/core/countdown-timer.js +137 -0
  90. package/dist/core/deferred-commands.d.ts +127 -0
  91. package/dist/core/deferred-commands.d.ts.map +1 -0
  92. package/dist/core/deferred-commands.js +132 -0
  93. package/dist/core/frame-pacing.d.ts +1 -1
  94. package/dist/core/frame-pacing.js +2 -2
  95. package/dist/core/game-loop.d.ts +1 -3
  96. package/dist/core/game-loop.d.ts.map +1 -1
  97. package/dist/core/game-loop.js +1 -3
  98. package/dist/core/seeded-random.d.ts +1 -1
  99. package/dist/core/sim-clock.d.ts +19 -8
  100. package/dist/core/sim-clock.d.ts.map +1 -1
  101. package/dist/core/sim-clock.js +18 -7
  102. package/dist/core/types.d.ts +1 -3
  103. package/dist/core/types.d.ts.map +1 -1
  104. package/dist/defaults.d.ts +6 -14
  105. package/dist/defaults.d.ts.map +1 -1
  106. package/dist/defaults.js +6 -14
  107. package/dist/dev/instruments.d.ts +38 -11
  108. package/dist/dev/instruments.d.ts.map +1 -1
  109. package/dist/dev/instruments.js +81 -11
  110. package/dist/dev/register-render-vitals.d.ts +1 -4
  111. package/dist/dev/register-render-vitals.d.ts.map +1 -1
  112. package/dist/dev/register-render-vitals.js +1 -4
  113. package/dist/dev/render-debug-adapter.d.ts +2 -3
  114. package/dist/dev/render-debug-adapter.d.ts.map +1 -1
  115. package/dist/dev/render-debug-adapter.js +2 -3
  116. package/dist/dev/render-vitals.d.ts +3 -3
  117. package/dist/dev/render-vitals.js +3 -3
  118. package/dist/dev/webgl-frame-capture.d.ts +1 -1
  119. package/dist/dev/webgl-frame-capture.js +1 -1
  120. package/dist/index.d.ts +2 -5
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/index.js +2 -4
  123. package/dist/input/host-pointer.d.ts +122 -0
  124. package/dist/input/host-pointer.d.ts.map +1 -0
  125. package/dist/input/host-pointer.js +160 -0
  126. package/dist/input/input-manager.d.ts +33 -5
  127. package/dist/input/input-manager.d.ts.map +1 -1
  128. package/dist/input/input-manager.js +48 -13
  129. package/dist/input/rebind-controller.d.ts.map +1 -1
  130. package/dist/input/rebind-controller.js +6 -8
  131. package/dist/input/schema.d.ts.map +1 -1
  132. package/dist/input/schema.js +56 -28
  133. package/dist/manifest/filename.d.ts.map +1 -1
  134. package/dist/manifest/filename.js +8 -12
  135. package/dist/manifest/load.d.ts +10 -10
  136. package/dist/manifest/load.d.ts.map +1 -1
  137. package/dist/manifest/load.js +9 -6
  138. package/dist/manifest/schema.d.ts +17 -21
  139. package/dist/manifest/schema.d.ts.map +1 -1
  140. package/dist/manifest/schema.js +45 -35
  141. package/dist/physics/collider-dimensions.d.ts +8 -12
  142. package/dist/physics/collider-dimensions.d.ts.map +1 -1
  143. package/dist/physics/collider-dimensions.js +8 -12
  144. package/dist/pixi/scene-capture.d.ts +11 -13
  145. package/dist/pixi/scene-capture.d.ts.map +1 -1
  146. package/dist/react/world-state.d.ts +1 -1
  147. package/dist/react/world-state.d.ts.map +1 -1
  148. package/dist/render/directional-shadow-fit.d.ts +88 -0
  149. package/dist/render/directional-shadow-fit.d.ts.map +1 -0
  150. package/dist/render/directional-shadow-fit.js +133 -0
  151. package/dist/render/environment-capture.d.ts +68 -0
  152. package/dist/render/environment-capture.d.ts.map +1 -0
  153. package/dist/render/environment-capture.js +90 -0
  154. package/dist/render/ibl-override-material.d.ts +97 -0
  155. package/dist/render/ibl-override-material.d.ts.map +1 -0
  156. package/dist/render/ibl-override-material.js +114 -0
  157. package/dist/render/light-camera-factory.d.ts +5 -7
  158. package/dist/render/light-camera-factory.d.ts.map +1 -1
  159. package/dist/render/light-camera-factory.js +8 -11
  160. package/dist/render/material-factory.js +1 -1
  161. package/dist/render/render-batch-system.d.ts.map +1 -1
  162. package/dist/render/render-features.d.ts +17 -6
  163. package/dist/render/render-features.d.ts.map +1 -1
  164. package/dist/render/render-features.js +0 -28
  165. package/dist/runtime/create-runtime.d.ts +34 -25
  166. package/dist/runtime/create-runtime.d.ts.map +1 -1
  167. package/dist/runtime/create-runtime.js +218 -93
  168. package/dist/runtime/debug-registry.d.ts +77 -8
  169. package/dist/runtime/debug-registry.d.ts.map +1 -1
  170. package/dist/runtime/debug-registry.js +3 -3
  171. package/dist/runtime/dev-build.d.ts +2 -2
  172. package/dist/runtime/dev-build.js +2 -2
  173. package/dist/runtime/game-input-seams.d.ts +51 -0
  174. package/dist/runtime/game-input-seams.d.ts.map +1 -0
  175. package/dist/runtime/game-input-seams.js +86 -0
  176. package/dist/runtime/game.d.ts +104 -40
  177. package/dist/runtime/game.d.ts.map +1 -1
  178. package/dist/runtime/game.js +119 -61
  179. package/dist/runtime/mount-game.d.ts +0 -16
  180. package/dist/runtime/mount-game.d.ts.map +1 -1
  181. package/dist/runtime/mount-game.js +26 -41
  182. package/dist/runtime/mount-manifest.d.ts +22 -14
  183. package/dist/runtime/mount-manifest.d.ts.map +1 -1
  184. package/dist/runtime/mount-manifest.js +22 -20
  185. package/dist/runtime/playtest.d.ts +22 -0
  186. package/dist/runtime/playtest.d.ts.map +1 -0
  187. package/dist/runtime/playtest.js +12 -0
  188. package/dist/runtime/state-bridge.d.ts +2 -3
  189. package/dist/runtime/state-bridge.d.ts.map +1 -1
  190. package/dist/runtime/state-bridge.js +1 -0
  191. package/dist/setup/setup-audio.d.ts +12 -0
  192. package/dist/setup/setup-audio.d.ts.map +1 -1
  193. package/dist/setup/setup-audio.js +9 -10
  194. package/dist/setup/setup-renderer.d.ts +2 -25
  195. package/dist/setup/setup-renderer.d.ts.map +1 -1
  196. package/dist/setup/setup-renderer.js +2 -31
  197. package/dist/world3d-react/index.d.ts +15 -25
  198. package/dist/world3d-react/index.d.ts.map +1 -1
  199. package/dist/world3d-react/index.js +15 -25
  200. package/dist/world3d-react/r3f-root-factory.d.ts +28 -34
  201. package/dist/world3d-react/r3f-root-factory.d.ts.map +1 -1
  202. package/dist/world3d-react/r3f-root-factory.js +403 -57
  203. package/dist/world3d-react/rapier-physics-bridge.d.ts +30 -17
  204. package/dist/world3d-react/rapier-physics-bridge.d.ts.map +1 -1
  205. package/dist/world3d-react/rapier-physics-bridge.js +143 -58
  206. package/package.json +1 -1
  207. package/schemas/engine-capabilities.json +16 -14
  208. package/schemas/vgai-project.schema.json +35 -26
  209. package/src/adapter/adapter-module.ts +2 -4
  210. package/src/adapter/adapter-surface.ts +1 -1
  211. package/src/adapter/authoring.ts +19 -21
  212. package/src/adapter/binding.ts +468 -0
  213. package/src/adapter/colyseus-networking-adapter.ts +20 -5
  214. package/src/adapter/entrypoint-selection-readers.ts +66 -0
  215. package/src/adapter/entrypoint-selection-source.ts +1 -40
  216. package/src/adapter/finders/scenes-from-entrypoint-selection.ts +1 -48
  217. package/src/adapter/host-context.ts +45 -15
  218. package/src/adapter/index.ts +23 -11
  219. package/src/adapter/ingest/game-contract.ts +0 -3
  220. package/src/adapter/ingest/scene-capture.ts +190 -39
  221. package/src/adapter/ingest/visible-capture-window.ts +35 -0
  222. package/src/adapter/manifest-interpreter.ts +64 -0
  223. package/src/adapter/native-debug-module.ts +248 -15
  224. package/src/adapter/rapier-physics-adapter.ts +76 -20
  225. package/src/adapter/renderer-config.ts +3 -3
  226. package/src/adapter/root-adapter.ts +7 -7
  227. package/src/adapter/system-adapter.ts +43 -8
  228. package/src/adapter/system-seam-contract.ts +3 -3
  229. package/src/adapter/system-slot.ts +291 -0
  230. package/src/adapter/transform.ts +18 -1
  231. package/src/ai/navigation.ts +30 -3
  232. package/src/animation/anim-graph-types.ts +11 -3
  233. package/src/animation/theatre-clock-binding.ts +4 -4
  234. package/src/animation/xstate-animation-binding.ts +2 -2
  235. package/src/animation/xstate-animation-meta.ts +16 -0
  236. package/src/asset-formats/index.ts +4 -7
  237. package/src/asset-formats/render-env.ts +3 -6
  238. package/src/asset-parse-error.ts +2 -5
  239. package/src/audio/bus-mixer.ts +161 -0
  240. package/src/canvas-react/index.ts +5 -21
  241. package/src/canvas-react/pixi-react-root-factory.tsx +301 -39
  242. package/src/core/countdown-timer.ts +188 -0
  243. package/src/core/deferred-commands.ts +174 -0
  244. package/src/core/frame-pacing.ts +2 -2
  245. package/src/core/game-loop.ts +1 -3
  246. package/src/core/seeded-random.ts +1 -1
  247. package/src/core/sim-clock.ts +19 -8
  248. package/src/core/types.ts +1 -3
  249. package/src/defaults.ts +6 -14
  250. package/src/dev/instruments.ts +108 -11
  251. package/src/dev/register-render-vitals.ts +1 -4
  252. package/src/dev/render-debug-adapter.ts +2 -3
  253. package/src/dev/render-vitals.ts +3 -3
  254. package/src/dev/webgl-frame-capture.ts +1 -1
  255. package/src/index.ts +2 -5
  256. package/src/input/host-pointer.ts +230 -0
  257. package/src/input/input-manager.ts +49 -13
  258. package/src/input/input-types.ts +1 -1
  259. package/src/input/rebind-controller.ts +6 -8
  260. package/src/input/schema.ts +216 -188
  261. package/src/manifest/filename.ts +8 -12
  262. package/src/manifest/load.ts +17 -13
  263. package/src/manifest/schema.ts +55 -47
  264. package/src/physics/collider-dimensions.ts +8 -12
  265. package/src/pixi/scene-capture.ts +12 -15
  266. package/src/react/world-state.tsx +1 -1
  267. package/src/render/directional-shadow-fit.ts +156 -0
  268. package/src/render/environment-capture.ts +102 -0
  269. package/src/render/ibl-override-material.ts +170 -0
  270. package/src/render/light-camera-factory.ts +8 -11
  271. package/src/render/material-factory.ts +1 -1
  272. package/src/render/render-batch-system.ts +14 -6
  273. package/src/render/render-features.ts +17 -35
  274. package/src/runtime/create-runtime.ts +270 -108
  275. package/src/runtime/debug-registry.ts +84 -8
  276. package/src/runtime/dev-build.ts +2 -2
  277. package/src/runtime/game-input-seams.ts +108 -0
  278. package/src/runtime/game.ts +231 -85
  279. package/src/runtime/mount-game.ts +31 -57
  280. package/src/runtime/mount-manifest.ts +47 -36
  281. package/src/runtime/playtest.ts +22 -0
  282. package/src/runtime/state-bridge.ts +3 -3
  283. package/src/setup/setup-audio.ts +21 -11
  284. package/src/setup/setup-renderer.ts +2 -61
  285. package/src/world3d-react/index.ts +15 -31
  286. package/src/world3d-react/r3f-root-factory.tsx +451 -60
  287. package/src/world3d-react/rapier-physics-bridge.tsx +154 -58
  288. package/dist/adapter/setup-three-root-adapter.d.ts +0 -86
  289. package/dist/adapter/setup-three-root-adapter.d.ts.map +0 -1
  290. package/dist/adapter/setup-three-root-adapter.js +0 -908
  291. package/dist/animation/clip-map.d.ts +0 -12
  292. package/dist/animation/clip-map.d.ts.map +0 -1
  293. package/dist/animation/clip-map.js +0 -31
  294. package/dist/asset-registry.d.ts +0 -38
  295. package/dist/asset-registry.d.ts.map +0 -1
  296. package/dist/asset-registry.js +0 -66
  297. package/dist/canvas-react/engine-bridge.d.ts +0 -45
  298. package/dist/canvas-react/engine-bridge.d.ts.map +0 -1
  299. package/dist/canvas-react/engine-bridge.js +0 -45
  300. package/dist/canvas-react/pixi-react-adapter.d.ts +0 -77
  301. package/dist/canvas-react/pixi-react-adapter.d.ts.map +0 -1
  302. package/dist/canvas-react/pixi-react-adapter.js +0 -294
  303. package/dist/canvas-react/world-context.d.ts +0 -98
  304. package/dist/canvas-react/world-context.d.ts.map +0 -1
  305. package/dist/canvas-react/world-context.js +0 -173
  306. package/dist/dev/debug-draw.d.ts +0 -24
  307. package/dist/dev/debug-draw.d.ts.map +0 -1
  308. package/dist/dev/debug-draw.js +0 -73
  309. package/dist/render/auto-batcher.d.ts +0 -34
  310. package/dist/render/auto-batcher.d.ts.map +0 -1
  311. package/dist/render/auto-batcher.js +0 -140
  312. package/dist/render/lod.d.ts +0 -13
  313. package/dist/render/lod.d.ts.map +0 -1
  314. package/dist/render/lod.js +0 -16
  315. package/dist/runtime/types.d.ts +0 -303
  316. package/dist/runtime/types.d.ts.map +0 -1
  317. package/dist/runtime/types.js +0 -1
  318. package/dist/world3d-react/engine-bridge.d.ts +0 -47
  319. package/dist/world3d-react/engine-bridge.d.ts.map +0 -1
  320. package/dist/world3d-react/engine-bridge.js +0 -73
  321. package/dist/world3d-react/r3f-adapter.d.ts +0 -58
  322. package/dist/world3d-react/r3f-adapter.d.ts.map +0 -1
  323. package/dist/world3d-react/r3f-adapter.js +0 -634
  324. package/dist/world3d-react/world-context.d.ts +0 -182
  325. package/dist/world3d-react/world-context.d.ts.map +0 -1
  326. package/dist/world3d-react/world-context.js +0 -235
  327. package/src/adapter/setup-three-root-adapter.ts +0 -1032
  328. package/src/animation/clip-map.ts +0 -34
  329. package/src/asset-registry.ts +0 -89
  330. package/src/canvas-react/engine-bridge.ts +0 -59
  331. package/src/canvas-react/pixi-react-adapter.tsx +0 -356
  332. package/src/canvas-react/world-context.ts +0 -253
  333. package/src/dev/debug-draw.ts +0 -80
  334. package/src/render/auto-batcher.ts +0 -168
  335. package/src/render/lod.ts +0 -17
  336. package/src/runtime/types.ts +0 -328
  337. package/src/world3d-react/engine-bridge.ts +0 -86
  338. package/src/world3d-react/r3f-adapter.tsx +0 -717
  339. package/src/world3d-react/world-context.ts +0 -358
@@ -9,8 +9,8 @@
9
9
  *
10
10
  * Ownership, stated in one place (the build rule):
11
11
  * - OWNER: this function. It resolves the answer; nothing else derives it.
12
- * - SHARERS: the two three-root adapters (`adapter/setup-three-root-adapter.ts`
13
- * and `world3d-react/r3f-adapter.tsx`), which seed live render vitals only
12
+ * - SHARERS: the three-root adapter (`world3d-react/r3f-root-factory.tsx`),
13
+ * which seeds live render vitals only
14
14
  * under it, and the `static-batch` capability's mutation watch and `Frozen`
15
15
  * warning. Any future dev-only instrument calls this too, with its own
16
16
  * `override`.
@@ -0,0 +1,51 @@
1
+ /**
2
+ * The GAME-SCOPED input wiring one world mount owns — HOST work performed from
3
+ * outside the world's own tree, shared verbatim by the three and canvas lanes
4
+ * (a project has ONE input map and one bot-input doctrine, whatever surface
5
+ * reads them).
6
+ *
7
+ * Two things happen here:
8
+ *
9
+ * 1. the project's input map is loaded through `Game.loadInputMap` (game-owned,
10
+ * load-once), so the actions the project declared exist;
11
+ * 2. this root's seams are registered on the game-scoped debug registry
12
+ * (`setVirtualInputTarget`/`setInputActionsSource`/`setInputTraceSource`),
13
+ * which is what makes `game.input.hold/tap/...` (the bot/`vgai eval` input
14
+ * doctrine) and the built-in `input.actions`/`input.trace` providers
15
+ * resolve to this world instead of throwing `DEBUG_INPUT_UNAVAILABLE`.
16
+ *
17
+ * A world's React tree receives no vgai context — this wiring is precisely the
18
+ * part that never needed one: every closure below reads GAME-scoped state the
19
+ * host owns (`game.input`, `game.loop.fixedDt`, the game's seed).
20
+ *
21
+ * `optionalInputMap` is the CONVENTIONAL-PATH probe used when the project
22
+ * never named a map: an absent file is the ordinary state of a brand-new
23
+ * project, so it resolves quietly instead of printing an error on every boot.
24
+ * A map that exists and fails to parse is as loud as ever.
25
+ *
26
+ * LIFETIME, honestly: `registry.strip(id)` runs on the mount's dispose, but it
27
+ * walks providers/commands only — the three seams set here survive it, keyed
28
+ * by this world's id, until a remount of the same id overwrites them. That
29
+ * residue is inert rather than hidden: every closure reads game-scoped state,
30
+ * so a stale entry actuates exactly what a live one would. What it can still
31
+ * do is name a dead world in `DEBUG_INPUT_WORLD_NOT_FOUND`'s registered list.
32
+ * Do not write "the strip clears the input seams" anywhere without changing
33
+ * `strip` to actually do it.
34
+ */
35
+ import type { HostGameHandle } from '../adapter/host-context';
36
+ import type { DebugRegistry } from './debug-registry';
37
+ /** The conventional input-map location every scaffolded project ships
38
+ * (`public/inputmaps/default.inputmap.json`). */
39
+ export declare const DEFAULT_INPUT_MAP_PATH = "/inputmaps/default.inputmap.json";
40
+ /** The slice of a host context this wiring reads — satisfied structurally by
41
+ * both `ThreeHostContext` and `CanvasHostContext`. */
42
+ export interface GameInputSeamHost {
43
+ readonly game?: HostGameHandle | null | undefined;
44
+ readonly headless?: boolean | undefined;
45
+ }
46
+ export declare function wireGameInputSeams(host: GameInputSeamHost, registry: DebugRegistry, options: {
47
+ readonly id: string;
48
+ readonly inputMapPath?: string | null | undefined;
49
+ readonly optionalInputMap?: boolean | undefined;
50
+ }): Promise<void>;
51
+ //# sourceMappingURL=game-input-seams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game-input-seams.d.ts","sourceRoot":"","sources":["../../src/runtime/game-input-seams.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;kDACkD;AAClD,eAAO,MAAM,sBAAsB,qCAAqC,CAAC;AAEzE;uDACuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACzC;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE;IACP,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjD,GACA,OAAO,CAAC,IAAI,CAAC,CAiDf"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * The GAME-SCOPED input wiring one world mount owns — HOST work performed from
3
+ * outside the world's own tree, shared verbatim by the three and canvas lanes
4
+ * (a project has ONE input map and one bot-input doctrine, whatever surface
5
+ * reads them).
6
+ *
7
+ * Two things happen here:
8
+ *
9
+ * 1. the project's input map is loaded through `Game.loadInputMap` (game-owned,
10
+ * load-once), so the actions the project declared exist;
11
+ * 2. this root's seams are registered on the game-scoped debug registry
12
+ * (`setVirtualInputTarget`/`setInputActionsSource`/`setInputTraceSource`),
13
+ * which is what makes `game.input.hold/tap/...` (the bot/`vgai eval` input
14
+ * doctrine) and the built-in `input.actions`/`input.trace` providers
15
+ * resolve to this world instead of throwing `DEBUG_INPUT_UNAVAILABLE`.
16
+ *
17
+ * A world's React tree receives no vgai context — this wiring is precisely the
18
+ * part that never needed one: every closure below reads GAME-scoped state the
19
+ * host owns (`game.input`, `game.loop.fixedDt`, the game's seed).
20
+ *
21
+ * `optionalInputMap` is the CONVENTIONAL-PATH probe used when the project
22
+ * never named a map: an absent file is the ordinary state of a brand-new
23
+ * project, so it resolves quietly instead of printing an error on every boot.
24
+ * A map that exists and fails to parse is as loud as ever.
25
+ *
26
+ * LIFETIME, honestly: `registry.strip(id)` runs on the mount's dispose, but it
27
+ * walks providers/commands only — the three seams set here survive it, keyed
28
+ * by this world's id, until a remount of the same id overwrites them. That
29
+ * residue is inert rather than hidden: every closure reads game-scoped state,
30
+ * so a stale entry actuates exactly what a live one would. What it can still
31
+ * do is name a dead world in `DEBUG_INPUT_WORLD_NOT_FOUND`'s registered list.
32
+ * Do not write "the strip clears the input seams" anywhere without changing
33
+ * `strip` to actually do it.
34
+ */
35
+ import { getSeededRandom } from '../core/seeded-random';
36
+ /** The conventional input-map location every scaffolded project ships
37
+ * (`public/inputmaps/default.inputmap.json`). */
38
+ export const DEFAULT_INPUT_MAP_PATH = '/inputmaps/default.inputmap.json';
39
+ export function wireGameInputSeams(host, registry, options) {
40
+ const { id, inputMapPath = DEFAULT_INPUT_MAP_PATH, optionalInputMap = false } = options;
41
+ if (!host.game)
42
+ return Promise.resolve();
43
+ const game = host.game;
44
+ const input = game.input;
45
+ registry.setInputActionsSource(id, () => input.actionNames().map((name) => ({ name, valueType: input.getActionValueType(name) })));
46
+ registry.setInputTraceSource(id, () => {
47
+ const raw = input.getInputTrace();
48
+ return {
49
+ version: raw.version,
50
+ seed: getSeededRandom(game)?.seed ?? null,
51
+ fixedDt: game.loop.fixedDt,
52
+ ticks: raw.ticks,
53
+ };
54
+ });
55
+ registry.setVirtualInputTarget(id, {
56
+ setVirtualAction: (action, value) => input.setVirtualAction(action, value),
57
+ tapVirtualAction: (action) => input.tapVirtualAction(action),
58
+ clearVirtualActions: () => input.clearVirtualActions(),
59
+ scheduleActionAtTick: (tick, action, value) => input.scheduleActionAtTick(tick, action, value),
60
+ startInputRecording: () => input.startInputRecording(),
61
+ stopInputRecording: () => input.stopInputRecording(),
62
+ isInputRecording: () => input.isInputRecording(),
63
+ injectAxis: (sourceId, value) => input.injectAxis(sourceId, value),
64
+ injectVector2: (sourceId, value) => input.injectVector2(sourceId, value),
65
+ injectPointerDelta: (sourceId, delta) => input.injectPointerDelta(sourceId, delta),
66
+ injectPointerPosition: (sourceId, value) => input.injectPointerPosition(sourceId, value),
67
+ });
68
+ if (host.headless || inputMapPath === null)
69
+ return Promise.resolve();
70
+ // Load-once through the game-owned path (competing paths across roots throw
71
+ // THERE, loudly). A FAILED load (missing/bad file) must not fail the mount:
72
+ // a world with no declared actions is legal. It degrades loudly instead —
73
+ // naming exactly what breaks.
74
+ // The non-optional call passes ONE argument, exactly as it always has — a
75
+ // trailing `undefined` is a different call to any observer of it.
76
+ const load = optionalInputMap
77
+ ? game.loadInputMap(inputMapPath, { optional: true })
78
+ : game.loadInputMap(inputMapPath);
79
+ return load.catch((err) => {
80
+ // biome-ignore lint/suspicious/noConsole: deliberate loud degrade — the documented alternative to failing the mount (see comment above)
81
+ console.error(`world "${id}": failed to load input map "${inputMapPath}" — declared input ` +
82
+ 'actions and `game.input.*` (bot/virtual input) will not work until a valid map ' +
83
+ `loads. Ship one at the conventional path (${DEFAULT_INPUT_MAP_PATH}). ` +
84
+ `Cause: ${err instanceof Error ? err.message : String(err)}`);
85
+ });
86
+ }
@@ -7,8 +7,8 @@
7
7
  import type * as PIXI from 'pixi.js';
8
8
  import type * as THREE from 'three';
9
9
  import type { AdapterSurface as AdapterSurfaceLeaf } from '../adapter/adapter-surface';
10
+ import type { RootBinding } from '../adapter/binding';
10
11
  import type { MountedRoot } from '../adapter/root-adapter';
11
- import type { MountedSetupThreeRoot } from '../adapter/setup-three-root-adapter';
12
12
  import type { SystemAdapters } from '../adapter/system-adapter';
13
13
  import type { AssetCache } from '../assets';
14
14
  import type { createGameLoop } from '../core/game-loop';
@@ -20,10 +20,10 @@ import type { CollisionSystem } from '../physics/collision-system';
20
20
  import type { PhysicsRegistry } from '../physics/physics-registry';
21
21
  import type { Physics2DRegistry } from '../pixi/physics-registry';
22
22
  import { type RunTicksOptions } from './debug-registry';
23
+ import type { PlaytestContext } from './playtest';
23
24
  import { type GameStateBridge } from './state-bridge';
24
- import type { GameContext, PlaytestContext } from './types';
25
25
  /** The one loop type — `createGameLoop`'s return shape (fixed-step sim,
26
- * display-rate presentation since WO-P13). */
26
+ * display-rate presentation). */
27
27
  export type GameLoop = ReturnType<typeof createGameLoop>;
28
28
  /**
29
29
  * Game-level play-state control surface (D10, T7.6): pause/resume/step as ONE
@@ -33,10 +33,10 @@ export type GameLoop = ReturnType<typeof createGameLoop>;
33
33
  * freezes. A paused-and-pausable world's `render` phase still runs (with `dt`
34
34
  * forced to `0`, so time-based render effects — e.g. a post-processing pass with
35
35
  * its own internal clock — don't silently keep animating under a "frozen" scene)
36
- * — simulation freezes, the screen does not go black. WO-P13 changed only the
37
- * CADENCE of that: once per display frame under a host that drives
38
- * `runRenderFrame`, once per substep under one that still renders inside
39
- * `runFrame`. `GameLoop.timeScale` (unaffected by this) remains the orthogonal
36
+ * — simulation freezes, the screen does not go black. That render runs once per
37
+ * display frame under a host that drives `runRenderFrame`, and once per substep
38
+ * under one that still renders inside
39
+ * `runFrame`. `GameLoop.timeScale` remains the orthogonal
40
40
  * "speed up/slow down" axis — pausing never touches it, so the host's
41
41
  * accumulator/rAF loop keeps ticking at its normal cadence, which is what makes
42
42
  * "paused still renders" possible.
@@ -83,7 +83,7 @@ export interface PlayState {
83
83
  * `adapter/root-adapter.ts`'s kind-tagged `MountedRoot` types can name it
84
84
  * without an import cycle back to this file. This re-export keeps every
85
85
  * existing `import type { AdapterSurface } from '../runtime/game'` call site
86
- * (`ecs/behavior.ts`, `ecs/component-manager.ts`) compiling unchanged.
86
+ * compiling unchanged.
87
87
  */
88
88
  export type AdapterSurface = AdapterSurfaceLeaf;
89
89
  /**
@@ -107,6 +107,23 @@ export interface RootFrameHooks {
107
107
  /**
108
108
  * A single world instance: the unit of adaptation.
109
109
  */
110
+ /**
111
+ * One `SystemAdapters` slot a mounted root's `systems` table answered with
112
+ * `absent(reason)` (`adapter/system-slot.ts`) — a POSITIVE absence.
113
+ *
114
+ * Nothing is installed for it. It exists so a reader can tell "this game has no
115
+ * physics" from "nobody looked", which the adapter bag alone cannot do: an
116
+ * unfilled slot has the same shape for both, and only one of them is a work
117
+ * order.
118
+ */
119
+ export interface DeclaredSystemAbsence {
120
+ /** The root whose declaration answered — absences are declared per root, and
121
+ * the slot is only truly absent when NO root fills it. */
122
+ readonly rootId: string;
123
+ readonly slot: keyof SystemAdapters;
124
+ /** The game's own words: what was searched, and what was found. */
125
+ readonly reason: string;
126
+ }
110
127
  export interface RootInstance {
111
128
  /** Manifest root id. */
112
129
  readonly id: string;
@@ -160,6 +177,39 @@ export interface RootInstance {
160
177
  * instead (unless it `drivesOwnLoop`, in which case it isn't ticked at
161
178
  * all — see `runFrame`). */
162
179
  readonly frame?: RootFrameHooks | undefined;
180
+ /** True from the moment this world's `mounted.dispose()` runs. There is no
181
+ * `unregisterRoot`, so a disposed world stays in `Game.roots`; `runFrame`
182
+ * reads this to skip it entirely — frame hooks AND the opaque
183
+ * `mounted.update` fallback (see the disposed-world guard in
184
+ * `createRootInstance`). */
185
+ readonly disposed: boolean;
186
+ /**
187
+ * THIS ROOT'S WHOLE DECLARATION, BOUND — `adapter/binding.ts`'s
188
+ * {@link RootBinding}, assembled at registration from this instance's own
189
+ * `adapter`/`mounted`/`pausable` plus the {@link RootDeclaration} the
190
+ * resolver produced. Every member of it is a reference to something already
191
+ * reachable through the fields above; it is the ONE place the five protocol
192
+ * families are addressed by name rather than re-assembled per consumer.
193
+ *
194
+ * `null` in exactly ONE honest case, and never as a degrade: the
195
+ * registration carried NO declaration — a bare
196
+ * `registerThreeRoot(game, adapter, mounted)` from a test harness, or a
197
+ * `mountManifestRoots` caller that supplied an already-constructed adapter
198
+ * with no entry namespace behind it. There is no manifest root, no parsed
199
+ * definition and no entry surface to bind, and fabricating them would be
200
+ * the anti-shim rule broken at the seam that exists to hold it. Every root
201
+ * the editor resolves through `resolveAllRoots`/`resolveAllRootEntries`
202
+ * carries a declaration, so its binding is non-null.
203
+ *
204
+ * A mount that exposes no `authoring` does NOT null this out; it costs that
205
+ * root its `projection` and `truth` members only (see
206
+ * {@link RootBinding.projection}). That distinction is load-bearing: the
207
+ * editor supplies native TSX roots' authoring itself, so treating an
208
+ * absent `mounted.authoring` as an absent BINDING made `binding` null for
209
+ * every first-party root and left four perfectly constructible families
210
+ * unreadable.
211
+ */
212
+ readonly binding: RootBinding | null;
163
213
  }
164
214
  /**
165
215
  * Minimal identity surface `RootInstance.adapter` needs (T7.5) — see that
@@ -196,6 +246,9 @@ export interface RootInstanceInit {
196
246
  readonly physics2d?: Physics2DRegistry | undefined;
197
247
  readonly camera?: unknown;
198
248
  readonly frame?: RootFrameHooks | undefined;
249
+ /** This root's bound declaration — see {@link RootInstance.binding} for
250
+ * when it is legitimately absent. */
251
+ readonly binding?: RootBinding | null | undefined;
199
252
  }
200
253
  /**
201
254
  * Build a `RootInstance` whose kind-narrowed accessors throw descriptively
@@ -204,23 +257,9 @@ export interface RootInstanceInit {
204
257
  * slice or later ones) gets identical throw behavior.
205
258
  */
206
259
  export declare function createRootInstance(init: RootInstanceInit): RootInstance;
207
- /**
208
- * Type guard for whether a `MountedThreeRoot` is a first-party
209
- * `SetupThreeRootAdapter` mount (has a live `GameContext` at `.ctx`). Used to
210
- * decide whether a world's `physics`/`collisions`/`camera` can be populated
211
- * from it — an external
212
- * adapter's mount has none of these first-party handles.
213
- *
214
- * Checks the `firstParty: true` brand (checklist item 1), NOT `'ctx' in
215
- * mounted` — a foreign mount may carry an unrelated `ctx` key, so a
216
- * structural `'ctx' in mounted` check would misfire. The probe is a plain property read, not an
217
- * `instanceof`/value import of `setup-three-root-adapter.ts` — the
218
- * `MountedSetupThreeRoot` import above stays type-only.
219
- */
220
- export declare function isFirstPartyMounted(mounted: MountedRoot): mounted is MountedSetupThreeRoot;
221
260
  /**
222
261
  * One world's half of a debris disposal, as {@link disposeDebrisSubtree} needs
223
- * it. A first-party `GameContext` satisfies this structurally.
262
+ * it.
224
263
  *
225
264
  * `physics`/`rapierWorld` are OPTIONAL: an owner that builds no first-party
226
265
  * Rapier runtime (an R3F world) carries neither, and {@link
@@ -228,23 +267,22 @@ export declare function isFirstPartyMounted(mounted: MountedRoot): mounted is Mo
228
267
  * unconditionally.
229
268
  */
230
269
  export interface DebrisOwner {
231
- readonly physics?: GameContext['physics'];
232
- readonly rapierWorld?: GameContext['rapierWorld'];
270
+ readonly physics?: PhysicsRegistry;
271
+ readonly rapierWorld?: import('@dimforge/rapier3d-compat').World;
233
272
  }
234
273
  /**
235
274
  * P3 — what `SimClock.disposeAfter` actually does. `core/sim-clock.ts` knows
236
275
  * only *when*; this is the *what*, and it lives here because it is the runtime
237
276
  * that knows about Rapier and shared geometry.
238
277
  *
239
- * The order mirrors `adapter/setup-three-root-adapter.ts`'s world teardown for
278
+ * The order mirrors `adapter/world3d-react/r3f-root-factory.tsx`'s world teardown for
240
279
  * ONE subtree. Within the physics step,
241
280
  * `rapierWorld.removeRigidBody(body)` comes BEFORE `physics.remove(node)`: the
242
281
  * registry's `remove()` only drops index entries, so reversing the two leaks
243
282
  * the Rapier body.
244
283
  *
245
- * `owners` is every world that could own part of the subtree `createGame`
246
- * passes all of its first-party three roots as their `GameContext`, a bare
247
- * adapter mount passes its own ctx. `physics.get` is a no-op for a node the
284
+ * `owners` is every world that could own part of the subtree. `physics.get`
285
+ * is a no-op for a node the
248
286
  * owner does not own, so offering the subtree to each is safe.
249
287
  *
250
288
  * Safe on an object already removed or already disposed: `removeFromParent` on
@@ -269,13 +307,13 @@ export interface Game {
269
307
  * Within each phase,
270
308
  * `GameInternal.runFrame` runs THIS runner's `runPhase` first, before any
271
309
  * world's engine systems/component ticks/world-bound game systems (e.g.
272
- * `ctx.systems.add`, which stays world-bound to the default world — see
273
- * `runtime/types.ts`). Empty for every existing game (nothing registers
310
+ * `ctx.systems.add`, which stays world-bound to the default world).
311
+ * Empty for every existing game (nothing registers
274
312
  * against it), so an empty runner has no frame cost beyond dispatch.
275
313
  */
276
314
  readonly systems: SystemRunner;
277
315
  /** Declaration-ordered. This is the same array reference `registerRoot`
278
- * mutates, not a snapshot, so holders (e.g. `GameContext.roots`) observe
316
+ * mutates, not a snapshot, so holders observe
279
317
  * later registrations. */
280
318
  readonly roots: ReadonlyArray<RootInstance>;
281
319
  world(id: string): RootInstance | null;
@@ -308,6 +346,32 @@ export interface Game {
308
346
  readonly systemAdapters: SystemAdapters;
309
347
  /** Subscribe when a mounted root registers or replaces a system adapter. */
310
348
  subscribeSystemAdapters?(listener: () => void): () => void;
349
+ /**
350
+ * Install a root's STATICALLY DECLARED system-adapter slots — the native
351
+ * module surface's `export const systems` (adapter/native-debug-module.ts),
352
+ * already validated by `contract-system-adapters.ts`. The host calls this
353
+ * once per declaring root at mount; project components never do
354
+ * (ARCHITECTURE-CORE §System adapters: "Components never call
355
+ * `registerSystemAdapter`" — this door is the replacement, and the slots it
356
+ * installs take precedence over a component registration for the same root
357
+ * in {@link systemAdapters}'s merge, with the standard collision warning).
358
+ * Throws on an unmounted root id or a second declaration for the same root.
359
+ * Optional for the same reason {@link subscribeSystemAdapters} is: partial
360
+ * `Game` doubles in tests; `installNativeSystemsBindings` refuses loudly
361
+ * when the hosting Game lacks it.
362
+ */
363
+ installDeclaredSystemAdapters?(rootId: string, slots: Readonly<Partial<SystemAdapters>>, absent?: readonly DeclaredSystemAbsence[]): void;
364
+ /**
365
+ * Every slot a mounted root's `systems` table answered with `absent(reason)`,
366
+ * across all roots — the game-scoped read of the positive absences.
367
+ *
368
+ * This is what separates "this game has no networking" from "nobody looked",
369
+ * and it is the ONLY source for that distinction on a native mount: the
370
+ * adapter bag ({@link systemAdapters}) can only say a slot is unfilled, which
371
+ * is the same shape for both. Empty means no root declared any absence — NOT
372
+ * that every slot is answered.
373
+ */
374
+ readonly declaredSystemAbsences?: readonly DeclaredSystemAbsence[];
311
375
  /** The one game-owned `InputManager`, shared by every first-party root. */
312
376
  readonly input: InputManager;
313
377
  /**
@@ -322,7 +386,7 @@ export interface Game {
322
386
  /** Game-level play-state control surface (D10, T7.6) — see {@link PlayState}. */
323
387
  readonly play: PlayState;
324
388
  /**
325
- * WO-P13 — the interpolation alpha the most recent display frame presented
389
+ * The interpolation alpha the most recent display frame presented
326
390
  * at: `accumulator / fixedDt`, in `[0, 1]`. `0` means "exactly on the last
327
391
  * completed fixed state", `0.5` means "halfway to the next one".
328
392
  *
@@ -334,7 +398,7 @@ export interface Game {
334
398
  */
335
399
  readonly renderAlpha: number;
336
400
  /**
337
- * WO-P13 — the `RenderStepped`-shaped host: register a callback that runs
401
+ * The `RenderStepped`-shaped host: register a callback that runs
338
402
  * ONCE PER DISPLAY FRAME, before that frame's `preRender`/`render` phases,
339
403
  * with `(alpha, displayDt)`.
340
404
  *
@@ -407,21 +471,21 @@ export interface GameInternal extends Game {
407
471
  * touches no other world at all — a natural no-op while not paused, since
408
472
  * the frozen set is then empty.
409
473
  *
410
- * WO-P13 addendum: `opts.skipRenderPhases` omits `preRender`+`render` from
474
+ * `opts.skipRenderPhases` omits `preRender`+`render` from
411
475
  * the pass — every other phase, and `endFrame`, run exactly as always. A
412
476
  * host that drives presentation at DISPLAY rate sets it on every substep
413
477
  * and calls {@link runRenderFrame} once per real frame instead
414
478
  * (`create-runtime.ts`). A host that does
415
- * not set it keeps the pre-WO-P13 shape verbatim — which is why
479
+ * not set it renders inside the substep — which is why
416
480
  * `externalDrive` capture (`render-control.ts`'s `simulateSubsteps`, which
417
- * calls `runFrame(fixedDt)` with no opts) is frame-exact and unchanged.
481
+ * calls `runFrame(fixedDt)` with no opts) is frame-exact.
418
482
  * `runTicks` sets it per tick for its `render: 'none' | 'last'` modes.
419
483
  */
420
484
  runFrame(dt: number, opts?: {
421
485
  skipRenderPhases?: boolean;
422
486
  }): void;
423
487
  /**
424
- * WO-P13 — run ONE display frame's presentation pass: the registered
488
+ * Run ONE display frame's presentation pass: the registered
425
489
  * `onRenderStep` callbacks, then the `preRender` and `render` phases across
426
490
  * game-scoped systems and every host-driven world, in the same
427
491
  * game-systems-then-worlds order {@link runFrame} uses.
@@ -496,8 +560,8 @@ export interface GameInternal extends Game {
496
560
  runTicks(n: number, opts?: RunTicksOptions): void;
497
561
  /**
498
562
  * ADAPTER-MOUNT surface, not game-facing: an adapter's `mount()` calls
499
- * this (via `host.game` — the classic `SetupThreeRootAdapter` and the R3F
500
- * `createR3FRootContext` both do) to load the game-owned input map ONCE,
563
+ * this (via `host.game` — the R3F
564
+ * `createR3FRootContext` does) to load the game-owned input map ONCE,
501
565
  * even when several roots ask for the same path; competing paths throw
502
566
  * (input is game-owned, so roots cannot load competing maps). GAME code
503
567
  * never calls this — a project's map loads automatically at mount from
@@ -1 +1 @@
1
- {"version":3,"file":"game.d.ts","sourceRoot":"","sources":["../../src/runtime/game.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"game.d.ts","sourceRoot":"","sources":["../../src/runtime/game.ts"],"names":[],"mappings":"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"}