@oasys/oecs 0.5.4 → 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 +1223 -266
  2. package/README.md +217 -112
  3. package/dist/core/ecs/access_check.d.cts +29 -29
  4. package/dist/core/ecs/access_check.d.ts +29 -29
  5. package/dist/core/ecs/access_check.d.ts.map +1 -1
  6. package/dist/core/ecs/archetype.d.cts +217 -209
  7. package/dist/core/ecs/archetype.d.ts +217 -209
  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 +33 -33
  13. package/dist/core/ecs/archetype_graph.d.ts +33 -33
  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 +26 -26
  28. package/dist/core/ecs/command_log.d.ts +26 -26
  29. package/dist/core/ecs/command_log.d.ts.map +1 -1
  30. package/dist/core/ecs/component.d.cts +43 -42
  31. package/dist/core/ecs/component.d.ts +43 -42
  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 +289 -270
  46. package/dist/core/ecs/ecs.d.ts +289 -270
  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 +20 -18
  57. package/dist/core/ecs/entity_allocator.d.ts +20 -18
  58. package/dist/core/ecs/entity_allocator.d.ts.map +1 -1
  59. package/dist/core/ecs/event.d.cts +36 -22
  60. package/dist/core/ecs/event.d.ts +36 -22
  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 +32 -32
  69. package/dist/core/ecs/frame_trace.d.ts +32 -32
  70. package/dist/core/ecs/frame_trace.d.ts.map +1 -1
  71. package/dist/core/ecs/host_commands.d.cts +103 -85
  72. package/dist/core/ecs/host_commands.d.ts +103 -85
  73. package/dist/core/ecs/host_commands.d.ts.map +1 -1
  74. package/dist/core/ecs/index.d.cts +21 -11
  75. package/dist/core/ecs/index.d.ts +21 -11
  76. package/dist/core/ecs/index.d.ts.map +1 -1
  77. package/dist/core/ecs/observer.d.cts +39 -120
  78. package/dist/core/ecs/observer.d.ts +39 -120
  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 +208 -578
  90. package/dist/core/ecs/query.d.ts +208 -578
  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 +100 -39
  102. package/dist/core/ecs/ref.d.ts +100 -39
  103. package/dist/core/ecs/ref.d.ts.map +1 -1
  104. package/dist/core/ecs/relation.d.cts +101 -182
  105. package/dist/core/ecs/relation.d.ts +101 -182
  106. package/dist/core/ecs/relation.d.ts.map +1 -1
  107. package/dist/core/ecs/resource.d.cts +13 -13
  108. package/dist/core/ecs/resource.d.ts +13 -13
  109. package/dist/core/ecs/resource_registry.d.cts +5 -5
  110. package/dist/core/ecs/resource_registry.d.ts +5 -5
  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 +91 -120
  119. package/dist/core/ecs/schedule.d.ts +91 -120
  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 +108 -51
  131. package/dist/core/ecs/sparse_store.d.ts +108 -51
  132. package/dist/core/ecs/sparse_store.d.ts.map +1 -1
  133. package/dist/core/ecs/store.d.cts +527 -473
  134. package/dist/core/ecs/store.d.ts +527 -473
  135. package/dist/core/ecs/store.d.ts.map +1 -1
  136. package/dist/core/ecs/store_layout_listener.d.cts +6 -6
  137. package/dist/core/ecs/store_layout_listener.d.ts +6 -6
  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 +146 -61
  142. package/dist/core/ecs/system.d.ts +146 -61
  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 +82 -6
  154. package/dist/core/ecs/utils/error.d.ts +82 -6
  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 +44 -44
  163. package/dist/core/store/action_ring.d.ts +44 -44
  164. package/dist/core/store/action_ring.d.ts.map +1 -1
  165. package/dist/core/store/allocator.d.cts +149 -95
  166. package/dist/core/store/allocator.d.ts +149 -95
  167. package/dist/core/store/allocator.d.ts.map +1 -1
  168. package/dist/core/store/buffer_backed_column.d.cts +17 -17
  169. package/dist/core/store/buffer_backed_column.d.ts +17 -17
  170. package/dist/core/store/buffer_backed_column.d.ts.map +1 -1
  171. package/dist/core/store/column_store.d.cts +124 -86
  172. package/dist/core/store/column_store.d.ts +124 -86
  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 +36 -39
  178. package/dist/core/store/command_ring.d.ts +36 -39
  179. package/dist/core/store/command_ring.d.ts.map +1 -1
  180. package/dist/core/store/descriptor.d.cts +34 -17
  181. package/dist/core/store/descriptor.d.ts +34 -17
  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 +36 -38
  187. package/dist/core/store/event_ring.d.ts +36 -38
  188. package/dist/core/store/event_ring.d.ts.map +1 -1
  189. package/dist/core/store/extend.d.cts +13 -7
  190. package/dist/core/store/extend.d.ts +13 -7
  191. package/dist/core/store/extend.d.ts.map +1 -1
  192. package/dist/core/store/grow.d.cts +2 -2
  193. package/dist/core/store/grow.d.ts +2 -2
  194. package/dist/core/store/grow.d.ts.map +1 -1
  195. package/dist/core/store/header.d.cts +31 -27
  196. package/dist/core/store/header.d.ts +31 -27
  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 +71 -62
  202. package/dist/core/store/layout_ops.d.ts +71 -62
  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 +12 -12
  211. package/dist/core/store/state_hash.d.ts +12 -12
  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 +15 -10
  225. package/dist/index.d.ts +15 -10
  226. package/dist/index.d.ts.map +1 -1
  227. package/dist/index.development.cjs +1 -1
  228. package/dist/index.development.js +5804 -5203
  229. package/dist/index.js +5323 -4764
  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 +54 -54
  244. package/dist/{extensions → plugins}/editor/editor.d.ts +54 -54
  245. package/dist/plugins/editor/editor.d.ts.map +1 -0
  246. package/dist/{extensions → plugins}/editor/field_handle.d.cts +12 -12
  247. package/dist/{extensions → plugins}/editor/field_handle.d.ts +12 -12
  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} +81 -64
  257. package/dist/{extensions/editor/index.js → plugins/editor.js} +81 -64
  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 +85 -97
  302. package/dist/{core/ecs → plugins/relations}/relation_service.d.ts +85 -97
  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 +16 -15
  411. package/dist/type_primitives/typed_arrays/typed_arrays.d.ts +16 -15
  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 +3 -3
  415. package/dist/version.d.ts +3 -3
  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-BlR3oZ3x.js +0 -2406
  465. package/dist/host_commands-C2cpU3yC.cjs +0 -1
  466. package/dist/internal-BoxWl4dG.js +0 -2565
  467. package/dist/internal-CGBEwfeB.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-Bs39EPh1.js +0 -150
  502. package/dist/shallow-C5YmTbtb.cjs +0 -1
  503. package/dist/shallow-CiFC70Dz.js +0 -159
  504. package/dist/shallow-DQ8aG51_.cjs +0 -1
  505. package/dist/shared-B4v0L1cw.js +0 -109
  506. package/dist/shared-DU78k0pU.cjs +0 -1
  507. package/dist/topological_sort-BDvEyb9W.cjs +0 -1
  508. package/dist/topological_sort-DK6EjpWa.js +0 -135
  509. package/dist/typed_arrays-D3NmwtCG.cjs +0 -1
  510. package/dist/typed_arrays-DIVwVy5_.js +0 -258
