@vgai/engine 0.5.0 → 0.5.2

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 (538) hide show
  1. package/package.json +1 -1
  2. package/schemas/engine-capabilities.json +4 -4
  3. package/schemas/vgai-game.schema.json +2 -2
  4. package/src/adapter/authoring.ts +42 -0
  5. package/src/adapter/index.ts +3 -0
  6. package/src/adapter/ingest/overlay-apply.ts +50 -6
  7. package/src/adapter/ingest/scene-capture.ts +51 -2
  8. package/src/adapter/vgai-scene-game-adapter.ts +24 -0
  9. package/src/manifest/schema.ts +7 -3
  10. package/src/runtime/create-runtime.ts +97 -0
  11. package/src/runtime/game.ts +11 -1
  12. package/src/scene/asset-ref-check.ts +1 -1
  13. package/src/scene/scene-loader.ts +2 -2
  14. package/src/scene/user-data.ts +18 -0
  15. package/src/world3d-react/behavior.tsx +19 -11
  16. package/src/world3d-react/r3f-adapter.tsx +8 -0
  17. package/dist/adapter/adapter-surface.d.ts +0 -30
  18. package/dist/adapter/adapter-surface.d.ts.map +0 -1
  19. package/dist/adapter/adapter-surface.js +0 -18
  20. package/dist/adapter/authoring.d.ts +0 -461
  21. package/dist/adapter/authoring.d.ts.map +0 -1
  22. package/dist/adapter/authoring.js +0 -22
  23. package/dist/adapter/colyseus-networking-adapter.d.ts +0 -43
  24. package/dist/adapter/colyseus-networking-adapter.d.ts.map +0 -1
  25. package/dist/adapter/colyseus-networking-adapter.js +0 -38
  26. package/dist/adapter/first-party-systems.d.ts +0 -38
  27. package/dist/adapter/first-party-systems.d.ts.map +0 -1
  28. package/dist/adapter/first-party-systems.js +0 -77
  29. package/dist/adapter/game-adapter.d.ts +0 -133
  30. package/dist/adapter/game-adapter.d.ts.map +0 -1
  31. package/dist/adapter/game-adapter.js +0 -10
  32. package/dist/adapter/host-context.d.ts +0 -71
  33. package/dist/adapter/host-context.d.ts.map +0 -1
  34. package/dist/adapter/host-context.js +0 -16
  35. package/dist/adapter/index.d.ts +0 -22
  36. package/dist/adapter/index.d.ts.map +0 -1
  37. package/dist/adapter/index.js +0 -15
  38. package/dist/adapter/ingest/game-contract.d.ts +0 -53
  39. package/dist/adapter/ingest/game-contract.d.ts.map +0 -1
  40. package/dist/adapter/ingest/game-contract.js +0 -30
  41. package/dist/adapter/ingest/overlay-applier.d.ts +0 -118
  42. package/dist/adapter/ingest/overlay-applier.d.ts.map +0 -1
  43. package/dist/adapter/ingest/overlay-applier.js +0 -132
  44. package/dist/adapter/ingest/overlay-apply.d.ts +0 -60
  45. package/dist/adapter/ingest/overlay-apply.d.ts.map +0 -1
  46. package/dist/adapter/ingest/overlay-apply.js +0 -101
  47. package/dist/adapter/ingest/overlay-file.d.ts +0 -79
  48. package/dist/adapter/ingest/overlay-file.d.ts.map +0 -1
  49. package/dist/adapter/ingest/overlay-file.js +0 -66
  50. package/dist/adapter/ingest/overlay-report.d.ts +0 -113
  51. package/dist/adapter/ingest/overlay-report.d.ts.map +0 -1
  52. package/dist/adapter/ingest/overlay-report.js +0 -103
  53. package/dist/adapter/ingest/scene-capture.d.ts +0 -97
  54. package/dist/adapter/ingest/scene-capture.d.ts.map +0 -1
  55. package/dist/adapter/ingest/scene-capture.js +0 -248
  56. package/dist/adapter/ingest/upstream-pin.d.ts +0 -47
  57. package/dist/adapter/ingest/upstream-pin.d.ts.map +0 -1
  58. package/dist/adapter/ingest/upstream-pin.js +0 -50
  59. package/dist/adapter/loop-gate-report.d.ts +0 -34
  60. package/dist/adapter/loop-gate-report.d.ts.map +0 -1
  61. package/dist/adapter/loop-gate-report.js +0 -37
  62. package/dist/adapter/rapier-physics-adapter.d.ts +0 -12
  63. package/dist/adapter/rapier-physics-adapter.d.ts.map +0 -1
  64. package/dist/adapter/rapier-physics-adapter.js +0 -46
  65. package/dist/adapter/system-adapter.d.ts +0 -206
  66. package/dist/adapter/system-adapter.d.ts.map +0 -1
  67. package/dist/adapter/system-adapter.js +0 -13
  68. package/dist/adapter/transform.d.ts +0 -18
  69. package/dist/adapter/transform.d.ts.map +0 -1
  70. package/dist/adapter/transform.js +0 -1
  71. package/dist/adapter/vgai-scene-game-adapter.d.ts +0 -108
  72. package/dist/adapter/vgai-scene-game-adapter.d.ts.map +0 -1
  73. package/dist/adapter/vgai-scene-game-adapter.js +0 -762
  74. package/dist/ai/navigation.d.ts +0 -64
  75. package/dist/ai/navigation.d.ts.map +0 -1
  76. package/dist/ai/navigation.js +0 -133
  77. package/dist/animation/anim-graph-types.d.ts +0 -25
  78. package/dist/animation/anim-graph-types.d.ts.map +0 -1
  79. package/dist/animation/anim-graph-types.js +0 -1
  80. package/dist/animation/animation-clock.d.ts +0 -213
  81. package/dist/animation/animation-clock.d.ts.map +0 -1
  82. package/dist/animation/animation-clock.js +0 -301
  83. package/dist/animation/blend-node.d.ts +0 -22
  84. package/dist/animation/blend-node.d.ts.map +0 -1
  85. package/dist/animation/blend-node.js +0 -97
  86. package/dist/animation/camera-ownership.d.ts +0 -250
  87. package/dist/animation/camera-ownership.d.ts.map +0 -1
  88. package/dist/animation/camera-ownership.js +0 -169
  89. package/dist/animation/cinematic-cues.d.ts +0 -200
  90. package/dist/animation/cinematic-cues.d.ts.map +0 -1
  91. package/dist/animation/cinematic-cues.js +0 -213
  92. package/dist/animation/clip-map.d.ts +0 -12
  93. package/dist/animation/clip-map.d.ts.map +0 -1
  94. package/dist/animation/clip-map.js +0 -37
  95. package/dist/animation/gsap-registration.d.ts +0 -119
  96. package/dist/animation/gsap-registration.d.ts.map +0 -1
  97. package/dist/animation/gsap-registration.js +0 -92
  98. package/dist/animation/theatre-clock-binding.d.ts +0 -89
  99. package/dist/animation/theatre-clock-binding.d.ts.map +0 -1
  100. package/dist/animation/theatre-clock-binding.js +0 -29
  101. package/dist/animation/theatre-director.d.ts +0 -242
  102. package/dist/animation/theatre-director.d.ts.map +0 -1
  103. package/dist/animation/theatre-director.js +0 -235
  104. package/dist/animation/theatre-object-binding.d.ts +0 -305
  105. package/dist/animation/theatre-object-binding.d.ts.map +0 -1
  106. package/dist/animation/theatre-object-binding.js +0 -351
  107. package/dist/animation/xstate-animation-binding.d.ts +0 -56
  108. package/dist/animation/xstate-animation-binding.d.ts.map +0 -1
  109. package/dist/animation/xstate-animation-binding.js +0 -331
  110. package/dist/animation/xstate-animation-meta.d.ts +0 -266
  111. package/dist/animation/xstate-animation-meta.d.ts.map +0 -1
  112. package/dist/animation/xstate-animation-meta.js +0 -252
  113. package/dist/assets.d.ts +0 -26
  114. package/dist/assets.d.ts.map +0 -1
  115. package/dist/assets.js +0 -55
  116. package/dist/audio/index.d.ts +0 -4
  117. package/dist/audio/index.d.ts.map +0 -1
  118. package/dist/audio/index.js +0 -24
  119. package/dist/audio/tone-clock-binding.d.ts +0 -75
  120. package/dist/audio/tone-clock-binding.d.ts.map +0 -1
  121. package/dist/audio/tone-clock-binding.js +0 -29
  122. package/dist/audio/tone-context.d.ts +0 -114
  123. package/dist/audio/tone-context.d.ts.map +0 -1
  124. package/dist/audio/tone-context.js +0 -39
  125. package/dist/audio/tone-offline-render.d.ts +0 -90
  126. package/dist/audio/tone-offline-render.d.ts.map +0 -1
  127. package/dist/audio/tone-offline-render.js +0 -56
  128. package/dist/audio/wav-encode.d.ts +0 -38
  129. package/dist/audio/wav-encode.d.ts.map +0 -1
  130. package/dist/audio/wav-encode.js +0 -97
  131. package/dist/character/cloth-sim.d.ts +0 -179
  132. package/dist/character/cloth-sim.d.ts.map +0 -1
  133. package/dist/character/cloth-sim.js +0 -334
  134. package/dist/character/spring-chain.d.ts +0 -135
  135. package/dist/character/spring-chain.d.ts.map +0 -1
  136. package/dist/character/spring-chain.js +0 -165
  137. package/dist/core/game-loop.d.ts +0 -42
  138. package/dist/core/game-loop.d.ts.map +0 -1
  139. package/dist/core/game-loop.js +0 -167
  140. package/dist/core/seeded-random.d.ts +0 -69
  141. package/dist/core/seeded-random.d.ts.map +0 -1
  142. package/dist/core/seeded-random.js +0 -121
  143. package/dist/core/system-runner.d.ts +0 -120
  144. package/dist/core/system-runner.d.ts.map +0 -1
  145. package/dist/core/system-runner.js +0 -297
  146. package/dist/core/types.d.ts +0 -92
  147. package/dist/core/types.d.ts.map +0 -1
  148. package/dist/core/types.js +0 -25
  149. package/dist/data/data-asset.d.ts +0 -101
  150. package/dist/data/data-asset.d.ts.map +0 -1
  151. package/dist/data/data-asset.js +0 -122
  152. package/dist/data/data-check-core.d.ts +0 -110
  153. package/dist/data/data-check-core.d.ts.map +0 -1
  154. package/dist/data/data-check-core.js +0 -178
  155. package/dist/data/data-ref.d.ts +0 -79
  156. package/dist/data/data-ref.d.ts.map +0 -1
  157. package/dist/data/data-ref.js +0 -130
  158. package/dist/data/vite-plugin-data.d.ts +0 -79
  159. package/dist/data/vite-plugin-data.d.ts.map +0 -1
  160. package/dist/data/vite-plugin-data.js +0 -217
  161. package/dist/dev/console-bridge.d.ts +0 -22
  162. package/dist/dev/console-bridge.d.ts.map +0 -1
  163. package/dist/dev/console-bridge.js +0 -71
  164. package/dist/dev/debug-draw.d.ts +0 -24
  165. package/dist/dev/debug-draw.d.ts.map +0 -1
  166. package/dist/dev/debug-draw.js +0 -73
  167. package/dist/dev/logger.d.ts +0 -30
  168. package/dist/dev/logger.d.ts.map +0 -1
  169. package/dist/dev/logger.js +0 -90
  170. package/dist/dev/performance-profiler.d.ts +0 -60
  171. package/dist/dev/performance-profiler.d.ts.map +0 -1
  172. package/dist/dev/performance-profiler.js +0 -181
  173. package/dist/dev/webgl-gpu-timer.d.ts +0 -8
  174. package/dist/dev/webgl-gpu-timer.d.ts.map +0 -1
  175. package/dist/dev/webgl-gpu-timer.js +0 -52
  176. package/dist/ecs/component-manager.d.ts +0 -205
  177. package/dist/ecs/component-manager.d.ts.map +0 -1
  178. package/dist/ecs/component-manager.js +0 -706
  179. package/dist/ecs/game-component.d.ts +0 -146
  180. package/dist/ecs/game-component.d.ts.map +0 -1
  181. package/dist/ecs/game-component.js +0 -141
  182. package/dist/ecs/hmr-swap-report.d.ts +0 -53
  183. package/dist/ecs/hmr-swap-report.d.ts.map +0 -1
  184. package/dist/ecs/hmr-swap-report.js +0 -55
  185. package/dist/humanoid/bake.operation.d.ts +0 -119
  186. package/dist/humanoid/bake.operation.d.ts.map +0 -1
  187. package/dist/humanoid/bake.operation.js +0 -228
  188. package/dist/humanoid/body.d.ts +0 -101
  189. package/dist/humanoid/body.d.ts.map +0 -1
  190. package/dist/humanoid/body.js +0 -530
  191. package/dist/humanoid/clips.d.ts +0 -62
  192. package/dist/humanoid/clips.d.ts.map +0 -1
  193. package/dist/humanoid/clips.js +0 -121
  194. package/dist/humanoid/compose.d.ts +0 -75
  195. package/dist/humanoid/compose.d.ts.map +0 -1
  196. package/dist/humanoid/compose.js +0 -176
  197. package/dist/humanoid/generate.d.ts +0 -92
  198. package/dist/humanoid/generate.d.ts.map +0 -1
  199. package/dist/humanoid/generate.js +0 -124
  200. package/dist/humanoid/index.d.ts +0 -24
  201. package/dist/humanoid/index.d.ts.map +0 -1
  202. package/dist/humanoid/index.js +0 -18
  203. package/dist/humanoid/schema.d.ts +0 -35
  204. package/dist/humanoid/schema.d.ts.map +0 -1
  205. package/dist/humanoid/schema.js +0 -87
  206. package/dist/humanoid/skeleton.d.ts +0 -103
  207. package/dist/humanoid/skeleton.d.ts.map +0 -1
  208. package/dist/humanoid/skeleton.js +0 -289
  209. package/dist/index.d.ts +0 -37
  210. package/dist/index.d.ts.map +0 -1
  211. package/dist/index.js +0 -30
  212. package/dist/input/input-manager.d.ts +0 -945
  213. package/dist/input/input-manager.d.ts.map +0 -1
  214. package/dist/input/input-manager.js +0 -2207
  215. package/dist/input/input-types.d.ts +0 -174
  216. package/dist/input/input-types.d.ts.map +0 -1
  217. package/dist/input/input-types.js +0 -1
  218. package/dist/input/prompt-labels.d.ts +0 -21
  219. package/dist/input/prompt-labels.d.ts.map +0 -1
  220. package/dist/input/prompt-labels.js +0 -121
  221. package/dist/input/rebind-controller.d.ts +0 -59
  222. package/dist/input/rebind-controller.d.ts.map +0 -1
  223. package/dist/input/rebind-controller.js +0 -85
  224. package/dist/input/schema.d.ts +0 -16
  225. package/dist/input/schema.d.ts.map +0 -1
  226. package/dist/input/schema.js +0 -228
  227. package/dist/loader.d.ts +0 -43
  228. package/dist/loader.d.ts.map +0 -1
  229. package/dist/loader.js +0 -59
  230. package/dist/manifest/index.d.ts +0 -5
  231. package/dist/manifest/index.d.ts.map +0 -1
  232. package/dist/manifest/index.js +0 -8
  233. package/dist/manifest/load-file.d.ts +0 -4
  234. package/dist/manifest/load-file.d.ts.map +0 -1
  235. package/dist/manifest/load-file.js +0 -14
  236. package/dist/manifest/load.d.ts +0 -144
  237. package/dist/manifest/load.d.ts.map +0 -1
  238. package/dist/manifest/load.js +0 -273
  239. package/dist/manifest/schema.d.ts +0 -230
  240. package/dist/manifest/schema.d.ts.map +0 -1
  241. package/dist/manifest/schema.js +0 -394
  242. package/dist/physics/collision-system.d.ts +0 -41
  243. package/dist/physics/collision-system.d.ts.map +0 -1
  244. package/dist/physics/collision-system.js +0 -64
  245. package/dist/physics/physics-registry.d.ts +0 -45
  246. package/dist/physics/physics-registry.d.ts.map +0 -1
  247. package/dist/physics/physics-registry.js +0 -65
  248. package/dist/physics/transform-writer.d.ts +0 -16
  249. package/dist/physics/transform-writer.d.ts.map +0 -1
  250. package/dist/physics/transform-writer.js +0 -38
  251. package/dist/physics/trigger-dispatch.d.ts +0 -24
  252. package/dist/physics/trigger-dispatch.d.ts.map +0 -1
  253. package/dist/physics/trigger-dispatch.js +0 -80
  254. package/dist/react/game-state.d.ts +0 -156
  255. package/dist/react/game-state.d.ts.map +0 -1
  256. package/dist/react/game-state.js +0 -222
  257. package/dist/react/root-adapter.d.ts +0 -11
  258. package/dist/react/root-adapter.d.ts.map +0 -1
  259. package/dist/react/root-adapter.js +0 -41
  260. package/dist/react/unmanaged-root-detector.d.ts +0 -12
  261. package/dist/react/unmanaged-root-detector.d.ts.map +0 -1
  262. package/dist/react/unmanaged-root-detector.js +0 -45
  263. package/dist/react/use-data.d.ts +0 -60
  264. package/dist/react/use-data.d.ts.map +0 -1
  265. package/dist/react/use-data.js +0 -101
  266. package/dist/react/use-selection.d.ts +0 -75
  267. package/dist/react/use-selection.d.ts.map +0 -1
  268. package/dist/react/use-selection.js +0 -90
  269. package/dist/render/auto-batcher.d.ts +0 -34
  270. package/dist/render/auto-batcher.d.ts.map +0 -1
  271. package/dist/render/auto-batcher.js +0 -140
  272. package/dist/render/render-batch-system.d.ts +0 -33
  273. package/dist/render/render-batch-system.d.ts.map +0 -1
  274. package/dist/render/render-batch-system.js +0 -230
  275. package/dist/render/render-features.d.ts +0 -47
  276. package/dist/render/render-features.d.ts.map +0 -1
  277. package/dist/render/render-features.js +0 -105
  278. package/dist/render/render-settings.d.ts +0 -36
  279. package/dist/render/render-settings.d.ts.map +0 -1
  280. package/dist/render/render-settings.js +0 -51
  281. package/dist/runtime/create-runtime.d.ts +0 -249
  282. package/dist/runtime/create-runtime.d.ts.map +0 -1
  283. package/dist/runtime/create-runtime.js +0 -641
  284. package/dist/runtime/debug-bridge.d.ts +0 -257
  285. package/dist/runtime/debug-bridge.d.ts.map +0 -1
  286. package/dist/runtime/debug-bridge.js +0 -224
  287. package/dist/runtime/debug-registry.d.ts +0 -288
  288. package/dist/runtime/debug-registry.d.ts.map +0 -1
  289. package/dist/runtime/debug-registry.js +0 -513
  290. package/dist/runtime/frame-selector-cache.d.ts +0 -41
  291. package/dist/runtime/frame-selector-cache.d.ts.map +0 -1
  292. package/dist/runtime/frame-selector-cache.js +0 -65
  293. package/dist/runtime/game.d.ts +0 -496
  294. package/dist/runtime/game.d.ts.map +0 -1
  295. package/dist/runtime/game.js +0 -741
  296. package/dist/runtime/gameplay-rng-trap.d.ts +0 -48
  297. package/dist/runtime/gameplay-rng-trap.d.ts.map +0 -1
  298. package/dist/runtime/gameplay-rng-trap.js +0 -96
  299. package/dist/runtime/input-router.d.ts +0 -78
  300. package/dist/runtime/input-router.d.ts.map +0 -1
  301. package/dist/runtime/input-router.js +0 -171
  302. package/dist/runtime/mount-game.d.ts +0 -129
  303. package/dist/runtime/mount-game.d.ts.map +0 -1
  304. package/dist/runtime/mount-game.js +0 -152
  305. package/dist/runtime/mount-manifest.d.ts +0 -173
  306. package/dist/runtime/mount-manifest.d.ts.map +0 -1
  307. package/dist/runtime/mount-manifest.js +0 -297
  308. package/dist/runtime/render-audio-control.d.ts +0 -110
  309. package/dist/runtime/render-audio-control.d.ts.map +0 -1
  310. package/dist/runtime/render-audio-control.js +0 -111
  311. package/dist/runtime/render-control.d.ts +0 -291
  312. package/dist/runtime/render-control.d.ts.map +0 -1
  313. package/dist/runtime/render-control.js +0 -264
  314. package/dist/runtime/render-seed.d.ts +0 -57
  315. package/dist/runtime/render-seed.d.ts.map +0 -1
  316. package/dist/runtime/render-seed.js +0 -74
  317. package/dist/runtime/state-bridge.d.ts +0 -61
  318. package/dist/runtime/state-bridge.d.ts.map +0 -1
  319. package/dist/runtime/state-bridge.js +0 -63
  320. package/dist/runtime/types.d.ts +0 -253
  321. package/dist/runtime/types.d.ts.map +0 -1
  322. package/dist/runtime/types.js +0 -1
  323. package/dist/scene/asset-loaders.d.ts +0 -79
  324. package/dist/scene/asset-loaders.d.ts.map +0 -1
  325. package/dist/scene/asset-loaders.js +0 -141
  326. package/dist/scene/asset-paths.d.ts +0 -11
  327. package/dist/scene/asset-paths.d.ts.map +0 -1
  328. package/dist/scene/asset-paths.js +0 -108
  329. package/dist/scene/asset-ref-check.d.ts +0 -88
  330. package/dist/scene/asset-ref-check.d.ts.map +0 -1
  331. package/dist/scene/asset-ref-check.js +0 -214
  332. package/dist/scene/asset-registry.d.ts +0 -38
  333. package/dist/scene/asset-registry.d.ts.map +0 -1
  334. package/dist/scene/asset-registry.js +0 -66
  335. package/dist/scene/collider-dimensions.d.ts +0 -63
  336. package/dist/scene/collider-dimensions.d.ts.map +0 -1
  337. package/dist/scene/collider-dimensions.js +0 -98
  338. package/dist/scene/component-registry.d.ts +0 -22
  339. package/dist/scene/component-registry.d.ts.map +0 -1
  340. package/dist/scene/component-registry.js +0 -37
  341. package/dist/scene/defaults.d.ts +0 -252
  342. package/dist/scene/defaults.d.ts.map +0 -1
  343. package/dist/scene/defaults.js +0 -151
  344. package/dist/scene/geometries/index.d.ts +0 -8
  345. package/dist/scene/geometries/index.d.ts.map +0 -1
  346. package/dist/scene/geometries/index.js +0 -7
  347. package/dist/scene/geometries/terrain.d.ts +0 -2
  348. package/dist/scene/geometries/terrain.d.ts.map +0 -1
  349. package/dist/scene/geometries/terrain.js +0 -37
  350. package/dist/scene/geometry-registry.d.ts +0 -24
  351. package/dist/scene/geometry-registry.d.ts.map +0 -1
  352. package/dist/scene/geometry-registry.js +0 -20
  353. package/dist/scene/instance-registry.d.ts +0 -36
  354. package/dist/scene/instance-registry.d.ts.map +0 -1
  355. package/dist/scene/instance-registry.js +0 -55
  356. package/dist/scene/instancers/grid.d.ts +0 -2
  357. package/dist/scene/instancers/grid.d.ts.map +0 -1
  358. package/dist/scene/instancers/grid.js +0 -36
  359. package/dist/scene/instancers/index.d.ts +0 -8
  360. package/dist/scene/instancers/index.d.ts.map +0 -1
  361. package/dist/scene/instancers/index.js +0 -7
  362. package/dist/scene/light-camera-factory.d.ts +0 -23
  363. package/dist/scene/light-camera-factory.d.ts.map +0 -1
  364. package/dist/scene/light-camera-factory.js +0 -68
  365. package/dist/scene/material-factory.d.ts +0 -17
  366. package/dist/scene/material-factory.d.ts.map +0 -1
  367. package/dist/scene/material-factory.js +0 -197
  368. package/dist/scene/material-registry.d.ts +0 -40
  369. package/dist/scene/material-registry.d.ts.map +0 -1
  370. package/dist/scene/material-registry.js +0 -44
  371. package/dist/scene/materials/index.d.ts +0 -8
  372. package/dist/scene/materials/index.d.ts.map +0 -1
  373. package/dist/scene/materials/index.js +0 -7
  374. package/dist/scene/materials/water.d.ts +0 -2
  375. package/dist/scene/materials/water.d.ts.map +0 -1
  376. package/dist/scene/materials/water.js +0 -54
  377. package/dist/scene/parse.d.ts +0 -23
  378. package/dist/scene/parse.d.ts.map +0 -1
  379. package/dist/scene/parse.js +0 -179
  380. package/dist/scene/particles-factory.d.ts +0 -33
  381. package/dist/scene/particles-factory.d.ts.map +0 -1
  382. package/dist/scene/particles-factory.js +0 -282
  383. package/dist/scene/scene-apply.d.ts +0 -109
  384. package/dist/scene/scene-apply.d.ts.map +0 -1
  385. package/dist/scene/scene-apply.js +0 -370
  386. package/dist/scene/scene-diff-schema.d.ts +0 -285
  387. package/dist/scene/scene-diff-schema.d.ts.map +0 -1
  388. package/dist/scene/scene-diff-schema.js +0 -92
  389. package/dist/scene/scene-diff-types.d.ts +0 -40
  390. package/dist/scene/scene-diff-types.d.ts.map +0 -1
  391. package/dist/scene/scene-diff-types.js +0 -14
  392. package/dist/scene/scene-loader.d.ts +0 -167
  393. package/dist/scene/scene-loader.d.ts.map +0 -1
  394. package/dist/scene/scene-loader.js +0 -1211
  395. package/dist/scene/scene-query.d.ts +0 -11
  396. package/dist/scene/scene-query.d.ts.map +0 -1
  397. package/dist/scene/scene-query.js +0 -63
  398. package/dist/scene/scene-types.d.ts +0 -10
  399. package/dist/scene/scene-types.d.ts.map +0 -1
  400. package/dist/scene/scene-types.js +0 -8
  401. package/dist/scene/scene-version.d.ts +0 -26
  402. package/dist/scene/scene-version.d.ts.map +0 -1
  403. package/dist/scene/scene-version.js +0 -34
  404. package/dist/scene/schema/animation.d.ts +0 -8
  405. package/dist/scene/schema/animation.d.ts.map +0 -1
  406. package/dist/scene/schema/animation.js +0 -42
  407. package/dist/scene/schema/audio.d.ts +0 -13
  408. package/dist/scene/schema/audio.d.ts.map +0 -1
  409. package/dist/scene/schema/audio.js +0 -22
  410. package/dist/scene/schema/camera.d.ts +0 -28
  411. package/dist/scene/schema/camera.d.ts.map +0 -1
  412. package/dist/scene/schema/camera.js +0 -17
  413. package/dist/scene/schema/collider.d.ts +0 -40
  414. package/dist/scene/schema/collider.d.ts.map +0 -1
  415. package/dist/scene/schema/collider.js +0 -55
  416. package/dist/scene/schema/entity-ref.d.ts +0 -31
  417. package/dist/scene/schema/entity-ref.d.ts.map +0 -1
  418. package/dist/scene/schema/entity-ref.js +0 -61
  419. package/dist/scene/schema/entity.d.ts +0 -1036
  420. package/dist/scene/schema/entity.d.ts.map +0 -1
  421. package/dist/scene/schema/entity.js +0 -153
  422. package/dist/scene/schema/environment.d.ts +0 -425
  423. package/dist/scene/schema/environment.d.ts.map +0 -1
  424. package/dist/scene/schema/environment.js +0 -357
  425. package/dist/scene/schema/index.d.ts +0 -37
  426. package/dist/scene/schema/index.d.ts.map +0 -1
  427. package/dist/scene/schema/index.js +0 -19
  428. package/dist/scene/schema/instances.d.ts +0 -14
  429. package/dist/scene/schema/instances.d.ts.map +0 -1
  430. package/dist/scene/schema/instances.js +0 -28
  431. package/dist/scene/schema/joint.d.ts +0 -23
  432. package/dist/scene/schema/joint.d.ts.map +0 -1
  433. package/dist/scene/schema/joint.js +0 -23
  434. package/dist/scene/schema/light.d.ts +0 -38
  435. package/dist/scene/schema/light.d.ts.map +0 -1
  436. package/dist/scene/schema/light.js +0 -26
  437. package/dist/scene/schema/material.d.ts +0 -199
  438. package/dist/scene/schema/material.d.ts.map +0 -1
  439. package/dist/scene/schema/material.js +0 -103
  440. package/dist/scene/schema/mesh.d.ts +0 -48
  441. package/dist/scene/schema/mesh.d.ts.map +0 -1
  442. package/dist/scene/schema/mesh.js +0 -82
  443. package/dist/scene/schema/particles.d.ts +0 -2178
  444. package/dist/scene/schema/particles.d.ts.map +0 -1
  445. package/dist/scene/schema/particles.js +0 -321
  446. package/dist/scene/schema/physics.d.ts +0 -56
  447. package/dist/scene/schema/physics.d.ts.map +0 -1
  448. package/dist/scene/schema/physics.js +0 -37
  449. package/dist/scene/schema/scene-file.d.ts +0 -303
  450. package/dist/scene/schema/scene-file.d.ts.map +0 -1
  451. package/dist/scene/schema/scene-file.js +0 -256
  452. package/dist/scene/schema/shadow.d.ts +0 -28
  453. package/dist/scene/schema/shadow.d.ts.map +0 -1
  454. package/dist/scene/schema/shadow.js +0 -20
  455. package/dist/scene/schema/spline.d.ts +0 -25
  456. package/dist/scene/schema/spline.d.ts.map +0 -1
  457. package/dist/scene/schema/spline.js +0 -15
  458. package/dist/scene/schema/tuples.d.ts +0 -12
  459. package/dist/scene/schema/tuples.d.ts.map +0 -1
  460. package/dist/scene/schema/tuples.js +0 -14
  461. package/dist/scene/user-data.d.ts +0 -185
  462. package/dist/scene/user-data.d.ts.map +0 -1
  463. package/dist/scene/user-data.js +0 -144
  464. package/dist/setup/setup-audio.d.ts +0 -20
  465. package/dist/setup/setup-audio.d.ts.map +0 -1
  466. package/dist/setup/setup-audio.js +0 -41
  467. package/dist/setup/setup-particles.d.ts +0 -17
  468. package/dist/setup/setup-particles.d.ts.map +0 -1
  469. package/dist/setup/setup-particles.js +0 -16
  470. package/dist/setup/setup-physics.d.ts +0 -25
  471. package/dist/setup/setup-physics.d.ts.map +0 -1
  472. package/dist/setup/setup-physics.js +0 -51
  473. package/dist/setup/setup-renderer.d.ts +0 -69
  474. package/dist/setup/setup-renderer.d.ts.map +0 -1
  475. package/dist/setup/setup-renderer.js +0 -363
  476. package/dist/tools/define-tool.d.ts +0 -130
  477. package/dist/tools/define-tool.d.ts.map +0 -1
  478. package/dist/tools/define-tool.js +0 -96
  479. package/dist/world2d/authoring-2d.d.ts +0 -80
  480. package/dist/world2d/authoring-2d.d.ts.map +0 -1
  481. package/dist/world2d/authoring-2d.js +0 -195
  482. package/dist/world2d/capture-to-scene2d.d.ts +0 -5
  483. package/dist/world2d/capture-to-scene2d.d.ts.map +0 -1
  484. package/dist/world2d/capture-to-scene2d.js +0 -49
  485. package/dist/world2d/collision-2d.d.ts +0 -52
  486. package/dist/world2d/collision-2d.d.ts.map +0 -1
  487. package/dist/world2d/collision-2d.js +0 -70
  488. package/dist/world2d/components-2d.d.ts +0 -47
  489. package/dist/world2d/components-2d.d.ts.map +0 -1
  490. package/dist/world2d/components-2d.js +0 -77
  491. package/dist/world2d/index.d.ts +0 -34
  492. package/dist/world2d/index.d.ts.map +0 -1
  493. package/dist/world2d/index.js +0 -32
  494. package/dist/world2d/ingest-iframe-2d.d.ts +0 -82
  495. package/dist/world2d/ingest-iframe-2d.d.ts.map +0 -1
  496. package/dist/world2d/ingest-iframe-2d.js +0 -166
  497. package/dist/world2d/ingest2d.d.ts +0 -97
  498. package/dist/world2d/ingest2d.d.ts.map +0 -1
  499. package/dist/world2d/ingest2d.js +0 -40
  500. package/dist/world2d/physics2d-registry.d.ts +0 -24
  501. package/dist/world2d/physics2d-registry.d.ts.map +0 -1
  502. package/dist/world2d/physics2d-registry.js +0 -38
  503. package/dist/world2d/pixi-game-adapter.d.ts +0 -107
  504. package/dist/world2d/pixi-game-adapter.d.ts.map +0 -1
  505. package/dist/world2d/pixi-game-adapter.js +0 -210
  506. package/dist/world2d/pixi-surface.d.ts +0 -39
  507. package/dist/world2d/pixi-surface.d.ts.map +0 -1
  508. package/dist/world2d/pixi-surface.js +0 -47
  509. package/dist/world2d/scene-capture-2d.d.ts +0 -43
  510. package/dist/world2d/scene-capture-2d.d.ts.map +0 -1
  511. package/dist/world2d/scene-capture-2d.js +0 -92
  512. package/dist/world2d/scene2d-loader.d.ts +0 -27
  513. package/dist/world2d/scene2d-loader.d.ts.map +0 -1
  514. package/dist/world2d/scene2d-loader.js +0 -275
  515. package/dist/world2d/schema/entity2d.d.ts +0 -102
  516. package/dist/world2d/schema/entity2d.d.ts.map +0 -1
  517. package/dist/world2d/schema/entity2d.js +0 -119
  518. package/dist/world2d/schema/physics2d.d.ts +0 -46
  519. package/dist/world2d/schema/physics2d.d.ts.map +0 -1
  520. package/dist/world2d/schema/physics2d.js +0 -45
  521. package/dist/world2d/schema/sprite.d.ts +0 -42
  522. package/dist/world2d/schema/sprite.d.ts.map +0 -1
  523. package/dist/world2d/schema/sprite.js +0 -63
  524. package/dist/world2d/schema/tilemap.d.ts +0 -15
  525. package/dist/world2d/schema/tilemap.d.ts.map +0 -1
  526. package/dist/world2d/schema/tilemap.js +0 -19
  527. package/dist/world2d/schema/tuples2d.d.ts +0 -20
  528. package/dist/world2d/schema/tuples2d.d.ts.map +0 -1
  529. package/dist/world2d/schema/tuples2d.js +0 -19
  530. package/dist/world2d/system-adapters-2d.d.ts +0 -16
  531. package/dist/world2d/system-adapters-2d.d.ts.map +0 -1
  532. package/dist/world2d/system-adapters-2d.js +0 -37
  533. package/dist/world2d/transform-writer-2d.d.ts +0 -16
  534. package/dist/world2d/transform-writer-2d.d.ts.map +0 -1
  535. package/dist/world2d/transform-writer-2d.js +0 -22
  536. package/dist/world2d/types.d.ts +0 -59
  537. package/dist/world2d/types.d.ts.map +0 -1
  538. package/dist/world2d/types.js +0 -1
