@oasys/oecs 0.5.3 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/CHANGELOG.md +1399 -276
  2. package/README.md +327 -169
  3. package/dist/core/ecs/access_check.d.cts +31 -31
  4. package/dist/core/ecs/access_check.d.ts +31 -31
  5. package/dist/core/ecs/access_check.d.ts.map +1 -1
  6. package/dist/core/ecs/archetype.d.cts +273 -205
  7. package/dist/core/ecs/archetype.d.ts +273 -205
  8. package/dist/core/ecs/archetype.d.ts.map +1 -1
  9. package/dist/core/ecs/archetype_closure.d.cts +23 -0
  10. package/dist/core/ecs/archetype_closure.d.ts +23 -0
  11. package/dist/core/ecs/archetype_closure.d.ts.map +1 -0
  12. package/dist/core/ecs/archetype_graph.d.cts +34 -34
  13. package/dist/core/ecs/archetype_graph.d.ts +34 -34
  14. package/dist/core/ecs/archetype_graph.d.ts.map +1 -1
  15. package/dist/core/ecs/archetype_types.d.cts +55 -0
  16. package/dist/core/ecs/archetype_types.d.ts +55 -0
  17. package/dist/core/ecs/archetype_types.d.ts.map +1 -0
  18. package/dist/core/ecs/change_feed.d.cts +53 -0
  19. package/dist/core/ecs/change_feed.d.ts +53 -0
  20. package/dist/core/ecs/change_feed.d.ts.map +1 -0
  21. package/dist/core/ecs/changed_query.d.cts +36 -0
  22. package/dist/core/ecs/changed_query.d.ts +36 -0
  23. package/dist/core/ecs/changed_query.d.ts.map +1 -0
  24. package/dist/core/ecs/chunk_columns.d.cts +49 -0
  25. package/dist/core/ecs/chunk_columns.d.ts +49 -0
  26. package/dist/core/ecs/chunk_columns.d.ts.map +1 -0
  27. package/dist/core/ecs/command_log.d.cts +30 -30
  28. package/dist/core/ecs/command_log.d.ts +30 -30
  29. package/dist/core/ecs/command_log.d.ts.map +1 -1
  30. package/dist/core/ecs/component.d.cts +45 -44
  31. package/dist/core/ecs/component.d.ts +45 -44
  32. package/dist/core/ecs/component.d.ts.map +1 -1
  33. package/dist/core/ecs/component_registry.d.cts +53 -0
  34. package/dist/core/ecs/component_registry.d.ts +53 -0
  35. package/dist/core/ecs/component_registry.d.ts.map +1 -0
  36. package/dist/core/ecs/compute_backend.d.cts +18 -7
  37. package/dist/core/ecs/compute_backend.d.ts +18 -7
  38. package/dist/core/ecs/compute_backend.d.ts.map +1 -1
  39. package/dist/core/ecs/deferred_commands.d.cts +15 -14
  40. package/dist/core/ecs/deferred_commands.d.ts +15 -14
  41. package/dist/core/ecs/deferred_commands.d.ts.map +1 -1
  42. package/dist/core/ecs/dispatch_trace.d.cts +32 -31
  43. package/dist/core/ecs/dispatch_trace.d.ts +32 -31
  44. package/dist/core/ecs/dispatch_trace.d.ts.map +1 -1
  45. package/dist/core/ecs/ecs.d.cts +337 -276
  46. package/dist/core/ecs/ecs.d.ts +337 -276
  47. package/dist/core/ecs/ecs.d.ts.map +1 -1
  48. package/dist/core/ecs/ecs_memory.d.cts +134 -136
  49. package/dist/core/ecs/ecs_memory.d.ts +134 -136
  50. package/dist/core/ecs/ecs_memory.d.ts.map +1 -1
  51. package/dist/core/ecs/ecs_options.d.cts +89 -0
  52. package/dist/core/ecs/ecs_options.d.ts +89 -0
  53. package/dist/core/ecs/ecs_options.d.ts.map +1 -0
  54. package/dist/core/ecs/entity.d.cts +4 -4
  55. package/dist/core/ecs/entity.d.ts +4 -4
  56. package/dist/core/ecs/entity_allocator.d.cts +24 -22
  57. package/dist/core/ecs/entity_allocator.d.ts +24 -22
  58. package/dist/core/ecs/entity_allocator.d.ts.map +1 -1
  59. package/dist/core/ecs/event.d.cts +37 -23
  60. package/dist/core/ecs/event.d.ts +37 -23
  61. package/dist/core/ecs/event.d.ts.map +1 -1
  62. package/dist/core/ecs/facades.d.cts +12 -126
  63. package/dist/core/ecs/facades.d.ts +12 -126
  64. package/dist/core/ecs/facades.d.ts.map +1 -1
  65. package/dist/core/ecs/frame_stepper.d.cts +12 -12
  66. package/dist/core/ecs/frame_stepper.d.ts +12 -12
  67. package/dist/core/ecs/frame_stepper.d.ts.map +1 -1
  68. package/dist/core/ecs/frame_trace.d.cts +34 -34
  69. package/dist/core/ecs/frame_trace.d.ts +34 -34
  70. package/dist/core/ecs/frame_trace.d.ts.map +1 -1
  71. package/dist/core/ecs/host_commands.d.cts +107 -89
  72. package/dist/core/ecs/host_commands.d.ts +107 -89
  73. package/dist/core/ecs/host_commands.d.ts.map +1 -1
  74. package/dist/core/ecs/index.d.cts +22 -12
  75. package/dist/core/ecs/index.d.ts +22 -12
  76. package/dist/core/ecs/index.d.ts.map +1 -1
  77. package/dist/core/ecs/observer.d.cts +41 -122
  78. package/dist/core/ecs/observer.d.ts +41 -122
  79. package/dist/core/ecs/observer.d.ts.map +1 -1
  80. package/dist/core/ecs/phase.d.cts +79 -0
  81. package/dist/core/ecs/phase.d.ts +79 -0
  82. package/dist/core/ecs/phase.d.ts.map +1 -0
  83. package/dist/core/ecs/plugin.d.cts +125 -0
  84. package/dist/core/ecs/plugin.d.ts +125 -0
  85. package/dist/core/ecs/plugin.d.ts.map +1 -0
  86. package/dist/core/ecs/plugin_slots.d.cts +26 -0
  87. package/dist/core/ecs/plugin_slots.d.ts +26 -0
  88. package/dist/core/ecs/plugin_slots.d.ts.map +1 -0
  89. package/dist/core/ecs/query.d.cts +219 -568
  90. package/dist/core/ecs/query.d.ts +219 -568
  91. package/dist/core/ecs/query.d.ts.map +1 -1
  92. package/dist/core/ecs/query_cache.d.cts +130 -0
  93. package/dist/core/ecs/query_cache.d.ts +130 -0
  94. package/dist/core/ecs/query_cache.d.ts.map +1 -0
  95. package/dist/core/ecs/query_registry.d.cts +47 -0
  96. package/dist/core/ecs/query_registry.d.ts +47 -0
  97. package/dist/core/ecs/query_registry.d.ts.map +1 -0
  98. package/dist/core/ecs/query_terms.d.cts +126 -0
  99. package/dist/core/ecs/query_terms.d.ts +126 -0
  100. package/dist/core/ecs/query_terms.d.ts.map +1 -0
  101. package/dist/core/ecs/ref.d.cts +129 -16
  102. package/dist/core/ecs/ref.d.ts +129 -16
  103. package/dist/core/ecs/ref.d.ts.map +1 -1
  104. package/dist/core/ecs/relation.d.cts +105 -186
  105. package/dist/core/ecs/relation.d.ts +105 -186
  106. package/dist/core/ecs/relation.d.ts.map +1 -1
  107. package/dist/core/ecs/resource.d.cts +14 -14
  108. package/dist/core/ecs/resource.d.ts +14 -14
  109. package/dist/core/ecs/resource_registry.d.cts +6 -6
  110. package/dist/core/ecs/resource_registry.d.ts +6 -6
  111. package/dist/core/ecs/resource_registry.d.ts.map +1 -1
  112. package/dist/core/ecs/row_kinds.d.cts +24 -0
  113. package/dist/core/ecs/row_kinds.d.ts +24 -0
  114. package/dist/core/ecs/row_kinds.d.ts.map +1 -0
  115. package/dist/core/ecs/run_condition.d.cts +23 -23
  116. package/dist/core/ecs/run_condition.d.ts +23 -23
  117. package/dist/core/ecs/run_condition.d.ts.map +1 -1
  118. package/dist/core/ecs/schedule.d.cts +98 -114
  119. package/dist/core/ecs/schedule.d.ts +98 -114
  120. package/dist/core/ecs/schedule.d.ts.map +1 -1
  121. package/dist/core/ecs/schedule_plan.d.cts +33 -0
  122. package/dist/core/ecs/schedule_plan.d.ts +33 -0
  123. package/dist/core/ecs/schedule_plan.d.ts.map +1 -0
  124. package/dist/core/ecs/snapshot.d.cts +77 -0
  125. package/dist/core/ecs/snapshot.d.ts +77 -0
  126. package/dist/core/ecs/snapshot.d.ts.map +1 -0
  127. package/dist/core/ecs/snapshot_mount.d.cts +42 -0
  128. package/dist/core/ecs/snapshot_mount.d.ts +42 -0
  129. package/dist/core/ecs/snapshot_mount.d.ts.map +1 -0
  130. package/dist/core/ecs/sparse_store.d.cts +110 -53
  131. package/dist/core/ecs/sparse_store.d.ts +110 -53
  132. package/dist/core/ecs/sparse_store.d.ts.map +1 -1
  133. package/dist/core/ecs/store.d.cts +644 -511
  134. package/dist/core/ecs/store.d.ts +644 -511
  135. package/dist/core/ecs/store.d.ts.map +1 -1
  136. package/dist/core/ecs/store_layout_listener.d.cts +8 -8
  137. package/dist/core/ecs/store_layout_listener.d.ts +8 -8
  138. package/dist/core/ecs/store_types.d.cts +122 -0
  139. package/dist/core/ecs/store_types.d.ts +122 -0
  140. package/dist/core/ecs/store_types.d.ts.map +1 -0
  141. package/dist/core/ecs/system.d.cts +151 -66
  142. package/dist/core/ecs/system.d.ts +151 -66
  143. package/dist/core/ecs/system.d.ts.map +1 -1
  144. package/dist/core/ecs/system_context.d.cts +296 -0
  145. package/dist/core/ecs/system_context.d.ts +296 -0
  146. package/dist/core/ecs/system_context.d.ts.map +1 -0
  147. package/dist/core/ecs/system_set.d.cts +48 -0
  148. package/dist/core/ecs/system_set.d.ts +48 -0
  149. package/dist/core/ecs/system_set.d.ts.map +1 -0
  150. package/dist/core/ecs/utils/arrays.d.cts +15 -1
  151. package/dist/core/ecs/utils/arrays.d.ts +15 -1
  152. package/dist/core/ecs/utils/arrays.d.ts.map +1 -1
  153. package/dist/core/ecs/utils/error.d.cts +87 -4
  154. package/dist/core/ecs/utils/error.d.ts +87 -4
  155. package/dist/core/ecs/utils/error.d.ts.map +1 -1
  156. package/dist/core/ecs/utils/plugin_error.d.cts +10 -0
  157. package/dist/core/ecs/utils/plugin_error.d.ts +10 -0
  158. package/dist/core/ecs/utils/plugin_error.d.ts.map +1 -0
  159. package/dist/core/restore_errors.d.cts +30 -0
  160. package/dist/core/restore_errors.d.ts +30 -0
  161. package/dist/core/restore_errors.d.ts.map +1 -0
  162. package/dist/core/store/action_ring.d.cts +48 -49
  163. package/dist/core/store/action_ring.d.ts +48 -49
  164. package/dist/core/store/action_ring.d.ts.map +1 -1
  165. package/dist/core/store/allocator.d.cts +166 -114
  166. package/dist/core/store/allocator.d.ts +166 -114
  167. package/dist/core/store/allocator.d.ts.map +1 -1
  168. package/dist/core/store/buffer_backed_column.d.cts +21 -22
  169. package/dist/core/store/buffer_backed_column.d.ts +21 -22
  170. package/dist/core/store/buffer_backed_column.d.ts.map +1 -1
  171. package/dist/core/store/column_store.d.cts +138 -100
  172. package/dist/core/store/column_store.d.ts +138 -100
  173. package/dist/core/store/column_store.d.ts.map +1 -1
  174. package/dist/core/store/command_dispatch.d.cts +14 -15
  175. package/dist/core/store/command_dispatch.d.ts +14 -15
  176. package/dist/core/store/command_dispatch.d.ts.map +1 -1
  177. package/dist/core/store/command_ring.d.cts +41 -45
  178. package/dist/core/store/command_ring.d.ts +41 -45
  179. package/dist/core/store/command_ring.d.ts.map +1 -1
  180. package/dist/core/store/descriptor.d.cts +35 -18
  181. package/dist/core/store/descriptor.d.ts +35 -18
  182. package/dist/core/store/descriptor.d.ts.map +1 -1
  183. package/dist/core/store/entity_index.d.cts +34 -35
  184. package/dist/core/store/entity_index.d.ts +34 -35
  185. package/dist/core/store/entity_index.d.ts.map +1 -1
  186. package/dist/core/store/event_ring.d.cts +40 -42
  187. package/dist/core/store/event_ring.d.ts +40 -42
  188. package/dist/core/store/event_ring.d.ts.map +1 -1
  189. package/dist/core/store/extend.d.cts +15 -9
  190. package/dist/core/store/extend.d.ts +15 -9
  191. package/dist/core/store/extend.d.ts.map +1 -1
  192. package/dist/core/store/grow.d.cts +3 -3
  193. package/dist/core/store/grow.d.ts +3 -3
  194. package/dist/core/store/grow.d.ts.map +1 -1
  195. package/dist/core/store/header.d.cts +37 -33
  196. package/dist/core/store/header.d.ts +37 -33
  197. package/dist/core/store/header.d.ts.map +1 -1
  198. package/dist/core/store/index.d.cts +10 -10
  199. package/dist/core/store/index.d.ts +10 -10
  200. package/dist/core/store/index.d.ts.map +1 -1
  201. package/dist/core/store/layout_ops.d.cts +72 -63
  202. package/dist/core/store/layout_ops.d.ts +72 -63
  203. package/dist/core/store/layout_ops.d.ts.map +1 -1
  204. package/dist/core/store/region_table.d.cts +28 -21
  205. package/dist/core/store/region_table.d.ts +28 -21
  206. package/dist/core/store/region_table.d.ts.map +1 -1
  207. package/dist/core/store/snapshot.d.cts +31 -16
  208. package/dist/core/store/snapshot.d.ts +31 -16
  209. package/dist/core/store/snapshot.d.ts.map +1 -1
  210. package/dist/core/store/state_hash.d.cts +14 -14
  211. package/dist/core/store/state_hash.d.ts +14 -14
  212. package/dist/core/store/state_hash.d.ts.map +1 -1
  213. package/dist/core/store/store_regions.d.cts +10 -10
  214. package/dist/core/store/store_regions.d.ts +10 -10
  215. package/dist/core/store/store_regions.d.ts.map +1 -1
  216. package/dist/core/store/vendored_abi/abi.d.cts +27 -2
  217. package/dist/core/store/vendored_abi/abi.d.ts +27 -2
  218. package/dist/core/store/vendored_abi/abi.d.ts.map +1 -1
  219. package/dist/host_commands-B2KMx8O2.cjs +1 -0
  220. package/dist/host_commands-ClVPvhSa.cjs +2 -0
  221. package/dist/host_commands-CwxVQS1z.js +1524 -0
  222. package/dist/host_commands-nJvTy88E.js +1667 -0
  223. package/dist/index.cjs +1 -1
  224. package/dist/index.d.cts +16 -11
  225. package/dist/index.d.ts +16 -11
  226. package/dist/index.d.ts.map +1 -1
  227. package/dist/index.development.cjs +1 -1
  228. package/dist/index.development.js +6709 -5729
  229. package/dist/index.js +5664 -4743
  230. package/dist/internal.cjs +2 -2
  231. package/dist/internal.d.cts +5 -2
  232. package/dist/internal.d.ts +5 -2
  233. package/dist/internal.d.ts.map +1 -1
  234. package/dist/internal.development.cjs +1 -1
  235. package/dist/internal.development.js +70 -20
  236. package/dist/internal.js +138 -83
  237. package/dist/plugins/abi-D3V-QUSf.cjs +1 -0
  238. package/dist/plugins/abi-NP8pNxpd.js +42 -0
  239. package/dist/plugins/arrays-Dr_1hCjL.js +28 -0
  240. package/dist/plugins/arrays-Dt-Joc4i.cjs +1 -0
  241. package/dist/plugins/assertions-gtDVfbnQ.js +6 -0
  242. package/dist/plugins/assertions-z5GQd_bB.cjs +1 -0
  243. package/dist/{extensions → plugins}/editor/editor.d.cts +56 -56
  244. package/dist/{extensions → plugins}/editor/editor.d.ts +56 -56
  245. package/dist/plugins/editor/editor.d.ts.map +1 -0
  246. package/dist/{extensions → plugins}/editor/field_handle.d.cts +13 -13
  247. package/dist/{extensions → plugins}/editor/field_handle.d.ts +13 -13
  248. package/dist/plugins/editor/field_handle.d.ts.map +1 -0
  249. package/dist/plugins/editor/index.d.cts +22 -0
  250. package/dist/plugins/editor/index.d.ts +22 -0
  251. package/dist/plugins/editor/index.d.ts.map +1 -0
  252. package/dist/plugins/editor.cjs +1 -0
  253. package/dist/plugins/editor.d.cts +1 -0
  254. package/dist/plugins/editor.d.ts +1 -0
  255. package/dist/plugins/editor.development.cjs +1 -0
  256. package/dist/{extensions/editor/index.development.js → plugins/editor.development.js} +83 -66
  257. package/dist/{extensions/editor/index.js → plugins/editor.js} +83 -66
  258. package/dist/plugins/events/event_channel.d.cts +13 -0
  259. package/dist/plugins/events/event_channel.d.ts +13 -0
  260. package/dist/plugins/events/event_channel.d.ts.map +1 -0
  261. package/dist/plugins/events/event_registry.d.cts +22 -0
  262. package/dist/plugins/events/event_registry.d.ts +22 -0
  263. package/dist/plugins/events/event_registry.d.ts.map +1 -0
  264. package/dist/plugins/events/facade.d.cts +26 -0
  265. package/dist/plugins/events/facade.d.ts +26 -0
  266. package/dist/plugins/events/facade.d.ts.map +1 -0
  267. package/dist/plugins/events/index.d.cts +10 -0
  268. package/dist/plugins/events/index.d.ts +10 -0
  269. package/dist/plugins/events/index.d.ts.map +1 -0
  270. package/dist/plugins/events.cjs +1 -0
  271. package/dist/plugins/events.d.cts +1 -0
  272. package/dist/plugins/events.d.ts +1 -0
  273. package/dist/plugins/events.development.cjs +1 -0
  274. package/dist/plugins/events.development.js +174 -0
  275. package/dist/plugins/events.js +159 -0
  276. package/dist/plugins/observers/index.d.cts +23 -0
  277. package/dist/plugins/observers/index.d.ts +23 -0
  278. package/dist/plugins/observers/index.d.ts.map +1 -0
  279. package/dist/plugins/observers/observer_registry.d.cts +101 -0
  280. package/dist/plugins/observers/observer_registry.d.ts +101 -0
  281. package/dist/plugins/observers/observer_registry.d.ts.map +1 -0
  282. package/dist/plugins/observers.cjs +1 -0
  283. package/dist/plugins/observers.d.cts +1 -0
  284. package/dist/plugins/observers.d.ts +1 -0
  285. package/dist/plugins/observers.development.cjs +1 -0
  286. package/dist/plugins/observers.development.js +431 -0
  287. package/dist/plugins/observers.js +403 -0
  288. package/dist/plugins/relation_store-BsoegrZh.js +313 -0
  289. package/dist/plugins/relation_store-DQKSnxsm.cjs +1 -0
  290. package/dist/plugins/relation_store-RBhpcE28.cjs +1 -0
  291. package/dist/plugins/relation_store-RqW5Snx6.js +328 -0
  292. package/dist/plugins/relations/builtin_relations.d.cts +48 -0
  293. package/dist/plugins/relations/builtin_relations.d.ts +48 -0
  294. package/dist/plugins/relations/builtin_relations.d.ts.map +1 -0
  295. package/dist/plugins/relations/facade.d.cts +73 -0
  296. package/dist/plugins/relations/facade.d.ts +73 -0
  297. package/dist/plugins/relations/facade.d.ts.map +1 -0
  298. package/dist/plugins/relations/index.d.cts +11 -0
  299. package/dist/plugins/relations/index.d.ts +11 -0
  300. package/dist/plugins/relations/index.d.ts.map +1 -0
  301. package/dist/{core/ecs → plugins/relations}/relation_service.d.cts +93 -105
  302. package/dist/{core/ecs → plugins/relations}/relation_service.d.ts +93 -105
  303. package/dist/plugins/relations/relation_service.d.ts.map +1 -0
  304. package/dist/plugins/relations/relation_store.d.cts +177 -0
  305. package/dist/plugins/relations/relation_store.d.ts +177 -0
  306. package/dist/plugins/relations/relation_store.d.ts.map +1 -0
  307. package/dist/plugins/relations.cjs +1 -0
  308. package/dist/plugins/relations.d.cts +1 -0
  309. package/dist/plugins/relations.d.ts +1 -0
  310. package/dist/plugins/relations.development.cjs +1 -0
  311. package/dist/plugins/relations.development.js +603 -0
  312. package/dist/plugins/relations.js +553 -0
  313. package/dist/plugins/snapshots/index.d.cts +33 -0
  314. package/dist/plugins/snapshots/index.d.ts +33 -0
  315. package/dist/plugins/snapshots/index.d.ts.map +1 -0
  316. package/dist/plugins/snapshots/resume.d.cts +57 -0
  317. package/dist/plugins/snapshots/resume.d.ts +57 -0
  318. package/dist/plugins/snapshots/resume.d.ts.map +1 -0
  319. package/dist/plugins/snapshots/snapshot_service.d.cts +59 -0
  320. package/dist/plugins/snapshots/snapshot_service.d.ts +59 -0
  321. package/dist/plugins/snapshots/snapshot_service.d.ts.map +1 -0
  322. package/dist/plugins/snapshots.cjs +1 -0
  323. package/dist/plugins/snapshots.d.cts +1 -0
  324. package/dist/plugins/snapshots.d.ts +1 -0
  325. package/dist/plugins/snapshots.development.cjs +1 -0
  326. package/dist/plugins/snapshots.development.js +737 -0
  327. package/dist/plugins/snapshots.js +737 -0
  328. package/dist/plugins/solid/index.d.cts +8 -0
  329. package/dist/plugins/solid/index.d.ts +8 -0
  330. package/dist/plugins/solid/index.d.ts.map +1 -0
  331. package/dist/plugins/solid/solid.d.cts +97 -0
  332. package/dist/plugins/solid/solid.d.ts +97 -0
  333. package/dist/plugins/solid/solid.d.ts.map +1 -0
  334. package/dist/plugins/solid.cjs +1 -0
  335. package/dist/plugins/solid.d.cts +1 -0
  336. package/dist/plugins/solid.d.ts +1 -0
  337. package/dist/plugins/solid.development.cjs +1 -0
  338. package/dist/plugins/solid.development.js +319 -0
  339. package/dist/plugins/solid.js +319 -0
  340. package/dist/plugins/workers/index.d.cts +75 -0
  341. package/dist/plugins/workers/index.d.ts +75 -0
  342. package/dist/plugins/workers/index.d.ts.map +1 -0
  343. package/dist/plugins/workers/node_threads.d.cts +25 -0
  344. package/dist/plugins/workers/node_threads.d.ts +25 -0
  345. package/dist/plugins/workers/node_threads.d.ts.map +1 -0
  346. package/dist/plugins/workers/plan.d.cts +61 -0
  347. package/dist/plugins/workers/plan.d.ts +61 -0
  348. package/dist/plugins/workers/plan.d.ts.map +1 -0
  349. package/dist/plugins/workers/pool.d.cts +144 -0
  350. package/dist/plugins/workers/pool.d.ts +144 -0
  351. package/dist/plugins/workers/pool.d.ts.map +1 -0
  352. package/dist/plugins/workers/protocol.d.cts +112 -0
  353. package/dist/plugins/workers/protocol.d.ts +112 -0
  354. package/dist/plugins/workers/protocol.d.ts.map +1 -0
  355. package/dist/plugins/workers/worker_bind.d.cts +64 -0
  356. package/dist/plugins/workers/worker_bind.d.ts +64 -0
  357. package/dist/plugins/workers/worker_bind.d.ts.map +1 -0
  358. package/dist/plugins/workers/worker_loop.d.cts +14 -0
  359. package/dist/plugins/workers/worker_loop.d.ts +14 -0
  360. package/dist/plugins/workers/worker_loop.d.ts.map +1 -0
  361. package/dist/plugins/workers.cjs +1 -0
  362. package/dist/plugins/workers.d.cts +1 -0
  363. package/dist/plugins/workers.d.ts +1 -0
  364. package/dist/plugins/workers.development.cjs +1 -0
  365. package/dist/plugins/workers.development.js +596 -0
  366. package/dist/plugins/workers.js +474 -0
  367. package/dist/primitives.cjs +1 -1
  368. package/dist/primitives.d.cts +4 -4
  369. package/dist/primitives.d.ts +4 -4
  370. package/dist/primitives.development.cjs +1 -1
  371. package/dist/primitives.development.js +66 -22
  372. package/dist/primitives.js +66 -22
  373. package/dist/shared-BKl12xF1.js +132 -0
  374. package/dist/shared-Dk-pACZT.cjs +1 -0
  375. package/dist/shared.cjs +1 -1
  376. package/dist/shared.d.cts +7 -7
  377. package/dist/shared.d.ts +7 -7
  378. package/dist/shared.d.ts.map +1 -1
  379. package/dist/shared.development.cjs +1 -1
  380. package/dist/shared.development.js +4 -3
  381. package/dist/shared.js +4 -3
  382. package/dist/topological_sort-Cc_yXqPT.js +346 -0
  383. package/dist/topological_sort-vp1imU6D.cjs +1 -0
  384. package/dist/type_primitives/assertions.d.cts +12 -16
  385. package/dist/type_primitives/assertions.d.ts +12 -16
  386. package/dist/type_primitives/assertions.d.ts.map +1 -1
  387. package/dist/type_primitives/binary_heap/binary_heap.d.cts +2 -6
  388. package/dist/type_primitives/binary_heap/binary_heap.d.ts +2 -6
  389. package/dist/type_primitives/binary_heap/binary_heap.d.ts.map +1 -1
  390. package/dist/type_primitives/bitset/bitset.d.cts +7 -11
  391. package/dist/type_primitives/bitset/bitset.d.ts +7 -11
  392. package/dist/type_primitives/bitset/bitset.d.ts.map +1 -1
  393. package/dist/type_primitives/brand.d.cts +2 -7
  394. package/dist/type_primitives/brand.d.ts +2 -7
  395. package/dist/type_primitives/brand.d.ts.map +1 -1
  396. package/dist/type_primitives/error.d.cts +1 -2
  397. package/dist/type_primitives/error.d.ts +1 -2
  398. package/dist/type_primitives/error.d.ts.map +1 -1
  399. package/dist/type_primitives/index.d.cts +1 -1
  400. package/dist/type_primitives/index.d.ts +1 -1
  401. package/dist/type_primitives/sparse_map/sparse_map.d.cts +3 -7
  402. package/dist/type_primitives/sparse_map/sparse_map.d.ts +3 -7
  403. package/dist/type_primitives/sparse_map/sparse_map.d.ts.map +1 -1
  404. package/dist/type_primitives/sparse_set/sparse_set.d.cts +2 -6
  405. package/dist/type_primitives/sparse_set/sparse_set.d.ts +2 -6
  406. package/dist/type_primitives/sparse_set/sparse_set.d.ts.map +1 -1
  407. package/dist/type_primitives/topological_sort/topological_sort.d.cts +1 -5
  408. package/dist/type_primitives/topological_sort/topological_sort.d.ts +1 -5
  409. package/dist/type_primitives/topological_sort/topological_sort.d.ts.map +1 -1
  410. package/dist/type_primitives/typed_arrays/typed_arrays.d.cts +18 -17
  411. package/dist/type_primitives/typed_arrays/typed_arrays.d.ts +18 -17
  412. package/dist/type_primitives/typed_arrays/typed_arrays.d.ts.map +1 -1
  413. package/dist/utils/error.d.ts.map +1 -1
  414. package/dist/version.d.cts +4 -4
  415. package/dist/version.d.ts +4 -4
  416. package/dist/worker.cjs +1 -0
  417. package/dist/worker.d.cts +17 -0
  418. package/dist/worker.d.ts +17 -0
  419. package/dist/worker.d.ts.map +1 -0
  420. package/dist/worker.development.cjs +1 -0
  421. package/dist/worker.development.js +253 -0
  422. package/dist/worker.js +253 -0
  423. package/package.json +363 -191
  424. package/dist/core/ecs/builtin_relations.d.cts +0 -43
  425. package/dist/core/ecs/builtin_relations.d.ts +0 -43
  426. package/dist/core/ecs/builtin_relations.d.ts.map +0 -1
  427. package/dist/core/ecs/event_registry.d.cts +0 -22
  428. package/dist/core/ecs/event_registry.d.ts +0 -22
  429. package/dist/core/ecs/event_registry.d.ts.map +0 -1
  430. package/dist/core/ecs/relation_service.d.ts.map +0 -1
  431. package/dist/core/ecs/resume.d.cts +0 -85
  432. package/dist/core/ecs/resume.d.ts +0 -85
  433. package/dist/core/ecs/resume.d.ts.map +0 -1
  434. package/dist/core/ecs/snapshot_service.d.cts +0 -94
  435. package/dist/core/ecs/snapshot_service.d.ts +0 -94
  436. package/dist/core/ecs/snapshot_service.d.ts.map +0 -1
  437. package/dist/extensions/editor/editor.d.ts.map +0 -1
  438. package/dist/extensions/editor/field_handle.d.ts.map +0 -1
  439. package/dist/extensions/editor/index.cjs +0 -1
  440. package/dist/extensions/editor/index.d.cts +0 -21
  441. package/dist/extensions/editor/index.d.ts +0 -21
  442. package/dist/extensions/editor/index.d.ts.map +0 -1
  443. package/dist/extensions/editor/index.development.cjs +0 -1
  444. package/dist/extensions/reactive/ecs_sync.d.cts +0 -214
  445. package/dist/extensions/reactive/ecs_sync.d.ts +0 -214
  446. package/dist/extensions/reactive/ecs_sync.d.ts.map +0 -1
  447. package/dist/extensions/reactive/index.cjs +0 -1
  448. package/dist/extensions/reactive/index.d.cts +0 -23
  449. package/dist/extensions/reactive/index.d.ts +0 -23
  450. package/dist/extensions/reactive/index.d.ts.map +0 -1
  451. package/dist/extensions/reactive/index.development.cjs +0 -1
  452. package/dist/extensions/reactive/index.development.js +0 -215
  453. package/dist/extensions/reactive/index.js +0 -215
  454. package/dist/extensions/solid/index.cjs +0 -1
  455. package/dist/extensions/solid/index.d.cts +0 -6
  456. package/dist/extensions/solid/index.d.ts +0 -6
  457. package/dist/extensions/solid/index.d.ts.map +0 -1
  458. package/dist/extensions/solid/index.development.cjs +0 -1
  459. package/dist/extensions/solid/index.development.js +0 -40
  460. package/dist/extensions/solid/index.js +0 -36
  461. package/dist/extensions/solid/kernel_solid.d.cts +0 -45
  462. package/dist/extensions/solid/kernel_solid.d.ts +0 -45
  463. package/dist/extensions/solid/kernel_solid.d.ts.map +0 -1
  464. package/dist/host_commands-3jyFfWNg.js +0 -2326
  465. package/dist/host_commands-DNf0f6ko.cjs +0 -1
  466. package/dist/internal-C9jjL90H.js +0 -2485
  467. package/dist/internal-RZN14uMw.cjs +0 -2
  468. package/dist/interop-CT-REx0W.cjs +0 -1
  469. package/dist/interop-CcY6ASQc.js +0 -18
  470. package/dist/interop-DqxleBo7.js +0 -18
  471. package/dist/interop-T1HZ-Dpa.cjs +0 -1
  472. package/dist/kernel-Cz2Kxlwl.js +0 -240
  473. package/dist/kernel-DgyrLFjW.js +0 -227
  474. package/dist/kernel-sw7ScKWu.cjs +0 -1
  475. package/dist/kernel-yWV3XnAb.cjs +0 -1
  476. package/dist/reactive/array.d.cts +0 -24
  477. package/dist/reactive/array.d.ts +0 -24
  478. package/dist/reactive/array.d.ts.map +0 -1
  479. package/dist/reactive/index.cjs +0 -1
  480. package/dist/reactive/index.d.cts +0 -11
  481. package/dist/reactive/index.d.ts +0 -11
  482. package/dist/reactive/index.d.ts.map +0 -1
  483. package/dist/reactive/index.development.cjs +0 -1
  484. package/dist/reactive/index.development.js +0 -18
  485. package/dist/reactive/index.js +0 -18
  486. package/dist/reactive/interop.d.cts +0 -19
  487. package/dist/reactive/interop.d.ts +0 -19
  488. package/dist/reactive/interop.d.ts.map +0 -1
  489. package/dist/reactive/kernel.d.cts +0 -73
  490. package/dist/reactive/kernel.d.ts +0 -73
  491. package/dist/reactive/kernel.d.ts.map +0 -1
  492. package/dist/reactive/map.d.cts +0 -16
  493. package/dist/reactive/map.d.ts +0 -16
  494. package/dist/reactive/map.d.ts.map +0 -1
  495. package/dist/reactive/shallow.d.cts +0 -11
  496. package/dist/reactive/shallow.d.ts +0 -11
  497. package/dist/reactive/shallow.d.ts.map +0 -1
  498. package/dist/reactive/struct.d.cts +0 -10
  499. package/dist/reactive/struct.d.ts +0 -10
  500. package/dist/reactive/struct.d.ts.map +0 -1
  501. package/dist/shallow-9S1pY_Iw.js +0 -159
  502. package/dist/shallow-C5YmTbtb.cjs +0 -1
  503. package/dist/shallow-DQ8aG51_.cjs +0 -1
  504. package/dist/shallow-DfnAm9vG.js +0 -150
  505. package/dist/shared-BMXh9hxm.cjs +0 -1
  506. package/dist/shared-DQKK0i-E.js +0 -109
  507. package/dist/topological_sort-BDvEyb9W.cjs +0 -1
  508. package/dist/topological_sort-DK6EjpWa.js +0 -135
  509. package/dist/typed_arrays-BcXcnzB4.js +0 -258
  510. package/dist/typed_arrays-D3NmwtCG.cjs +0 -1