@@ -1,71 +1,71 @@
1
1
  /**
2
- * Action ring main-thread producer / worker-thread consumer SPSC ring
2
+ * Action ring, a main-thread producer and worker-thread consumer SPSC ring
3
3
  * for client input intents (`send_action`-shaped bytes).
4
4
  *
5
5
  * Same on-the-wire shape as `command_ring.ts`, but with two practical
6
6
  * differences:
7
7
  *
8
- * 1. Producer/consumer roles flip the action ring is main → worker,
8
+ * 1. Producer and consumer roles flip, the action ring is main → worker,
9
9
  * whereas the command ring is sim → host.
10
10
  * 2. Slot payload carries a `length` prefix because client actions are
11
11
  * variable-width (the encoded bytes that would normally go straight
12
- * to the WebSocket). `payload[0]` is the length in bytes; bytes
12
+ * to the WebSocket). `payload[0]` is the length in bytes. Bytes
13
13
  * `[1..1+length)` are the action payload itself.
14
14
  *
15
15
  * Layout (identical to command ring header):
16
16
  *
17
- * [ write_head: u32 ] monotonic; modulo `capacity_slots` for slot
17
+ * [ write_head: u32 ] monotonic. Modulo `capacity_slots` for slot
18
18
  * [ read_head: u32 ] monotonic
19
19
  * [ capacity: u32 ] slot count, power-of-two
20
- * [ overflow: u32 ] 0 = OK; 1 = ring exhausted (producer side)
20
+ * [ overflow: u32 ] 0 = OK, 1 = ring exhausted (producer side)
21
21
  * [ slot 0: 16 B ] length: u8, payload: [15]u8
22
22
  * [ slot 1: 16 B ] ...
23
23
  *
24
24
  * SPSC contract:
25
- * - Producer: main thread, from `GameNetworkClient.send_action`. Pushes
26
- * one entry per user action; `Atomics.store`s `write_head` after each.
27
- * - Consumer: sim worker, drained on each `apply_diff` / `apply_snapshot`
28
- * boundary. `Atomics.store`s `read_head` after each pop.
29
- * - Today's consumer is a no-op observer (logs / counts in DEV) the
30
- * wire path still goes main → WebSocket → server. A later change moves
31
- * the `PredictionReconciler` into the worker so the action ring becomes
32
- * load-bearing for client-side prediction.
25
+ * - Producer: the main thread, from the host's action-send call. It pushes
26
+ * one entry per user action, and `Atomics.store`s `write_head` after each.
27
+ * - Consumer: the worker, drained on each apply boundary. It `Atomics.store`s
28
+ * `read_head` after each pop.
29
+ * - Today's consumer only observes (it logs or counts in DEV), because the
30
+ * host's own send path still carries the action. A later change moves
31
+ * reconciliation into the worker, and the ring becomes load-bearing for
32
+ * client-side prediction.
33
33
  *
34
34
  * Overflow:
35
- * - If main writes a slot when `(write_head - read_head) === capacity`,
36
- * it sets `overflow = 1` and the push returns `false`. The server
37
- * send path is independent (`_transport.send(...)` ran first), so an
38
- * overflow doesn't drop the action it only drops worker
35
+ * - If the main thread writes a slot when
36
+ * `(write_head - read_head) === capacity`, it sets `overflow = 1` and the
37
+ * push returns `false`. The host's own send path is independent and ran
38
+ * first, so an overflow does not drop the action. It only drops worker
39
39
  * observability for that one entry.
40
40
  *
41
- * Atomics: the head fields (`write_head` / `read_head`) are the
42
- * cross-thread synchronization edge the producer runs on the main
43
- * thread, the consumer in the sim worker, and both alias the same
41
+ * Atomics: the head fields `write_head` and `read_head` are the
42
+ * cross-thread synchronization edge, the producer runs on the main
43
+ * thread, the consumer in the worker, and both alias the same
44
44
  * `SharedArrayBuffer`. The producer writes the slot bytes, then
45
- * `Atomics.store`s `write_head`; the consumer `Atomics.load`s
45
+ * `Atomics.store`s `write_head`. The consumer `Atomics.load`s
46
46
  * `write_head` before touching the slot, reads it, then `Atomics.store`s
47
47
  * `read_head`. These SeqCst ops establish the happens-before that a
48
48
  * plain `DataView` write does not under the JS memory model:
49
49
  * without them the worker could observe a bumped `write_head` before the
50
50
  * producer's `setUint8(len)` + payload `set()` are visible and read a
51
- * torn/stale slot, and the producer could read a stale `read_head`
51
+ * torn or stale slot, and the producer could read a stale `read_head`
52
52
  * (false overflow, or overwrite a slot mid-read). Slot payload bytes
53
- * stay on plain `DataView` / `Uint8Array` ops the head Atomics fence
54
- * them, so no per-byte atomic is needed. A future PR may still add an
55
- * `Atomics.wait/notify` pair so the worker can block between actions
56
- * instead of polling additive change, no layout shift.
53
+ * stay on plain `DataView` and `Uint8Array` ops, the head Atomics fence
54
+ * them, so no per-byte atomic is needed. A later change may still add an
55
+ * `Atomics.wait` and `Atomics.notify` pair so the worker can block between
56
+ * actions instead of polling. That is additive, with no layout shift.
57
57
  */