@@ -1,257 +0,0 @@
1
- /**
2
- * The standalone in-page debug bridge (`docs/SYNTHETIC-PLAYER-SPEC.md` §3.4,
3
- * D17/D18; Task 2.1 of `docs/ACCEPTANCE-DRIVER-BUILD-PLAN.md`). Query-gated
4
- * `window.__vgai`, the same production-protection-lives-in-the-installer
5
- * pattern `render-control.ts`'s `installRenderControlHarness` established for
6
- * `?vgai-render=1` (production protection lives HERE, not just at whatever
7
- * call site invokes this — a caller that calls
8
- * {@link maybeInstallDebugBridge} unconditionally on every boot still only
9
- * ever gets a handle when the gate below actually passes).
10
- *
11
- * D17: this is door (a) of the seam's three doors — the SAME `DebugAdapter`
12
- * names/JSON the editor relay (door b) and `@vgai/probe` (door c, which
13
- * drives door (a) itself over Playwright) all read. D18: the bridge installs
14
- * only when the page opts in (`?vgai-debug=1`) AND is either a dev build
15
- * (`import.meta.env.DEV`) or the project's manifest explicitly opts a
16
- * production build in (`manifest.debug.allowInProduction`, the described
17
- * field whose runtime reader THIS module is).
18
- */
19
- import type { DebugAdapter, TickStampedEvent } from '../adapter/system-adapter';
20
- import type { GameLoopLiveness } from '../core/types';
21
- import { type DebugRegistry, type RunTicksOptions } from './debug-registry';
22
- /** Query-param name that opts a standalone page into the debug bridge (D18) —
23
- * mirrors `render-seed.ts`'s `RENDER_MODE_QUERY_PARAM` naming/shape, own
24
- * const because this is a different call site with a different flag. */
25
- export declare const DEBUG_MODE_QUERY_PARAM = "vgai-debug";
26
- /** The subset of `ResolvedGameManifest` the D18 gate reads — typed narrowly
27
- * (not imported from `manifest/load.ts`) so this module doesn't need the
28
- * full manifest shape, just the one described field it is the runtime
29
- * reader for. */
30
- export interface DebugBridgeManifest {
31
- readonly debug?: {
32
- readonly allowInProduction: boolean;
33
- } | undefined;
34
- }
35
- /** The bridge's actuation surface — byte-identical method names to
36
- * `InputManager`'s virtual-action primitives (Task 1.4), reached through
37
- * `DebugRegistry.getVirtualInputTarget(worldId?)` rather than a direct
38
- * import. Every method takes an optional trailing `worldId` (D15/T-D15.5,
39
- * the review-objection-2 fix): omitted, it resolves to the SAME default
40
- * world the editor relay's `inject-input` case resolves to (one shared
41
- * resolution function, `debug-registry.ts`'s `resolveInputWorldId`) — never
42
- * "whichever world's `InputManager` happened to register last". An
43
- * explicit `worldId` reaches that world's `InputManager` specifically. */
44
- export interface VgaiDebugInputHandle {
45
- setVirtualAction(action: string, value: boolean | number | {
46
- x: number;
47
- y: number;
48
- }, worldId?: string): {
49
- delivered: boolean;
50
- reason?: string;
51
- };
52
- tapVirtualAction(action: string, worldId?: string): {
53
- delivered: boolean;
54
- reason?: string;
55
- };
56
- clearVirtualActions(worldId?: string): void;
57
- /**
58
- * D15/T-D15.5 (`docs/D15-DETERMINISM-DESIGN.md` §2.c): schedule a virtual
59
- * actuation for a specific tick — applied at the START of that tick's
60
- * input phase, composing with `runTicks` (a schedule for tick 500 fires
61
- * exactly once the sim has been driven through tick 500, regardless of
62
- * burst size). A digital `true` produces a genuine `isJustPressed` edge
63
- * exactly at the target tick. Throws `INPUT_ACTION_NOT_FOUND`/a valueType
64
- * mismatch (same as `setVirtualAction`) or `TICK_ALREADY_PASSED`
65
- * (`data.currentTick`, the NEXT tick to be serviced) for a tick that
66
- * already elapsed.
67
- *
68
- * A scheduled tick whose input phase never runs at all (that world
69
- * paused/frozen, or skipped by a multi-tick gap, when the target tick
70
- * would have been serviced) DROPS the actuation rather than applying it
71
- * late — it is never delivered, and there is no `{delivered: false,
72
- * reason}`-shaped result to read here (the call already returned, long
73
- * before the drop happens). The only observable trace is an
74
- * `'input.schedule.dropped'` debug event (`{tick, action}`), readable via
75
- * `state()`/`stateAll()`'s `events` or `snapshot().events`.
76
- */
77
- scheduleActionAtTick(tick: number, action: string, value: boolean | number | {
78
- x: number;
79
- y: number;
80
- }, worldId?: string): void;
81
- /** Start (or restart) recording the post-gate action-delta trace, readable
82
- * back via `state('input.trace')`/`stateAll()` (a built-in provider —
83
- * itself resolved against the DEFAULT world only; see that provider's own
84
- * doc comment in `debug-registry.ts`). */
85
- startRecording(worldId?: string): void;
86
- /** Stop recording — the trace accumulated so far stays readable. */
87
- stopRecording(worldId?: string): void;
88
- /** Whether a recording is currently active. */
89
- isRecording(worldId?: string): boolean;
90
- /** Accumulate a synthetic pointer delta for a named test source — mirrors
91
- * `InputManager.injectPointerDelta` (the "injected test input" seam):
92
- * multiple calls within the same frame SUM, and the accumulator clears
93
- * each frame (`endFrame`). Bindings with `valueType: 'pointerDelta'`
94
- * reading this source (`{ type: 'test_pointer_delta', sourceId }`) see the
95
- * accumulated value via `getPointerDelta`. */
96
- injectPointerDelta(sourceId: string, delta: {
97
- x: number;
98
- y: number;
99
- }, worldId?: string): void;
100
- /** Set a synthetic absolute pointer position for a named test source —
101
- * mirrors `InputManager.injectPointerPosition`: LAST-WRITE-WINS across
102
- * contributing sources on read, and persists until changed. Bindings with
103
- * `valueType: 'pointerPosition'` reading this source (`{ type:
104
- * 'test_pointer_position', sourceId }`) see it via `getPointerPosition`. */
105
- injectPointerPosition(sourceId: string, value: {
106
- x: number;
107
- y: number;
108
- }, worldId?: string): void;
109
- }
110
- /** `snapshot()`'s return shape — ONE synchronous pass over the registry, so
111
- * every field reflects the exact same instant (AC-B1.2's batched-read
112
- * primitive: a probe polling this never sees `time` from one tick and
113
- * `state` from another). */
114
- export interface VgaiDebugSnapshot {
115
- /** `loopLiveness` (issue #175): the REAL `GameLoop.liveness` behind this
116
- * session — `'hidden-paused'` while the T2.1 idle throttle has stopped
117
- * the loop (tab hidden), `null` only when no loop is wired at all (a
118
- * bare debug-registry test stand-in with no real `Game`). Never a
119
- * fabricated `'running'`. */
120
- time: {
121
- simSeconds: number;
122
- tick: number;
123
- loopLiveness: GameLoopLiveness | null;
124
- };
125
- state: Record<string, unknown>;
126
- events: TickStampedEvent[];
127
- pageErrors: string[];
128
- }
129
- /** The frozen `window.__vgai` shape (D18/spec §3.4) — version it if it ever
130
- * needs a breaking change; `providers`/`state`/`stateAll`/`commands`/`events`
131
- * are straight off the game's `DebugAdapter`, `invoke` re-checks D18 gating
132
- * (belt-and-braces, AC-A1.7), and `input`/`snapshot` are bridge-only. */
133
- export interface VgaiDebugHandle {
134
- readonly version: 1;
135
- providers: DebugAdapter['providers'];
136
- state: DebugAdapter['state'];
137
- stateAll: DebugAdapter['stateAll'];
138
- commands: DebugAdapter['commands'];
139
- invoke(name: string, args: unknown[]): Promise<unknown>;
140
- events: DebugAdapter['events'];
141
- input: VgaiDebugInputHandle;
142
- /** See `DebugAdapter.events`'s doc comment for `sinceTick`/`sinceSeq`'s
143
- * contract (run-4 friction #5) — `snapshot`'s `events` member is filtered
144
- * the exact same way, just batched with `time`/`state`/`pageErrors` into
145
- * one synchronous read. */
146
- snapshot(sinceTick?: number, sinceSeq?: number): VgaiDebugSnapshot;
147
- /**
148
- * D15/T-D15.4 door (a) (`docs/D15-DETERMINISM-DESIGN.md` §2.b): synchronously
149
- * drive `n` fixed gameplay ticks via the live `Game`'s `GameInternal.runTicks`
150
- * (`runtime/game.ts`) — reached through `DebugRegistry.getRunTicksTarget()`,
151
- * the SAME target the editor relay's `run-ticks` case (→ `play.runTicks`,
152
- * door b) calls, so behavior is byte-identical across every door (D17).
153
- * Throws `DEBUG_RUN_TICKS_UNAVAILABLE` if no `Game` has wired a target yet
154
- * (no world mounted); throws whatever `runTicks` itself throws otherwise
155
- * (e.g. `RUN_TICKS_PAUSED`) — never a silent no-op.
156
- */
157
- runTicks(n: number, opts?: RunTicksOptions): void;
158
- /**
159
- * Collapses `input.setVirtualAction(action, true)` → wait `simSeconds` of
160
- * REAL sim time (real ticks — deliberately NOT `runTicks`/fast-forward;
161
- * this is the honest human-input-path proof) → `input.clearVirtualActions()`
162
- * into ONE async bridge call, as a TOP-LEVEL method (not under `input`)
163
- * because it needs the sim clock, not just the input target. Was 15+
164
- * transport round trips over the editor relay (`@vgai/probe`'s old
165
- * `GameInput.hold`: set → a 150ms-interval `waitSimTime` snapshot poll loop
166
- * → clear); now one `page.evaluate`/relay call that runs the wait
167
- * in-process on the page.
168
- *
169
- * Resolves the world's input target exactly like the other `input.*`
170
- * methods (`worldId` omitted → the same default-world resolution every
171
- * door on this seam shares). A gated actuation (the initial
172
- * `setVirtualAction` reports `delivered:false`) clears immediately and
173
- * resolves that SAME `{delivered:false, reason}` shape WITHOUT waiting —
174
- * matching `setVirtualAction`'s own gated-result contract. If the live
175
- * game's sim clock stalls while waiting (play stopped/paused mid-hold),
176
- * the action is still cleared (never left stuck) and this resolves
177
- * `{delivered:false, reason:'play stopped during hold'}` instead of
178
- * hanging forever. Throws `DEBUG_INPUT_UNAVAILABLE`/
179
- * `DEBUG_INPUT_WORLD_NOT_FOUND` up front, same as `input.setVirtualAction`,
180
- * when no target is wired/resolvable at all.
181
- */
182
- holdFor(action: string, simSeconds: number, worldId?: string): Promise<{
183
- delivered: boolean;
184
- reason?: string;
185
- }>;
186
- /**
187
- * Defect 5 fix — undo everything THIS install did: remove the
188
- * `error`/`unhandledrejection` window listeners it added, and delete
189
- * `window.__vgai` so the registry is no longer reachable from the page.
190
- * Idempotent (a second call is a harmless no-op). `mountManifestWorlds`
191
- * wires this into its session's `stop()`; a caller mounting more
192
- * directly (a hand-rolled host) should call it on its own teardown path.
193
- */
194
- uninstall(): void;
195
- }
196
- /** Structural `window` surface this module needs — just enough to publish
197
- * the handle and listen for page errors, typed narrowly (no `any`, no DOM
198
- * lib dependency beyond what every other runtime module already assumes). */
199
- export interface DebugBridgeWindowTarget {
200
- addEventListener?(type: 'error' | 'unhandledrejection', listener: (event: {
201
- message?: string;
202
- error?: unknown;
203
- reason?: unknown;
204
- }) => void): void;
205
- /** Defect 5 fix — the installer's `uninstall()` calls this (when present)
206
- * to remove the exact listener references it added via `addEventListener`
207
- * above. Optional, like `addEventListener`, so a minimal test/host stub
208
- * that never needs to uninstall can omit it. */
209
- removeEventListener?(type: 'error' | 'unhandledrejection', listener: (event: {
210
- message?: string;
211
- error?: unknown;
212
- reason?: unknown;
213
- }) => void): void;
214
- [key: string]: unknown;
215
- }
216
- export interface MaybeInstallDebugBridgeOptions {
217
- /** The game-scoped registry (`getDebugRegistry(session.game)`) — its
218
- * `.adapter` backs every read/invoke method on the published handle, and
219
- * its `getVirtualInputTarget()` backs `input.*`. */
220
- readonly registry: DebugRegistry;
221
- readonly manifest: DebugBridgeManifest;
222
- /** Where to read `?vgai-debug=1` from. Defaults to `window.location` when a
223
- * real `window` exists; a headless caller with no `window` at all (and no
224
- * override) gets no bridge — there's nowhere to read a URL from. */
225
- readonly url?: {
226
- readonly search: string;
227
- } | undefined;
228
- /** Where to publish the handle and install the page-error listeners.
229
- * Defaults to the real `window`; override in a unit test to avoid
230
- * touching (or requiring) the global object. */
231
- readonly window?: DebugBridgeWindowTarget | undefined;
232
- }
233
- /** Resolves once `simSeconds` of sim time has elapsed since the call (normal
234
- * host-loop ticks while visible; deterministic `runTicks` through the same
235
- * game phases when the host loop reports `hidden-paused`), or once the tick
236
- * has stopped changing for
237
- * `HOLD_FOR_STALL_POLL_LIMIT` consecutive polls (`stalled: true` — the loop
238
- * driving ticks stopped, e.g. play was stopped/paused). Never rejects.
239
- * Exported (not just used by `holdFor` below) so the editor relay's
240
- * `command-listener.ts` `holdFor` case can share the EXACT same
241
- * poll/stall/hidden-drive logic against its own `DebugAdapter` (reached via
242
- * `getActiveSystems().debug` rather than a `DebugRegistry`) — D17:
243
- * byte-identical behavior across doors, not two hand-copies that can
244
- * silently drift apart. */
245
- export declare function waitForHoldBudget(adapter: DebugAdapter, simSeconds: number, driveHiddenTicks?: (n: number) => void): Promise<{
246
- stalled: boolean;
247
- }>;
248
- /**
249
- * Install `window.__vgai` iff the page opted in (`?vgai-debug=1`) AND D18's
250
- * gate passes (dev build, or manifest `debug.allowInProduction`). When the
251
- * param is present but the gate fails, warns once (this single call IS the
252
- * "once" — there is exactly one install attempt per boot) and installs
253
- * nothing. Returns the installed handle (mostly useful for tests), or
254
- * `undefined` when nothing was installed.
255
- */
256
- export declare function maybeInstallDebugBridge(opts: MaybeInstallDebugBridgeOptions): VgaiDebugHandle | undefined;
257
- //# sourceMappingURL=debug-bridge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug-bridge.d.ts","sourceRoot":"","sources":["../../src/runtime/debug-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAc,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExF;;yEAEyE;AACzE,eAAO,MAAM,sBAAsB,eAAe,CAAC;AAEnD;;;kBAGkB;AAClB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;CACtE;AAED;;;;;;;;2EAQ2E;AAC3E,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,CACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAClD,OAAO,CAAC,EAAE,MAAM,GACf;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5F,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,oBAAoB,CAClB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAClD,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAAC;IACR;;;+CAG2C;IAC3C,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,oEAAoE;IACpE,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,+CAA+C;IAC/C,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACvC;;;;;mDAK+C;IAC/C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9F;;;;iFAI6E;IAC7E,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClG;AAED;;;6BAG6B;AAC7B,MAAM,WAAW,iBAAiB;IAChC;;;;kCAI8B;IAC9B,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAA;KAAE,CAAC;IAClF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;0EAG0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACrC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7B,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACnC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACnC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/B,KAAK,EAAE,oBAAoB,CAAC;IAC5B;;;gCAG4B;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACnE;;;;;;;;;OASG;IACH,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAClD;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CACL,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD;;;;;;;OAOG;IACH,SAAS,IAAI,IAAI,CAAC;CACnB;AAED;;8EAE8E;AAC9E,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,CAAC,CACf,IAAI,EAAE,OAAO,GAAG,oBAAoB,EACpC,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GACjF,IAAI,CAAC;IACR;;;qDAGiD;IACjD,mBAAmB,CAAC,CAClB,IAAI,EAAE,OAAO,GAAG,oBAAoB,EACpC,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GACjF,IAAI,CAAC;IACR,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,8BAA8B;IAC7C;;yDAEqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC;;yEAEqE;IACrE,QAAQ,CAAC,GAAG,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACvD;;qDAEiD;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;CACvD;AAiBD;;;;;;;;;;;4BAW4B;AAC5B,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAuC/B;AA4JD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,8BAA8B,GACnC,eAAe,GAAG,SAAS,CAwB7B"}
@@ -1,224 +0,0 @@
1
- /**
2
- * The standalone in-page debug bridge (`docs/SYNTHETIC-PLAYER-SPEC.md` §3.4,
3
- * D17/D18; Task 2.1 of `docs/ACCEPTANCE-DRIVER-BUILD-PLAN.md`). Query-gated
4
- * `window.__vgai`, the same production-protection-lives-in-the-installer
5
- * pattern `render-control.ts`'s `installRenderControlHarness` established for
6
- * `?vgai-render=1` (production protection lives HERE, not just at whatever
7
- * call site invokes this — a caller that calls
8
- * {@link maybeInstallDebugBridge} unconditionally on every boot still only
9
- * ever gets a handle when the gate below actually passes).
10
- *
11
- * D17: this is door (a) of the seam's three doors — the SAME `DebugAdapter`
12
- * names/JSON the editor relay (door b) and `@vgai/probe` (door c, which
13
- * drives door (a) itself over Playwright) all read. D18: the bridge installs
14
- * only when the page opts in (`?vgai-debug=1`) AND is either a dev build
15
- * (`import.meta.env.DEV`) or the project's manifest explicitly opts a
16
- * production build in (`manifest.debug.allowInProduction`, the described
17
- * field whose runtime reader THIS module is).
18
- */
19
- import { DebugError } from './debug-registry';
20
- /** Query-param name that opts a standalone page into the debug bridge (D18) —
21
- * mirrors `render-seed.ts`'s `RENDER_MODE_QUERY_PARAM` naming/shape, own
22
- * const because this is a different call site with a different flag. */
23
- export const DEBUG_MODE_QUERY_PARAM = 'vgai-debug';
24
- const PAGE_ERROR_CAP = 100;
25
- /** `holdFor`'s in-process poll interval — this loop never leaves the page
26
- * (no transport round trip per poll, unlike `@vgai/probe`'s old
27
- * `waitSimTime`), so it can afford to be tighter than that loop's 150ms. */
28
- const HOLD_FOR_POLL_MS = 50;
29
- /** Consecutive `HOLD_FOR_POLL_MS` polls with the tick unchanged before
30
- * `holdFor` gives up waiting and treats the game as stopped — mirrors
31
- * `@vgai/probe`'s `WAIT_FOR_STALL_POLL_LIMIT` reasoning (`wait-for.ts`:
32
- * a genuinely frozen sim clock must never poll forever), scaled to this
33
- * faster in-process interval so the wall-clock grace period (~5s) lands in
34
- * the same neighborhood. */
35
- const HOLD_FOR_STALL_POLL_LIMIT = 100;
36
- /** Resolves once `simSeconds` of sim time has elapsed since the call (normal
37
- * host-loop ticks while visible; deterministic `runTicks` through the same
38
- * game phases when the host loop reports `hidden-paused`), or once the tick
39
- * has stopped changing for
40
- * `HOLD_FOR_STALL_POLL_LIMIT` consecutive polls (`stalled: true` — the loop
41
- * driving ticks stopped, e.g. play was stopped/paused). Never rejects.
42
- * Exported (not just used by `holdFor` below) so the editor relay's
43
- * `command-listener.ts` `holdFor` case can share the EXACT same
44
- * poll/stall/hidden-drive logic against its own `DebugAdapter` (reached via
45
- * `getActiveSystems().debug` rather than a `DebugRegistry`) — D17:
46
- * byte-identical behavior across doors, not two hand-copies that can
47
- * silently drift apart. */
48
- export function waitForHoldBudget(adapter, simSeconds, driveHiddenTicks) {
49
- return new Promise((resolve) => {
50
- const start = adapter.state('time');
51
- let lastTick = start.tick;
52
- let lastPollWallMs = Date.now();
53
- let stalledPolls = 0;
54
- const poll = () => {
55
- const current = adapter.state('time');
56
- if (current.simSeconds - start.simSeconds >= simSeconds) {
57
- resolve({ stalled: false });
58
- return;
59
- }
60
- if (current.loopLiveness === 'hidden-paused' && driveHiddenTicks) {
61
- const now = Date.now();
62
- const ticks = Math.max(1, Math.min(30, Math.round((now - lastPollWallMs) / (1000 / 60))));
63
- lastPollWallMs = now;
64
- driveHiddenTicks(ticks);
65
- setTimeout(poll, HOLD_FOR_POLL_MS);
66
- return;
67
- }
68
- lastPollWallMs = Date.now();
69
- stalledPolls = current.tick === lastTick ? stalledPolls + 1 : 0;
70
- lastTick = current.tick;
71
- if (stalledPolls >= HOLD_FOR_STALL_POLL_LIMIT) {
72
- resolve({ stalled: true });
73
- return;
74
- }
75
- setTimeout(poll, HOLD_FOR_POLL_MS);
76
- };
77
- setTimeout(poll, HOLD_FOR_POLL_MS);
78
- });
79
- }
80
- function hasRealWindow() {
81
- return typeof window !== 'undefined';
82
- }
83
- function isDebugModeRequested(url) {
84
- return new URLSearchParams(url.search).get(DEBUG_MODE_QUERY_PARAM) === '1';
85
- }
86
- /** D18's gate: a dev build, or a production build the manifest explicitly
87
- * opted in. Read fresh on every call (not cached at install time) so
88
- * `invoke()`'s belt-and-braces re-check (AC-A1.7) is a genuine second
89
- * evaluation, not a rubber stamp of a value computed once at install. */
90
- function isDebugAllowed(manifest) {
91
- return Boolean(import.meta.env?.DEV) || manifest.debug?.allowInProduction === true;
92
- }
93
- function buildDebugHandle(opts) {
94
- const { registry, manifest } = opts;
95
- const adapter = registry.adapter;
96
- const pageErrors = [];
97
- function pushPageError(message) {
98
- pageErrors.push(message);
99
- if (pageErrors.length > PAGE_ERROR_CAP)
100
- pageErrors.shift();
101
- }
102
- // Named (not inline-anonymous) so `uninstall()` below can pass the exact
103
- // same reference to `removeEventListener` (Defect 5 fix).
104
- const onWindowError = (event) => {
105
- pushPageError(event.message || String(event.error));
106
- };
107
- const onWindowRejection = (event) => {
108
- pushPageError(`Unhandled promise rejection: ${String(event.reason)}`);
109
- };
110
- opts.window.addEventListener?.('error', onWindowError);
111
- opts.window.addEventListener?.('unhandledrejection', onWindowRejection);
112
- function requireInputTarget(method, worldId) {
113
- const target = registry.getVirtualInputTarget(worldId);
114
- if (!target) {
115
- throw new DebugError('DEBUG_INPUT_UNAVAILABLE', `debug bridge: ${method}() has no virtual-input target wired — no default threejs ` +
116
- "world has mounted yet, or this project's mount path never wired one");
117
- }
118
- return target;
119
- }
120
- return {
121
- version: 1,
122
- // None of these `DebugAdapter` methods reference `this` (they close over
123
- // the registry's own private maps) — passing the references directly is
124
- // safe and avoids five redundant wrapper closures.
125
- providers: adapter.providers,
126
- state: adapter.state,
127
- stateAll: adapter.stateAll,
128
- commands: adapter.commands,
129
- events: adapter.events,
130
- async invoke(name, args) {
131
- // Belt-and-braces D18 re-check (AC-A1.7): the outer install gate
132
- // already required this to be true, but a caller could hold onto this
133
- // handle across an environment/manifest change — refuse loudly rather
134
- // than trust a decision made once at install time.
135
- if (!isDebugAllowed(manifest)) {
136
- throw new DebugError('DEBUG_COMMANDS_UNSUPPORTED', `debug: command "${name}" invocation refused — production build without ` +
137
- 'debug.allowInProduction (D18)', { name });
138
- }
139
- return adapter.invoke(name, args);
140
- },
141
- input: {
142
- setVirtualAction: (action, value, worldId) => requireInputTarget('setVirtualAction', worldId).setVirtualAction(action, value),
143
- tapVirtualAction: (action, worldId) => requireInputTarget('tapVirtualAction', worldId).tapVirtualAction(action),
144
- clearVirtualActions: (worldId) => requireInputTarget('clearVirtualActions', worldId).clearVirtualActions(),
145
- scheduleActionAtTick: (tick, action, value, worldId) => requireInputTarget('scheduleActionAtTick', worldId).scheduleActionAtTick(tick, action, value),
146
- startRecording: (worldId) => requireInputTarget('startRecording', worldId).startInputRecording(),
147
- stopRecording: (worldId) => requireInputTarget('stopRecording', worldId).stopInputRecording(),
148
- isRecording: (worldId) => requireInputTarget('isRecording', worldId).isInputRecording(),
149
- injectPointerDelta: (sourceId, delta, worldId) => requireInputTarget('injectPointerDelta', worldId).injectPointerDelta(sourceId, delta),
150
- injectPointerPosition: (sourceId, value, worldId) => requireInputTarget('injectPointerPosition', worldId).injectPointerPosition(sourceId, value),
151
- },
152
- snapshot(sinceTick, sinceSeq) {
153
- // One synchronous pass — see VgaiDebugSnapshot's doc comment.
154
- return {
155
- time: adapter.state('time'),
156
- state: adapter.stateAll(),
157
- events: adapter.events(sinceTick, sinceSeq),
158
- pageErrors: pageErrors.slice(),
159
- };
160
- },
161
- runTicks(n, runTicksOpts) {
162
- const target = registry.getRunTicksTarget();
163
- if (!target) {
164
- throw new DebugError('DEBUG_RUN_TICKS_UNAVAILABLE', 'debug bridge: runTicks() has no run-ticks target wired — no Game has mounted yet');
165
- }
166
- target.runTicks(n, runTicksOpts);
167
- },
168
- async holdFor(action, simSeconds, worldId) {
169
- const target = requireInputTarget('holdFor', worldId);
170
- const setResult = target.setVirtualAction(action, true);
171
- if (!setResult.delivered) {
172
- target.clearVirtualActions();
173
- // `exactOptionalPropertyTypes`: don't write an explicit `reason:
174
- // undefined` when the gate itself didn't supply one — omit the key
175
- // entirely rather than assign `undefined` into an optional `string`
176
- // property.
177
- return setResult.reason !== undefined
178
- ? { delivered: false, reason: setResult.reason }
179
- : { delivered: false };
180
- }
181
- const runTicksTarget = registry.getRunTicksTarget();
182
- const { stalled } = await waitForHoldBudget(adapter, simSeconds, runTicksTarget ? (n) => runTicksTarget.runTicks(n, { render: 'last' }) : undefined);
183
- target.clearVirtualActions();
184
- return stalled
185
- ? { delivered: false, reason: 'play stopped during hold' }
186
- : { delivered: true };
187
- },
188
- uninstall() {
189
- opts.window.removeEventListener?.('error', onWindowError);
190
- opts.window.removeEventListener?.('unhandledrejection', onWindowRejection);
191
- delete opts.window['__vgai'];
192
- },
193
- };
194
- }
195
- /**
196
- * Install `window.__vgai` iff the page opted in (`?vgai-debug=1`) AND D18's
197
- * gate passes (dev build, or manifest `debug.allowInProduction`). When the
198
- * param is present but the gate fails, warns once (this single call IS the
199
- * "once" — there is exactly one install attempt per boot) and installs
200
- * nothing. Returns the installed handle (mostly useful for tests), or
201
- * `undefined` when nothing was installed.
202
- */
203
- export function maybeInstallDebugBridge(opts) {
204
- const url = opts.url ?? (hasRealWindow() ? window.location : undefined);
205
- if (!url)
206
- return undefined;
207
- if (!isDebugModeRequested(url))
208
- return undefined;
209
- const windowTarget = opts.window ?? (hasRealWindow() ? window : undefined);
210
- if (!windowTarget)
211
- return undefined;
212
- if (!isDebugAllowed(opts.manifest)) {
213
- // biome-ignore lint/suspicious/noConsole: structured, greppable D18 signal — mirrors debug-registry.ts's own console.warn idiom.
214
- console.warn('[debug] ?vgai-debug=1 ignored: production build without debug.allowInProduction (D18)');
215
- return undefined;
216
- }
217
- const handle = buildDebugHandle({
218
- registry: opts.registry,
219
- manifest: opts.manifest,
220
- window: windowTarget,
221
- });
222
- windowTarget['__vgai'] = handle;
223
- return handle;
224
- }