@@ -1,15 +1,15 @@
1
1
  import { ComponentDef, ComponentSchema, CompleteFieldValues, FieldValues } from './component.cjs';
2
2
  import { ECS } from './ecs.cjs';
3
3
  import { EntityID } from './entity.cjs';
4
- import { SystemContext } from './query.cjs';
5
- import { SCHEDULE } from './schedule.cjs';
4
+ import { SystemContext } from './system_context.cjs';
5
+ import { SchedulePhase } from './phase.cjs';
6
6
  import { PayloadCodec } from '../store/index.cjs';
7
7
  /** One component to attach to a freshly spawned entity. `values` are required
8
- * and complete as a *strictness* choice, not a runtime need: since #716 every
9
- * attach path (deferred included `writeFields`'s `?? 0`) zero-fills omitted
8
+ * and complete as a *strictness* choice, not a runtime need: every
9
+ * attach path (deferred included, `writeFields`'s `?? 0`) zero-fills omitted
10
10
  * fields, same as templates. A host command is a reified, replayable record,
11
11
  * so it carries explicit intent for every field rather than relying on the
12
- * zero-fill; a tag component takes `{}`. Build type-safely with `spawnEntry`. */
12
+ * zero-fill. A tag component takes `{}`. Build type-safely with `spawnEntry`. */
13
13
  export interface SpawnEntry {
14
14
  readonly def: ComponentDef;
15
15
  readonly values: FieldValues<ComponentSchema>;
@@ -17,34 +17,34 @@ export interface SpawnEntry {
17
17
  /** Extracts the schema out of a `ComponentDef` handle. */
18
18
  type SchemaOf<D extends ComponentDef> = D extends ComponentDef<infer S> ? S : ComponentSchema;
19
19
  /** One schema-checked spawn entry: `values` is complete for its own def (see
20
- * the `SpawnEntry` doc explicit intent per field, though the attach path
21
- * zero-fills since #716), and a tag takes exactly `{}`. */
20
+ * the `SpawnEntry` doc, explicit intent per field, though the attach path
21
+ * zero-fills), and a tag takes exactly `{}`. */
22
22
  export type SpawnEntryFor<D extends ComponentDef> = {
23
23
  readonly def: D;
24
24
  readonly values: CompleteFieldValues<SchemaOf<D>>;
25
25
  };
26
- /** The entries tuple for `HostCommandQueue.spawn` each element's `values` is
26
+ /** The entries tuple for `HostCommandQueue.spawn`, each element's `values` is
27
27
  * checked against its own `def`'s schema. Unlike the authoring-side bundle
28
- * varargs (`StrictBundles` `Partial`, a template/attach zero-fills omitted
28
+ * varargs (`StrictBundles`, `Partial`, a template and attach zero-fills omitted
29
29
  * fields), a host command demands complete values: it is a reified, replayable
30
30
  * record, so every field is explicit even though the attach path would
31
- * zero-fill (#716). This is the one attach surface that stays on entry-objects
32
- * it is transport (record/replay, editor undo), not authoring. */
31
+ * zero-fill. This is the one attach surface that stays on entry-objects.
32
+ * It is transport (record and replay, editor undo), not authoring. */
33
33
  export type SpawnEntries<Defs extends readonly ComponentDef[]> = readonly [
34
34
  ...{
35
35
  [K in keyof Defs]: SpawnEntryFor<Defs[K]>;
36
36
  }
37
37
  ];
38
- /** Type-checked `SpawnEntry` constructor keeps `values` aligned to `def`'s
38
+ /** Type-checked `SpawnEntry` constructor, keeps `values` aligned to `def`'s
39
39
  * schema at the call site even though the stored entry is schema-erased. */
40
40
  export declare function spawnEntry<S extends ComponentSchema>(def: ComponentDef<S>, values: CompleteFieldValues<S>): SpawnEntry;
41
41
  /**
42
42
  * A single world mutation, as plain data. Every transport (typed queue today, a
43
- * SAB ring codec tomorrow) and every consumer (editor undo, record/replay)
43
+ * SAB ring codec tomorrow) and every consumer (editor undo, record and replay)
44
44
  * speaks this one vocabulary, applied by the one `applyHostCommand` dispatch.
45
45
  *
46
- * Component fields are `string` / `def: ComponentDef` (schema-erased) so the
47
- * union stays flat; the typed `HostCommandQueue` methods preserve type-safety at
46
+ * Component fields are `string` and `def: ComponentDef` (schema-erased) so the
47
+ * union stays flat. The typed `HostCommandQueue` methods preserve type-safety at
48
48
  * the enqueue site. `applyHostCommand` re-applies them through `SystemContext`,
49
49
  * which type-checks because `ComponentDef` defaults its schema to
50
50
  * `ComponentSchema` (whose `keyof` is `string`).
@@ -53,7 +53,7 @@ export type HostCommand = {
53
53
  readonly kind: "spawn";
54
54
  readonly components: readonly SpawnEntry[];
55
55
  /** Fired with the new id once the spawn applies (the id only exists
56
- * after the deferred create) lets a producer/editor learn it. */
56
+ * after the deferred create), lets a producer or editor learn it. */
57
57
  readonly onSpawned?: (entityId: EntityID) => void;