58
58
  /** Total bytes for the ring header. Identical to `command_ring`. */
59
59
  export declare const ACTION_RING_HEADER_BYTES = 16;
60
- /** Fixed slot size 1-byte length + 15-byte payload. */
60
+ /** Fixed slot size, 1-byte length + 15-byte payload. */
61
61
  export declare const ACTION_RING_SLOT_BYTES = 16;
62
- /** Default ring capacity in slots. Sized for ~250 ms of click-spam at 60
63
- * Hz on the high end of human input rates; 256 × 16 B = 4 KiB + 16 B
64
- * header. */
62
+ /** Default ring capacity in slots. It holds a burst of clicks at the high end
63
+ * of a human input rate, over the frames a host takes to drain it. The region
64
+ * is the slot count times `ACTION_RING_SLOT_BYTES`, plus the header. */
65
65
  export declare const ACTION_RING_DEFAULT_CAPACITY_SLOTS = 256;
66
- /** Max payload bytes per slot (slot size minus the length prefix). All
67
- * actions defined in `packages/protocol/src/actions.ts` encode to under
68
- * 8 bytes, so this is comfortably above today's max. */
66
+ /** Max payload bytes per slot, the slot size minus the length prefix. An
67
+ * action a host sends encodes to a few bytes, so the slot holds one with
68
+ * room to spare. */
69
69
  export declare const ACTION_RING_MAX_PAYLOAD_BYTES: number;
