@voltro/plugin-rooms 0.0.0-stage → 0.88.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 +24492 -0
  2. package/LICENSE +61 -0
  3. package/README.md +9204 -2
  4. package/SECURITY.md +56 -0
  5. package/THIRD-PARTY-NOTICES.md +12496 -0
  6. package/dist/actor.js +1473 -0
  7. package/dist/apiBinding.js +677 -0
  8. package/dist/apiRegistryBinding.js +398 -0
  9. package/dist/apiReservations.js +432 -0
  10. package/dist/baselines.js +72 -0
  11. package/dist/bots.d.ts +1485 -0
  12. package/dist/bots.js +562 -0
  13. package/dist/catalog.js +79 -0
  14. package/dist/checkpointJson.js +23 -0
  15. package/dist/checkpointStore.js +385 -0
  16. package/dist/client.js +55 -0
  17. package/dist/clockSync.js +50 -0
  18. package/dist/collision.js +155 -0
  19. package/dist/commandDelivery.js +100 -0
  20. package/dist/commandRecord.js +10 -0
  21. package/dist/commandWithdrawal.js +182 -0
  22. package/dist/connection.js +496 -0
  23. package/dist/controlCarrier.js +374 -0
  24. package/dist/controlRegistry.js +78 -0
  25. package/dist/controlTarget.js +44 -0
  26. package/dist/controlTransport.js +573 -0
  27. package/dist/developmentBinding.js +112 -0
  28. package/dist/directory.js +322 -0
  29. package/dist/directoryProjection.js +116 -0
  30. package/dist/errors.d.ts +125 -0
  31. package/dist/errors.js +52 -0
  32. package/dist/fixed.d.ts +284 -0
  33. package/dist/fixed.js +10 -0
  34. package/dist/fixed32.js +133 -0
  35. package/dist/fixedCollision.js +59 -0
  36. package/dist/fixedCollision32.js +108 -0
  37. package/dist/fixedMath.js +55 -0
  38. package/dist/fixedRaw.js +10 -0
  39. package/dist/fixedSlabs.js +33 -0
  40. package/dist/fixedTrig.js +47 -0
  41. package/dist/fixedTrig32.js +37 -0
  42. package/dist/fixedVectors.js +112 -0
  43. package/dist/fixedVectors32.js +94 -0
  44. package/dist/fixedWide.js +49 -0
  45. package/dist/fixedWords.js +45 -0
  46. package/dist/gateway.js +56 -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 +81 -0
  54. package/dist/geometryActorInventory.js +107 -0
  55. package/dist/geometryAdminClient.js +86 -0
  56. package/dist/geometryAdminData.js +31 -0
  57. package/dist/geometryAdminFixtures.js +49 -0
  58. package/dist/geometryAdminPorts.js +4 -0
  59. package/dist/geometryAdminRpc.js +57 -0
  60. package/dist/geometryAdminRpcRoutes.js +48 -0
  61. package/dist/geometryAdminSchemas.js +38 -0
  62. package/dist/geometryAdministration.js +189 -0
  63. package/dist/geometryAdministrationPorts.js +4 -0
  64. package/dist/geometryApiBinding.js +164 -0
  65. package/dist/geometryAppStorage.js +57 -0
  66. package/dist/geometryArtifacts.js +197 -0
  67. package/dist/geometryAssetBundle.js +116 -0
  68. package/dist/geometryAssetClient.js +24 -0
  69. package/dist/geometryAssetData.js +105 -0
  70. package/dist/geometryAssetHttp.js +122 -0
  71. package/dist/geometryAssetPorts.js +4 -0
  72. package/dist/geometryAssetRpc.js +29 -0
  73. package/dist/geometryAssetRpcRoutes.js +39 -0
  74. package/dist/geometryAssetStorageGrant.js +102 -0
  75. package/dist/geometryBoxOverlap.js +109 -0
  76. package/dist/geometryCatalogueDigest.js +110 -0
  77. package/dist/geometryCellCoverage.js +84 -0
  78. package/dist/geometryCellLoader.js +27 -0
  79. package/dist/geometryChannel.js +133 -0
  80. package/dist/geometryChunkHttp.js +53 -0
  81. package/dist/geometryChunkLeases.js +21 -0
  82. package/dist/geometryClient.d.ts +1429 -0
  83. package/dist/geometryClient.js +148 -0
  84. package/dist/geometryClientChunks.js +329 -0
  85. package/dist/geometryClientDelta.js +24 -0
  86. package/dist/geometryClientHttp.js +36 -0
  87. package/dist/geometryClientInterest.js +108 -0
  88. package/dist/geometryClientStatic.js +33 -0
  89. package/dist/geometryCms.d.ts +763 -0
  90. package/dist/geometryCms.js +216 -0
  91. package/dist/geometryCommitCoordinator.js +240 -0
  92. package/dist/geometryCompactionFixture.js +83 -0
  93. package/dist/geometryCompactionStrategies.js +37 -0
  94. package/dist/geometryConnectionClient.js +22 -0
  95. package/dist/geometryDerivationFixtures.js +140 -0
  96. package/dist/geometryDerivationStrategies.js +26 -0
  97. package/dist/geometryDigest.js +12 -0
  98. package/dist/geometryEditChannel.js +69 -0
  99. package/dist/geometryEditIngress.js +262 -0
  100. package/dist/geometryEdits.js +365 -0
  101. package/dist/geometryEnvelope.js +40 -0
  102. package/dist/geometryGridRaycast.js +91 -0
  103. package/dist/geometryGridSweep.js +91 -0
  104. package/dist/geometryHeightfield.js +165 -0
  105. package/dist/geometryHeightfieldRaycast.js +73 -0
  106. package/dist/geometryHeightfieldSweep.js +84 -0
  107. package/dist/geometryHeightfieldVolume.js +44 -0
  108. package/dist/geometryHost.js +321 -0
  109. package/dist/geometryHostDirectory.js +206 -0
  110. package/dist/geometryHostMutations.js +136 -0
  111. package/dist/geometryHostStreams.js +123 -0
  112. package/dist/geometryHttpBody.js +75 -0
  113. package/dist/geometryHttpRoutes.js +111 -0
  114. package/dist/geometryImportGltf.js +299 -0
  115. package/dist/geometryImportLdtk.js +53 -0
  116. package/dist/geometryImportPng.js +143 -0
  117. package/dist/geometryImportPublication.js +66 -0
  118. package/dist/geometryImportTiled.js +38 -0
  119. package/dist/geometryImportTiles.js +135 -0
  120. package/dist/geometryImportVox.js +129 -0
  121. package/dist/geometryImportedSource.js +100 -0
  122. package/dist/geometryInspectEndpoint.js +247 -0
  123. package/dist/geometryInspection.js +91 -0
  124. package/dist/geometryInstall.js +120 -0
  125. package/dist/geometryJournalArchiveData.js +20 -0
  126. package/dist/geometryJournalArchiveIndex.js +329 -0
  127. package/dist/geometryJournalArchiveTable.js +20 -0
  128. package/dist/geometryJournalCompaction.js +99 -0
  129. package/dist/geometryJournalPatch.js +46 -0
  130. package/dist/geometryJournalRetention.js +111 -0
  131. package/dist/geometryJournalRetentionSchemas.js +35 -0
  132. package/dist/geometryJournalRetentionSweep.js +111 -0
  133. package/dist/geometryJournalRetentionWorkflow.js +27 -0
  134. package/dist/geometryJournalRetentionWorkflowData.js +30 -0
  135. package/dist/geometryJournalStorage.js +147 -0
  136. package/dist/geometryLoader.js +117 -0
  137. package/dist/geometryManifest.js +112 -0
  138. package/dist/geometryManifestChannel.js +92 -0
  139. package/dist/geometryManifestClient.js +121 -0
  140. package/dist/geometryManifestData.js +48 -0
  141. package/dist/geometryManifestPorts.js +4 -0
  142. package/dist/geometryManifestPublication.js +108 -0
  143. package/dist/geometryManifestSource.js +67 -0
  144. package/dist/geometryMigrationJournal.js +13 -0
  145. package/dist/geometryMigrationStrategies.js +6 -0
  146. package/dist/geometryMigrations.js +322 -0
  147. package/dist/geometryNativeMetadata.js +51 -0
  148. package/dist/geometryPatch.js +169 -0
  149. package/dist/geometryPersistence.js +448 -0
  150. package/dist/geometryPersistenceCapture.js +68 -0
  151. package/dist/geometryPersistenceData.js +139 -0
  152. package/dist/geometryPersistencePorts.js +4 -0
  153. package/dist/geometryPlayerAdmission.js +33 -0
  154. package/dist/geometryPlayerEditOwner.js +264 -0
  155. package/dist/geometryPlayerEdits.js +48 -0
  156. package/dist/geometryPrepared.js +187 -0
  157. package/dist/geometryPrivacyFence.js +23 -0
  158. package/dist/geometryProceduralPublication.js +90 -0
  159. package/dist/geometryProceduralWorker.js +163 -0
  160. package/dist/geometryPublication.js +109 -0
  161. package/dist/geometryRayAlgebra.js +115 -0
  162. package/dist/geometryReadClient.js +156 -0
  163. package/dist/geometryReadPorts.js +4 -0
  164. package/dist/geometryReadRpc.js +26 -0
  165. package/dist/geometryReadRpcRoutes.js +46 -0
  166. package/dist/geometryReliablePublication.js +81 -0
  167. package/dist/geometryReloadPorts.js +45 -0
  168. package/dist/geometryReloadSource.js +277 -0
  169. package/dist/geometryRenderCache.js +164 -0
  170. package/dist/geometryRenderLod.js +101 -0
  171. package/dist/geometryRollback.js +124 -0
  172. package/dist/geometryRollbackCoordinator.js +202 -0
  173. package/dist/geometryRollbackPorts.js +45 -0
  174. package/dist/geometryRollbackSource.js +208 -0
  175. package/dist/geometryRollbackStore.js +197 -0
  176. package/dist/geometrySchemas.js +26 -0
  177. package/dist/geometryServer.d.ts +2766 -0
  178. package/dist/geometryServer.js +62 -0
  179. package/dist/geometryShapeRaycast.js +110 -0
  180. package/dist/geometryShapeSegments.js +33 -0
  181. package/dist/geometryShapes.js +222 -0
  182. package/dist/geometrySnapshot.js +75 -0
  183. package/dist/geometrySnapshotChannel.js +159 -0
  184. package/dist/geometrySnapshotClient.js +158 -0
  185. package/dist/geometrySnapshotPreparation.js +75 -0
  186. package/dist/geometrySnapshotServer.js +190 -0
  187. package/dist/geometrySqlOwner.js +20 -0
  188. package/dist/geometryStorage.js +126 -0
  189. package/dist/geometryStorageGrant.js +68 -0
  190. package/dist/geometryStorageIdentity.js +8 -0
  191. package/dist/geometryTileArtifact.js +9 -0
  192. package/dist/geometryTileCodec.js +193 -0
  193. package/dist/geometryTileCollision.js +95 -0
  194. package/dist/geometryTileNavigation.js +127 -0
  195. package/dist/geometryTileView.js +34 -0
  196. package/dist/geometryVersionActivation.js +113 -0
  197. package/dist/geometryVersionClient.js +237 -0
  198. package/dist/geometryVersionCompare.js +39 -0
  199. package/dist/geometryVersionMigration.js +105 -0
  200. package/dist/geometryVoxel.js +252 -0
  201. package/dist/geometryWorldEntitySubject.js +31 -0
  202. package/dist/geometryWorldExtent.js +11 -0
  203. package/dist/geometryWorldMetadata.js +37 -0
  204. package/dist/geometryWorldStrategyFixtures.js +126 -0
  205. package/dist/geometryWorldView.js +306 -0
  206. package/dist/host.js +127 -0
  207. package/dist/hostBinding.js +276 -0
  208. package/dist/hostCellObservation.js +113 -0
  209. package/dist/hostClientCapacity.js +89 -0
  210. package/dist/hostCommandScope.js +63 -0
  211. package/dist/hostController.js +3093 -0
  212. package/dist/hostDeployment.js +64 -0
  213. package/dist/hostDrain.js +151 -0
  214. package/dist/hostDrainPorts.js +4 -0
  215. package/dist/hostDriver.js +178 -0
  216. package/dist/hostLane.js +287 -0
  217. package/dist/hostListener.js +78 -0
  218. package/dist/hostListenerBinding.js +18 -0
  219. package/dist/hostLoopObservation.js +89 -0
  220. package/dist/hostMetrics.js +55 -0
  221. package/dist/hostRegistryBinding.js +417 -0
  222. package/dist/hostSelection.js +15 -0
  223. package/dist/hostShutdown.js +46 -0
  224. package/dist/hostTurnObservation.js +52 -0
  225. package/dist/identities.js +3 -0
  226. package/dist/index.d.ts +8632 -0
  227. package/dist/index.js +231 -0
  228. package/dist/inputReceipts.js +62 -0
  229. package/dist/inputRedundancy.js +54 -0
  230. package/dist/inspect.js +237 -0
  231. package/dist/lockstep.d.ts +436 -0
  232. package/dist/lockstep.js +381 -0
  233. package/dist/lockstepAdmission.js +261 -0
  234. package/dist/lockstepAdmissionCodec.js +93 -0
  235. package/dist/lockstepAdmissionPorts.js +4 -0
  236. package/dist/lockstepClientSession.js +577 -0
  237. package/dist/lockstepDefinition.js +147 -0
  238. package/dist/lockstepHostLoop.js +242 -0
  239. package/dist/lockstepInitialAdmission.js +66 -0
  240. package/dist/lockstepInitialStrategyFixtures.js +44 -0
  241. package/dist/lockstepJournal.js +394 -0
  242. package/dist/lockstepJournalCodec.js +253 -0
  243. package/dist/lockstepJournalPorts.js +4 -0
  244. package/dist/lockstepJournalRebuild.js +207 -0
  245. package/dist/lockstepJournalRows.js +56 -0
  246. package/dist/lockstepMembers.js +130 -0
  247. package/dist/lockstepMessages.js +46 -0
  248. package/dist/lockstepOwnedRoom.js +763 -0
  249. package/dist/lockstepPolicies.js +83 -0
  250. package/dist/lockstepReact.js +46 -0
  251. package/dist/lockstepRecoveryTruth.js +120 -0
  252. package/dist/lockstepRosterConfig.js +31 -0
  253. package/dist/lockstepSeed.js +11 -0
  254. package/dist/lockstepSeedFixture.js +19 -0
  255. package/dist/lockstepServer.d.ts +3897 -0
  256. package/dist/lockstepServer.js +324 -0
  257. package/dist/lockstepServerConfig.js +100 -0
  258. package/dist/lockstepServerRoles.js +402 -0
  259. package/dist/lockstepServerStrategyFixtures.js +32 -0
  260. package/dist/lockstepStrategies.js +5 -0
  261. package/dist/lockstepStrategyFixtures.js +136 -0
  262. package/dist/lockstepTerminal.js +89 -0
  263. package/dist/lockstepTerminalPorts.js +4 -0
  264. package/dist/lockstepTransport.js +772 -0
  265. package/dist/lockstepTransportConfig.js +31 -0
  266. package/dist/lockstepWireRoster.js +33 -0
  267. package/dist/matchRoomProvider.js +31 -0
  268. package/dist/matchRooms.js +18 -0
  269. package/dist/membershipObserver.js +46 -0
  270. package/dist/moderation.js +97 -0
  271. package/dist/movementSpecials.js +103 -0
  272. package/dist/ownership.js +16 -0
  273. package/dist/ownershipWithdrawal.js +17 -0
  274. package/dist/pcg32.js +95 -0
  275. package/dist/ports.d.ts +1241 -0
  276. package/dist/ports.js +10 -0
  277. package/dist/quaternion.js +69 -0
  278. package/dist/react.d.ts +406 -0
  279. package/dist/react.js +108 -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 +242 -0
  283. package/dist/reaperSchemas.js +41 -0
  284. package/dist/reaperWorkflow.js +69 -0
  285. package/dist/recovery.js +188 -0
  286. package/dist/recoverySeats.js +25 -0
  287. package/dist/replay.d.ts +273 -0
  288. package/dist/replay.js +484 -0
  289. package/dist/replayPorts.js +4 -0
  290. package/dist/replayRecording.js +66 -0
  291. package/dist/replaySchema.js +156 -0
  292. package/dist/replayStorage.d.ts +149 -0
  293. package/dist/replayStorage.js +484 -0
  294. package/dist/reservationBatch.js +421 -0
  295. package/dist/reservationSchemas.js +16 -0
  296. package/dist/reservations.js +258 -0
  297. package/dist/reservePort.js +68 -0
  298. package/dist/resolvedOptions.js +3 -0
  299. package/dist/room.d.ts +1006 -0
  300. package/dist/room.js +283 -0
  301. package/dist/roomAccessSweep.js +94 -0
  302. package/dist/roomAppCommandControl.js +58 -0
  303. package/dist/roomAuthoringStrategy.js +16 -0
  304. package/dist/roomErasure.js +197 -0
  305. package/dist/roomPoolRuntimeDefaults.js +23 -0
  306. package/dist/roomPoolSelection.js +18 -0
  307. package/dist/roomPoolTopology.js +211 -0
  308. package/dist/rpc.d.ts +551 -0
  309. package/dist/rpc.js +111 -0
  310. package/dist/rpcClient.js +151 -0
  311. package/dist/rpcRoutes.js +27 -0
  312. package/dist/runtime.js +1122 -0
  313. package/dist/schemaHistory.js +97 -0
  314. package/dist/seatStore.js +150 -0
  315. package/dist/seatStrategyFixtures.js +51 -0
  316. package/dist/seatSubject.js +31 -0
  317. package/dist/seats.js +129 -0
  318. package/dist/serverSession.js +810 -0
  319. package/dist/serverSessionConfig.js +42 -0
  320. package/dist/sessionAdmission.js +52 -0
  321. package/dist/sidecarAdmission.js +102 -0
  322. package/dist/sidecarConfig.js +115 -0
  323. package/dist/sidecarConfigPublication.js +63 -0
  324. package/dist/sidecarHostListener.js +207 -0
  325. package/dist/sidecarIpc.js +204 -0
  326. package/dist/sidecarPeer.js +309 -0
  327. package/dist/sidecarProcessPort.js +27 -0
  328. package/dist/sidecarRuntime.js +167 -0
  329. package/dist/sidecarSelection.js +141 -0
  330. package/dist/sidecarWire.js +177 -0
  331. package/dist/sidecarWrites.js +162 -0
  332. package/dist/simulation.d.ts +391 -0
  333. package/dist/simulation.js +281 -0
  334. package/dist/simulationAuthoring.js +28 -0
  335. package/dist/simulationBytes.js +26 -0
  336. package/dist/simulationConformance.js +304 -0
  337. package/dist/simulationInputHistoryCapture.js +34 -0
  338. package/dist/simulationInputHistoryWire.js +192 -0
  339. package/dist/simulationOptionsWire.js +77 -0
  340. package/dist/simulationRecoveryWire.js +133 -0
  341. package/dist/simulationReplay.js +126 -0
  342. package/dist/simulationSnapshotWire.js +111 -0
  343. package/dist/simulationState.js +177 -0
  344. package/dist/snapshotBlob.js +125 -0
  345. package/dist/snapshotBlobCleanup.js +92 -0
  346. package/dist/snapshotBlobIndex.js +37 -0
  347. package/dist/snapshotBudget.js +79 -0
  348. package/dist/snapshotChain.js +184 -0
  349. package/dist/snapshotErasure.js +171 -0
  350. package/dist/snapshotInspection.js +104 -0
  351. package/dist/snapshotSegmentBlobs.js +57 -0
  352. package/dist/snapshotUploads.js +165 -0
  353. package/dist/socketTransport.js +252 -0
  354. package/dist/spatial.js +103 -0
  355. package/dist/spectatorPolicy.js +25 -0
  356. package/dist/spectatorProducer.js +88 -0
  357. package/dist/startFailureCause.js +3 -0
  358. package/dist/stateCodec.js +657 -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 +181 -0
  364. package/dist/streamFraming.js +121 -0
  365. package/dist/streamTransport.js +265 -0
  366. package/dist/subjectAdmission.js +49 -0
  367. package/dist/subjectPrivacy.js +280 -0
  368. package/dist/subjectPrivacyBinding.js +89 -0
  369. package/dist/systemManifest.js +181 -0
  370. package/dist/tables.js +158 -0
  371. package/dist/testHarness.js +88 -0
  372. package/dist/testing.d.ts +3684 -0
  373. package/dist/testing.js +220 -0
  374. package/dist/testingPorts.js +270 -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 +216 -0
  379. package/dist/transform3d.js +117 -0
  380. package/dist/transformCollection.js +23 -0
  381. package/dist/transformCollection3d.js +23 -0
  382. package/dist/transformCollectionCore.js +155 -0
  383. package/dist/transformFrames.js +120 -0
  384. package/dist/transformPrediction3d.js +126 -0
  385. package/dist/transformRules.js +122 -0
  386. package/dist/transformSchemas.js +19 -0
  387. package/dist/transport.js +31 -0
  388. package/dist/transportAuthoring.js +28 -0
  389. package/dist/transportCleanup.js +21 -0
  390. package/dist/transportConformance.js +123 -0
  391. package/dist/transportConnector.js +81 -0
  392. package/dist/transportEndpoints.js +37 -0
  393. package/dist/transportsServer.d.ts +5515 -0
  394. package/dist/transportsServer.js +6 -0
  395. package/dist/viewProjection.js +15 -0
  396. package/dist/web.d.ts +2286 -0
  397. package/dist/web.js +517 -0
  398. package/dist/webTransportClient.js +172 -0
  399. package/dist/wire.d.ts +992 -0
  400. package/dist/wire.js +491 -0
  401. package/dist/withdrawalPort.js +27 -0
  402. package/dist/world.d.ts +1894 -0
  403. package/dist/world.js +332 -0
  404. package/dist/worldActorReceipts.js +47 -0
  405. package/dist/worldActorTransferSnapshot.js +13 -0
  406. package/dist/worldAdmissionPending.js +7 -0
  407. package/dist/worldBoundaryCoordinator.js +147 -0
  408. package/dist/worldCatalog.js +80 -0
  409. package/dist/worldCellAllocation.js +202 -0
  410. package/dist/worldCellDestination.js +67 -0
  411. package/dist/worldCells.js +488 -0
  412. package/dist/worldChange.js +31 -0
  413. package/dist/worldClient.js +663 -0
  414. package/dist/worldClientControl.js +140 -0
  415. package/dist/worldClientPendingInput.js +15 -0
  416. package/dist/worldClientRpc.js +132 -0
  417. package/dist/worldClientRpcRoutes.js +42 -0
  418. package/dist/worldClientSchemas.js +27 -0
  419. package/dist/worldCommands.js +139 -0
  420. package/dist/worldData.js +41 -0
  421. package/dist/worldDefaultBinding.js +376 -0
  422. package/dist/worldDefaultGroupAdmission.js +81 -0
  423. package/dist/worldDefaultGroupAppServices.js +30 -0
  424. package/dist/worldDefaultGroupCompensation.js +108 -0
  425. package/dist/worldDefaultGroupContinuation.js +95 -0
  426. package/dist/worldDefaultGroupControl.js +71 -0
  427. package/dist/worldDefaultGroupMembers.js +84 -0
  428. package/dist/worldDefaultGroups.js +20 -0
  429. package/dist/worldDefaultPending.js +78 -0
  430. package/dist/worldDefaultService.js +244 -0
  431. package/dist/worldEntities.js +2979 -0
  432. package/dist/worldEntityCodec.js +20 -0
  433. package/dist/worldEntityHandoffView.js +153 -0
  434. package/dist/worldGeometry.js +169 -0
  435. package/dist/worldGhostAdmission.js +64 -0
  436. package/dist/worldGhostDestination.js +117 -0
  437. package/dist/worldGhostGateway.js +131 -0
  438. package/dist/worldGhostHandshake.js +107 -0
  439. package/dist/worldGhostHost.js +41 -0
  440. package/dist/worldGhostIngress.js +131 -0
  441. package/dist/worldGhostNeighborhood.js +69 -0
  442. package/dist/worldGhostNeighbors.js +85 -0
  443. package/dist/worldGhostOutbound.js +109 -0
  444. package/dist/worldGhostPublisher.js +215 -0
  445. package/dist/worldGhostReceiver.js +212 -0
  446. package/dist/worldGhostSender.js +145 -0
  447. package/dist/worldGhostSocket.js +77 -0
  448. package/dist/worldGhostWire.js +171 -0
  449. package/dist/worldGroupCommand.js +48 -0
  450. package/dist/worldGroupDeadline.js +114 -0
  451. package/dist/worldGroupPreparation.js +114 -0
  452. package/dist/worldGroupReadyControl.js +127 -0
  453. package/dist/worldGroupSupervisor.js +119 -0
  454. package/dist/worldHandoffMetrics.js +58 -0
  455. package/dist/worldHandoffView.js +99 -0
  456. package/dist/worldHostSource.js +68 -0
  457. package/dist/worldInspectEndpoint.js +249 -0
  458. package/dist/worldInspection.js +108 -0
  459. package/dist/worldInstanceAdmission.js +30 -0
  460. package/dist/worldInstanceAllocation.js +115 -0
  461. package/dist/worldInstanceDestination.js +63 -0
  462. package/dist/worldInstanceExpiry.js +281 -0
  463. package/dist/worldInstanceExpirySupervisor.js +87 -0
  464. package/dist/worldInstanceLifecycle.js +102 -0
  465. package/dist/worldInstanceState.js +51 -0
  466. package/dist/worldInstances.js +477 -0
  467. package/dist/worldJoin.js +55 -0
  468. package/dist/worldLayers.js +150 -0
  469. package/dist/worldLeases.js +77 -0
  470. package/dist/worldManifest.js +24 -0
  471. package/dist/worldMovement.js +62 -0
  472. package/dist/worldPersistence.js +133 -0
  473. package/dist/worldProjection.js +220 -0
  474. package/dist/worldReact.js +109 -0
  475. package/dist/worldRecoveryActor.js +34 -0
  476. package/dist/worldReturnAnchor.js +48 -0
  477. package/dist/worldRoomHooks.js +56 -0
  478. package/dist/worldRoomPool.js +26 -0
  479. package/dist/worldRoomSteps.js +132 -0
  480. package/dist/worldSeatBinding.js +35 -0
  481. package/dist/worldServer.d.ts +6936 -0
  482. package/dist/worldServer.js +48 -0
  483. package/dist/worldSourceSeatPending.js +8 -0
  484. package/dist/worldStrategyFixtures.js +163 -0
  485. package/dist/worldTesting.js +26 -0
  486. package/dist/worldTransitionDefaults.js +197 -0
  487. package/dist/worldTransitionExecutor.js +518 -0
  488. package/dist/worldTransitionGroup.js +112 -0
  489. package/dist/worldTransitionPhysicalSteps.js +39 -0
  490. package/dist/worldTransitionResolver.js +227 -0
  491. package/dist/worldTransitionSeatGroup.js +63 -0
  492. package/dist/worldTransitionSeats.js +259 -0
  493. package/dist/worldTransitionState.js +94 -0
  494. package/dist/worldTransitions.js +100 -0
  495. package/package.json +189 -4