58
58
  } | {
59
59
  readonly kind: "despawn";
@@ -81,163 +81,163 @@ export type HostCommand = {
81
81
  readonly eid: EntityID;
82
82
  };
83
83
  /**
84
- * THE ONE APPLY DISPATCH. Maps a `HostCommand` onto `SystemContext` ops. Only
84
+ * The one apply dispatch. Maps a `HostCommand` onto `SystemContext` ops. Only
85
85
  * ever called from inside the blessed apply system, which holds the `ctx` and is
86
- * `exclusive` (full access). Structural changes (`spawn`/`despawn`/component
87
- * add-remove) are deferred to the phase flush, exactly like a normal system's;
88
- * `setField` is immediate and bumps the change-tick. Returns the new entity for
89
- * `spawn`, otherwise `undefined`.
86
+ * `exclusive` (full access). A structural change (`spawn`, `despawn`, and a
87
+ * component add or remove) is deferred to the phase flush, exactly like a normal
88
+ * system's. `setField` is immediate and stamps the change tick. Returns the new
89
+ * entity for `spawn`, otherwise `undefined`.
90
90
  *
91
- * That immediate/deferred split is a sharp edge: a `setField` targeting a
92
- * component the entity does NOT yet have because an `add`/`spawn`
93
- * enqueued in the SAME drain is still pending its flush would otherwise fail
94
- * deep in `getColumn` with an opaque "component not registered". The `DEV`
91
+ * That immediate and deferred split is a sharp edge: a `setField` targeting a
92
+ * component the entity does not yet have, because an `add` or `spawn`
93
+ * enqueued in the same drain is still pending its flush, would otherwise fail
94
+ * deep in `getColumnMut` with an opaque "component not registered". The `DEV`
95
95
  * guard below turns that into an actionable message. The fix is structural, not a
96
- * retry: pass the value in `add`/`spawnEntry` (which carries complete
96
+ * retry: pass the value in `add` and `spawnEntry` (which carries complete
97
97
  * field values), or issue the `setField` on a later frame.
98
98
  */
99
99
  export declare function applyHostCommand(ctx: SystemContext, cmd: HostCommand): EntityID | undefined;
100
100
  /**
101
- * The host-facing write handle. Mutating methods ENQUEUE (off-schedule, pure);
102
- * nothing reaches the world until the apply system drains it at the next
101
+ * The host-facing write handle. A mutating method enqueues, off-schedule and
102
+ * pure. Nothing reaches the world until the apply system drains it at the next
103
103
  * schedule head. Mirrors Bevy's `Commands` ergonomics over the flat `HostCommand`
104
104
  * vocabulary. The returned-from-`installHostCommandSeam` instance is the
105
- * write counterpart to the reactive bridge's returned `reactiveMap`.
105
+ * write counterpart to a read view the Solid plugin returns.
106
106
  */
107
107
  export declare class HostCommandQueue {
108
- private readonly queued;
108
+ private readonly _pending;
109
109
  /** Spawn an entity carrying `components`. `onSpawned` receives the new id
110
110
  * once the spawn applies. Each entry's `values` is checked against its own
111
- * `def`'s schema (`SpawnEntries`); the stored command stays schema-erased. */
111
+ * `def`'s schema (`SpawnEntries`). The stored command stays schema-erased. */
112
112
  spawn<Defs extends readonly ComponentDef[]>(components: SpawnEntries<Defs>, onSpawned?: (entityId: EntityID) => void): this;
113
113
  despawn(entityId: EntityID): this;
114
114
  /** Attach `def` (with complete `values`) to `entityId` (deferred to the
115
- * drain). The namespaced-handle grammar the queue is a commands buffer, so
115
+ * drain). The namespaced-handle grammar, the queue is a commands buffer, so
116
116
  * it drops the noun (`add`, not `addComponent`), matching `ctx.commands.add`
117
- * and the queue's own bare `spawn`/`despawn`/`disable`/`enable`. Values are
118
- * complete (transport carries explicit intent per field; see `spawnEntry`),
117
+ * and the queue's own bare `spawn`, `despawn`, `disable` and `enable`. Values are
118
+ * complete (transport carries explicit intent per field, see `spawnEntry`),
119
119
  * unlike the authoring-side bundle sugar. */
120
120
  add<S extends ComponentSchema>(entityId: EntityID, def: ComponentDef<S>, values: CompleteFieldValues<S>): this;
121
121
  /** Detach `def` from `entityId` (deferred to the drain). Bare `remove`
122
- * matching `ctx.commands.remove` see `add`. */
122
+ * matching `ctx.commands.remove`, see `add`. */
123
123
  remove(entityId: EntityID, def: ComponentDef): this;
124
- /** Set `field` of `def` on `entityId`. Applied IMMEDIATELY at the drain, unlike
125
- * the deferred structural ops so `def` must already be on `entityId`. Do NOT
126
- * `add`/`spawn` `def` and `setField` it in the same frame: the add is
124
+ /** Set `field` of `def` on `entityId`. Applied immediately at the drain, unlike
125
+ * the deferred structural ops, so `def` must already be on `entityId`. Do not
126
+ * `add` and `spawn` `def` and `setField` it in the same frame: the add is
127
127
  * still pending its flush when the immediate set runs (carry the value in
128
- * `add`/`spawnEntry` instead). `applyHostCommand` throws an
128
+ * `add` or `spawnEntry` instead). `applyHostCommand` throws an
129
129
  * actionable error in `DEV` if you do. */
130
130
  setField<S extends ComponentSchema>(entityId: EntityID, def: ComponentDef<S>, field: string & keyof S, value: number): this;
131
131
  disable(entityId: EntityID): this;
132
132
  enable(entityId: EntityID): this;
133
133
  /** Enqueue a pre-built command. The path for a SAB-ring codec, an editor's
134
- * reified inverse, or a replay log all of which produce `HostCommand` data
134
+ * reified inverse, or a replay log, all of which produce `HostCommand` data
135
135
  * directly rather than calling the typed sugar above. */
136
136
  push(cmd: HostCommand): this;
137
137
  /** Commands buffered but not yet applied. */
138
- get pending(): number;
139
- /** Drop every buffered command without applying it (M15) — e.g. abandoning
138
+ get pendingCount(): number;
139
+ /** Drop every buffered command without applying it, e.g. abandoning
140
140
  * queued edits on a scene unload. Returns how many were dropped. Does not
141
141
  * touch commands already drained into the world. */
142
142
  clear(): number;
143
143
  /**
144
144
  * Apply and clear every buffered command. Called by the blessed apply system
145
- * inside its schedule span; not part of the host-facing surface. Returns the
145
+ * inside its schedule span. Not part of the host-facing surface. Returns the
146
146
  * count applied.
147
147
  *
148
- * `tap`, when present, is invoked with each command in apply order just before
149
- * it is applied the record/replay hook ({@link HostCommandRecorder}). It is
150
- * an OPT-IN observer: the tap-free path keeps the original tight loop, so an
151
- * un-recorded drain pays nothing (#702).
148
+ * `tap`, when present, is invoked with each command in apply order immediately before
149
+ * it is applied, the record and replay hook ({@link HostCommandRecorder}). It is
150
+ * an opt-in observer: the tap-free path keeps the original tight loop, so an
151
+ * un-recorded drain pays nothing.
152
152
  */
153
153
  drain(ctx: SystemContext, tap?: (cmd: HostCommand) => void): number;
154
154
  }
155
155
  /** Bytes of the payload region inside one `command_ring` slot (15). The slot's
156
- * leading byte is the opCode; `COMMAND_RING_SLOT_BYTES` (16) is the whole slot. */
156
+ * leading byte is the opCode. `COMMAND_RING_SLOT_BYTES` (16) is the whole slot. */
157
157
  export declare const HOST_COMMAND_PAYLOAD_BYTES: number;
158
158
  /**
159
- * Ring codec for a `setField` on a FIXED `(def, field)`. The component + field
160
- * are bound INTO the codec, not carried in the bytes the consumer-owned-codec
159
+ * Ring codec for a `setField` on a fixed `(def, field)`. The component + field
160
+ * are bound into the codec, not carried in the bytes, the consumer-owned-codec
161
161
  * rule (mirroring `command_dispatch`): the engine ships the mechanism, a
162
162
  * consumer's codec knows which component+field an opcode means.
163
163
  *
164
164
  * Payload (15 B): `[ eid: u32 LE @0 ][ value: f64 LE @4 ][ _reserved: 3 B @12 ]`
165
165
  *
166
- * `value` rides as `f64` (covers every numeric column type losslessly within
167
- * range); the trailing 3 bytes stay zero. Packing the id as `u32` is what makes
166
+ * `value` rides as `f64`, which covers every numeric column type losslessly
167
+ * within range. The trailing 3 bytes stay zero. Packing the id as `u32` makes
168
168
  * `setField` fit the 15-byte slot.
169
169
  */
170
170
  export declare function ringSetFieldCodec<S extends ComponentSchema>(def: ComponentDef<S>, field: string & keyof S): PayloadCodec<HostCommand>;
171
- /** Ring codec for `despawn` `[ eid: u32 LE @0 ]`, trailing 11 B reserved-zero. */
171
+ /** Ring codec for `despawn`, `[ eid: u32 LE @0 ]`, trailing 11 B reserved-zero. */
172
172
  export declare function ringDespawnCodec(): PayloadCodec<HostCommand>;
173
- /** Ring codec for `disable` `[ eid: u32 LE @0 ]`, trailing 11 B reserved-zero. */
173
+ /** Ring codec for `disable`, `[ eid: u32 LE @0 ]`, trailing 11 B reserved-zero. */
174
174
  export declare function ringDisableCodec(): PayloadCodec<HostCommand>;
175
- /** Ring codec for `enable` `[ eid: u32 LE @0 ]`, trailing 11 B reserved-zero. */
175
+ /** Ring codec for `enable`, `[ eid: u32 LE @0 ]`, trailing 11 B reserved-zero. */
176
176
  export declare function ringEnableCodec(): PayloadCodec<HostCommand>;
177
177
  /**
178
- * Ring codec for `removeComponent` of a FIXED `def` `[ eid: u32 LE @0 ]`, the
179
- * component bound into the codec (consumer-owned-codec rule). `spawn` /
178
+ * Ring codec for `removeComponent` of a fixed `def`, `[ eid: u32 LE @0 ]`, the
179
+ * component bound into the codec (consumer-owned-codec rule). `spawn` and
180
180
  * `addComponent` are deliberately absent: they carry component field values
181
181
  * that don't fit the 15-byte slot generically, so they stay typed-transport-only
182
- * (the prototype's finding the in-process queue has no width limit).
182
+ * (the prototype's finding, the in-process queue has no width limit).
183
183
  */
184
184
  export declare function ringRemoveComponentCodec(def: ComponentDef): PayloadCodec<HostCommand>;
185
185
  /** A ctx-aware applier for one ring opcode: runs on the system `ctx` (which the
186
186
  * apply system holds) with the raw 15-byte payload. `tap`, when present, is the
187
- * record/replay hook (#702) — a generic, `onCommand`-bound applier decodes the
187
+ * record and replay hook, a generic, `onCommand`-bound applier decodes the
188
188
  * slot to a `HostCommand` and feeds it to `tap` before applying, so ring-sourced
189
189
  * commands land in the same log as typed-queue ones. A raw `on` applier (a
190
190
  * consumer's own non-`HostCommand` op, e.g. the game's `spawn_unit`) has no
191
- * `HostCommand` to surface and simply ignores `tap`. */
191
+ * `HostCommand` to surface and ignores `tap`. */
192
192
  export type RingCommandApplier = (ctx: SystemContext, payload: Uint8Array, tap?: (cmd: HostCommand) => void) => void;
193
193
  /**
194
194
  * Drains the SAB `command_ring` as the second host-command transport, dispatching
195
195
  * each opcode to a bound applier. Two binding styles:
196
196
  *
197
- * - `onCommand(op, codec)` decode the slot to a `HostCommand` and run it
198
- * through the ONE `applyHostCommand` (the same dispatch the typed queue
199
- * uses). This is the generic cross-thread / wire host-write path.
200
- * - `on(op, applier)` a raw ctx-aware handler for a consumer's OWN ring ops
197
+ * - `onCommand(op, codec)`, decode the slot to a `HostCommand` and run it
198
+ * through the one `applyHostCommand` (the same dispatch the typed queue
199
+ * uses). This is the generic cross-thread and wire host-write path.
200
+ * - `on(op, applier)`, a raw ctx-aware handler for a consumer's own ring ops
201
201
  * that aren't generic host commands (e.g. the game's `spawn_unit`, which runs
202
202
  * a BFS placement + game spawn). Same drain, same ring: the "one bus".
203
203
  *
204
- * Opcodes + codecs are CONSUMER-supplied the engine ships the mechanism and the
204
+ * Opcodes + codecs are consumer-supplied, the engine ships the mechanism and the
205
205
  * `ring_*_codec` factories, never the opcode numbers (mirrors `command_dispatch`).
206
206
  *
207
- * Exactly ONE dispatcher should drain a given ring a second drain would consume
207
+ * Exactly one dispatcher should drain a given ring, a second drain would consume
208
208
  * the first's slots. The in-process apply system passes its dispatcher via
209
- * `installHostCommandSeam({ ring })`; a system that owns a timing-coupled drain
209
+ * `installHostCommandSeam({ ring })`. A system that owns a timing-coupled drain
210
210
  * point (e.g. `wave_spawn`, which must drain between the spatial-index build and
211
211
  * the flow-field rebuild) constructs one and calls `drain` itself.
212
212
  */
213
213
  export declare class HostCommandDispatcher {
214
- private readonly appliers;
214
+ private readonly _appliers;
215
215
  /** Bind a raw ctx-aware applier to `opCode`. Re-binding replaces. */
216
216
  on(opCode: number, applier: RingCommandApplier): this;
217
- /** Unbind `opCode` (M15). Returns whether a binding was removed; subsequent
217
+ /** Unbind `opCode`. Returns whether a binding was removed. Subsequent
218
218
  * slots carrying it hit the unknown-opcode path. */
219
219
  off(opCode: number): boolean;
220
220
  /** Bind a `HostCommand` codec to `opCode`: each matching slot is decoded and
221
- * run through `applyHostCommand` the SAME dispatch the typed queue uses.
222
- * A drain-time `tap` (record/replay, #702) sees the decoded command before it
221
+ * run through `applyHostCommand`, the same dispatch the typed queue uses.
222
+ * A drain-time `tap` (record and replay) sees the decoded command before it
223
223
  * applies, so ring-sourced commands share one log with the typed transport. */
224
224
  onCommand(opCode: number, codec: PayloadCodec<HostCommand>): this;
225
225
  /** Drain every pending slot, dispatching each to its bound applier. Unbound
226
- * opcodes are skipped (the read head still advances matching
227
- * `drainCommandRing` / `CommandDispatcher`). Returns slots drained. `tap`,
228
- * when present, is forwarded to each applier as the record/replay hook (#702);
229
- * only `onCommand`-bound (generic `HostCommand`) opcodes surface to it. */
226
+ * opcodes are skipped (the read head still advances, matching
227
+ * `drainCommandRing` and `CommandDispatcher`). Returns slots drained. `tap`,
228
+ * when present, is forwarded to each applier as the record and replay hook.
229
+ * Only an `onCommand`-bound (generic `HostCommand`) opcode surfaces to it. */
230
230
  drain(ctx: SystemContext, view: DataView, ringOff: number, tap?: (cmd: HostCommand) => void): number;
231
231
  }
232
232
  /**
233
- * A per-tick sink the apply system feeds drained commands into the record side
234
- * of record/replay (#702). Declared structurally HERE (not imported from
233
+ * A per-tick sink the apply system feeds drained commands into, the record side
234
+ * of record and replay. Declared structurally here (not imported from
235
235
  * `command_log.ts`) so the seam needs no dependency on the recorder: the one-way
236
236
  * edge is `command_log` → `host_commands`, never back. {@link HostCommandRecorder}
237
237
  * is the in-tree implementation.
238
238
  *
239
- * The protocol the apply system follows: at each UPDATE-phase drain it calls
240
- * `openTick(tick, dt)` to open that tick's bucket; STARTUP-phase drains skip
239
+ * The protocol the apply system follows: at each `UPDATE`-phase drain it calls
240
+ * `openTick(tick, dt)` to open that tick's bucket. A `STARTUP`-phase drain skips
241
241
  * `openTick`, so seed-time commands land in the recorder's startup bucket. Then
242
242
  * every applied command (both transports) is handed to `record`.
243
243
  */
@@ -252,33 +252,51 @@ export interface HostCommandSink {
252
252
  /** Options for {@link installHostCommandSeam}. */
253
253
  export interface HostCommandSeamOptions {
254
254
  /** Schedule phases whose head drains the queue. Default
255
- * `[PRE_STARTUP, PRE_UPDATE]` seed-time edits plus every frame. */
256
- readonly schedules?: readonly SCHEDULE[];
255
+ * `[PRE_STARTUP, PRE_UPDATE]`, seed-time edits plus every frame. Either
256
+ * spelling of a phase is accepted, so a plugin drains at the phase its own
257
+ * `addPhase` returned. A phase of the startup loop drains at seed time, and
258
+ * a recorder buckets it as startup rather than as a tick. */
259
+ readonly schedules?: readonly SchedulePhase[];
257
260
  /** Apply-system name (diagnostics). Default `"host_command_apply"`. */
258
261
  readonly name?: string;
259
- /** When provided, the apply system ALSO drains the world's SAB `command_ring`
260
- * through this dispatcher at each schedule head the cross-thread / wire
262
+ /** When provided, the apply system also drains the world's SAB `command_ring`
263
+ * through this dispatcher at each schedule head, the cross-thread and wire
261
264
  * transport, resolving to the same `applyHostCommand` as the typed queue.
262
- * The ECS `Store` always allocates a ring; if one is somehow absent
265
+ * The ECS `Store` always allocates a ring. If one is somehow absent
263
266
  * (`command_ring_off === 0`) the ring drain is a no-op. Bind opcodes with the
264
267
  * `ring_*_codec` factories, or `dispatcher.on` for a consumer's own ops. */
265
268
  readonly ring?: HostCommandDispatcher;
266
- /** When provided, every command the apply system drains from BOTH transports
267
- * (typed queue + `onCommand`-bound ring ops) is logged into this sink,
268
- * tagged with the tick + `dt`, for record/replay (#702). Off by default: an
269
+ /** When provided, every command the apply system drains, from both transports
270
+ * (typed queue and `onCommand`-bound ring ops), is logged into this sink,
271
+ * tagged with the tick and the `dt`, for record and replay. Off by default: an
269
272
  * un-recorded seam keeps the original tap-free drain and pays nothing.
270
- * {@link HostCommandRecorder} is the in-tree sink; replay it with
273
+ * {@link HostCommandRecorder} is the in-tree sink. Replay it with
271
274
  * `replayCommandLog`. */
272
275
  readonly recorder?: HostCommandSink;
273
276
  }
274
277
  /**
275
- * Tear down a seam installed by {@link installHostCommandSeam} (M15): removes
278
+ * Tear down a seam installed by {@link installHostCommandSeam}: removes
276
279
  * its apply systems from the world's schedule and clears any still-buffered
277
280
  * commands. The queue itself stays usable as a buffer, but nothing drains it
278
281
  * until a new seam is installed. No-op (returns `false`) if `queue` was not
279
282
  * produced by `installHostCommandSeam` on this world.
280
283
  */
281
284
  export declare function uninstallHostCommandSeam(ecs: ECS, queue: HostCommandQueue): boolean;
285
+ /**
286
+ * Install the write seam on `world`: registers the blessed `exclusive`
287
+ * command-apply system at the head of the given schedules and returns the
288
+ * {@link HostCommandQueue} to enqueue into. Opt-in and explicit, the write
289
+ * counterpart to the Solid plugin's `solid()` read view.
290
+ *
291
+ * Call this before adding your own systems and before `ecs.startup()`: the
292
+ * apply system must be registered first so insertion order runs it at the head
293
+ * of its phase (a phase has no dedicated "first" slot), and the PRE_STARTUP
294
+ * drain only fires if it exists before startup.
295
+ *
296
+ * Lives in the world core, and not in a plugin: unlike the read side there is
297
+ * no framework dependency to quarantine. This is pure ECS plumbing over the
298
+ * deferred buffers and `SystemContext` the core already owns.
299
+ */
282
300
  export declare function installHostCommandSeam(ecs: ECS, opts?: HostCommandSeamOptions): HostCommandQueue;
283
301
  export {};
284
302
  //# sourceMappingURL=host_commands.d.ts.map