70
70
  /** Byte offsets within the ring header. Matches `command_ring` so a
71
71
  * future shared helper can normalise across both rings without per-ring
@@ -82,7 +82,7 @@ export declare class ActionRingError extends Error {
82
82
  constructor(message: string);
83
83
  }
84
84
  /** Initialise the ring header at `ringOff` in the SAB. Zeroes heads
85
- * and the overflow flag; sets `capacity_slots`. Slot bytes are left
85
+ * and the overflow flag. Sets `capacity_slots`. Slot bytes are left
86
86
  * as-is (callers normally allocate the ring on a zero-initialised SAB). */
87
87
  export declare function initActionRing(view: DataView, ringOff: number, capacitySlots: number): void;
88
88
  /** Read live ring-header fields. Heads are stored signed but returned
@@ -95,8 +95,8 @@ export declare function actionRingOverflow(view: DataView, ringOff: number): boo
95
95
  /** Pending entry count = `(write_head - read_head) mod 2^32`. */
96
96
  export declare function pendingActionCount(view: DataView, ringOff: number): number;
97
97
  /** Push an action into the ring. `payload` must be in
98
- * `[1, ACTION_RING_MAX_PAYLOAD_BYTES]`; longer payloads and **empty**
99
- * ones are an `ActionRingError` (the producer is the only caller and it
98
+ * `[1, ACTION_RING_MAX_PAYLOAD_BYTES]`. Longer payloads, and **empty**
99
+ * ones, are an `ActionRingError` (the producer is the only caller and it
100
100
  * can size its inputs ahead of time). The zero-length rejection closes the
101
101
  * lower-bound footgun: a 0-byte slot is indistinguishable from
102
102
  * `popAction`'s empty-ring sentinel (`0`), so admitting one would let it
@@ -106,29 +106,29 @@ export declare function pendingActionCount(view: DataView, ringOff: number): num
106
106
  export declare function pushAction(view: DataView, ringOff: number, payload: Uint8Array): boolean;
107
107
  /** Pop one action from the ring. Returns the byte length written into
108
108
  * `outPayload`, or `0` if the ring was empty. `outPayload` must be at
109
- * least `ACTION_RING_MAX_PAYLOAD_BYTES`; only the first `length` bytes
109
+ * least `ACTION_RING_MAX_PAYLOAD_BYTES`. Only the first `length` bytes
110
110
  * are meaningful after a non-zero return.
111
111
  *
112
- * NOTE: a `0` return is ambiguous it means "ring empty" OR "a 0-byte
112
+ * A `0` return is ambiguous. It means "ring empty" or "a 0-byte
113
113
  * slot" (the latter only reachable via ABI-skew, since `pushAction`
114
114
  * rejects empty payloads). Callers that loop must decide emptiness from
115
- * the heads (`pendingActionCount` / `write_head === read_head`), not
116
- * from this return value; see `drainActionRing`. */
115
+ * the heads, either `pendingActionCount` or `write_head === read_head`, and
116
+ * not from this return value. See `drainActionRing`. */
117
117
  export declare function popAction(view: DataView, ringOff: number, outPayload: Uint8Array): number;
