@vgai/engine 0.5.22 → 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 (291) 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/native-debug-module.d.ts +31 -5
  36. package/dist/adapter/native-debug-module.d.ts.map +1 -1
  37. package/dist/adapter/native-debug-module.js +25 -7
  38. package/dist/adapter/rapier-physics-adapter.d.ts +31 -1
  39. package/dist/adapter/rapier-physics-adapter.d.ts.map +1 -1
  40. package/dist/adapter/rapier-physics-adapter.js +50 -36
  41. package/dist/adapter/renderer-config.d.ts +2 -2
  42. package/dist/adapter/renderer-config.js +2 -2
  43. package/dist/adapter/root-adapter.d.ts +7 -7
  44. package/dist/adapter/root-adapter.js +4 -4
  45. package/dist/adapter/system-adapter.d.ts +45 -7
  46. package/dist/adapter/system-adapter.d.ts.map +1 -1
  47. package/dist/adapter/system-seam-contract.d.ts +3 -3
  48. package/dist/adapter/system-seam-contract.js +3 -3
  49. package/dist/adapter/system-slot.d.ts +168 -0
  50. package/dist/adapter/system-slot.d.ts.map +1 -0
  51. package/dist/adapter/system-slot.js +229 -0
  52. package/dist/adapter/transform.d.ts +11 -1
  53. package/dist/adapter/transform.d.ts.map +1 -1
  54. package/dist/ai/navigation.d.ts +17 -1
  55. package/dist/ai/navigation.d.ts.map +1 -1
  56. package/dist/ai/navigation.js +26 -5
  57. package/dist/animation/anim-graph-types.d.ts +11 -3
  58. package/dist/animation/anim-graph-types.d.ts.map +1 -1
  59. package/dist/animation/theatre-clock-binding.d.ts +4 -4
  60. package/dist/animation/theatre-clock-binding.js +4 -4
  61. package/dist/animation/xstate-animation-binding.d.ts.map +1 -1
  62. package/dist/animation/xstate-animation-binding.js +2 -2
  63. package/dist/animation/xstate-animation-meta.d.ts +13 -0
  64. package/dist/animation/xstate-animation-meta.d.ts.map +1 -1
  65. package/dist/animation/xstate-animation-meta.js +14 -0
  66. package/dist/asset-formats/index.d.ts +4 -7
  67. package/dist/asset-formats/index.d.ts.map +1 -1
  68. package/dist/asset-formats/index.js +4 -7
  69. package/dist/asset-formats/render-env.d.ts +5 -8
  70. package/dist/asset-formats/render-env.d.ts.map +1 -1
  71. package/dist/asset-formats/render-env.js +3 -6
  72. package/dist/asset-parse-error.d.ts +2 -5
  73. package/dist/asset-parse-error.d.ts.map +1 -1
  74. package/dist/asset-parse-error.js +2 -5
  75. package/dist/audio/bus-mixer.d.ts +101 -0
  76. package/dist/audio/bus-mixer.d.ts.map +1 -0
  77. package/dist/audio/bus-mixer.js +115 -0
  78. package/dist/core/frame-pacing.d.ts +1 -1
  79. package/dist/core/frame-pacing.js +2 -2
  80. package/dist/core/game-loop.d.ts +1 -3
  81. package/dist/core/game-loop.d.ts.map +1 -1
  82. package/dist/core/game-loop.js +1 -3
  83. package/dist/core/seeded-random.d.ts +1 -1
  84. package/dist/core/sim-clock.d.ts +5 -6
  85. package/dist/core/sim-clock.d.ts.map +1 -1
  86. package/dist/core/sim-clock.js +4 -5
  87. package/dist/core/types.d.ts +1 -3
  88. package/dist/core/types.d.ts.map +1 -1
  89. package/dist/defaults.d.ts +6 -14
  90. package/dist/defaults.d.ts.map +1 -1
  91. package/dist/defaults.js +6 -14
  92. package/dist/dev/register-render-vitals.d.ts +1 -4
  93. package/dist/dev/register-render-vitals.d.ts.map +1 -1
  94. package/dist/dev/register-render-vitals.js +1 -4
  95. package/dist/dev/render-debug-adapter.d.ts +2 -3
  96. package/dist/dev/render-debug-adapter.d.ts.map +1 -1
  97. package/dist/dev/render-debug-adapter.js +2 -3
  98. package/dist/dev/render-vitals.d.ts +3 -3
  99. package/dist/dev/render-vitals.js +3 -3
  100. package/dist/dev/webgl-frame-capture.d.ts +1 -1
  101. package/dist/dev/webgl-frame-capture.js +1 -1
  102. package/dist/index.d.ts +2 -5
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +2 -4
  105. package/dist/input/host-pointer.d.ts +122 -0
  106. package/dist/input/host-pointer.d.ts.map +1 -0
  107. package/dist/input/host-pointer.js +160 -0
  108. package/dist/input/input-manager.d.ts +18 -5
  109. package/dist/input/input-manager.d.ts.map +1 -1
  110. package/dist/input/input-manager.js +33 -13
  111. package/dist/input/rebind-controller.d.ts.map +1 -1
  112. package/dist/input/rebind-controller.js +6 -8
  113. package/dist/input/schema.d.ts.map +1 -1
  114. package/dist/input/schema.js +56 -28
  115. package/dist/manifest/filename.d.ts.map +1 -1
  116. package/dist/manifest/filename.js +8 -12
  117. package/dist/manifest/load.d.ts +10 -10
  118. package/dist/manifest/load.d.ts.map +1 -1
  119. package/dist/manifest/load.js +9 -6
  120. package/dist/manifest/schema.d.ts +17 -21
  121. package/dist/manifest/schema.d.ts.map +1 -1
  122. package/dist/manifest/schema.js +45 -35
  123. package/dist/physics/collider-dimensions.d.ts +8 -12
  124. package/dist/physics/collider-dimensions.d.ts.map +1 -1
  125. package/dist/physics/collider-dimensions.js +8 -12
  126. package/dist/pixi/scene-capture.d.ts +11 -13
  127. package/dist/pixi/scene-capture.d.ts.map +1 -1
  128. package/dist/react/world-state.d.ts +1 -1
  129. package/dist/react/world-state.d.ts.map +1 -1
  130. package/dist/render/light-camera-factory.d.ts +5 -7
  131. package/dist/render/light-camera-factory.d.ts.map +1 -1
  132. package/dist/render/light-camera-factory.js +8 -11
  133. package/dist/render/material-factory.js +1 -1
  134. package/dist/render/render-batch-system.d.ts.map +1 -1
  135. package/dist/render/render-features.d.ts +17 -6
  136. package/dist/render/render-features.d.ts.map +1 -1
  137. package/dist/render/render-features.js +0 -28
  138. package/dist/runtime/create-runtime.d.ts +34 -25
  139. package/dist/runtime/create-runtime.d.ts.map +1 -1
  140. package/dist/runtime/create-runtime.js +218 -93
  141. package/dist/runtime/debug-registry.d.ts +77 -8
  142. package/dist/runtime/debug-registry.d.ts.map +1 -1
  143. package/dist/runtime/debug-registry.js +3 -3
  144. package/dist/runtime/dev-build.d.ts +2 -2
  145. package/dist/runtime/dev-build.js +2 -2
  146. package/dist/runtime/game-input-seams.d.ts +2 -2
  147. package/dist/runtime/game-input-seams.d.ts.map +1 -1
  148. package/dist/runtime/game.d.ts +90 -41
  149. package/dist/runtime/game.d.ts.map +1 -1
  150. package/dist/runtime/game.js +80 -54
  151. package/dist/runtime/mount-game.d.ts +0 -16
  152. package/dist/runtime/mount-game.d.ts.map +1 -1
  153. package/dist/runtime/mount-game.js +8 -39
  154. package/dist/runtime/mount-manifest.d.ts +22 -14
  155. package/dist/runtime/mount-manifest.d.ts.map +1 -1
  156. package/dist/runtime/mount-manifest.js +18 -18
  157. package/dist/runtime/playtest.d.ts +22 -0
  158. package/dist/runtime/playtest.d.ts.map +1 -0
  159. package/dist/runtime/playtest.js +12 -0
  160. package/dist/runtime/state-bridge.d.ts +2 -3
  161. package/dist/runtime/state-bridge.d.ts.map +1 -1
  162. package/dist/runtime/state-bridge.js +1 -0
  163. package/dist/setup/setup-audio.d.ts +12 -0
  164. package/dist/setup/setup-audio.d.ts.map +1 -1
  165. package/dist/setup/setup-audio.js +9 -10
  166. package/dist/setup/setup-renderer.d.ts +2 -25
  167. package/dist/setup/setup-renderer.d.ts.map +1 -1
  168. package/dist/setup/setup-renderer.js +2 -31
  169. package/dist/world3d-react/r3f-root-factory.d.ts +7 -7
  170. package/dist/world3d-react/r3f-root-factory.js +7 -7
  171. package/dist/world3d-react/rapier-physics-bridge.d.ts +9 -8
  172. package/dist/world3d-react/rapier-physics-bridge.d.ts.map +1 -1
  173. package/dist/world3d-react/rapier-physics-bridge.js +100 -48
  174. package/package.json +1 -1
  175. package/schemas/engine-capabilities.json +16 -14
  176. package/schemas/vgai-project.schema.json +35 -26
  177. package/src/adapter/adapter-module.ts +2 -4
  178. package/src/adapter/adapter-surface.ts +1 -1
  179. package/src/adapter/authoring.ts +19 -21
  180. package/src/adapter/binding.ts +468 -0
  181. package/src/adapter/colyseus-networking-adapter.ts +20 -5
  182. package/src/adapter/entrypoint-selection-readers.ts +66 -0
  183. package/src/adapter/entrypoint-selection-source.ts +1 -40
  184. package/src/adapter/finders/scenes-from-entrypoint-selection.ts +1 -48
  185. package/src/adapter/host-context.ts +45 -15
  186. package/src/adapter/index.ts +23 -11
  187. package/src/adapter/ingest/game-contract.ts +0 -3
  188. package/src/adapter/ingest/scene-capture.ts +190 -39
  189. package/src/adapter/ingest/visible-capture-window.ts +35 -0
  190. package/src/adapter/native-debug-module.ts +43 -7
  191. package/src/adapter/rapier-physics-adapter.ts +76 -20
  192. package/src/adapter/renderer-config.ts +2 -2
  193. package/src/adapter/root-adapter.ts +7 -7
  194. package/src/adapter/system-adapter.ts +43 -8
  195. package/src/adapter/system-seam-contract.ts +3 -3
  196. package/src/adapter/system-slot.ts +291 -0
  197. package/src/adapter/transform.ts +18 -1
  198. package/src/ai/navigation.ts +30 -3
  199. package/src/animation/anim-graph-types.ts +11 -3
  200. package/src/animation/theatre-clock-binding.ts +4 -4
  201. package/src/animation/xstate-animation-binding.ts +2 -2
  202. package/src/animation/xstate-animation-meta.ts +16 -0
  203. package/src/asset-formats/index.ts +4 -7
  204. package/src/asset-formats/render-env.ts +3 -6
  205. package/src/asset-parse-error.ts +2 -5
  206. package/src/audio/bus-mixer.ts +161 -0
  207. package/src/core/frame-pacing.ts +2 -2
  208. package/src/core/game-loop.ts +1 -3
  209. package/src/core/seeded-random.ts +1 -1
  210. package/src/core/sim-clock.ts +5 -6
  211. package/src/core/types.ts +1 -3
  212. package/src/defaults.ts +6 -14
  213. package/src/dev/register-render-vitals.ts +1 -4
  214. package/src/dev/render-debug-adapter.ts +2 -3
  215. package/src/dev/render-vitals.ts +3 -3
  216. package/src/dev/webgl-frame-capture.ts +1 -1
  217. package/src/index.ts +2 -5
  218. package/src/input/host-pointer.ts +230 -0
  219. package/src/input/input-manager.ts +34 -13
  220. package/src/input/input-types.ts +1 -1
  221. package/src/input/rebind-controller.ts +6 -8
  222. package/src/input/schema.ts +216 -188
  223. package/src/manifest/filename.ts +8 -12
  224. package/src/manifest/load.ts +17 -13
  225. package/src/manifest/schema.ts +55 -47
  226. package/src/physics/collider-dimensions.ts +8 -12
  227. package/src/pixi/scene-capture.ts +12 -15
  228. package/src/react/world-state.tsx +1 -1
  229. package/src/render/light-camera-factory.ts +8 -11
  230. package/src/render/material-factory.ts +1 -1
  231. package/src/render/render-batch-system.ts +14 -6
  232. package/src/render/render-features.ts +17 -35
  233. package/src/runtime/create-runtime.ts +270 -108
  234. package/src/runtime/debug-registry.ts +84 -8
  235. package/src/runtime/dev-build.ts +2 -2
  236. package/src/runtime/game-input-seams.ts +2 -2
  237. package/src/runtime/game.ts +168 -80
  238. package/src/runtime/mount-game.ts +8 -56
  239. package/src/runtime/mount-manifest.ts +43 -34
  240. package/src/runtime/playtest.ts +22 -0
  241. package/src/runtime/state-bridge.ts +3 -3
  242. package/src/setup/setup-audio.ts +21 -11
  243. package/src/setup/setup-renderer.ts +2 -61
  244. package/src/world3d-react/r3f-root-factory.tsx +7 -7
  245. package/src/world3d-react/rapier-physics-bridge.tsx +107 -50
  246. package/dist/adapter/setup-three-root-adapter.d.ts +0 -86
  247. package/dist/adapter/setup-three-root-adapter.d.ts.map +0 -1
  248. package/dist/adapter/setup-three-root-adapter.js +0 -908
  249. package/dist/animation/clip-map.d.ts +0 -12
  250. package/dist/animation/clip-map.d.ts.map +0 -1
  251. package/dist/animation/clip-map.js +0 -31
  252. package/dist/asset-registry.d.ts +0 -38
  253. package/dist/asset-registry.d.ts.map +0 -1
  254. package/dist/asset-registry.js +0 -66
  255. package/dist/canvas-react/engine-bridge.d.ts +0 -45
  256. package/dist/canvas-react/engine-bridge.d.ts.map +0 -1
  257. package/dist/canvas-react/engine-bridge.js +0 -45
  258. package/dist/canvas-react/pixi-react-adapter.d.ts +0 -77
  259. package/dist/canvas-react/pixi-react-adapter.d.ts.map +0 -1
  260. package/dist/canvas-react/pixi-react-adapter.js +0 -294
  261. package/dist/canvas-react/world-context.d.ts +0 -98
  262. package/dist/canvas-react/world-context.d.ts.map +0 -1
  263. package/dist/canvas-react/world-context.js +0 -173
  264. package/dist/dev/debug-draw.d.ts +0 -24
  265. package/dist/dev/debug-draw.d.ts.map +0 -1
  266. package/dist/dev/debug-draw.js +0 -73
  267. package/dist/render/auto-batcher.d.ts +0 -34
  268. package/dist/render/auto-batcher.d.ts.map +0 -1
  269. package/dist/render/auto-batcher.js +0 -140
  270. package/dist/render/lod.d.ts +0 -13
  271. package/dist/render/lod.d.ts.map +0 -1
  272. package/dist/render/lod.js +0 -16
  273. package/dist/runtime/types.d.ts +0 -303
  274. package/dist/runtime/types.d.ts.map +0 -1
  275. package/dist/runtime/types.js +0 -1
  276. package/dist/world3d-react/engine-bridge.d.ts +0 -47
  277. package/dist/world3d-react/engine-bridge.d.ts.map +0 -1
  278. package/dist/world3d-react/engine-bridge.js +0 -73
  279. package/dist/world3d-react/r3f-adapter.d.ts +0 -58
  280. package/dist/world3d-react/r3f-adapter.d.ts.map +0 -1
  281. package/dist/world3d-react/r3f-adapter.js +0 -634
  282. package/dist/world3d-react/world-context.d.ts +0 -182
  283. package/dist/world3d-react/world-context.d.ts.map +0 -1
  284. package/dist/world3d-react/world-context.js +0 -235
  285. package/src/adapter/setup-three-root-adapter.ts +0 -1032
  286. package/src/animation/clip-map.ts +0 -34
  287. package/src/asset-registry.ts +0 -89
  288. package/src/dev/debug-draw.ts +0 -80
  289. package/src/render/auto-batcher.ts +0 -168
  290. package/src/render/lod.ts +0 -17
  291. package/src/runtime/types.ts +0 -328
