@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,42 @@
1
+ import { RoomAuthoringError as e } from "./errors.js";
2
+ import { simulationOwnData as t } from "./simulationAuthoring.js";
3
+ import { RoomBaselineRing as n } from "./baselines.js";
4
+ // src/serverSessionConfig.ts
5
+ function r(r, i) {
6
+ let a = {
7
+ maxPendingWrites: 16,
8
+ maxFramesPerSecond: 128,
9
+ baselineCapacity: 8,
10
+ maxBaselineAgeMs: 3e3,
11
+ helloTimeoutMs: 5e3,
12
+ authTimeoutMs: 5e3,
13
+ idleTimeoutMs: 3e4
14
+ }, o = t(r, Object.keys(a), []), s = { ...a };
15
+ for (let e of Object.keys(a)) Object.defineProperty(s, e, {
16
+ value: o[e] ?? a[e],
17
+ enumerable: !0
18
+ });
19
+ if (![
20
+ s.helloTimeoutMs,
21
+ s.authTimeoutMs,
22
+ s.idleTimeoutMs
23
+ ].every((e) => Number.isSafeInteger(e) && e > 0)) throw new e({
24
+ room: i,
25
+ detail: "Session deadlines must be positive safe integers"
26
+ });
27
+ if (!Number.isSafeInteger(s.maxPendingWrites) || s.maxPendingWrites < 1) throw new e({
28
+ room: i,
29
+ detail: "Pending transport writes must be bounded"
30
+ });
31
+ if (!Number.isSafeInteger(s.maxFramesPerSecond) || s.maxFramesPerSecond < 1) throw new e({
32
+ room: i,
33
+ detail: "Incoming frame rate must be bounded"
34
+ });
35
+ let c = new n(s.baselineCapacity, s.maxBaselineAgeMs);
36
+ return Object.freeze({
37
+ ...s,
38
+ baselineCapacity: c.capacity,
39
+ maxBaselineAgeMs: c.maxBaselineAgeMs
40
+ });
41
+ }
42
+ export { r as captureRoomServerSessionLimits };
@@ -0,0 +1,52 @@
1
+ import { ProtocolError as e } from "./errors.js";
2
+ import { Effect as t } from "effect";
3
+ // src/sessionAdmission.ts
4
+ var n = (t) => {
5
+ let n = () => {
6
+ throw new e({ detail: "Room session admission evidence is invalid" });
7
+ };
8
+ if (!t || typeof t != "object" || Object.getPrototypeOf(t) !== Object.prototype) return n();
9
+ let r = [
10
+ "tenantId",
11
+ "subjectId",
12
+ "roomId",
13
+ "sessionId",
14
+ "epoch",
15
+ "role",
16
+ "nonce",
17
+ "credentialDigest"
18
+ ], i = Object.getOwnPropertyDescriptors(t);
19
+ if (Reflect.ownKeys(t).length !== r.length || r.some((e) => !i[e] || !("value" in i[e]))) return n();
20
+ let a = Object.fromEntries(r.map((e) => [e, i[e].value])), o = (e) => {
21
+ let t = a[e];
22
+ return typeof t != "string" || !t.trim() || t.length > 191 || /[\u0000-\u001f\u007f]/.test(t) ? n() : t;
23
+ };
24
+ return typeof a.epoch != "number" || !Number.isSafeInteger(a.epoch) || a.epoch < 0 || a.epoch > 2147483647 || a.role !== "player" || typeof a.nonce != "string" || !/^[A-Za-z0-9_-]{1,64}$/.test(a.nonce) || typeof a.credentialDigest != "string" || !/^[a-f0-9]{64}$/.test(a.credentialDigest) ? n() : Object.freeze({
25
+ tenantId: o("tenantId"),
26
+ subjectId: o("subjectId"),
27
+ roomId: o("roomId"),
28
+ sessionId: o("sessionId"),
29
+ epoch: a.epoch,
30
+ role: "player",
31
+ nonce: a.nonce,
32
+ credentialDigest: a.credentialDigest
33
+ });
34
+ }, r = (r) => {
35
+ if (typeof r != "function") throw new e({ detail: "Actual Room session admission reader is required" });
36
+ return (i) => {
37
+ let a;
38
+ try {
39
+ a = n(i);
40
+ } catch {
41
+ return t.fail(new e({ detail: "Invalid Room session admission confirmation" }));
42
+ }
43
+ return t.try({
44
+ try: () => {
45
+ let t = n(r(a.roomId, a.sessionId));
46
+ if (Object.keys(a).some((e) => a[e] !== t[e])) throw new e({ detail: "Room session admission no longer matches the actual target" });
47
+ },
48
+ catch: () => new e({ detail: "Actual admitted Room target session is unavailable" })
49
+ });
50
+ };
51
+ };
52
+ export { n as captureRoomSessionAdmissionEvidence, r as confirmRoomSessionAdmission };
@@ -0,0 +1,102 @@
1
+ import { ProtocolError as e, RoomAuthoringError as t } from "./errors.js";
2
+ import { captureRoomTransportClock as n, captureRoomTransportDataMethod as r } from "./transportAuthoring.js";
3
+ import { decodeRoomFrame as i } from "./wire.js";
4
+ import { Result as a } from "effect";
5
+ // src/sidecarAdmission.ts
6
+ var o = (o, s) => {
7
+ let c = [
8
+ "verificationTimeoutMs",
9
+ "maxHelloBytes",
10
+ "clock",
11
+ "ready"
12
+ ];
13
+ if (!s || Object.getPrototypeOf(s) !== Object.prototype || Reflect.ownKeys(s).length !== c.length || c.some((e) => {
14
+ let t = Object.getOwnPropertyDescriptor(s, e);
15
+ return !t?.enumerable || !("value" in t);
16
+ }) || !Number.isSafeInteger(s.verificationTimeoutMs) || s.verificationTimeoutMs < 1 || s.verificationTimeoutMs > 3e5 || !Number.isSafeInteger(s.maxHelloBytes) || s.maxHelloBytes < 1 || s.maxHelloBytes > 16777216) throw new t({
17
+ room: "sidecar-admission",
18
+ detail: "Sidecar admission requires complete captured host policy and bounded Hello"
19
+ });
20
+ let l = r(o, "verifySeat", "Sidecar admission requires actual host seat verification"), u = r(o, "connect", "Sidecar admission requires actual host session construction"), d = r(s, "ready", "Sidecar admission requires actual host readiness"), f = n(s.clock).now, p = s.verificationTimeoutMs, m = s.maxHelloBytes;
21
+ return (t) => {
22
+ if (t.name !== "wt" || !(t.signal instanceof AbortSignal) || t.signal.aborted) throw new e({ detail: "Sidecar admission requires a current actual native transport" });
23
+ let n = r(t.reliable, "onFrame", "Sidecar admission requires actual reliable ingress"), o = r(t, "close", "Sidecar admission requires actual transport withdrawal"), s = new AbortController(), c = "waiting", h, g, _, v, y = !1, b = !1, x = -1, S, C = () => {
24
+ let t = f();
25
+ if (!Number.isFinite(t) || t < 0 || t < x) throw new e({ detail: "Sidecar admission clock regressed" });
26
+ return x = t, t;
27
+ }, w = C() + p, T, E = () => {
28
+ T !== void 0 && (clearTimeout(T), T = void 0);
29
+ }, D = () => {
30
+ v &&= (v(), void 0);
31
+ }, O = (e, t, n = !1) => {
32
+ if (c !== "closed" || n) {
33
+ S ??= Object.freeze({
34
+ code: e,
35
+ detail: t
36
+ }), c = "closed", E(), s.abort();
37
+ try {
38
+ D(), y = !1;
39
+ } catch {
40
+ y = !0;
41
+ }
42
+ try {
43
+ o(S.code, S.detail), b = !1;
44
+ } catch {
45
+ b = !0;
46
+ }
47
+ }
48
+ }, k = () => {
49
+ O(1e3, "Room connection ended");
50
+ }, A = () => {
51
+ if (_) return _;
52
+ O(1e3, "Room connection ended", !0), t.signal.removeEventListener("abort", k);
53
+ let n = (async () => {
54
+ if (g && await g, h && (await Promise.allSettled([h.close("reconnecting"), h.settled()])).some((e) => e.status === "rejected")) throw new e({ detail: "Sidecar accepted Room session release remains incomplete" });
55
+ if (y) throw new e({ detail: "Sidecar Hello listener release remains incomplete" });
56
+ if (b) throw new e({ detail: "Sidecar native connection withdrawal remains incomplete" });
57
+ })();
58
+ return _ = n, n.catch(() => {
59
+ _ === n && (_ = void 0);
60
+ }), n;
61
+ };
62
+ t.signal.addEventListener("abort", k, { once: !0 }), T = setTimeout(() => O(1008, "Room Hello verification timed out"), p);
63
+ try {
64
+ let r = n((e) => {
65
+ if (c !== "closed") {
66
+ if (c !== "waiting") O(1008, "Room Hello verification pending");
67
+ else try {
68
+ if (d() !== !0 || C() >= w || !(e instanceof Uint8Array) || e.byteLength > m) {
69
+ O(1008, "Room Hello refused");
70
+ return;
71
+ }
72
+ let n = e.slice(), r = i(n);
73
+ if (a.isFailure(r) || r.success.kind !== "Hello") {
74
+ O(1008, "Room Hello refused");
75
+ return;
76
+ }
77
+ let o = r.success.token.slice();
78
+ c = "verifying", g = Promise.resolve().then(async () => {
79
+ try {
80
+ let e = await l(o, s.signal);
81
+ if (c !== "verifying" || s.signal.aborted || t.signal.aborted || d() !== !0 || C() >= w) {
82
+ O(1008, "Room Hello refused");
83
+ return;
84
+ }
85
+ D(), h = u(e, t, n), c = "admitted", E();
86
+ } catch {
87
+ O(1008, "Room Hello refused");
88
+ }
89
+ }), g.catch(() => {});
90
+ } catch {
91
+ O(1008, "Room Hello refused");
92
+ }
93
+ }
94
+ });
95
+ if (typeof r != "function") throw new e({ detail: "Sidecar reliable listener did not return actual withdrawal" });
96
+ return v = r, c === "closed" && D(), t.signal.aborted && k(), Object.freeze({ closeAsync: A });
97
+ } catch {
98
+ throw O(1011, "Room connection setup failed"), t.signal.removeEventListener("abort", k), new e({ detail: "Sidecar first-Hello listener could not be acquired" });
99
+ }
100
+ };
101
+ };
102
+ export { o as roomSidecarAdmission };
@@ -0,0 +1,115 @@
1
+ import { RoomAuthoringError as e } from "./errors.js";
2
+ import { RoomSidecarWire as t } from "./sidecarWire.js";
3
+ import { isAbsolute as n, resolve as r } from "node:path";
4
+ import { isIP as i } from "node:net";
5
+ // src/sidecarConfig.ts
6
+ function a() {
7
+ throw new e({
8
+ room: "sidecar-config",
9
+ detail: "Native sidecar configuration requires explicit canonical selections and matching bounded budgets"
10
+ });
11
+ }
12
+ var o = (e, t, n = []) => {
13
+ let r = e ? n.filter((t) => Object.hasOwn(e, t)) : [];
14
+ (!e || Object.getPrototypeOf(e) !== Object.prototype || Reflect.ownKeys(e).length !== t.length + r.length || [...t, ...r].some((t) => {
15
+ let n = Object.getOwnPropertyDescriptor(e, t);
16
+ return !n?.enumerable || !("value" in n);
17
+ })) && a();
18
+ }, s = (e, t) => typeof e != "number" || !Number.isSafeInteger(e) || e < 1 || e > t ? a() : e, c = (e) => typeof e != "string" || !n(e) || r(e) !== e || e.includes("\0") ? a() : e, l = (e) => {
19
+ o(e, [
20
+ "udpAddress",
21
+ "requestAuthority",
22
+ "path",
23
+ "origins",
24
+ "certificateFile",
25
+ "privateKeyFile",
26
+ "maxTotalPendingBytes",
27
+ "maxTotalPendingFrames",
28
+ "admissionTimeoutMs",
29
+ "writeTimeoutMs",
30
+ "idleTimeoutMs"
31
+ ], ["loopbackOrigins"]);
32
+ let t = e.loopbackOrigins ?? !1;
33
+ typeof t != "boolean" && a(), (typeof e.udpAddress != "string" || typeof e.requestAuthority != "string" || typeof e.path != "string") && a();
34
+ let n = /^(?:\[([^\]]+)\]|([^:]+)):(\d+)$/.exec(e.udpAddress);
35
+ n || a();
36
+ let r = n[1] ?? n[2], l = i(r), u = Number(n[3]);
37
+ (!l || !Number.isSafeInteger(u) || u < 1024 || u > 65535 || String(u) !== n[3] || r.includes("%") || r === "0.0.0.0" || r === "::" || l === 4 && Number(r.split(".")[0]) >= 224 && Number(r.split(".")[0]) <= 239 || l === 6 && r.toLowerCase().startsWith("ff")) && a();
38
+ let d;
39
+ try {
40
+ d = new URL("https://" + e.requestAuthority + e.path);
41
+ } catch {
42
+ return a();
43
+ }
44
+ (!e.requestAuthority || e.requestAuthority.length > 253 || !e.path.startsWith("/") || e.path.length > 512 || d.host !== e.requestAuthority || d.pathname !== e.path || d.username || d.password || d.search || d.hash || e.path.includes("?") || e.path.includes("#")) && a();
45
+ let f = e.origins;
46
+ (!Array.isArray(f) || f.length < 1 && !t || f.length > 64 || Reflect.ownKeys(f).length !== f.length + 1) && a();
47
+ let p = [];
48
+ for (let e = 0; e < f.length; e++) {
49
+ let t = Object.getOwnPropertyDescriptor(f, String(e));
50
+ (!t || !("value" in t) || typeof t.value != "string" || t.value.length > 4096) && a();
51
+ let n;
52
+ try {
53
+ n = new URL(t.value);
54
+ } catch {
55
+ return a();
56
+ }
57
+ (n.protocol !== "https:" || !n.host || n.username || n.password || n.pathname !== "/" || n.search || n.hash || t.value !== "https://" + n.host || p.includes(t.value)) && a(), p.push(t.value);
58
+ }
59
+ return Object.freeze({
60
+ udpAddress: e.udpAddress,
61
+ requestAuthority: e.requestAuthority,
62
+ path: e.path,
63
+ origins: Object.freeze(p),
64
+ ...t ? { loopbackOrigins: t } : {},
65
+ certificateFile: c(e.certificateFile),
66
+ privateKeyFile: c(e.privateKeyFile),
67
+ maxTotalPendingBytes: s(e.maxTotalPendingBytes, 33554432),
68
+ maxTotalPendingFrames: s(e.maxTotalPendingFrames, 65536),
69
+ admissionTimeoutMs: s(e.admissionTimeoutMs, 3e5),
70
+ writeTimeoutMs: s(e.writeTimeoutMs, 3e5),
71
+ idleTimeoutMs: s(e.idleTimeoutMs, 3e5)
72
+ });
73
+ }, u = (e, n, r) => {
74
+ let i = l(e);
75
+ o(n, [
76
+ "bootId",
77
+ "wire",
78
+ "maxConnections",
79
+ "maxRetiredConnections",
80
+ "maxListeners",
81
+ "maxPendingWrites",
82
+ "maxPendingEnvelopes",
83
+ "maxQueuedEnvelopeBytes",
84
+ "ackTimeoutMs",
85
+ "clock",
86
+ "bindConnection"
87
+ ]), new t(n.wire), n.bootId instanceof Uint8Array && n.bootId.byteLength === 16 || a();
88
+ let u = s(n.maxConnections, 65536), d = s(n.maxRetiredConnections, 1048576), f = s(n.maxPendingWrites, 4096);
89
+ (d < u || n.wire.maxQueuedBytes < n.wire.maxFrameBytes + 4 || n.wire.maxDatagramBytes > n.wire.maxFrameBytes || i.maxTotalPendingBytes < Math.max(n.wire.maxFrameBytes + 27, n.wire.maxReasonBytes + 24, 30) + 4 || i.writeTimeoutMs > s(n.ackTimeoutMs, 3e5)) && a(), c(r), new TextEncoder().encode(r).byteLength > 100 && a();
90
+ let p = {
91
+ bootId: Buffer.from(n.bootId).toString("hex"),
92
+ ipcPath: r,
93
+ udpAddress: i.udpAddress,
94
+ requestAuthority: i.requestAuthority,
95
+ path: i.path,
96
+ origins: i.origins,
97
+ loopbackOrigins: i.loopbackOrigins ?? !1,
98
+ certificateFile: i.certificateFile,
99
+ privateKeyFile: i.privateKeyFile,
100
+ maxConnections: u,
101
+ maxRetiredConnections: d,
102
+ maxFrameBytes: n.wire.maxFrameBytes,
103
+ maxQueuedBytes: n.wire.maxQueuedBytes,
104
+ maxPendingWrites: f,
105
+ maxTotalPendingBytes: i.maxTotalPendingBytes,
106
+ maxTotalPendingFrames: i.maxTotalPendingFrames,
107
+ maxDatagramBytes: n.wire.maxDatagramBytes,
108
+ maxReasonBytes: n.wire.maxReasonBytes,
109
+ admissionTimeoutMs: i.admissionTimeoutMs,
110
+ writeTimeoutMs: i.writeTimeoutMs,
111
+ idleTimeoutMs: i.idleTimeoutMs
112
+ }, m = new TextEncoder().encode(JSON.stringify(p) + "\n");
113
+ return m.byteLength > 65536 && a(), m;
114
+ };
115
+ export { l as captureRoomSidecarNativeConfig, u as encodeRoomSidecarNativeConfig };
@@ -0,0 +1,63 @@
1
+ import { ProtocolError as e, RoomAuthoringError as t } from "./errors.js";
2
+ import { encodeRoomSidecarNativeConfig as n } from "./sidecarConfig.js";
3
+ import { dirname as r, join as i } from "node:path";
4
+ import { constants as a } from "node:fs";
5
+ import { lstat as o, open as s, realpath as c } from "node:fs/promises";
6
+ // src/sidecarConfigPublication.ts
7
+ var l = class extends Error {
8
+ cleanup;
9
+ constructor(e) {
10
+ super("Room sidecar private configuration publication or owned descriptor cleanup remains incomplete"), this.cleanup = e;
11
+ }
12
+ }, u = async (u, d, f, p) => {
13
+ let m = n(u, d, f);
14
+ if (!(p instanceof AbortSignal) || p.aborted || typeof process.getuid != "function") throw new t({
15
+ room: "sidecar-config",
16
+ detail: "Native configuration publication requires an actual current owned lifetime"
17
+ });
18
+ let h = r(f), g = i(h, "native.json"), _ = BigInt(process.getuid()), v, y, b, x = () => {
19
+ if (b) return b;
20
+ let t = (async () => {
21
+ let t = [];
22
+ if (y) try {
23
+ await y.close(), y = void 0;
24
+ } catch (e) {
25
+ t.push(e);
26
+ }
27
+ if (v) try {
28
+ await v.close(), v = void 0;
29
+ } catch (e) {
30
+ t.push(e);
31
+ }
32
+ if (t.length) throw new e({ detail: "Sidecar private configuration descriptor cleanup remains incomplete" });
33
+ })();
34
+ return b = t, t.catch(() => {
35
+ b === t && (b = void 0);
36
+ }), t;
37
+ };
38
+ try {
39
+ let t = await o(h, { bigint: !0 });
40
+ if (!t.isDirectory() || t.uid !== _ || (t.mode & 511n) != 448n || await c(h) !== h || p.aborted) throw new e({ detail: "Sidecar private configuration directory admission refused" });
41
+ v = await s(h, a.O_RDONLY | a.O_DIRECTORY | a.O_NOFOLLOW);
42
+ let n = await v.stat({ bigint: !0 });
43
+ if (!n.isDirectory() || n.uid !== _ || (n.mode & 511n) != 448n || n.dev !== t.dev || n.ino !== t.ino || p.aborted) throw new e({ detail: "Sidecar private configuration directory identity changed" });
44
+ y = await s(g, a.O_WRONLY | a.O_CREAT | a.O_EXCL | a.O_NOFOLLOW, 384);
45
+ let r = await y.stat({ bigint: !0 });
46
+ if (!r.isFile() || r.uid !== _ || (r.mode & 511n) != 384n || r.nlink !== 1n || p.aborted) throw new e({ detail: "Sidecar private configuration file admission refused" });
47
+ await y.writeFile(m), await y.sync(), await v.sync();
48
+ let i = await o(g, { bigint: !0 }), l = await o(h, { bigint: !0 });
49
+ if (!i.isFile() || i.uid !== _ || (i.mode & 511n) != 384n || i.nlink !== 1n || i.dev !== r.dev || i.ino !== r.ino || i.size !== BigInt(m.byteLength) || !l.isDirectory() || l.dev !== t.dev || l.ino !== t.ino || l.uid !== _ || (l.mode & 511n) != 448n || p.aborted) throw new e({ detail: "Sidecar private configuration publication changed or was cancelled" });
50
+ return await x(), Object.freeze({
51
+ configurationPath: g,
52
+ bytes: m.byteLength
53
+ });
54
+ } catch {
55
+ try {
56
+ await x();
57
+ } catch {
58
+ throw new l(x);
59
+ }
60
+ throw new e({ detail: "Sidecar private configuration publication failed" });
61
+ }
62
+ };
63
+ export { l as RoomSidecarConfigPublicationFailure, u as publishRoomSidecarNativeConfig };
@@ -0,0 +1,207 @@
1
+ import { ProtocolError as e, RoomAuthoringError as t } from "./errors.js";
2
+ import { captureRoomTransportClock as n, captureRoomTransportDataMethod as r } from "./transportAuthoring.js";
3
+ import { captureRoomSidecarNativeConfig as i } from "./sidecarConfig.js";
4
+ import { platformRoomHostTimer as a } from "./hostDriver.js";
5
+ import { RoomHostListenerBindFailure as o } from "./hostLane.js";
6
+ import { inheritRoomHostListener as s } from "./hostListenerBinding.js";
7
+ import { roomSidecarAdmission as c } from "./sidecarAdmission.js";
8
+ import { RoomSidecarRuntimeAcquisitionFailure as l, openRoomSidecarRuntime as u } from "./sidecarRuntime.js";
9
+ // src/sidecarHostListener.ts
10
+ var d = (e, n) => {
11
+ if (!e || Object.getPrototypeOf(e) !== Object.prototype || Reflect.ownKeys(e).length !== n.length || n.some((t) => {
12
+ let n = Object.getOwnPropertyDescriptor(e, t);
13
+ return !n?.enumerable || !("value" in n);
14
+ })) throw new t({
15
+ room: "sidecar-host",
16
+ detail: "Sidecar host listener requires complete own data and real providers"
17
+ });
18
+ }, f = (f) => {
19
+ if (d(f, [
20
+ "fallback",
21
+ "ipc",
22
+ "native",
23
+ "process",
24
+ "signal",
25
+ "admission",
26
+ "maintenance"
27
+ ]), d(f.ipc, [
28
+ "rootDirectory",
29
+ "peer",
30
+ "framing",
31
+ "maxPendingInboundFrames",
32
+ "maxPendingInboundBytes"
33
+ ]), d(f.ipc.peer, [
34
+ "bootId",
35
+ "wire",
36
+ "maxConnections",
37
+ "maxRetiredConnections",
38
+ "maxListeners",
39
+ "maxPendingWrites",
40
+ "maxPendingEnvelopes",
41
+ "maxQueuedEnvelopeBytes",
42
+ "ackTimeoutMs",
43
+ "clock"
44
+ ]), d(f.ipc.peer.wire, [
45
+ "maxFrameBytes",
46
+ "maxQueuedBytes",
47
+ "maxDatagramBytes",
48
+ "maxReasonBytes"
49
+ ]), d(f.ipc.framing, [
50
+ "maxFrameBytes",
51
+ "maxChunkBytes",
52
+ "maxFramesPerChunk"
53
+ ]), d(f.admission, ["verificationTimeoutMs", "maxHelloBytes"]), d(f.maintenance, Object.hasOwn(f.maintenance, "timer") ? ["cadenceMs", "timer"] : ["cadenceMs"]), !(f.signal instanceof AbortSignal) || f.signal.aborted || !(f.ipc.peer.bootId instanceof Uint8Array) || !Number.isSafeInteger(f.maintenance.cadenceMs) || f.maintenance.cadenceMs < 1 || f.maintenance.cadenceMs > 3e5) throw new t({
54
+ room: "sidecar-host",
55
+ detail: "Sidecar listener needs actual current lifetime and bounded maintenance cadence"
56
+ });
57
+ let p = r(f.fallback, "bind", "Sidecar listener requires actual WS listener ownership"), m = i(f.native), h = f.signal, g = Object.freeze({
58
+ start: r(f.process, "start", "Sidecar requires actual native start"),
59
+ stop: r(f.process, "stop", "Sidecar requires actual native stop"),
60
+ waitClosed: r(f.process, "waitClosed", "Sidecar requires actual terminal observation")
61
+ }), _ = n(f.ipc.peer.clock), v = Object.freeze({
62
+ ...f.ipc,
63
+ framing: Object.freeze({ ...f.ipc.framing }),
64
+ peer: Object.freeze({
65
+ ...f.ipc.peer,
66
+ bootId: f.ipc.peer.bootId.slice(),
67
+ wire: Object.freeze({ ...f.ipc.peer.wire }),
68
+ clock: _
69
+ })
70
+ }), y = Object.freeze({ ...f.admission }), b = f.maintenance.cadenceMs, x = r(f.maintenance.timer ?? a, "schedule", "Sidecar maintenance requires actual host timer ownership"), S = !1, C = Object.freeze({ bind: async (t, n, i) => {
71
+ if (S || !i || h.aborted) throw new e({ detail: "Sidecar listener requires its one current actual host binding" });
72
+ S = !0;
73
+ let a = r(n, "ready", "Sidecar requires actual suspended host admission"), s = r(n, "onFailure", "Sidecar requires actual HostLane owner failure observer"), d = new AbortController(), f = !1, C = !1, w, T, E, D, O, k, A = !1, j = !1, M, N = c(i, {
74
+ ...y,
75
+ clock: _,
76
+ ready: () => f && !C && !h.aborted && a() === !0
77
+ }), P = () => {
78
+ E = void 0, T &&= (T(), void 0);
79
+ }, F = () => {
80
+ f = !1;
81
+ try {
82
+ P();
83
+ } catch {
84
+ M ??= new e({ detail: "Sidecar maintenance timer release remains incomplete" });
85
+ }
86
+ D || d.abort();
87
+ };
88
+ h.addEventListener("abort", F, { once: !0 }), h.aborted && F();
89
+ let I = () => {
90
+ f = !1;
91
+ try {
92
+ P();
93
+ } catch {
94
+ M ??= new e({ detail: "Sidecar maintenance timer release remains incomplete" });
95
+ }
96
+ try {
97
+ let t = s(M ?? new e({ detail: "Sidecar host transport is unavailable" }));
98
+ t !== void 0 && (t instanceof Promise && t.catch(() => {}), M = new e({ detail: "Sidecar failure observer must return synchronous void" }));
99
+ } catch {
100
+ M = new e({ detail: "Sidecar owner failure observation remains incomplete" });
101
+ }
102
+ }, L = () => {
103
+ if (!f || C || E) return;
104
+ let t = Object.freeze({});
105
+ E = t;
106
+ let n = !0;
107
+ try {
108
+ let r = x(b, () => {
109
+ if (E !== t || !f || C) return;
110
+ E = void 0;
111
+ let r = () => {
112
+ try {
113
+ if (P(), !f || C) return;
114
+ if (h.aborted || !D || D.failure) throw new e({ detail: "Sidecar actual native lifetime became unavailable" });
115
+ D.peer.maintenance();
116
+ } catch {
117
+ M ??= new e({ detail: "Sidecar host transport maintenance failed" }), I();
118
+ return;
119
+ }
120
+ L();
121
+ };
122
+ n ? queueMicrotask(r) : r();
123
+ });
124
+ if (typeof r != "function") throw new e({ detail: "Sidecar timer requires actual cancellation" });
125
+ T = r, n = !1;
126
+ } catch {
127
+ n = !1, E = void 0, M ??= new e({ detail: "Sidecar maintenance timer acquisition failed" }), I();
128
+ }
129
+ }, R = async () => {
130
+ if (f = !1, (await Promise.allSettled([Promise.resolve().then(P), Promise.resolve().then(() => k?.stopAdmission())])).some((e) => e.status === "rejected")) throw new e({ detail: "Sidecar host admission fencing remains incomplete" });
131
+ }, z = () => {
132
+ if (C) return Promise.resolve();
133
+ if (w) return w;
134
+ f = !1;
135
+ let t = (async () => {
136
+ let t = [];
137
+ try {
138
+ P();
139
+ } catch (e) {
140
+ t.push(e);
141
+ }
142
+ if (!j && D) try {
143
+ await D.closeAsync(), j = !0;
144
+ } catch (e) {
145
+ t.push(e);
146
+ }
147
+ if (O) try {
148
+ await O(), O = void 0, j = !0;
149
+ } catch (e) {
150
+ t.push(e);
151
+ }
152
+ if (!A && k) try {
153
+ await k.close(), A = !0;
154
+ } catch (e) {
155
+ t.push(e);
156
+ }
157
+ if (t.length) throw new e({ detail: "Sidecar host listener owned cleanup remains incomplete" });
158
+ C = !0, h.removeEventListener("abort", F);
159
+ })();
160
+ return w = t, t.catch(() => {
161
+ w === t && (w = void 0);
162
+ }), t;
163
+ };
164
+ try {
165
+ k = await p(t, n, i), k = Object.freeze({
166
+ activate: r(k, "activate", "WS listener requires actual activation"),
167
+ stopAdmission: r(k, "stopAdmission", "WS listener requires actual admission fence"),
168
+ close: r(k, "close", "WS listener requires actual owned close")
169
+ });
170
+ try {
171
+ D = await u({
172
+ ipc: {
173
+ ...v,
174
+ peer: {
175
+ ...v.peer,
176
+ bindConnection: N
177
+ }
178
+ },
179
+ native: m,
180
+ process: g,
181
+ signal: d.signal
182
+ });
183
+ } catch (e) {
184
+ throw e instanceof l && (O = e.cleanup), e;
185
+ }
186
+ if (h.aborted) throw new e({ detail: "Sidecar host admission was cancelled" });
187
+ return Object.freeze({
188
+ activate: () => {
189
+ if (f || C || w || h.aborted || a() !== !0 || D.failure) throw new e({ detail: "Sidecar listener activation was fenced" });
190
+ if (k.activate(), f = !0, L(), M) throw M;
191
+ },
192
+ stopAdmission: R,
193
+ close: z
194
+ });
195
+ } catch (t) {
196
+ t instanceof o && (O = t.retryCleanup);
197
+ try {
198
+ await z();
199
+ } catch {
200
+ throw new o(z);
201
+ }
202
+ throw new e({ detail: "Sidecar host listener acquisition did not complete" });
203
+ }
204
+ } });
205
+ return s(C, f.fallback), C;
206
+ };
207
+ export { f as sidecarRoomHostListener };