118
118
  /** Drain every pending action, invoking `handler(payload)` per entry.
119
119
  * The `payload` passed to the handler is a freshly-copied
120
120
  * `Uint8Array(length)` so handlers can hold it past the next pop without
121
121
  * aliasing the scratch buffer. Returns the number of actions drained.
122
122
  *
123
- * Termination is decided from the heads (`pendingActionCount`), NOT from
124
- * `popAction`'s return value. A genuine 0-byte slot returns `0` the same
125
- * value `popAction` yields on an empty ring so terminating on `len === 0`
123
+ * Termination is decided from the heads (`pendingActionCount`), not from
124
+ * `popAction`'s return value. A genuine 0-byte slot returns `0`, the same
125
+ * value `popAction` yields on an empty ring, so terminating on `len === 0`
126
126
  * would silently consume the zero-length entry and strand everything queued
127
127
  * behind it for a tick. The heads check is SPSC-safe: this consumer
128
128
  * is the sole reader, so a non-zero pending count cannot race to empty before
129
129
  * the `popAction` below. */
130
130
  export declare function drainActionRing(view: DataView, ringOff: number, handler: (payload: Uint8Array) => void): number;
131
- /** Clear the overflow flag. The producer sets it on a failed push; the
131
+ /** Clear the overflow flag. The producer sets it on a failed push. The
132
132
  * consumer can reset it once it has observed and logged the condition,
133
133
  * so a single overflow doesn't keep firing dev assertions. */
134
134
  export declare function clearActionRingOverflow(view: DataView, ringOff: number): void;
