@voltro/plugin-rooms 0.0.0-stage → 0.87.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 (495) hide show
  1. package/CHANGELOG.md +24329 -0
  2. package/LICENSE +61 -0
  3. package/README.md +9204 -2
  4. package/SECURITY.md +56 -0
  5. package/THIRD-PARTY-NOTICES.md +11322 -0
  6. package/dist/actor.js +1474 -0
  7. package/dist/apiBinding.js +678 -0
  8. package/dist/apiRegistryBinding.js +399 -0
  9. package/dist/apiReservations.js +433 -0
  10. package/dist/baselines.js +73 -0
  11. package/dist/bots.d.ts +1485 -0
  12. package/dist/bots.js +563 -0
  13. package/dist/catalog.js +80 -0
  14. package/dist/checkpointJson.js +24 -0
  15. package/dist/checkpointStore.js +386 -0
  16. package/dist/client.js +56 -0
  17. package/dist/clockSync.js +51 -0
  18. package/dist/collision.js +156 -0
  19. package/dist/commandDelivery.js +101 -0
  20. package/dist/commandRecord.js +11 -0
  21. package/dist/commandWithdrawal.js +183 -0
  22. package/dist/connection.js +497 -0
  23. package/dist/controlCarrier.js +375 -0
  24. package/dist/controlRegistry.js +79 -0
  25. package/dist/controlTarget.js +45 -0
  26. package/dist/controlTransport.js +574 -0
  27. package/dist/developmentBinding.js +113 -0
  28. package/dist/directory.js +323 -0
  29. package/dist/directoryProjection.js +117 -0
  30. package/dist/errors.d.ts +125 -0
  31. package/dist/errors.js +53 -0
  32. package/dist/fixed.d.ts +284 -0
  33. package/dist/fixed.js +10 -0
  34. package/dist/fixed32.js +134 -0
  35. package/dist/fixedCollision.js +60 -0
  36. package/dist/fixedCollision32.js +109 -0
  37. package/dist/fixedMath.js +56 -0
  38. package/dist/fixedRaw.js +11 -0
  39. package/dist/fixedSlabs.js +34 -0
  40. package/dist/fixedTrig.js +48 -0
  41. package/dist/fixedTrig32.js +38 -0
  42. package/dist/fixedVectors.js +113 -0
  43. package/dist/fixedVectors32.js +95 -0
  44. package/dist/fixedWide.js +50 -0
  45. package/dist/fixedWords.js +46 -0
  46. package/dist/gateway.js +57 -0
  47. package/dist/geometry-retention-app/rooms.geometryJournalRetention.workflow.server.tsx +4 -0
  48. package/dist/geometry-retention-app/rooms.geometryJournalRetention.workflow.tsx +14 -0
  49. package/dist/geometry-worker/worker.d.mts +2 -0
  50. package/dist/geometry-worker/worker.mjs +50 -0
  51. package/dist/geometry.d.ts +2249 -0
  52. package/dist/geometry.js +40 -0
  53. package/dist/geometryActivation.js +82 -0
  54. package/dist/geometryActorInventory.js +108 -0
  55. package/dist/geometryAdminClient.js +87 -0
  56. package/dist/geometryAdminData.js +32 -0
  57. package/dist/geometryAdminFixtures.js +50 -0
  58. package/dist/geometryAdminPorts.js +5 -0
  59. package/dist/geometryAdminRpc.js +58 -0
  60. package/dist/geometryAdminRpcRoutes.js +49 -0
  61. package/dist/geometryAdminSchemas.js +39 -0
  62. package/dist/geometryAdministration.js +190 -0
  63. package/dist/geometryAdministrationPorts.js +5 -0
  64. package/dist/geometryApiBinding.js +165 -0
  65. package/dist/geometryAppStorage.js +58 -0
  66. package/dist/geometryArtifacts.js +198 -0
  67. package/dist/geometryAssetBundle.js +117 -0
  68. package/dist/geometryAssetClient.js +25 -0
  69. package/dist/geometryAssetData.js +106 -0
  70. package/dist/geometryAssetHttp.js +123 -0
  71. package/dist/geometryAssetPorts.js +5 -0
  72. package/dist/geometryAssetRpc.js +30 -0
  73. package/dist/geometryAssetRpcRoutes.js +40 -0
  74. package/dist/geometryAssetStorageGrant.js +103 -0
  75. package/dist/geometryBoxOverlap.js +110 -0
  76. package/dist/geometryCatalogueDigest.js +111 -0
  77. package/dist/geometryCellCoverage.js +85 -0
  78. package/dist/geometryCellLoader.js +28 -0
  79. package/dist/geometryChannel.js +134 -0
  80. package/dist/geometryChunkHttp.js +54 -0
  81. package/dist/geometryChunkLeases.js +22 -0
  82. package/dist/geometryClient.d.ts +1429 -0
  83. package/dist/geometryClient.js +149 -0
  84. package/dist/geometryClientChunks.js +330 -0
  85. package/dist/geometryClientDelta.js +25 -0
  86. package/dist/geometryClientHttp.js +37 -0
  87. package/dist/geometryClientInterest.js +109 -0
  88. package/dist/geometryClientStatic.js +34 -0
  89. package/dist/geometryCms.d.ts +763 -0
  90. package/dist/geometryCms.js +217 -0
  91. package/dist/geometryCommitCoordinator.js +241 -0
  92. package/dist/geometryCompactionFixture.js +84 -0
  93. package/dist/geometryCompactionStrategies.js +38 -0
  94. package/dist/geometryConnectionClient.js +23 -0
  95. package/dist/geometryDerivationFixtures.js +141 -0
  96. package/dist/geometryDerivationStrategies.js +27 -0
  97. package/dist/geometryDigest.js +13 -0
  98. package/dist/geometryEditChannel.js +70 -0
  99. package/dist/geometryEditIngress.js +263 -0
  100. package/dist/geometryEdits.js +366 -0
  101. package/dist/geometryEnvelope.js +41 -0
  102. package/dist/geometryGridRaycast.js +92 -0
  103. package/dist/geometryGridSweep.js +92 -0
  104. package/dist/geometryHeightfield.js +166 -0
  105. package/dist/geometryHeightfieldRaycast.js +74 -0
  106. package/dist/geometryHeightfieldSweep.js +85 -0
  107. package/dist/geometryHeightfieldVolume.js +45 -0
  108. package/dist/geometryHost.js +322 -0
  109. package/dist/geometryHostDirectory.js +207 -0
  110. package/dist/geometryHostMutations.js +137 -0
  111. package/dist/geometryHostStreams.js +124 -0
  112. package/dist/geometryHttpBody.js +76 -0
  113. package/dist/geometryHttpRoutes.js +112 -0
  114. package/dist/geometryImportGltf.js +300 -0
  115. package/dist/geometryImportLdtk.js +54 -0
  116. package/dist/geometryImportPng.js +144 -0
  117. package/dist/geometryImportPublication.js +67 -0
  118. package/dist/geometryImportTiled.js +39 -0
  119. package/dist/geometryImportTiles.js +136 -0
  120. package/dist/geometryImportVox.js +130 -0
  121. package/dist/geometryImportedSource.js +101 -0
  122. package/dist/geometryInspectEndpoint.js +248 -0
  123. package/dist/geometryInspection.js +92 -0
  124. package/dist/geometryInstall.js +121 -0
  125. package/dist/geometryJournalArchiveData.js +21 -0
  126. package/dist/geometryJournalArchiveIndex.js +330 -0
  127. package/dist/geometryJournalArchiveTable.js +21 -0
  128. package/dist/geometryJournalCompaction.js +100 -0
  129. package/dist/geometryJournalPatch.js +47 -0
  130. package/dist/geometryJournalRetention.js +112 -0
  131. package/dist/geometryJournalRetentionSchemas.js +36 -0
  132. package/dist/geometryJournalRetentionSweep.js +112 -0
  133. package/dist/geometryJournalRetentionWorkflow.js +28 -0
  134. package/dist/geometryJournalRetentionWorkflowData.js +31 -0
  135. package/dist/geometryJournalStorage.js +148 -0
  136. package/dist/geometryLoader.js +118 -0
  137. package/dist/geometryManifest.js +113 -0
  138. package/dist/geometryManifestChannel.js +93 -0
  139. package/dist/geometryManifestClient.js +122 -0
  140. package/dist/geometryManifestData.js +49 -0
  141. package/dist/geometryManifestPorts.js +5 -0
  142. package/dist/geometryManifestPublication.js +109 -0
  143. package/dist/geometryManifestSource.js +68 -0
  144. package/dist/geometryMigrationJournal.js +14 -0
  145. package/dist/geometryMigrationStrategies.js +7 -0
  146. package/dist/geometryMigrations.js +323 -0
  147. package/dist/geometryNativeMetadata.js +52 -0
  148. package/dist/geometryPatch.js +170 -0
  149. package/dist/geometryPersistence.js +449 -0
  150. package/dist/geometryPersistenceCapture.js +69 -0
  151. package/dist/geometryPersistenceData.js +140 -0
  152. package/dist/geometryPersistencePorts.js +5 -0
  153. package/dist/geometryPlayerAdmission.js +34 -0
  154. package/dist/geometryPlayerEditOwner.js +265 -0
  155. package/dist/geometryPlayerEdits.js +49 -0
  156. package/dist/geometryPrepared.js +188 -0
  157. package/dist/geometryPrivacyFence.js +24 -0
  158. package/dist/geometryProceduralPublication.js +91 -0
  159. package/dist/geometryProceduralWorker.js +164 -0
  160. package/dist/geometryPublication.js +110 -0
  161. package/dist/geometryRayAlgebra.js +116 -0
  162. package/dist/geometryReadClient.js +157 -0
  163. package/dist/geometryReadPorts.js +5 -0
  164. package/dist/geometryReadRpc.js +27 -0
  165. package/dist/geometryReadRpcRoutes.js +47 -0
  166. package/dist/geometryReliablePublication.js +82 -0
  167. package/dist/geometryReloadPorts.js +46 -0
  168. package/dist/geometryReloadSource.js +278 -0
  169. package/dist/geometryRenderCache.js +165 -0
  170. package/dist/geometryRenderLod.js +102 -0
  171. package/dist/geometryRollback.js +125 -0
  172. package/dist/geometryRollbackCoordinator.js +203 -0
  173. package/dist/geometryRollbackPorts.js +46 -0
  174. package/dist/geometryRollbackSource.js +209 -0
  175. package/dist/geometryRollbackStore.js +198 -0
  176. package/dist/geometrySchemas.js +27 -0
  177. package/dist/geometryServer.d.ts +2766 -0
  178. package/dist/geometryServer.js +62 -0
  179. package/dist/geometryShapeRaycast.js +111 -0
  180. package/dist/geometryShapeSegments.js +34 -0
  181. package/dist/geometryShapes.js +223 -0
  182. package/dist/geometrySnapshot.js +76 -0
  183. package/dist/geometrySnapshotChannel.js +160 -0
  184. package/dist/geometrySnapshotClient.js +159 -0
  185. package/dist/geometrySnapshotPreparation.js +76 -0
  186. package/dist/geometrySnapshotServer.js +191 -0
  187. package/dist/geometrySqlOwner.js +21 -0
  188. package/dist/geometryStorage.js +127 -0
  189. package/dist/geometryStorageGrant.js +69 -0
  190. package/dist/geometryStorageIdentity.js +9 -0
  191. package/dist/geometryTileArtifact.js +10 -0
  192. package/dist/geometryTileCodec.js +194 -0
  193. package/dist/geometryTileCollision.js +96 -0
  194. package/dist/geometryTileNavigation.js +128 -0
  195. package/dist/geometryTileView.js +35 -0
  196. package/dist/geometryVersionActivation.js +114 -0
  197. package/dist/geometryVersionClient.js +238 -0
  198. package/dist/geometryVersionCompare.js +40 -0
  199. package/dist/geometryVersionMigration.js +106 -0
  200. package/dist/geometryVoxel.js +253 -0
  201. package/dist/geometryWorldEntitySubject.js +32 -0
  202. package/dist/geometryWorldExtent.js +12 -0
  203. package/dist/geometryWorldMetadata.js +38 -0
  204. package/dist/geometryWorldStrategyFixtures.js +127 -0
  205. package/dist/geometryWorldView.js +307 -0
  206. package/dist/host.js +128 -0
  207. package/dist/hostBinding.js +277 -0
  208. package/dist/hostCellObservation.js +114 -0
  209. package/dist/hostClientCapacity.js +90 -0
  210. package/dist/hostCommandScope.js +64 -0
  211. package/dist/hostController.js +3094 -0
  212. package/dist/hostDeployment.js +65 -0
  213. package/dist/hostDrain.js +152 -0
  214. package/dist/hostDrainPorts.js +5 -0
  215. package/dist/hostDriver.js +179 -0
  216. package/dist/hostLane.js +288 -0
  217. package/dist/hostListener.js +79 -0
  218. package/dist/hostListenerBinding.js +19 -0
  219. package/dist/hostLoopObservation.js +90 -0
  220. package/dist/hostMetrics.js +56 -0
  221. package/dist/hostRegistryBinding.js +418 -0
  222. package/dist/hostSelection.js +16 -0
  223. package/dist/hostShutdown.js +47 -0
  224. package/dist/hostTurnObservation.js +53 -0
  225. package/dist/identities.js +4 -0
  226. package/dist/index.d.ts +8632 -0
  227. package/dist/index.js +232 -0
  228. package/dist/inputReceipts.js +63 -0
  229. package/dist/inputRedundancy.js +55 -0
  230. package/dist/inspect.js +238 -0
  231. package/dist/lockstep.d.ts +436 -0
  232. package/dist/lockstep.js +382 -0
  233. package/dist/lockstepAdmission.js +262 -0
  234. package/dist/lockstepAdmissionCodec.js +94 -0
  235. package/dist/lockstepAdmissionPorts.js +5 -0
  236. package/dist/lockstepClientSession.js +578 -0
  237. package/dist/lockstepDefinition.js +148 -0
  238. package/dist/lockstepHostLoop.js +243 -0
  239. package/dist/lockstepInitialAdmission.js +67 -0
  240. package/dist/lockstepInitialStrategyFixtures.js +45 -0
  241. package/dist/lockstepJournal.js +395 -0
  242. package/dist/lockstepJournalCodec.js +254 -0
  243. package/dist/lockstepJournalPorts.js +5 -0
  244. package/dist/lockstepJournalRebuild.js +208 -0
  245. package/dist/lockstepJournalRows.js +57 -0
  246. package/dist/lockstepMembers.js +131 -0
  247. package/dist/lockstepMessages.js +47 -0
  248. package/dist/lockstepOwnedRoom.js +764 -0
  249. package/dist/lockstepPolicies.js +84 -0
  250. package/dist/lockstepReact.js +47 -0
  251. package/dist/lockstepRecoveryTruth.js +121 -0
  252. package/dist/lockstepRosterConfig.js +32 -0
  253. package/dist/lockstepSeed.js +12 -0
  254. package/dist/lockstepSeedFixture.js +20 -0
  255. package/dist/lockstepServer.d.ts +3897 -0
  256. package/dist/lockstepServer.js +325 -0
  257. package/dist/lockstepServerConfig.js +101 -0
  258. package/dist/lockstepServerRoles.js +403 -0
  259. package/dist/lockstepServerStrategyFixtures.js +33 -0
  260. package/dist/lockstepStrategies.js +6 -0
  261. package/dist/lockstepStrategyFixtures.js +137 -0
  262. package/dist/lockstepTerminal.js +90 -0
  263. package/dist/lockstepTerminalPorts.js +5 -0
  264. package/dist/lockstepTransport.js +773 -0
  265. package/dist/lockstepTransportConfig.js +32 -0
  266. package/dist/lockstepWireRoster.js +34 -0
  267. package/dist/matchRoomProvider.js +32 -0
  268. package/dist/matchRooms.js +19 -0
  269. package/dist/membershipObserver.js +47 -0
  270. package/dist/moderation.js +98 -0
  271. package/dist/movementSpecials.js +104 -0
  272. package/dist/ownership.js +17 -0
  273. package/dist/ownershipWithdrawal.js +18 -0
  274. package/dist/pcg32.js +96 -0
  275. package/dist/ports.d.ts +1241 -0
  276. package/dist/ports.js +11 -0
  277. package/dist/quaternion.js +70 -0
  278. package/dist/react.d.ts +406 -0
  279. package/dist/react.js +109 -0
  280. package/dist/reaper-app/rooms.reaper.workflow.server.tsx +5 -0
  281. package/dist/reaper-app/rooms.reaper.workflow.tsx +13 -0
  282. package/dist/reaper.js +243 -0
  283. package/dist/reaperSchemas.js +42 -0
  284. package/dist/reaperWorkflow.js +70 -0
  285. package/dist/recovery.js +189 -0
  286. package/dist/recoverySeats.js +26 -0
  287. package/dist/replay.d.ts +273 -0
  288. package/dist/replay.js +485 -0
  289. package/dist/replayPorts.js +5 -0
  290. package/dist/replayRecording.js +67 -0
  291. package/dist/replaySchema.js +157 -0
  292. package/dist/replayStorage.d.ts +149 -0
  293. package/dist/replayStorage.js +485 -0
  294. package/dist/reservationBatch.js +422 -0
  295. package/dist/reservationSchemas.js +17 -0
  296. package/dist/reservations.js +259 -0
  297. package/dist/reservePort.js +69 -0
  298. package/dist/resolvedOptions.js +4 -0
  299. package/dist/room.d.ts +1006 -0
  300. package/dist/room.js +284 -0
  301. package/dist/roomAccessSweep.js +95 -0
  302. package/dist/roomAppCommandControl.js +59 -0
  303. package/dist/roomAuthoringStrategy.js +17 -0
  304. package/dist/roomErasure.js +198 -0
  305. package/dist/roomPoolRuntimeDefaults.js +24 -0
  306. package/dist/roomPoolSelection.js +19 -0
  307. package/dist/roomPoolTopology.js +212 -0
  308. package/dist/rpc.d.ts +551 -0
  309. package/dist/rpc.js +112 -0
  310. package/dist/rpcClient.js +152 -0
  311. package/dist/rpcRoutes.js +28 -0
  312. package/dist/runtime.js +1123 -0
  313. package/dist/schemaHistory.js +98 -0
  314. package/dist/seatStore.js +151 -0
  315. package/dist/seatStrategyFixtures.js +52 -0
  316. package/dist/seatSubject.js +32 -0
  317. package/dist/seats.js +130 -0
  318. package/dist/serverSession.js +811 -0
  319. package/dist/serverSessionConfig.js +43 -0
  320. package/dist/sessionAdmission.js +53 -0
  321. package/dist/sidecarAdmission.js +103 -0
  322. package/dist/sidecarConfig.js +116 -0
  323. package/dist/sidecarConfigPublication.js +64 -0
  324. package/dist/sidecarHostListener.js +208 -0
  325. package/dist/sidecarIpc.js +205 -0
  326. package/dist/sidecarPeer.js +310 -0
  327. package/dist/sidecarProcessPort.js +28 -0
  328. package/dist/sidecarRuntime.js +168 -0
  329. package/dist/sidecarSelection.js +142 -0
  330. package/dist/sidecarWire.js +178 -0
  331. package/dist/sidecarWrites.js +163 -0
  332. package/dist/simulation.d.ts +391 -0
  333. package/dist/simulation.js +282 -0
  334. package/dist/simulationAuthoring.js +29 -0
  335. package/dist/simulationBytes.js +27 -0
  336. package/dist/simulationConformance.js +305 -0
  337. package/dist/simulationInputHistoryCapture.js +35 -0
  338. package/dist/simulationInputHistoryWire.js +193 -0
  339. package/dist/simulationOptionsWire.js +78 -0
  340. package/dist/simulationRecoveryWire.js +134 -0
  341. package/dist/simulationReplay.js +127 -0
  342. package/dist/simulationSnapshotWire.js +112 -0
  343. package/dist/simulationState.js +178 -0
  344. package/dist/snapshotBlob.js +126 -0
  345. package/dist/snapshotBlobCleanup.js +93 -0
  346. package/dist/snapshotBlobIndex.js +38 -0
  347. package/dist/snapshotBudget.js +80 -0
  348. package/dist/snapshotChain.js +185 -0
  349. package/dist/snapshotErasure.js +172 -0
  350. package/dist/snapshotInspection.js +105 -0
  351. package/dist/snapshotSegmentBlobs.js +58 -0
  352. package/dist/snapshotUploads.js +166 -0
  353. package/dist/socketTransport.js +253 -0
  354. package/dist/spatial.js +104 -0
  355. package/dist/spectatorPolicy.js +26 -0
  356. package/dist/spectatorProducer.js +89 -0
  357. package/dist/startFailureCause.js +4 -0
  358. package/dist/stateCodec.js +658 -0
  359. package/dist/strategies.d.ts +210 -0
  360. package/dist/strategies.js +8 -0
  361. package/dist/strategiesServer.d.ts +286 -0
  362. package/dist/strategiesServer.js +11 -0
  363. package/dist/strategyFixtures.js +182 -0
  364. package/dist/streamFraming.js +122 -0
  365. package/dist/streamTransport.js +266 -0
  366. package/dist/subjectAdmission.js +50 -0
  367. package/dist/subjectPrivacy.js +281 -0
  368. package/dist/subjectPrivacyBinding.js +90 -0
  369. package/dist/systemManifest.js +182 -0
  370. package/dist/tables.js +159 -0
  371. package/dist/testHarness.js +89 -0
  372. package/dist/testing.d.ts +3684 -0
  373. package/dist/testing.js +221 -0
  374. package/dist/testingPorts.js +271 -0
  375. package/dist/testingServer.d.ts +4060 -0
  376. package/dist/testingServer.js +18 -0
  377. package/dist/transform.d.ts +692 -0
  378. package/dist/transform.js +217 -0
  379. package/dist/transform3d.js +118 -0
  380. package/dist/transformCollection.js +24 -0
  381. package/dist/transformCollection3d.js +24 -0
  382. package/dist/transformCollectionCore.js +156 -0
  383. package/dist/transformFrames.js +121 -0
  384. package/dist/transformPrediction3d.js +127 -0
  385. package/dist/transformRules.js +123 -0
  386. package/dist/transformSchemas.js +20 -0
  387. package/dist/transport.js +32 -0
  388. package/dist/transportAuthoring.js +29 -0
  389. package/dist/transportCleanup.js +22 -0
  390. package/dist/transportConformance.js +124 -0
  391. package/dist/transportConnector.js +82 -0
  392. package/dist/transportEndpoints.js +38 -0
  393. package/dist/transportsServer.d.ts +5515 -0
  394. package/dist/transportsServer.js +6 -0
  395. package/dist/viewProjection.js +16 -0
  396. package/dist/web.d.ts +2286 -0
  397. package/dist/web.js +518 -0
  398. package/dist/webTransportClient.js +173 -0
  399. package/dist/wire.d.ts +992 -0
  400. package/dist/wire.js +492 -0
  401. package/dist/withdrawalPort.js +28 -0
  402. package/dist/world.d.ts +1894 -0
  403. package/dist/world.js +333 -0
  404. package/dist/worldActorReceipts.js +48 -0
  405. package/dist/worldActorTransferSnapshot.js +14 -0
  406. package/dist/worldAdmissionPending.js +8 -0
  407. package/dist/worldBoundaryCoordinator.js +148 -0
  408. package/dist/worldCatalog.js +81 -0
  409. package/dist/worldCellAllocation.js +203 -0
  410. package/dist/worldCellDestination.js +68 -0
  411. package/dist/worldCells.js +489 -0
  412. package/dist/worldChange.js +32 -0
  413. package/dist/worldClient.js +664 -0
  414. package/dist/worldClientControl.js +141 -0
  415. package/dist/worldClientPendingInput.js +16 -0
  416. package/dist/worldClientRpc.js +133 -0
  417. package/dist/worldClientRpcRoutes.js +43 -0
  418. package/dist/worldClientSchemas.js +28 -0
  419. package/dist/worldCommands.js +140 -0
  420. package/dist/worldData.js +42 -0
  421. package/dist/worldDefaultBinding.js +377 -0
  422. package/dist/worldDefaultGroupAdmission.js +82 -0
  423. package/dist/worldDefaultGroupAppServices.js +31 -0
  424. package/dist/worldDefaultGroupCompensation.js +109 -0
  425. package/dist/worldDefaultGroupContinuation.js +96 -0
  426. package/dist/worldDefaultGroupControl.js +72 -0
  427. package/dist/worldDefaultGroupMembers.js +85 -0
  428. package/dist/worldDefaultGroups.js +21 -0
  429. package/dist/worldDefaultPending.js +79 -0
  430. package/dist/worldDefaultService.js +245 -0
  431. package/dist/worldEntities.js +2980 -0
  432. package/dist/worldEntityCodec.js +21 -0
  433. package/dist/worldEntityHandoffView.js +154 -0
  434. package/dist/worldGeometry.js +170 -0
  435. package/dist/worldGhostAdmission.js +65 -0
  436. package/dist/worldGhostDestination.js +118 -0
  437. package/dist/worldGhostGateway.js +132 -0
  438. package/dist/worldGhostHandshake.js +108 -0
  439. package/dist/worldGhostHost.js +42 -0
  440. package/dist/worldGhostIngress.js +132 -0
  441. package/dist/worldGhostNeighborhood.js +70 -0
  442. package/dist/worldGhostNeighbors.js +86 -0
  443. package/dist/worldGhostOutbound.js +110 -0
  444. package/dist/worldGhostPublisher.js +216 -0
  445. package/dist/worldGhostReceiver.js +213 -0
  446. package/dist/worldGhostSender.js +146 -0
  447. package/dist/worldGhostSocket.js +78 -0
  448. package/dist/worldGhostWire.js +172 -0
  449. package/dist/worldGroupCommand.js +49 -0
  450. package/dist/worldGroupDeadline.js +115 -0
  451. package/dist/worldGroupPreparation.js +115 -0
  452. package/dist/worldGroupReadyControl.js +128 -0
  453. package/dist/worldGroupSupervisor.js +120 -0
  454. package/dist/worldHandoffMetrics.js +59 -0
  455. package/dist/worldHandoffView.js +100 -0
  456. package/dist/worldHostSource.js +69 -0
  457. package/dist/worldInspectEndpoint.js +250 -0
  458. package/dist/worldInspection.js +109 -0
  459. package/dist/worldInstanceAdmission.js +31 -0
  460. package/dist/worldInstanceAllocation.js +116 -0
  461. package/dist/worldInstanceDestination.js +64 -0
  462. package/dist/worldInstanceExpiry.js +282 -0
  463. package/dist/worldInstanceExpirySupervisor.js +88 -0
  464. package/dist/worldInstanceLifecycle.js +103 -0
  465. package/dist/worldInstanceState.js +52 -0
  466. package/dist/worldInstances.js +478 -0
  467. package/dist/worldJoin.js +56 -0
  468. package/dist/worldLayers.js +151 -0
  469. package/dist/worldLeases.js +78 -0
  470. package/dist/worldManifest.js +25 -0
  471. package/dist/worldMovement.js +63 -0
  472. package/dist/worldPersistence.js +134 -0
  473. package/dist/worldProjection.js +221 -0
  474. package/dist/worldReact.js +110 -0
  475. package/dist/worldRecoveryActor.js +35 -0
  476. package/dist/worldReturnAnchor.js +49 -0
  477. package/dist/worldRoomHooks.js +57 -0
  478. package/dist/worldRoomPool.js +27 -0
  479. package/dist/worldRoomSteps.js +133 -0
  480. package/dist/worldSeatBinding.js +36 -0
  481. package/dist/worldServer.d.ts +6936 -0
  482. package/dist/worldServer.js +48 -0
  483. package/dist/worldSourceSeatPending.js +9 -0
  484. package/dist/worldStrategyFixtures.js +164 -0
  485. package/dist/worldTesting.js +27 -0
  486. package/dist/worldTransitionDefaults.js +198 -0
  487. package/dist/worldTransitionExecutor.js +519 -0
  488. package/dist/worldTransitionGroup.js +113 -0
  489. package/dist/worldTransitionPhysicalSteps.js +40 -0
  490. package/dist/worldTransitionResolver.js +228 -0
  491. package/dist/worldTransitionSeatGroup.js +64 -0
  492. package/dist/worldTransitionSeats.js +260 -0
  493. package/dist/worldTransitionState.js +95 -0
  494. package/dist/worldTransitions.js +101 -0
  495. package/package.json +189 -4