@@ -25,6 +25,15 @@ import type { PhysicsAdapter } from './system-adapter';
25
25
  * `@react-three/rapier` pins for R3F worlds (0.19). Their `RigidBody` classes
26
26
  * are unrelated NOMINAL types, so a shared helper that named either one could
27
27
  * not serve both callers.
28
+ *
29
+ * FLIP CONDITION: `@react-three/rapier` pins its rapier EXACTLY (`0.19.2` as
30
+ * of its 2.2.0 — check `npm view @react-three/rapier dependencies`), so an
31
+ * override or engine bump to any OTHER rapier version forks the wasm instance
32
+ * that library initializes against and is refused. This structural split
33
+ * collapses only when the engine's own `@dimforge/rapier3d-compat` and
34
+ * `@react-three/rapier`'s exact pin agree on one version — at that point the
35
+ * two `RigidBody` types are one nominal type again and this interface can
36
+ * name it directly.
28
37
  */
29
38
  export interface RapierEditableBody {
30
39
  isFixed(): boolean;
@@ -57,7 +66,28 @@ export interface RapierEditableBody {
57
66
  * answered differently by each Rapier owner, and a caller that cannot answer
58
67
  * one honestly omits it.
59
68
  */
60
- export declare function createRapierBodyEditing(bodyFor: (nodeId: string) => RapierEditableBody | null | undefined): Pick<PhysicsAdapter, 'ownerOf' | 'freeze' | 'commit' | 'unfreeze'>;
69
+ /**
70
+ * What asking this Rapier owner about a node id actually yields.
71
+ *
72
+ * THE TWO NEGATIVE ANSWERS ARE DIFFERENT FACTS, and collapsing them into one
73
+ * `undefined` is what let `ownerOf` answer `'editor'` — "the editor drives this
74
+ * node's transform" — for an id this world has never heard of. `'no-body'` is a
75
+ * real measurement about a real node; `'unresolved'` is this implementer saying
76
+ * it cannot answer at all.
77
+ */
78
+ export type RapierBodyLookup = {
79
+ readonly kind: 'body';
80
+ readonly body: RapierEditableBody;
81
+ }
82
+ /** The node exists here and simply has no physics body. */
83
+ | {
84
+ readonly kind: 'no-body';
85
+ }
86
+ /** This world does not know this node id. */
87
+ | {
88
+ readonly kind: 'unresolved';
89
+ };
90
+ export declare function createRapierBodyEditing(lookup: (nodeId: string) => RapierBodyLookup): Pick<PhysicsAdapter, 'ownerOf' | 'freeze' | 'commit' | 'unfreeze'>;
61
91
  export declare function createRapierPhysicsAdapter(registry: PhysicsRegistry, physics: PhysicsContext | null | undefined,
62
92
  /**
63
93
  * The world's own `id → Object3D` map. Injected rather than derived here so
@@ -1 +1 @@
1
- {"version":3,"file":"rapier-physics-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/rapier-physics-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,IAAI,OAAO,CAAC;IACnB,QAAQ,IAAI,MAAM,CAAC;IACnB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACjD,cAAc,CAAC,WAAW,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACxF,WAAW,CAAC,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,kBAAkB,GAAG,IAAI,GAAG,SAAS,GACjE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC,CAqCpE;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS;AAC1C;;;;;GAKG;AACH,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC,QAAQ,GAAG,IAAI,GACjD,cAAc,CA+DhB"}
1
+ {"version":3,"file":"rapier-physics-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/rapier-physics-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,IAAI,OAAO,CAAC;IACnB,QAAQ,IAAI,MAAM,CAAC;IACnB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACjD,cAAc,CAAC,WAAW,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACxF,WAAW,CAAC,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9F;AAED;;;;;;;;;;;;;;GAcG;AACH;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE;AAC9D,2DAA2D;GACzD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE;AAC9B,6CAA6C;GAC3C;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC;AAYpC,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,gBAAgB,GAC3C,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC,CAiDpE;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS;AAC1C;;;;;GAKG;AACH,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC,QAAQ,GAAG,IAAI,GACjD,cAAc,CAwEhB"}
@@ -10,34 +10,39 @@
10
10
  * through the `resolve` function its constructor is handed. Nothing above this
11
11
  * line — not the editor, not the seam — needs to know an `Object3D` exists.
12
12
  */
13
- /**
14
- * The four REQUIRED `PhysicsAdapter` members, over nothing but "which Rapier
15
- * body drives this node" — the `freeze → apply → unfreeze` protocol itself,
16
- * with no opinion about where the body came from.
17
- *
18
- * Split out of {@link createRapierPhysicsAdapter} (it is that function's own
19
- * `ownerOf`/`freeze`/`commit`/`unfreeze`, unchanged) because the FIRST-PARTY
20
- * mount is no longer the only Rapier in this engine: an R3F world does its
21
- * physics with `@react-three/rapier` inside the fiber tree, which owns its own
22
- * bodies and its own `Object3D` mapping, and reaches these same four verbs
23
- * through `world3d-react/rapier-physics-bridge.tsx`. The optional members
24
- * (`debugDraw`, `setDebugDrawEnabled`, `contactPoints`) are NOT here: each is
25
- * answered differently by each Rapier owner, and a caller that cannot answer
26
- * one honestly omits it.
27
- */
28
- export function createRapierBodyEditing(bodyFor) {
13
+ /** The refusal sentence for a protocol verb aimed at a node this world has
14
+ * never heard of named once so every verb says the same thing. */
15
+ function unresolvedNodeRefusal(operation, nodeId) {
16
+ return (`[RapierPhysicsAdapter] ${operation}: this world does not know node id "${nodeId}", so ` +
17
+ 'there is no body to drive. Refusing rather than reporting a completed write — gate on ' +
18
+ "ownerOf(id) !== 'unresolved' before driving physics from a game-scoped adapter.");
19
+ }
20
+ export function createRapierBodyEditing(lookup) {
29
21
  /** Saved body types while frozen, so unfreeze can restore them. */
30
22
  const frozen = new Map();
23
+ /** The body for a verb that must actually reach one, or `null` when this node
24
+ * genuinely has no physics. THROWS for an unknown id: the three verbs below
25
+ * return `void`, so a silent return is indistinguishable from a completed
26
+ * write, and `commit` in particular is a WRITE the caller believes landed. */
27
+ const bodyForWrite = (operation, nodeId) => {
28
+ const answer = lookup(nodeId);
29
+ if (answer.kind === 'unresolved')
30
+ throw new Error(unresolvedNodeRefusal(operation, nodeId));
31
+ return answer.kind === 'body' ? answer.body : null;
32
+ };
31
33
  return {
32
34
  ownerOf(nodeId) {
33
- const body = bodyFor(nodeId);
34
- if (!body)
35
+ const answer = lookup(nodeId);
36
+ if (answer.kind === 'unresolved')
37
+ return 'unresolved';
38
+ // A node with no body, and a FIXED body (which never moves on its own),
39
+ // are both transforms the editor drives.
40
+ if (answer.kind === 'no-body')
35
41
  return 'editor';
36
- // A fixed body never moves on its own → the editor owns its transform.
37
- return body.isFixed() ? 'editor' : 'physics';
42
+ return answer.body.isFixed() ? 'editor' : 'physics';
38
43
  },
39
44
  freeze(nodeId) {
40
- const body = bodyFor(nodeId);
45
+ const body = bodyForWrite('freeze', nodeId);
41
46
  if (!body || frozen.has(body))
42
47
  return;
43
48
  frozen.set(body, body.bodyType());
@@ -45,14 +50,14 @@ export function createRapierBodyEditing(bodyFor) {
45
50
  body.setBodyType(2 /* KinematicPositionBased */, true);
46
51
  },
47
52
  commit(nodeId, t) {
48
- const body = bodyFor(nodeId);
53
+ const body = bodyForWrite('commit', nodeId);
49
54
  if (!body)
50
55
  return;
51
56
  body.setTranslation({ x: t.position[0], y: t.position[1], z: t.position[2] }, true);
52
57
  body.setRotation({ x: t.rotation[0], y: t.rotation[1], z: t.rotation[2], w: t.rotation[3] }, true);
53
58
  },
54
59
  unfreeze(nodeId) {
55
- const body = bodyFor(nodeId);
60
+ const body = bodyForWrite('unfreeze', nodeId);
56
61
  if (!body)
57
62
  return;
58
63
  const prev = frozen.get(body);
@@ -114,22 +119,31 @@ resolve) {
114
119
  }
115
120
  return contactBuf.subarray(0, contactCount * 3);
116
121
  };
117
- /** The one place this adapter crosses from node id into Three's vocabulary. */
118
- const bodyFor = (nodeId) => {
119
- const o = resolve(nodeId);
120
- return o ? registry.get(o)?.body : undefined;
122
+ /** The one place this adapter crosses from node id into Three's vocabulary
123
+ * and the one place that can tell an UNKNOWN node from one with no body. */
124
+ const lookup = (nodeId) => {
125
+ const object = resolve(nodeId);
126
+ if (!object)
127
+ return { kind: 'unresolved' };
128
+ const body = registry.get(object)?.body;
129
+ return body ? { kind: 'body', body } : { kind: 'no-body' };
121
130
  };
122
- return {
123
- ...createRapierBodyEditing(bodyFor),
124
- debugDraw: () => physics?.debugMesh ?? null,
125
- setDebugDrawEnabled(enabled) {
126
- if (!physics)
127
- return;
131
+ const adapter = { ...createRapierBodyEditing(lookup) };
132
+ // The debug-draw and contact capabilities exist only where a physics CONTEXT
133
+ // does. They used to be attached unconditionally and then no-op internally:
134
+ // `setDebugDrawEnabled(true)` returned as if it had enabled something, and
135
+ // `contactPoints()` returned an empty view — "we looked and there are no
136
+ // contacts" — for a world with no simulation at all. Presence mirrors the
137
+ // capability, so `physics-debug.ts`'s existing `?.()` calls now see absence.
138
+ if (physics) {
139
+ adapter.debugDraw = () => physics.debugMesh;
140
+ adapter.setDebugDrawEnabled = (enabled) => {
128
141
  // Same two fields the in-game KeyP toggle flips — the adapter's render
129
142
  // system reads `debugEnabled` and feeds `debugRender()` into the mesh.
130
143
  physics.debugEnabled = enabled;
131
144
  physics.debugMesh.visible = enabled;
132
- },
133
- contactPoints: collectContactPoints,
134
- };
145
+ };
146
+ adapter.contactPoints = collectContactPoints;
147
+ }
148
+ return adapter;
135
149
  }
@@ -4,7 +4,7 @@
4
4
  * It lives in the ADAPTER SEAM, not in a surface entry, because `WorldRendererConfig` IS part of
5
5
  * the root contract: `MountedThreeRoot.rendererConfig` reports it (`./root-adapter.ts`) and
6
6
  * `./root-seam-contract.ts` already lists it as a contract field. The seam defines the shape; the
7
- * surface entries and the editor CONFORM to it — `world3d-react/r3f-adapter.tsx` is the declarer,
7
+ * surface entries and the editor CONFORM to it — `world3d-react/r3f-root-factory.tsx` is the declarer,
8
8
  * `runtime/create-runtime.ts` the host, `editor/src/components/ViewportPanel.tsx` the editor's
9
9
  * applier. Do NOT move it back under `world3d-react/`: nothing here touches react, and a core
10
10
  * adapter file reaching into a react entry is exactly what `react-core-import-ban.test.ts` forbids
@@ -77,7 +77,7 @@ export interface WorldRendererConfig {
77
77
  * Apply `config` to `renderer`, returning the restore function that puts back what was there.
78
78
  *
79
79
  * `three` is passed in rather than imported for values so the enum constants come from the HOST's
80
- * three instance — the same identity rule `r3f-adapter.tsx` follows for the scene and camera.
80
+ * three instance — the same identity rule `r3f-root-factory.tsx` follows for the scene and camera.
81
81
  */
82
82
  export declare function applyWorldRendererConfig(three: typeof THREE, renderer: THREE.WebGLRenderer, config: WorldRendererConfig): () => void;
83
83
  //# sourceMappingURL=renderer-config.d.ts.map
@@ -4,7 +4,7 @@
4
4
  * It lives in the ADAPTER SEAM, not in a surface entry, because `WorldRendererConfig` IS part of
5
5
  * the root contract: `MountedThreeRoot.rendererConfig` reports it (`./root-adapter.ts`) and
6
6
  * `./root-seam-contract.ts` already lists it as a contract field. The seam defines the shape; the
7
- * surface entries and the editor CONFORM to it — `world3d-react/r3f-adapter.tsx` is the declarer,
7
+ * surface entries and the editor CONFORM to it — `world3d-react/r3f-root-factory.tsx` is the declarer,
8
8
  * `runtime/create-runtime.ts` the host, `editor/src/components/ViewportPanel.tsx` the editor's
9
9
  * applier. Do NOT move it back under `world3d-react/`: nothing here touches react, and a core
10
10
  * adapter file reaching into a react entry is exactly what `react-core-import-ban.test.ts` forbids
@@ -39,7 +39,7 @@
39
39
  * Apply `config` to `renderer`, returning the restore function that puts back what was there.
40
40
  *
41
41
  * `three` is passed in rather than imported for values so the enum constants come from the HOST's
42
- * three instance — the same identity rule `r3f-adapter.tsx` follows for the scene and camera.
42
+ * three instance — the same identity rule `r3f-root-factory.tsx` follows for the scene and camera.
43
43
  */
44
44
  export function applyWorldRendererConfig(three, renderer, config) {
45
45
  // A host that mounts a world WITHOUT rasterizing it hands the adapter a duck-typed renderer —
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * RootAdapter — the host ⇄ runtime contract. A ROOT is *anything that mounts*.
3
3
  *
4
- * This is the interface the host depends on. `GameSetupFn` is private to one
5
- * implementer (`SetupThreeRootAdapter`); first-party content and unmodified
6
- * external games are peer root adapters. A game is the manifest's complete
7
- * roots array, while each adapter owns exactly one root.
4
+ * This is the interface the host depends on. First-party content and
5
+ * unmodified external games are peer root adapters. A game is the
6
+ * manifest's complete roots array, while each adapter owns exactly one
7
+ * root.
8
8
  */
9
9
  import type { Container } from 'pixi.js';
10
10
  import type * as THREE from 'three';
@@ -125,8 +125,8 @@ export interface MountedReactRoot extends MountedRootBase {
125
125
  }
126
126
  /** Every kind of live, mounted world. */
127
127
  export type MountedRoot = MountedThreeRoot | MountedPixiRoot | MountedReactRoot;
128
- /** Map a {@link AdapterSurface} to its mounted-world shape (mirrors `NodeOf`/
129
- * `BodyOf`/`ColliderOf` in `ecs/behavior.ts`) — lets generic code over
128
+ /** Map a {@link AdapterSurface} to its mounted-world shape lets generic
129
+ * code over
130
130
  * `K extends AdapterSurface` name the right surface without a manual union. */
131
131
  export type MountedRootFor<K extends AdapterSurface> = K extends 'three' ? MountedThreeRoot : K extends 'canvas' ? MountedPixiRoot : K extends 'dom' ? MountedReactRoot : never;
132
132
  /**
@@ -155,7 +155,7 @@ export interface RootAdapter<K extends AdapterSurface = 'three'> {
155
155
  mount(host: HostContextFor<K>): Promise<MountedRootFor<K>>;
156
156
  }
157
157
  /**
158
- * One surface tag paired with an adapter typed FOR that surface (WO-34).
158
+ * One surface tag paired with an adapter typed FOR that surface.
159
159
  *
160
160
  * A resolver that turns a manifest root into a mountable
161
161
  * adapter handles every surface in one function, so its return type has to
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * RootAdapter — the host ⇄ runtime contract. A ROOT is *anything that mounts*.
3
3
  *
4
- * This is the interface the host depends on. `GameSetupFn` is private to one
5
- * implementer (`SetupThreeRootAdapter`); first-party content and unmodified
6
- * external games are peer root adapters. A game is the manifest's complete
7
- * roots array, while each adapter owns exactly one root.
4
+ * This is the interface the host depends on. First-party content and
5
+ * unmodified external games are peer root adapters. A game is the
6
+ * manifest's complete roots array, while each adapter owns exactly one
7
+ * root.
8
8
  */
9
9
  export {};
@@ -25,6 +25,21 @@ export type PhysicsColliderShape = {
25
25
  readonly type: 'capsule';
26
26
  readonly halfHeight: number;
27
27
  readonly radius: number;
28
+ }
29
+ /**
30
+ * A collider this seam has no plain-data projection for — a trimesh,
31
+ * heightfield, convex hull, cylinder, cone, …
32
+ *
33
+ * IT IS STILL A COLLIDER, and the body still has it. Implementations used to
34
+ * drop these from `colliders()` entirely, so a body whose only collider was a
35
+ * trimesh inspected as a body with NO physics at all. `kind` is the native
36
+ * shape's own name, so the inspector can say WHICH shape it cannot draw
37
+ * rather than implying nothing is there. Nothing may synthesize dimensions
38
+ * for one, and `previewCollider` refuses it.
39
+ */
40
+ | {
41
+ readonly type: 'unsupported';
42
+ readonly kind: string;
28
43
  };
29
44
  /** Plain-data projection of one native 3D physics collider. The owning
30
45
  * physics implementation keeps the actual collider; editor authoring only
@@ -231,12 +246,28 @@ export interface NetworkingAdapter {
231
246
  authority(nodeId: string): 'local' | 'remote' | 'server';
232
247
  /** Remote/server-authoritative nodes → inspect-only in the editor. */
233
248
  editable(nodeId: string): boolean;
234
- /** Current connection lifecycle state. */
235
- getConnectionState(): ConnectionState;
236
- /** The active room's identity, or `null` when not connected to a room. */
237
- getRoomInfo(): RoomInfo | null;
238
- /** Replication activity snapshot, for a live network inspector panel. */
239
- getReplicationStats(): ReplicationStats;
249
+ /**
250
+ * Optional capability: current connection lifecycle state.
251
+ *
252
+ * OPTIONAL for the same reason every other member here is — `'disconnected'`
253
+ * is a POSITIVE CLAIM about the link, and an implementer that never taught
254
+ * this adapter to read connection state has not made it. Absent ⇒ the
255
+ * inspector marks the section unsupported; it does not report a game as
256
+ * disconnected on the strength of nobody having looked.
257
+ */
258
+ getConnectionState?(): ConnectionState;
259
+ /**
260
+ * Optional capability: the active room's identity, or `null` when connected
261
+ * to no room. `null` is the ANSWER "there is no room", so absence of the
262
+ * accessor — "nothing here can tell you" — has to be a different thing.
263
+ */
264
+ getRoomInfo?(): RoomInfo | null;
265
+ /**
266
+ * Optional capability: replication activity snapshot, for a live network
267
+ * inspector panel. Zeroes are a measurement, not a default; an adapter with
268
+ * no counters omits this rather than reporting a quiet link.
269
+ */
270
+ getReplicationStats?(): ReplicationStats;
240
271
  /** Subscribe to changes in connection state / room / replication stats. */
241
272
  subscribe(cb: () => void): Unsubscribe;
242
273
  /** Optional capability: one plain-data (JSON-safe) snapshot of the
@@ -263,7 +294,7 @@ export interface NetworkingAdapter {
263
294
  * (e.g. read off its own room state). The editor consumes this for display —
264
295
  * a seat label — ONLY when a real implementer provides it, falling back to a
265
296
  * generic label otherwise. */
266
- getPlayerIdentity?(): NetPlayerIdentity;
297
+ getPlayerIdentity?(): NetPlayerIdentity | undefined;
267
298
  /** Optional capability, PAIRED with {@link getPlayerIdentity}: set the local
268
299
  * player's identity through the game's OWN multiplayer mechanism. The editor
269
300
  * renders an editable name field ONLY when a real implementer provides this
@@ -324,6 +355,13 @@ export interface NavCrowdAgentState {
324
355
  */
325
356
  export interface NavigationAdapter {
326
357
  hasNavMesh(): boolean;
358
+ /**
359
+ * `[]` means SEARCHED AND FOUND NO ROUTE — a fact about the level. An
360
+ * implementer with no navmesh to search, or whose query FAILED, THROWS
361
+ * instead; those are facts about the implementer, and collapsing all three
362
+ * into `[]` tells a caller the level is impassable when nobody looked.
363
+ * Gate on {@link hasNavMesh} where the first case is reachable.
364
+ */
327
365
  findPath(start: NavPoint, end: NavPoint): NavPoint[];
328
366
  debugMesh(scene: THREE.Scene): THREE.Object3D | null;
329
367
  /** (Re)build the navmesh from source meshes. Synchronous in the blessed
@@ -1 +1 @@
1
- {"version":3,"file":"system-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/system-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/system-adapter.ts"],"names":[],"mappings":"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"}
@@ -151,17 +151,17 @@ export declare const NETWORKING_ADAPTER_SHAPE: {
151
151
  readonly required: "operation";
152
152
  };
153
153
  readonly getConnectionState: {
154
- readonly optional: false;
154
+ readonly optional: true;
155
155
  readonly kind: "function";
156
156
  readonly required: "operation";
157
157
  };
158
158
  readonly getRoomInfo: {
159
- readonly optional: false;
159
+ readonly optional: true;
160
160
  readonly kind: "function";
161
161
  readonly required: "operation";
162
162
  };
163
163
  readonly getReplicationStats: {
164
- readonly optional: false;
164
+ readonly optional: true;
165
165
  readonly kind: "function";
166
166
  readonly required: "operation";
167
167
  };
@@ -37,9 +37,9 @@ export const NETWORKING_ADAPTER_SHAPE = defineSeamShape()({
37
37
  networkId: { optional: false, kind: 'function', required: 'operation' },
38
38
  authority: { optional: false, kind: 'function', required: 'operation' },
39
39
  editable: { optional: false, kind: 'function', required: 'operation' },
40
- getConnectionState: { optional: false, kind: 'function', required: 'operation' },
41
- getRoomInfo: { optional: false, kind: 'function', required: 'operation' },
42
- getReplicationStats: { optional: false, kind: 'function', required: 'operation' },
40
+ getConnectionState: { optional: true, kind: 'function', required: 'operation' },
41
+ getRoomInfo: { optional: true, kind: 'function', required: 'operation' },
42
+ getReplicationStats: { optional: true, kind: 'function', required: 'operation' },
43
43
  subscribe: { optional: false, kind: 'function', required: 'effect' },
44
44
  getStateSnapshot: { optional: true, kind: 'function', required: 'operation' },
45
45
  messageEvents: { optional: true, kind: 'function', required: 'operation' },
@@ -0,0 +1,168 @@
1
+ /**
2
+ * `createSystemSlot` — THE implementation of the declared-slot façade, the
3
+ * seam between a STATIC `systems` declaration and a LIVE adapter that only
4
+ * exists once the world tree is mounted.
5
+ *
6
+ * WHY IT EXISTS. An entry declares its systems statically
7
+ * (`export const systems = { networking: networkingSystem() }`), while the
8
+ * thing being declared — a joined Colyseus room, a baked navmesh, a mounted
9
+ * `<Physics>`, a cutscene's camera ownership — is built inside the world tree,
10
+ * later, and may be replaced (reconnect, remount, hot restart) or go away
11
+ * (stop). The slot is a stable object the host installs at mount and holds
12
+ * forever; every call forwards to whatever is attached right now.
13
+ *
14
+ * ── THE HONESTY RULE, STATED IN ONE PLACE ───────────────────────────────────
15
+ * This is why the pattern is centralized: five hand-rolled copies disagreed
16
+ * about it, and each disagreement was found by a separate review.
17
+ *
18
+ * - An **action** with no live target REFUSES BY NAME
19
+ * (`<name>: <unattachedMessage>`). Never a silent no-op — a caller that
20
+ * told the game to DO something must learn that it did not happen. An
21
+ * action against a live adapter that lacks the member refuses the same
22
+ * way, naming the member.
23
+ * - A **read** answers its declared HONEST EMPTY — `'disconnected'`, `[]`,
24
+ * `null`, `false`. That is not a fabrication: it is the truth of the
25
+ * not-attached state, in the same vocabulary the editor's own edit-mode
26
+ * adapters use. Reads are also the only kind safe to call from a per-frame
27
+ * debug draw, which is why a throw into a rAF loop is never the answer.
28
+ * - An **optional** member MIRRORS THE LIVE ADAPTER'S PRESENCE: absent while
29
+ * unattached, and absent afterwards when the live adapter itself does not
30
+ * provide it. Presence IS the consume-by-presence protocol's signal, so
31
+ * the slot may never invent it. Each presence read CAPTURES the adapter it
32
+ * saw and forwards to that same instance, so a detach between the read and
33
+ * the call answers as the adapter the caller was handed rather than a
34
+ * mid-flight swap.
35
+ * - A **subscribe** member SURVIVES REATTACHMENT: listeners live on the
36
+ * slot, never on the instance, and the slot re-binds its own single
37
+ * subscription on every attach/detach. A panel that subscribed once to the
38
+ * stable slot object is therefore never left holding a disposed system, and
39
+ * it is notified when the live half appears or disappears.
40
+ * - A member the config DOES NOT LIST does not exist on the slot at all.
41
+ * That is how the anti-shim rule spells omission — e.g. `PhysicsAdapter`'s
42
+ * `debugDraw`/`contactPoints` over `@react-three/rapier`, whose debug line
43
+ * segments live inside the fiber tree and expose no handle. Absence is a
44
+ * capability answer; a stub is a lie.
45
+ *
46
+ * ── RESOURCE OWNERSHIP ──────────────────────────────────────────────────────
47
+ * OWNER: whoever built the live adapter (the hook, the bridge component). The
48
+ * slot owns only the POINTER to it plus its own listener set and its own
49
+ * subscription to the live half. SHARERS: every reader of the declared
50
+ * system — editor inspectors, instruments. TEARDOWN: the function `attach`
51
+ * returns, and nothing else. It is IDENTITY-GUARDED — it clears only while
52
+ * the same instance is still attached, so a replace-then-teardown-the-old
53
+ * ordering cannot detach the new one — and detaching never disposes the
54
+ * adapter, because the slot did not create it.
55
+ *
56
+ * WHERE the slot module lives decides how many games share it. A slot in
57
+ * PROJECT-owned source (the four capability/example façades) is per Play
58
+ * instance, because the editor stamps mount ids onto project-owned import
59
+ * specifiers (`server/project-module-instance.ts`) — N instances get N module
60
+ * graphs and N slots. A slot in an ENGINE module is reached by bare
61
+ * specifier, which that stamping deliberately never touches, so it is ONE per
62
+ * page: every Play instance shares it, and concurrent instances' attaches
63
+ * contend (last attach wins; the loser's detach is dropped by the identity
64
+ * guard). `rapier-physics-bridge.tsx` is the one such slot today and warns
65
+ * loudly when contended — prefer project-owned slot modules for anything new.
66
+ *
67
+ * NOT A WRAPPER. The slot's members have the adapter interface's own exact
68
+ * signatures and hand back the implementation's own values; nothing stands
69
+ * between a caller and the live library object.
70
+ */
71
+ import type { VgaiGameSystemEmpty } from './ingest/game-contract';
72
+ /**
73
+ * `absent(reason)` — THE WHOLE-SLOT counterpart of the four per-member policies
74
+ * above, and the fifth line of the same honesty rule.
75
+ *
76
+ * The four policies answer "this slot exists but nothing is attached yet". This
77
+ * one answers a different question entirely: **this game will never have that
78
+ * subsystem, and here is what was searched.** A slot simply left out of the
79
+ * `systems` table cannot say that — an omitted key means "unsupported", which is
80
+ * the same shape as "nobody looked", and the coverage report has to file it as a
81
+ * work order forever. Declaring the absence turns an UNANSWERED row into a
82
+ * terminal one.
83
+ *
84
+ * ```ts
85
+ * export const systems = {
86
+ * audio: sfxAudioSystem(),
87
+ * physics: rapierPhysicsSystem(),
88
+ * networking: absent('single-player: no Colyseus client anywhere in `src/`'),
89
+ * };
90
+ * ```
91
+ *
92
+ * ## It is a CONSTRUCTOR for the shape that already exists, not a second one
93
+ *
94
+ * The returned value IS `VgaiGameSystemEmpty` — the plain
95
+ * `{ present: false, evidence }` record an INGESTED game declares on
96
+ * `window.vgaiGame.systems.systemAdapters`, validated by the same single
97
+ * projection (`ingest/contract-system-adapters.ts`). There is one shape law, not
98
+ * two: a foreign game cannot import this helper and must stay able to write the
99
+ * record by hand, so nothing here may brand the runtime value. What the helper
100
+ * buys a FIRST-PARTY author is the reason-quality check moved to the call site —
101
+ * our own code failing its own contract fails fast, where an ingested game's
102
+ * same mistake is filed as a `malformed` verdict for its coverage report.
103
+ *
104
+ * ## It is a MARKER, never a stub adapter
105
+ *
106
+ * Do not answer an absent slot with an adapter whose methods return zeros. A
107
+ * `getConnectionState()` of `'disconnected'` on a game with no transport implies
108
+ * a connection that could exist; that is the fabrication the anti-shim rule
109
+ * forbids. The absence is STATED, and the host installs nothing for it.
110
+ *
111
+ * @param reason What was searched and what was found, in the game's own source
112
+ * terms. "no netcode anywhere in `src/`" is a finished answer a reviewer can
113
+ * re-run; "not implemented yet" is a plan, and is rejected here.
114
+ */
115
+ export declare function absent(reason: string): VgaiGameSystemEmpty;
116
+ /** Any adapter member. `never[]` args make the conditional match contravariantly. */
117
+ type AnyFn = (...args: never[]) => unknown;
118
+ /** The declared member's return type, used to type a `read`'s honest empty. */
119
+ type MemberReturn<F> = NonNullable<F> extends (...args: never[]) => infer R ? R : never;
120
+ /**
121
+ * The per-member policy. There are exactly four, and every member of every
122
+ * declared slot in the repo is one of them — see the honesty rule above.
123
+ */
124
+ export type SystemSlotMemberSpec<F> = {
125
+ readonly kind: 'action';
126
+ } | {
127
+ readonly kind: 'read';
128
+ readonly empty: MemberReturn<F>;
129
+ } | {
130
+ readonly kind: 'subscribe';
131
+ } | {
132
+ readonly kind: 'optional';
133
+ };
134
+ /** The keys of `T` whose values are callable (data properties are not slottable). */
135
+ type FunctionMemberKeys<T> = {
136
+ [K in keyof T]-?: NonNullable<T[K]> extends AnyFn ? K : never;
137
+ }[keyof T];
138
+ /** Per-member policies. A member left out is left OFF the slot entirely. */
139
+ export type SystemSlotMembers<T> = {
140
+ readonly [K in FunctionMemberKeys<T>]?: SystemSlotMemberSpec<T[K]>;
141
+ };
142
+ export interface SystemSlotConfig<T extends object> {
143
+ /**
144
+ * The slot's own name, used as the prefix of every refusal so a stack-less
145
+ * error still names the seam (`'networkingSystem'`, `'rapierPhysicsSystem'`).
146
+ */
147
+ readonly name: string;
148
+ /**
149
+ * The rest of an action's refusal while nothing is attached — the DOMAIN
150
+ * half of the message, naming what has not happened yet ("the world is not
151
+ * playing, or the navmesh has not finished building").
152
+ */
153
+ readonly unattachedMessage: string;
154
+ readonly members: SystemSlotMembers<T>;
155
+ }
156
+ export interface SystemSlot<T extends object> {
157
+ /**
158
+ * Publish `live` as the slot's target. Returns the ONE detach path, which
159
+ * is identity-guarded: it clears only while `live` is still the attached
160
+ * instance, and never disposes it.
161
+ */
162
+ attach(live: T): () => void;
163
+ /** The stable declared object. Hand THIS to the entry's `systems` map. */
164
+ readonly slot: T;
165
+ }
166
+ export declare function createSystemSlot<T extends object>(config: SystemSlotConfig<T>): SystemSlot<T>;
167
+ export {};
168
+ //# sourceMappingURL=system-slot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-slot.d.ts","sourceRoot":"","sources":["../../src/adapter/system-slot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAS1D;AAED,qFAAqF;AACrF,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;AAE3C,+EAA+E;AAC/E,KAAK,YAAY,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAExF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAElC,qFAAqF;AACrF,KAAK,kBAAkB,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,KAAK;CAC9D,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX,4EAA4E;AAC5E,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IACjC,QAAQ,EAAE,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACnE,CAAC;AAEF,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM;IAChD;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM;IAC1C;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC;IAC5B,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CA+G7F"}