@@ -1,71 +1,71 @@
1
1
  /**
2
- * Action ring main-thread producer / worker-thread consumer SPSC ring
2
+ * Action ring, a main-thread producer and worker-thread consumer SPSC ring
3
3
  * for client input intents (`send_action`-shaped bytes).
4
4
  *
5
5
  * Same on-the-wire shape as `command_ring.ts`, but with two practical
6
6
  * differences:
7
7
  *
8
- * 1. Producer/consumer roles flip the action ring is main → worker,
8
+ * 1. Producer and consumer roles flip, the action ring is main → worker,
9
9
  * whereas the command ring is sim → host.
10
10
  * 2. Slot payload carries a `length` prefix because client actions are
11
11
  * variable-width (the encoded bytes that would normally go straight
12
- * to the WebSocket). `payload[0]` is the length in bytes; bytes
12
+ * to the WebSocket). `payload[0]` is the length in bytes. Bytes
13
13
  * `[1..1+length)` are the action payload itself.
14
14
  *
15
15
  * Layout (identical to command ring header):
16
16
  *
17
- * [ write_head: u32 ] monotonic; modulo `capacity_slots` for slot
17
+ * [ write_head: u32 ] monotonic. Modulo `capacity_slots` for slot
18
18
  * [ read_head: u32 ] monotonic
19
19
  * [ capacity: u32 ] slot count, power-of-two
20
- * [ overflow: u32 ] 0 = OK; 1 = ring exhausted (producer side)
20
+ * [ overflow: u32 ] 0 = OK, 1 = ring exhausted (producer side)
21
21
  * [ slot 0: 16 B ] length: u8, payload: [15]u8
22
22
  * [ slot 1: 16 B ] ...
23
23
  *
24
24
  * SPSC contract:
25
- * - Producer: main thread, from `GameNetworkClient.send_action`. Pushes
26
- * one entry per user action; `Atomics.store`s `write_head` after each.
27
- * - Consumer: sim worker, drained on each `apply_diff` / `apply_snapshot`
28
- * boundary. `Atomics.store`s `read_head` after each pop.
29
- * - Today's consumer is a no-op observer (logs / counts in DEV) the
30
- * wire path still goes main → WebSocket → server. A later change moves
31
- * the `PredictionReconciler` into the worker so the action ring becomes
32
- * load-bearing for client-side prediction.
25
+ * - Producer: the main thread, from the host's action-send call. It pushes
26
+ * one entry per user action, and `Atomics.store`s `write_head` after each.
27
+ * - Consumer: the worker, drained on each apply boundary. It `Atomics.store`s
28
+ * `read_head` after each pop.
29
+ * - Today's consumer only observes (it logs or counts in DEV), because the
30
+ * host's own send path still carries the action. A later change moves
31
+ * reconciliation into the worker, and the ring becomes load-bearing for
32
+ * client-side prediction.
33
33
  *
34
34
  * Overflow:
35
- * - If main writes a slot when `(write_head - read_head) === capacity`,
36
- * it sets `overflow = 1` and the push returns `false`. The server
37
- * send path is independent (`_transport.send(...)` ran first), so an
38
- * overflow doesn't drop the action it only drops worker
35
+ * - If the main thread writes a slot when
36
+ * `(write_head - read_head) === capacity`, it sets `overflow = 1` and the
37
+ * push returns `false`. The host's own send path is independent and ran
38
+ * first, so an overflow does not drop the action. It only drops worker
39
39
  * observability for that one entry.
40
40
  *
41
- * Atomics: the head fields (`write_head` / `read_head`) are the
42
- * cross-thread synchronization edge the producer runs on the main
43
- * thread, the consumer in the sim worker, and both alias the same
41
+ * Atomics: the head fields `write_head` and `read_head` are the
42
+ * cross-thread synchronization edge, the producer runs on the main
43
+ * thread, the consumer in the worker, and both alias the same
44
44
  * `SharedArrayBuffer`. The producer writes the slot bytes, then
45
- * `Atomics.store`s `write_head`; the consumer `Atomics.load`s
45
+ * `Atomics.store`s `write_head`. The consumer `Atomics.load`s
46
46
  * `write_head` before touching the slot, reads it, then `Atomics.store`s
47
47
  * `read_head`. These SeqCst ops establish the happens-before that a
48
48
  * plain `DataView` write does not under the JS memory model:
49
49
  * without them the worker could observe a bumped `write_head` before the
50
50
  * producer's `setUint8(len)` + payload `set()` are visible and read a
51
- * torn/stale slot, and the producer could read a stale `read_head`
51
+ * torn or stale slot, and the producer could read a stale `read_head`
52
52
  * (false overflow, or overwrite a slot mid-read). Slot payload bytes
53
- * stay on plain `DataView` / `Uint8Array` ops the head Atomics fence
54
- * them, so no per-byte atomic is needed. A future PR may still add an
55
- * `Atomics.wait/notify` pair so the worker can block between actions
56
- * instead of polling additive change, no layout shift.
53
+ * stay on plain `DataView` and `Uint8Array` ops, the head Atomics fence
54
+ * them, so no per-byte atomic is needed. A later change may still add an
55
+ * `Atomics.wait` and `Atomics.notify` pair so the worker can block between
56
+ * actions instead of polling. That is additive, with no layout shift.
57
57
  */
58
58
  /** Total bytes for the ring header. Identical to `command_ring`. */