@@ -0,0 +1,399 @@
1
+ import { ProtocolError as e } from "./errors.js";
2
+ import { simulationOwnData as t } from "./simulationAuthoring.js";
3
+ import { RoomStateCodec as n } from "./stateCodec.js";
4
+ import { captureGeometryPrivacyTarget as ee } from "./geometryPersistenceData.js";
5
+ import { bindWorldTransitionCommandHandlers as r } from "./worldCommands.js";
6
+ import { ROOMS_TABLE as i } from "./identities.js";
7
+ import { captureRoomSnapshotBlobs as a } from "./snapshotBlobIndex.js";
8
+ import { assertRoomSeatSecrets as o, resolveRoomSeatTokenStrategies as s } from "./seats.js";
9
+ import { RoomCatalog as c } from "./catalog.js";
10
+ import { captureRoomsGeometryBinding as te } from "./geometryApiBinding.js";
11
+ import { captureAdmittedRoomPoolTopology as l, captureRoomPoolCatalog as u } from "./roomPoolTopology.js";
12
+ import { roomModerationService as ne } from "./moderation.js";
13
+ import { RoomsApiBindFailure as d } from "./apiBinding.js";
14
+ import { captureRoomLockstepRecoveryOptions as f } from "./lockstepRecoveryTruth.js";
15
+ import { dataStoreRoomDirectory as p } from "./directory.js";
16
+ import { dataStoreRoomApiReservations as re } from "./apiReservations.js";
17
+ import { dataStoreRoomAccessSweep as ie } from "./roomAccessSweep.js";
18
+ import { makeRoomControlCarrier as m } from "./controlCarrier.js";
19
+ import { openRegistryRoomAppCommandServer as ae, openRegistryRoomControlClient as oe } from "./controlRegistry.js";
20
+ import { directoryRoomControlTargetResolver as se } from "./controlTarget.js";
21
+ import { dataStoreRoomRecovery as ce } from "./recovery.js";
22
+ import { dataStoreRoomReaper as le } from "./reaper.js";
23
+ import { DEFAULT_WORLD_COMMAND_NAMES as h, buildDefaultApiWorldState as ue } from "./worldDefaultBinding.js";
24
+ import { and as de, eq as fe, gt as pe } from "@voltro/database";
25
+ import { Effect as g } from "effect";
26
+ import { createHash as me } from "node:crypto";
27
+ import { ConnectionRegistry as he } from "@voltro/kv/connection";
28
+ import { HotStore as ge, layerRoutedHotRedis as _e } from "@voltro/kv/hot";
29
+ //#region src/apiRegistryBinding.ts
30
+ function _(t) {
31
+ throw new e({ detail: t });
32
+ }
33
+ var v = (e, t) => Number.isSafeInteger(e) && e > 0 && e <= t ? e : _("Invalid registry Rooms API budget"), y = (y) => {
34
+ if (!y || typeof y != "object" || Array.isArray(y) || y.catalog !== void 0 && (typeof y.catalog.get != "function" || typeof y.catalog.inventory != "function") || y.membership !== void 0 && typeof y.membership.list != "function" || typeof y.epochNow != "function" || typeof y.observerNow != "function" || y.runEffect !== void 0 && typeof y.runEffect != "function" || typeof y.bindPrivacy != "function" || typeof y.region != "string" || !y.region.trim() || y.region.length > 191) return _("Registry Rooms API requires admitted catalog, membership, region, runtime and privacy binding");
35
+ if (o(y.seatSecrets), o(y.projectControlSecrets), y.bindWorldState !== void 0 && typeof y.bindWorldState != "function") return _("World state resource binding must be a function");
36
+ let ve = y.bindWorldState, b = Object.getOwnPropertyDescriptor(y, "bindGeometry");
37
+ if (b && (!b.enumerable || !("value" in b)) || !b && "bindGeometry" in y) return _("Geometry resource binder requires own data");
38
+ let x = b?.value;
39
+ if (b && typeof x != "function") return _("Geometry resource binder must be a function");
40
+ let S = y.commands;
41
+ if (y.admission !== void 0 && typeof y.admission != "function") return _("Room reservation admission must be a function");
42
+ let C = y.admission;
43
+ if (y.seatAttributes !== void 0 && typeof y.seatAttributes != "function") return _("Room seat attributes must be resolved by a function");
44
+ let ye = y.seatAttributes;
45
+ if (S !== void 0 && (typeof S != "object" || !S.run || !S.publish)) return _("Room app commands need run and publish bindings");
46
+ let w = y.world ?? {}, T = w.authority ?? "host", E = Object.getOwnPropertyDescriptor(w, "groups"), D;
47
+ if (E && (!E.enumerable || !("value" in E))) return _("Default World groups require own configuration");
48
+ if (E?.value !== void 0) {
49
+ if (!E.enumerable || !("value" in E) || !E.value || Object.getPrototypeOf(E.value) !== Object.prototype || Reflect.ownKeys(E.value).length !== 1) return _("Default World groups require an own Party capability");
50
+ let e = Object.getOwnPropertyDescriptor(E.value, "parties"), t = e && "value" in e && e.value ? Object.getOwnPropertyDescriptor(e.value, "read") : void 0;
51
+ if (!e?.enumerable || !("value" in e) || !t || !("value" in t) || typeof t.value != "function" || ve !== void 0) return _("Default World groups require the actual Party reader and default World state binding");
52
+ if (D = Object.freeze({ read: t.value.bind(e.value) }), Object.values(h).some((e) => S && (e in S.run || e in S.publish))) return _("Default World command names conflict with explicit Room app commands");
53
+ } else if (!E && "groups" in w) return _("Default World groups require own configuration");
54
+ if (!["host", "api"].includes(T) || w.leaseConnection !== void 0 && !/^redis:[A-Za-z][A-Za-z0-9_-]*$/.test(w.leaseConnection)) return _("Invalid default World binding options");
55
+ let be = v(w.seatTtlMs ?? 3e4, 2 ** 53 - 1), O = y.region, k = y.controlConnection, A = structuredClone(y.projectControlSecrets), j = structuredClone(y.seatSecrets), xe = y.runEffect, Se = y.bindPrivacy, M = y.epochNow, Ce = y.observerNow, we = y.catalog === void 0 ? void 0 : new c(y.catalog.inventory(), { previousHistory: y.catalog.history }), Te = y.membership, Ee = y.membership?.list.bind(y.membership), N = a(y.snapshotBlobs), De = s(y.strategies?.seatToken), P = y.strategies?.selectHost;
56
+ for (let e of ["pools", "poolSelectHost"]) {
57
+ let t = Object.getOwnPropertyDescriptor(y, e);
58
+ if (t && (!t.enumerable || !("value" in t)) || !t && e in y) return _("Registry pool policy requires own data");
59
+ }
60
+ let F = y.pools === void 0 ? void 0 : l(y.pools), I = y.poolSelectHost;
61
+ if (I !== void 0 && typeof I != "function") return _("Pool selection strategy requires its admitted topology");
62
+ let L = Object.getOwnPropertyDescriptor(y, "lockstepRecovery");
63
+ if (L && (!L.enumerable || !("value" in L)) || !L && "lockstepRecovery" in y) return _("Registry Lockstep recovery budgets require own data");
64
+ let Oe = L?.value === void 0 ? {} : t(L.value, [
65
+ "maxTicks",
66
+ "maxJournalBytes",
67
+ "maxPlayers"
68
+ ], []);
69
+ f({
70
+ ...Oe,
71
+ descriptor: () => void 0
72
+ });
73
+ let ke = v(y.heartbeatEveryMs, Math.floor((2 ** 53 - 1) / 3)), R = v(y.heartbeatTtlMs, 2 ** 53 - 1), Ae = v(y.graceMs, 2 ** 53 - 1), z = v(y.maxCheckpointBytes ?? 1048576, 67108864), je = v(y.maxListedRooms ?? 256, 256), Me = v(y.maxHostAttempts ?? 32, 256), Ne = v(y.maxReaperHosts ?? 32, 256), Pe = v(y.maxRoomsPerHost ?? 32, 4096), Fe = v(y.maxRequestMs ?? 5e3, 6e4);
74
+ if (R <= ke || P !== void 0 && typeof P != "function") return _("Invalid registry Rooms API policy");
75
+ let Ie = [A.current, ...A.previous === void 0 ? [] : [A.previous]], B = [j.current, ...j.previous === void 0 ? [] : [j.previous]];
76
+ return Ie.some((e) => B.some((t) => t.secret === e.secret)) ? _("Room control and seat signing keys must be independent") : typeof k != "string" || !/^(redis|nats):[A-Za-z][A-Za-z0-9_-]*$/.test(k) ? _("Registry Rooms API needs an explicit control connection") : async (a, o) => {
77
+ if (o.catalog !== void 0 && we !== void 0) return _("Rooms API requires one catalog source: app discovery or explicit binding");
78
+ let s = o.catalog ?? we;
79
+ if (!s) return _("Rooms API requires the actual app-discovered or explicitly admitted catalog");
80
+ let l = new c(s.inventory(), { previousHistory: s.history }), v = l.get.bind(l), y = (e) => new n(v(e).state), b = new Map(l.inventory().flatMap((e) => e.descriptor.mode === "lockstep" ? [[e.descriptor.name, e.descriptor]] : [])), E = f({
81
+ ...Oe,
82
+ descriptor: (e) => b.get(e)
83
+ }), L = b.size ? E : void 0;
84
+ if (o.pools !== void 0 && F !== void 0 && o.pools !== F) return _("Room pools must have one app-owned declaration");
85
+ let Ie = o.pools ?? F, B = Ie === void 0 ? void 0 : u(Ie, l.inventory().map((e) => e.descriptor.name));
86
+ if (I !== void 0 && B === void 0) return _("Pool selection strategy requires its admitted topology");
87
+ let V = o.host, H = V?.connectionRegistry;
88
+ if (o.worldClientControls && o.worldState !== "transitions") return _("World client controls require actual transition state");
89
+ let Le = o.worlds.some((e) => e.geometry !== void 0);
90
+ if (Le && !x) return _("Declared World geometry requires its actual resource binding before registry acquisition");
91
+ let Re = o.worldState !== "none" && !ve;
92
+ if (!V || !H || o.signal.aborted) return _("Registry Rooms API requires its live app-owned registry");
93
+ let U = xe ?? V.runEffect;
94
+ if (typeof U != "function") return _("Rooms API requires the actual app-provided Effect runner");
95
+ let W = V.membership;
96
+ if (Te !== void 0 && W?.list !== void 0 && Te !== W) return _("Rooms API requires one membership owner: the installing app or explicit binding");
97
+ let ze = Ee ?? (typeof W?.list == "function" ? W.list.bind(W) : void 0);
98
+ if (!ze) return _("Rooms API requires the actual app-owned or explicitly admitted membership snapshot");
99
+ let G = Object.freeze({ list: ze });
100
+ m({
101
+ mount: o.pluginName,
102
+ projectControlSecrets: A,
103
+ epochNow: M,
104
+ maxRequestMs: Fe
105
+ });
106
+ let K = p(a, {
107
+ pools: B,
108
+ poolSelectHost: I,
109
+ epochNow: M,
110
+ heartbeatTtlMs: R,
111
+ maxListedRooms: je
112
+ }), Be = ce(a, {
113
+ pools: B,
114
+ membership: G,
115
+ observerNow: Ce,
116
+ epochNow: M,
117
+ heartbeatEveryMs: ke,
118
+ hostHeartbeatTtlMs: R,
119
+ graceMs: Ae,
120
+ maxCheckpointBytes: z,
121
+ snapshotCodec: y,
122
+ ...L === void 0 ? {} : { lockstep: L },
123
+ ...N === void 0 ? {} : { snapshotBlobs: N }
124
+ });
125
+ if (D && (o.worldState !== "transitions" || !o.worldClientControls || typeof V.runWithAppServices != "function")) return _("Default World groups require transition state, player controls and the app-service runner");
126
+ let Ve, He = (t, n, ee) => g.suspend(() => {
127
+ let r = Ve?.run[t];
128
+ return r ? r(n, ee).pipe(g.mapError(() => new e({ detail: "Default World command remains incomplete" }))) : g.fail(new e({ detail: "Default World commands are not ready" }));
129
+ }), Ue = D ? r(h, {
130
+ transition: (e, t) => He(h.transition, e, t),
131
+ transitionGroup: (e, t) => He(h.transitionGroup, e, t)
132
+ }) : void 0, q = Ue ? Object.freeze({
133
+ run: Object.freeze({
134
+ ...S?.run,
135
+ ...Ue.run
136
+ }),
137
+ publish: Object.freeze({ ...S?.publish })
138
+ }) : S, We = q === void 0 ? void 0 : G.list().find((e) => e.self);
139
+ if (q !== void 0 && !We) return _("Room app commands need this API instance in the app membership");
140
+ let Ge = q === void 0 ? void 0 : await U(ae(H, {
141
+ connection: k,
142
+ mount: o.pluginName,
143
+ projectControlSecrets: A,
144
+ epochNow: M,
145
+ maxRequestMs: Fe,
146
+ instance: {
147
+ instanceId: We.instanceId,
148
+ startedAt: We.startedAt
149
+ },
150
+ bindings: q
151
+ })), J;
152
+ try {
153
+ J = await U(oe(H, {
154
+ connection: k,
155
+ mount: o.pluginName,
156
+ projectControlSecrets: A,
157
+ epochNow: M,
158
+ maxRequestMs: Fe,
159
+ catalog: l,
160
+ resolveTarget: se(K, G, O, B === void 0 ? void 0 : {
161
+ store: a,
162
+ pools: B
163
+ })
164
+ }));
165
+ } catch (e) {
166
+ throw await Ge?.close(), e;
167
+ }
168
+ let Y, X = null, Ke = !1, qe = !1, Z = null, Je = !1, Ye = !1, Xe, Ze, Q = null, Qe = !1, $ = null, $e = () => {
169
+ if ($) return $;
170
+ let e = (async () => {
171
+ Q && !Qe && (await Q(), Qe = !0);
172
+ let e = (await Promise.allSettled([
173
+ Promise.resolve().then(() => Xe?.stop()),
174
+ Promise.resolve().then(() => Ze?.stop()),
175
+ Promise.resolve().then(() => Ge?.close())
176
+ ])).filter((e) => e.status === "rejected").map((e) => e.reason);
177
+ if (e.length) throw AggregateError(e, "Rooms World command and continuation drainage remains incomplete");
178
+ Z && !Je && (await Z(), Je = !0), X && !Ke && (await X(), Ke = !0), J.fence(), await J.close();
179
+ })();
180
+ return $ = e, e.then(() => {
181
+ $ = null;
182
+ }, () => {
183
+ $ = null;
184
+ }), e;
185
+ };
186
+ try {
187
+ if (o.signal.aborted) return _("Registry Rooms API acquisition was cancelled");
188
+ let n = await Se(Object.freeze({
189
+ pluginName: o.pluginName,
190
+ store: a,
191
+ host: V,
192
+ withdrawal: J.withdrawal,
193
+ signal: o.signal,
194
+ ...Le ? { afterFence: (n) => g.suspend(() => {
195
+ if (!Y) return g.fail(new e({ detail: "After-fence geometry source is not actually acquired" }));
196
+ try {
197
+ let r = t(n, ["requestId", "target"], ["requestId", "target"]), i = t(r.target, [
198
+ "tenantId",
199
+ "subjectId",
200
+ "kind"
201
+ ], [
202
+ "tenantId",
203
+ "subjectId",
204
+ "kind"
205
+ ]), a = ee({
206
+ tenantId: i.tenantId,
207
+ requestId: r.requestId,
208
+ subject: {
209
+ id: i.subjectId,
210
+ kind: i.kind
211
+ }
212
+ });
213
+ return (Y.migrations === void 0 ? g.void : Y.migrations.eraseSubject(a)).pipe(g.flatMap(() => Y.service.eraseSubject(a)), g.flatMap(() => Y.archives === void 0 ? g.void : Y.archives.eraseSubject(a)), g.mapError(() => new e({ detail: "After-fence geometry/archive/migration erasure remains incomplete" })));
214
+ } catch {
215
+ return g.fail(new e({ detail: "After-fence geometry requires actual captured Subject scope" }));
216
+ }
217
+ }) } : {}
218
+ }));
219
+ if (typeof n?.release != "function") return _("Rooms Subject privacy binding must retain cleanup");
220
+ Q = n.release.bind(n);
221
+ let r = n.service;
222
+ if (!r || typeof r.erase != "function" || typeof r.export != "function") return _("Rooms Subject privacy binding is incomplete");
223
+ let s = Object.freeze({
224
+ erase: r.erase.bind(r),
225
+ export: r.export.bind(r)
226
+ });
227
+ if (o.signal.aborted) return _("Registry Rooms API acquisition was cancelled");
228
+ let c, u;
229
+ if (o.worldState !== "none" && !Re) {
230
+ Ye = !0;
231
+ let e = await ve(Object.freeze({
232
+ ...o,
233
+ store: a,
234
+ host: V,
235
+ withdrawal: J.withdrawal
236
+ }));
237
+ if (typeof e?.release != "function") return _("World state binding must retain cleanup");
238
+ Z = e.release.bind(e), c = e.source;
239
+ let t = Object.getOwnPropertyDescriptor(e, "clientControl");
240
+ if (t && !("value" in t)) return _("World client resource binding refuses accessors");
241
+ if (u = t?.value, o.worldClientControls !== (u !== void 0)) return _("World client resource does not match configured controls");
242
+ if (!c) return _("World state resource binding is incomplete");
243
+ if (Ye = !1, o.signal.aborted) return _("World state acquisition was cancelled");
244
+ }
245
+ if (Le) {
246
+ qe = !0;
247
+ let e = await x(Object.freeze({
248
+ ...o,
249
+ store: a,
250
+ host: V,
251
+ withdrawal: J.withdrawal,
252
+ ...o.geometryAdminControls ? { geometryControl: J.geometry } : {}
253
+ })), n = t(e, ["source", "release"], ["source", "release"]);
254
+ if (typeof n.release != "function") return _("Geometry resource binding must retain its actual cleanup");
255
+ if (X = n.release.bind(e), Y = te(n.source, o.worlds), (o.geometryAdminControls ?? !1) !== (Y.administration !== void 0)) return _("Geometry administration resource does not match its configured module");
256
+ if ((o.geometryJournalRetention ?? !1) !== (Y.retention !== void 0)) return _("Geometry retention resource does not match its configured module");
257
+ if (o.geometryJournalArchives !== (Y.archives !== void 0)) return _("Geometry archive resource does not match its configured module");
258
+ if (o.geometryAssetUrls !== (Y.assetGrants !== void 0)) return _("Geometry asset resource does not match its configured module");
259
+ if (o.geometryMigrations !== (Y.migrations !== void 0)) return _("Geometry migration resource does not match its configured module");
260
+ if (qe = !1, o.signal.aborted) return _("Geometry resource acquisition was cancelled");
261
+ }
262
+ let d = re(a, {
263
+ pools: B,
264
+ poolSelectHost: I,
265
+ catalog: l,
266
+ directory: K,
267
+ recovery: Be,
268
+ adoption: J.adoption,
269
+ control: J.control,
270
+ match: J.match,
271
+ membership: G,
272
+ secrets: j,
273
+ epochNow: M,
274
+ region: () => O,
275
+ maxListedRooms: je,
276
+ maxHostAttempts: Me,
277
+ maxCheckpointBytes: z,
278
+ ...L === void 0 ? {} : { lockstepRecovery: {
279
+ maxTicks: L.maxTicks,
280
+ maxJournalBytes: L.maxJournalBytes,
281
+ maxPlayers: L.maxPlayers
282
+ } },
283
+ strategies: {
284
+ ...P === void 0 ? {} : { selectHost: P },
285
+ seatToken: De
286
+ },
287
+ ...N === void 0 ? {} : { snapshotBlobs: N },
288
+ ...C === void 0 ? {} : { admission: C },
289
+ ...ye === void 0 ? {} : { seatAttributes: ye }
290
+ });
291
+ if (Re) {
292
+ let e = w.leaseConnection ?? (k.startsWith("redis:") ? k : void 0);
293
+ if (T === "api" && !e) return _("World authority \"api\" needs a Redis lease connection");
294
+ let t = T === "api" ? await U(ge.pipe(g.provide(_e({
295
+ consumer: o.pluginName,
296
+ connection: e
297
+ })), g.provideService(he, H))) : void 0, n = ue({
298
+ store: a,
299
+ worlds: o.worlds,
300
+ catalog: l,
301
+ transitionsEnabled: o.worldState === "transitions",
302
+ clientControls: o.worldClientControls,
303
+ authority: T,
304
+ world: J.world,
305
+ ownership: K.observeOwnership.bind(K),
306
+ selectHost: (e, t) => K.selectHost(O, {
307
+ name: e,
308
+ tenantId: t
309
+ }).pipe(g.map((e) => e.id)),
310
+ reserve: (e, t) => d.reserve({
311
+ mode: "joinById",
312
+ roomId: e
313
+ }, t),
314
+ ...t === void 0 ? {} : { hot: t },
315
+ signing: {
316
+ secrets: j,
317
+ seatTtlMs: be,
318
+ graceMs: Ae,
319
+ hostHeartbeatTtlMs: R
320
+ },
321
+ epochNow: M,
322
+ ...w.maxBytes === void 0 ? {} : { maxBytes: w.maxBytes }
323
+ }, D ? {
324
+ parties: D,
325
+ runWithAppServices: V.runWithAppServices.bind(V)
326
+ } : void 0);
327
+ if (Ve = n.commands, Z = n.release.bind(n), c = n.source, u = n.clientControl, n.runGroupsDue && (V.workloads === void 0 || V.workloads.includes("reapers"))) {
328
+ let e = n.runGroupsDue;
329
+ Xe = V.scheduleCoordinated("rooms.world-groups." + me("sha256").update(o.pluginName).digest("hex").slice(0, 32), 1e3, async () => ({
330
+ idle: (await U(e())).visited === 0,
331
+ nextDueInMs: 1e3
332
+ }));
333
+ }
334
+ }
335
+ let f = le(a, {
336
+ pools: B,
337
+ poolSelectHost: I,
338
+ membership: G,
339
+ directory: K,
340
+ recovery: Be,
341
+ adoption: J.adoption,
342
+ maxHosts: Ne,
343
+ maxRoomsPerHost: Pe,
344
+ maxCheckpointBytes: z,
345
+ snapshotCodec: y,
346
+ ...L === void 0 ? {} : { lockstep: L },
347
+ ...P === void 0 ? {} : { strategies: { selectHost: P } },
348
+ ...N === void 0 ? {} : { snapshotBlobs: N }
349
+ }), p = ne(K.observeOwnership.bind(K), J.kick, (e, t, n) => g.tryPromise(async () => (await a.query({
350
+ table: i,
351
+ predicate: de(fe("tenantId", e), fe("state", "live"), ...t === null ? [] : [pe("id", t)]),
352
+ order: [{
353
+ column: "id",
354
+ direction: "asc"
355
+ }],
356
+ take: n,
357
+ skip: void 0,
358
+ projection: ["id"]
359
+ })).map((e) => String(e.id))), o.geometryAdminControls ? J.geometry : void 0), m = C === void 0 ? void 0 : ie(a, {
360
+ admission: C,
361
+ kick: p.kick,
362
+ now: M
363
+ });
364
+ m && (V.workloads === void 0 || V.workloads.includes("reapers")) && (Ze = V.scheduleCoordinated("rooms.access." + me("sha256").update(o.pluginName).digest("hex").slice(0, 32), 5e3, async () => ({
365
+ idle: (await U(m.run())).visited === 0,
366
+ nextDueInMs: 5e3
367
+ })));
368
+ let ae = (t) => m === void 0 ? g.succeed({
369
+ visited: 0,
370
+ renewed: 0,
371
+ kicked: 0
372
+ }) : m.recheck(t).pipe(g.mapError(() => new e({ detail: "Room access could not be checked again" })));
373
+ return Object.freeze({
374
+ pools: B,
375
+ reservation: d,
376
+ privacy: s,
377
+ reaper: f,
378
+ moderation: Object.freeze({
379
+ ...p,
380
+ recheckAccess: ae
381
+ }),
382
+ worldState: c,
383
+ worldClientControl: u,
384
+ geometry: Y,
385
+ release: $e
386
+ });
387
+ } catch (t) {
388
+ t instanceof d && (qe ? X = t.retryCleanup : Ye ? Z = t.retryCleanup : Q = t.retryCleanup);
389
+ try {
390
+ await $e();
391
+ } catch {
392
+ throw new d($e);
393
+ }
394
+ throw new e({ detail: "Registry Rooms API acquisition did not complete" });
395
+ }
396
+ };
397
+ };
398
+ //#endregion
399
+ export { y as registryRoomsApiBinder };