@voltro/plugin-rooms 0.0.0-stage → 0.87.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. package/CHANGELOG.md +24329 -0
  2. package/LICENSE +61 -0
  3. package/README.md +9204 -2
  4. package/SECURITY.md +56 -0
  5. package/THIRD-PARTY-NOTICES.md +11322 -0
  6. package/dist/actor.js +1474 -0
  7. package/dist/apiBinding.js +678 -0
  8. package/dist/apiRegistryBinding.js +399 -0
  9. package/dist/apiReservations.js +433 -0
  10. package/dist/baselines.js +73 -0
  11. package/dist/bots.d.ts +1485 -0
  12. package/dist/bots.js +563 -0
  13. package/dist/catalog.js +80 -0
  14. package/dist/checkpointJson.js +24 -0
  15. package/dist/checkpointStore.js +386 -0
  16. package/dist/client.js +56 -0
  17. package/dist/clockSync.js +51 -0
  18. package/dist/collision.js +156 -0
  19. package/dist/commandDelivery.js +101 -0
  20. package/dist/commandRecord.js +11 -0
  21. package/dist/commandWithdrawal.js +183 -0
  22. package/dist/connection.js +497 -0
  23. package/dist/controlCarrier.js +375 -0
  24. package/dist/controlRegistry.js +79 -0
  25. package/dist/controlTarget.js +45 -0
  26. package/dist/controlTransport.js +574 -0
  27. package/dist/developmentBinding.js +113 -0
  28. package/dist/directory.js +323 -0
  29. package/dist/directoryProjection.js +117 -0
  30. package/dist/errors.d.ts +125 -0
  31. package/dist/errors.js +53 -0
  32. package/dist/fixed.d.ts +284 -0
  33. package/dist/fixed.js +10 -0
  34. package/dist/fixed32.js +134 -0
  35. package/dist/fixedCollision.js +60 -0
  36. package/dist/fixedCollision32.js +109 -0
  37. package/dist/fixedMath.js +56 -0
  38. package/dist/fixedRaw.js +11 -0
  39. package/dist/fixedSlabs.js +34 -0
  40. package/dist/fixedTrig.js +48 -0
  41. package/dist/fixedTrig32.js +38 -0
  42. package/dist/fixedVectors.js +113 -0
  43. package/dist/fixedVectors32.js +95 -0
  44. package/dist/fixedWide.js +50 -0
  45. package/dist/fixedWords.js +46 -0
  46. package/dist/gateway.js +57 -0
  47. package/dist/geometry-retention-app/rooms.geometryJournalRetention.workflow.server.tsx +4 -0
  48. package/dist/geometry-retention-app/rooms.geometryJournalRetention.workflow.tsx +14 -0
  49. package/dist/geometry-worker/worker.d.mts +2 -0
  50. package/dist/geometry-worker/worker.mjs +50 -0
  51. package/dist/geometry.d.ts +2249 -0
  52. package/dist/geometry.js +40 -0
  53. package/dist/geometryActivation.js +82 -0
  54. package/dist/geometryActorInventory.js +108 -0
  55. package/dist/geometryAdminClient.js +87 -0
  56. package/dist/geometryAdminData.js +32 -0
  57. package/dist/geometryAdminFixtures.js +50 -0
  58. package/dist/geometryAdminPorts.js +5 -0
  59. package/dist/geometryAdminRpc.js +58 -0
  60. package/dist/geometryAdminRpcRoutes.js +49 -0
  61. package/dist/geometryAdminSchemas.js +39 -0
  62. package/dist/geometryAdministration.js +190 -0
  63. package/dist/geometryAdministrationPorts.js +5 -0
  64. package/dist/geometryApiBinding.js +165 -0
  65. package/dist/geometryAppStorage.js +58 -0
  66. package/dist/geometryArtifacts.js +198 -0
  67. package/dist/geometryAssetBundle.js +117 -0
  68. package/dist/geometryAssetClient.js +25 -0
  69. package/dist/geometryAssetData.js +106 -0
  70. package/dist/geometryAssetHttp.js +123 -0
  71. package/dist/geometryAssetPorts.js +5 -0
  72. package/dist/geometryAssetRpc.js +30 -0
  73. package/dist/geometryAssetRpcRoutes.js +40 -0
  74. package/dist/geometryAssetStorageGrant.js +103 -0
  75. package/dist/geometryBoxOverlap.js +110 -0
  76. package/dist/geometryCatalogueDigest.js +111 -0
  77. package/dist/geometryCellCoverage.js +85 -0
  78. package/dist/geometryCellLoader.js +28 -0
  79. package/dist/geometryChannel.js +134 -0
  80. package/dist/geometryChunkHttp.js +54 -0
  81. package/dist/geometryChunkLeases.js +22 -0
  82. package/dist/geometryClient.d.ts +1429 -0
  83. package/dist/geometryClient.js +149 -0
  84. package/dist/geometryClientChunks.js +330 -0
  85. package/dist/geometryClientDelta.js +25 -0
  86. package/dist/geometryClientHttp.js +37 -0
  87. package/dist/geometryClientInterest.js +109 -0
  88. package/dist/geometryClientStatic.js +34 -0
  89. package/dist/geometryCms.d.ts +763 -0
  90. package/dist/geometryCms.js +217 -0
  91. package/dist/geometryCommitCoordinator.js +241 -0
  92. package/dist/geometryCompactionFixture.js +84 -0
  93. package/dist/geometryCompactionStrategies.js +38 -0
  94. package/dist/geometryConnectionClient.js +23 -0
  95. package/dist/geometryDerivationFixtures.js +141 -0
  96. package/dist/geometryDerivationStrategies.js +27 -0
  97. package/dist/geometryDigest.js +13 -0
  98. package/dist/geometryEditChannel.js +70 -0
  99. package/dist/geometryEditIngress.js +263 -0
  100. package/dist/geometryEdits.js +366 -0
  101. package/dist/geometryEnvelope.js +41 -0
  102. package/dist/geometryGridRaycast.js +92 -0
  103. package/dist/geometryGridSweep.js +92 -0
  104. package/dist/geometryHeightfield.js +166 -0
  105. package/dist/geometryHeightfieldRaycast.js +74 -0
  106. package/dist/geometryHeightfieldSweep.js +85 -0
  107. package/dist/geometryHeightfieldVolume.js +45 -0
  108. package/dist/geometryHost.js +322 -0
  109. package/dist/geometryHostDirectory.js +207 -0
  110. package/dist/geometryHostMutations.js +137 -0
  111. package/dist/geometryHostStreams.js +124 -0
  112. package/dist/geometryHttpBody.js +76 -0
  113. package/dist/geometryHttpRoutes.js +112 -0
  114. package/dist/geometryImportGltf.js +300 -0
  115. package/dist/geometryImportLdtk.js +54 -0
  116. package/dist/geometryImportPng.js +144 -0
  117. package/dist/geometryImportPublication.js +67 -0
  118. package/dist/geometryImportTiled.js +39 -0
  119. package/dist/geometryImportTiles.js +136 -0
  120. package/dist/geometryImportVox.js +130 -0
  121. package/dist/geometryImportedSource.js +101 -0
  122. package/dist/geometryInspectEndpoint.js +248 -0
  123. package/dist/geometryInspection.js +92 -0
  124. package/dist/geometryInstall.js +121 -0
  125. package/dist/geometryJournalArchiveData.js +21 -0
  126. package/dist/geometryJournalArchiveIndex.js +330 -0
  127. package/dist/geometryJournalArchiveTable.js +21 -0
  128. package/dist/geometryJournalCompaction.js +100 -0
  129. package/dist/geometryJournalPatch.js +47 -0
  130. package/dist/geometryJournalRetention.js +112 -0
  131. package/dist/geometryJournalRetentionSchemas.js +36 -0
  132. package/dist/geometryJournalRetentionSweep.js +112 -0
  133. package/dist/geometryJournalRetentionWorkflow.js +28 -0
  134. package/dist/geometryJournalRetentionWorkflowData.js +31 -0
  135. package/dist/geometryJournalStorage.js +148 -0
  136. package/dist/geometryLoader.js +118 -0
  137. package/dist/geometryManifest.js +113 -0
  138. package/dist/geometryManifestChannel.js +93 -0
  139. package/dist/geometryManifestClient.js +122 -0
  140. package/dist/geometryManifestData.js +49 -0
  141. package/dist/geometryManifestPorts.js +5 -0
  142. package/dist/geometryManifestPublication.js +109 -0
  143. package/dist/geometryManifestSource.js +68 -0
  144. package/dist/geometryMigrationJournal.js +14 -0
  145. package/dist/geometryMigrationStrategies.js +7 -0
  146. package/dist/geometryMigrations.js +323 -0
  147. package/dist/geometryNativeMetadata.js +52 -0
  148. package/dist/geometryPatch.js +170 -0
  149. package/dist/geometryPersistence.js +449 -0
  150. package/dist/geometryPersistenceCapture.js +69 -0
  151. package/dist/geometryPersistenceData.js +140 -0
  152. package/dist/geometryPersistencePorts.js +5 -0
  153. package/dist/geometryPlayerAdmission.js +34 -0
  154. package/dist/geometryPlayerEditOwner.js +265 -0
  155. package/dist/geometryPlayerEdits.js +49 -0
  156. package/dist/geometryPrepared.js +188 -0
  157. package/dist/geometryPrivacyFence.js +24 -0
  158. package/dist/geometryProceduralPublication.js +91 -0
  159. package/dist/geometryProceduralWorker.js +164 -0
  160. package/dist/geometryPublication.js +110 -0
  161. package/dist/geometryRayAlgebra.js +116 -0
  162. package/dist/geometryReadClient.js +157 -0
  163. package/dist/geometryReadPorts.js +5 -0
  164. package/dist/geometryReadRpc.js +27 -0
  165. package/dist/geometryReadRpcRoutes.js +47 -0
  166. package/dist/geometryReliablePublication.js +82 -0
  167. package/dist/geometryReloadPorts.js +46 -0
  168. package/dist/geometryReloadSource.js +278 -0
  169. package/dist/geometryRenderCache.js +165 -0
  170. package/dist/geometryRenderLod.js +102 -0
  171. package/dist/geometryRollback.js +125 -0
  172. package/dist/geometryRollbackCoordinator.js +203 -0
  173. package/dist/geometryRollbackPorts.js +46 -0
  174. package/dist/geometryRollbackSource.js +209 -0
  175. package/dist/geometryRollbackStore.js +198 -0
  176. package/dist/geometrySchemas.js +27 -0
  177. package/dist/geometryServer.d.ts +2766 -0
  178. package/dist/geometryServer.js +62 -0
  179. package/dist/geometryShapeRaycast.js +111 -0
  180. package/dist/geometryShapeSegments.js +34 -0
  181. package/dist/geometryShapes.js +223 -0
  182. package/dist/geometrySnapshot.js +76 -0
  183. package/dist/geometrySnapshotChannel.js +160 -0
  184. package/dist/geometrySnapshotClient.js +159 -0
  185. package/dist/geometrySnapshotPreparation.js +76 -0
  186. package/dist/geometrySnapshotServer.js +191 -0
  187. package/dist/geometrySqlOwner.js +21 -0
  188. package/dist/geometryStorage.js +127 -0
  189. package/dist/geometryStorageGrant.js +69 -0
  190. package/dist/geometryStorageIdentity.js +9 -0
  191. package/dist/geometryTileArtifact.js +10 -0
  192. package/dist/geometryTileCodec.js +194 -0
  193. package/dist/geometryTileCollision.js +96 -0
  194. package/dist/geometryTileNavigation.js +128 -0
  195. package/dist/geometryTileView.js +35 -0
  196. package/dist/geometryVersionActivation.js +114 -0
  197. package/dist/geometryVersionClient.js +238 -0
  198. package/dist/geometryVersionCompare.js +40 -0
  199. package/dist/geometryVersionMigration.js +106 -0
  200. package/dist/geometryVoxel.js +253 -0
  201. package/dist/geometryWorldEntitySubject.js +32 -0
  202. package/dist/geometryWorldExtent.js +12 -0
  203. package/dist/geometryWorldMetadata.js +38 -0
  204. package/dist/geometryWorldStrategyFixtures.js +127 -0
  205. package/dist/geometryWorldView.js +307 -0
  206. package/dist/host.js +128 -0
  207. package/dist/hostBinding.js +277 -0
  208. package/dist/hostCellObservation.js +114 -0
  209. package/dist/hostClientCapacity.js +90 -0
  210. package/dist/hostCommandScope.js +64 -0
  211. package/dist/hostController.js +3094 -0
  212. package/dist/hostDeployment.js +65 -0
  213. package/dist/hostDrain.js +152 -0
  214. package/dist/hostDrainPorts.js +5 -0
  215. package/dist/hostDriver.js +179 -0
  216. package/dist/hostLane.js +288 -0
  217. package/dist/hostListener.js +79 -0
  218. package/dist/hostListenerBinding.js +19 -0
  219. package/dist/hostLoopObservation.js +90 -0
  220. package/dist/hostMetrics.js +56 -0
  221. package/dist/hostRegistryBinding.js +418 -0
  222. package/dist/hostSelection.js +16 -0
  223. package/dist/hostShutdown.js +47 -0
  224. package/dist/hostTurnObservation.js +53 -0
  225. package/dist/identities.js +4 -0
  226. package/dist/index.d.ts +8632 -0
  227. package/dist/index.js +232 -0
  228. package/dist/inputReceipts.js +63 -0
  229. package/dist/inputRedundancy.js +55 -0
  230. package/dist/inspect.js +238 -0
  231. package/dist/lockstep.d.ts +436 -0
  232. package/dist/lockstep.js +382 -0
  233. package/dist/lockstepAdmission.js +262 -0
  234. package/dist/lockstepAdmissionCodec.js +94 -0
  235. package/dist/lockstepAdmissionPorts.js +5 -0
  236. package/dist/lockstepClientSession.js +578 -0
  237. package/dist/lockstepDefinition.js +148 -0
  238. package/dist/lockstepHostLoop.js +243 -0
  239. package/dist/lockstepInitialAdmission.js +67 -0
  240. package/dist/lockstepInitialStrategyFixtures.js +45 -0
  241. package/dist/lockstepJournal.js +395 -0
  242. package/dist/lockstepJournalCodec.js +254 -0
  243. package/dist/lockstepJournalPorts.js +5 -0
  244. package/dist/lockstepJournalRebuild.js +208 -0
  245. package/dist/lockstepJournalRows.js +57 -0
  246. package/dist/lockstepMembers.js +131 -0
  247. package/dist/lockstepMessages.js +47 -0
  248. package/dist/lockstepOwnedRoom.js +764 -0
  249. package/dist/lockstepPolicies.js +84 -0
  250. package/dist/lockstepReact.js +47 -0
  251. package/dist/lockstepRecoveryTruth.js +121 -0
  252. package/dist/lockstepRosterConfig.js +32 -0
  253. package/dist/lockstepSeed.js +12 -0
  254. package/dist/lockstepSeedFixture.js +20 -0
  255. package/dist/lockstepServer.d.ts +3897 -0
  256. package/dist/lockstepServer.js +325 -0
  257. package/dist/lockstepServerConfig.js +101 -0
  258. package/dist/lockstepServerRoles.js +403 -0
  259. package/dist/lockstepServerStrategyFixtures.js +33 -0
  260. package/dist/lockstepStrategies.js +6 -0
  261. package/dist/lockstepStrategyFixtures.js +137 -0
  262. package/dist/lockstepTerminal.js +90 -0
  263. package/dist/lockstepTerminalPorts.js +5 -0
  264. package/dist/lockstepTransport.js +773 -0
  265. package/dist/lockstepTransportConfig.js +32 -0
  266. package/dist/lockstepWireRoster.js +34 -0
  267. package/dist/matchRoomProvider.js +32 -0
  268. package/dist/matchRooms.js +19 -0
  269. package/dist/membershipObserver.js +47 -0
  270. package/dist/moderation.js +98 -0
  271. package/dist/movementSpecials.js +104 -0
  272. package/dist/ownership.js +17 -0
  273. package/dist/ownershipWithdrawal.js +18 -0
  274. package/dist/pcg32.js +96 -0
  275. package/dist/ports.d.ts +1241 -0
  276. package/dist/ports.js +11 -0
  277. package/dist/quaternion.js +70 -0
  278. package/dist/react.d.ts +406 -0
  279. package/dist/react.js +109 -0
  280. package/dist/reaper-app/rooms.reaper.workflow.server.tsx +5 -0
  281. package/dist/reaper-app/rooms.reaper.workflow.tsx +13 -0
  282. package/dist/reaper.js +243 -0
  283. package/dist/reaperSchemas.js +42 -0
  284. package/dist/reaperWorkflow.js +70 -0
  285. package/dist/recovery.js +189 -0
  286. package/dist/recoverySeats.js +26 -0
  287. package/dist/replay.d.ts +273 -0
  288. package/dist/replay.js +485 -0
  289. package/dist/replayPorts.js +5 -0
  290. package/dist/replayRecording.js +67 -0
  291. package/dist/replaySchema.js +157 -0
  292. package/dist/replayStorage.d.ts +149 -0
  293. package/dist/replayStorage.js +485 -0
  294. package/dist/reservationBatch.js +422 -0
  295. package/dist/reservationSchemas.js +17 -0
  296. package/dist/reservations.js +259 -0
  297. package/dist/reservePort.js +69 -0
  298. package/dist/resolvedOptions.js +4 -0
  299. package/dist/room.d.ts +1006 -0
  300. package/dist/room.js +284 -0
  301. package/dist/roomAccessSweep.js +95 -0
  302. package/dist/roomAppCommandControl.js +59 -0
  303. package/dist/roomAuthoringStrategy.js +17 -0
  304. package/dist/roomErasure.js +198 -0
  305. package/dist/roomPoolRuntimeDefaults.js +24 -0
  306. package/dist/roomPoolSelection.js +19 -0
  307. package/dist/roomPoolTopology.js +212 -0
  308. package/dist/rpc.d.ts +551 -0
  309. package/dist/rpc.js +112 -0
  310. package/dist/rpcClient.js +152 -0
  311. package/dist/rpcRoutes.js +28 -0
  312. package/dist/runtime.js +1123 -0
  313. package/dist/schemaHistory.js +98 -0
  314. package/dist/seatStore.js +151 -0
  315. package/dist/seatStrategyFixtures.js +52 -0
  316. package/dist/seatSubject.js +32 -0
  317. package/dist/seats.js +130 -0
  318. package/dist/serverSession.js +811 -0
  319. package/dist/serverSessionConfig.js +43 -0
  320. package/dist/sessionAdmission.js +53 -0
  321. package/dist/sidecarAdmission.js +103 -0
  322. package/dist/sidecarConfig.js +116 -0
  323. package/dist/sidecarConfigPublication.js +64 -0
  324. package/dist/sidecarHostListener.js +208 -0
  325. package/dist/sidecarIpc.js +205 -0
  326. package/dist/sidecarPeer.js +310 -0
  327. package/dist/sidecarProcessPort.js +28 -0
  328. package/dist/sidecarRuntime.js +168 -0
  329. package/dist/sidecarSelection.js +142 -0
  330. package/dist/sidecarWire.js +178 -0
  331. package/dist/sidecarWrites.js +163 -0
  332. package/dist/simulation.d.ts +391 -0
  333. package/dist/simulation.js +282 -0
  334. package/dist/simulationAuthoring.js +29 -0
  335. package/dist/simulationBytes.js +27 -0
  336. package/dist/simulationConformance.js +305 -0
  337. package/dist/simulationInputHistoryCapture.js +35 -0
  338. package/dist/simulationInputHistoryWire.js +193 -0
  339. package/dist/simulationOptionsWire.js +78 -0
  340. package/dist/simulationRecoveryWire.js +134 -0
  341. package/dist/simulationReplay.js +127 -0
  342. package/dist/simulationSnapshotWire.js +112 -0
  343. package/dist/simulationState.js +178 -0
  344. package/dist/snapshotBlob.js +126 -0
  345. package/dist/snapshotBlobCleanup.js +93 -0
  346. package/dist/snapshotBlobIndex.js +38 -0
  347. package/dist/snapshotBudget.js +80 -0
  348. package/dist/snapshotChain.js +185 -0
  349. package/dist/snapshotErasure.js +172 -0
  350. package/dist/snapshotInspection.js +105 -0
  351. package/dist/snapshotSegmentBlobs.js +58 -0
  352. package/dist/snapshotUploads.js +166 -0
  353. package/dist/socketTransport.js +253 -0
  354. package/dist/spatial.js +104 -0
  355. package/dist/spectatorPolicy.js +26 -0
  356. package/dist/spectatorProducer.js +89 -0
  357. package/dist/startFailureCause.js +4 -0
  358. package/dist/stateCodec.js +658 -0
  359. package/dist/strategies.d.ts +210 -0
  360. package/dist/strategies.js +8 -0
  361. package/dist/strategiesServer.d.ts +286 -0
  362. package/dist/strategiesServer.js +11 -0
  363. package/dist/strategyFixtures.js +182 -0
  364. package/dist/streamFraming.js +122 -0
  365. package/dist/streamTransport.js +266 -0
  366. package/dist/subjectAdmission.js +50 -0
  367. package/dist/subjectPrivacy.js +281 -0
  368. package/dist/subjectPrivacyBinding.js +90 -0
  369. package/dist/systemManifest.js +182 -0
  370. package/dist/tables.js +159 -0
  371. package/dist/testHarness.js +89 -0
  372. package/dist/testing.d.ts +3684 -0
  373. package/dist/testing.js +221 -0
  374. package/dist/testingPorts.js +271 -0
  375. package/dist/testingServer.d.ts +4060 -0
  376. package/dist/testingServer.js +18 -0
  377. package/dist/transform.d.ts +692 -0
  378. package/dist/transform.js +217 -0
  379. package/dist/transform3d.js +118 -0
  380. package/dist/transformCollection.js +24 -0
  381. package/dist/transformCollection3d.js +24 -0
  382. package/dist/transformCollectionCore.js +156 -0
  383. package/dist/transformFrames.js +121 -0
  384. package/dist/transformPrediction3d.js +127 -0
  385. package/dist/transformRules.js +123 -0
  386. package/dist/transformSchemas.js +20 -0
  387. package/dist/transport.js +32 -0
  388. package/dist/transportAuthoring.js +29 -0
  389. package/dist/transportCleanup.js +22 -0
  390. package/dist/transportConformance.js +124 -0
  391. package/dist/transportConnector.js +82 -0
  392. package/dist/transportEndpoints.js +38 -0
  393. package/dist/transportsServer.d.ts +5515 -0
  394. package/dist/transportsServer.js +6 -0
  395. package/dist/viewProjection.js +16 -0
  396. package/dist/web.d.ts +2286 -0
  397. package/dist/web.js +518 -0
  398. package/dist/webTransportClient.js +173 -0
  399. package/dist/wire.d.ts +992 -0
  400. package/dist/wire.js +492 -0
  401. package/dist/withdrawalPort.js +28 -0
  402. package/dist/world.d.ts +1894 -0
  403. package/dist/world.js +333 -0
  404. package/dist/worldActorReceipts.js +48 -0
  405. package/dist/worldActorTransferSnapshot.js +14 -0
  406. package/dist/worldAdmissionPending.js +8 -0
  407. package/dist/worldBoundaryCoordinator.js +148 -0
  408. package/dist/worldCatalog.js +81 -0
  409. package/dist/worldCellAllocation.js +203 -0
  410. package/dist/worldCellDestination.js +68 -0
  411. package/dist/worldCells.js +489 -0
  412. package/dist/worldChange.js +32 -0
  413. package/dist/worldClient.js +664 -0
  414. package/dist/worldClientControl.js +141 -0
  415. package/dist/worldClientPendingInput.js +16 -0
  416. package/dist/worldClientRpc.js +133 -0
  417. package/dist/worldClientRpcRoutes.js +43 -0
  418. package/dist/worldClientSchemas.js +28 -0
  419. package/dist/worldCommands.js +140 -0
  420. package/dist/worldData.js +42 -0
  421. package/dist/worldDefaultBinding.js +377 -0
  422. package/dist/worldDefaultGroupAdmission.js +82 -0
  423. package/dist/worldDefaultGroupAppServices.js +31 -0
  424. package/dist/worldDefaultGroupCompensation.js +109 -0
  425. package/dist/worldDefaultGroupContinuation.js +96 -0
  426. package/dist/worldDefaultGroupControl.js +72 -0
  427. package/dist/worldDefaultGroupMembers.js +85 -0
  428. package/dist/worldDefaultGroups.js +21 -0
  429. package/dist/worldDefaultPending.js +79 -0
  430. package/dist/worldDefaultService.js +245 -0
  431. package/dist/worldEntities.js +2980 -0
  432. package/dist/worldEntityCodec.js +21 -0
  433. package/dist/worldEntityHandoffView.js +154 -0
  434. package/dist/worldGeometry.js +170 -0
  435. package/dist/worldGhostAdmission.js +65 -0
  436. package/dist/worldGhostDestination.js +118 -0
  437. package/dist/worldGhostGateway.js +132 -0
  438. package/dist/worldGhostHandshake.js +108 -0
  439. package/dist/worldGhostHost.js +42 -0
  440. package/dist/worldGhostIngress.js +132 -0
  441. package/dist/worldGhostNeighborhood.js +70 -0
  442. package/dist/worldGhostNeighbors.js +86 -0
  443. package/dist/worldGhostOutbound.js +110 -0
  444. package/dist/worldGhostPublisher.js +216 -0
  445. package/dist/worldGhostReceiver.js +213 -0
  446. package/dist/worldGhostSender.js +146 -0
  447. package/dist/worldGhostSocket.js +78 -0
  448. package/dist/worldGhostWire.js +172 -0
  449. package/dist/worldGroupCommand.js +49 -0
  450. package/dist/worldGroupDeadline.js +115 -0
  451. package/dist/worldGroupPreparation.js +115 -0
  452. package/dist/worldGroupReadyControl.js +128 -0
  453. package/dist/worldGroupSupervisor.js +120 -0
  454. package/dist/worldHandoffMetrics.js +59 -0
  455. package/dist/worldHandoffView.js +100 -0
  456. package/dist/worldHostSource.js +69 -0
  457. package/dist/worldInspectEndpoint.js +250 -0
  458. package/dist/worldInspection.js +109 -0
  459. package/dist/worldInstanceAdmission.js +31 -0
  460. package/dist/worldInstanceAllocation.js +116 -0
  461. package/dist/worldInstanceDestination.js +64 -0
  462. package/dist/worldInstanceExpiry.js +282 -0
  463. package/dist/worldInstanceExpirySupervisor.js +88 -0
  464. package/dist/worldInstanceLifecycle.js +103 -0
  465. package/dist/worldInstanceState.js +52 -0
  466. package/dist/worldInstances.js +478 -0
  467. package/dist/worldJoin.js +56 -0
  468. package/dist/worldLayers.js +151 -0
  469. package/dist/worldLeases.js +78 -0
  470. package/dist/worldManifest.js +25 -0
  471. package/dist/worldMovement.js +63 -0
  472. package/dist/worldPersistence.js +134 -0
  473. package/dist/worldProjection.js +221 -0
  474. package/dist/worldReact.js +110 -0
  475. package/dist/worldRecoveryActor.js +35 -0
  476. package/dist/worldReturnAnchor.js +49 -0
  477. package/dist/worldRoomHooks.js +57 -0
  478. package/dist/worldRoomPool.js +27 -0
  479. package/dist/worldRoomSteps.js +133 -0
  480. package/dist/worldSeatBinding.js +36 -0
  481. package/dist/worldServer.d.ts +6936 -0
  482. package/dist/worldServer.js +48 -0
  483. package/dist/worldSourceSeatPending.js +9 -0
  484. package/dist/worldStrategyFixtures.js +164 -0
  485. package/dist/worldTesting.js +27 -0
  486. package/dist/worldTransitionDefaults.js +198 -0
  487. package/dist/worldTransitionExecutor.js +519 -0
  488. package/dist/worldTransitionGroup.js +113 -0
  489. package/dist/worldTransitionPhysicalSteps.js +40 -0
  490. package/dist/worldTransitionResolver.js +228 -0
  491. package/dist/worldTransitionSeatGroup.js +64 -0
  492. package/dist/worldTransitionSeats.js +260 -0
  493. package/dist/worldTransitionState.js +95 -0
  494. package/dist/worldTransitions.js +101 -0
  495. package/package.json +189 -4
