@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,125 @@
1
+ import { BudgetExceeded as e, ProtocolError as t } from "./errors.js";
2
+ import { createGeometryTileCodec as n, geometryOwnData as r } from "./geometryTileCodec.js";
3
+ import { createGeometryHeightfieldCodec as i } from "./geometryHeightfield.js";
4
+ import { createGeometryShapesCodec as a } from "./geometryShapes.js";
5
+ import { createGeometryVoxelCodec as o, createGeometryVoxelView as s } from "./geometryVoxel.js";
6
+ import { captureGeometryArtifact as c, createGeometryArtifact as l } from "./geometryArtifacts.js";
7
+ import { captureGeometryCodecProfiles as u, captureGeometryDense as d, captureGeometrySubject as f, geometryPersistenceInteger as p } from "./geometryPersistenceData.js";
8
+ import { createGeometryTileView as m } from "./geometryTileView.js";
9
+ import { admitGeometryEditResult as h } from "./geometryEdits.js";
10
+ import { applyGeometryPatch as g, createGeometryPatch as _, decodeGeometryPatch as v } from "./geometryPatch.js";
11
+ //#region src/geometryRollback.ts
12
+ var y = Object.freeze({ rebaseHeight: (e) => e.target ? e.selected : e.selected + (e.after - e.before) });
13
+ function b() {
14
+ throw new t({ detail: "Geometry rollback requires the complete exact native journal baseline" });
15
+ }
16
+ var x = (e, t) => JSON.stringify(e) === JSON.stringify(t), S = (t, n, r) => {
17
+ let i = t.kind === "3d-shapes" ? t.shapes.length : t.kind === "3d-voxel" ? t.side ** 3 : t.width * t.height;
18
+ if (i > r) throw new e({
19
+ budget: "geometryRollbackCells",
20
+ limit: r
21
+ });
22
+ if (t.kind === "3d-shapes") return new Map(t.shapes.map((e) => [e.id, e]));
23
+ if (t.kind === "2d-heightfield") return new Map(t.heights.map((e, t) => [String(t), e]));
24
+ if (t.kind === "2d-tiles") {
25
+ let e = m(t, n);
26
+ return new Map(Array.from({ length: i }, (n, r) => [String(r), e.materialAt(r % t.width, Math.floor(r / t.width))]));
27
+ }
28
+ let a = s(t, n);
29
+ return new Map(Array.from({ length: i }, (e, n) => [String(n), a.materialAt(n % t.side, Math.floor(n / t.side) % t.side, Math.floor(n / t.side ** 2))]));
30
+ }, C = (e, t, r) => {
31
+ let { address: s, version: c } = e;
32
+ return e.kind === "2d-tiles" ? n(r).create({
33
+ address: s,
34
+ version: c,
35
+ width: e.width,
36
+ height: e.height,
37
+ tileSizeRaw: e.tileSizeRaw,
38
+ cells: Array.from({ length: e.width * e.height }, (e, n) => t.get(String(n)))
39
+ }) : e.kind === "3d-voxel" ? o(r).create({
40
+ address: e.address,
41
+ version: c,
42
+ side: e.side,
43
+ voxelSizeRaw: e.voxelSizeRaw,
44
+ voxels: Array.from({ length: e.side ** 3 }, (e, n) => t.get(String(n)))
45
+ }) : e.kind === "2d-heightfield" ? i(r).create({
46
+ address: s,
47
+ version: c,
48
+ width: e.width,
49
+ height: e.height,
50
+ sampleSpacingRaw: e.sampleSpacingRaw,
51
+ baseHeightRaw: e.baseHeightRaw,
52
+ heightQuantumRaw: e.heightQuantumRaw,
53
+ heightRawSamples: Array.from({ length: e.width * e.height }, (n, r) => e.baseHeightRaw + t.get(String(r)) * e.heightQuantumRaw)
54
+ }) : a(r).create({
55
+ address: e.address,
56
+ version: c,
57
+ extentXRaw: e.extentXRaw,
58
+ extentYRaw: e.extentYRaw,
59
+ extentZRaw: e.extentZRaw,
60
+ shapes: [...t.values()]
61
+ });
62
+ }, w = async (t, n, i, a, o, s, m = {}) => {
63
+ let w = r(m, [
64
+ "maxEntries",
65
+ "maxJournalBytes",
66
+ "maxCells",
67
+ "maxComparedCells",
68
+ "codecLimits",
69
+ "strategies"
70
+ ], []), T = (e, t, n) => Object.hasOwn(w, e) ? p(w[e], 1, n) : t, E = T("maxEntries", 4096, 65536), D = T("maxJournalBytes", 16777216, 268435456), O = T("maxCells", 65536, 1048576), k = T("maxComparedCells", 16777216, 1073741824), A = c(t), j = c(i), M = s === null ? null : f(s), N = u({ [A.chunk.kind]: w.codecLimits ?? {} }).get(A.chunk.kind), P = r(Object.hasOwn(w, "strategies") ? w.strategies : {}, ["rebaseHeight"], []), F = Object.hasOwn(P, "rebaseHeight") ? P.rebaseHeight : y.rebaseHeight;
71
+ if (typeof F != "function") return b();
72
+ let I = F;
73
+ p(n), p(a), h(A.chunk, j.chunk, N);
74
+ let L = 0, R = d(o, E, (t) => {
75
+ let n = r(t, ["subject", "patch"]), i = f(n.subject), a = v(n.patch);
76
+ if (L += a.bytes().length, L > D) throw new e({
77
+ budget: "geometryRollbackJournalBytes",
78
+ limit: D
79
+ });
80
+ return Object.freeze({
81
+ subject: i,
82
+ patch: a
83
+ });
84
+ }), z = t, B = n, V = S(A.chunk, N, O), H = V.size, U = 0, W = new Map(V);
85
+ for (let t of R) {
86
+ let n = await g(z, t.patch, B, N);
87
+ h(A.chunk, n.artifact.chunk, N);
88
+ let r = S(n.artifact.chunk, N, O), i = /* @__PURE__ */ new Set([...V.keys(), ...r.keys()]);
89
+ if (H += i.size, H > k) throw new e({
90
+ budget: "geometryRollbackComparedCells",
91
+ limit: k
92
+ });
93
+ let a = M === null || x(t.subject, M);
94
+ a && U++;
95
+ for (let e of i) if (!x(V.get(e), r.get(e))) {
96
+ let t = r.get(e);
97
+ if (A.chunk.kind === "2d-heightfield") {
98
+ let n = V.get(e), r = W.get(e);
99
+ if (typeof n != "number" || typeof t != "number" || typeof r != "number") return b();
100
+ W.set(e, p(I(Object.freeze({
101
+ key: e,
102
+ before: n,
103
+ after: t,
104
+ selected: r,
105
+ target: a
106
+ })), -(2 ** 53 - 1), 2 ** 53 - 1));
107
+ } else a || (t === void 0 ? W.delete(e) : W.set(e, t));
108
+ }
109
+ z = n.artifact, B = n.revision, V = r;
110
+ }
111
+ if (B !== a || z.blobSha256 !== j.blobSha256 || z.contentSha256 !== j.contentSha256) return b();
112
+ let G = 0;
113
+ for (let e of /* @__PURE__ */ new Set([...V.keys(), ...W.keys()])) x(V.get(e), W.get(e)) || G++;
114
+ let K = G === 0 ? i : await l(C(j.chunk, W, N), N), q = _(i, K, a, { codecLimits: N });
115
+ return Object.freeze({
116
+ artifact: K,
117
+ patch: q,
118
+ revision: a,
119
+ entries: R.length,
120
+ targetEntries: U,
121
+ restoredCells: G
122
+ });
123
+ };
124
+ //#endregion
125
+ export { y as defaultGeometryRollbackStrategies, w as prepareGeometryRollback };
@@ -0,0 +1,203 @@
1
+ import { BudgetExceeded as e, ProtocolError as t } from "./errors.js";
2
+ import { geometryOwnData as n } from "./geometryTileCodec.js";
3
+ import { captureGeometryOwner as r, captureGeometryPersistenceScope as i, captureGeometryPrivacyTarget as a, captureGeometrySubject as o, geometryPersistenceId as s, geometryPersistenceInteger as c } from "./geometryPersistenceData.js";
4
+ import { captureGeometryActivation as l } from "./geometryActorInventory.js";
5
+ import { captureRoomSnapshotEffectRunner as u } from "./snapshotBlobIndex.js";
6
+ import { geometryPersistenceDigest as d } from "./geometryPersistenceCapture.js";
7
+ import { makeGeometryCommitCoordinator as f } from "./geometryCommitCoordinator.js";
8
+ import { prepareGeometryActivation as p } from "./geometryActivation.js";
9
+ import { Effect as m, Option as h } from "effect";
10
+ import { HotError as g } from "@voltro/kv/hot/contract";
11
+ //#region src/geometryRollbackCoordinator.ts
12
+ var _ = () => new t({ detail: "Geometry rollback execution or owned cleanup remains unconfirmed" }), v = (t, v, y, b) => {
13
+ let x = n(b, [
14
+ "tenantId",
15
+ "authorize",
16
+ "maxJobs",
17
+ "maxPatchBytes",
18
+ "maxPendingBytes",
19
+ "maxSubjectFences"
20
+ ], ["tenantId", "authorize"]), S = s(x.tenantId), C = x.authorize, w = n(t, ["prepare"]).prepare, T = n(y, ["tenantId", "acquire"]), E = T.acquire, D = (e, t, n) => Object.hasOwn(x, e) ? c(x[e], 1, n) : t, O = D("maxJobs", 64, 4096), k = D("maxPatchBytes", 262144, 16777216), A = D("maxPendingBytes", 16777216, 67108864), j = D("maxSubjectFences", 4096, 65536);
21
+ if (typeof C != "function" || typeof w != "function" || typeof E != "function" || T.tenantId !== S) throw _();
22
+ let M = C, N = w, P = E, F = f(v, y, {
23
+ tenantId: S,
24
+ maxPending: O,
25
+ maxPatchBytes: k,
26
+ maxPendingBytes: A,
27
+ maxSubjectFences: j
28
+ }), I = /* @__PURE__ */ new Map(), L = /* @__PURE__ */ new Set(), R = !1, z = !1, B = !1, V = (e) => d(JSON.stringify([
29
+ S,
30
+ e.kind,
31
+ e.id
32
+ ])), H = (e) => L.has(V(e.subject)) || e.target !== null && L.has(V(e.target)), U = () => [...I.values()].reduce((e, t) => e + (t.input?.patch.length ?? 0), 0), W = async (e, t) => {
33
+ if (!m.isEffect(t)) throw _();
34
+ return e(t);
35
+ }, G = (t) => m.flatMap(m.context(), (n) => m.uninterruptible(m.tryPromise({
36
+ try: () => t(u(n)),
37
+ catch: (t) => t instanceof e ? t : t instanceof g ? new g({
38
+ operation: t.operation,
39
+ key: "geometryRollbackLease",
40
+ reason: t.reason
41
+ }) : _()
42
+ }))), K = async (e, t) => {
43
+ if (t.lease) {
44
+ if (typeof await W(e, t.lease.release()) != "boolean") throw _();
45
+ t.lease = null;
46
+ }
47
+ }, q = (t, a) => {
48
+ let c, l, u;
49
+ try {
50
+ let e = n(t, [
51
+ "scope",
52
+ "owner",
53
+ "subject",
54
+ "target",
55
+ "requestId"
56
+ ]);
57
+ if (c = Object.freeze({
58
+ scope: i(e.scope),
59
+ owner: r(e.owner),
60
+ subject: o(e.subject),
61
+ target: e.target === null ? null : o(e.target),
62
+ requestId: s(e.requestId)
63
+ }), c.scope.tenantId !== S) throw _();
64
+ l = d(JSON.stringify([S, c.requestId])), u = d(JSON.stringify(c));
65
+ } catch {
66
+ return m.fail(_());
67
+ }
68
+ return G(async (t) => {
69
+ if (z || B || H(c)) throw _();
70
+ let r = I.get(l);
71
+ if (r) {
72
+ if (r.active || r.fingerprint !== u) throw _();
73
+ } else {
74
+ if (R) throw _();
75
+ if (I.size >= O) throw new e({
76
+ budget: "geometryRollbackJobs",
77
+ limit: O
78
+ });
79
+ r = {
80
+ request: c,
81
+ fingerprint: u,
82
+ active: !1,
83
+ completion: null,
84
+ finish: null,
85
+ lease: null,
86
+ input: null,
87
+ attempted: !1,
88
+ receipt: null
89
+ }, I.set(l, r);
90
+ }
91
+ r.active = !0, r.completion = new Promise((e) => {
92
+ r.finish = e;
93
+ });
94
+ try {
95
+ if (await W(t, M(c)) !== void 0) throw _();
96
+ if (await K(t, r), !r.input) {
97
+ let i = await W(t, P(c.scope));
98
+ if (h.isNone(i)) throw _();
99
+ let a = n(h.getOrThrow(i), ["renew", "release"]);
100
+ if (typeof a.renew != "function" || typeof a.release != "function" || (r.lease = Object.freeze({
101
+ renew: a.renew,
102
+ release: a.release
103
+ }), await W(t, r.lease.renew()) !== !0)) throw _();
104
+ let { requestId: o, ...s } = c, l = (await W(t, N(s))).patch.bytes();
105
+ if (l.length > k || U() + l.length > A) throw new e({
106
+ budget: "geometryRollbackPendingBytes",
107
+ limit: A
108
+ });
109
+ if (await W(t, r.lease.renew()) !== !0) throw _();
110
+ r.input = Object.freeze({
111
+ scope: c.scope,
112
+ owner: c.owner,
113
+ subject: c.subject,
114
+ requestId: c.requestId,
115
+ patch: l
116
+ }), await K(t, r);
117
+ }
118
+ if (H(c) || await W(t, M(c)) !== void 0) throw _();
119
+ if (r.attempted = !0, a) {
120
+ let e = await W(t, p(a, F, r.input));
121
+ return r.receipt = e.receipt, e;
122
+ }
123
+ let i = await W(t, F.commit(r.input));
124
+ return r.receipt = i, i;
125
+ } catch (e) {
126
+ try {
127
+ await K(t, r);
128
+ } catch {
129
+ throw _();
130
+ }
131
+ throw !r.attempted && !r.input && !r.lease && I.delete(l), e;
132
+ } finally {
133
+ r.active = !1, r.finish?.(), r.finish = null, r.completion = null;
134
+ }
135
+ });
136
+ };
137
+ return Object.freeze({
138
+ observation: () => Object.freeze({
139
+ jobs: I.size,
140
+ active: [...I.values()].filter((e) => e.active).length,
141
+ patchBytes: U(),
142
+ unconfirmed: [...I.values()].filter((e) => e.attempted && !e.receipt).length,
143
+ subjectFences: L.size,
144
+ closing: R,
145
+ closed: z
146
+ }),
147
+ rollback: (e) => q(e).pipe(m.flatMap((e) => "_tag" in e ? m.fail(_()) : m.succeed(e))),
148
+ prepareActivation: (e, t) => q(t, e).pipe(m.flatMap((t) => {
149
+ try {
150
+ return "_tag" in t ? m.succeed(l(e, t)) : m.fail(_());
151
+ } catch {
152
+ return m.fail(_());
153
+ }
154
+ })),
155
+ withdrawSubject: (t) => {
156
+ let n;
157
+ try {
158
+ if (n = a(t), n.tenantId !== S) throw _();
159
+ } catch {
160
+ return m.fail(_());
161
+ }
162
+ return G(async (t) => {
163
+ if (z) return;
164
+ if (B) throw _();
165
+ let r = V(n.subject);
166
+ if (!L.has(r)) {
167
+ if (L.size >= j) throw new e({
168
+ budget: "geometryRollbackSubjectFences",
169
+ limit: j
170
+ });
171
+ L.add(r);
172
+ }
173
+ let i = (e) => V(e.request.subject) === r || e.request.target !== null && V(e.request.target) === r;
174
+ for (;;) {
175
+ let e = [...I.values()].filter((e) => i(e) && e.active);
176
+ if (!e.length) break;
177
+ await Promise.all(e.map((e) => e.completion ?? Promise.reject(_())));
178
+ }
179
+ for (let e of I.values()) i(e) && await K(t, e);
180
+ await W(t, F.withdrawSubject(n));
181
+ });
182
+ },
183
+ close: () => G(async (e) => {
184
+ if (!z) {
185
+ if (B) throw _();
186
+ R = !0, B = !0;
187
+ try {
188
+ for (;;) {
189
+ let e = [...I.values()].filter((e) => e.active);
190
+ if (!e.length) break;
191
+ await Promise.all(e.map((e) => e.completion ?? Promise.reject(_())));
192
+ }
193
+ if ((await Promise.allSettled([...I.values()].map((t) => K(e, t)))).some((e) => e.status === "rejected") || [...I.values()].some((e) => e.attempted && !e.receipt)) throw _();
194
+ await W(e, F.close()), I.clear(), L.clear(), z = !0;
195
+ } finally {
196
+ B = !1;
197
+ }
198
+ }
199
+ })
200
+ });
201
+ };
202
+ //#endregion
203
+ export { v as makeGeometryRollbackCoordinator };
@@ -0,0 +1,46 @@
1
+ import { BudgetExceeded as e, ProtocolError as t } from "./errors.js";
2
+ import { geometryOwnData as n } from "./geometryTileCodec.js";
3
+ import { captureRoomGeometryRollbackRequest as r } from "./geometryAdminData.js";
4
+ import { captureGeometryActivation as i } from "./geometryActorInventory.js";
5
+ import { Context as a, Effect as o, Layer as s } from "effect";
6
+ //#region src/geometryRollbackPorts.ts
7
+ var c = class extends a.Service()("@voltro/RoomGeometryRollbackPort") {}, l = (a) => {
8
+ let s = n(a, [
9
+ "authorize",
10
+ "prepare",
11
+ "resume",
12
+ "release"
13
+ ]);
14
+ if (Object.values(s).some((e) => typeof e != "function")) throw new t({ detail: "Host rollback requires a complete actual administrative source" });
15
+ let c = s.authorize.bind(a), l = s.prepare.bind(a), u = s.resume.bind(a), d = s.release.bind(a), f = (n) => o.suspend(() => {
16
+ try {
17
+ let r = n();
18
+ return o.isEffect(r) ? r.pipe(o.mapError((n) => n instanceof e ? n : new t({ detail: "Actual Host rollback source remains unconfirmed" }))) : o.fail(new t({ detail: "Actual Host rollback source must return its Effect" }));
19
+ } catch {
20
+ return o.fail(new t({ detail: "Host rollback source refused admission" }));
21
+ }
22
+ }), p = (e) => e === void 0 ? o.void : o.fail(new t({ detail: "Host rollback source did not confirm void completion" }));
23
+ return Object.freeze({
24
+ authorize: (e, t, n) => {
25
+ let i = r(n);
26
+ return f(() => c(e, t, i)).pipe(o.flatMap(p));
27
+ },
28
+ prepare: (e, n, a) => {
29
+ let s = r(a);
30
+ return f(() => l(e, n, s)).pipe(o.flatMap((e) => o.try({
31
+ try: () => i(n.inventory, e),
32
+ catch: () => new t({ detail: "Rollback source did not return its genuine actor activation" })
33
+ })));
34
+ },
35
+ resume: (e, t, n, a) => {
36
+ let s = r(n), c = i(t.inventory, a);
37
+ return f(() => u(e, t, s, c)).pipe(o.flatMap(p));
38
+ },
39
+ release: (e, t) => {
40
+ let n = r(t);
41
+ return f(() => d(e, n)).pipe(o.flatMap(p));
42
+ }
43
+ });
44
+ }, u = (e) => s.succeed(c, l(e));
45
+ //#endregion
46
+ export { c as RoomGeometryRollbackPort, l as captureRoomGeometryRollbackPort, r as captureRoomGeometryRollbackRequest, u as roomGeometryRollbackLayer };
@@ -0,0 +1,209 @@
1
+ import { BudgetExceeded as e, ProtocolError as t } from "./errors.js";
2
+ import { geometryOwnData as n } from "./geometryTileCodec.js";
3
+ import { geometryPersistenceId as r, geometryPersistenceInteger as i } from "./geometryPersistenceData.js";
4
+ import { captureRoomGeometryRollbackRequest as a } from "./geometryAdminData.js";
5
+ import { captureGeometryPreparedBaseline as o } from "./geometryPrepared.js";
6
+ import { captureGeometryActivation as s, captureGeometryActorReadFrame as c } from "./geometryActorInventory.js";
7
+ import { captureRoomSnapshotEffectRunner as l } from "./snapshotBlobIndex.js";
8
+ import { captureRoomGeometryResourceIdentity as u, captureRoomGeometryResourceState as d } from "./geometryHost.js";
9
+ import { bindGeometryChunkLeases as f } from "./geometryChunkLeases.js";
10
+ import { makeGeometryRollbackCoordinator as p } from "./geometryRollbackCoordinator.js";
11
+ import { Effect as m, Option as h } from "effect";
12
+ //#region src/geometryRollbackSource.ts
13
+ var g = () => new t({ detail: "Actual administrative geometry rollback source remains unconfirmed" }), _ = (t) => {
14
+ let f = n(t, [
15
+ "authorize",
16
+ "preparation",
17
+ "persistence",
18
+ "leases",
19
+ "maxJobsPerResource",
20
+ "maxPatchBytes",
21
+ "maxPendingBytes"
22
+ ], [
23
+ "authorize",
24
+ "preparation",
25
+ "persistence",
26
+ "leases"
27
+ ]), _ = n(f.preparation, ["prepare"]), v = n(f.persistence, [
28
+ "publish",
29
+ "observe",
30
+ "commit",
31
+ "exportSubject",
32
+ "eraseSubject"
33
+ ]), y = f.authorize, b = f.leases, x = (e, t, n, r) => Object.hasOwn(f, e) ? i(f[e], n, r) : t, S = x("maxJobsPerResource", 64, 1, 4096), C = x("maxPatchBytes", 262144, 512, 16777216), w = x("maxPendingBytes", 16777216, 512, 67108864);
34
+ if (typeof y != "function" || typeof b != "function" || typeof _.prepare != "function" || Object.values(v).some((e) => typeof e != "function")) throw g();
35
+ let T = y.bind(t), E = b.bind(t), D = Object.freeze({ prepare: _.prepare.bind(f.preparation) }), O = Object.freeze({
36
+ publish: v.publish.bind(f.persistence),
37
+ observe: v.observe.bind(f.persistence),
38
+ commit: v.commit.bind(f.persistence),
39
+ exportSubject: v.exportSubject.bind(f.persistence),
40
+ eraseSubject: v.eraseSubject.bind(f.persistence)
41
+ }), k = /* @__PURE__ */ new WeakMap(), A = async (e, t) => {
42
+ if (!m.isEffect(t)) throw g();
43
+ return e(t);
44
+ }, j = (t) => m.flatMap(m.context(), (n) => m.uninterruptible(m.tryPromise({
45
+ try: () => t(l(n)),
46
+ catch: (t) => t instanceof e ? t : g()
47
+ }))), M = (e, t, n) => {
48
+ if (d(t), e.type !== "user" || e.tenantId !== t.scope.tenantId) throw g();
49
+ let i = c(t.inventory), a = {
50
+ cx: n.cx,
51
+ cy: n.cy,
52
+ ...n.cz === void 0 ? {} : { cz: n.cz }
53
+ }, s = o(i, a);
54
+ return Object.freeze({
55
+ scope: s.scope,
56
+ owner: Object.freeze({
57
+ roomId: t.scope.roomId,
58
+ hostId: t.scope.hostId,
59
+ epoch: t.scope.epoch
60
+ }),
61
+ subject: Object.freeze({
62
+ id: r(e.id),
63
+ kind: e.type
64
+ }),
65
+ target: n.target,
66
+ requestId: n.requestId
67
+ });
68
+ }, N = (t, n, r) => {
69
+ let i = M(t, n, r), a = r.requestId, o = k.get(n), s = o?.get(a);
70
+ if (s) {
71
+ if (JSON.stringify(s.input) !== JSON.stringify(i) || s.active) throw g();
72
+ return s.caller = structuredClone(t), s;
73
+ }
74
+ let c = o ?? /* @__PURE__ */ new Map();
75
+ if (c.size >= S) throw new e({
76
+ budget: "geometryHostRollbackJobs",
77
+ limit: S
78
+ });
79
+ if ((c.size + 1) * C > w) throw new e({
80
+ budget: "geometryHostRollbackReservedBytes",
81
+ limit: w
82
+ });
83
+ let l = {
84
+ request: r,
85
+ input: i,
86
+ caller: structuredClone(t),
87
+ coordinator: null,
88
+ leases: null,
89
+ token: null,
90
+ held: null,
91
+ closed: !1,
92
+ active: !1,
93
+ completion: null,
94
+ finish: null
95
+ };
96
+ return c.set(a, l), k.set(n, c), l;
97
+ }, P = async (e, t) => {
98
+ if (t.held) {
99
+ if (typeof await A(e, t.held.release()) != "boolean") throw g();
100
+ t.held = null;
101
+ }
102
+ }, F = async (e, t, n, r) => {
103
+ if (M(t, n, r), await A(e, T(t, n, r)) !== void 0) throw g();
104
+ }, I = async (e, t) => {
105
+ if (e.active) throw g();
106
+ e.active = !0, e.completion = new Promise((t) => {
107
+ e.finish = t;
108
+ });
109
+ try {
110
+ return await t();
111
+ } finally {
112
+ e.active = !1, e.finish?.(), e.finish = null, e.completion = null;
113
+ }
114
+ };
115
+ return Object.freeze({
116
+ authorize: (e, t, n) => j(async (r) => {
117
+ let i = a(n);
118
+ await F(r, e, t, i);
119
+ }),
120
+ prepare: (e, t, r) => j(async (i) => {
121
+ let o = a(r);
122
+ await F(i, e, t, o);
123
+ let c = N(e, t, o);
124
+ return I(c, async () => {
125
+ if (await t.quiesce(), c.token) return s(t.inventory, c.token);
126
+ if (!c.coordinator) {
127
+ let e = await A(i, E(t)), r = n(e, ["tenantId", "acquire"]);
128
+ if (r.tenantId !== t.scope.tenantId || typeof r.acquire != "function") throw g();
129
+ c.leases = Object.freeze({
130
+ tenantId: t.scope.tenantId,
131
+ acquire: r.acquire.bind(e)
132
+ }), c.coordinator = p(D, O, c.leases, {
133
+ tenantId: t.scope.tenantId,
134
+ maxJobs: 1,
135
+ maxPatchBytes: C,
136
+ maxPendingBytes: C,
137
+ authorize: () => m.suspend(() => T(c.caller, t, c.request))
138
+ });
139
+ }
140
+ return c.token = await A(i, c.coordinator.prepareActivation(t.inventory, c.input)), c.token;
141
+ });
142
+ }),
143
+ resume: (e, t, r, i) => j(async (o) => {
144
+ let c = a(r), l = s(t.inventory, i);
145
+ await F(o, e, t, c);
146
+ let u = N(e, t, c);
147
+ if (u.token !== l || !u.leases) throw g();
148
+ return I(u, async () => {
149
+ await P(o, u);
150
+ let r = h.getOrThrow(await A(o, u.leases.acquire(u.input.scope))), i = n(r, ["renew", "release"]);
151
+ if (typeof i.renew != "function" || typeof i.release != "function" || (u.held = Object.freeze({
152
+ renew: i.renew,
153
+ release: i.release
154
+ }), await A(o, u.held.renew()) !== !0)) throw g();
155
+ let a = await A(o, O.observe(u.input.scope)), s = l.receipt;
156
+ if (JSON.stringify(a.scope) !== JSON.stringify(u.input.scope) || a.revision !== s.revision || a.artifact.blobSha256 !== s.blobSha256 || a.artifact.contentSha256 !== s.contentSha256 || await A(o, u.held.renew()) !== !0) throw g();
157
+ await F(o, e, t, c);
158
+ });
159
+ }),
160
+ release: (e, t) => j(async (n) => {
161
+ u(e);
162
+ let r = a(t), i = k.get(e)?.get(r.requestId);
163
+ if (i) {
164
+ if (JSON.stringify(i.request) !== JSON.stringify(r)) throw g();
165
+ i.active && await (i.completion ?? Promise.reject(g())), await P(n, i), i.coordinator && !i.closed && (await A(n, i.coordinator.close()), i.closed = !0, i.token || (i.coordinator = null, i.leases = null, i.closed = !1));
166
+ }
167
+ })
168
+ });
169
+ }, v = (e, t) => {
170
+ let r = n(t, [
171
+ "authorize",
172
+ "preparation",
173
+ "persistence",
174
+ "namespace",
175
+ "ttlMs",
176
+ "maxJobsPerResource",
177
+ "maxPatchBytes",
178
+ "maxPendingBytes"
179
+ ], [
180
+ "authorize",
181
+ "preparation",
182
+ "persistence",
183
+ "namespace",
184
+ "ttlMs"
185
+ ]), a = Object.getOwnPropertyDescriptor(e, "connectionRegistry"), o = Object.getOwnPropertyDescriptor(e, "hotStore");
186
+ if (!a?.enumerable || !("value" in a) || !a.value || !o?.enumerable || !("value" in o) || typeof o.value != "function" || typeof r.namespace != "string") throw g();
187
+ let s = Object.freeze({
188
+ connectionRegistry: a.value,
189
+ hotStore: o.value.bind(e)
190
+ }), c = r.namespace, l = i(r.ttlMs, 1);
191
+ return _({
192
+ authorize: r.authorize,
193
+ preparation: r.preparation,
194
+ persistence: r.persistence,
195
+ ...Object.hasOwn(r, "maxJobsPerResource") ? { maxJobsPerResource: i(r.maxJobsPerResource, 1, 4096) } : {},
196
+ ...Object.hasOwn(r, "maxPatchBytes") ? { maxPatchBytes: i(r.maxPatchBytes, 512, 16777216) } : {},
197
+ ...Object.hasOwn(r, "maxPendingBytes") ? { maxPendingBytes: i(r.maxPendingBytes, 512, 67108864) } : {},
198
+ leases: (e) => m.tryPromise({
199
+ try: () => f(s, {
200
+ namespace: c,
201
+ ttlMs: l,
202
+ tenantId: e.scope.tenantId
203
+ }),
204
+ catch: () => g()
205
+ })
206
+ });
207
+ };
208
+ //#endregion
209
+ export { v as bindRoomGeometryRollbackSource, _ as makeRoomGeometryRollbackSource };