59
59
  export declare const ACTION_RING_HEADER_BYTES = 16;
60
- /** Fixed slot size 1-byte length + 15-byte payload. */
60
+ /** Fixed slot size, 1-byte length + 15-byte payload. */
61
61
  export declare const ACTION_RING_SLOT_BYTES = 16;
62
- /** Default ring capacity in slots. Sized for ~250 ms of click-spam at 60
63
- * Hz on the high end of human input rates; 256 × 16 B = 4 KiB + 16 B
64
- * header. */
62
+ /** Default ring capacity in slots. It holds a burst of clicks at the high end
63
+ * of a human input rate, over the frames a host takes to drain it. The region
64
+ * is the slot count times `ACTION_RING_SLOT_BYTES`, plus the header. */
65
65
  export declare const ACTION_RING_DEFAULT_CAPACITY_SLOTS = 256;
66
- /** Max payload bytes per slot (slot size minus the length prefix). All
67
- * actions defined in `packages/protocol/src/actions.ts` encode to under
68
- * 8 bytes, so this is comfortably above today's max. */
66
+ /** Max payload bytes per slot, the slot size minus the length prefix. An
67
+ * action a host sends encodes to a few bytes, so the slot holds one with
68
+ * room to spare. */
69
69
  export declare const ACTION_RING_MAX_PAYLOAD_BYTES: number;
70
70
  /** Byte offsets within the ring header. Matches `command_ring` so a
71
71
  * future shared helper can normalise across both rings without per-ring
@@ -82,7 +82,7 @@ export declare class ActionRingError extends Error {
82
82
  constructor(message: string);
83
83
  }
84
84
  /** Initialise the ring header at `ringOff` in the SAB. Zeroes heads
85
- * and the overflow flag; sets `capacity_slots`. Slot bytes are left
85
+ * and the overflow flag. Sets `capacity_slots`. Slot bytes are left
86
86
  * as-is (callers normally allocate the ring on a zero-initialised SAB). */
87
87
  export declare function initActionRing(view: DataView, ringOff: number, capacitySlots: number): void;
88
88
  /** Read live ring-header fields. Heads are stored signed but returned
@@ -95,8 +95,8 @@ export declare function actionRingOverflow(view: DataView, ringOff: number): boo
95
95
  /** Pending entry count = `(write_head - read_head) mod 2^32`. */
96
96
  export declare function pendingActionCount(view: DataView, ringOff: number): number;
97
97
  /** Push an action into the ring. `payload` must be in
98
- * `[1, ACTION_RING_MAX_PAYLOAD_BYTES]`; longer payloads and **empty**
99
- * ones are an `ActionRingError` (the producer is the only caller and it
98
+ * `[1, ACTION_RING_MAX_PAYLOAD_BYTES]`. Longer payloads, and **empty**
99
+ * ones, are an `ActionRingError` (the producer is the only caller and it
100
100
  * can size its inputs ahead of time). The zero-length rejection closes the
101
101
  * lower-bound footgun: a 0-byte slot is indistinguishable from
102
102
  * `popAction`'s empty-ring sentinel (`0`), so admitting one would let it
@@ -106,29 +106,29 @@ export declare function pendingActionCount(view: DataView, ringOff: number): num
106
106
  export declare function pushAction(view: DataView, ringOff: number, payload: Uint8Array): boolean;
107
107
  /** Pop one action from the ring. Returns the byte length written into
108
108
  * `outPayload`, or `0` if the ring was empty. `outPayload` must be at
109
- * least `ACTION_RING_MAX_PAYLOAD_BYTES`; only the first `length` bytes
109
+ * least `ACTION_RING_MAX_PAYLOAD_BYTES`. Only the first `length` bytes
110
110
  * are meaningful after a non-zero return.
111
111
  *
112
- * NOTE: a `0` return is ambiguous it means "ring empty" OR "a 0-byte
112
+ * A `0` return is ambiguous. It means "ring empty" or "a 0-byte
113
113
  * slot" (the latter only reachable via ABI-skew, since `pushAction`
114
114
  * rejects empty payloads). Callers that loop must decide emptiness from
115
- * the heads (`pendingActionCount` / `write_head === read_head`), not
116
- * from this return value; see `drainActionRing`. */
115
+ * the heads, either `pendingActionCount` or `write_head === read_head`, and
116
+ * not from this return value. See `drainActionRing`. */
117
117
  export declare function popAction(view: DataView, ringOff: number, outPayload: Uint8Array): number;