package/dist/wire.d.ts ADDED
@@ -0,0 +1,992 @@
1
+ import { Duration } from 'effect';
2
+ import { Result } from 'effect';
3
+ import { Schema } from 'effect';
4
+ import { YieldableError } from 'effect/Cause';
5
+
6
+ /** Configuration consumers never invoke a player callback. Its player type
7
+ * stays author-owned; this inventory type does not erase it into an input. */
8
+ declare type AnyWorldDescriptor = WorldDescriptor<never>;
9
+
10
+ /** Every malformed frame returns a typed failure, including invalid UTF-8. */
11
+ export declare const decodeRoomFrame: (bytes: Uint8Array, limits?: Partial<RoomFrameLimits>) => Result.Result<RoomFrame, ProtocolError>;
12
+
13
+ export declare const encodeRoomFrame: (frame: RoomFrame, limits?: Partial<RoomFrameLimits>) => Result.Result<Uint8Array<ArrayBuffer>, ProtocolError>;
14
+
15
+ declare interface GeometryArtifact<C extends GeometryChunk = GeometryChunk> {
16
+ readonly chunk: C;
17
+ readonly blobSha256: string;
18
+ /** Canonical declared content/layout, excluding actual address/version only. */
19
+ readonly contentSha256: string;
20
+ bytes(): Uint8Array;
21
+ }
22
+
23
+ declare type GeometryArtifactLimits<K extends GeometryKind> = K extends '2d-tiles' ? Partial<GeometryTileLimits> : K extends '2d-heightfield' ? Partial<GeometryHeightfieldLimits> : K extends '3d-shapes' ? Partial<GeometryShapesLimits> : Partial<GeometryVoxelLimits>;
24
+
25
+ declare type GeometryChunk = GeometryTileChunk | GeometryHeightfieldChunk | GeometryShapesChunk | GeometryVoxelChunk;
26
+
27
+ declare type GeometryCollisionDerive = (context: GeometryDerivationContext) => GeometryChunk;
28
+
29
+ declare type GeometryCompaction = (context: GeometryCompactionContext) => GeometryPatch;
30
+
31
+ /** Genuine immutable native artifacts only. Compaction preserves the current
32
+ * truth; it cannot authorize a different edit, owner, revision or SQL write. */
33
+ declare interface GeometryCompactionContext {
34
+ readonly static: GeometryArtifact;
35
+ readonly current: GeometryArtifact;
36
+ readonly limits: GeometryPatchLimits;
37
+ readonly codecLimits: GeometryArtifactLimits<GeometryKind>;
38
+ }
39
+
40
+ declare interface GeometryCompactionStrategies {
41
+ readonly compaction: GeometryCompaction;
42
+ }
43
+
44
+ declare interface GeometryDeltaMigrationFrom {
45
+ readonly static: GeometryArtifact;
46
+ readonly current: GeometryArtifact;
47
+ readonly revision: number;
48
+ }
49
+
50
+ declare interface GeometryDeltaMigrationTo {
51
+ readonly static: GeometryArtifact;
52
+ }
53
+
54
+ /** Outside-Tick native data only. No query callback, provider, actor, Store or
55
+ * authority capability is accepted as a derivation result. */
56
+ declare interface GeometryDerivationContext {
57
+ readonly chunk: GeometryChunk;
58
+ readonly codecLimits: GeometryArtifactLimits<GeometryKind>;
59
+ }
60
+
61
+ declare interface GeometryDerivationStrategies {
62
+ readonly collisionDerive: GeometryCollisionDerive;
63
+ readonly navDerive: GeometryNavDerive;
64
+ }
65
+
66
+ /** Trusted server snapshot. Never derive these rights, positions, budgets or
67
+ * catalogs from the intent body. App policy must recheck authority at commit. */
68
+ declare interface GeometryEditAuthority {
69
+ readonly dynamicEnabled: boolean;
70
+ readonly ownsChunk: boolean;
71
+ readonly canBuild: boolean;
72
+ readonly cooldownReady: boolean;
73
+ readonly remainingOps: number;
74
+ readonly maxReachRaw: number;
75
+ readonly maxHeightUnits: number;
76
+ readonly position: {
77
+ readonly xRaw: number;
78
+ readonly yRaw: number;
79
+ readonly zRaw: number;
80
+ };
81
+ readonly materials: ReadonlyArray<GeometryTileMaterial>;
82
+ readonly shapes: ReadonlyArray<GeometryShapeTemplate>;
83
+ }
84
+
85
+ declare interface GeometryEditContext {
86
+ readonly chunk: GeometryChunk;
87
+ readonly intent: GeometryEditIntent;
88
+ readonly authority: GeometryEditAuthority;
89
+ readonly placementId: string;
90
+ readonly codecLimits?: GeometryArtifactLimits<GeometryKind> | undefined;
91
+ }
92
+
93
+ /** Player requests an action and its target, never solidity, shape dimensions,
94
+ * an authoritative player position, revision, owner, full chunk or Delta bytes. */
95
+ declare type GeometryEditIntent = {
96
+ readonly op: 'setTile';
97
+ readonly x: number;
98
+ readonly y: number;
99
+ readonly material: string;
100
+ } | {
101
+ readonly op: 'raiseHeight';
102
+ readonly x: number;
103
+ readonly y: number;
104
+ readonly units: number;
105
+ } | {
106
+ readonly op: 'setVoxel';
107
+ readonly x: number;
108
+ readonly y: number;
109
+ readonly z: number;
110
+ readonly material: string;
111
+ } | {
112
+ readonly op: 'placeShape';
113
+ readonly template: string;
114
+ readonly xRaw: number;
115
+ readonly yRaw: number;
116
+ readonly zRaw: number;
117
+ } | {
118
+ readonly op: 'removeShape';
119
+ readonly id: string;
120
+ };
121
+
122
+ declare interface GeometryEditStrategies {
123
+ /** Pure policy slot. Current native Session/SQL ownership and codec integrity cannot be overridden by this slot. */
124
+ readonly opValidator: (context: GeometryEditContext) => void;
125
+ /** Pure rule slot; returned chunk is admitted under the original identity/layout/profile. */
126
+ readonly applyOp: (context: GeometryEditContext) => GeometryChunk;
127
+ }
128
+
129
+ declare type GeometryGenerator = (context: GeometryProceduralContext) => GeometryChunk;
130
+
131
+ declare type GeometryHeightfieldChunk = (typeof GeometryHeightfieldChunkSchema)["Type"];
132
+
133
+ declare const GeometryHeightfieldChunkSchema: Schema.Struct<{
134
+ readonly kind: Schema.Literal<"2d-heightfield">;
135
+ readonly formatVersion: Schema.Literal<1>;
136
+ readonly address: Schema.Struct<{
137
+ readonly worldId: Schema.String;
138
+ readonly layerSetId: Schema.String;
139
+ readonly cx: Schema.Int;
140
+ readonly cy: Schema.Int;
141
+ }>;
142
+ readonly version: Schema.String;
143
+ readonly width: Schema.Int;
144
+ readonly height: Schema.Int;
145
+ readonly sampleSpacingRaw: Schema.Int;
146
+ readonly baseHeightRaw: Schema.Int;
147
+ readonly heightQuantumRaw: Schema.Int;
148
+ readonly heights: Schema.$Array<Schema.Int>;
149
+ }>;
150
+
151
+ declare interface GeometryHeightfieldLimits {
152
+ readonly maxSide: number;
153
+ readonly maxSamples: number;
154
+ readonly maxBytes: number;
155
+ }
156
+
157
+ declare type GeometryKind = GeometryChunk['kind'];
158
+
159
+ /** Pure native data rule only; no SQL, actor, journal, permission or Subject. */
160
+ declare type GeometryMigrateDelta = (from: GeometryDeltaMigrationFrom, to: GeometryDeltaMigrationTo) => GeometryChunk | null;
161
+
162
+ export declare interface GeometryNativeCodecMetadata {
163
+ readonly schemaHash: number;
164
+ readonly description: string;
165
+ readonly limits: RoomCodecLimits;
166
+ }
167
+
168
+ /** Compiler metadata only. Does not validate geometry semantics, authenticate a
169
+ * manifest, fetch resources or grant a Room/World session. Default wire profiles
170
+ * are explicit; applications with other profiles must not silently inherit them. */
171
+ export declare const geometryNativeCodecMetadata: () => Readonly<{
172
+ profile: "default";
173
+ httpHeaders: Readonly<{
174
+ scope: "x-voltro-geometry-scope";
175
+ revision: "x-voltro-geometry-revision";
176
+ contentSha256: "x-voltro-geometry-content-sha256";
177
+ }>;
178
+ navigation: Readonly< GeometryTileNavigationLimits>;
179
+ navigationReaderLimit: 64;
180
+ envelopes: Readonly<{
181
+ '2d-tiles': readonly number[];
182
+ '2d-heightfield': readonly number[];
183
+ '3d-shapes': readonly number[];
184
+ '3d-voxel': readonly number[];
185
+ content: readonly number[];
186
+ patch: readonly number[];
187
+ }>;
188
+ channels: Readonly<{
189
+ manifest: Readonly<{
190
+ codec: GeometryNativeCodecMetadata;
191
+ fragmentBytes: 8192;
192
+ }>;
193
+ delta: Readonly<{
194
+ codec: GeometryNativeCodecMetadata;
195
+ fragmentBytes: 8192;
196
+ }>;
197
+ edit: Readonly<{
198
+ codec: GeometryNativeCodecMetadata;
199
+ }>;
200
+ }>;
201
+ chunks: readonly Readonly<{
202
+ kind: "2d-tiles" | "2d-heightfield" | "3d-shapes" | "3d-voxel";
203
+ profileLimits: Readonly<Record<string, number>>;
204
+ state: GeometryNativeCodecMetadata;
205
+ content: GeometryNativeCodecMetadata;
206
+ }>[];
207
+ patch: Readonly<{
208
+ limits: Readonly<{
209
+ maxBytes: number;
210
+ maxMetadataBytes: number;
211
+ }>;
212
+ metadata: GeometryNativeCodecMetadata;
213
+ }>;
214
+ }>;
215
+
216
+ declare type GeometryNavDerive = (context: GeometryDerivationContext) => GeometryTileChunk | null;
217
+
218
+ declare interface GeometryPatch {
219
+ readonly metadata: GeometryPatchMetadata;
220
+ bytes(): Uint8Array;
221
+ }
222
+
223
+ declare interface GeometryPatchLimits {
224
+ readonly maxBytes: number;
225
+ readonly maxMetadataBytes: number;
226
+ }
227
+
228
+ declare type GeometryPatchMetadata = (typeof GeometryPatchMetadataSchema)["Type"];
229
+
230
+ declare const GeometryPatchMetadataSchema: Schema.Struct<{
231
+ readonly kind: Schema.Literals<readonly ["2d-tiles", "2d-heightfield", "3d-shapes", "3d-voxel"]>;
232
+ readonly formatVersion: Schema.Literal<1>;
233
+ readonly worldId: Schema.String;
234
+ readonly layerSetId: Schema.String;
235
+ readonly cx: Schema.Int;
236
+ readonly cy: Schema.Int;
237
+ readonly cz: Schema.optional<Schema.Int>;
238
+ readonly version: Schema.String;
239
+ readonly baseRevision: Schema.Int;
240
+ readonly revision: Schema.Int;
241
+ readonly baseBlobSha256: Schema.String;
242
+ readonly blobSha256: Schema.String;
243
+ readonly baseContentSha256: Schema.String;
244
+ readonly contentSha256: Schema.String;
245
+ readonly changed: Schema.Boolean;
246
+ readonly stateSchemaHash: Schema.Int;
247
+ }>;
248
+
249
+ declare interface GeometryProceduralContext {
250
+ readonly seed: number;
251
+ readonly kind: GeometryKind;
252
+ readonly address: GeometryChunk['address'];
253
+ readonly version: string;
254
+ }
255
+
256
+ declare type GeometryShapesChunk = (typeof GeometryShapesChunkSchema)["Type"];
257
+
258
+ declare const GeometryShapesChunkSchema: Schema.Struct<{
259
+ readonly kind: Schema.Literal<"3d-shapes">;
260
+ readonly formatVersion: Schema.Literal<1>;
261
+ readonly address: Schema.Struct<{
262
+ readonly worldId: Schema.String;
263
+ readonly layerSetId: Schema.String;
264
+ readonly cx: Schema.Int;
265
+ readonly cy: Schema.Int;
266
+ readonly cz: Schema.Int;
267
+ }>;
268
+ readonly version: Schema.String;
269
+ readonly extentXRaw: Schema.Int;
270
+ readonly extentYRaw: Schema.Int;
271
+ readonly extentZRaw: Schema.Int;
272
+ readonly shapes: Schema.$Array<Schema.Union<readonly [Schema.Struct<{
273
+ readonly halfXRaw: Schema.Int;
274
+ readonly halfYRaw: Schema.Int;
275
+ readonly halfZRaw: Schema.Int;
276
+ readonly id: Schema.String;
277
+ readonly xRaw: Schema.Int;
278
+ readonly yRaw: Schema.Int;
279
+ readonly zRaw: Schema.Int;
280
+ readonly kind: Schema.Literal<"aabb">;
281
+ }>, Schema.Struct<{
282
+ readonly radiusRaw: Schema.Int;
283
+ readonly id: Schema.String;
284
+ readonly xRaw: Schema.Int;
285
+ readonly yRaw: Schema.Int;
286
+ readonly zRaw: Schema.Int;
287
+ readonly kind: Schema.Literal<"sphere">;
288
+ }>]>>;
289
+ }>;
290
+
291
+ declare interface GeometryShapesLimits {
292
+ readonly maxShapes: number;
293
+ readonly maxBytes: number;
294
+ }
295
+
296
+ declare type GeometryShapeTemplate = {
297
+ readonly key: string;
298
+ readonly kind: 'aabb';
299
+ readonly halfXRaw: number;
300
+ readonly halfYRaw: number;
301
+ readonly halfZRaw: number;
302
+ } | {
303
+ readonly key: string;
304
+ readonly kind: 'sphere';
305
+ readonly radiusRaw: number;
306
+ };
307
+
308
+ declare type GeometrySource = {
309
+ readonly _tag: 'GeometrySource';
310
+ readonly kind: 'cms';
311
+ readonly key: string;
312
+ readonly channel: string;
313
+ } | {
314
+ readonly _tag: 'GeometrySource';
315
+ readonly kind: 'imported';
316
+ readonly directory: string;
317
+ } | {
318
+ readonly _tag: 'GeometrySource';
319
+ readonly kind: 'procedural';
320
+ readonly seed: number;
321
+ readonly generator: GeometryGenerator;
322
+ };
323
+
324
+ declare type GeometryTileChunk = (typeof GeometryTileChunkSchema)["Type"];
325
+
326
+ declare const GeometryTileChunkSchema: Schema.Struct<{
327
+ readonly kind: Schema.Literal<"2d-tiles">;
328
+ readonly formatVersion: Schema.Literal<1>;
329
+ readonly address: Schema.Struct<{
330
+ readonly worldId: Schema.String;
331
+ readonly layerSetId: Schema.String;
332
+ readonly cx: Schema.Int;
333
+ readonly cy: Schema.Int;
334
+ }>;
335
+ readonly version: Schema.String;
336
+ readonly width: Schema.Int;
337
+ readonly height: Schema.Int;
338
+ readonly tileSizeRaw: Schema.Int;
339
+ readonly palette: Schema.$Array<Schema.Struct<{
340
+ readonly key: Schema.String;
341
+ readonly solid: Schema.Boolean;
342
+ }>>;
343
+ readonly runs: Schema.$Array<Schema.Struct<{
344
+ readonly paletteIndex: Schema.Int;
345
+ readonly length: Schema.Int;
346
+ }>>;
347
+ }>;
348
+
349
+ declare interface GeometryTileLimits {
350
+ readonly maxSide: number;
351
+ readonly maxCells: number;
352
+ readonly maxPalette: number;
353
+ readonly maxRuns: number;
354
+ readonly maxBytes: number;
355
+ }
356
+
357
+ declare type GeometryTileMaterial = (typeof GeometryTileMaterialSchema)["Type"];
358
+
359
+ declare const GeometryTileMaterialSchema: Schema.Struct<{
360
+ readonly key: Schema.String;
361
+ readonly solid: Schema.Boolean;
362
+ }>;
363
+
364
+ declare interface GeometryTileNavigationLimits {
365
+ readonly maxDiscovered: number;
366
+ readonly maxOpen: number;
367
+ readonly maxPathLength: number;
368
+ readonly maxAdvanceExpansions: number;
369
+ }
370
+
371
+ declare interface GeometryVersionMigrationStrategies {
372
+ readonly migrateDelta?: GeometryMigrateDelta;
373
+ }
374
+
375
+ declare type GeometryVoxelChunk = (typeof GeometryVoxelChunkSchema)["Type"];
376
+
377
+ declare const GeometryVoxelChunkSchema: Schema.Struct<{
378
+ readonly kind: Schema.Literal<"3d-voxel">;
379
+ readonly formatVersion: Schema.Literal<1>;
380
+ readonly address: Schema.Struct<{
381
+ readonly worldId: Schema.String;
382
+ readonly layerSetId: Schema.String;
383
+ readonly cx: Schema.Int;
384
+ readonly cy: Schema.Int;
385
+ readonly cz: Schema.Int;
386
+ }>;
387
+ readonly version: Schema.String;
388
+ readonly side: Schema.Int;
389
+ readonly voxelSizeRaw: Schema.Int;
390
+ readonly palette: Schema.$Array<Schema.Struct<{
391
+ readonly key: Schema.String;
392
+ readonly solid: Schema.Boolean;
393
+ }>>;
394
+ readonly sections: Schema.$Array<Schema.Struct<{
395
+ readonly sx: Schema.Int;
396
+ readonly sy: Schema.Int;
397
+ readonly sz: Schema.Int;
398
+ readonly runs: Schema.$Array<Schema.Struct<{
399
+ readonly paletteIndex: Schema.Int;
400
+ readonly length: Schema.Int;
401
+ }>>;
402
+ }>>;
403
+ }>;
404
+
405
+ declare interface GeometryVoxelLimits {
406
+ readonly maxSide: number;
407
+ readonly maxVoxels: number;
408
+ readonly maxPalette: number;
409
+ readonly maxSections: number;
410
+ readonly maxRunsPerSection: number;
411
+ readonly maxBytes: number;
412
+ }
413
+
414
+ /** Pure projection of the actual admitted World catalogue. No generator,
415
+ * strategy, spawn, source path/credential or server service enters SDK metadata. */
416
+ export declare const geometryWorldMetadata: (offered: ReadonlyArray<AnyWorldDescriptor>) => readonly Readonly<{
417
+ worldId: string;
418
+ kind: "2d-tiles" | "2d-heightfield" | "3d-shapes" | "3d-voxel";
419
+ bounds: WorldBounds;
420
+ rooms: readonly string[];
421
+ chunkSizeRaw: number;
422
+ sourceKind: "cms" | "imported" | "procedural";
423
+ dynamic: {
424
+ readonly enabled: boolean;
425
+ readonly maxDeltaBytesPerChunk: number;
426
+ readonly persist: {
427
+ readonly everyMs: number;
428
+ readonly onUnload: boolean;
429
+ };
430
+ };
431
+ collision: {
432
+ readonly derive: "bitgrid" | "heightfield" | "shapes";
433
+ readonly resolution: number;
434
+ readonly resolutionRaw: number;
435
+ };
436
+ nav: {
437
+ readonly derive: "grid" | "none";
438
+ readonly navBudgetMs: number;
439
+ readonly maxAdvanceSteps: number;
440
+ };
441
+ streaming: {
442
+ readonly client: {
443
+ readonly radiusChunks: number;
444
+ readonly prefetchChunks: number;
445
+ readonly maxConcurrent: number;
446
+ readonly maxCachedChunks: number;
447
+ };
448
+ readonly cell: {
449
+ readonly marginChunks: number;
450
+ };
451
+ };
452
+ lod: readonly {
453
+ readonly beyondChunks: number;
454
+ readonly fields: ReadonlyArray<string>;
455
+ }[];
456
+ budgets: {
457
+ readonly maxPreparedChunks: number;
458
+ readonly maxPreparedBytes: number;
459
+ readonly maxLodLevels: number;
460
+ readonly maxRayCells: number;
461
+ readonly maxOverlapTests: number;
462
+ };
463
+ nativeStrategies: readonly ("opValidator" | "applyOp" | "collisionDerive" | "navDerive" | "compaction" | "migrateDelta")[];
464
+ }>[];
465
+
466
+ declare class ProtocolError extends ProtocolError_base {
467
+ get message(): string;
468
+ }
469
+
470
+ declare const ProtocolError_base: Schema.Class<ProtocolError, Schema.TaggedStruct<"ProtocolError", {
471
+ readonly detail: Schema.String;
472
+ }>, YieldableError>;
473
+
474
+ export declare interface RoomCodecLimits {
475
+ readonly maxBytes: number;
476
+ readonly maxCollectionLength: number;
477
+ readonly maxFieldId: number;
478
+ }
479
+
480
+ export declare type RoomFrame = RoomWorldHandoffFrame | {
481
+ readonly kind: 'Hello';
482
+ readonly protocolVersion: number;
483
+ readonly token: Uint8Array;
484
+ readonly schemaHash: number;
485
+ readonly resumeFromTick?: number;
486
+ readonly transportCaps: number;
487
+ } | {
488
+ readonly kind: 'Input';
489
+ readonly firstSeq: number;
490
+ readonly inputs: ReadonlyArray<{
491
+ readonly tickHint: number;
492
+ readonly payload: Uint8Array;
493
+ }>;
494
+ readonly ackTick?: number;
495
+ }
496
+ /** `lossPermille`: the client's estimated loss of state datagrams (0–1000), once it has one. */
497
+ | {
498
+ readonly kind: 'Ack';
499
+ readonly tick: number;
500
+ readonly lossPermille?: number;
501
+ } | {
502
+ readonly kind: 'Ping';
503
+ readonly clientTimeMs: number;
504
+ } | {
505
+ readonly kind: 'ClientMessage' | 'ServerMessage';
506
+ readonly channelId: number;
507
+ readonly payload: Uint8Array;
508
+ } | {
509
+ readonly kind: 'Leave';
510
+ readonly reason: number;
511
+ } | {
512
+ readonly kind: 'Welcome';
513
+ readonly sessionId: string;
514
+ readonly tick: number;
515
+ readonly serverTimeMs: number;
516
+ readonly epoch: number;
517
+ readonly baseline: Uint8Array;
518
+ readonly transformRules: Uint8Array;
519
+ } | {
520
+ readonly kind: 'Delta';
521
+ readonly tick: number;
522
+ readonly baseTick: number;
523
+ readonly patch: Uint8Array;
524
+ readonly inputAck?: RoomFrameInputReceipt;
525
+ } | {
526
+ readonly kind: 'Full';
527
+ readonly tick: number;
528
+ readonly epoch: number;
529
+ readonly baseline: Uint8Array;
530
+ readonly inputAck?: RoomFrameInputReceipt;
531
+ } | {
532
+ readonly kind: 'InputAck';
533
+ readonly lastAppliedSeq: number;
534
+ readonly tick: number;
535
+ readonly flags: number;
536
+ }
537
+ /** `deltaDatagramsSent`: state deltas this Session sent as datagrams so far, for the client's loss estimate. */
538
+ | {
539
+ readonly kind: 'Pong';
540
+ readonly clientTimeMs: number;
541
+ readonly serverTimeMs: number;
542
+ readonly tick: number;
543
+ readonly deltaDatagramsSent?: number;
544
+ } | {
545
+ readonly kind: 'Kick';
546
+ readonly code: number;
547
+ readonly reason: string;
548
+ } | {
549
+ readonly kind: 'Migrate';
550
+ readonly address?: string;
551
+ readonly graceMs: number;
552
+ } | {
553
+ readonly kind: 'Error';
554
+ readonly code: number;
555
+ readonly detail: string;
556
+ } | {
557
+ readonly kind: 'LsInput';
558
+ readonly firstTick: number;
559
+ readonly inputs: ReadonlyArray<Uint8Array>;
560
+ } | {
561
+ readonly kind: 'LsInputs';
562
+ readonly firstTick: number;
563
+ readonly matrices: ReadonlyArray<RoomLockstepInputMatrix>;
564
+ } | {
565
+ readonly kind: 'LsHash';
566
+ readonly tick: number;
567
+ readonly hi: number;
568
+ readonly lo: number;
569
+ } | {
570
+ readonly kind: 'LsDesync';
571
+ readonly tick: number;
572
+ readonly action: 'resync';
573
+ readonly snapshot: Uint8Array;
574
+ } | {
575
+ readonly kind: 'LsDesync';
576
+ readonly tick: number;
577
+ readonly action: 'end' | 'flag';
578
+ readonly snapshot?: never;
579
+ } | {
580
+ readonly kind: 'LsStart';
581
+ readonly startTick: number;
582
+ readonly seed: number;
583
+ readonly options: Uint8Array;
584
+ readonly serverTimeMs: number;
585
+ readonly localPlayerId: number;
586
+ readonly roster: ReadonlyArray<RoomLockstepWirePlayer>;
587
+ readonly history?: Uint8Array;
588
+ readonly snapshot?: Uint8Array;
589
+ } | {
590
+ readonly kind: 'LsStall';
591
+ readonly waitingFor: RoomLockstepPlayerMask;
592
+ }
593
+ /** A player admitted after Start: from `tick` on, every matrix carries its `slot`. */
594
+ | {
595
+ readonly kind: 'LsJoin';
596
+ readonly tick: number;
597
+ readonly slot: number;
598
+ readonly playerId: number;
599
+ };
600
+
601
+ export declare interface RoomFrameInputReceipt {
602
+ readonly lastAppliedSeq: number;
603
+ readonly flags: number;
604
+ }
605
+
606
+ /** Frame layout participates in the normal Hello manifest hash. Peers with a
607
+ * different binary layout must refuse admission before any state/input use. */
608
+ export declare const roomFrameLayout = "v1/input-ackTick/state-inputReceipt/pong-tick/lockstep-v4-snapshot/recovery-v2/world-handoff-v1";
609
+
610
+ export declare interface RoomFrameLimits {
611
+ readonly maxBytes: number;
612
+ readonly maxInputs: number;
613
+ }
614
+
615
+ export declare class RoomInputCodec<S extends Schema.Codec<unknown, unknown>> {
616
+ readonly schema: S;
617
+ private readonly codec;
618
+ constructor(schema: S, config?: Partial<RoomCodecLimits>, defaultNumberPrecision?: 'f32' | 'f64');
619
+ get schemaHash(): number;
620
+ get limits(): RoomCodecLimits;
621
+ /** Actual admitted binary input/channel layout; no schema loader or authority. */
622
+ schemaDescription(): string;
623
+ full(input: (S)["Type"]): Result.Result<Uint8Array, ProtocolError>;
624
+ decodeFull(bytes: Uint8Array): Result.Result<(S)["Type"], ProtocolError>;
625
+ }
626
+
627
+ export declare interface RoomLockstepInputMatrix {
628
+ readonly players: RoomLockstepPlayerMask;
629
+ readonly inputs: ReadonlyArray<Uint8Array>;
630
+ }
631
+
632
+ /** Bits identify server-assigned roster slots 0..63, not Subject or player IDs. */
633
+ export declare type RoomLockstepPlayerMask = Uint64Words;
634
+
635
+ /** Public opaque simulation identities, never Subjects or Session credentials. */
636
+ export declare interface RoomLockstepWirePlayer {
637
+ readonly slot: number;
638
+ readonly playerId: number;
639
+ }
640
+
641
+ /** Input and channel schemas are not state schemas: sorted field names derive
642
+ * their binary order, while server state always requires explicit field IDs. */
643
+ export declare class RoomStateCodec<S extends Schema.Codec<unknown, unknown>> {
644
+ readonly schema: S;
645
+ private readonly codec;
646
+ constructor(schema: S, config?: Partial<RoomCodecLimits>);
647
+ get schemaHash(): number;
648
+ get limits(): RoomCodecLimits;
649
+ /** Canonical binary layout, including quantization and static movement rules.
650
+ * This is descriptive data; it grants neither authority nor a schema loader. */
651
+ schemaDescription(): string;
652
+ fieldManifest(): ReadonlyArray<RoomStateField>;
653
+ transformRulesManifest(): ReadonlyArray<RoomStateTransformRules>;
654
+ full(state: (S)["Type"]): Result.Result<Uint8Array, ProtocolError>;
655
+ decodeFull(bytes: Uint8Array): Result.Result<(S)["Type"], ProtocolError>;
656
+ delta(state: (S)["Type"], baseline: (S)["Type"], includeUnchanged?: boolean): Result.Result<Uint8Array | null, ProtocolError>;
657
+ decodeDelta(bytes: Uint8Array, baseline: (S)["Type"]): Result.Result<(S)["Type"], ProtocolError>;
658
+ }
659
+
660
+ export declare interface RoomStateField {
661
+ /** Parent scope is formed from field IDs, not mutable author field names. */
662
+ readonly scope: string;
663
+ readonly id: number;
664
+ readonly name: string;
665
+ }
666
+
667
+ export declare interface RoomStateTransformRules {
668
+ readonly scope: string;
669
+ readonly rules: TransformRules;
670
+ }
671
+
672
+ /** Render/connection coordination only: no token and no ownership assertion. */
673
+ export declare interface RoomWorldHandoffFrame {
674
+ readonly kind: 'WorldHandoff';
675
+ readonly phase: 'departed' | 'cancelled';
676
+ readonly transitionId: string;
677
+ readonly entityId: string;
678
+ readonly tick: number;
679
+ readonly sourceEpoch: number;
680
+ readonly targetRoomId: string;
681
+ readonly targetEpoch: number;
682
+ readonly holdMs: number;
683
+ }
684
+
685
+ export declare type TransformRules = TransformRules2D | TransformRules3D;
686
+
687
+ export declare interface TransformRules2D {
688
+ readonly bounds: {
689
+ readonly min: readonly [number, number];
690
+ readonly max: readonly [number, number];
691
+ };
692
+ readonly maxSpeed: number;
693
+ readonly maxAccel: number;
694
+ readonly precision: number;
695
+ readonly rotation?: {
696
+ readonly bits: number;
697
+ } | undefined;
698
+ readonly velocity?: 'send' | 'derive' | 'none' | undefined;
699
+ readonly interpolation: 'linear' | 'hermite' | 'none';
700
+ readonly extrapolateMs: number;
701
+ readonly teleportThreshold: number;
702
+ }
703
+
704
+ export declare interface TransformRules3D {
705
+ readonly bounds: {
706
+ readonly min: readonly [number, number, number];
707
+ readonly max: readonly [number, number, number];
708
+ };
709
+ readonly maxSpeed: number;
710
+ readonly maxAccel: number;
711
+ readonly precision: number;
712
+ readonly rotation?: {
713
+ readonly bits: number;
714
+ } | undefined;
715
+ readonly interpolation: 'linear' | 'hermite' | 'none';
716
+ readonly extrapolateMs: number;
717
+ readonly teleportThreshold: number;
718
+ }
719
+
720
+ /** Exact unsigned 64-bit integer as independent 32-bit words. */
721
+ declare interface Uint64Words {
722
+ readonly hi: number;
723
+ readonly lo: number;
724
+ }
725
+
726
+ declare type WorldBounds = readonly [minimum: WorldPoint, maximum: WorldPoint];
727
+
728
+ declare interface WorldDefinition<Player> {
729
+ readonly name: string;
730
+ readonly map: {
731
+ readonly bounds: WorldBounds;
732
+ };
733
+ readonly zones: ReadonlyArray<WorldZone>;
734
+ readonly instances?: ReadonlyArray<WorldInstance>;
735
+ readonly persistence: {
736
+ readonly entities: 'world';
737
+ readonly snapshotEveryMs: number;
738
+ readonly journal: boolean;
739
+ };
740
+ readonly handoff: {
741
+ readonly marginUnits: number;
742
+ readonly ghostUnits: number;
743
+ };
744
+ readonly spawn: (context: {
745
+ readonly player: Player;
746
+ }) => WorldPosition;
747
+ readonly geometry?: WorldGeometryDefinition | undefined;
748
+ readonly hosts?: {
749
+ readonly pool: string;
750
+ };
751
+ readonly characters?: 'shared' | 'per-world';
752
+ readonly transitionCooldownMs?: number;
753
+ /** Authoring inventory bounds, not measured runtime capacity. */
754
+ readonly budgets?: {
755
+ readonly maxZones?: number;
756
+ readonly maxCells?: number | undefined;
757
+ readonly maxInstances?: number;
758
+ };
759
+ readonly strategies?: {
760
+ readonly layerPolicy?: WorldLayerPolicy | undefined;
761
+ readonly transitionPolicy?: WorldTransitionPolicy;
762
+ readonly onWorldChange?: WorldOnWorldChange;
763
+ };
764
+ }
765
+
766
+ declare interface WorldDescriptor<Player> extends Omit<WorldDefinition<Player>, 'instances' | 'budgets' | 'characters' | 'transitionCooldownMs' | 'strategies' | 'geometry'> {
767
+ readonly geometry?: WorldGeometryDescriptor | undefined;
768
+ readonly _tag: 'WorldDescriptor';
769
+ readonly instances: ReadonlyArray<Omit<WorldInstance, 'ttl'> & {
770
+ readonly ttlMs: number;
771
+ }>;
772
+ readonly budgets: {
773
+ readonly maxZones: number;
774
+ readonly maxCells: number;
775
+ readonly maxInstances: number;
776
+ };
777
+ readonly characters: 'shared' | 'per-world';
778
+ readonly transitionCooldownMs: number;
779
+ readonly cellCount: number;
780
+ readonly strategies: {
781
+ readonly layerPolicy: WorldLayerPolicy;
782
+ readonly transitionPolicy: WorldTransitionPolicy;
783
+ readonly onWorldChange: WorldOnWorldChange;
784
+ };
785
+ }
786
+
787
+ declare interface WorldGeometryDefinition {
788
+ readonly strategies?: WorldGeometryStrategies | undefined;
789
+ readonly kind: GeometryKind;
790
+ readonly static: GeometrySource;
791
+ readonly chunkSize?: number;
792
+ readonly dynamic?: {
793
+ readonly enabled?: boolean | undefined;
794
+ readonly maxDeltaBytesPerChunk?: number;
795
+ readonly persist?: {
796
+ readonly everyMs?: number;
797
+ readonly onUnload?: boolean;
798
+ };
799
+ };
800
+ readonly collision?: {
801
+ readonly derive?: 'bitgrid' | 'heightfield' | 'shapes';
802
+ readonly resolution?: number;
803
+ };
804
+ readonly nav?: {
805
+ readonly derive?: 'grid' | 'none';
806
+ readonly navBudgetMs?: number;
807
+ readonly maxAdvanceSteps?: number;
808
+ };
809
+ readonly streaming?: {
810
+ readonly client?: {
811
+ readonly radiusChunks?: number;
812
+ readonly prefetchChunks?: number;
813
+ readonly maxConcurrent?: number | undefined;
814
+ readonly maxCachedChunks?: number;
815
+ };
816
+ readonly cell?: {
817
+ readonly marginChunks?: number;
818
+ };
819
+ };
820
+ readonly lod?: ReadonlyArray<{
821
+ readonly beyondChunks: number;
822
+ readonly fields: ReadonlyArray<string>;
823
+ }>;
824
+ readonly budgets?: {
825
+ readonly maxPreparedChunks?: number;
826
+ readonly maxPreparedBytes?: number;
827
+ readonly maxLodLevels?: number;
828
+ readonly maxRayCells?: number | undefined;
829
+ readonly maxOverlapTests?: number | undefined;
830
+ };
831
+ }
832
+
833
+ declare interface WorldGeometryDescriptor {
834
+ readonly strategies: GeometryEditStrategies & GeometryDerivationStrategies & GeometryCompactionStrategies & {
835
+ readonly migrateDelta: GeometryMigrateDelta;
836
+ };
837
+ readonly _tag: 'WorldGeometry';
838
+ readonly kind: GeometryKind;
839
+ readonly static: GeometrySource;
840
+ readonly chunkSize: number;
841
+ readonly chunkSizeRaw: number;
842
+ readonly dynamic: {
843
+ readonly enabled: boolean;
844
+ readonly maxDeltaBytesPerChunk: number;
845
+ readonly persist: {
846
+ readonly everyMs: number;
847
+ readonly onUnload: boolean;
848
+ };
849
+ };
850
+ readonly collision: {
851
+ readonly derive: 'bitgrid' | 'heightfield' | 'shapes';
852
+ readonly resolution: number;
853
+ readonly resolutionRaw: number;
854
+ };
855
+ readonly nav: {
856
+ readonly derive: 'grid' | 'none';
857
+ readonly navBudgetMs: number;
858
+ readonly maxAdvanceSteps: number;
859
+ };
860
+ readonly streaming: {
861
+ readonly client: {
862
+ readonly radiusChunks: number;
863
+ readonly prefetchChunks: number;
864
+ readonly maxConcurrent: number;
865
+ readonly maxCachedChunks: number;
866
+ };
867
+ readonly cell: {
868
+ readonly marginChunks: number;
869
+ };
870
+ };
871
+ readonly lod: ReadonlyArray<{
872
+ readonly beyondChunks: number;
873
+ readonly fields: ReadonlyArray<string>;
874
+ }>;
875
+ readonly budgets: {
876
+ readonly maxPreparedChunks: number;
877
+ readonly maxPreparedBytes: number;
878
+ readonly maxLodLevels: number;
879
+ readonly maxRayCells: number;
880
+ readonly maxOverlapTests: number;
881
+ };
882
+ }
883
+
884
+ declare interface WorldGeometryStrategies extends GeometryVersionMigrationStrategies, Partial<GeometryEditStrategies>, Partial<GeometryDerivationStrategies>, Partial<GeometryCompactionStrategies> {
885
+ }
886
+
887
+ declare interface WorldInstance {
888
+ readonly id: string;
889
+ readonly room: string;
890
+ readonly maxGroups: number;
891
+ readonly ttl: Duration.Input;
892
+ }
893
+
894
+ declare type WorldLayerDecision = {
895
+ readonly kind: 'use';
896
+ readonly layer: number;
897
+ readonly wake: boolean;
898
+ } | {
899
+ readonly kind: 'create';
900
+ readonly layer: number;
901
+ } | {
902
+ readonly kind: 'blocked';
903
+ readonly reason: 'affinity-unavailable' | 'capacity' | 'layer-budget';
904
+ };
905
+
906
+ declare interface WorldLayering {
907
+ readonly maxPlayers: number;
908
+ readonly splitAt: number;
909
+ readonly mergeBelow: number;
910
+ }
911
+
912
+ declare interface WorldLayerInput {
913
+ readonly policy: WorldLayering;
914
+ readonly layers: ReadonlyArray<WorldLayerObservation>;
915
+ readonly groupSize: number;
916
+ /** Actual server-owned party affinity; never silently choose a different layer. */
917
+ readonly affinity: number | null;
918
+ readonly maxLayers: number;
919
+ }
920
+
921
+ declare interface WorldLayerObservation {
922
+ readonly layer: number;
923
+ readonly players: number;
924
+ readonly state: 'live' | 'hibernated' | 'splitting' | 'merging';
925
+ }
926
+
927
+ declare type WorldLayerPolicy = (input: WorldLayerInput) => WorldLayerDecision;
928
+
929
+ declare type WorldOnWorldChange = (input: WorldOnWorldChangeInput) => unknown;
930
+
931
+ declare interface WorldOnWorldChangeInput {
932
+ readonly sourceWorldId: string;
933
+ readonly targetWorldId: string;
934
+ /** Current server-captured character data, never a player's wire state. */
935
+ readonly sourceData: unknown;
936
+ /** Actual server-selected target data before this policy. */
937
+ readonly targetData: unknown;
938
+ }
939
+
940
+ declare type WorldPoint = readonly [x: number, y: number];
941
+
942
+ declare interface WorldPosition {
943
+ readonly zone: string;
944
+ readonly at: WorldPoint;
945
+ }
946
+
947
+ declare type WorldTransitionKind = 'cell' | 'layer' | 'zone' | 'world' | 'instance' | 'return' | 'recover';
948
+
949
+ declare interface WorldTransitionLocation extends WorldPosition {
950
+ readonly world: string;
951
+ readonly pool: string;
952
+ readonly layer: number;
953
+ readonly instance: string | null;
954
+ }
955
+
956
+ declare type WorldTransitionMode = 'seamless' | 'portal' | 'recover';
957
+
958
+ declare interface WorldTransitionPlan {
959
+ readonly kind: WorldTransitionKind;
960
+ readonly mode: WorldTransitionMode;
961
+ readonly crossPool: boolean;
962
+ readonly persistBeforeRelease: boolean;
963
+ readonly sourceCell: string;
964
+ readonly targetCell: string;
965
+ }
966
+
967
+ declare type WorldTransitionPolicy = (input: WorldTransitionPolicyInput) => WorldTransitionPlan;
968
+
969
+ declare interface WorldTransitionPolicyInput {
970
+ readonly kind: WorldTransitionKind;
971
+ readonly sourceWorld: AnyWorldDescriptor;
972
+ readonly targetWorld: AnyWorldDescriptor;
973
+ readonly source: WorldTransitionLocation;
974
+ readonly target: WorldTransitionLocation;
975
+ readonly mode: WorldTransitionMode | 'auto';
976
+ readonly crossPool: boolean;
977
+ /** Trusted server recovery classification, not a player intention field. */
978
+ readonly recovery: boolean;
979
+ }
980
+
981
+ declare interface WorldZone {
982
+ readonly id: string;
983
+ readonly bounds: WorldBounds;
984
+ readonly room: string;
985
+ readonly neighbors: ReadonlyArray<string>;
986
+ readonly cells?: {
987
+ readonly size: number;
988
+ } | undefined;
989
+ readonly layering?: WorldLayering;
990
+ }
991
+
992
+ export { }