@@ -0,0 +1,216 @@
1
+ import { BudgetExceeded as e, ProtocolError as t } from "./errors.js";
2
+ import { geometryOwnData as n } from "./geometryTileCodec.js";
3
+ import { verifyGeometryArtifact as r } from "./geometryArtifacts.js";
4
+ import { assertGeometryArtifactScope as i, captureGeometryCodecProfiles as a, geometryPersistenceId as o, geometryPersistenceInteger as s } from "./geometryPersistenceData.js";
5
+ import { captureGeometryAssetManifest as c, captureGeometryAssetRoot as l } from "./geometryAssetData.js";
6
+ import { geometryChunkHasWorldExtent as u } from "./geometryWorldExtent.js";
7
+ import { captureWorldCatalog as d } from "./world.js";
8
+ import { captureRoomSnapshotEffectRunner as f } from "./snapshotBlobIndex.js";
9
+ import { captureGeometryVersion as p } from "./geometryPersistenceCapture.js";
10
+ import { Effect as m } from "effect";
11
+ // src/geometryCms.ts
12
+ function h() {
13
+ throw new t({ detail: "Published CMS geometry selection, immutable object custody or current authorization remains unconfirmed" });
14
+ }
15
+ var g = (e, t) => {
16
+ if (!e || typeof e != "object" || Object.getPrototypeOf(e) !== Object.prototype) return h();
17
+ let n = {};
18
+ for (let r of t) {
19
+ let t = Object.getOwnPropertyDescriptor(e, r);
20
+ if (!t?.enumerable || !("value" in t)) return h();
21
+ n[r] = t.value;
22
+ }
23
+ return n;
24
+ }, _ = (c, l, _, v, y) => {
25
+ try {
26
+ let b = d([c])[0], x = b.geometry, S = n(v, [
27
+ "tenantId",
28
+ "version",
29
+ "contentType",
30
+ "scope",
31
+ "channel"
32
+ ], [
33
+ "tenantId",
34
+ "version",
35
+ "contentType",
36
+ "scope"
37
+ ]), C = n(S.scope, [
38
+ "site",
39
+ "environment",
40
+ "locale"
41
+ ]), w = Object.freeze({
42
+ site: o(C.site),
43
+ environment: o(C.environment),
44
+ locale: o(C.locale)
45
+ }), T = o(S.tenantId), E = o(S.version, 96), D = o(S.contentType, 96), O = n(y, [
46
+ "maxChunks",
47
+ "maxArtifactBytes",
48
+ "maxManifestBytes",
49
+ "codecLimits",
50
+ "authorize"
51
+ ], ["authorize"]), k = (e, t, n, r) => s(Object.hasOwn(O, e) ? O[e] : t, n, r), A = k("maxChunks", 256, 1, 4096), j = k("maxArtifactBytes", 52428800, 64, 268435456), M = k("maxManifestBytes", 262144, 256, 16777216), N = a(Object.hasOwn(O, "codecLimits") ? O.codecLimits : {}), P = g(l, ["contentType"]), F = g(_, ["load"]);
52
+ if (!x || x.static.kind !== "cms" || typeof O.authorize != "function" || typeof P.contentType != "function" || typeof F.load != "function") return h();
53
+ let I = Object.freeze({
54
+ tenantId: T,
55
+ version: E,
56
+ contentType: D,
57
+ scope: w,
58
+ worldId: b.name,
59
+ kind: x.kind,
60
+ geometryKey: x.static.key,
61
+ channel: Object.hasOwn(S, "channel") ? o(S.channel, 64) : x.static.channel
62
+ }), L = P.contentType.bind(l), R = F.load.bind(_), z = O.authorize;
63
+ return m.flatMap(m.context(), (a) => m.uninterruptible(m.tryPromise({
64
+ try: async () => {
65
+ let t = f(a), s = async () => {
66
+ let e = z(I);
67
+ if (!m.isEffect(e) || await t(e) !== void 0) return h();
68
+ }, c = async () => {
69
+ await s();
70
+ let t = await L(D).where("tenantId", "=", T).where("site", "=", w.site).where("environment", "=", w.environment).where("locale", "=", w.locale).where("geometryKey", "=", I.geometryKey).where("channel", "=", I.channel).where("geometryVersion", "=", E).where("worldId", "=", b.name).where("geometryKind", "=", x.kind).limit(2).all();
71
+ if (!Array.isArray(t) || t.length !== 1) return h();
72
+ let n = g(t[0], [
73
+ "id",
74
+ "revisionId",
75
+ "status",
76
+ "tenantId",
77
+ "site",
78
+ "environment",
79
+ "locale",
80
+ "geometryKey",
81
+ "channel",
82
+ "geometryVersion",
83
+ "worldId",
84
+ "geometryKind",
85
+ "geometryManifest"
86
+ ]);
87
+ if (n.status !== "published" || n.tenantId !== T || n.site !== w.site || n.environment !== w.environment || n.locale !== w.locale || n.geometryKey !== I.geometryKey || n.channel !== I.channel || n.geometryVersion !== E || n.worldId !== b.name || n.geometryKind !== x.kind || typeof n.geometryManifest != "string") return h();
88
+ if (o(n.id), o(n.revisionId), new TextEncoder().encode(n.geometryManifest).length > M) throw new e({
89
+ budget: "geometryCmsManifestBytes",
90
+ limit: M
91
+ });
92
+ return Object.freeze(n);
93
+ }, l = await c(), d = n(JSON.parse(l.geometryManifest), [
94
+ "tenantId",
95
+ "kind",
96
+ "worldId",
97
+ "version",
98
+ "chunks",
99
+ "manifestSha256"
100
+ ]), _ = p({
101
+ tenantId: d.tenantId,
102
+ kind: d.kind,
103
+ worldId: d.worldId,
104
+ version: d.version,
105
+ chunks: d.chunks
106
+ }, A, M);
107
+ if (_.tenantId !== T || _.worldId !== b.name || _.kind !== x.kind || _.version !== E || _.manifestSha256 !== d.manifestSha256) return h();
108
+ let v = [], y = 0;
109
+ for (let n of _.chunks) {
110
+ await s();
111
+ let a = R(n);
112
+ if (!m.isEffect(a)) return h();
113
+ let o = await t(a), c = await r(n.kind, o, n.blobSha256, N.get(n.kind) ?? {});
114
+ if (y += c.bytes().length, y > j) throw new e({
115
+ budget: "geometryCmsArtifactBytes",
116
+ limit: j
117
+ });
118
+ if (i(c, n), c.contentSha256 !== n.contentSha256 || !u(c, x.chunkSizeRaw)) return h();
119
+ v.push(c);
120
+ }
121
+ let S = await c();
122
+ return JSON.stringify(l) === JSON.stringify(S) ? (await s(), Object.freeze({
123
+ manifest: _,
124
+ artifacts: Object.freeze(v)
125
+ })) : h();
126
+ },
127
+ catch: (n) => n instanceof e ? n : new t({ detail: "CMS geometry source remains unconfirmed; no implicit channel/version fallback" })
128
+ })));
129
+ } catch (n) {
130
+ return m.fail(n instanceof e ? n : new t({ detail: "CMS geometry source declaration could not be admitted" }));
131
+ }
132
+ }, v = (r, i) => {
133
+ let a = n(i, [
134
+ "worlds",
135
+ "contentType",
136
+ "scope",
137
+ "authorize",
138
+ "maxAssets",
139
+ "maxManifestBytes"
140
+ ], [
141
+ "worlds",
142
+ "contentType",
143
+ "scope",
144
+ "authorize"
145
+ ]), u = d(a.worlds), p = n(a.scope, [
146
+ "site",
147
+ "environment",
148
+ "locale"
149
+ ]), _ = Object.freeze({
150
+ site: o(p.site),
151
+ environment: o(p.environment),
152
+ locale: o(p.locale)
153
+ }), v = o(a.contentType, 96), y = Object.hasOwn(a, "maxAssets") ? s(a.maxAssets, 1, 4096) : 1024, b = Object.hasOwn(a, "maxManifestBytes") ? s(a.maxManifestBytes, 512, 16777216) : 524288, x = g(r, ["contentType"]);
154
+ if (typeof x.contentType != "function" || typeof a.authorize != "function" || !u.some((e) => e.geometry?.static.kind === "cms")) return h();
155
+ let S = x.contentType.bind(r), C = a.authorize.bind(i);
156
+ return Object.freeze({ observe: (n) => {
157
+ try {
158
+ let r = l(n), i = u.find((e) => e.name === r.worldId)?.geometry;
159
+ if (!i || i.static.kind !== "cms") return h();
160
+ let a = Object.freeze({
161
+ ...r,
162
+ contentType: v,
163
+ scope: _,
164
+ geometryKey: i.static.key,
165
+ channel: i.static.channel,
166
+ geometryKind: i.kind
167
+ });
168
+ return m.flatMap(m.context(), (n) => m.uninterruptible(m.tryPromise({
169
+ try: async () => {
170
+ let t = f(n), s = async () => {
171
+ let e = C(a);
172
+ if (!m.isEffect(e) || await t(e) !== void 0) return h();
173
+ }, l = async () => {
174
+ await s();
175
+ let t = await S(v).where("tenantId", "=", r.tenantId).where("site", "=", _.site).where("environment", "=", _.environment).where("locale", "=", _.locale).where("geometryKey", "=", a.geometryKey).where("channel", "=", a.channel).where("geometryVersion", "=", r.version).where("worldId", "=", r.worldId).where("geometryKind", "=", i.kind).where("layerSetId", "=", r.layerSetId).limit(2).all();
176
+ if (!Array.isArray(t) || t.length !== 1) return h();
177
+ let n = g(t[0], [
178
+ "id",
179
+ "revisionId",
180
+ "status",
181
+ "tenantId",
182
+ "site",
183
+ "environment",
184
+ "locale",
185
+ "geometryKey",
186
+ "channel",
187
+ "geometryVersion",
188
+ "worldId",
189
+ "geometryKind",
190
+ "layerSetId",
191
+ "geometryAssetManifest"
192
+ ]);
193
+ if (n.status !== "published" || n.tenantId !== r.tenantId || n.site !== _.site || n.environment !== _.environment || n.locale !== _.locale || n.geometryKey !== a.geometryKey || n.channel !== a.channel || n.geometryVersion !== r.version || n.worldId !== r.worldId || n.geometryKind !== i.kind || n.layerSetId !== r.layerSetId || typeof n.geometryAssetManifest != "string") return h();
194
+ if (o(n.id), o(n.revisionId), new TextEncoder().encode(n.geometryAssetManifest).length > b) throw new e({
195
+ budget: "geometryCmsAssetManifestBytes",
196
+ limit: b
197
+ });
198
+ return Object.freeze(n);
199
+ }, u = await l(), d = c(JSON.parse(u.geometryAssetManifest), y, b);
200
+ if (JSON.stringify({
201
+ tenantId: d.tenantId,
202
+ worldId: d.worldId,
203
+ layerSetId: d.layerSetId,
204
+ version: d.version
205
+ }) !== JSON.stringify(r) || JSON.stringify(d) !== u.geometryAssetManifest) return h();
206
+ let p = await l();
207
+ return JSON.stringify(u) === JSON.stringify(p) ? (await s(), d) : h();
208
+ },
209
+ catch: (n) => n instanceof e ? n : new t({ detail: "Published CMS asset catalogue remains unconfirmed; no draft/channel/scope fallback" })
210
+ })));
211
+ } catch (n) {
212
+ return m.fail(n instanceof e ? n : new t({ detail: "CMS asset catalogue scope could not be admitted" }));
213
+ }
214
+ } });
215
+ };
216
+ export { v as cmsGeometryAssetManifestSource, _ as loadCmsGeometryPublication };
@@ -0,0 +1,240 @@
1
+ import { BudgetExceeded as e, ProtocolError as t } from "./errors.js";
2
+ import { captureSimulationBytes as n } from "./simulationBytes.js";
3
+ import { geometryOwnData as r } from "./geometryTileCodec.js";
4
+ import { captureGeometryOwner as i, captureGeometryPersistenceScope as a, captureGeometryPrivacyTarget as o, captureGeometryReceipt as s, captureGeometrySubject as c, geometryPersistenceId as l, geometryPersistenceInteger as u, geometryPersistenceRefusal as d } from "./geometryPersistenceData.js";
5
+ import { decodeGeometryPatch as f } from "./geometryPatch.js";
6
+ import { captureRoomSnapshotEffectRunner as p } from "./snapshotBlobIndex.js";
7
+ import { geometryPersistenceDigest as m } from "./geometryPersistenceCapture.js";
8
+ import { captureGeometryPlayerAdmission as h } from "./geometryPlayerAdmission.js";
9
+ import { Effect as g, Option as _ } from "effect";
10
+ import { HotError as v } from "@voltro/kv/hot/contract";
11
+ // src/geometryCommitCoordinator.ts
12
+ var y = () => new t({ detail: "Geometry coordinated operation or cleanup remains unconfirmed" }), b = (t, b, x) => {
13
+ let S = r(x, [
14
+ "tenantId",
15
+ "maxPending",
16
+ "maxPatchBytes",
17
+ "maxPendingBytes",
18
+ "maxSubjectFences"
19
+ ], ["tenantId"]), C = l(S.tenantId), w = Object.hasOwn(S, "maxPending") ? u(S.maxPending, 1, 4096) : 64, T = Object.hasOwn(S, "maxPatchBytes") ? u(S.maxPatchBytes, 512, 16777216) : 262144, E = Object.hasOwn(S, "maxPendingBytes") ? u(S.maxPendingBytes, 512, 67108864) : 16777216, D = Object.hasOwn(S, "maxSubjectFences") ? u(S.maxSubjectFences, 1, 65536) : 4096, O = r(t, [
20
+ "publish",
21
+ "observe",
22
+ "commit",
23
+ "exportSubject",
24
+ "eraseSubject"
25
+ ], ["commit", "eraseSubject"]), k = O.commit, A = O.eraseSubject, j = r(b, ["tenantId", "acquire"]), M = j.acquire;
26
+ if (typeof k != "function" || typeof A != "function" || typeof M != "function" || j.tenantId !== C) return d();
27
+ let N = k, P = A, F = M, I = /* @__PURE__ */ new Map(), L = /* @__PURE__ */ new Set(), R = !1, z = !1, B = !1, V = 0, H = () => [...I.values()].reduce((e, t) => e + t.input.patch.length, 0), U = () => Object.freeze({
28
+ pending: I.size,
29
+ pendingBytes: H(),
30
+ active: [...I.values()].filter((e) => e.active).length + V,
31
+ retainedReceipts: [...I.values()].filter((e) => e.receipt !== null).length,
32
+ subjectFences: L.size,
33
+ closing: R,
34
+ closed: z
35
+ }), W = async (e, t) => {
36
+ let n = t();
37
+ if (!g.isEffect(n)) throw y();
38
+ return e(n);
39
+ }, G = (t) => g.flatMap(g.context(), (n) => g.uninterruptible(g.tryPromise({
40
+ try: () => t(p(n)),
41
+ catch: (t) => t instanceof e ? t : t instanceof v ? new v({
42
+ operation: t.operation,
43
+ key: "geometryChunkLease",
44
+ reason: t.reason
45
+ }) : y()
46
+ }))), K = async (e, t) => {
47
+ if (!t.lease) return;
48
+ let n = t.lease;
49
+ if (typeof await W(e, () => n.release()) != "boolean") throw y();
50
+ t.lease = null;
51
+ }, q = (e) => {
52
+ let t = r(e, ["renew", "release"]);
53
+ return typeof t.renew != "function" || typeof t.release != "function" ? d() : Object.freeze({
54
+ renew: t.renew,
55
+ release: t.release
56
+ });
57
+ }, J = async (e, t, n) => {
58
+ n.active = !0, n.completion = new Promise((e) => {
59
+ n.finish = e;
60
+ });
61
+ let r = !1;
62
+ try {
63
+ r = !0, await K(e, n), r = !1;
64
+ let i = await W(e, () => F(n.input.scope));
65
+ if (_.isNone(i) || (n.lease = q(_.getOrThrow(i)), await W(e, () => n.lease.renew()) !== !0)) throw y();
66
+ n.attempted = !0;
67
+ let a = s(await W(e, () => N({
68
+ ...n.input,
69
+ patch: new Uint8Array(n.input.patch)
70
+ }))), o = n.metadata;
71
+ if (JSON.stringify(a.scope) !== JSON.stringify(n.input.scope) || a.requestId !== n.input.requestId || a.baseRevision !== o.baseRevision || a.revision !== o.revision || a.changed !== o.changed || a.blobSha256 !== o.blobSha256 || a.contentSha256 !== o.contentSha256 || (n.receipt = a, await W(e, () => n.lease.renew()) !== !0)) throw y();
72
+ return r = !0, await K(e, n), r = !1, I.delete(t), a;
73
+ } catch (i) {
74
+ if (!r) try {
75
+ await K(e, n);
76
+ } catch {
77
+ throw y();
78
+ }
79
+ throw !n.attempted && n.lease === null && I.delete(t), i;
80
+ } finally {
81
+ n.active = !1, n.finish?.(), n.finish = null, n.completion = null;
82
+ }
83
+ }, Y = (e) => m(JSON.stringify([
84
+ C,
85
+ e.kind,
86
+ e.id
87
+ ])), X = (e, t) => e.input.scope.tenantId === t.tenantId && e.input.subject.kind === t.subject.kind && e.input.subject.id === t.subject.id, Z = (e) => {
88
+ let t = o(e);
89
+ return t.tenantId === C ? t : d();
90
+ }, Q = async (t, n) => {
91
+ if (z) return;
92
+ if (B) throw y();
93
+ let r = Y(n.subject);
94
+ if (!L.has(r)) {
95
+ if (L.size >= D) throw new e({
96
+ budget: "geometryCoordinatedSubjectFences",
97
+ limit: D
98
+ });
99
+ L.add(r);
100
+ }
101
+ for (;;) {
102
+ let e = [...I.values()].filter((e) => X(e, n) && e.active);
103
+ if (!e.length) break;
104
+ await Promise.all(e.map((e) => e.completion ?? Promise.reject(y())));
105
+ }
106
+ for (let e of I.values()) X(e, n) && await K(t, e);
107
+ };
108
+ return Object.freeze({
109
+ observation: U,
110
+ commit: (t) => {
111
+ let o, s, u, d;
112
+ try {
113
+ let e = r(t, [
114
+ "scope",
115
+ "owner",
116
+ "subject",
117
+ "requestId",
118
+ "patch",
119
+ "actualSession"
120
+ ], [
121
+ "scope",
122
+ "owner",
123
+ "subject",
124
+ "requestId",
125
+ "patch"
126
+ ]), p = a(e.scope), _ = i(e.owner), v = c(e.subject), b = l(e.requestId), x = n(e.patch, T, "geometryCoordinatedPatchBytes"), S = f(x, {
127
+ maxBytes: T,
128
+ maxMetadataBytes: Math.min(4096, T - 16)
129
+ });
130
+ if (p.tenantId !== C || S.metadata.kind !== p.kind || S.metadata.version !== p.version || S.metadata.worldId !== p.worldId || S.metadata.layerSetId !== p.layerSetId || S.metadata.cx !== p.cx || S.metadata.cy !== p.cy || S.metadata.cz !== p.cz) return g.fail(y());
131
+ let w = Object.hasOwn(e, "actualSession") ? h(e.actualSession, p, _, v) : null;
132
+ o = Object.freeze({
133
+ scope: p,
134
+ owner: _,
135
+ subject: v,
136
+ requestId: b,
137
+ patch: x,
138
+ ...w ? { actualSession: w.actualSession } : {}
139
+ }), s = S.metadata, d = m(JSON.stringify([C, b])), u = m(JSON.stringify([
140
+ p,
141
+ _,
142
+ v,
143
+ b,
144
+ m(x)
145
+ ]));
146
+ } catch {
147
+ return g.fail(y());
148
+ }
149
+ return G(async (t) => {
150
+ if (z || B || L.has(Y(o.subject))) throw y();
151
+ let n = I.get(d);
152
+ if (n) {
153
+ if (n.active || n.fingerprint !== u) throw y();
154
+ n.input = o;
155
+ } else {
156
+ if (R) throw y();
157
+ if (I.size >= w) throw new e({
158
+ budget: "geometryCoordinatedPending",
159
+ limit: w
160
+ });
161
+ if (H() + o.patch.length > E) throw new e({
162
+ budget: "geometryCoordinatedPendingBytes",
163
+ limit: E
164
+ });
165
+ n = {
166
+ input: o,
167
+ metadata: s,
168
+ fingerprint: u,
169
+ active: !1,
170
+ completion: null,
171
+ finish: null,
172
+ attempted: !1,
173
+ receipt: null,
174
+ lease: null
175
+ }, I.set(d, n);
176
+ }
177
+ return J(t, d, n);
178
+ });
179
+ },
180
+ withdrawSubject: (t) => {
181
+ try {
182
+ let n = Z(t);
183
+ return G(async (t) => {
184
+ if (V >= w * 2) throw new e({
185
+ budget: "geometryCoordinatedPrivacyOperations",
186
+ limit: w * 2
187
+ });
188
+ V++;
189
+ try {
190
+ await Q(t, n);
191
+ } finally {
192
+ V--;
193
+ }
194
+ });
195
+ } catch {
196
+ return g.fail(y());
197
+ }
198
+ },
199
+ eraseSubject: (t) => {
200
+ try {
201
+ let n = Z(t);
202
+ return G(async (t) => {
203
+ if (z || B) throw y();
204
+ if (V >= w * 2) throw new e({
205
+ budget: "geometryCoordinatedPrivacyOperations",
206
+ limit: w * 2
207
+ });
208
+ V++;
209
+ try {
210
+ if (await Q(t, n), await W(t, () => P(n)) !== void 0) throw y();
211
+ for (let [e, t] of I) if (X(t, n)) {
212
+ if (t.active || t.lease !== null) throw y();
213
+ I.delete(e);
214
+ }
215
+ } finally {
216
+ V--;
217
+ }
218
+ });
219
+ } catch {
220
+ return g.fail(y());
221
+ }
222
+ },
223
+ close: () => G(async (e) => {
224
+ if (!z) {
225
+ if (B || V > 0 || [...I.values()].some((e) => e.active)) throw y();
226
+ R = !0, B = !0;
227
+ try {
228
+ for (let [t, n] of I) {
229
+ if (await K(e, n), n.attempted && n.receipt === null) throw y();
230
+ I.delete(t);
231
+ }
232
+ L.clear(), z = !0;
233
+ } finally {
234
+ B = !1;
235
+ }
236
+ }
237
+ })
238
+ });
239
+ };
240
+ export { b as makeGeometryCommitCoordinator };
@@ -0,0 +1,83 @@
1
+ import { ProtocolError as e } from "./errors.js";
2
+ import { createGeometryTileCodec as t } from "./geometryTileCodec.js";
3
+ import { createGeometryArtifact as n } from "./geometryArtifacts.js";
4
+ import { createGeometryPatch as r, defaultGeometryPatchLimits as i } from "./geometryPatch.js";
5
+ import { defaultGeometryCompaction as a, prepareGeometryCompaction as o } from "./geometryCompactionStrategies.js";
6
+ import { cmsGeometry as s } from "./worldGeometry.js";
7
+ import { defineWorld as c, rect as l } from "./world.js";
8
+ import { Effect as u } from "effect";
9
+ // src/geometryCompactionFixture.ts
10
+ var d = (r) => u.promise(async () => {
11
+ let a = c({
12
+ name: "compaction-fixture",
13
+ map: { bounds: l(0, 0, 2, 2) },
14
+ zones: [{
15
+ id: "zone",
16
+ room: "cell",
17
+ bounds: l(0, 0, 2, 2),
18
+ neighbors: []
19
+ }],
20
+ persistence: {
21
+ entities: "world",
22
+ snapshotEveryMs: 3e4,
23
+ journal: !0
24
+ },
25
+ handoff: {
26
+ marginUnits: 1,
27
+ ghostUnits: 2
28
+ },
29
+ spawn: () => ({
30
+ zone: "zone",
31
+ at: [1, 1]
32
+ }),
33
+ geometry: {
34
+ kind: "2d-tiles",
35
+ static: s("world:compaction"),
36
+ ...r === void 0 ? {} : { strategies: { compaction: r } }
37
+ }
38
+ }), u = t(), d = u.create({
39
+ address: {
40
+ worldId: a.name,
41
+ layerSetId: "layer",
42
+ cx: 0,
43
+ cy: 0
44
+ },
45
+ version: "v1",
46
+ width: 1,
47
+ height: 1,
48
+ tileSizeRaw: 65536,
49
+ cells: [{
50
+ key: "air",
51
+ solid: !1
52
+ }]
53
+ }), f = u.capture({
54
+ ...d,
55
+ palette: [{
56
+ key: "air",
57
+ solid: !0
58
+ }]
59
+ }), p = await n(d), m = await n(f);
60
+ try {
61
+ return await o({
62
+ static: p,
63
+ current: m,
64
+ limits: i,
65
+ codecLimits: {}
66
+ }, { compaction: a.geometry.strategies.compaction }), "preserved";
67
+ } catch (t) {
68
+ if (t instanceof e) return "refused";
69
+ throw t;
70
+ }
71
+ }), f = {
72
+ kind: "slot",
73
+ defaultImplementation: a,
74
+ defaultProbe: {
75
+ run: () => d(),
76
+ expected: "preserved"
77
+ },
78
+ overrideProbe: {
79
+ run: () => d((e) => r(e.static, e.static, 0)),
80
+ expected: "refused"
81
+ }
82
+ };
83
+ export { f as geometryCompactionSlotFixture };
@@ -0,0 +1,37 @@
1
+ import { ProtocolError as e } from "./errors.js";
2
+ import { geometryOwnData as t } from "./geometryTileCodec.js";
3
+ import { captureGeometryArtifact as n } from "./geometryArtifacts.js";
4
+ import { captureGeometryCodecProfiles as r } from "./geometryPersistenceData.js";
5
+ import { applyGeometryPatch as i, captureGeometryPatch as a, captureGeometryPatchLimits as o, createGeometryPatch as s, decodeGeometryPatch as c } from "./geometryPatch.js";
6
+ // src/geometryCompactionStrategies.ts
7
+ var l = (e) => s(e.static, e.current, 0, {
8
+ limits: e.limits,
9
+ codecLimits: e.codecLimits
10
+ });
11
+ function u() {
12
+ throw new e({ detail: "Native geometry compaction must preserve the complete confirmed current artifact from static revision zero" });
13
+ }
14
+ var d = (e = {}) => {
15
+ let n = t(e, ["compaction"], []), r = Object.hasOwn(n, "compaction") ? n.compaction : l;
16
+ return typeof r == "function" ? Object.freeze({ compaction: r }) : u();
17
+ }, f = async (e, s = {}) => {
18
+ let f = t(e, [
19
+ "static",
20
+ "current",
21
+ "limits",
22
+ "codecLimits"
23
+ ]), p = n(f.static), m = n(f.current), h = o(f.limits), g = r({ [p.chunk.kind]: f.codecLimits }).get(p.chunk.kind), _ = d(s), v = Object.freeze({
24
+ static: p,
25
+ current: m,
26
+ limits: h,
27
+ codecLimits: g
28
+ });
29
+ if (_.compaction === l) return l(v);
30
+ let y = _.compaction(v);
31
+ if (y instanceof Promise) return y.catch(() => void 0), u();
32
+ let b = a(y), x = c(b.bytes(), h);
33
+ if (x.metadata.baseRevision !== 0) return u();
34
+ let S = await i(p, x, 0, g), C = m.bytes(), w = S.artifact.bytes();
35
+ return S.artifact.blobSha256 !== m.blobSha256 || S.artifact.contentSha256 !== m.contentSha256 || w.length !== C.length || w.some((e, t) => e !== C[t]) ? u() : x;
36
+ };
37
+ export { d as captureGeometryCompactionStrategies, l as defaultGeometryCompaction, f as prepareGeometryCompaction };
@@ -0,0 +1,22 @@
1
+ import { ProtocolError as e } from "./errors.js";
2
+ import { captureRoomConnectionGeometrySession as t } from "./connection.js";
3
+ import { makeRoomGeometryChunkCache as n } from "./geometryClientChunks.js";
4
+ import { makeRoomGeometrySnapshotSource as r } from "./geometrySnapshotClient.js";
5
+ // src/geometryConnectionClient.ts
6
+ var i = (e, r, i, a, o = {}) => n(t(e), r, i, a, o), a = async (t, n, r, a, o, s, c = {}) => {
7
+ let l = () => new e({ detail: "World native geometry prefetch remains incomplete" });
8
+ if (!(s instanceof AbortSignal) || s.aborted) throw l();
9
+ let u = i(t, n, r, a, c), d, f = () => (d ||= Promise.resolve().then(() => u.close()).then(() => void 0, () => {}), d), p = () => {
10
+ f();
11
+ };
12
+ s.addEventListener("abort", p, { once: !0 });
13
+ try {
14
+ if (s.aborted || (await u.request(o), s.aborted || d)) throw l();
15
+ return u;
16
+ } catch {
17
+ throw await f(), l();
18
+ } finally {
19
+ s.removeEventListener("abort", p);
20
+ }
21
+ }, o = (e, n, i) => r(t(e), n, i);
22
+ export { i as makeRoomConnectionGeometryCache, o as makeRoomConnectionGeometrySnapshotSource, a as prefetchRoomConnectionGeometryCache };