118
118
  /** Drain every pending action, invoking `handler(payload)` per entry.
119
119
  * The `payload` passed to the handler is a freshly-copied
120
120
  * `Uint8Array(length)` so handlers can hold it past the next pop without
121
121
  * aliasing the scratch buffer. Returns the number of actions drained.
122
122
  *
123
- * Termination is decided from the heads (`pendingActionCount`), NOT from
124
- * `popAction`'s return value. A genuine 0-byte slot returns `0` the same
125
- * value `popAction` yields on an empty ring so terminating on `len === 0`
123
+ * Termination is decided from the heads (`pendingActionCount`), not from
124
+ * `popAction`'s return value. A genuine 0-byte slot returns `0`, the same
125
+ * value `popAction` yields on an empty ring, so terminating on `len === 0`
126
126
  * would silently consume the zero-length entry and strand everything queued
127
127
  * behind it for a tick. The heads check is SPSC-safe: this consumer
128
128
  * is the sole reader, so a non-zero pending count cannot race to empty before
129
129
  * the `popAction` below. */
130
130
  export declare function drainActionRing(view: DataView, ringOff: number, handler: (payload: Uint8Array) => void): number;
131
- /** Clear the overflow flag. The producer sets it on a failed push; the
131
+ /** Clear the overflow flag. The producer sets it on a failed push. The
132
132
  * consumer can reset it once it has observed and logged the condition,
133
133
  * so a single overflow doesn't keep firing dev assertions. */
134
134
  export declare function clearActionRingOverflow(view: DataView, ringOff: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"action_ring.d.ts","sourceRoot":"","sources":["../../../src/core/store/action_ring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH,oEAAoE;AACpE,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,yDAAyD;AACzD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC;;aAEa;AACb,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD;;wDAEwD;AACxD,eAAO,MAAM,6BAA6B,QAA6B,CAAC;AAExE;;iBAEiB;AACjB,eAAO,MAAM,0BAA0B;;;;;CAK7B,CAAC;AAwBX,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE7D;AAMD,qBAAa,eAAgB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI3B;AAED;;2EAE2E;AAC3E,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAiB3F;AAED;;mDAEmD;AACnD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3E;AACD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1E;AACD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/E;AACD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE3E;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;;;;;;;0CAQ0C;AAC1C,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAoCxF;AAED;;;;;;;;;oDASoD;AACpD,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAwBzF;AAED;;;;;;;;;;;4BAW4B;AAC5B,wBAAgB,eAAe,CAC9B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GACpC,MAAM,CAUR;AAED;;8DAE8D;AAC9D,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7E"}
1
+ {"version":3,"file":"action_ring.d.ts","sourceRoot":"","sources":["../../../src/core/store/action_ring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH,oEAAoE;AACpE,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,wDAAwD;AACxD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC;;wEAEwE;AACxE,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD;;oBAEoB;AACpB,eAAO,MAAM,6BAA6B,QAA6B,CAAC;AAExE;;iBAEiB;AACjB,eAAO,MAAM,0BAA0B;;;;;CAK7B,CAAC;AAwBX,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE7D;AAMD,qBAAa,eAAgB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI3B;AAED;;2EAE2E;AAC3E,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAiB3F;AAED;;mDAEmD;AACnD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3E;AACD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1E;AACD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/E;AACD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE3E;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;;;;;;;0CAQ0C;AAC1C,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CA0CxF;AAED;;;;;;;;;wDASwD;AACxD,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CA4BzF;AAED;;;;;;;;;;;4BAW4B;AAC5B,wBAAgB,eAAe,CAC9B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GACpC,MAAM,CAUR;AAED;;8DAE8D;AAC9D,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7E"}