@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.
- package/CHANGELOG.md +24492 -0
- package/LICENSE +61 -0
- package/README.md +9204 -2
- package/SECURITY.md +56 -0
- package/THIRD-PARTY-NOTICES.md +12496 -0
- package/dist/actor.js +1473 -0
- package/dist/apiBinding.js +677 -0
- package/dist/apiRegistryBinding.js +398 -0
- package/dist/apiReservations.js +432 -0
- package/dist/baselines.js +72 -0
- package/dist/bots.d.ts +1485 -0
- package/dist/bots.js +562 -0
- package/dist/catalog.js +79 -0
- package/dist/checkpointJson.js +23 -0
- package/dist/checkpointStore.js +385 -0
- package/dist/client.js +55 -0
- package/dist/clockSync.js +50 -0
- package/dist/collision.js +155 -0
- package/dist/commandDelivery.js +100 -0
- package/dist/commandRecord.js +10 -0
- package/dist/commandWithdrawal.js +182 -0
- package/dist/connection.js +496 -0
- package/dist/controlCarrier.js +374 -0
- package/dist/controlRegistry.js +78 -0
- package/dist/controlTarget.js +44 -0
- package/dist/controlTransport.js +573 -0
- package/dist/developmentBinding.js +112 -0
- package/dist/directory.js +322 -0
- package/dist/directoryProjection.js +116 -0
- package/dist/errors.d.ts +125 -0
- package/dist/errors.js +52 -0
- package/dist/fixed.d.ts +284 -0
- package/dist/fixed.js +10 -0
- package/dist/fixed32.js +133 -0
- package/dist/fixedCollision.js +59 -0
- package/dist/fixedCollision32.js +108 -0
- package/dist/fixedMath.js +55 -0
- package/dist/fixedRaw.js +10 -0
- package/dist/fixedSlabs.js +33 -0
- package/dist/fixedTrig.js +47 -0
- package/dist/fixedTrig32.js +37 -0
- package/dist/fixedVectors.js +112 -0
- package/dist/fixedVectors32.js +94 -0
- package/dist/fixedWide.js +49 -0
- package/dist/fixedWords.js +45 -0
- package/dist/gateway.js +56 -0
- package/dist/geometry-retention-app/rooms.geometryJournalRetention.workflow.server.tsx +4 -0
- package/dist/geometry-retention-app/rooms.geometryJournalRetention.workflow.tsx +14 -0
- package/dist/geometry-worker/worker.d.mts +2 -0
- package/dist/geometry-worker/worker.mjs +50 -0
- package/dist/geometry.d.ts +2249 -0
- package/dist/geometry.js +40 -0
- package/dist/geometryActivation.js +81 -0
- package/dist/geometryActorInventory.js +107 -0
- package/dist/geometryAdminClient.js +86 -0
- package/dist/geometryAdminData.js +31 -0
- package/dist/geometryAdminFixtures.js +49 -0
- package/dist/geometryAdminPorts.js +4 -0
- package/dist/geometryAdminRpc.js +57 -0
- package/dist/geometryAdminRpcRoutes.js +48 -0
- package/dist/geometryAdminSchemas.js +38 -0
- package/dist/geometryAdministration.js +189 -0
- package/dist/geometryAdministrationPorts.js +4 -0
- package/dist/geometryApiBinding.js +164 -0
- package/dist/geometryAppStorage.js +57 -0
- package/dist/geometryArtifacts.js +197 -0
- package/dist/geometryAssetBundle.js +116 -0
- package/dist/geometryAssetClient.js +24 -0
- package/dist/geometryAssetData.js +105 -0
- package/dist/geometryAssetHttp.js +122 -0
- package/dist/geometryAssetPorts.js +4 -0
- package/dist/geometryAssetRpc.js +29 -0
- package/dist/geometryAssetRpcRoutes.js +39 -0
- package/dist/geometryAssetStorageGrant.js +102 -0
- package/dist/geometryBoxOverlap.js +109 -0
- package/dist/geometryCatalogueDigest.js +110 -0
- package/dist/geometryCellCoverage.js +84 -0
- package/dist/geometryCellLoader.js +27 -0
- package/dist/geometryChannel.js +133 -0
- package/dist/geometryChunkHttp.js +53 -0
- package/dist/geometryChunkLeases.js +21 -0
- package/dist/geometryClient.d.ts +1429 -0
- package/dist/geometryClient.js +148 -0
- package/dist/geometryClientChunks.js +329 -0
- package/dist/geometryClientDelta.js +24 -0
- package/dist/geometryClientHttp.js +36 -0
- package/dist/geometryClientInterest.js +108 -0
- package/dist/geometryClientStatic.js +33 -0
- package/dist/geometryCms.d.ts +763 -0
- package/dist/geometryCms.js +216 -0
- package/dist/geometryCommitCoordinator.js +240 -0
- package/dist/geometryCompactionFixture.js +83 -0
- package/dist/geometryCompactionStrategies.js +37 -0
- package/dist/geometryConnectionClient.js +22 -0
- package/dist/geometryDerivationFixtures.js +140 -0
- package/dist/geometryDerivationStrategies.js +26 -0
- package/dist/geometryDigest.js +12 -0
- package/dist/geometryEditChannel.js +69 -0
- package/dist/geometryEditIngress.js +262 -0
- package/dist/geometryEdits.js +365 -0
- package/dist/geometryEnvelope.js +40 -0
- package/dist/geometryGridRaycast.js +91 -0
- package/dist/geometryGridSweep.js +91 -0
- package/dist/geometryHeightfield.js +165 -0
- package/dist/geometryHeightfieldRaycast.js +73 -0
- package/dist/geometryHeightfieldSweep.js +84 -0
- package/dist/geometryHeightfieldVolume.js +44 -0
- package/dist/geometryHost.js +321 -0
- package/dist/geometryHostDirectory.js +206 -0
- package/dist/geometryHostMutations.js +136 -0
- package/dist/geometryHostStreams.js +123 -0
- package/dist/geometryHttpBody.js +75 -0
- package/dist/geometryHttpRoutes.js +111 -0
- package/dist/geometryImportGltf.js +299 -0
- package/dist/geometryImportLdtk.js +53 -0
- package/dist/geometryImportPng.js +143 -0
- package/dist/geometryImportPublication.js +66 -0
- package/dist/geometryImportTiled.js +38 -0
- package/dist/geometryImportTiles.js +135 -0
- package/dist/geometryImportVox.js +129 -0
- package/dist/geometryImportedSource.js +100 -0
- package/dist/geometryInspectEndpoint.js +247 -0
- package/dist/geometryInspection.js +91 -0
- package/dist/geometryInstall.js +120 -0
- package/dist/geometryJournalArchiveData.js +20 -0
- package/dist/geometryJournalArchiveIndex.js +329 -0
- package/dist/geometryJournalArchiveTable.js +20 -0
- package/dist/geometryJournalCompaction.js +99 -0
- package/dist/geometryJournalPatch.js +46 -0
- package/dist/geometryJournalRetention.js +111 -0
- package/dist/geometryJournalRetentionSchemas.js +35 -0
- package/dist/geometryJournalRetentionSweep.js +111 -0
- package/dist/geometryJournalRetentionWorkflow.js +27 -0
- package/dist/geometryJournalRetentionWorkflowData.js +30 -0
- package/dist/geometryJournalStorage.js +147 -0
- package/dist/geometryLoader.js +117 -0
- package/dist/geometryManifest.js +112 -0
- package/dist/geometryManifestChannel.js +92 -0
- package/dist/geometryManifestClient.js +121 -0
- package/dist/geometryManifestData.js +48 -0
- package/dist/geometryManifestPorts.js +4 -0
- package/dist/geometryManifestPublication.js +108 -0
- package/dist/geometryManifestSource.js +67 -0
- package/dist/geometryMigrationJournal.js +13 -0
- package/dist/geometryMigrationStrategies.js +6 -0
- package/dist/geometryMigrations.js +322 -0
- package/dist/geometryNativeMetadata.js +51 -0
- package/dist/geometryPatch.js +169 -0
- package/dist/geometryPersistence.js +448 -0
- package/dist/geometryPersistenceCapture.js +68 -0
- package/dist/geometryPersistenceData.js +139 -0
- package/dist/geometryPersistencePorts.js +4 -0
- package/dist/geometryPlayerAdmission.js +33 -0
- package/dist/geometryPlayerEditOwner.js +264 -0
- package/dist/geometryPlayerEdits.js +48 -0
- package/dist/geometryPrepared.js +187 -0
- package/dist/geometryPrivacyFence.js +23 -0
- package/dist/geometryProceduralPublication.js +90 -0
- package/dist/geometryProceduralWorker.js +163 -0
- package/dist/geometryPublication.js +109 -0
- package/dist/geometryRayAlgebra.js +115 -0
- package/dist/geometryReadClient.js +156 -0
- package/dist/geometryReadPorts.js +4 -0
- package/dist/geometryReadRpc.js +26 -0
- package/dist/geometryReadRpcRoutes.js +46 -0
- package/dist/geometryReliablePublication.js +81 -0
- package/dist/geometryReloadPorts.js +45 -0
- package/dist/geometryReloadSource.js +277 -0
- package/dist/geometryRenderCache.js +164 -0
- package/dist/geometryRenderLod.js +101 -0
- package/dist/geometryRollback.js +124 -0
- package/dist/geometryRollbackCoordinator.js +202 -0
- package/dist/geometryRollbackPorts.js +45 -0
- package/dist/geometryRollbackSource.js +208 -0
- package/dist/geometryRollbackStore.js +197 -0
- package/dist/geometrySchemas.js +26 -0
- package/dist/geometryServer.d.ts +2766 -0
- package/dist/geometryServer.js +62 -0
- package/dist/geometryShapeRaycast.js +110 -0
- package/dist/geometryShapeSegments.js +33 -0
- package/dist/geometryShapes.js +222 -0
- package/dist/geometrySnapshot.js +75 -0
- package/dist/geometrySnapshotChannel.js +159 -0
- package/dist/geometrySnapshotClient.js +158 -0
- package/dist/geometrySnapshotPreparation.js +75 -0
- package/dist/geometrySnapshotServer.js +190 -0
- package/dist/geometrySqlOwner.js +20 -0
- package/dist/geometryStorage.js +126 -0
- package/dist/geometryStorageGrant.js +68 -0
- package/dist/geometryStorageIdentity.js +8 -0
- package/dist/geometryTileArtifact.js +9 -0
- package/dist/geometryTileCodec.js +193 -0
- package/dist/geometryTileCollision.js +95 -0
- package/dist/geometryTileNavigation.js +127 -0
- package/dist/geometryTileView.js +34 -0
- package/dist/geometryVersionActivation.js +113 -0
- package/dist/geometryVersionClient.js +237 -0
- package/dist/geometryVersionCompare.js +39 -0
- package/dist/geometryVersionMigration.js +105 -0
- package/dist/geometryVoxel.js +252 -0
- package/dist/geometryWorldEntitySubject.js +31 -0
- package/dist/geometryWorldExtent.js +11 -0
- package/dist/geometryWorldMetadata.js +37 -0
- package/dist/geometryWorldStrategyFixtures.js +126 -0
- package/dist/geometryWorldView.js +306 -0
- package/dist/host.js +127 -0
- package/dist/hostBinding.js +276 -0
- package/dist/hostCellObservation.js +113 -0
- package/dist/hostClientCapacity.js +89 -0
- package/dist/hostCommandScope.js +63 -0
- package/dist/hostController.js +3093 -0
- package/dist/hostDeployment.js +64 -0
- package/dist/hostDrain.js +151 -0
- package/dist/hostDrainPorts.js +4 -0
- package/dist/hostDriver.js +178 -0
- package/dist/hostLane.js +287 -0
- package/dist/hostListener.js +78 -0
- package/dist/hostListenerBinding.js +18 -0
- package/dist/hostLoopObservation.js +89 -0
- package/dist/hostMetrics.js +55 -0
- package/dist/hostRegistryBinding.js +417 -0
- package/dist/hostSelection.js +15 -0
- package/dist/hostShutdown.js +46 -0
- package/dist/hostTurnObservation.js +52 -0
- package/dist/identities.js +3 -0
- package/dist/index.d.ts +8632 -0
- package/dist/index.js +231 -0
- package/dist/inputReceipts.js +62 -0
- package/dist/inputRedundancy.js +54 -0
- package/dist/inspect.js +237 -0
- package/dist/lockstep.d.ts +436 -0
- package/dist/lockstep.js +381 -0
- package/dist/lockstepAdmission.js +261 -0
- package/dist/lockstepAdmissionCodec.js +93 -0
- package/dist/lockstepAdmissionPorts.js +4 -0
- package/dist/lockstepClientSession.js +577 -0
- package/dist/lockstepDefinition.js +147 -0
- package/dist/lockstepHostLoop.js +242 -0
- package/dist/lockstepInitialAdmission.js +66 -0
- package/dist/lockstepInitialStrategyFixtures.js +44 -0
- package/dist/lockstepJournal.js +394 -0
- package/dist/lockstepJournalCodec.js +253 -0
- package/dist/lockstepJournalPorts.js +4 -0
- package/dist/lockstepJournalRebuild.js +207 -0
- package/dist/lockstepJournalRows.js +56 -0
- package/dist/lockstepMembers.js +130 -0
- package/dist/lockstepMessages.js +46 -0
- package/dist/lockstepOwnedRoom.js +763 -0
- package/dist/lockstepPolicies.js +83 -0
- package/dist/lockstepReact.js +46 -0
- package/dist/lockstepRecoveryTruth.js +120 -0
- package/dist/lockstepRosterConfig.js +31 -0
- package/dist/lockstepSeed.js +11 -0
- package/dist/lockstepSeedFixture.js +19 -0
- package/dist/lockstepServer.d.ts +3897 -0
- package/dist/lockstepServer.js +324 -0
- package/dist/lockstepServerConfig.js +100 -0
- package/dist/lockstepServerRoles.js +402 -0
- package/dist/lockstepServerStrategyFixtures.js +32 -0
- package/dist/lockstepStrategies.js +5 -0
- package/dist/lockstepStrategyFixtures.js +136 -0
- package/dist/lockstepTerminal.js +89 -0
- package/dist/lockstepTerminalPorts.js +4 -0
- package/dist/lockstepTransport.js +772 -0
- package/dist/lockstepTransportConfig.js +31 -0
- package/dist/lockstepWireRoster.js +33 -0
- package/dist/matchRoomProvider.js +31 -0
- package/dist/matchRooms.js +18 -0
- package/dist/membershipObserver.js +46 -0
- package/dist/moderation.js +97 -0
- package/dist/movementSpecials.js +103 -0
- package/dist/ownership.js +16 -0
- package/dist/ownershipWithdrawal.js +17 -0
- package/dist/pcg32.js +95 -0
- package/dist/ports.d.ts +1241 -0
- package/dist/ports.js +10 -0
- package/dist/quaternion.js +69 -0
- package/dist/react.d.ts +406 -0
- package/dist/react.js +108 -0
- package/dist/reaper-app/rooms.reaper.workflow.server.tsx +5 -0
- package/dist/reaper-app/rooms.reaper.workflow.tsx +13 -0
- package/dist/reaper.js +242 -0
- package/dist/reaperSchemas.js +41 -0
- package/dist/reaperWorkflow.js +69 -0
- package/dist/recovery.js +188 -0
- package/dist/recoverySeats.js +25 -0
- package/dist/replay.d.ts +273 -0
- package/dist/replay.js +484 -0
- package/dist/replayPorts.js +4 -0
- package/dist/replayRecording.js +66 -0
- package/dist/replaySchema.js +156 -0
- package/dist/replayStorage.d.ts +149 -0
- package/dist/replayStorage.js +484 -0
- package/dist/reservationBatch.js +421 -0
- package/dist/reservationSchemas.js +16 -0
- package/dist/reservations.js +258 -0
- package/dist/reservePort.js +68 -0
- package/dist/resolvedOptions.js +3 -0
- package/dist/room.d.ts +1006 -0
- package/dist/room.js +283 -0
- package/dist/roomAccessSweep.js +94 -0
- package/dist/roomAppCommandControl.js +58 -0
- package/dist/roomAuthoringStrategy.js +16 -0
- package/dist/roomErasure.js +197 -0
- package/dist/roomPoolRuntimeDefaults.js +23 -0
- package/dist/roomPoolSelection.js +18 -0
- package/dist/roomPoolTopology.js +211 -0
- package/dist/rpc.d.ts +551 -0
- package/dist/rpc.js +111 -0
- package/dist/rpcClient.js +151 -0
- package/dist/rpcRoutes.js +27 -0
- package/dist/runtime.js +1122 -0
- package/dist/schemaHistory.js +97 -0
- package/dist/seatStore.js +150 -0
- package/dist/seatStrategyFixtures.js +51 -0
- package/dist/seatSubject.js +31 -0
- package/dist/seats.js +129 -0
- package/dist/serverSession.js +810 -0
- package/dist/serverSessionConfig.js +42 -0
- package/dist/sessionAdmission.js +52 -0
- package/dist/sidecarAdmission.js +102 -0
- package/dist/sidecarConfig.js +115 -0
- package/dist/sidecarConfigPublication.js +63 -0
- package/dist/sidecarHostListener.js +207 -0
- package/dist/sidecarIpc.js +204 -0
- package/dist/sidecarPeer.js +309 -0
- package/dist/sidecarProcessPort.js +27 -0
- package/dist/sidecarRuntime.js +167 -0
- package/dist/sidecarSelection.js +141 -0
- package/dist/sidecarWire.js +177 -0
- package/dist/sidecarWrites.js +162 -0
- package/dist/simulation.d.ts +391 -0
- package/dist/simulation.js +281 -0
- package/dist/simulationAuthoring.js +28 -0
- package/dist/simulationBytes.js +26 -0
- package/dist/simulationConformance.js +304 -0
- package/dist/simulationInputHistoryCapture.js +34 -0
- package/dist/simulationInputHistoryWire.js +192 -0
- package/dist/simulationOptionsWire.js +77 -0
- package/dist/simulationRecoveryWire.js +133 -0
- package/dist/simulationReplay.js +126 -0
- package/dist/simulationSnapshotWire.js +111 -0
- package/dist/simulationState.js +177 -0
- package/dist/snapshotBlob.js +125 -0
- package/dist/snapshotBlobCleanup.js +92 -0
- package/dist/snapshotBlobIndex.js +37 -0
- package/dist/snapshotBudget.js +79 -0
- package/dist/snapshotChain.js +184 -0
- package/dist/snapshotErasure.js +171 -0
- package/dist/snapshotInspection.js +104 -0
- package/dist/snapshotSegmentBlobs.js +57 -0
- package/dist/snapshotUploads.js +165 -0
- package/dist/socketTransport.js +252 -0
- package/dist/spatial.js +103 -0
- package/dist/spectatorPolicy.js +25 -0
- package/dist/spectatorProducer.js +88 -0
- package/dist/startFailureCause.js +3 -0
- package/dist/stateCodec.js +657 -0
- package/dist/strategies.d.ts +210 -0
- package/dist/strategies.js +8 -0
- package/dist/strategiesServer.d.ts +286 -0
- package/dist/strategiesServer.js +11 -0
- package/dist/strategyFixtures.js +181 -0
- package/dist/streamFraming.js +121 -0
- package/dist/streamTransport.js +265 -0
- package/dist/subjectAdmission.js +49 -0
- package/dist/subjectPrivacy.js +280 -0
- package/dist/subjectPrivacyBinding.js +89 -0
- package/dist/systemManifest.js +181 -0
- package/dist/tables.js +158 -0
- package/dist/testHarness.js +88 -0
- package/dist/testing.d.ts +3684 -0
- package/dist/testing.js +220 -0
- package/dist/testingPorts.js +270 -0
- package/dist/testingServer.d.ts +4060 -0
- package/dist/testingServer.js +18 -0
- package/dist/transform.d.ts +692 -0
- package/dist/transform.js +216 -0
- package/dist/transform3d.js +117 -0
- package/dist/transformCollection.js +23 -0
- package/dist/transformCollection3d.js +23 -0
- package/dist/transformCollectionCore.js +155 -0
- package/dist/transformFrames.js +120 -0
- package/dist/transformPrediction3d.js +126 -0
- package/dist/transformRules.js +122 -0
- package/dist/transformSchemas.js +19 -0
- package/dist/transport.js +31 -0
- package/dist/transportAuthoring.js +28 -0
- package/dist/transportCleanup.js +21 -0
- package/dist/transportConformance.js +123 -0
- package/dist/transportConnector.js +81 -0
- package/dist/transportEndpoints.js +37 -0
- package/dist/transportsServer.d.ts +5515 -0
- package/dist/transportsServer.js +6 -0
- package/dist/viewProjection.js +15 -0
- package/dist/web.d.ts +2286 -0
- package/dist/web.js +517 -0
- package/dist/webTransportClient.js +172 -0
- package/dist/wire.d.ts +992 -0
- package/dist/wire.js +491 -0
- package/dist/withdrawalPort.js +27 -0
- package/dist/world.d.ts +1894 -0
- package/dist/world.js +332 -0
- package/dist/worldActorReceipts.js +47 -0
- package/dist/worldActorTransferSnapshot.js +13 -0
- package/dist/worldAdmissionPending.js +7 -0
- package/dist/worldBoundaryCoordinator.js +147 -0
- package/dist/worldCatalog.js +80 -0
- package/dist/worldCellAllocation.js +202 -0
- package/dist/worldCellDestination.js +67 -0
- package/dist/worldCells.js +488 -0
- package/dist/worldChange.js +31 -0
- package/dist/worldClient.js +663 -0
- package/dist/worldClientControl.js +140 -0
- package/dist/worldClientPendingInput.js +15 -0
- package/dist/worldClientRpc.js +132 -0
- package/dist/worldClientRpcRoutes.js +42 -0
- package/dist/worldClientSchemas.js +27 -0
- package/dist/worldCommands.js +139 -0
- package/dist/worldData.js +41 -0
- package/dist/worldDefaultBinding.js +376 -0
- package/dist/worldDefaultGroupAdmission.js +81 -0
- package/dist/worldDefaultGroupAppServices.js +30 -0
- package/dist/worldDefaultGroupCompensation.js +108 -0
- package/dist/worldDefaultGroupContinuation.js +95 -0
- package/dist/worldDefaultGroupControl.js +71 -0
- package/dist/worldDefaultGroupMembers.js +84 -0
- package/dist/worldDefaultGroups.js +20 -0
- package/dist/worldDefaultPending.js +78 -0
- package/dist/worldDefaultService.js +244 -0
- package/dist/worldEntities.js +2979 -0
- package/dist/worldEntityCodec.js +20 -0
- package/dist/worldEntityHandoffView.js +153 -0
- package/dist/worldGeometry.js +169 -0
- package/dist/worldGhostAdmission.js +64 -0
- package/dist/worldGhostDestination.js +117 -0
- package/dist/worldGhostGateway.js +131 -0
- package/dist/worldGhostHandshake.js +107 -0
- package/dist/worldGhostHost.js +41 -0
- package/dist/worldGhostIngress.js +131 -0
- package/dist/worldGhostNeighborhood.js +69 -0
- package/dist/worldGhostNeighbors.js +85 -0
- package/dist/worldGhostOutbound.js +109 -0
- package/dist/worldGhostPublisher.js +215 -0
- package/dist/worldGhostReceiver.js +212 -0
- package/dist/worldGhostSender.js +145 -0
- package/dist/worldGhostSocket.js +77 -0
- package/dist/worldGhostWire.js +171 -0
- package/dist/worldGroupCommand.js +48 -0
- package/dist/worldGroupDeadline.js +114 -0
- package/dist/worldGroupPreparation.js +114 -0
- package/dist/worldGroupReadyControl.js +127 -0
- package/dist/worldGroupSupervisor.js +119 -0
- package/dist/worldHandoffMetrics.js +58 -0
- package/dist/worldHandoffView.js +99 -0
- package/dist/worldHostSource.js +68 -0
- package/dist/worldInspectEndpoint.js +249 -0
- package/dist/worldInspection.js +108 -0
- package/dist/worldInstanceAdmission.js +30 -0
- package/dist/worldInstanceAllocation.js +115 -0
- package/dist/worldInstanceDestination.js +63 -0
- package/dist/worldInstanceExpiry.js +281 -0
- package/dist/worldInstanceExpirySupervisor.js +87 -0
- package/dist/worldInstanceLifecycle.js +102 -0
- package/dist/worldInstanceState.js +51 -0
- package/dist/worldInstances.js +477 -0
- package/dist/worldJoin.js +55 -0
- package/dist/worldLayers.js +150 -0
- package/dist/worldLeases.js +77 -0
- package/dist/worldManifest.js +24 -0
- package/dist/worldMovement.js +62 -0
- package/dist/worldPersistence.js +133 -0
- package/dist/worldProjection.js +220 -0
- package/dist/worldReact.js +109 -0
- package/dist/worldRecoveryActor.js +34 -0
- package/dist/worldReturnAnchor.js +48 -0
- package/dist/worldRoomHooks.js +56 -0
- package/dist/worldRoomPool.js +26 -0
- package/dist/worldRoomSteps.js +132 -0
- package/dist/worldSeatBinding.js +35 -0
- package/dist/worldServer.d.ts +6936 -0
- package/dist/worldServer.js +48 -0
- package/dist/worldSourceSeatPending.js +8 -0
- package/dist/worldStrategyFixtures.js +163 -0
- package/dist/worldTesting.js +26 -0
- package/dist/worldTransitionDefaults.js +197 -0
- package/dist/worldTransitionExecutor.js +518 -0
- package/dist/worldTransitionGroup.js +112 -0
- package/dist/worldTransitionPhysicalSteps.js +39 -0
- package/dist/worldTransitionResolver.js +227 -0
- package/dist/worldTransitionSeatGroup.js +63 -0
- package/dist/worldTransitionSeats.js +259 -0
- package/dist/worldTransitionState.js +94 -0
- package/dist/worldTransitions.js +100 -0
- package/package.json +189 -4
package/dist/ports.d.ts
ADDED
|
@@ -0,0 +1,1241 @@
|
|
|
1
|
+
import { Context } from 'effect';
|
|
2
|
+
import { Effect } from 'effect';
|
|
3
|
+
import { PluginPrivacyRequest } from '@voltro/protocol';
|
|
4
|
+
import { Schema } from 'effect';
|
|
5
|
+
import { Subject } from '@voltro/protocol';
|
|
6
|
+
import { YieldableError } from 'effect/Cause';
|
|
7
|
+
|
|
8
|
+
declare class BudgetExceeded extends BudgetExceeded_base {
|
|
9
|
+
get message(): string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
declare const BudgetExceeded_base: Schema.Class<BudgetExceeded, Schema.TaggedStruct<"BudgetExceeded", {
|
|
13
|
+
readonly budget: Schema.String;
|
|
14
|
+
readonly limit: Schema.Number;
|
|
15
|
+
}>, YieldableError>;
|
|
16
|
+
|
|
17
|
+
declare interface GeometryPersistenceSubject {
|
|
18
|
+
readonly id: string;
|
|
19
|
+
readonly kind: 'user' | 'guest';
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
declare class NotRoomMember extends NotRoomMember_base {
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
declare const NotRoomMember_base: Schema.Class<NotRoomMember, Schema.TaggedStruct<"NotRoomMember", {
|
|
26
|
+
readonly sessionId: Schema.String;
|
|
27
|
+
}>, YieldableError>;
|
|
28
|
+
|
|
29
|
+
declare class ProtocolError extends ProtocolError_base {
|
|
30
|
+
get message(): string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
declare const ProtocolError_base: Schema.Class<ProtocolError, Schema.TaggedStruct<"ProtocolError", {
|
|
34
|
+
readonly detail: Schema.String;
|
|
35
|
+
}>, YieldableError>;
|
|
36
|
+
|
|
37
|
+
declare const ReserveRoomInput: Schema.Union<readonly [Schema.Struct<{
|
|
38
|
+
readonly mode: Schema.Literals<readonly ["join", "create"]>;
|
|
39
|
+
readonly room: Schema.NonEmptyString;
|
|
40
|
+
readonly options: Schema.Unknown;
|
|
41
|
+
readonly pool: Schema.optional<Schema.String>;
|
|
42
|
+
}>, Schema.Struct<{
|
|
43
|
+
readonly mode: Schema.Literal<"joinById">;
|
|
44
|
+
readonly roomId: Schema.NonEmptyString;
|
|
45
|
+
readonly role: Schema.optional<Schema.Literals<readonly ["player", "spectator"]>>;
|
|
46
|
+
}>]>;
|
|
47
|
+
|
|
48
|
+
declare type ReserveRoomInput = typeof ReserveRoomInput.Type;
|
|
49
|
+
|
|
50
|
+
export declare interface RoomAccessRecheckInput {
|
|
51
|
+
readonly tenantId: string;
|
|
52
|
+
readonly subjectId: string;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** `visited`: seats asked again; `renewed`: still admitted (new deadline); `kicked`: sessions ended. */
|
|
56
|
+
export declare interface RoomAccessRecheckReceipt {
|
|
57
|
+
readonly visited: number;
|
|
58
|
+
readonly renewed: number;
|
|
59
|
+
readonly kicked: number;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
declare interface RoomAppCommand {
|
|
63
|
+
readonly roomId: string;
|
|
64
|
+
readonly tenantId: string;
|
|
65
|
+
readonly requestId: string;
|
|
66
|
+
readonly command: RoomOutboxCommand;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** Application dispatch must implement durable idempotency by requestId. */
|
|
70
|
+
export declare class RoomAppCommandPort extends RoomAppCommandPort_base {
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
declare const RoomAppCommandPort_base: Context.ServiceClass<RoomAppCommandPort, "@voltro/RoomAppCommandPort", {
|
|
74
|
+
deliver(command: RoomAppCommand): Effect.Effect<void, ProtocolError>;
|
|
75
|
+
}>;
|
|
76
|
+
|
|
77
|
+
declare class RoomAuthoringError extends RoomAuthoringError_base {
|
|
78
|
+
get message(): string;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
declare const RoomAuthoringError_base: Schema.Class<RoomAuthoringError, Schema.TaggedStruct<"RoomAuthoringError", {
|
|
82
|
+
readonly room: Schema.String;
|
|
83
|
+
readonly detail: Schema.String;
|
|
84
|
+
}>, YieldableError>;
|
|
85
|
+
|
|
86
|
+
declare interface RoomCheckpoint {
|
|
87
|
+
readonly requestId: string;
|
|
88
|
+
readonly roomId: string;
|
|
89
|
+
readonly tenantId: string;
|
|
90
|
+
readonly epoch: number;
|
|
91
|
+
readonly revision: number;
|
|
92
|
+
readonly tick: number;
|
|
93
|
+
readonly commandCursor: number;
|
|
94
|
+
readonly bytes: Uint8Array;
|
|
95
|
+
readonly schemaHash: number;
|
|
96
|
+
readonly schedules: ReadonlyArray<RoomScheduleSnapshot>;
|
|
97
|
+
readonly worldReceipts?: ReadonlyArray<RoomWorldReceipt> | undefined;
|
|
98
|
+
readonly inputReceipts: ReadonlyArray<RoomInputReceipt>;
|
|
99
|
+
readonly commands: ReadonlyArray<RoomOutboxCommand>;
|
|
100
|
+
readonly publication?: 'held' | undefined;
|
|
101
|
+
/** Earliest World epoch represented by an interrupted held adoption. */
|
|
102
|
+
readonly worldRecoveryEpoch?: number | undefined;
|
|
103
|
+
readonly disposition: 'live' | 'faulted' | 'disposed' | 'hibernating' | 'hibernated';
|
|
104
|
+
/** The Room's own listing (`RoomDefinition.listing`), written to the directory with a live checkpoint. */
|
|
105
|
+
readonly listing?: RoomListing | undefined;
|
|
106
|
+
readonly snapshot?: {
|
|
107
|
+
readonly mode: 'full' | 'delta';
|
|
108
|
+
readonly fullEvery: number;
|
|
109
|
+
readonly keepFulls: number;
|
|
110
|
+
readonly store: 'auto';
|
|
111
|
+
readonly maxInlineBytes: number;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/** Browser-safe service contracts. Server adapters and fixture Layers share
|
|
116
|
+
* these exact Tags; imports of server-owned data shapes are erased types. */
|
|
117
|
+
export declare class RoomCheckpointPort extends RoomCheckpointPort_base {
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
declare const RoomCheckpointPort_base: Context.ServiceClass<RoomCheckpointPort, "@voltro/RoomCheckpointPort", {
|
|
121
|
+
commit(checkpoint: RoomCheckpoint): Effect.Effect<void, ProtocolError | RoomHibernatePending>;
|
|
122
|
+
load(roomId: string, tenantId: string): Effect.Effect<RoomCheckpoint | null, ProtocolError>;
|
|
123
|
+
pending(roomId: string, tenantId: string, limit: number): Effect.Effect<ReadonlyArray<RoomOutboxCommand>, ProtocolError>;
|
|
124
|
+
acknowledge(roomId: string, tenantId: string, requestId: string): Effect.Effect<void, ProtocolError>;
|
|
125
|
+
/** Optional: retire a command whose handler keeps failing (marked failed, no longer pending).
|
|
126
|
+
* Without it, a failing command is retried on every turn. */
|
|
127
|
+
readonly park?: (roomId: string, tenantId: string, requestId: string) => Effect.Effect<void, ProtocolError>;
|
|
128
|
+
}>;
|
|
129
|
+
|
|
130
|
+
export declare interface RoomCloseAllInput {
|
|
131
|
+
readonly tenantId: string;
|
|
132
|
+
readonly reason: string;
|
|
133
|
+
readonly limit?: number;
|
|
134
|
+
readonly after?: string;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export declare interface RoomCloseAllReceipt {
|
|
138
|
+
readonly rooms: number;
|
|
139
|
+
readonly kicked: number;
|
|
140
|
+
readonly next: string | null;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/** Every admitted session of one Room (a maintenance drain); `reason` is shown to each player. */
|
|
144
|
+
export declare interface RoomCloseInput {
|
|
145
|
+
readonly tenantId: string;
|
|
146
|
+
readonly roomId: string;
|
|
147
|
+
readonly reason: string;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export declare type RoomControlError = ProtocolError | BudgetExceeded | NotRoomMember | RoomAuthoringError | RoomForbidden | RoomFull | RoomGone | RoomLocked | RoomPoolWaking | RoomsClosed | SeatExpired;
|
|
151
|
+
|
|
152
|
+
declare interface RoomCreation {
|
|
153
|
+
/** Server-owned stable retry key. Requires staged creation; never a client
|
|
154
|
+
* permission or a request to resurrect a retired Room. */
|
|
155
|
+
readonly creationKey?: string;
|
|
156
|
+
/** Server-owned explicit QA override; canonical room ownership otherwise. */
|
|
157
|
+
readonly pool?: string | undefined;
|
|
158
|
+
readonly tenantId: string;
|
|
159
|
+
readonly name: string;
|
|
160
|
+
readonly maxClients: number;
|
|
161
|
+
readonly metadata: Readonly<Record<string, unknown>>;
|
|
162
|
+
readonly private: boolean;
|
|
163
|
+
readonly options?: unknown;
|
|
164
|
+
/** Remains unavailable until its first authoritative checkpoint commits. */
|
|
165
|
+
readonly staged?: boolean;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
declare type RoomDirectoryError = ProtocolError | BudgetExceeded | RoomForbidden | RoomFull | RoomGone | RoomPoolWaking;
|
|
169
|
+
|
|
170
|
+
declare interface RoomDirectoryListing {
|
|
171
|
+
readonly pool?: string | undefined;
|
|
172
|
+
readonly id: string;
|
|
173
|
+
readonly name: string;
|
|
174
|
+
readonly hostId: string;
|
|
175
|
+
readonly tenantId: string;
|
|
176
|
+
readonly metadata: Readonly<Record<string, unknown>>;
|
|
177
|
+
readonly clients: number;
|
|
178
|
+
readonly maxClients: number;
|
|
179
|
+
readonly locked: boolean;
|
|
180
|
+
readonly epoch: number;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export declare class RoomDirectoryPort extends RoomDirectoryPort_base {
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
declare const RoomDirectoryPort_base: Context.ServiceClass<RoomDirectoryPort, "@voltro/RoomDirectoryPort", {
|
|
187
|
+
register(input: RoomHostRegistration): Effect.Effect<RoomHostListing, RoomDirectoryError>;
|
|
188
|
+
heartbeat(hostId: string, load: RoomHostRegistration["load"]): Effect.Effect<void, RoomDirectoryError>;
|
|
189
|
+
setReady(hostId: string, ready: boolean): Effect.Effect<void, RoomDirectoryError>;
|
|
190
|
+
hosts(region: string, pool?: string): Effect.Effect<ReadonlyArray<RoomHostListing>, RoomDirectoryError>;
|
|
191
|
+
observeOwnership(roomId: string, tenantId: string): Effect.Effect<RoomOwnershipObservation | null, RoomDirectoryError>;
|
|
192
|
+
selectHost(region: string, routing?: RoomHostRouting): Effect.Effect<RoomHostListing, RoomDirectoryError>;
|
|
193
|
+
createOwnedRoom(hostId: string, input: RoomCreation): Effect.Effect<RoomDirectoryListing, RoomDirectoryError>;
|
|
194
|
+
abandonCreation(hostId: string, roomId: string, tenantId: string): Effect.Effect<void, RoomDirectoryError>;
|
|
195
|
+
unregister(hostId: string): Effect.Effect<void, RoomDirectoryError>;
|
|
196
|
+
list(tenantId: string, name: string, limit: number): Effect.Effect<ReadonlyArray<RoomDirectoryListing>, RoomDirectoryError>;
|
|
197
|
+
setListing(hostId: string, roomId: string, tenantId: string, epoch: number, listing: {
|
|
198
|
+
readonly metadata: Readonly<Record<string, unknown>>;
|
|
199
|
+
readonly locked: boolean;
|
|
200
|
+
readonly private: boolean;
|
|
201
|
+
}): Effect.Effect<void, RoomDirectoryError>;
|
|
202
|
+
}>;
|
|
203
|
+
|
|
204
|
+
/** Exact last committed boundary supplied by the quiesced local owner. No client RPC. */
|
|
205
|
+
declare type RoomDrainHandoff = RoomDrainRoom & ({
|
|
206
|
+
readonly mode: 'state-sync';
|
|
207
|
+
readonly revision: number;
|
|
208
|
+
} | {
|
|
209
|
+
readonly mode: 'lockstep';
|
|
210
|
+
readonly admissionDigest: string;
|
|
211
|
+
readonly journalDigest: string | null;
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
declare interface RoomDrainReceipt {
|
|
215
|
+
readonly hostId: string;
|
|
216
|
+
readonly roomId: string;
|
|
217
|
+
readonly tenantId: string;
|
|
218
|
+
readonly epoch: number;
|
|
219
|
+
readonly state: 'orphaned';
|
|
220
|
+
readonly tick: number;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
declare interface RoomDrainRoom {
|
|
224
|
+
readonly roomId: string;
|
|
225
|
+
readonly tenantId: string;
|
|
226
|
+
readonly epoch: number;
|
|
227
|
+
readonly tick: number;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
declare interface RoomErasureInput {
|
|
231
|
+
readonly roomId: string;
|
|
232
|
+
readonly tenantId: string;
|
|
233
|
+
/** The caller retains this identity across uncertain outcomes and restart. */
|
|
234
|
+
readonly requestId: string;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/** Whole selected room, not a subject-selection/export policy. */
|
|
238
|
+
export declare class RoomErasurePort extends RoomErasurePort_base {
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
declare const RoomErasurePort_base: Context.ServiceClass<RoomErasurePort, "@voltro/RoomErasurePort", {
|
|
242
|
+
erase(input: RoomErasureInput): Effect.Effect<void, ProtocolError>;
|
|
243
|
+
}>;
|
|
244
|
+
|
|
245
|
+
/** App-owned work spawned by room commands needs its own durable withdrawal.
|
|
246
|
+
* A dispatch ACK or actor shutdown does not establish that this work ended. */
|
|
247
|
+
export declare class RoomExternalWorkWithdrawalPort extends RoomExternalWorkWithdrawalPort_base {
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
declare const RoomExternalWorkWithdrawalPort_base: Context.ServiceClass<RoomExternalWorkWithdrawalPort, "@voltro/RoomExternalWorkWithdrawalPort", {
|
|
251
|
+
withdraw(input: RoomHostWithdrawalInput & {
|
|
252
|
+
readonly requestId: string;
|
|
253
|
+
}): Effect.Effect<void, ProtocolError>;
|
|
254
|
+
}>;
|
|
255
|
+
|
|
256
|
+
declare class RoomForbidden extends RoomForbidden_base {
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
declare const RoomForbidden_base: Schema.Class<RoomForbidden, Schema.TaggedStruct<"RoomForbidden", {
|
|
260
|
+
readonly roomId: Schema.String;
|
|
261
|
+
}>, YieldableError>;
|
|
262
|
+
|
|
263
|
+
declare class RoomFull extends RoomFull_base {
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
declare const RoomFull_base: Schema.Class<RoomFull, Schema.TaggedStruct<"RoomFull", {
|
|
267
|
+
readonly roomId: Schema.String;
|
|
268
|
+
}>, YieldableError>;
|
|
269
|
+
|
|
270
|
+
export declare interface RoomGeometryRollbackInput {
|
|
271
|
+
readonly tenantId: string;
|
|
272
|
+
readonly roomId: string;
|
|
273
|
+
readonly request: RoomGeometryRollbackRequest;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/** Administrative intention only. World/version/owner/authority/baseline/patch
|
|
277
|
+
* are resolved by the actual Host/source, never accepted as client state. */
|
|
278
|
+
declare interface RoomGeometryRollbackRequest {
|
|
279
|
+
readonly cx: number;
|
|
280
|
+
readonly cy: number;
|
|
281
|
+
readonly cz?: number | undefined;
|
|
282
|
+
/** The actor whose changes are undone; `null` undoes every actor's changes (chunk reset to its static baseline). */
|
|
283
|
+
readonly target: GeometryPersistenceSubject | null;
|
|
284
|
+
readonly requestId: string;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
declare class RoomGone extends RoomGone_base {
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
declare const RoomGone_base: Schema.Class<RoomGone, Schema.TaggedStruct<"RoomGone", {
|
|
291
|
+
readonly roomId: Schema.String;
|
|
292
|
+
}>, YieldableError>;
|
|
293
|
+
|
|
294
|
+
/** Durable work/capacity is still owned; this is backpressure, not completion. */
|
|
295
|
+
declare class RoomHibernatePending extends RoomHibernatePending_base {
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
declare const RoomHibernatePending_base: Schema.Class<RoomHibernatePending, Schema.TaggedStruct<"RoomHibernatePending", {
|
|
299
|
+
readonly roomId: Schema.String;
|
|
300
|
+
}>, YieldableError>;
|
|
301
|
+
|
|
302
|
+
export declare class RoomHostAdoptionPort extends RoomHostAdoptionPort_base {
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
declare const RoomHostAdoptionPort_base: Context.ServiceClass<RoomHostAdoptionPort, "@voltro/RoomHostAdoptionPort", {
|
|
306
|
+
adopt(hostId: string, roomId: string, tenantId: string, priorEpoch: number): Effect.Effect<void, ProtocolError>;
|
|
307
|
+
}>;
|
|
308
|
+
|
|
309
|
+
/** API-to-host transport seam. The target executes on its existing controller;
|
|
310
|
+
* resolved Subjects are trusted server inputs, never player-supplied authority. */
|
|
311
|
+
export declare class RoomHostControlPort extends RoomHostControlPort_base {
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
declare const RoomHostControlPort_base: Context.ServiceClass<RoomHostControlPort, "@voltro/RoomHostControlPort", {
|
|
315
|
+
/** `attributes`: app data the API resolved for this seat; the Host signs it into the seat. */
|
|
316
|
+
reserve(hostId: string, input: ReserveRoomInput, subject: Subject, attributes?: RoomSeatAttributes): Effect.Effect<RoomReservation, RoomControlError>;
|
|
317
|
+
resume(hostId: string, sessionId: string, subject: Subject, attributes?: RoomSeatAttributes): Effect.Effect<RoomReservation, RoomControlError>;
|
|
318
|
+
leave(hostId: string, sessionId: string, token: Uint8Array, subject: Subject): Effect.Effect<{
|
|
319
|
+
readonly ok: true;
|
|
320
|
+
}, RoomControlError>;
|
|
321
|
+
}>;
|
|
322
|
+
|
|
323
|
+
declare type RoomHostDrainError = ProtocolError | BudgetExceeded | RoomForbidden | RoomGone;
|
|
324
|
+
|
|
325
|
+
export declare class RoomHostDrainPort extends RoomHostDrainPort_base {
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
declare const RoomHostDrainPort_base: Context.ServiceClass<RoomHostDrainPort, "@voltro/RoomHostDrainPort", {
|
|
329
|
+
/** Irreversibly fences new SQL routing for this exact registered process. */
|
|
330
|
+
begin(): Effect.Effect<void, RoomHostDrainError>;
|
|
331
|
+
/** Requires the caller to have stopped simulation/session mutation first.
|
|
332
|
+
* This only commits SQL handoff; it neither stops the actor nor migrates clients. */
|
|
333
|
+
handoff(input: RoomDrainHandoff): Effect.Effect<RoomDrainReceipt, RoomHostDrainError>;
|
|
334
|
+
}>;
|
|
335
|
+
|
|
336
|
+
/** API-to-host operator kick on the owning Host's existing controller. */
|
|
337
|
+
export declare class RoomHostKickPort extends RoomHostKickPort_base {
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
declare const RoomHostKickPort_base: Context.ServiceClass<RoomHostKickPort, "@voltro/RoomHostKickPort", {
|
|
341
|
+
kick(hostId: string, input: RoomKickInput): Effect.Effect<RoomKickReceipt, RoomControlError>;
|
|
342
|
+
close(hostId: string, input: RoomCloseInput): Effect.Effect<RoomKickReceipt, RoomControlError>;
|
|
343
|
+
}>;
|
|
344
|
+
|
|
345
|
+
declare interface RoomHostListing {
|
|
346
|
+
readonly pool?: string | undefined;
|
|
347
|
+
readonly clientCapacity?: number | undefined;
|
|
348
|
+
readonly id: string;
|
|
349
|
+
readonly address: string;
|
|
350
|
+
readonly webTransportAddress?: string | undefined;
|
|
351
|
+
readonly webTransportCertificateHash?: string | undefined;
|
|
352
|
+
readonly region: string;
|
|
353
|
+
readonly capacity: number;
|
|
354
|
+
readonly rooms: number;
|
|
355
|
+
readonly clients: number;
|
|
356
|
+
readonly cpu: number;
|
|
357
|
+
readonly lastHeartbeatAt: number;
|
|
358
|
+
/** Last registered SQL routing admission, not proof of membership liveness. */
|
|
359
|
+
readonly ready: boolean;
|
|
360
|
+
/** Process identity, never a sender-clock liveness deadline. */
|
|
361
|
+
readonly membership?: {
|
|
362
|
+
readonly instanceId: string | undefined;
|
|
363
|
+
readonly startedAt: number;
|
|
364
|
+
} | undefined;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
declare interface RoomHostObservation {
|
|
368
|
+
readonly hostId: string;
|
|
369
|
+
readonly state: 'observing' | 'presumed-unreachable';
|
|
370
|
+
readonly sqlSilenceMs: number;
|
|
371
|
+
readonly membershipSilenceMs: number;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
declare interface RoomHostRegistration {
|
|
375
|
+
readonly pool?: string | undefined;
|
|
376
|
+
readonly clientCapacity?: number | undefined;
|
|
377
|
+
readonly address: string;
|
|
378
|
+
readonly webTransportAddress?: string | undefined;
|
|
379
|
+
readonly webTransportCertificateHash?: string | undefined;
|
|
380
|
+
readonly region: string;
|
|
381
|
+
readonly capacity: number;
|
|
382
|
+
readonly load: {
|
|
383
|
+
readonly rooms: number;
|
|
384
|
+
readonly clients: number;
|
|
385
|
+
readonly cpu: number;
|
|
386
|
+
};
|
|
387
|
+
readonly ready?: boolean;
|
|
388
|
+
readonly membership?: {
|
|
389
|
+
readonly instanceId: string | undefined;
|
|
390
|
+
readonly startedAt: number;
|
|
391
|
+
} | undefined;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
declare interface RoomHostRouting {
|
|
395
|
+
readonly name: string;
|
|
396
|
+
readonly tenantId: string;
|
|
397
|
+
readonly pool?: string | undefined;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
export declare type RoomHostWithdrawalInput = typeof RoomHostWithdrawalInputSchema.Type;
|
|
401
|
+
|
|
402
|
+
/** Trusted outside-tick withdrawal, never player-supplied state or authority. */
|
|
403
|
+
declare const RoomHostWithdrawalInputSchema: Schema.Struct<{
|
|
404
|
+
readonly roomId: Schema.String;
|
|
405
|
+
readonly tenantId: Schema.String;
|
|
406
|
+
readonly priorEpoch: Schema.Int;
|
|
407
|
+
readonly withdrawnEpoch: Schema.Int;
|
|
408
|
+
}>;
|
|
409
|
+
|
|
410
|
+
/** Trusted coordinator waits for the exact former owner's local actor/session/
|
|
411
|
+
* command lane after a newer SQL withdrawal. No player RPC mounts this port. */
|
|
412
|
+
export declare class RoomHostWithdrawalPort extends RoomHostWithdrawalPort_base {
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
declare const RoomHostWithdrawalPort_base: Context.ServiceClass<RoomHostWithdrawalPort, "@voltro/RoomHostWithdrawalPort", {
|
|
416
|
+
withdraw(hostId: string, input: RoomHostWithdrawalInput): Effect.Effect<void, ProtocolError>;
|
|
417
|
+
}>;
|
|
418
|
+
|
|
419
|
+
/** Captured outside the tick and stored with the exact state it describes. */
|
|
420
|
+
declare interface RoomInputReceipt {
|
|
421
|
+
readonly sessionId: string;
|
|
422
|
+
readonly subjectId: string | null;
|
|
423
|
+
readonly lastAppliedSeq: number;
|
|
424
|
+
/** Intentionally discarded pending World input; never an applied ACK. */
|
|
425
|
+
readonly discardedThrough?: number;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
export declare interface RoomKickInput {
|
|
429
|
+
readonly tenantId: string;
|
|
430
|
+
readonly roomId: string;
|
|
431
|
+
readonly subjectId: string;
|
|
432
|
+
readonly reason: string;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
export declare interface RoomKickReceipt {
|
|
436
|
+
readonly kicked: number;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
/** A Room's own listing; scalar metadata only, at most 16 keys and 2 KiB. */
|
|
440
|
+
declare interface RoomListing {
|
|
441
|
+
readonly metadata?: Readonly<Record<string, RoomScalar>>;
|
|
442
|
+
readonly private?: boolean;
|
|
443
|
+
readonly locked?: boolean;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
declare class RoomLocked extends RoomLocked_base {
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
declare const RoomLocked_base: Schema.Class<RoomLocked, Schema.TaggedStruct<"RoomLocked", {
|
|
450
|
+
readonly roomId: Schema.String;
|
|
451
|
+
}>, YieldableError>;
|
|
452
|
+
|
|
453
|
+
declare interface RoomLockstepAdmission {
|
|
454
|
+
readonly version: 1;
|
|
455
|
+
readonly roomId: string;
|
|
456
|
+
readonly tenantId: string;
|
|
457
|
+
readonly ownerEpoch: number;
|
|
458
|
+
readonly hostId: string;
|
|
459
|
+
readonly initial: {
|
|
460
|
+
readonly requestId: string;
|
|
461
|
+
readonly creatorSubjectId: string;
|
|
462
|
+
readonly name: string;
|
|
463
|
+
readonly seed: number;
|
|
464
|
+
readonly options: string;
|
|
465
|
+
readonly stateSchemaHash: number;
|
|
466
|
+
readonly inputSchemaHash: number;
|
|
467
|
+
};
|
|
468
|
+
readonly adoption: {
|
|
469
|
+
readonly requestId: string;
|
|
470
|
+
readonly priorEpoch: number;
|
|
471
|
+
} | null;
|
|
472
|
+
readonly digest: string;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
/** Trusted complete outside-tick SQL creation capability, never a player state RPC. */
|
|
476
|
+
export declare class RoomLockstepAdmissionPort extends RoomLockstepAdmissionPort_base {
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
declare const RoomLockstepAdmissionPort_base: Context.ServiceClass<RoomLockstepAdmissionPort, "@voltro/RoomLockstepAdmissionPort", {
|
|
480
|
+
prepare(input: RoomLockstepCreation): Effect.Effect<RoomLockstepAdmission, ProtocolError>;
|
|
481
|
+
publish(scope: RoomLockstepRosterScope): Effect.Effect<RoomLockstepAdmission, ProtocolError>;
|
|
482
|
+
load(scope: RoomLockstepRosterScope): Effect.Effect<RoomLockstepAdmission | null, ProtocolError>;
|
|
483
|
+
adopt(scope: RoomLockstepRosterScope, priorEpoch: number, requestId: string): Effect.Effect<RoomLockstepAdmission, ProtocolError>;
|
|
484
|
+
exportSubject(scope: RoomLockstepRosterScope, subjectId: string): Effect.Effect<RoomLockstepCreationExport | null, ProtocolError>;
|
|
485
|
+
erase(scope: RoomLockstepRosterScope, requestId: string): Effect.Effect<void, ProtocolError>;
|
|
486
|
+
}>;
|
|
487
|
+
|
|
488
|
+
declare interface RoomLockstepCreation extends RoomLockstepRosterScope {
|
|
489
|
+
readonly requestId: string;
|
|
490
|
+
readonly creatorSubjectId: string;
|
|
491
|
+
readonly seed: number;
|
|
492
|
+
readonly options: unknown;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
declare interface RoomLockstepCreationExport {
|
|
496
|
+
readonly roomId: string;
|
|
497
|
+
readonly name: string;
|
|
498
|
+
readonly requestId: string;
|
|
499
|
+
readonly seed: number;
|
|
500
|
+
readonly stateSchemaHash: number;
|
|
501
|
+
readonly inputSchemaHash: number;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
declare interface RoomLockstepJournal {
|
|
505
|
+
/** 1: Start roster only. 2: adds `joins`; every tick's matrix covers the roster at that tick. */
|
|
506
|
+
readonly version: 1 | 2;
|
|
507
|
+
readonly roomId: string;
|
|
508
|
+
readonly tenantId: string;
|
|
509
|
+
readonly ownerEpoch: number;
|
|
510
|
+
readonly hostId: string;
|
|
511
|
+
readonly initial: {
|
|
512
|
+
readonly requestId: string;
|
|
513
|
+
readonly seed: number;
|
|
514
|
+
readonly options: string;
|
|
515
|
+
readonly stateSchemaHash: number;
|
|
516
|
+
readonly inputSchemaHash: number;
|
|
517
|
+
readonly players: ReadonlyArray<{
|
|
518
|
+
readonly slot: number;
|
|
519
|
+
readonly playerId: number;
|
|
520
|
+
readonly subjectId: string;
|
|
521
|
+
readonly sessionId: string;
|
|
522
|
+
}>;
|
|
523
|
+
};
|
|
524
|
+
readonly adoption: {
|
|
525
|
+
readonly requestId: string;
|
|
526
|
+
readonly priorEpoch: number;
|
|
527
|
+
} | null;
|
|
528
|
+
readonly ticks: ReadonlyArray<{
|
|
529
|
+
readonly tick: number;
|
|
530
|
+
readonly requestId: string;
|
|
531
|
+
readonly inputs: ReadonlyArray<string>;
|
|
532
|
+
}>;
|
|
533
|
+
readonly joins?: ReadonlyArray<RoomLockstepJournalJoin>;
|
|
534
|
+
readonly digest: string;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
declare interface RoomLockstepJournalAppend extends RoomLockstepRosterScope {
|
|
538
|
+
readonly requestId: string;
|
|
539
|
+
readonly tick: number;
|
|
540
|
+
readonly inputs: ReadonlyArray<Uint8Array>;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
/** A player admitted after Start (late join), effective from `tick`. Version 2 journals only. */
|
|
544
|
+
declare interface RoomLockstepJournalJoin {
|
|
545
|
+
readonly tick: number;
|
|
546
|
+
readonly requestId: string;
|
|
547
|
+
readonly slot: number;
|
|
548
|
+
readonly playerId: number;
|
|
549
|
+
readonly subjectId: string;
|
|
550
|
+
readonly sessionId: string;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
/** Admit a player after Start, effective from `tick` (ahead of every committed matrix). */
|
|
554
|
+
declare interface RoomLockstepJournalJoinInput extends RoomLockstepRosterScope {
|
|
555
|
+
readonly requestId: string;
|
|
556
|
+
readonly tick: number;
|
|
557
|
+
readonly player: RoomLockstepJournalPlayer;
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
declare interface RoomLockstepJournalPlayer {
|
|
561
|
+
readonly slot: number;
|
|
562
|
+
readonly playerId: number;
|
|
563
|
+
readonly actualSession: unknown;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
/** Trusted server capability, not a player RPC or inspection authority. */
|
|
567
|
+
export declare class RoomLockstepJournalPort extends RoomLockstepJournalPort_base {
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
declare const RoomLockstepJournalPort_base: Context.ServiceClass<RoomLockstepJournalPort, "@voltro/RoomLockstepJournalPort", {
|
|
571
|
+
initialize(input: RoomLockstepJournalStart): Effect.Effect<RoomLockstepJournal, ProtocolError>;
|
|
572
|
+
append(input: RoomLockstepJournalAppend): Effect.Effect<RoomLockstepJournal, ProtocolError>;
|
|
573
|
+
/** Late join (version-2 journal). Optional: a journal without it refuses late players. */
|
|
574
|
+
readonly join?: (input: RoomLockstepJournalJoinInput) => Effect.Effect<RoomLockstepJournal, ProtocolError>;
|
|
575
|
+
load(scope: RoomLockstepRosterScope): Effect.Effect<RoomLockstepJournal | null, ProtocolError>;
|
|
576
|
+
adopt(scope: RoomLockstepRosterScope, priorEpoch: number, requestId: string): Effect.Effect<RoomLockstepJournal, ProtocolError>;
|
|
577
|
+
exportSubject(scope: RoomLockstepRosterScope, subjectId: string): Effect.Effect<RoomLockstepJournalSubjectExport, ProtocolError>;
|
|
578
|
+
erase(scope: RoomLockstepRosterScope, requestId: string): Effect.Effect<void, ProtocolError>;
|
|
579
|
+
}>;
|
|
580
|
+
|
|
581
|
+
declare interface RoomLockstepJournalStart extends RoomLockstepRosterScope {
|
|
582
|
+
readonly requestId: string;
|
|
583
|
+
readonly seed: number;
|
|
584
|
+
readonly options: unknown;
|
|
585
|
+
readonly players: ReadonlyArray<RoomLockstepJournalPlayer>;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
declare interface RoomLockstepJournalSubjectExport {
|
|
589
|
+
readonly roomId: string;
|
|
590
|
+
readonly inputs: ReadonlyArray<{
|
|
591
|
+
readonly tick: number;
|
|
592
|
+
readonly playerId: number;
|
|
593
|
+
readonly input: unknown;
|
|
594
|
+
}>;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
declare interface RoomLockstepRecoveryTruth {
|
|
598
|
+
readonly admission: RoomLockstepAdmission;
|
|
599
|
+
readonly journal: RoomLockstepJournal | null;
|
|
600
|
+
readonly options: unknown;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
declare interface RoomLockstepRosterScope {
|
|
604
|
+
readonly roomId: string;
|
|
605
|
+
readonly tenantId: string;
|
|
606
|
+
readonly epoch: number;
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
declare interface RoomLockstepTerminal extends RoomLockstepRosterScope {
|
|
610
|
+
readonly disposition: 'faulted' | 'disposed';
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
/** Outside-tick lifecycle commit after actual Session/native withdrawal. Retains
|
|
614
|
+
* SQL creation and input truth; this is neither a checkpoint nor an erase. */
|
|
615
|
+
export declare class RoomLockstepTerminalPort extends RoomLockstepTerminalPort_base {
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
declare const RoomLockstepTerminalPort_base: Context.ServiceClass<RoomLockstepTerminalPort, "@voltro/RoomLockstepTerminalPort", {
|
|
619
|
+
terminate(input: RoomLockstepTerminal): Effect.Effect<RoomLockstepTerminalReceipt, ProtocolError>;
|
|
620
|
+
}>;
|
|
621
|
+
|
|
622
|
+
declare interface RoomLockstepTerminalReceipt extends RoomLockstepTerminal {
|
|
623
|
+
readonly hostId: string;
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
export declare interface RoomMatchPreparation {
|
|
627
|
+
readonly requestId: string;
|
|
628
|
+
readonly room: string;
|
|
629
|
+
readonly options: unknown;
|
|
630
|
+
readonly pool?: string;
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
export declare interface RoomMatchReceipt {
|
|
634
|
+
readonly roomId: string;
|
|
635
|
+
readonly epoch: number;
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
/** Server-only operator moderation over the installed API binding: finds the owning
|
|
639
|
+
* Host and kicks. Callers admit their own staff authority first (`@voltro/plugin-gm`). */
|
|
640
|
+
export declare interface RoomModerationService {
|
|
641
|
+
kick(input: RoomKickInput): Effect.Effect<RoomKickReceipt, RoomControlError>;
|
|
642
|
+
/** Kicks every session of one Room. */
|
|
643
|
+
close(input: RoomCloseInput): Effect.Effect<RoomKickReceipt, RoomControlError>;
|
|
644
|
+
/** Drain: closes the tenant's live Rooms in Room ID order (pair it with a closed reservation
|
|
645
|
+
* `admission`, or players join again). At most `limit` Rooms per call (default 256, max 1024);
|
|
646
|
+
* pass the receipt's `next` as `after` until it is `null`. */
|
|
647
|
+
closeAll(input: RoomCloseAllInput): Effect.Effect<RoomCloseAllReceipt, RoomControlError>;
|
|
648
|
+
/** Griefing rollback: undoes one player's geometry edits in one chunk of a live Room, as `staff`.
|
|
649
|
+
* The owning Host re-resolves the staff identity and asks the app's rollback policy. Optional:
|
|
650
|
+
* bindings without geometry administration leave it out. */
|
|
651
|
+
readonly rollbackGeometry?: (input: RoomGeometryRollbackInput, staff: Subject) => Effect.Effect<void, RoomControlError>;
|
|
652
|
+
/** One player's access changed before its deadline (a refunded period of game time): asks the
|
|
653
|
+
* reservation admission again now for their connected seats that carry a deadline and kicks
|
|
654
|
+
* them on a refusal. Bindings without an admission check nothing. */
|
|
655
|
+
readonly recheckAccess?: (input: RoomAccessRecheckInput) => Effect.Effect<RoomAccessRecheckReceipt, RoomControlError>;
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
declare interface RoomOrphanResult {
|
|
659
|
+
readonly roomId: string;
|
|
660
|
+
readonly tenantId: string;
|
|
661
|
+
readonly epoch: number;
|
|
662
|
+
readonly state: 'orphaned' | 'disposed';
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
declare interface RoomOutboxCommand {
|
|
666
|
+
readonly requestId: string;
|
|
667
|
+
readonly kind: 'publish' | 'run';
|
|
668
|
+
readonly name: string;
|
|
669
|
+
readonly payload: unknown;
|
|
670
|
+
readonly key?: string;
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
/** SQL ownership observation, never a transport or process-liveness assertion. */
|
|
674
|
+
declare interface RoomOwnershipObservation {
|
|
675
|
+
readonly roomId: string;
|
|
676
|
+
readonly tenantId: string;
|
|
677
|
+
readonly hostId: string | null;
|
|
678
|
+
readonly epoch: number;
|
|
679
|
+
readonly state: 'creating' | 'live' | 'orphaned' | 'faulted' | 'disposed' | 'hibernating' | 'hibernated';
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
/** The pool has no host because it scaled to zero; one is starting. Reserve again after `retryAfterMs`. */
|
|
683
|
+
declare class RoomPoolWaking extends RoomPoolWaking_base {
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
declare const RoomPoolWaking_base: Schema.Class<RoomPoolWaking, Schema.TaggedStruct<"RoomPoolWaking", {
|
|
687
|
+
readonly pool: Schema.String;
|
|
688
|
+
readonly retryAfterMs: Schema.Number;
|
|
689
|
+
}>, YieldableError>;
|
|
690
|
+
|
|
691
|
+
export declare interface RoomPublicEntry {
|
|
692
|
+
readonly id: string;
|
|
693
|
+
readonly name: string;
|
|
694
|
+
readonly metadata: Readonly<Record<string, unknown>>;
|
|
695
|
+
readonly clients: number;
|
|
696
|
+
readonly maxClients: number;
|
|
697
|
+
readonly locked: boolean;
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
declare interface RoomReaperInput {
|
|
701
|
+
readonly hostId?: string | undefined;
|
|
702
|
+
readonly afterHostId?: string | undefined;
|
|
703
|
+
readonly afterRoomId?: string;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
export declare class RoomReaperPort extends RoomReaperPort_base {
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
declare const RoomReaperPort_base: Context.ServiceClass<RoomReaperPort, "@voltro/RoomReaperPort", {
|
|
710
|
+
run(input: RoomReaperInput): Effect.Effect<RoomReaperReport, ProtocolError | BudgetExceeded>;
|
|
711
|
+
}>;
|
|
712
|
+
|
|
713
|
+
declare interface RoomReaperReport {
|
|
714
|
+
readonly hosts: ReadonlyArray<{
|
|
715
|
+
readonly hostId: string;
|
|
716
|
+
readonly state: 'observing' | 'presumed-unreachable' | 'untracked' | 'failed';
|
|
717
|
+
readonly rooms: ReadonlyArray<RoomReaperRoomResult>;
|
|
718
|
+
readonly nextAfterRoom: string | null;
|
|
719
|
+
}>;
|
|
720
|
+
readonly nextAfterHost: string | null;
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
declare interface RoomReaperRoomResult {
|
|
724
|
+
readonly roomId: string;
|
|
725
|
+
readonly tenantId: string;
|
|
726
|
+
readonly state: 'disposed' | 'adopted' | 'waiting-target' | 'waiting-observation' | 'failed';
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
declare type RoomRecoveryClaim = RoomRecoveryClaimBase & ({
|
|
730
|
+
readonly mode: 'state-sync';
|
|
731
|
+
readonly checkpoint: RoomCheckpoint;
|
|
732
|
+
} | {
|
|
733
|
+
readonly mode: 'lockstep';
|
|
734
|
+
readonly checkpoint: null;
|
|
735
|
+
readonly lockstep: RoomLockstepRecoveryTruth;
|
|
736
|
+
});
|
|
737
|
+
|
|
738
|
+
declare interface RoomRecoveryClaimBase {
|
|
739
|
+
readonly listing: RoomDirectoryListing;
|
|
740
|
+
readonly options: unknown;
|
|
741
|
+
readonly private: boolean;
|
|
742
|
+
/** Actual retained durable progress only, never an estimate of lost ticks. */
|
|
743
|
+
readonly recoveredTick: number;
|
|
744
|
+
readonly ticksLost: null;
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
/** Trusted outside-tick control, never a player RPC or a death certificate. */
|
|
748
|
+
export declare class RoomRecoveryPort extends RoomRecoveryPort_base {
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
declare const RoomRecoveryPort_base: Context.ServiceClass<RoomRecoveryPort, "@voltro/RoomRecoveryPort", {
|
|
752
|
+
observe(hostId: string): Effect.Effect<RoomHostObservation, RoomDirectoryError>;
|
|
753
|
+
orphan(hostId: string, roomId: string, tenantId: string, epoch: number): Effect.Effect<RoomOrphanResult, RoomDirectoryError>;
|
|
754
|
+
claim(hostId: string, roomId: string, tenantId: string, priorEpoch: number): Effect.Effect<RoomRecoveryClaim, RoomDirectoryError>;
|
|
755
|
+
}>;
|
|
756
|
+
|
|
757
|
+
/** Browser-safe trusted server contract. No player mutation or storage adapter
|
|
758
|
+
* is imported at value level; replacement services use this exact Tag. */
|
|
759
|
+
export declare class RoomReplayPort extends RoomReplayPort_base {
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
declare const RoomReplayPort_base: Context.ServiceClass<RoomReplayPort, "@voltro/RoomReplayPort", {
|
|
763
|
+
publish(input: RoomReplayPublish): Effect.Effect<RoomStoredReplay, ProtocolError>;
|
|
764
|
+
load(scope: RoomReplayScope): Effect.Effect<Uint8Array, ProtocolError>;
|
|
765
|
+
erase(scope: RoomReplayScope, requestId: string): Effect.Effect<void, ProtocolError>;
|
|
766
|
+
expire(scope: RoomReplayScope, requestId: string): Effect.Effect<void, ProtocolError>;
|
|
767
|
+
subjectRooms(request: PluginPrivacyRequest): Effect.Effect<ReadonlyArray<string>, ProtocolError>;
|
|
768
|
+
eraseSubject(request: PluginPrivacyRequest): Effect.Effect<void, ProtocolError>;
|
|
769
|
+
exportSubject(request: PluginPrivacyRequest, roomId?: string): Effect.Effect<ReadonlyArray<RoomStoredReplay>, ProtocolError>;
|
|
770
|
+
}>;
|
|
771
|
+
|
|
772
|
+
declare interface RoomReplayPublish extends RoomReplayScope {
|
|
773
|
+
readonly roomId: string;
|
|
774
|
+
readonly roomName: string;
|
|
775
|
+
readonly matchId: string;
|
|
776
|
+
readonly participants: ReadonlyArray<string>;
|
|
777
|
+
readonly visibility: 'private' | 'unlisted' | 'public';
|
|
778
|
+
readonly expiresAtMs: number | null;
|
|
779
|
+
readonly bytes: Uint8Array;
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
declare interface RoomReplayScope {
|
|
783
|
+
readonly tenantId: string;
|
|
784
|
+
readonly replayId: string;
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
declare interface RoomReservation {
|
|
788
|
+
readonly roomId: string;
|
|
789
|
+
readonly sessionId: string;
|
|
790
|
+
readonly token: Uint8Array;
|
|
791
|
+
readonly address: string;
|
|
792
|
+
readonly endpoints?: RoomTransportEndpoints | undefined;
|
|
793
|
+
readonly transport: readonly ['ws'] | readonly ['ws', 'wt'];
|
|
794
|
+
readonly expiresAt: number;
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
/** The game-stack reservation seam. Other systems receive the same service
|
|
798
|
+
* when the default SQL/host implementation is replaced by an application. */
|
|
799
|
+
export declare class RoomReservePort extends RoomReservePort_base {
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
declare const RoomReservePort_base: Context.ServiceClass<RoomReservePort, "@voltro/RoomReservePort", {
|
|
803
|
+
reserve(input: ReserveRoomInput, subject: Subject, attributes?: RoomSeatAttributes): Effect.Effect<RoomReservation, RoomControlError>;
|
|
804
|
+
resume(sessionId: string, subject: Subject, attributes?: RoomSeatAttributes): Effect.Effect<RoomReservation, RoomControlError>;
|
|
805
|
+
leave(sessionId: string, token: Uint8Array, subject: Subject): Effect.Effect<{
|
|
806
|
+
readonly ok: true;
|
|
807
|
+
}, RoomControlError>;
|
|
808
|
+
list(name: string, subject: Subject, limit?: number): Effect.Effect<ReadonlyArray<RoomPublicEntry>, RoomControlError>;
|
|
809
|
+
/** A private match Room created once per server request: a retry by any member (each
|
|
810
|
+
* passes the Room guards) returns the same Room. Players then take Seats with `joinById`. */
|
|
811
|
+
readonly prepareMatch?: (input: RoomMatchPreparation, subject: Subject) => Effect.Effect<RoomMatchReceipt, RoomControlError>;
|
|
812
|
+
}>;
|
|
813
|
+
|
|
814
|
+
declare type RoomScalar = string | number | boolean | null;
|
|
815
|
+
|
|
816
|
+
declare interface RoomScheduleSnapshot {
|
|
817
|
+
readonly label: string;
|
|
818
|
+
readonly remainingMs: number;
|
|
819
|
+
readonly intervalMs: number | null;
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
/** New Room reservations are closed for this caller (maintenance, a kill switch...): the app's
|
|
823
|
+
* `admission` refused. `until`: epoch ms when they reopen, if known; `messageKey`: the app's text. */
|
|
824
|
+
declare class RoomsClosed extends RoomsClosed_base {
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
declare const RoomsClosed_base: Schema.Class<RoomsClosed, Schema.TaggedStruct<"RoomsClosed", {
|
|
828
|
+
readonly until: Schema.NullOr<Schema.Number>;
|
|
829
|
+
readonly messageKey: Schema.String;
|
|
830
|
+
}>, YieldableError>;
|
|
831
|
+
|
|
832
|
+
/** App data for one seat, resolved by the API when the seat is reserved (`seatAttributes`) and signed
|
|
833
|
+
* into it; scalars only, at most 16 keys and 2 KiB. */
|
|
834
|
+
declare type RoomSeatAttributes = Readonly<Record<string, RoomScalar>>;
|
|
835
|
+
|
|
836
|
+
/** Allocate/capture this actual owner before admission. A rejected start must
|
|
837
|
+
* retain its true process/resources for stop, including late acquisition.
|
|
838
|
+
* Successful start means OS birth only, never private Ready or Seat admission. */
|
|
839
|
+
export declare interface RoomSidecarNativeProcessPort {
|
|
840
|
+
start(input: RoomSidecarProcessStart): Promise<void>;
|
|
841
|
+
stop(): Promise<RoomSidecarProcessExit>;
|
|
842
|
+
waitClosed(): Promise<RoomSidecarProcessExit>;
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
/** Pure lifecycle declarations only. No native import, socket, process or boot
|
|
846
|
+
* side effect. Not-started differs from an actual observed zero exit. */
|
|
847
|
+
export declare type RoomSidecarProcessExit = {
|
|
848
|
+
readonly kind: 'not-started';
|
|
849
|
+
} | {
|
|
850
|
+
readonly kind: 'exited';
|
|
851
|
+
readonly exitCode: number | null;
|
|
852
|
+
readonly signal: string | null;
|
|
853
|
+
};
|
|
854
|
+
|
|
855
|
+
export declare interface RoomSidecarProcessStart {
|
|
856
|
+
readonly configurationPath: string;
|
|
857
|
+
readonly logPath: string;
|
|
858
|
+
readonly signal: AbortSignal;
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
declare interface RoomSnapshotBlobInput extends RoomSnapshotBlobScope {
|
|
862
|
+
readonly claimId: string;
|
|
863
|
+
readonly bytes: Uint8Array;
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
/** Trusted S2 materialization seam. SQL index/admission must authorize scope;
|
|
867
|
+
* it is never exposed through player intents or the actor tick context. */
|
|
868
|
+
export declare class RoomSnapshotBlobPort extends RoomSnapshotBlobPort_base {
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
declare const RoomSnapshotBlobPort_base: Context.ServiceClass<RoomSnapshotBlobPort, "@voltro/RoomSnapshotBlobPort", {
|
|
872
|
+
recover(input: RoomSnapshotBlobRecoveryInput): Effect.Effect<RoomSnapshotBlobRecovery, ProtocolError>;
|
|
873
|
+
write(input: RoomSnapshotBlobInput): Effect.Effect<RoomSnapshotBlobReference, ProtocolError>;
|
|
874
|
+
read(reference: RoomSnapshotBlobReference, expected: RoomSnapshotBlobScope): Effect.Effect<Uint8Array, ProtocolError>;
|
|
875
|
+
/** Idempotently release this exact claim only; other claims must survive. */
|
|
876
|
+
release(reference: RoomSnapshotBlobReference, expected: RoomSnapshotBlobScope): Effect.Effect<void, ProtocolError>;
|
|
877
|
+
}>;
|
|
878
|
+
|
|
879
|
+
declare type RoomSnapshotBlobRecovery = {
|
|
880
|
+
readonly state: 'pending';
|
|
881
|
+
} | {
|
|
882
|
+
readonly state: 'ready' | 'released';
|
|
883
|
+
readonly reference: RoomSnapshotBlobReference;
|
|
884
|
+
};
|
|
885
|
+
|
|
886
|
+
declare interface RoomSnapshotBlobRecoveryInput extends RoomSnapshotBlobScope {
|
|
887
|
+
readonly claimId: string;
|
|
888
|
+
readonly size: number;
|
|
889
|
+
readonly checksum: string;
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
declare interface RoomSnapshotBlobReference extends RoomSnapshotBlobScope {
|
|
893
|
+
readonly version: 1;
|
|
894
|
+
readonly refId: string;
|
|
895
|
+
readonly claim: string;
|
|
896
|
+
readonly size: number;
|
|
897
|
+
readonly checksum: string;
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
declare interface RoomSnapshotBlobScope {
|
|
901
|
+
readonly tenantId: string;
|
|
902
|
+
readonly roomId: string;
|
|
903
|
+
readonly epoch: number;
|
|
904
|
+
readonly revision: number;
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
/** Inventory of actual implemented exports. `systemContract.test.ts` runs it
|
|
908
|
+
* through systemContractConformance with measured stages, table privacy for all
|
|
909
|
+
* eight tables and the five inspect endpoints. */
|
|
910
|
+
export declare const roomsSystemContractManifest: Readonly<{
|
|
911
|
+
slots: Readonly<{
|
|
912
|
+
'lockstep.reconnectPolicy': {
|
|
913
|
+
defaultExport: string;
|
|
914
|
+
fixtureExport: string;
|
|
915
|
+
};
|
|
916
|
+
'lockstep.playerId': {
|
|
917
|
+
defaultExport: string;
|
|
918
|
+
fixtureExport: string;
|
|
919
|
+
};
|
|
920
|
+
'lockstep.start': {
|
|
921
|
+
defaultExport: string;
|
|
922
|
+
fixtureExport: string;
|
|
923
|
+
};
|
|
924
|
+
'lockstep.seed': {
|
|
925
|
+
defaultExport: string;
|
|
926
|
+
fixtureExport: string;
|
|
927
|
+
};
|
|
928
|
+
'lockstep.inputPrediction': {
|
|
929
|
+
defaultExport: string;
|
|
930
|
+
fixtureExport: string;
|
|
931
|
+
};
|
|
932
|
+
'lockstep.hash': {
|
|
933
|
+
defaultExport: string;
|
|
934
|
+
fixtureExport: string;
|
|
935
|
+
};
|
|
936
|
+
'lockstep.stallPolicy': {
|
|
937
|
+
defaultExport: string;
|
|
938
|
+
fixtureExport: string;
|
|
939
|
+
};
|
|
940
|
+
'lockstep.onDesync': {
|
|
941
|
+
defaultExport: string;
|
|
942
|
+
fixtureExport: string;
|
|
943
|
+
};
|
|
944
|
+
'lockstep.refereeLag': {
|
|
945
|
+
defaultExport: string;
|
|
946
|
+
fixtureExport: string;
|
|
947
|
+
};
|
|
948
|
+
selectHost: {
|
|
949
|
+
defaultExport: string;
|
|
950
|
+
fixtureExport: string;
|
|
951
|
+
};
|
|
952
|
+
'seatToken.sign': {
|
|
953
|
+
defaultExport: string;
|
|
954
|
+
fixtureExport: string;
|
|
955
|
+
};
|
|
956
|
+
'seatToken.verify': {
|
|
957
|
+
defaultExport: string;
|
|
958
|
+
fixtureExport: string;
|
|
959
|
+
};
|
|
960
|
+
view: {
|
|
961
|
+
defaultExport: string;
|
|
962
|
+
fixtureExport: string;
|
|
963
|
+
};
|
|
964
|
+
budgets: {
|
|
965
|
+
defaultExport: string;
|
|
966
|
+
fixtureExport: string;
|
|
967
|
+
};
|
|
968
|
+
reconnectPolicy: {
|
|
969
|
+
defaultExport: string;
|
|
970
|
+
fixtureExport: string;
|
|
971
|
+
};
|
|
972
|
+
spectatorPolicy: {
|
|
973
|
+
defaultExport: string;
|
|
974
|
+
fixtureExport: string;
|
|
975
|
+
};
|
|
976
|
+
snapshotPolicy: {
|
|
977
|
+
defaultExport: string;
|
|
978
|
+
fixtureExport: string;
|
|
979
|
+
};
|
|
980
|
+
snapshotBudget: {
|
|
981
|
+
defaultExport: string;
|
|
982
|
+
fixtureExport: string;
|
|
983
|
+
};
|
|
984
|
+
}>;
|
|
985
|
+
ports: Readonly<{
|
|
986
|
+
hostDrain: {
|
|
987
|
+
tagExport: string;
|
|
988
|
+
fakeLayerExport: string;
|
|
989
|
+
fixtureExport: string;
|
|
990
|
+
};
|
|
991
|
+
lockstepTerminal: {
|
|
992
|
+
tagExport: string;
|
|
993
|
+
fakeLayerExport: string;
|
|
994
|
+
fixtureExport: string;
|
|
995
|
+
};
|
|
996
|
+
lockstepAdmission: {
|
|
997
|
+
tagExport: string;
|
|
998
|
+
fakeLayerExport: string;
|
|
999
|
+
fixtureExport: string;
|
|
1000
|
+
};
|
|
1001
|
+
lockstepJournal: {
|
|
1002
|
+
tagExport: string;
|
|
1003
|
+
fakeLayerExport: string;
|
|
1004
|
+
fixtureExport: string;
|
|
1005
|
+
};
|
|
1006
|
+
worldClientControl: {
|
|
1007
|
+
tagExport: string;
|
|
1008
|
+
fakeLayerExport: string;
|
|
1009
|
+
fixtureExport: string;
|
|
1010
|
+
};
|
|
1011
|
+
reserve: {
|
|
1012
|
+
tagExport: string;
|
|
1013
|
+
fakeLayerExport: string;
|
|
1014
|
+
fixtureExport: string;
|
|
1015
|
+
};
|
|
1016
|
+
subjectPrivacy: {
|
|
1017
|
+
tagExport: string;
|
|
1018
|
+
fakeLayerExport: string;
|
|
1019
|
+
fixtureExport: string;
|
|
1020
|
+
};
|
|
1021
|
+
checkpoint: {
|
|
1022
|
+
tagExport: string;
|
|
1023
|
+
fakeLayerExport: string;
|
|
1024
|
+
fixtureExport: string;
|
|
1025
|
+
};
|
|
1026
|
+
snapshotBlob: {
|
|
1027
|
+
tagExport: string;
|
|
1028
|
+
fakeLayerExport: string;
|
|
1029
|
+
fixtureExport: string;
|
|
1030
|
+
};
|
|
1031
|
+
replay: {
|
|
1032
|
+
tagExport: string;
|
|
1033
|
+
fakeLayerExport: string;
|
|
1034
|
+
fixtureExport: string;
|
|
1035
|
+
};
|
|
1036
|
+
directory: {
|
|
1037
|
+
tagExport: string;
|
|
1038
|
+
fakeLayerExport: string;
|
|
1039
|
+
fixtureExport: string;
|
|
1040
|
+
};
|
|
1041
|
+
application: {
|
|
1042
|
+
tagExport: string;
|
|
1043
|
+
fakeLayerExport: string;
|
|
1044
|
+
fixtureExport: string;
|
|
1045
|
+
};
|
|
1046
|
+
recovery: {
|
|
1047
|
+
tagExport: string;
|
|
1048
|
+
fakeLayerExport: string;
|
|
1049
|
+
fixtureExport: string;
|
|
1050
|
+
};
|
|
1051
|
+
reaper: {
|
|
1052
|
+
tagExport: string;
|
|
1053
|
+
fakeLayerExport: string;
|
|
1054
|
+
fixtureExport: string;
|
|
1055
|
+
};
|
|
1056
|
+
adoption: {
|
|
1057
|
+
tagExport: string;
|
|
1058
|
+
fakeLayerExport: string;
|
|
1059
|
+
fixtureExport: string;
|
|
1060
|
+
};
|
|
1061
|
+
control: {
|
|
1062
|
+
tagExport: string;
|
|
1063
|
+
fakeLayerExport: string;
|
|
1064
|
+
fixtureExport: string;
|
|
1065
|
+
};
|
|
1066
|
+
kick: {
|
|
1067
|
+
tagExport: string;
|
|
1068
|
+
fakeLayerExport: string;
|
|
1069
|
+
fixtureExport: string;
|
|
1070
|
+
};
|
|
1071
|
+
ownerWithdrawal: {
|
|
1072
|
+
tagExport: string;
|
|
1073
|
+
fakeLayerExport: string;
|
|
1074
|
+
fixtureExport: string;
|
|
1075
|
+
};
|
|
1076
|
+
externalWithdrawal: {
|
|
1077
|
+
tagExport: string;
|
|
1078
|
+
fakeLayerExport: string;
|
|
1079
|
+
fixtureExport: string;
|
|
1080
|
+
};
|
|
1081
|
+
erasure: {
|
|
1082
|
+
tagExport: string;
|
|
1083
|
+
fakeLayerExport: string;
|
|
1084
|
+
fixtureExport: string;
|
|
1085
|
+
};
|
|
1086
|
+
}>;
|
|
1087
|
+
events: readonly string[];
|
|
1088
|
+
}>;
|
|
1089
|
+
|
|
1090
|
+
declare interface RoomStoredReplay {
|
|
1091
|
+
readonly replayId: string;
|
|
1092
|
+
readonly roomId: string;
|
|
1093
|
+
readonly roomName: string;
|
|
1094
|
+
readonly matchId: string;
|
|
1095
|
+
readonly visibility: RoomReplayPublish['visibility'];
|
|
1096
|
+
readonly expiresAtMs: number | null;
|
|
1097
|
+
readonly durationMs: number;
|
|
1098
|
+
readonly size: number;
|
|
1099
|
+
readonly schemaHash: number;
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
/** Coordinated state/command/session withdrawal, not raw seat-row deletion.
|
|
1103
|
+
* The trusted caller authorizes the target and owns durable request recovery. */
|
|
1104
|
+
export declare class RoomSubjectPrivacyPort extends RoomSubjectPrivacyPort_base {
|
|
1105
|
+
}
|
|
1106
|
+
|
|
1107
|
+
declare const RoomSubjectPrivacyPort_base: Context.ServiceClass<RoomSubjectPrivacyPort, "@voltro/RoomSubjectPrivacyPort", {
|
|
1108
|
+
erase(request: PluginPrivacyRequest): Effect.Effect<void, ProtocolError>;
|
|
1109
|
+
export(request: PluginPrivacyRequest): Effect.Effect<unknown, ProtocolError>;
|
|
1110
|
+
}>;
|
|
1111
|
+
|
|
1112
|
+
/** Public routing metadata only. Neither endpoint conveys seat authority. */
|
|
1113
|
+
declare interface RoomTransportEndpoints {
|
|
1114
|
+
readonly ws: string;
|
|
1115
|
+
readonly wt?: string | undefined;
|
|
1116
|
+
/** Base64 SHA-256 of a short-lived development certificate the browser pins
|
|
1117
|
+
* through `serverCertificateHashes`. Absent for a publicly trusted certificate. */
|
|
1118
|
+
readonly wtCertificateHash?: string | undefined;
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
declare interface RoomWorldReceipt {
|
|
1122
|
+
readonly requestId: string;
|
|
1123
|
+
readonly operation: 'enter' | 'exit' | 'ghost';
|
|
1124
|
+
readonly fingerprint: string;
|
|
1125
|
+
readonly projection?: {
|
|
1126
|
+
readonly entity: unknown;
|
|
1127
|
+
readonly location: WorldEntityLocation;
|
|
1128
|
+
readonly expiresAt?: number;
|
|
1129
|
+
};
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
declare class SeatExpired extends SeatExpired_base {
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
declare const SeatExpired_base: Schema.Class<SeatExpired, Schema.TaggedStruct<"SeatExpired", {
|
|
1136
|
+
readonly sessionId: Schema.String;
|
|
1137
|
+
}>, YieldableError>;
|
|
1138
|
+
|
|
1139
|
+
declare interface WorldClientControl {
|
|
1140
|
+
/** Own active transition for the caller's current connection; no history or preparation. */
|
|
1141
|
+
readonly pending?: (input: {
|
|
1142
|
+
readonly entityId: string;
|
|
1143
|
+
readonly roomId: string;
|
|
1144
|
+
}, subject: Subject) => Effect.Effect<WorldClientReceipt | null, ProtocolError>;
|
|
1145
|
+
readonly join?: (worldId: string, subject: Subject) => Effect.Effect<WorldJoinResult, ProtocolError>;
|
|
1146
|
+
readonly follow?: (requestId: string, subject: Subject) => Effect.Effect<RoomReservation, ProtocolError>;
|
|
1147
|
+
readonly reservation?: (requestId: string, subject: Subject) => Effect.Effect<RoomReservation, ProtocolError>;
|
|
1148
|
+
prepare(requestId: string, intention: WorldTransitionRequest, subject: Subject): Effect.Effect<WorldClientTicket, ProtocolError | WorldTransitionCooldown>;
|
|
1149
|
+
observe(requestId: string, subject: Subject): Effect.Effect<WorldClientReceipt, ProtocolError>;
|
|
1150
|
+
commit(ticket: WorldClientTicket, subject: Subject): Effect.Effect<WorldClientReceipt, ProtocolError>;
|
|
1151
|
+
cancel(requestId: string, subject: Subject): Effect.Effect<WorldClientReceipt, ProtocolError>;
|
|
1152
|
+
}
|
|
1153
|
+
|
|
1154
|
+
/** Authenticated API seam; default physical/SQL implementation stays explicit. */
|
|
1155
|
+
export declare class WorldClientControlPort extends WorldClientControlPort_base {
|
|
1156
|
+
}
|
|
1157
|
+
|
|
1158
|
+
declare const WorldClientControlPort_base: Context.ServiceClass<WorldClientControlPort, "@voltro/WorldClientControlPort", WorldClientControl>;
|
|
1159
|
+
|
|
1160
|
+
declare interface WorldClientLocation {
|
|
1161
|
+
readonly worldId: string;
|
|
1162
|
+
readonly cellId: string;
|
|
1163
|
+
readonly layer: number;
|
|
1164
|
+
readonly roomId: string;
|
|
1165
|
+
readonly epoch: number;
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
declare interface WorldClientReceipt {
|
|
1169
|
+
readonly ticket: WorldClientTicket;
|
|
1170
|
+
readonly phase: 'prepared' | 'committed' | 'settled' | 'rolledBack';
|
|
1171
|
+
readonly entityRevision: number | null;
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1174
|
+
/** Authenticated server preparation, never player-supplied authority or state. */
|
|
1175
|
+
declare interface WorldClientTicket {
|
|
1176
|
+
readonly requestId: string;
|
|
1177
|
+
readonly transitionId: string;
|
|
1178
|
+
readonly mode: 'seamless' | 'portal';
|
|
1179
|
+
readonly target: WorldClientLocation;
|
|
1180
|
+
}
|
|
1181
|
+
|
|
1182
|
+
declare interface WorldEntityLocation {
|
|
1183
|
+
readonly worldId: string;
|
|
1184
|
+
readonly zoneId: string;
|
|
1185
|
+
readonly at: WorldPoint;
|
|
1186
|
+
readonly layer: number;
|
|
1187
|
+
readonly roomId: string;
|
|
1188
|
+
readonly epoch: number;
|
|
1189
|
+
}
|
|
1190
|
+
|
|
1191
|
+
declare interface WorldJoinResult {
|
|
1192
|
+
/** The server-owned entity this player controls (`intention.entityId` of later moves). */
|
|
1193
|
+
readonly entityId: string;
|
|
1194
|
+
readonly reservation: RoomReservation;
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
declare type WorldPoint = readonly [x: number, y: number];
|
|
1198
|
+
|
|
1199
|
+
/** A World transition asked for inside the World's `transitionCooldownMs`; retry after `retryAfterMs`. */
|
|
1200
|
+
declare class WorldTransitionCooldown extends WorldTransitionCooldown_base {
|
|
1201
|
+
}
|
|
1202
|
+
|
|
1203
|
+
declare const WorldTransitionCooldown_base: Schema.Class<WorldTransitionCooldown, Schema.TaggedStruct<"WorldTransitionCooldown", {
|
|
1204
|
+
readonly retryAfterMs: Schema.Number;
|
|
1205
|
+
}>, YieldableError>;
|
|
1206
|
+
|
|
1207
|
+
declare type WorldTransitionRequest = typeof WorldTransitionRequestSchema.Type;
|
|
1208
|
+
|
|
1209
|
+
declare const WorldTransitionRequestSchema: Schema.Struct<{
|
|
1210
|
+
readonly entityId: Schema.String;
|
|
1211
|
+
readonly target: Schema.Union<readonly [Schema.Struct<{
|
|
1212
|
+
readonly kind: Schema.Literal<"cell">;
|
|
1213
|
+
readonly zone: Schema.String;
|
|
1214
|
+
readonly at: Schema.Tuple<readonly [Schema.Number, Schema.Number]>;
|
|
1215
|
+
}>, Schema.Struct<{
|
|
1216
|
+
readonly kind: Schema.Literal<"zone">;
|
|
1217
|
+
readonly zone: Schema.String;
|
|
1218
|
+
readonly at: Schema.Tuple<readonly [Schema.Number, Schema.Number]>;
|
|
1219
|
+
}>, Schema.Struct<{
|
|
1220
|
+
readonly kind: Schema.Literal<"layer">;
|
|
1221
|
+
readonly layer: Schema.Number;
|
|
1222
|
+
}>, Schema.Struct<{
|
|
1223
|
+
readonly kind: Schema.Literal<"world">;
|
|
1224
|
+
readonly world: Schema.String;
|
|
1225
|
+
readonly spawn: Schema.String;
|
|
1226
|
+
}>, Schema.Struct<{
|
|
1227
|
+
readonly kind: Schema.Literal<"instance">;
|
|
1228
|
+
readonly instance: Schema.String;
|
|
1229
|
+
readonly group: Schema.String;
|
|
1230
|
+
}>, Schema.Struct<{
|
|
1231
|
+
readonly kind: Schema.Literal<"return">;
|
|
1232
|
+
}>]>;
|
|
1233
|
+
readonly options: Schema.Struct<{
|
|
1234
|
+
readonly mode: Schema.Literals<readonly ["auto", "seamless", "portal"]>;
|
|
1235
|
+
readonly reason: Schema.String;
|
|
1236
|
+
readonly crossPool: Schema.Boolean;
|
|
1237
|
+
readonly returnTo: Schema.optional<Schema.Literal<"here">>;
|
|
1238
|
+
}>;
|
|
1239
|
+
}>;
|
|
1240
|
+
|
|
1241
|
+
export { }
|