@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
package/dist/index.js ADDED
@@ -0,0 +1,231 @@
1
+ import { worldInstanceTables as e } from "./worldInstanceState.js";
2
+ import { ProtocolError as t } from "./errors.js";
3
+ import { geometryAdminRpcImports as n } from "./geometryAdminRpc.js";
4
+ import { geometryAdminRpcRoutes as r } from "./geometryAdminRpcRoutes.js";
5
+ import { geometryJournalArchivesTable as ee } from "./geometryJournalArchiveTable.js";
6
+ import { worldClientRpcImports as te } from "./worldClientRpc.js";
7
+ import { geometryReadRpcImports as i } from "./geometryReadRpc.js";
8
+ import { geometryAssetRpcImports as ne } from "./geometryAssetRpc.js";
9
+ import { BASE_NAME as a, roomsRpcClientImports as re } from "./rpc.js";
10
+ import { captureWorldCatalog as ie } from "./world.js";
11
+ import { geometryAssetRpcRoutes as ae } from "./geometryAssetRpcRoutes.js";
12
+ import { geometryMigrationsTable as oe } from "./geometryMigrationJournal.js";
13
+ import { geometryReadRpcRoutes as se } from "./geometryReadRpcRoutes.js";
14
+ import { roomsGeometryHttpRoute as o } from "./geometryHttpRoutes.js";
15
+ import { roomsSystemContractManifest as s } from "./systemManifest.js";
16
+ import { RoomHostDrainPort as c } from "./hostDrainPorts.js";
17
+ import { RoomAppCommandPort as l, RoomCheckpointPort as u, RoomDirectoryPort as d, RoomErasurePort as f, RoomExternalWorkWithdrawalPort as p, RoomHostAdoptionPort as m, RoomHostControlPort as h, RoomHostKickPort as g, RoomHostWithdrawalPort as _, RoomReaperPort as v, RoomRecoveryPort as y, RoomReservePort as b, RoomSnapshotBlobPort as x, RoomSubjectPrivacyPort as S, WorldClientControlPort as C } from "./ports.js";
18
+ import { roomSnapshotBlobLayer as w, storageRoomSnapshotBlobs as T } from "./snapshotBlob.js";
19
+ import { captureRoomSnapshotEffectRunner as E } from "./snapshotBlobIndex.js";
20
+ import { cleanupRoomCheckpointBlobs as D } from "./snapshotBlobCleanup.js";
21
+ import { cleanupRoomSnapshotUploads as O } from "./snapshotUploads.js";
22
+ import { eraseRoomSnapshots as k } from "./snapshotErasure.js";
23
+ import { dataStoreRoomErasure as A, roomErasureLayer as j } from "./roomErasure.js";
24
+ import { dataStoreRoomSubjectPrivacy as M, readRoomSubjectPrivacyJournal as N, roomSubjectPrivacyLayer as ce } from "./subjectPrivacy.js";
25
+ import { resolveRoomSeatTokenStrategies as le, signRoomSeat as ue, verifiedRoomSeatClaims as de } from "./seats.js";
26
+ import { confirmRoomSessionAdmission as fe } from "./sessionAdmission.js";
27
+ import { geometryPersistenceTables as pe } from "./geometryPersistence.js";
28
+ import { GeometryVersionMigrationPort as me } from "./geometryMigrations.js";
29
+ import { roomsGeometryInspectEndpoint as P } from "./geometryInspectEndpoint.js";
30
+ import { validateRoomSchemaHistory as F } from "./schemaHistory.js";
31
+ import { RoomCatalog as I, loadRoomCatalog as L } from "./catalog.js";
32
+ import { GeometryStaticReadGrantPort as R } from "./geometryReadPorts.js";
33
+ import { GeometryManifestPort as z, geometryManifestLayer as he } from "./geometryManifestPorts.js";
34
+ import { captureGeometryStreamManifest as ge } from "./geometryManifestData.js";
35
+ import { captureRoomPoolTopology as _e } from "./roomPoolTopology.js";
36
+ import { RoomKickInputSchema as ve, RoomKickReasonSchema as ye, roomModerationService as be } from "./moderation.js";
37
+ import { RoomsApiBindFailure as xe, RoomsApiOwner as B } from "./apiBinding.js";
38
+ import { roomsRpcRoutes as Se } from "./rpcRoutes.js";
39
+ import { worldClientRpcRoutes as Ce } from "./worldClientRpcRoutes.js";
40
+ import { roomCheckpointsTable as V, roomCommandsTable as H, roomCreationsTable as U, roomHostsTable as W, roomLockstepTicksTable as G, roomSeatsTable as K, roomSnapshotSegmentsTable as q, roomSubjectPrivacyTable as J, roomsTable as Y } from "./tables.js";
41
+ import { roomsInspectEndpoints as we } from "./inspect.js";
42
+ import { worldCellsPrivacyScope as X, worldCellsTable as Te } from "./worldCells.js";
43
+ import { roomsWorldInspectEndpoint as Ee } from "./worldInspectEndpoint.js";
44
+ import { worldEntityTables as De, worldTransitionTables as Oe } from "./worldEntities.js";
45
+ import { captureRoomSidecarHostSelection as ke } from "./sidecarSelection.js";
46
+ import { dataStoreRoomCheckpoints as Ae, roomCheckpointLayer as je } from "./checkpointStore.js";
47
+ import { dataStoreRoomHostDrain as Me } from "./hostDrain.js";
48
+ import { defaultRoomSnapshotBudget as Ne } from "./snapshotBudget.js";
49
+ import { RoomReplayRecording as Pe } from "./replayRecording.js";
50
+ import { RoomSpectatorProducer as Fe } from "./spectatorProducer.js";
51
+ import { matchRoomCreationKey as Ie } from "./matchRooms.js";
52
+ import { applicationRoomCommands as Le, roomCommandEpoch as Re } from "./commandDelivery.js";
53
+ import { leastLoadedRoomHostInRegion as ze } from "./hostSelection.js";
54
+ import { dataStoreRoomDirectory as Be, roomDirectoryLayer as Ve } from "./directory.js";
55
+ import { dataStoreRoomReservations as He } from "./reservations.js";
56
+ import { roomProcessCpuSampler as Ue } from "./hostDriver.js";
57
+ import { controllerRoomHostControlService as We } from "./reservePort.js";
58
+ import { RoomHostLane as Ge, RoomHostLaneStartFailure as Ke, RoomHostListenerBindFailure as qe } from "./hostLane.js";
59
+ import { runtimeRoomHostListener as Je } from "./hostListener.js";
60
+ import { dataStoreRoomApiReservations as Ye, roomApiReservationLayer as Xe, timedRoomAdmission as Ze } from "./apiReservations.js";
61
+ import { RoomsHostDrainDeadline as Qe } from "./hostShutdown.js";
62
+ import { RoomsHostBindFailure as $e, RoomsHostOwner as et, RoomsHostStartFailure as tt, RoomsHostStopFailure as nt } from "./hostBinding.js";
63
+ import { controllerRoomHostWithdrawalLayer as rt, controllerRoomHostWithdrawalService as it, routedRoomHostWithdrawalService as at } from "./withdrawalPort.js";
64
+ import { makeWorldTransitionResolver as ot } from "./worldTransitionResolver.js";
65
+ import { openRoomControlClient as st, openRoomControlServer as ct } from "./controlTransport.js";
66
+ import { openRegistryRoomControlClient as lt, openRegistryRoomControlServer as ut } from "./controlRegistry.js";
67
+ import { directoryRoomControlTargetResolver as dt } from "./controlTarget.js";
68
+ import { dataStoreRoomRecovery as ft, roomRecoveryLayer as pt } from "./recovery.js";
69
+ import { dataStoreRoomReaper as mt, roomReaperLayer as ht } from "./reaper.js";
70
+ import { registryRoomsApiBinder as gt } from "./apiRegistryBinding.js";
71
+ import { applicationRoomExternalWorkWithdrawal as _t, roomExternalWorkWithdrawalLayer as vt } from "./commandWithdrawal.js";
72
+ import { sqlRoomsSubjectPrivacyBinder as yt } from "./subjectPrivacyBinding.js";
73
+ import { defaultRoomsHostAcquire as bt, registryRoomsHostBinder as xt } from "./hostRegistryBinding.js";
74
+ import { dataStoreGeometryManifest as St } from "./geometryManifest.js";
75
+ import { sqlRoomsGeometry as Ct } from "./geometryInstall.js";
76
+ import { bindRoomDirectoryProjection as wt, makeRoomDirectoryProjection as Tt } from "./directoryProjection.js";
77
+ import { roomControlSubjectResolver as Et, roomSeatSubjectIdentity as Dt, roomSeatSubjectResolver as Ot } from "./seatSubject.js";
78
+ import { roomReaperWorkflowExecutor as Z, runRoomReaperWorkflow as kt } from "./reaperWorkflow.js";
79
+ import { developmentRoomsBinding as At, trustedRoomSeatSubject as jt } from "./developmentBinding.js";
80
+ import { roomsMatchRooms as Mt } from "./matchRoomProvider.js";
81
+ import { pluginInstanceName as Nt } from "@voltro/protocol";
82
+ import { Effect as Q } from "effect";
83
+ import { defineLicensedGamePlugin as Pt } from "@voltro/plugin-licensing/gate";
84
+ import { fileURLToPath as $ } from "node:url";
85
+ // src/index.ts
86
+ var Ft = (s = {}) => {
87
+ let c = Object.getOwnPropertyDescriptor(s, "hostWebTransport");
88
+ if (c && !("value" in c) || !c && "hostWebTransport" in s) throw new t({ detail: "Native host selection requires own data" });
89
+ let l = !c || c.value === void 0 ? void 0 : ke(c.value), u = ie(s.worlds ?? []), d = s.worldState === void 0 ? "none" : s.worldState;
90
+ if (![
91
+ "none",
92
+ "entities",
93
+ "transitions"
94
+ ].includes(d) || d !== "none" && u.length === 0) throw new t({ detail: "World state requires an explicit World catalogue" });
95
+ let f = s.worldClientControls ?? !1;
96
+ if (typeof f != "boolean" || f && d !== "transitions") throw new t({ detail: "World client controls require transition state" });
97
+ let p = Nt({
98
+ base: a,
99
+ alias: s.alias
100
+ }), m = Object.getOwnPropertyDescriptor(s, "geometryReadUrls");
101
+ if (m && (!m.enumerable || !("value" in m)) || !m && "geometryReadUrls" in s) throw new t({ detail: "Geometry read URL configuration requires own data" });
102
+ let h = m?.value ?? !1;
103
+ if (typeof h != "boolean" || h && !u.some((e) => e.geometry)) throw new t({ detail: "Geometry read URL routes require an actual geometry World" });
104
+ let g = Object.getOwnPropertyDescriptor(s, "geometryMigrations");
105
+ if (g && (!g.enumerable || !("value" in g)) || !g && "geometryMigrations" in s) throw new t({ detail: "Geometry migrations configuration requires own data" });
106
+ let _ = g?.value ?? !1;
107
+ if (typeof _ != "boolean" || _ && !u.some((e) => e.geometry)) throw new t({ detail: "Geometry migrations require an actual geometry World" });
108
+ let v = Object.getOwnPropertyDescriptor(s, "geometryAssetUrls");
109
+ if (v && (!v.enumerable || !("value" in v)) || !v && "geometryAssetUrls" in s) throw new t({ detail: "Geometry asset configuration requires own data" });
110
+ let y = v?.value ?? !1;
111
+ if (typeof y != "boolean" || y && !u.some((e) => e.geometry)) throw new t({ detail: "Geometry asset action requires an actual geometry World" });
112
+ let b = Object.getOwnPropertyDescriptor(s, "geometryJournalArchives");
113
+ if (b && (!b.enumerable || !("value" in b)) || !b && "geometryJournalArchives" in s) throw new t({ detail: "Geometry archive configuration requires own data" });
114
+ let x = b?.value ?? !1;
115
+ if (typeof x != "boolean" || x && !u.some((e) => e.geometry)) throw new t({ detail: "Geometry journal archives require an actual geometry World" });
116
+ let S = Object.getOwnPropertyDescriptor(s, "geometryJournalRetention");
117
+ if (S && (!S.enumerable || !("value" in S)) || !S && "geometryJournalRetention" in s) throw new t({ detail: "Geometry retention configuration requires own data" });
118
+ let C = S?.value ?? !1;
119
+ if (typeof C != "boolean" || C && !x) throw new t({ detail: "Geometry retention requires the actual archive module" });
120
+ let w = Object.getOwnPropertyDescriptor(s, "geometryAdminControls");
121
+ if (w && (!w.enumerable || !("value" in w)) || !w && "geometryAdminControls" in s) throw new t({ detail: "Geometry administration configuration requires own data" });
122
+ let T = w?.value ?? !1;
123
+ if (typeof T != "boolean" || T && !u.some((e) => e.geometry)) throw new t({ detail: "Geometry administration requires an actual geometry World" });
124
+ let E = new B(p, s.bindApi, u, d, f, h, _, y, x, C, T), D = s.reaperSources ?? $(new URL("./reaper-app", "" + import.meta.url)), O = Object.getOwnPropertyDescriptor(s, "geometryHttp");
125
+ if (O && (!O.enumerable || !("value" in O)) || !O && "geometryHttp" in s) throw new t({ detail: "Geometry HTTP binding requires own data" });
126
+ let k = O ? [o(u, E.geometry, O.value)] : [], A = [
127
+ U,
128
+ W,
129
+ Y,
130
+ K,
131
+ V,
132
+ H,
133
+ q,
134
+ J,
135
+ G
136
+ ];
137
+ u.length > 0 && A.push(Te), u.some((e) => e.instances.length > 0) && A.push(...e), u.some((e) => e.geometry !== void 0) && A.push(...pe), _ && A.push(oe), x && A.push(ee), d !== "none" && A.push(...d === "transitions" ? Oe : De);
138
+ let j = Pt({
139
+ name: p,
140
+ baseName: a,
141
+ description: "Room API control and coordinated subject data; simulation uses its own host lane.",
142
+ permissions: ["store:write", "inspect:read"],
143
+ needs: { hot: "local" },
144
+ sources: C ? {
145
+ reaper: D,
146
+ geometryRetention: $(new URL("./geometry-retention-app", "" + import.meta.url))
147
+ } : D,
148
+ inspectEndpoints: [
149
+ ...we(E),
150
+ Ee(E, u, d),
151
+ P(E, u)
152
+ ],
153
+ extendSchema: { tables: A },
154
+ ...k.length ? { httpRoutes: k } : {},
155
+ routes: [
156
+ ...Se(E.reservation),
157
+ ...T ? r(E.geometryAdministration) : [],
158
+ ...y ? ae(u, E.geometryAssetGrants) : [],
159
+ ...h ? se(u, E.geometryReadGrants) : [],
160
+ ...f ? Ce(E.worldClientControl) : []
161
+ ],
162
+ rpcClientDescriptors: [
163
+ ...re,
164
+ ...T ? n : [],
165
+ ...y ? ne : [],
166
+ ...h ? i : [],
167
+ ...f ? te : []
168
+ ],
169
+ subjectPrivacy: {
170
+ tables: A.map((e) => e.tableName),
171
+ kinds: ["user", "guest"],
172
+ erasePhase: "prepare"
173
+ },
174
+ onErase: (e, t) => {
175
+ let n = E.privacy.erase({
176
+ requestId: t.requestId,
177
+ target: {
178
+ subjectId: e,
179
+ tenantId: t.tenantId,
180
+ kind: t.kind
181
+ }
182
+ });
183
+ return u.length === 0 ? n : X(e, t).pipe(Q.flatMap(() => n));
184
+ },
185
+ onExport: (e, t) => {
186
+ let n = E.privacy.export({
187
+ requestId: t.requestId,
188
+ target: {
189
+ subjectId: e,
190
+ tenantId: t.tenantId,
191
+ kind: t.kind
192
+ }
193
+ });
194
+ return u.length === 0 ? n : X(e, t).pipe(Q.flatMap(() => n));
195
+ },
196
+ bindDataStore: (e, t) => E.bind(e, t),
197
+ onDeactivate: () => Q.tryPromise({
198
+ try: () => E.close(),
199
+ catch: () => new t({ detail: "Rooms API cleanup remains incomplete" })
200
+ })
201
+ }), M = j.onActivate, N = M && ((e) => Q.suspend(() => {
202
+ let t = M(e);
203
+ return Q.isEffect(t) ? t : Q.tryPromise({
204
+ try: () => Promise.resolve(t),
205
+ catch: (e) => e
206
+ });
207
+ }).pipe(Q.onError(() => Q.ignore(Q.tryPromise(() => E.close())))));
208
+ return {
209
+ ...j,
210
+ ...N ? { onActivate: N } : {},
211
+ configureCatalog: (e) => E.configureCatalog(e),
212
+ configurePools: (e, t) => {
213
+ let n = new I(e.inventory(), { previousHistory: e.history }), r = _e(t, n.inventory().map((e) => e.descriptor.name));
214
+ return E.configurePools(r, n), r;
215
+ },
216
+ services: E.services,
217
+ moderation: E.moderation,
218
+ bindHost: s.bindHost,
219
+ hostWebTransport: l,
220
+ worlds: u,
221
+ worldState: d,
222
+ worldClientControls: f,
223
+ geometryReadUrls: h,
224
+ geometryMigrations: _,
225
+ geometryAssetUrls: y,
226
+ geometryJournalArchives: x,
227
+ geometryJournalRetention: C,
228
+ geometryAdminControls: T
229
+ };
230
+ };
231
+ export { z as GeometryManifestPort, R as GeometryStaticReadGrantPort, me as GeometryVersionMigrationPort, l as RoomAppCommandPort, I as RoomCatalog, u as RoomCheckpointPort, d as RoomDirectoryPort, f as RoomErasurePort, p as RoomExternalWorkWithdrawalPort, m as RoomHostAdoptionPort, h as RoomHostControlPort, c as RoomHostDrainPort, g as RoomHostKickPort, Ge as RoomHostLane, Ke as RoomHostLaneStartFailure, qe as RoomHostListenerBindFailure, _ as RoomHostWithdrawalPort, ve as RoomKickInputSchema, ye as RoomKickReasonSchema, v as RoomReaperPort, y as RoomRecoveryPort, Pe as RoomReplayRecording, b as RoomReservePort, x as RoomSnapshotBlobPort, Fe as RoomSpectatorProducer, S as RoomSubjectPrivacyPort, xe as RoomsApiBindFailure, B as RoomsApiOwner, $e as RoomsHostBindFailure, Qe as RoomsHostDrainDeadline, et as RoomsHostOwner, tt as RoomsHostStartFailure, nt as RoomsHostStopFailure, C as WorldClientControlPort, Le as applicationRoomCommands, _t as applicationRoomExternalWorkWithdrawal, wt as bindRoomDirectoryProjection, ge as captureGeometryStreamManifest, E as captureRoomSnapshotEffectRunner, D as cleanupRoomCheckpointBlobs, O as cleanupRoomSnapshotUploads, fe as confirmRoomSessionAdmission, We as controllerRoomHostControlService, rt as controllerRoomHostWithdrawalLayer, it as controllerRoomHostWithdrawalService, St as dataStoreGeometryManifest, Ye as dataStoreRoomApiReservations, Ae as dataStoreRoomCheckpoints, Be as dataStoreRoomDirectory, A as dataStoreRoomErasure, Me as dataStoreRoomHostDrain, mt as dataStoreRoomReaper, ft as dataStoreRoomRecovery, He as dataStoreRoomReservations, M as dataStoreRoomSubjectPrivacy, Ne as defaultRoomSnapshotBudget, bt as defaultRoomsHostAcquire, At as developmentRoomsBinding, dt as directoryRoomControlTargetResolver, k as eraseRoomSnapshots, he as geometryManifestLayer, ze as leastLoadedRoomHostInRegion, L as loadRoomCatalog, Tt as makeRoomDirectoryProjection, ot as makeWorldTransitionResolver, Ie as matchRoomCreationKey, lt as openRegistryRoomControlClient, ut as openRegistryRoomControlServer, st as openRoomControlClient, ct as openRoomControlServer, N as readRoomSubjectPrivacyJournal, gt as registryRoomsApiBinder, xt as registryRoomsHostBinder, le as resolveRoomSeatTokenStrategies, Xe as roomApiReservationLayer, je as roomCheckpointLayer, V as roomCheckpointsTable, Re as roomCommandEpoch, H as roomCommandsTable, Et as roomControlSubjectResolver, U as roomCreationsTable, Ve as roomDirectoryLayer, j as roomErasureLayer, vt as roomExternalWorkWithdrawalLayer, W as roomHostsTable, G as roomLockstepTicksTable, be as roomModerationService, Ue as roomProcessCpuSampler, ht as roomReaperLayer, Z as roomReaperWorkflowExecutor, pt as roomRecoveryLayer, Dt as roomSeatSubjectIdentity, Ot as roomSeatSubjectResolver, K as roomSeatsTable, w as roomSnapshotBlobLayer, q as roomSnapshotSegmentsTable, ce as roomSubjectPrivacyLayer, J as roomSubjectPrivacyTable, o as roomsGeometryHttpRoute, Mt as roomsMatchRooms, Ft as roomsPlugin, s as roomsSystemContractManifest, Y as roomsTable, at as routedRoomHostWithdrawalService, kt as runRoomReaperWorkflow, Je as runtimeRoomHostListener, ue as signRoomSeat, Ct as sqlRoomsGeometry, yt as sqlRoomsSubjectPrivacyBinder, T as storageRoomSnapshotBlobs, Ze as timedRoomAdmission, jt as trustedRoomSeatSubject, F as validateRoomSchemaHistory, de as verifiedRoomSeatClaims };
@@ -0,0 +1,62 @@
1
+ import { ProtocolError as e } from "./errors.js";
2
+ import { captureWorldTargetSeatBinding as t } from "./worldSeatBinding.js";
3
+ // src/inputReceipts.ts
4
+ function n() {
5
+ throw new e({ detail: "Invalid bounded Room input receipt" });
6
+ }
7
+ var r = (e) => !!e && typeof e == "object" && !Array.isArray(e) && [Object.prototype, null].includes(Object.getPrototypeOf(e)), i = (e, t) => Reflect.ownKeys(e).length === t.length && t.every((t) => {
8
+ let n = Object.getOwnPropertyDescriptor(e, t);
9
+ return !!n && "value" in n && n.enumerable === !0;
10
+ }), a = (e, t = 0) => typeof e == "number" && Number.isSafeInteger(e) && e >= t, o = (e) => typeof e == "string" && e.length > 0 && e.length <= 191, s = (e) => {
11
+ if (!r(e)) return n();
12
+ let o = "worldTarget" in e, s = "discardedThrough" in e;
13
+ return !i(e, [
14
+ "lastAppliedSeq",
15
+ ...o ? ["worldTarget"] : [],
16
+ ...s ? ["discardedThrough"] : []
17
+ ]) || !a(e.lastAppliedSeq, -1) || s && (!o || !a(e.discardedThrough)) ? n() : Object.freeze({
18
+ lastAppliedSeq: e.lastAppliedSeq,
19
+ ...s ? { discardedThrough: e.discardedThrough } : {},
20
+ ...o ? { worldTarget: t(e.worldTarget) } : {}
21
+ });
22
+ }, c = (e) => {
23
+ if (e == null) return null;
24
+ if (!r(e)) return n();
25
+ let t = "discardedThrough" in e;
26
+ return !i(e, [
27
+ "lastAppliedSeq",
28
+ "checkpointEpoch",
29
+ "checkpointRevision",
30
+ "checkpointTick",
31
+ ...t ? ["discardedThrough"] : []
32
+ ]) || !a(e.lastAppliedSeq, t ? -1 : 0) || t && !a(e.discardedThrough) || !a(e.checkpointEpoch, 1) || !a(e.checkpointRevision, 1) || !a(e.checkpointTick) ? n() : Object.freeze({
33
+ lastAppliedSeq: e.lastAppliedSeq,
34
+ ...t ? { discardedThrough: e.discardedThrough } : {},
35
+ checkpointEpoch: e.checkpointEpoch,
36
+ checkpointRevision: e.checkpointRevision,
37
+ checkpointTick: e.checkpointTick
38
+ });
39
+ }, l = (e, t = 16384) => {
40
+ if (!Number.isSafeInteger(t) || t < 1 || t > 16384 || !Array.isArray(e) || e.length > t) return n();
41
+ let s = /* @__PURE__ */ new Set(), c = [];
42
+ for (let t = 0; t < e.length; t++) {
43
+ if (!Object.hasOwn(e, t)) return n();
44
+ let l = e[t];
45
+ if (!r(l)) return n();
46
+ let u = "discardedThrough" in l;
47
+ if (!i(l, [
48
+ "sessionId",
49
+ "subjectId",
50
+ "lastAppliedSeq",
51
+ ...u ? ["discardedThrough"] : []
52
+ ]) || !o(l.sessionId) || l.subjectId !== null && !o(l.subjectId) || !a(l.lastAppliedSeq, u ? -1 : 0) || u && !a(l.discardedThrough) || s.has(l.sessionId)) return n();
53
+ s.add(l.sessionId), c.push(Object.freeze({
54
+ sessionId: l.sessionId,
55
+ subjectId: l.subjectId,
56
+ lastAppliedSeq: l.lastAppliedSeq,
57
+ ...u ? { discardedThrough: l.discardedThrough } : {}
58
+ }));
59
+ }
60
+ return Object.freeze(c.sort((e, t) => e.sessionId < t.sessionId ? -1 : +(e.sessionId > t.sessionId)));
61
+ };
62
+ export { s as captureRoomConsumedSeat, l as captureRoomInputReceipts, c as captureRoomSeatInputReceipt };
@@ -0,0 +1,54 @@
1
+ import { BudgetExceeded as e, ProtocolError as t, RoomAuthoringError as n } from "./errors.js";
2
+ // src/inputRedundancy.ts
3
+ var r = Object.freeze({
4
+ inputRedundancy: 3,
5
+ maxInputHistoryBytes: 262144
6
+ }), i = class {
7
+ options;
8
+ entries = [];
9
+ bytes = 0;
10
+ lastSeq = null;
11
+ constructor(e = r) {
12
+ if (!e || Object.getPrototypeOf(e) !== Object.prototype || Reflect.ownKeys(e).length !== 2 || ["inputRedundancy", "maxInputHistoryBytes"].some((t) => {
13
+ let n = Object.getOwnPropertyDescriptor(e, t);
14
+ return !n?.enumerable || !("value" in n);
15
+ }) || !Number.isSafeInteger(e.inputRedundancy) || e.inputRedundancy < 1 || e.inputRedundancy > 32 || !Number.isSafeInteger(e.maxInputHistoryBytes) || e.maxInputHistoryBytes < 1 || e.maxInputHistoryBytes > 16777216) throw new n({
16
+ room: "input-redundancy",
17
+ detail: "Input redundancy requires own bounded count and byte budgets"
18
+ });
19
+ this.options = Object.freeze({ ...e });
20
+ }
21
+ get bufferedBytes() {
22
+ return this.bytes;
23
+ }
24
+ get bufferedInputs() {
25
+ return this.entries.length;
26
+ }
27
+ offer(n, r, i) {
28
+ if (!Number.isSafeInteger(n) || n < 0 || !Number.isSafeInteger(r) || r < 0 || !(i instanceof Uint8Array) || this.lastSeq !== null && n !== this.lastSeq + 1) throw new t({ detail: "Redundant intentions require contiguous admitted sequence metadata" });
29
+ if (i.byteLength > this.options.maxInputHistoryBytes) throw new e({
30
+ budget: "maxInputHistoryBytes",
31
+ limit: this.options.maxInputHistoryBytes
32
+ });
33
+ for (; this.entries.length && (this.entries.length >= this.options.inputRedundancy || this.bytes + i.byteLength > this.options.maxInputHistoryBytes);) {
34
+ let e = this.entries.shift();
35
+ this.bytes -= e.payload.byteLength;
36
+ }
37
+ return this.entries.push(Object.freeze({
38
+ seq: n,
39
+ tickHint: r,
40
+ payload: i.slice()
41
+ })), this.bytes += i.byteLength, this.lastSeq = n, Object.freeze({
42
+ kind: "Input",
43
+ firstSeq: this.entries[0].seq,
44
+ inputs: Object.freeze(this.entries.map((e) => Object.freeze({
45
+ tickHint: e.tickHint,
46
+ payload: e.payload.slice()
47
+ })))
48
+ });
49
+ }
50
+ clear() {
51
+ this.entries.splice(0), this.bytes = 0, this.lastSeq = null;
52
+ }
53
+ };
54
+ export { i as RoomInputRedundancy, r as defaultRoomInputRedundancy };
@@ -0,0 +1,237 @@
1
+ import { roomHostTransportEndpoints as e } from "./transportEndpoints.js";
2
+ import { ROOMS_TABLE as t, ROOM_HOSTS_TABLE as n, ROOM_SUBJECT_PRIVACY_TABLE as r } from "./identities.js";
3
+ import { readRoomErasureJournal as i } from "./roomErasure.js";
4
+ import { captureRoomSubjectPrivacyJournal as a } from "./subjectPrivacy.js";
5
+ import { inspectRoomSnapshots as o } from "./snapshotInspection.js";
6
+ import { and as s, eq as c, gt as l, or as u } from "@voltro/database";
7
+ import { Effect as d, Result as f } from "effect";
8
+ import { parseReplicaSelection as p } from "@voltro/protocol/inspect";
9
+ // src/inspect.ts
10
+ var m = 50, h = (e) => {
11
+ if (typeof e != "string" || !e.trim() || e.length > 191) throw Error("Invalid directory identity");
12
+ return e;
13
+ }, g = (e) => {
14
+ if (typeof e != "number" || !Number.isSafeInteger(e) || e < 0) throw Error("Invalid directory counter");
15
+ return e;
16
+ }, _ = (e) => {
17
+ if (typeof e != "boolean") throw Error("Invalid directory flag");
18
+ return e;
19
+ }, v = (e) => {
20
+ let t = e instanceof Date ? e : typeof e == "string" ? new Date(e) : null;
21
+ if (!t || !Number.isFinite(t.getTime())) throw Error("Invalid directory timestamp");
22
+ return t.toISOString();
23
+ }, y = (e) => {
24
+ let t = e.state;
25
+ if (t !== "creating" && t !== "live" && t !== "disposed" && t !== "faulted" && t !== "orphaned" && t !== "hibernating" && t !== "hibernated") throw Error("Invalid directory state");
26
+ let n = g(e.maxClients), r = g(e.clients), a = g(e.epoch);
27
+ if (n < 1 || r > n || a < 1 || t === "hibernated" && (e.hostId !== null || r !== 0)) throw Error("Invalid directory capacity");
28
+ return {
29
+ cleanupPhase: i(e, h(e.id), h(e.tenantId))?.phase ?? "none",
30
+ id: h(e.id),
31
+ name: h(e.name),
32
+ hostId: t === "hibernated" ? null : h(e.hostId),
33
+ clients: r,
34
+ maxClients: n,
35
+ epoch: a,
36
+ state: t,
37
+ locked: _(e.locked),
38
+ private: _(e.private),
39
+ updatedAt: v(e.updatedAt)
40
+ };
41
+ }, b = (t) => {
42
+ let n = e(t.publicAddress, t.webTransportAddress, t.webTransportCertificateHash), r = t.load;
43
+ if (!r || typeof r != "object" || Array.isArray(r)) throw Error("Invalid host load");
44
+ let i = Reflect.get(r, "cpu"), a = g(t.capacity);
45
+ if (typeof i != "number" || !Number.isFinite(i) || i < 0 || i > 1 || a < 1) throw Error("Invalid host load");
46
+ return {
47
+ id: h(t.id),
48
+ region: h(t.region),
49
+ capacity: a,
50
+ routingReady: _(t.ready),
51
+ advertisedTransports: n.wt === void 0 ? ["ws"] : ["ws", "wt"],
52
+ rooms: g(Reflect.get(r, "rooms")),
53
+ clients: g(Reflect.get(r, "clients")),
54
+ cpu: i,
55
+ lastHeartbeatAt: v(t.lastHeartbeatAt)
56
+ };
57
+ }, x = (e) => {
58
+ let t = new URL(e.url, "http://inspect.local").searchParams;
59
+ p(t), t.delete("replica"), t.delete("replicas");
60
+ for (let e of t.keys()) if (e !== "tenantId" && e !== "after") throw Error("Unknown parameter");
61
+ if (t.getAll("tenantId").length !== 1 || t.getAll("after").length > 1) throw Error("Ambiguous parameter");
62
+ return {
63
+ tenantId: h(t.get("tenantId")),
64
+ after: t.has("after") ? h(t.get("after")) : null
65
+ };
66
+ }, S = (e) => [
67
+ {
68
+ method: "GET",
69
+ path: "/status",
70
+ scope: "process",
71
+ description: "API control lifetime in the responding process",
72
+ handler: () => d.sync(() => ({
73
+ kind: "json",
74
+ data: e.status()
75
+ }))
76
+ },
77
+ {
78
+ method: "GET",
79
+ path: "/privacy",
80
+ scope: "shared-store",
81
+ description: "Bounded redacted Subject cleanup receipt observations from SQL",
82
+ handler: (t) => d.gen(function* () {
83
+ let n = yield* d.result(d.try({
84
+ try: () => x(t),
85
+ catch: () => "Invalid query"
86
+ }));
87
+ if (f.isFailure(n)) return {
88
+ kind: "json",
89
+ status: 400,
90
+ data: { error: "Rooms privacy inspection requires one tenantId and an optional after cursor" }
91
+ };
92
+ let { tenantId: i, after: o } = n.success, u = yield* d.result(e.inspect(async (e) => {
93
+ let t = await e.query({
94
+ table: r,
95
+ predicate: o === null ? c("tenantId", i) : s(c("tenantId", i), l("id", o)),
96
+ order: [{
97
+ column: "id",
98
+ direction: "asc"
99
+ }],
100
+ take: 51,
101
+ skip: void 0,
102
+ projection: [
103
+ "id",
104
+ "tenantId",
105
+ "journal",
106
+ "createdAt",
107
+ "updatedAt"
108
+ ]
109
+ });
110
+ if (t.length > 51 || new Set(t.map((e) => e.id)).size !== t.length || t.some((e, n) => e.tenantId !== i || o !== null && h(e.id) <= o || n > 0 && h(t[n - 1].id) >= h(e.id))) throw Error("Invalid privacy query scope/order");
111
+ let n = t.slice(0, m).map((e) => {
112
+ let t = a(e.journal, 65536);
113
+ return {
114
+ id: h(e.id),
115
+ phase: t.phase,
116
+ selectedRooms: t.roomIds.length,
117
+ createdAt: v(e.createdAt),
118
+ updatedAt: v(e.updatedAt)
119
+ };
120
+ });
121
+ return {
122
+ page: {
123
+ tenantId: i,
124
+ after: o,
125
+ nextAfter: t.length > m ? n.at(-1).id : null
126
+ },
127
+ receipts: n
128
+ };
129
+ }));
130
+ return f.isFailure(u) ? {
131
+ kind: "json",
132
+ status: 503,
133
+ data: { error: "Rooms privacy inspection is unavailable. Load it again." }
134
+ } : {
135
+ kind: "json",
136
+ data: u.success
137
+ };
138
+ })
139
+ },
140
+ {
141
+ method: "GET",
142
+ path: "/directory",
143
+ scope: "shared-store",
144
+ description: "Bounded tenant directory and referenced host observations from SQL",
145
+ handler: (r) => d.gen(function* () {
146
+ let i = yield* d.result(d.try({
147
+ try: () => x(r),
148
+ catch: () => "Invalid query"
149
+ }));
150
+ if (f.isFailure(i)) return {
151
+ kind: "json",
152
+ status: 400,
153
+ data: { error: "Rooms inspection requires one tenantId and an optional after cursor" }
154
+ };
155
+ let { tenantId: a, after: p } = i.success, g = yield* d.result(e.inspect(async (e) => {
156
+ let r = await e.query({
157
+ table: t,
158
+ predicate: p === null ? c("tenantId", a) : s(c("tenantId", a), l("id", p)),
159
+ order: [{
160
+ column: "id",
161
+ direction: "asc"
162
+ }],
163
+ take: 51,
164
+ skip: void 0,
165
+ projection: [
166
+ "id",
167
+ "tenantId",
168
+ "name",
169
+ "hostId",
170
+ "clients",
171
+ "maxClients",
172
+ "epoch",
173
+ "state",
174
+ "locked",
175
+ "private",
176
+ "updatedAt",
177
+ "snapshotUploads",
178
+ "snapshotErasure",
179
+ "erasure"
180
+ ]
181
+ });
182
+ if (r.length > 51 || r.some((e) => e.tenantId !== a)) throw Error("Invalid tenant query");
183
+ let i = r.slice(0, m), d = await o(e, i, a), f = i.map((e) => {
184
+ let t = y(e), n = d.get(h(e.id));
185
+ if ([
186
+ "snapshots-erased",
187
+ "data-erased",
188
+ "complete"
189
+ ].includes(t.cleanupPhase) && n.erasurePhase !== "complete") throw Error("Room cleanup receipt contradicts snapshot observation");
190
+ return {
191
+ ...t,
192
+ snapshot: n
193
+ };
194
+ }), g = [...new Set(f.map((e) => e.hostId).filter((e) => e !== null))].sort(), _ = g.length === 0 ? [] : (await e.query({
195
+ table: n,
196
+ predicate: u(...g.map((e) => c("id", e))),
197
+ order: [{
198
+ column: "id",
199
+ direction: "asc"
200
+ }],
201
+ take: g.length,
202
+ skip: void 0,
203
+ projection: [
204
+ "id",
205
+ "region",
206
+ "capacity",
207
+ "ready",
208
+ "load",
209
+ "lastHeartbeatAt",
210
+ "publicAddress",
211
+ "webTransportAddress",
212
+ "webTransportCertificateHash"
213
+ ]
214
+ })).map(b);
215
+ if (_.some((e) => !g.includes(e.id)) || new Set(_.map((e) => e.id)).size !== _.length) throw Error("Invalid host query");
216
+ return {
217
+ page: {
218
+ tenantId: a,
219
+ after: p,
220
+ nextAfter: r.length > m ? f.at(-1).id : null
221
+ },
222
+ rooms: f,
223
+ hosts: _
224
+ };
225
+ }));
226
+ return f.isFailure(g) ? {
227
+ kind: "json",
228
+ status: 503,
229
+ data: { error: "Rooms directory inspection is unavailable. Read the API control status and try again." }
230
+ } : {
231
+ kind: "json",
232
+ data: g.success
233
+ };
234
+ })
235
+ }
236
+ ];
237
+ export { S as roomsInspectEndpoints };