Script Node Declarations
packages/script-nodes/src/index.ts:scriptNodeDeclarations, packages/script-codegen/src/views/index.ts:SCRIPT_VIEWS, packages/script-codegen/src/surface/grammarReference.ts:GESSASCRIPT_GRAMMAR_REFERENCE, packages/script-nodes/src/fieldSchemas.ts:PHYSICS_BODY_COMMAND_PRESENTATION.Canonical Script IR node declarations live in @game-platform/script-nodes and are consumed by runtime, codegen, generated SDK declarations, AI tooling, and frontend visual authoring.
This package is the single declaration source for script visual nodes. It has no server or runtime dependencies and is safe for frontend imports.
Declaration catalog hash: sha256:468b13a39fc8b6669aed3440b538a3da66303c349cd8843c300235cd63ee1a2f.
Script source and language views
| View | Editing | Description |
|---|---|---|
| Python-style | Editable | The canonical form. This is the view you can edit. |
| Lua-style | Read-only | Lua-shaped reading of this script. Read-only. |
| C#-style | Read-only | C#-shaped reading of this script. Read-only. |
| TypeScript-style | Read-only | TypeScript-shaped reading of this script. Read-only. |
- GessaScript is an INDENTATION language: not TypeScript, not JSON. No braces around blocks, no semicolons, no imports, no
host,functionorsetkeywords. A block opens with:and its body is indented 4 spaces. - Line 1 is
script <scriptKey>. Top level accepts only:var <name> = <literal>(mutable),const <name> = <literal>,event <key>(<params>)(declares a custom event; no body),[export] [pure] def <name>(<params>) [-> <type>]:(a function; call it ONLY as a statementname(args), never inside an expression), and handlers, which are a@on....decorator on the line directly above adef. - Handler heads: @on.start over def start():; @on.tick over def tick(deltaSeconds): (name the binding whatever you like); @on.action("<actionKey>") over def action_<key>():; @on.timer("<timerKey>") over def timer_<key>():; @on.event("<customEventKey>") over def event_<key>(<bindings>):; @on.init over def init():; @on.frame over def frame(t, dt):; @on.resize over def resize(w, h):. Every other engine event is
@on.runtime("<Event>")where <Event> is one of: onCharacterRemoved, onCharacterSpawned, onMatchEnded, onNetworkMessage, onPanelAction, onPhaseEnter, onPhaseExit, onPlayerJoined, onPlayerLeft, onPurchaseFulfilled, onTriggerEnter, onTriggerExit, onWidgetPress.@on.event("k")is a CUSTOM event you declared, so@on.event("trigger_enter")is NOT the trigger; write@on.runtime("onTriggerEnter"). The name under a decorator is normalized on save, so write the derived one. - Statements:
let x = <expr>(a local, assigned ONCE; declare avarat the top of the script for mutable state); assignmentx = <expr>,x += 1(also -= *= /=);if <cond>:/elif <cond>:/else:;for item in <array> [limit n]:;while <cond> [limit n]:;match <expr>:withcase <value>:arms and acase _:catch-all;return <expr>;break;continue;pass; dispatch<eventKey>.emit(<args>); and callsNamespace.function(args)orname(args)on their own line. - Expressions: literals (numbers, strings, True, False, [arrays], { objects }), member access
a.b, conditional expressionsa if condition else b, and operators:or,and,not,==!=,<<=>>=,+-,*/%,??, unary-. There are NO helper calls for arithmetic or comparison:add(a, b)andgt(a, 0)do not exist (GS_ELAB_UNKNOWN_HOST); writea + banda > 0. There are also no classes, imports, lambdas, comprehensions, exceptions or async: the parser answers each of those with the form to use instead. - Engine functions are called BARE by dotted path: the hosts listed below (e.g.
Debug.log("x")) and the core operations array.length(...), array.mutate.<push|addUnique|insert|removeAt|removeValue|clear|set|unique|reverse>(...), bitwise.<and|or|xor|not|shl|shr|ushr>(...), entity.id(...), event.key(...), math.<min|max|abs|floor|ceil|round|clamp|sqrt|pow|sign|lerp|sin|cos|tan|asin|acos|atan|atan2|exp|ln|log10|log2|deg2rad|rad2deg|wrapAngle|smoothstep|imul32>(...), math.remap(...), object.<set|merge|keys|entries|has|delete>(...), quat.<make|multiply|slerp|fromEuler|toEuler|lookAt|rotateVector|inverse>(...), string.<concat|length|format|contains|split|upper|lower|replace|substring|trim|startsWith|endsWith|indexOf>(...), vec3.<add|sub|scale|dot|cross|length|normalize|distance|lerp|make|breakX|breakY|breakZ|reflect|moveTowards|project|angleBetween|clampLength>(...).
script script.relic.pickup
var collected = 0
const goal = 3
var armed = False
event scored(points: number)
def announce(points: number):
Debug.log("scored", { value: points })
@on.start
def start():
armed = True
@on.action("player.reset")
def action_player_reset():
collected = 0
@on.runtime("onTriggerEnter")
def runtime_on_trigger_enter():
collected += 1
let remaining = math.max(0, goal - collected)
if collected >= goal:
scored.emit(collected)
elif remaining == 1:
Debug.log("one more")
else:
Debug.log("collected", { value: collected })
@on.event("scored")
def event_scored(points):
announce(points)
@on.tick
def tick(dt):
match collected:
case 0:
Debug.log("empty")
case _:
if Entity.hasTag("relic") and dt > 0:
Debug.log("relic")
Counts
| Kind | Count |
|---|---|
| event | 21 |
| core | 53 |
| host | 112 |
| total | 186 |
Categories
| Category | Count | Nodes |
|---|---|---|
| Audio | 5 | host.audio.play, host.audio.play_spatial, host.audio.set_background_music, host.audio.set_volume, host.audio.stop |
| Components | 7 | core.component.patch, core.component.read, host.entity.add_component, host.entity.patch_component, host.entity.read_component, host.entity.remove_component, host.entity.replace_component |
| Control | 16 | core.array.for_each, core.bounded.for, core.bounded.while, core.flow.break, core.flow.continue, core.flow.do_n, core.flow.do_once, core.flow.flip_flop, core.flow.gate, core.flow.multi_gate, core.flow.return, core.flow.timer.after, core.flow.timer.cancel, core.if, core.sequence, core.switch |
| Debug | 1 | host.debug.log |
| Effects | 3 | core.host.call, host.fx.decal, host.fx.particle_burst |
| Events | 25 | core.event.key, core.event.payload.get, event.action, event.character_removed, event.character_spawned, event.custom, event.frame, event.init, event.match_ended, event.network_message, event.panel_action, event.phase, event.phase_exit, event.player_joined, event.player_left, event.purchase_fulfilled, event.resize, event.start, event.tick, event.timer, event.trigger, event.trigger_exit, event.widget_press, host.events.emit, host.network.send_message |
| Match & Players | 15 | host.inventory.grant, host.match.add_score, host.match.get_score, host.match.get_state, host.match.patch_objective, host.match.set_phase, host.player.eliminate, host.player.possess, host.player.release, host.player.spawn_character, host.players.get, host.players.list, host.room.get_players, host.room.get_state, host.team.get_assignment |
| Persistence | 9 | host.warehouse.append, host.warehouse.create, host.warehouse.delete, host.warehouse.get, host.warehouse.increment, host.warehouse.query, host.warehouse.set, host.warehouse.transform, host.warehouse.update |
| Physics | 19 | host.navigation.find_path, host.navigation.is_reachable, host.navigation.nearest_point, host.navigation.raycast, host.navigation.steer_toward, host.physics.command, host.physics.occupancy_query, host.physics.overlap_test, host.physics.raycast, host.physics.shapecast, host.terrain.height_at, host.terrain.normal_at, host.terrain.raycast_down, host.terrain.sample_layer_weights, host.terrain.slope_at, host.tween.cancel, host.tween.start, host.water.is_submerged, host.water.surface_level_at |
| Platform | 10 | host.camera.add_look_input, host.camera.set_look_sensitivity, host.camera.set_pitch_clamp, host.camera.set_view_target, host.commerce.owns, host.commerce.prompt_purchase, host.platform.exit_fullscreen, host.platform.exit_pointer_lock, host.platform.request_fullscreen, host.platform.request_pointer_lock |
| UI | 3 | host.ui.close_panel, host.ui.open_panel, host.ui.set_widget_value |
| Values | 50 | core.arithmetic, core.array.first, core.array.get, core.array.length, core.array.mutate, core.array.query, core.array.reduce, core.array.transform, core.bitwise, core.boolean, core.comparison, core.entity.id, core.expression.codebox, core.get, core.let, core.map, core.math, core.math.remap, core.not, core.object, core.quat, core.record.get, core.select, core.set, core.string, core.value.array, core.value.assert, core.value.cast, core.value.coerce, core.value.literal, core.value.object, core.vec3, host.program.input_actions, host.program.input_bundle, host.program.input_flags, host.program.param, host.program.param_count, host.random.bool, host.random.gaussian, host.random.int, host.random.next, host.random.pick, host.random.point_in_circle, host.random.point_in_sphere, host.random.range, host.random.seeded, host.random.shuffle, host.random.sign, host.random.unit_vector, host.random.weighted_pick |
| World | 23 | host.entity.ancestors, host.entity.children, host.entity.descendants, host.entity.detach, host.entity.has_tag, host.entity.parent, host.entity.remove_tag, host.entity.set_name, host.entity.set_owner, host.entity.set_parent, host.entity.set_tag, host.entity.world_position, host.entity.world_rotation, host.world.despawn, host.world.entity_has_tag, host.world.find, host.world.query, host.world.set_entity_owner, host.world.set_entity_tag, host.world.spawn, host.world.spawn_many, host.world.spawn_prefab, host.world.teleport_player |
SDK Hosts
| Host | Node | Category | SDK path | Deterministic | Metered | Risk | Effect tags | Permissions |
|---|---|---|---|---|---|---|---|---|
Audio.play | host.audio.play | Audio | ctx.audio.play | no | yes | effect | audioEffect, networked, nonRollbackable | audio:effect |
Audio.playSpatial | host.audio.play_spatial | Audio | ctx.audio.playSpatial | no | yes | effect | audioEffect, networked, nonRollbackable | audio:effect |
Audio.setBackgroundMusic | host.audio.set_background_music | Audio | ctx.audio.setBackgroundMusic | no | yes | effect | audioEffect, nonRollbackable | audio:effect |
Audio.setVolume | host.audio.set_volume | Audio | ctx.audio.setVolume | yes | yes | effect | audioEffect | audio:effect |
Audio.stop | host.audio.stop | Audio | ctx.audio.stop | yes | yes | effect | audioEffect | audio:effect |
Camera.addLookInput | host.camera.add_look_input | Platform | ctx.camera.addLookInput | yes | yes | effect | platformRequest, nonRollbackable, requiresAuthority | camera:write |
Camera.setLookSensitivity | host.camera.set_look_sensitivity | Platform | ctx.camera.setLookSensitivity | yes | yes | effect | platformRequest, nonRollbackable, requiresAuthority | camera:write |
Camera.setPitchClamp | host.camera.set_pitch_clamp | Platform | ctx.camera.setPitchClamp | yes | yes | effect | platformRequest, nonRollbackable, requiresAuthority | camera:write |
Camera.setViewTarget | host.camera.set_view_target | Platform | ctx.camera.setViewTarget | yes | yes | effect | platformRequest, nonRollbackable, requiresAuthority | camera:write |
Commerce.owns | host.commerce.owns | Platform | ctx.commerce.owns | yes | yes | read | readState | commerce:read |
Commerce.promptPurchase | host.commerce.prompt_purchase | Platform | ctx.commerce.promptPurchase | yes | yes | effect | platformRequest, nonRollbackable, requiresAuthority | commerce:request |
Debug.log | host.debug.log | Debug | ctx.log | no | no | read | emitEvent | debug:write |
Entity.addComponent | host.entity.add_component | Components | ctx.entity.addComponent | yes | yes | write | writeState, writeWorld, requiresAuthority | component:write |
Entity.ancestors | host.entity.ancestors | World | ctx.entity.ancestors | yes | yes | read | readWorld, readState | world:read |
Entity.children | host.entity.children | World | ctx.entity.children | yes | yes | read | readWorld, readState | world:read |
Entity.descendants | host.entity.descendants | World | ctx.entity.descendants | yes | yes | read | readWorld, readState | world:read |
Entity.detach | host.entity.detach | World | ctx.entity.detach | yes | yes | write | writeState, writeWorld, requiresAuthority | entity:write |
Entity.hasTag | host.entity.has_tag | World | ctx.entity.hasTag | yes | yes | read | readWorld, readState | world:read |
Entity.parent | host.entity.parent | World | ctx.entity.parent | yes | yes | read | readWorld, readState | world:read |
Entity.patchComponent | host.entity.patch_component | Components | ctx.entity.patchComponent | yes | yes | write | writeState, writeWorld, requiresAuthority | component:write |
Entity.readComponent | host.entity.read_component | Components | ctx.entity.readComponent | yes | yes | read | readState, readWorld | component:read |
Entity.removeComponent | host.entity.remove_component | Components | ctx.entity.removeComponent | yes | yes | write | writeState, writeWorld, requiresAuthority | component:write |
Entity.removeTag | host.entity.remove_tag | World | ctx.entity.removeTag | yes | yes | write | writeState, writeWorld, requiresAuthority | entity:write |
Entity.replaceComponent | host.entity.replace_component | Components | ctx.entity.replaceComponent | yes | yes | write | writeState, writeWorld, requiresAuthority | component:write |
Entity.setName | host.entity.set_name | World | ctx.entity.setName | yes | yes | write | writeState, writeWorld, requiresAuthority | entity:write |
Entity.setOwner | host.entity.set_owner | World | ctx.entity.setOwner | yes | yes | effect | writeWorld, writeState, requiresAuthority | entity:write |
Entity.setParent | host.entity.set_parent | World | ctx.entity.setParent | yes | yes | write | writeState, writeWorld, requiresAuthority | entity:write |
Entity.setTag | host.entity.set_tag | World | ctx.entity.setTag | yes | yes | write | writeState, writeWorld, requiresAuthority | entity:write |
Entity.worldPosition | host.entity.world_position | World | ctx.entity.worldPosition | yes | yes | read | readWorld, readState | world:read |
Entity.worldRotation | host.entity.world_rotation | World | ctx.entity.worldRotation | yes | yes | read | readWorld, readState | world:read |
Events.emit | host.events.emit | Events | ctx.events.emit | yes | yes | effect | emitEvent | event:emit |
Fx.decal | host.fx.decal | Effects | ctx.fx.decal | no | yes | effect | networked, nonRollbackable | fx:effect |
Fx.particleBurst | host.fx.particle_burst | Effects | ctx.fx.particleBurst | no | yes | effect | networked, nonRollbackable | fx:effect |
Inventory.grant | host.inventory.grant | Match & Players | ctx.inventory.grant | yes | yes | effect | writeState, emitEvent, durable, requiresAuthority | inventory:write |
Match.addScore | host.match.add_score | Match & Players | ctx.match.addScore | yes | yes | effect | writeState, emitEvent, requiresAuthority | match:write |
Match.getScore | host.match.get_score | Match & Players | ctx.match.getScore | yes | yes | read | readState | match:read |
Match.getState | host.match.get_state | Match & Players | ctx.match.getState | yes | yes | read | readState | match:read |
Match.patchObjective | host.match.patch_objective | Match & Players | ctx.match.patchObjective | yes | yes | effect | writeState, emitEvent, requiresAuthority | match:write |
Match.setPhase | host.match.set_phase | Match & Players | ctx.match.setPhase | yes | yes | effect | writeState, emitEvent, requiresAuthority | match:write |
Navigation.findPath | host.navigation.find_path | Physics | ctx.navigation.findPath | yes | yes | read | readWorld | navigation:query |
Navigation.isReachable | host.navigation.is_reachable | Physics | ctx.navigation.isReachable | yes | yes | read | readWorld | navigation:query |
Navigation.nearestPoint | host.navigation.nearest_point | Physics | ctx.navigation.nearestPoint | yes | yes | read | readWorld | navigation:query |
Navigation.raycast | host.navigation.raycast | Physics | ctx.navigation.raycast | yes | yes | read | readWorld | navigation:query |
Navigation.steerToward | host.navigation.steer_toward | Physics | ctx.navigation.steerToward | yes | yes | read | readWorld | navigation:query |
Network.sendMessage | host.network.send_message | Events | ctx.network.sendMessage | yes | yes | effect | emitEvent, networked, nonRollbackable | network:send |
Physics.command | host.physics.command | Physics | ctx.physics.command | yes | yes | effect | physicsCommand, writeWorld, requiresAuthority | physics:write |
Physics.occupancyQuery | host.physics.occupancy_query | Physics | ctx.physics.occupancyQuery | yes | yes | read | readWorld | physics:query |
Physics.overlapTest | host.physics.overlap_test | Physics | ctx.physics.overlapTest | yes | yes | read | readWorld | physics:query |
Physics.raycast | host.physics.raycast | Physics | ctx.physics.raycast | yes | yes | read | readWorld | physics:query |
Physics.shapecast | host.physics.shapecast | Physics | ctx.physics.shapecast | yes | yes | read | readWorld | physics:query |
Platform.exitFullscreen | host.platform.exit_fullscreen | Platform | ctx.platform.exitFullscreen | yes | yes | effect | platformRequest, nonRollbackable, requiresAuthority | platform:request |
Platform.exitPointerLock | host.platform.exit_pointer_lock | Platform | ctx.platform.exitPointerLock | yes | yes | effect | platformRequest, nonRollbackable, requiresAuthority | platform:request |
Platform.requestFullscreen | host.platform.request_fullscreen | Platform | ctx.platform.requestFullscreen | yes | yes | effect | platformRequest, nonRollbackable, requiresAuthority | platform:request |
Platform.requestPointerLock | host.platform.request_pointer_lock | Platform | ctx.platform.requestPointerLock | yes | yes | effect | platformRequest, nonRollbackable, requiresAuthority | platform:request |
Player.eliminate | host.player.eliminate | Match & Players | ctx.players.eliminate | yes | yes | effect | writeWorld, requiresAuthority | room:write |
Player.possess | host.player.possess | Match & Players | ctx.players.possess | yes | yes | effect | writeWorld, requiresAuthority | room:write |
Player.release | host.player.release | Match & Players | ctx.players.release | yes | yes | effect | writeWorld, requiresAuthority | room:write |
Player.spawnCharacter | host.player.spawn_character | Match & Players | ctx.players.spawnCharacter | yes | yes | effect | spawnEntity, writeWorld, requiresAuthority | room:write |
Players.get | host.players.get | Match & Players | ctx.players.get | yes | no | read | readWorld | room:read |
Players.list | host.players.list | Match & Players | ctx.players.list, ctx.room.getPlayers | yes | no | read | readWorld | room:read |
Program.inputActions | host.program.input_actions | Values | ctx.program.inputActions | yes | no | read | pure | None |
Program.inputBundle | host.program.input_bundle | Values | ctx.program.inputBundle | yes | no | read | pure | None |
Program.inputFlags | host.program.input_flags | Values | ctx.program.inputFlags | yes | no | read | pure | None |
Program.param | host.program.param | Values | ctx.program.param | yes | no | read | pure | None |
Program.paramCount | host.program.param_count | Values | ctx.program.paramCount | yes | no | read | pure | None |
Random.bool | host.random.bool | Values | ctx.random.bool | yes | no | read | pure | random:read |
Random.gaussian | host.random.gaussian | Values | ctx.random.gaussian | yes | no | read | pure | random:read |
Random.int | host.random.int | Values | ctx.random.int | yes | no | read | pure | random:read |
Random.next | host.random.next | Values | ctx.random | yes | no | read | pure | random:read |
Random.pick | host.random.pick | Values | ctx.random.pick | yes | no | read | pure | random:read |
Random.pointInCircle | host.random.point_in_circle | Values | ctx.random.pointInCircle | yes | no | read | pure | random:read |
Random.pointInSphere | host.random.point_in_sphere | Values | ctx.random.pointInSphere | yes | no | read | pure | random:read |
Random.range | host.random.range | Values | ctx.random.range | yes | no | read | pure | random:read |
Random.seeded | host.random.seeded | Values | ctx.random.seeded | yes | no | read | pure | random:read |
Random.shuffle | host.random.shuffle | Values | ctx.random.shuffle | yes | no | read | pure | random:read |
Random.sign | host.random.sign | Values | ctx.random.sign | yes | no | read | pure | random:read |
Random.unitVector | host.random.unit_vector | Values | ctx.random.unitVector | yes | no | read | pure | random:read |
Random.weightedPick | host.random.weighted_pick | Values | ctx.random.weightedPick | yes | no | read | pure | random:read |
Room.getPlayers | host.room.get_players | Match & Players | ctx.room.getPlayers | yes | yes | read | readState, readWorld | room:read |
Room.getState | host.room.get_state | Match & Players | ctx.room.getState | yes | yes | read | readState, readWorld | room:read |
Team.getAssignment | host.team.get_assignment | Match & Players | ctx.team.getAssignment | yes | yes | read | readState, readWorld | team:read |
Terrain.heightAt | host.terrain.height_at | Physics | ctx.terrain.heightAt | yes | yes | read | readWorld | terrain:query |
Terrain.normalAt | host.terrain.normal_at | Physics | ctx.terrain.normalAt | yes | yes | read | readWorld | terrain:query |
Terrain.raycastDown | host.terrain.raycast_down | Physics | ctx.terrain.raycastDown | yes | yes | read | readWorld | terrain:query |
Terrain.sampleLayerWeights | host.terrain.sample_layer_weights | Physics | ctx.terrain.sampleLayerWeights | yes | yes | read | readWorld | terrain:query |
Terrain.slopeAt | host.terrain.slope_at | Physics | ctx.terrain.slopeAt | yes | yes | read | readWorld | terrain:query |
Tween.cancel | host.tween.cancel | Physics | ctx.tween.cancel | yes | yes | effect | writeWorld, requiresAuthority | tween:write |
Tween.start | host.tween.start | Physics | ctx.tween.start | yes | yes | effect | writeWorld, requiresAuthority | tween:write |
UI.closePanel | host.ui.close_panel | UI | ctx.ui.closePanel | no | yes | effect | uiEffect, nonRollbackable | ui:effect |
UI.openPanel | host.ui.open_panel | UI | ctx.ui.openPanel | no | yes | effect | uiEffect, nonRollbackable | ui:effect |
UI.setWidgetValue | host.ui.set_widget_value | UI | ctx.ui.setWidgetValue | no | yes | effect | uiEffect, nonRollbackable | ui:effect |
Warehouse.append | host.warehouse.append | Persistence | ctx.warehouse.append | yes | yes | write | writeState, durable, requiresAuthority | warehouse:write |
Warehouse.create | host.warehouse.create | Persistence | ctx.warehouse.create | yes | yes | write | writeState, durable, requiresAuthority | warehouse:write |
Warehouse.delete | host.warehouse.delete | Persistence | ctx.warehouse.delete | yes | yes | write | writeState, durable, requiresAuthority | warehouse:write |
Warehouse.get | host.warehouse.get | Persistence | ctx.warehouse.get | yes | yes | read | readState, durable | warehouse:read |
Warehouse.increment | host.warehouse.increment | Persistence | ctx.warehouse.increment | yes | yes | write | writeState, durable, requiresAuthority | warehouse:write |
Warehouse.query | host.warehouse.query | Persistence | ctx.warehouse.query | yes | yes | read | readState, durable | warehouse:read |
Warehouse.set | host.warehouse.set | Persistence | ctx.warehouse.set | yes | yes | write | writeState, durable, requiresAuthority | warehouse:write |
Warehouse.transform | host.warehouse.transform | Persistence | ctx.warehouse.transform | yes | yes | write | writeState, durable, requiresAuthority | warehouse:write |
Warehouse.update | host.warehouse.update | Persistence | ctx.warehouse.update | yes | yes | write | writeState, durable, requiresAuthority | warehouse:write |
Water.isSubmerged | host.water.is_submerged | Physics | ctx.water.isSubmerged | yes | yes | read | readWorld | water:query |
Water.surfaceLevelAt | host.water.surface_level_at | Physics | ctx.water.surfaceLevelAt | yes | yes | read | readWorld | water:query |
World.despawn | host.world.despawn | World | ctx.world.despawn | yes | yes | effect | despawnEntity, writeWorld, requiresAuthority | entity:write |
World.entityHasTag | host.world.entity_has_tag | World | ctx.world.entityHasTag | yes | yes | read | readWorld, readState | world:read |
World.find | host.world.find | World | ctx.world.find | yes | yes | read | readWorld | world:read |
World.query | host.world.query | World | ctx.world.query | yes | yes | read | readWorld | world:read |
World.setEntityOwner | host.world.set_entity_owner | World | ctx.world.setEntityOwner | yes | yes | effect | writeWorld, writeState, requiresAuthority | entity:write |
World.setEntityTag | host.world.set_entity_tag | World | ctx.world.setEntityTag | yes | yes | write | writeState, writeWorld, requiresAuthority | entity:write |
World.spawn | host.world.spawn | World | ctx.world.spawn | yes | yes | effect | spawnEntity, writeWorld, requiresAuthority | entity:write |
World.spawnMany | host.world.spawn_many | World | ctx.world.spawnMany | yes | yes | effect | spawnEntity, writeWorld, requiresAuthority | entity:write |
World.spawnPrefab | host.world.spawn_prefab | World | ctx.world.spawnPrefab | yes | yes | effect | spawnEntity, writeWorld, requiresAuthority | entity:write |
World.teleportPlayer | host.world.teleport_player | World | ctx.world.teleportPlayer | yes | yes | effect | writeWorld, networked, nonRollbackable, requiresAuthority | world:write |
Atom Contract Cards
Every launch host atom has a contract card derived from SCRIPT_ATOM_REGISTRY. Compatibility-only aliases are intentionally excluded from this table and from new authoring.
| Atom | Classification | Owner | Inputs | Validation | Permissions | Determinism | Pending op / command | Runtime drain | State patches | Events | Projection | Rejection | Tests | Docs | Compatibility |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Audio.play | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | audio:effect | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Audio.playSpatial | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | audio:effect | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Audio.setBackgroundMusic | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | audio:effect | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Audio.setVolume | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | audio:effect | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Audio.stop | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | audio:effect | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Camera.addLookInput | keep_privileged_bridge | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | camera:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Camera.setLookSensitivity | keep_privileged_bridge | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | camera:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Camera.setPitchClamp | keep_privileged_bridge | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | camera:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Camera.setViewTarget | keep_privileged_bridge | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | camera:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Commerce.owns | keep_public_atom | script-runtime | entitlementKey string plus an optional playerSessionId (defaults to the seat possessing the script's entity). | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | commerce:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; reads ScriptRuntimeState.entitlements assembled by the room tick. | Executor-only snapshot read; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Returns true when the seat's active entitlement set holds the key; false for an unknown seat or key. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts, server/tests/scriptCommerce.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Commerce.promptPurchase | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | commerce:request | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | commerce_prompt_purchase pending op with { offerKey, audience? }. | Runtime script system resolves the audience (default: the seat possessing the script's entity) and mints one session-scoped commerce.prompt_request state patch per addressed seat; the snapshot builder projects it on that seat's private lane only. | commerce.prompt_request (private, one per addressed seat). | RuntimeScriptCommercePromptRequested. | runtime.commerce.prompt.<offerKey>.session.<playerSessionId> = { kind: commerce.prompt_opened, offerKey, requestId, playerSessionId, requestedAt, source }. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts, server/tests/scriptCommerce.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Debug.log | keep_public_atom | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | debug:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.addComponent | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | component:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.ancestors | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | world:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.children | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | world:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.descendants | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | world:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.detach | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | entity:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.hasTag | keep_public_atom | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | world:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.parent | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | world:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.patchComponent | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | component:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.readComponent | keep_public_atom | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | component:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.removeComponent | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | component:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.removeTag | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | entity:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.replaceComponent | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | component:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.setName | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | entity:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.setOwner | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | entity:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | entity_set_owner pending op. | Drained into an entity.owner_set patch carrying the previous and next Profile (I-19 journals every transfer). | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | script.entity_owner_unauthorized when the script is not attached to a Room Script host. | server/tests/scriptPossessionAuthority.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.setParent | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | entity:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.setTag | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | entity:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.worldPosition | keep_readonly_projection | script-runtime | No inputs; targets the entity handle. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | world:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; reads the composed world transform already threaded onto the script entity snapshot. | Executor-only snapshot read; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Returns a vector3 (the snapshot worldPosition, falling back to the local position). | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Entity.worldRotation | keep_readonly_projection | script-runtime | No inputs; targets the entity handle. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | world:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; reads the composed world transform already threaded onto the script entity snapshot. | Executor-only snapshot read; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Returns a vector3 of Euler angles (the snapshot worldRotation, falling back to the local rotation). | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Events.emit | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | event:emit | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Fx.decal | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | fx:effect | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | presentation_cue pending op (kind: decal). | Runtime mints a decal.cue result patch; the reliable event lane resolves the audience and fans out a per-recipient RuntimePresentationCue frame. | decal.cue (deliberately absent from CLIENT_RUNTIME_STATE_PATCH_KINDS, so a scoped cue never leaks through replay or reconnect). | RuntimePresentationCue effect (kind: decal). Cosmetic: never mutates simulation. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | server/tests/runtimeScriptEventLane.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Fx.particleBurst | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | fx:effect | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | presentation_cue pending op (kind: particles). | Runtime mints a particles.cue result patch; the reliable event lane resolves the audience and fans out a per-recipient RuntimePresentationCue frame. The seed derives from the cue id, so a replayed tick is byte-identical. | particles.cue (deliberately absent from CLIENT_RUNTIME_STATE_PATCH_KINDS, so a scoped cue never leaks through replay or reconnect). | RuntimePresentationCue effect (kind: particles). Cosmetic: never mutates simulation. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | server/tests/runtimeScriptEventLane.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Inventory.grant | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | inventory:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | inventory_grant pending op with { playerSessionId, itemKey, quantity, reason? }. | Runtime script system resolves the seat's possessed entity and mints the EXISTING inventory.grant_request state patch; the authority planner turns it into economy.inventory_delta on the durable outbox. A seat without a body fails closed (script.inventory_grant_unpossessed_seat). | inventory.grant_request -> inventory.grant_applied. | RuntimeScriptInventoryGrantRequested. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts, server/tests/scriptCommerce.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Match.addScore | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | match:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | score_add pending op with { subjectKey, amount, scoreboardKey?, reason? }. | Runtime script system mints a scoreboard.score_add_request state patch; the orchestration effect sink applies it through repository.addScore (the same payload the admin RPC mints). | scoreboard.score_add_request -> scoreboard.score_add_applied. | RuntimeScriptScoreAddRequested, then RuntimeScoreAddApplied from the sink. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts, server/tests/scriptMultiplayerScoreObjective.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Match.getScore | keep_public_atom | script-runtime | subjectKey string plus an optional scoreboardKey (defaults to the snapshot's only scoreboard). | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | match:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; reads ScriptRuntimeState.scoreboards assembled by the room tick. | Executor-only snapshot read; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Returns the subject's applied score total (0 when the subject has no score yet). | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts, server/tests/scriptMultiplayerScoreObjective.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Match.getState | defer_v1_palette | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | match:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Match.patchObjective | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | match:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | objective_state_patch pending op with { objectiveKey, patch, reason? }. | Runtime script system mints an objective.state_patch_request state patch; the orchestration effect sink applies it through repository.patchObjectiveState (the same payload the admin RPC mints). | objective.state_patch_request -> objective.state_patch_applied. | RuntimeScriptObjectivePatchRequested, then RuntimeObjectiveStatePatchApplied from the sink. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts, server/tests/scriptMultiplayerScoreObjective.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Match.setPhase | defer_v1_palette | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | match:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Navigation.findPath | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | navigation:query | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Navigation.isReachable | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | navigation:query | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Navigation.nearestPoint | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | navigation:query | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Navigation.raycast | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | navigation:query | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Navigation.steerToward | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | navigation:query | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Network.sendMessage | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | network:send | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | network_message_send pending op. | Runtime script system mints a network.message state patch; the reliable event lane (runtimeScriptEventFramesFromEvent) publishes it at fanout as a broadcast notice or player-private frame. | network.message (channel + payload, optional private playerId target). | RuntimeNetworkMessageSent effect. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | server/tests/runtimeScriptEventLane.test.ts, server/tests/runtimeNetcodeMultiClient.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Physics.command | keep_public_atom | runtime | entityId entity reference plus bodyCommand discriminated object: force, impulse, launch, torque, torqueImpulse, teleport, or reset. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | physics:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | physics_command pending op with { entityId, command }. | Runtime script system normalizes bodyCommand into the internal ForceComponent queue. | component.patch for internal ForceComponent pending queue plus dependency add patches when required. | RuntimePhysicsCommandQueued. | ForceComponent is internal; public projection is the physics solve result in transform/body snapshots. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts, server/tests/runtimeRuntimeSystems.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Physics.occupancyQuery | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | physics:query | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Physics.overlapTest | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | physics:query | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Physics.raycast | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | physics:query | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Physics.shapecast | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | physics:query | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Platform.exitFullscreen | keep_privileged_bridge | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | platform:request | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Platform.exitPointerLock | keep_privileged_bridge | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | platform:request | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Platform.requestFullscreen | keep_privileged_bridge | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | platform:request | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Platform.requestPointerLock | keep_privileged_bridge | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | platform:request | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Player.eliminate | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | room:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | player_eliminate pending op. | Drained into the character.eliminated fact and a player.possession_request release with reason respawn, the same patches the RuntimeCharacterEliminate command emits. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | script.character_eliminate_unauthorized when the script is not attached to a Room Script host and the seat is not its own; script.character_eliminate_invalid when the seat is not live or possesses no Character. | server/tests/scriptPossessionAuthority.test.ts, packages/script-runtime/tests/playerSurface.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Player.possess | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | room:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | player_possession pending op with intent assign. | Drained into a player.possession_request patch the possession writer applies. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | script.player_possession_unauthorized when the script is not attached to a Room Script host and the seat is not its own. | server/tests/scriptPossessionAuthority.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Player.release | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | room:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | player_possession pending op with intent clear. | Drained into a player.possession_request patch the possession writer applies. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | script.player_possession_unauthorized when the script is not attached to a Room Script host and the seat is not its own. | server/tests/scriptPossessionAuthority.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Player.spawnCharacter | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | room:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | player_possession pending op with intent spawn_and_assign. | Drained into a player.possession_request patch the possession writer applies; the character policy mints the body. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | script.player_possession_unauthorized when the script is not attached to a Room Script host and the seat is not its own. | server/tests/scriptPossessionAuthority.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Players.get | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | room:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None: a read of the live roster view the tick context already carries. | None. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | server/tests/scriptPossessionAuthority.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Players.list | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | room:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None: a read of the live roster view the tick context already carries. | None. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | server/tests/scriptPossessionAuthority.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Program.inputActions | defer_v1_palette | script-runtime | No inputs. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | None | Deterministic: reads the held-action bitset (pp-abi.v1 SPEC 4.4 byte offset 92) as a number; decode with the bitwise family. | None; pure client-produce-Worker read. | Client program worker only; no server Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Returns a number. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-codegen/tests/clientFrameProfile.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Program.inputBundle | defer_v1_palette | script-runtime | No inputs. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | None | Deterministic: copies the current frame input bundle (pp-abi.v1 SPEC 4.4) into an array of number. | None; pure client-produce-Worker read. | Client program worker only; no server Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Returns the 16-slot input bundle as an array of number. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-codegen/tests/clientFrameProfile.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Program.inputFlags | defer_v1_palette | script-runtime | No inputs. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | None | Deterministic: reads the input flags word (pp-abi.v1 SPEC 4.4 byte offset 88) as a number; bit 0 = pointerLocked. | None; pure client-produce-Worker read. | Client program worker only; no server Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Returns a number. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-codegen/tests/clientFrameProfile.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Program.param | defer_v1_palette | script-runtime | index: number (0-based exposed-field index). | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | None | Deterministic: reads authored numeric parameter by exposed-field index (pp-abi.v1 param_f64); out-of-range reads as 0. | None; pure client-produce-Worker read. | Client program worker only; no server Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Returns a number. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-codegen/tests/clientFrameProfile.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Program.paramCount | defer_v1_palette | script-runtime | No inputs. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | None | Deterministic: returns the count of authored numeric parameters (pp-abi.v1 param_count). | None; pure client-produce-Worker read. | Client program worker only; no server Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Returns a number. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-codegen/tests/clientFrameProfile.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Random.bool | keep_public_atom | script-runtime | Optional probability p (default 0.5) plus an optional trailing random_stream. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | random:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; returns a deterministic sample from the seeded RNG. | Executor-only seeded RNG; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Return value only. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/atomRandom.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Random.gaussian | keep_public_atom | script-runtime | Optional mean (default 0), std (default 1) plus an optional trailing random_stream. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | random:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; returns a deterministic sample from the seeded RNG. | Executor-only seeded RNG; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Return value only. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/atomRandom.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Random.int | keep_public_atom | script-runtime | min, max numbers (inclusive, unbiased) plus an optional trailing random_stream. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | random:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; returns a deterministic sample from the seeded RNG. | Executor-only seeded RNG; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Return value only. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/atomRandom.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Random.next | keep_public_atom | script-runtime | No inputs. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | random:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; returns the next deterministic RNG sample. | Executor-only seeded RNG; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Return value only. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Random.pick | keep_public_atom | script-runtime | array plus an optional trailing random_stream. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | random:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; returns a deterministic sample from the seeded RNG. | Executor-only seeded RNG; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Return value only. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/atomRandom.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Random.pointInCircle | keep_public_atom | script-runtime | radius number plus an optional trailing random_stream. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | random:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; returns a deterministic sample from the seeded RNG. | Executor-only seeded RNG; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Return value only. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/atomRandom.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Random.pointInSphere | keep_public_atom | script-runtime | radius number plus an optional trailing random_stream. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | random:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; returns a deterministic sample from the seeded RNG. | Executor-only seeded RNG; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Return value only. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/atomRandom.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Random.range | keep_public_atom | script-runtime | min, max numbers plus an optional trailing random_stream. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | random:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; returns a deterministic sample from the seeded RNG. | Executor-only seeded RNG; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Return value only. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/atomRandom.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Random.seeded | keep_public_atom | script-runtime | seed string or number. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | random:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; constructs an invocation-local reproducible stream handle. | Executor-only seeded RNG; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Returns an opaque random_stream handle. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/atomRandom.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Random.shuffle | keep_public_atom | script-runtime | array plus an optional trailing random_stream. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | random:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; returns a deterministic sample from the seeded RNG. | Executor-only seeded RNG; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Returns a new shuffled array; the input is never mutated. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/atomRandom.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Random.sign | keep_public_atom | script-runtime | Optional trailing random_stream. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | random:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; returns a deterministic sample from the seeded RNG. | Executor-only seeded RNG; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Return value only. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/atomRandom.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Random.unitVector | keep_public_atom | script-runtime | Optional trailing random_stream. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | random:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; returns a deterministic sample from the seeded RNG. | Executor-only seeded RNG; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Return value only. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/atomRandom.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Random.weightedPick | keep_public_atom | script-runtime | items and weights arrays plus an optional trailing random_stream. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | random:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; returns a deterministic sample from the seeded RNG. | Executor-only seeded RNG; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Return value only. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/atomRandom.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Room.getPlayers | defer_v1_palette | script-runtime | No inputs. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | room:read | Deterministic: the executor owns the participant filter (no admin observers or departed sessions) and the joinedAt-then-playerSessionId ordering. | None; reads the roster threaded through ScriptRuntimeState.players. | Executor-only roster read; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Returns RoomPlayerSnapshot rows (playerSessionId, playerId, actorId, actorKind, sessionKind, status, seatKey?, teamKey?, possessedEntityId?, joinedAt) bounded by room capacity. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/worldQueryPagination.test.ts, packages/script-runtime/tests/worldQueryFuzz.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Room.getState | defer_v1_palette | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | room:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Team.getAssignment | defer_v1_palette | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | team:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Terrain.heightAt | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | terrain:query | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Terrain.normalAt | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | terrain:query | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Terrain.raycastDown | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | terrain:query | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Terrain.sampleLayerWeights | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | terrain:query | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Terrain.slopeAt | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | terrain:query | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Tween.cancel | defer_v1_palette | runtime | key string matching the one Tween Start used. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | tween:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | tween_cancel pending op with { key }. | Runtime script system removes the (scriptKey, key) tween record from the owner's TweenState, scoped so a sibling script's same-key tween is never cancelled. | Owner TweenState component.patch with the record removed. | RuntimeScriptTweenCancelled. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts, server/tests/runtimeRuntimeSystems.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Tween.start | defer_v1_palette | runtime | entityId entity reference plus a spec object: { component, field, to (number or vector3), durationSeconds, easing?, key?, from?, angle? }. | Executor marshals the spec + records the metered host call; the runtime drain enforces mutation authority over the target, resolves the component field, validates the endpoint against the component schema, and rejects an unknown easing or an over-budget key. | tween:write | Deterministic: duration is measured in ticks and eased(t) is sampled from the shared TWEEN_EASING_FUNCTIONS table on the server tick - byte-identical across runs and replay. | tween_start pending op with { entityId, component, field, to, durationTicks, easing, key, angle }. | Runtime script system writes a snapshot-resident TweenState record on the owner; a per-tick sampler emits the target field's component.patch and GCs the record at completion. | Owner TweenState component.patch at start; per-tick target-field component.patch from the sampler; TweenState GC component.patch at completion. | RuntimeScriptTweenStarted at start; RuntimeScriptTweenCompleted at completion. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | script.tween_target_invalid / tween_component_missing / tween_easing_unknown / tween_value_invalid / tween_field_invalid / tween_budget_exceeded, or the shared entity-mutation-authority correction when the target is not owned. | packages/script-runtime/tests/runtime.test.ts, server/tests/runtimeRuntimeSystems.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
UI.closePanel | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | ui:effect | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
UI.openPanel | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | ui:effect | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
UI.setWidgetValue | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | ui:effect | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Warehouse.append | keep_public_atom | data-warehouse | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | warehouse:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Warehouse.create | keep_public_atom | data-warehouse | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | warehouse:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Warehouse.delete | keep_public_atom | data-warehouse | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | warehouse:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Warehouse.get | keep_public_atom | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | warehouse:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Warehouse.increment | keep_public_atom | data-warehouse | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | warehouse:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Warehouse.query | keep_public_atom | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | warehouse:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Warehouse.set | keep_public_atom | data-warehouse | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | warehouse:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Warehouse.transform | keep_public_atom | data-warehouse | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | warehouse:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Warehouse.update | keep_public_atom | data-warehouse | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | warehouse:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Water.isSubmerged | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | water:query | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
Water.surfaceLevelAt | keep_readonly_projection | script-runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | water:query | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
World.despawn | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | entity:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
World.entityHasTag | keep_public_atom | script-runtime | A target entity id and a tag string. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | world:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; reads the target entity's tags from the tick world snapshot. | Executor-only snapshot read; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Returns a boolean: whether the target entity carries the tag this tick. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | server/tests/seatAndBodyBrainrotSlice.test.ts, packages/script-runtime/tests/worldTargetOwnershipAndTags.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
World.find | keep_public_atom | script-runtime | Filter object supporting id, key, name, tag, componentType, worldId, radius, origin, and limit. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | world:read | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | None; reads the script world snapshot. | Executor-only snapshot query; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Returns matching RuntimeEntitySnapshot values. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
World.query | keep_public_atom | script-runtime | Options object: every ctx.world.find filter field plus cursor (opaque keyset resume token) and limit. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | world:read | Deterministic: one shared filter predicate with ctx.world.find, and page sort + cursor seek both derive from the canonical entity-id ordering. | None; reads the script world snapshot. | Executor-only snapshot query; no Runtime drain. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Returns { entities, nextCursor?, totalMatched }: a bounded page in canonical id order, a resume cursor present exactly while matches remain, and the full pre-pagination match count. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/worldQueryPagination.test.ts, packages/script-runtime/tests/worldQueryFuzz.test.ts, packages/script-runtime/tests/authoringFieldSchemas.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
World.setEntityOwner | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | entity:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | entity_set_owner pending op carrying the TARGET entityId (the same op Entity.setOwner enqueues for the self entity). | Drained by stateFromScriptSetOwnerOp into an entity.owner_set patch carrying the previous and next Profile (I-19 journals every transfer). | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | script.entity_owner_unauthorized when the script is not attached to a Room Script host; script.entity_owner_invalid when the target entity is missing. | server/tests/seatAndBodyBrainrotSlice.test.ts, packages/script-runtime/tests/worldTargetOwnershipAndTags.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
World.setEntityTag | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | entity:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | entity_tag_add pending op carrying the TARGET entityId. | Drained by the structural-mutation path into an entity.tag_add patch (same-world, rate-limited, the same authority World.despawn uses). | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | script.entity_mutation_target_not_authorized when the target is absent or outside the owner's world; script.entity_mutation_non_owner_rate_limited past the per-tick non-owner limit; script.entity_tag_missing for an empty tag. | server/tests/seatAndBodyBrainrotSlice.test.ts, packages/script-runtime/tests/worldTargetOwnershipAndTags.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
World.spawn | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | entity:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
World.spawnMany | keep_public_atom | runtime | An array of spawn configs, each identical in shape to ctx.world.spawn's config. At most SCRIPT_SPAWN_BATCH_MAX_ENTITIES (64) per call; an oversized array is rejected whole, never partially applied. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | entity:write | Deterministic: N separate entity_spawn pending ops, whose ids derive from the existing (room, owner, script, tick, opIndex) seed. The Nth entity of a batch is byte-identical to the Nth of N single ctx.world.spawn calls. | N entity_spawn pending ops (prefab-shaped configs route to prefab_instantiate, exactly as ctx.world.spawn does). No new op type. | The existing entity_spawn drain, once per op, under the same per-execution spawn-entity budget the drain applies to every spawn route. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/atomSpawnMany.test.ts, server/tests/scriptSpawnBatchAndBounds.test.ts, server/tests/blueprint-ir-host-parity.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
World.spawnPrefab | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | entity:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | No pending op for pure reads; write/effect atoms enqueue a typed ScriptPendingOp. | Drained by server/src/modules/runtime/runtimeSystems.ts when the atom produces a pending op. | None for reads; writes emit typed Runtime state patches owned by the drain module. | None unless documented by the drain. | Projection follows Runtime snapshot/delta behavior for the affected state patch. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
World.teleportPlayer | keep_public_atom | runtime | Declared by the Script IR host node ports and generated SDK signature. | Executor validates primitive argument shape before enqueue/read; Runtime validates authoritative mutations before state patches. | world:write | Deterministic inside one script tick unless the host is an explicit browser/client bridge. | teleport_player pending op. | Runtime script system issues a Warehouse-backed teleport handoff. | Private teleport handoff projection. | Runtime teleport handoff effect. | Private client/player projection only. | Invalid inputs or unauthorized mutations produce structured script diagnostics or Runtime corrections. | packages/script-runtime/tests/runtime.test.ts | docs/spec/generated/script-node-catalog.md, docs/spec/generated/script-sdk.md | Launch public atom with no helper aliases. |
All Nodes
| Node | Kind | Category | IR | Host | Effect tags | SDK path |
|---|---|---|---|---|---|---|
core.arithmetic | core | Values | arithmetic | pure | None | |
core.array.first | core | Values | array.first | pure | None | |
core.array.for_each | core | Control | array.forEach | pure | None | |
core.array.get | core | Values | array.get | pure | None | |
core.array.length | core | Values | array.length | pure | None | |
core.array.mutate | core | Values | array.mutate | pure | None | |
core.array.query | core | Values | array.query | pure | None | |
core.array.reduce | core | Values | array.reduce | pure | None | |
core.array.transform | core | Values | array.transform | pure | None | |
core.bitwise | core | Values | bitwise | pure | None | |
core.boolean | core | Values | boolean | pure | None | |
core.bounded.for | core | Control | bounded.for | pure | None | |
core.bounded.while | core | Control | bounded.while | pure | None | |
core.comparison | core | Values | comparison | pure | None | |
core.component.patch | core | Components | component.patch | writeState | None | |
core.component.read | core | Components | component.read | pure | None | |
core.entity.id | core | Values | entity.id | pure | None | |
core.event.key | core | Events | event.key | pure | None | |
core.event.payload.get | core | Events | event.payload.get | pure | None | |
core.expression.codebox | core | Values | expression.codebox | pure | None | |
core.flow.break | core | Control | flow.break | pure | None | |
core.flow.continue | core | Control | flow.continue | pure | None | |
core.flow.do_n | core | Control | flow.doN | writeState | None | |
core.flow.do_once | core | Control | flow.doOnce | writeState | None | |
core.flow.flip_flop | core | Control | flow.flipFlop | writeState | None | |
core.flow.gate | core | Control | flow.gate | writeState | None | |
core.flow.multi_gate | core | Control | flow.multiGate | writeState | None | |
core.flow.return | core | Control | flow.return | pure | None | |
core.flow.timer.after | core | Control | flow.timer.after | emitEvent | None | |
core.flow.timer.cancel | core | Control | flow.timer.cancel | emitEvent | None | |
core.get | core | Values | get | pure | None | |
core.host.call | core | Effects | host.call | emitEvent | None | |
core.if | core | Control | if | pure | None | |
core.let | core | Values | let | pure | None | |
core.map | core | Values | map | pure | None | |
core.math.remap | core | Values | math.remap | pure | None | |
core.math | core | Values | math | pure | None | |
core.not | core | Values | not | pure | None | |
core.object | core | Values | object | pure | None | |
core.quat | core | Values | quat | pure | None | |
core.record.get | core | Values | record.get | pure | None | |
core.select | core | Values | select | pure | None | |
core.sequence | core | Control | sequence | pure | None | |
core.set | core | Values | set | pure | None | |
core.string | core | Values | string | pure | None | |
core.switch | core | Control | switch | pure | None | |
core.value.array | core | Values | value.array | pure | None | |
core.value.assert | core | Values | value.assert | pure | None | |
core.value.cast | core | Values | value.cast | pure | None | |
core.value.coerce | core | Values | value.coerce | pure | None | |
core.value.literal | core | Values | value.literal | pure | None | |
core.value.object | core | Values | value.object | pure | None | |
core.vec3 | core | Values | vec3 | pure | None | |
event.action | event | Events | onActionResolved | readWorld | None | |
event.character_removed | event | Events | onCharacterRemoved | readWorld | None | |
event.character_spawned | event | Events | onCharacterSpawned | readWorld | None | |
event.custom | event | Events | onCustomEvent | readWorld | None | |
event.frame | event | Events | onFrame | readWorld | None | |
event.init | event | Events | onInit | readWorld | None | |
event.match_ended | event | Events | onMatchEnded | readWorld | None | |
event.network_message | event | Events | onNetworkMessage | readWorld | None | |
event.panel_action | event | Events | onPanelAction | readWorld | None | |
event.phase_exit | event | Events | onPhaseExit | readWorld | None | |
event.phase | event | Events | onPhaseEnter | readWorld | None | |
event.player_joined | event | Events | onPlayerJoined | readWorld | None | |
event.player_left | event | Events | onPlayerLeft | readWorld | None | |
event.purchase_fulfilled | event | Events | onPurchaseFulfilled | readWorld | None | |
event.resize | event | Events | onResize | readWorld | None | |
event.start | event | Events | onStart | readWorld | None | |
event.tick | event | Events | onTick | readWorld | None | |
event.timer | event | Events | onTimerFired | readWorld | None | |
event.trigger_exit | event | Events | onTriggerExit | readWorld | None | |
event.trigger | event | Events | onTriggerEnter | readWorld | None | |
event.widget_press | event | Events | onWidgetPress | readWorld | None | |
host.audio.play_spatial | host | Audio | host.call | Audio.playSpatial | audioEffect, networked, nonRollbackable | ctx.audio.playSpatial |
host.audio.play | host | Audio | host.call | Audio.play | audioEffect, networked, nonRollbackable | ctx.audio.play |
host.audio.set_background_music | host | Audio | host.call | Audio.setBackgroundMusic | audioEffect, nonRollbackable | ctx.audio.setBackgroundMusic |
host.audio.set_volume | host | Audio | host.call | Audio.setVolume | audioEffect | ctx.audio.setVolume |
host.audio.stop | host | Audio | host.call | Audio.stop | audioEffect | ctx.audio.stop |
host.camera.add_look_input | host | Platform | host.call | Camera.addLookInput | platformRequest, nonRollbackable, requiresAuthority | ctx.camera.addLookInput |
host.camera.set_look_sensitivity | host | Platform | host.call | Camera.setLookSensitivity | platformRequest, nonRollbackable, requiresAuthority | ctx.camera.setLookSensitivity |
host.camera.set_pitch_clamp | host | Platform | host.call | Camera.setPitchClamp | platformRequest, nonRollbackable, requiresAuthority | ctx.camera.setPitchClamp |
host.camera.set_view_target | host | Platform | host.call | Camera.setViewTarget | platformRequest, nonRollbackable, requiresAuthority | ctx.camera.setViewTarget |
host.commerce.owns | host | Platform | host.call | Commerce.owns | readState | ctx.commerce.owns |
host.commerce.prompt_purchase | host | Platform | host.call | Commerce.promptPurchase | platformRequest, nonRollbackable, requiresAuthority | ctx.commerce.promptPurchase |
host.debug.log | host | Debug | host.call | Debug.log | emitEvent | ctx.log |
host.entity.add_component | host | Components | host.call | Entity.addComponent | writeState, writeWorld, requiresAuthority | ctx.entity.addComponent |
host.entity.ancestors | host | World | host.call | Entity.ancestors | readWorld, readState | ctx.entity.ancestors |
host.entity.children | host | World | host.call | Entity.children | readWorld, readState | ctx.entity.children |
host.entity.descendants | host | World | host.call | Entity.descendants | readWorld, readState | ctx.entity.descendants |
host.entity.detach | host | World | host.call | Entity.detach | writeState, writeWorld, requiresAuthority | ctx.entity.detach |
host.entity.has_tag | host | World | host.call | Entity.hasTag | readWorld, readState | ctx.entity.hasTag |
host.entity.parent | host | World | host.call | Entity.parent | readWorld, readState | ctx.entity.parent |
host.entity.patch_component | host | Components | host.call | Entity.patchComponent | writeState, writeWorld, requiresAuthority | ctx.entity.patchComponent |
host.entity.read_component | host | Components | host.call | Entity.readComponent | readState, readWorld | ctx.entity.readComponent |
host.entity.remove_component | host | Components | host.call | Entity.removeComponent | writeState, writeWorld, requiresAuthority | ctx.entity.removeComponent |
host.entity.remove_tag | host | World | host.call | Entity.removeTag | writeState, writeWorld, requiresAuthority | ctx.entity.removeTag |
host.entity.replace_component | host | Components | host.call | Entity.replaceComponent | writeState, writeWorld, requiresAuthority | ctx.entity.replaceComponent |
host.entity.set_name | host | World | host.call | Entity.setName | writeState, writeWorld, requiresAuthority | ctx.entity.setName |
host.entity.set_owner | host | World | host.call | Entity.setOwner | writeWorld, writeState, requiresAuthority | ctx.entity.setOwner |
host.entity.set_parent | host | World | host.call | Entity.setParent | writeState, writeWorld, requiresAuthority | ctx.entity.setParent |
host.entity.set_tag | host | World | host.call | Entity.setTag | writeState, writeWorld, requiresAuthority | ctx.entity.setTag |
host.entity.world_position | host | World | host.call | Entity.worldPosition | readWorld, readState | ctx.entity.worldPosition |
host.entity.world_rotation | host | World | host.call | Entity.worldRotation | readWorld, readState | ctx.entity.worldRotation |
host.events.emit | host | Events | host.call | Events.emit | emitEvent | ctx.events.emit |
host.fx.decal | host | Effects | host.call | Fx.decal | networked, nonRollbackable | ctx.fx.decal |
host.fx.particle_burst | host | Effects | host.call | Fx.particleBurst | networked, nonRollbackable | ctx.fx.particleBurst |
host.inventory.grant | host | Match & Players | host.call | Inventory.grant | writeState, emitEvent, durable, requiresAuthority | ctx.inventory.grant |
host.match.add_score | host | Match & Players | host.call | Match.addScore | writeState, emitEvent, requiresAuthority | ctx.match.addScore |
host.match.get_score | host | Match & Players | host.call | Match.getScore | readState | ctx.match.getScore |
host.match.get_state | host | Match & Players | host.call | Match.getState | readState | ctx.match.getState |
host.match.patch_objective | host | Match & Players | host.call | Match.patchObjective | writeState, emitEvent, requiresAuthority | ctx.match.patchObjective |
host.match.set_phase | host | Match & Players | host.call | Match.setPhase | writeState, emitEvent, requiresAuthority | ctx.match.setPhase |
host.navigation.find_path | host | Physics | host.call | Navigation.findPath | readWorld | ctx.navigation.findPath |
host.navigation.is_reachable | host | Physics | host.call | Navigation.isReachable | readWorld | ctx.navigation.isReachable |
host.navigation.nearest_point | host | Physics | host.call | Navigation.nearestPoint | readWorld | ctx.navigation.nearestPoint |
host.navigation.raycast | host | Physics | host.call | Navigation.raycast | readWorld | ctx.navigation.raycast |
host.navigation.steer_toward | host | Physics | host.call | Navigation.steerToward | readWorld | ctx.navigation.steerToward |
host.network.send_message | host | Events | host.call | Network.sendMessage | emitEvent, networked, nonRollbackable | ctx.network.sendMessage |
host.physics.command | host | Physics | host.call | Physics.command | physicsCommand, writeWorld, requiresAuthority | ctx.physics.command |
host.physics.occupancy_query | host | Physics | host.call | Physics.occupancyQuery | readWorld | ctx.physics.occupancyQuery |
host.physics.overlap_test | host | Physics | host.call | Physics.overlapTest | readWorld | ctx.physics.overlapTest |
host.physics.raycast | host | Physics | host.call | Physics.raycast | readWorld | ctx.physics.raycast |
host.physics.shapecast | host | Physics | host.call | Physics.shapecast | readWorld | ctx.physics.shapecast |
host.platform.exit_fullscreen | host | Platform | host.call | Platform.exitFullscreen | platformRequest, nonRollbackable, requiresAuthority | ctx.platform.exitFullscreen |
host.platform.exit_pointer_lock | host | Platform | host.call | Platform.exitPointerLock | platformRequest, nonRollbackable, requiresAuthority | ctx.platform.exitPointerLock |
host.platform.request_fullscreen | host | Platform | host.call | Platform.requestFullscreen | platformRequest, nonRollbackable, requiresAuthority | ctx.platform.requestFullscreen |
host.platform.request_pointer_lock | host | Platform | host.call | Platform.requestPointerLock | platformRequest, nonRollbackable, requiresAuthority | ctx.platform.requestPointerLock |
host.player.eliminate | host | Match & Players | host.call | Player.eliminate | writeWorld, requiresAuthority | ctx.players.eliminate |
host.player.possess | host | Match & Players | host.call | Player.possess | writeWorld, requiresAuthority | ctx.players.possess |
host.player.release | host | Match & Players | host.call | Player.release | writeWorld, requiresAuthority | ctx.players.release |
host.player.spawn_character | host | Match & Players | host.call | Player.spawnCharacter | spawnEntity, writeWorld, requiresAuthority | ctx.players.spawnCharacter |
host.players.get | host | Match & Players | host.call | Players.get | readWorld | ctx.players.get |
host.players.list | host | Match & Players | host.call | Players.list | readWorld | ctx.players.list, ctx.room.getPlayers |
host.program.input_actions | host | Values | host.call | Program.inputActions | pure | ctx.program.inputActions |
host.program.input_bundle | host | Values | host.call | Program.inputBundle | pure | ctx.program.inputBundle |
host.program.input_flags | host | Values | host.call | Program.inputFlags | pure | ctx.program.inputFlags |
host.program.param_count | host | Values | host.call | Program.paramCount | pure | ctx.program.paramCount |
host.program.param | host | Values | host.call | Program.param | pure | ctx.program.param |
host.random.bool | host | Values | host.call | Random.bool | pure | ctx.random.bool |
host.random.gaussian | host | Values | host.call | Random.gaussian | pure | ctx.random.gaussian |
host.random.int | host | Values | host.call | Random.int | pure | ctx.random.int |
host.random.next | host | Values | host.call | Random.next | pure | ctx.random |
host.random.pick | host | Values | host.call | Random.pick | pure | ctx.random.pick |
host.random.point_in_circle | host | Values | host.call | Random.pointInCircle | pure | ctx.random.pointInCircle |
host.random.point_in_sphere | host | Values | host.call | Random.pointInSphere | pure | ctx.random.pointInSphere |
host.random.range | host | Values | host.call | Random.range | pure | ctx.random.range |
host.random.seeded | host | Values | host.call | Random.seeded | pure | ctx.random.seeded |
host.random.shuffle | host | Values | host.call | Random.shuffle | pure | ctx.random.shuffle |
host.random.sign | host | Values | host.call | Random.sign | pure | ctx.random.sign |
host.random.unit_vector | host | Values | host.call | Random.unitVector | pure | ctx.random.unitVector |
host.random.weighted_pick | host | Values | host.call | Random.weightedPick | pure | ctx.random.weightedPick |
host.room.get_players | host | Match & Players | host.call | Room.getPlayers | readState, readWorld | ctx.room.getPlayers |
host.room.get_state | host | Match & Players | host.call | Room.getState | readState, readWorld | ctx.room.getState |
host.team.get_assignment | host | Match & Players | host.call | Team.getAssignment | readState, readWorld | ctx.team.getAssignment |
host.terrain.height_at | host | Physics | host.call | Terrain.heightAt | readWorld | ctx.terrain.heightAt |
host.terrain.normal_at | host | Physics | host.call | Terrain.normalAt | readWorld | ctx.terrain.normalAt |
host.terrain.raycast_down | host | Physics | host.call | Terrain.raycastDown | readWorld | ctx.terrain.raycastDown |
host.terrain.sample_layer_weights | host | Physics | host.call | Terrain.sampleLayerWeights | readWorld | ctx.terrain.sampleLayerWeights |
host.terrain.slope_at | host | Physics | host.call | Terrain.slopeAt | readWorld | ctx.terrain.slopeAt |
host.tween.cancel | host | Physics | host.call | Tween.cancel | writeWorld, requiresAuthority | ctx.tween.cancel |
host.tween.start | host | Physics | host.call | Tween.start | writeWorld, requiresAuthority | ctx.tween.start |
host.ui.close_panel | host | UI | host.call | UI.closePanel | uiEffect, nonRollbackable | ctx.ui.closePanel |
host.ui.open_panel | host | UI | host.call | UI.openPanel | uiEffect, nonRollbackable | ctx.ui.openPanel |
host.ui.set_widget_value | host | UI | host.call | UI.setWidgetValue | uiEffect, nonRollbackable | ctx.ui.setWidgetValue |
host.warehouse.append | host | Persistence | host.call | Warehouse.append | writeState, durable, requiresAuthority | ctx.warehouse.append |
host.warehouse.create | host | Persistence | host.call | Warehouse.create | writeState, durable, requiresAuthority | ctx.warehouse.create |
host.warehouse.delete | host | Persistence | host.call | Warehouse.delete | writeState, durable, requiresAuthority | ctx.warehouse.delete |
host.warehouse.get | host | Persistence | host.call | Warehouse.get | readState, durable | ctx.warehouse.get |
host.warehouse.increment | host | Persistence | host.call | Warehouse.increment | writeState, durable, requiresAuthority | ctx.warehouse.increment |
host.warehouse.query | host | Persistence | host.call | Warehouse.query | readState, durable | ctx.warehouse.query |
host.warehouse.set | host | Persistence | host.call | Warehouse.set | writeState, durable, requiresAuthority | ctx.warehouse.set |
host.warehouse.transform | host | Persistence | host.call | Warehouse.transform | writeState, durable, requiresAuthority | ctx.warehouse.transform |
host.warehouse.update | host | Persistence | host.call | Warehouse.update | writeState, durable, requiresAuthority | ctx.warehouse.update |
host.water.is_submerged | host | Physics | host.call | Water.isSubmerged | readWorld | ctx.water.isSubmerged |
host.water.surface_level_at | host | Physics | host.call | Water.surfaceLevelAt | readWorld | ctx.water.surfaceLevelAt |
host.world.despawn | host | World | host.call | World.despawn | despawnEntity, writeWorld, requiresAuthority | ctx.world.despawn |
host.world.entity_has_tag | host | World | host.call | World.entityHasTag | readWorld, readState | ctx.world.entityHasTag |
host.world.find | host | World | host.call | World.find | readWorld | ctx.world.find |
host.world.query | host | World | host.call | World.query | readWorld | ctx.world.query |
host.world.set_entity_owner | host | World | host.call | World.setEntityOwner | writeWorld, writeState, requiresAuthority | ctx.world.setEntityOwner |
host.world.set_entity_tag | host | World | host.call | World.setEntityTag | writeState, writeWorld, requiresAuthority | ctx.world.setEntityTag |
host.world.spawn_many | host | World | host.call | World.spawnMany | spawnEntity, writeWorld, requiresAuthority | ctx.world.spawnMany |
host.world.spawn_prefab | host | World | host.call | World.spawnPrefab | spawnEntity, writeWorld, requiresAuthority | ctx.world.spawnPrefab |
host.world.spawn | host | World | host.call | World.spawn | spawnEntity, writeWorld, requiresAuthority | ctx.world.spawn |
host.world.teleport_player | host | World | host.call | World.teleportPlayer | writeWorld, networked, nonRollbackable, requiresAuthority | ctx.world.teleportPlayer |
Node Details
One section per node, keyed by node id, so a reference to a node id resolves to its own anchor. Each carries the node description and its first example.
core.arithmetic
Applies a numeric operator.
{ "op": "arithmetic", "operator": "add", "left": {}, "right": {} }
core.array.first
Reads the first typed item from an array.
{ "op": "array.first", "array": { "op": "get", "path": ["targets"], "valueType": "entity_array" }, "valueType": "entity" }
core.array.for_each
Iterates a typed array with a bounded execution budget.
{ "op": "array.forEach", "array": { "op": "get", "path": ["targets"], "valueType": "entity_array" }, "item": "target", "itemType": "entity", "maxIterations": 32, "body": [] }
core.array.get
Reads one typed item from an array by index.
{ "op": "array.get", "array": { "op": "get", "path": ["targets"], "valueType": "entity_array" }, "index": { "op": "value.literal", "value": 0 }, "valueType": "entity" }
core.array.length
Counts items in a typed array value.
{ "op": "array.length", "array": { "op": "value.array", "items": [] } }
core.array.mutate
Functional array update: push, addUnique, insert, removeAt, removeValue, clear, set, unique, reverse - returns a NEW array (no in-place mutation). Write it back to a component via Patch (ATOM-5).
{ "op": "array.mutate", "operator": "push", "array": {}, "value": {} }
core.array.query
Pure array reads: contains (by value), indexOf (by value; UE Find), last, join, slice, concat. No predicate, matching UE (ATOM-6).
{ "op": "array.query", "operator": "join", "array": {}, "separator": {} }
core.array.reduce
Fold an array down to a single accumulated value with a per-item expression over a bounded slice. The array-algebra ELIMINATE: the dual of the build ops (Make Array / Add). item binds the current element, accumulator binds the running total; both read via Get (ATOM-7).
{ "op": "array.reduce", "array": {}, "seed": {}, "item": "x", "accumulator": "acc", "accumulatorType": "number", "maxIterations": 16, "expr": {} }
core.array.transform
map / filter / sortBy / find / some / every over an array with a per-item expression and a bounded iteration budget. A forEach-shaped special form with a named item binding - NOT a lambda. map/filter/sortBy return an array; find returns the matching item; some/every return a boolean (ATOM-7).
{ "op": "array.transform", "operator": "map", "array": {}, "item": "x", "itemType": "number", "maxIterations": 16, "expr": {} }
core.bitwise
Integer bit-algebra: and, or, xor, not, shl, shr, ushr. Operands and result are numbers with exact JavaScript ToInt32 semantics (ushr is ToUint32); shift counts are masked to 5 bits. Pairs with Math.imul32 for integer hashing, noise, and u32 pixel packing (ATOM-1).
{ "op": "bitwise", "operator": "and", "a": {}, "b": {} }
core.boolean
Combines two boolean values.
{ "op": "boolean", "operator": "and", "left": {}, "right": {} }
core.bounded.for
Runs a for loop with a maximum iteration budget.
{ "op": "bounded.for", "iterator": "i", "from": {}, "to": {}, "maxIterations": 10, "body": [] }
core.bounded.while
Runs a while loop with a maximum iteration budget.
{ "op": "bounded.while", "test": {}, "maxIterations": 10, "body": [] }
core.comparison
Compares two values. eqi / nei check case-insensitive string equality / inequality (UE Equal (String) ignore-case).
{ "op": "comparison", "operator": "gte", "left": {}, "right": {} }
core.component.patch
Buffers an authoritative component patch.
{ "op": "component.patch", "componentType": "TransformComponent", "patch": { "position": { "x": 0, "y": 1, "z": 0 } } }
core.component.read
Reads a component from the owning entity or a specified entity.
{ "op": "component.read", "componentType": "TransformComponent", "fields": ["position"] }
core.entity.id
Reads an entity's ID. With no input, uses the entity running this script.
{ "op": "entity.id" }
core.event.key
Reads the semantic key from the current runtime event.
{ "op": "event.key" }
core.event.payload.get
Reads a typed value from the current event payload.
{ "op": "event.payload.get", "path": ["entityId"], "valueType": "string" }
core.expression.codebox
Author a value as a freeform GessaScript expression instead of wiring value nodes. The text is parsed to a real, type-checked expression tree (W2-C); its result type is the inner expression's type.
{ "op": "expression.codebox", "expression": { "op": "value.literal", "value": 1 } }
core.flow.break
Stops the enclosing loop immediately and continues after it.
break;
core.flow.continue
Skips the rest of this iteration and advances the enclosing loop to the next one.
continue;
core.flow.do_n
Runs its body the first N times it is reached, then blocks until reset. UE DoN (ATOM-12).
{ "op": "flow.doN", "stateKey": "burst", "n": { "op": "value.literal", "value": 3 }, "body": [] }
core.flow.do_once
Runs its body the first time it is reached, then blocks until reset. UE DoOnce (ATOM-12).
{ "op": "flow.doOnce", "stateKey": "intro", "body": [] }
core.flow.flip_flop
Alternates between the A and B branches on each reach (A first). UE FlipFlop (ATOM-12).
{ "op": "flow.flipFlop", "stateKey": "toggle", "a": [], "b": [] }
core.flow.gate
Open/closed pass-through. enter runs the body only while open; open/close/toggle set the latch. UE Gate (ATOM-12).
{ "op": "flow.gate", "stateKey": "spawnGate", "action": "enter", "body": [] }
core.flow.multi_gate
Routes to one of N branches: cycle in order, seeded-random, or once-each. UE MultiGate (ATOM-12). Random uses the seeded RNG.
{ "op": "flow.multiGate", "stateKey": "spread", "mode": "cycle", "branches": [] }
core.flow.return
Stops the current event handler (or function) immediately; nothing after it runs.
return;
core.flow.timer.after
Schedules a latent continuation: after seconds (measured in ticks) the resumeEvent handler is re-entered. UE Delay (ATOM-13).
{ "op": "flow.timer.after", "seconds": { "op": "value.literal", "value": 2 }, "resumeEvent": "onDelayComplete" }
core.flow.timer.cancel
Cancels a pending latent timer by key before it fires; the schedule<->cancel dual of Timer After (ATOM-13).
cancel timer "reload";
core.get
Reads a bound variable or context path, preserving optional type evidence for a path whose declared type is unknown.
{ "op": "get", "path": ["ctx", "delta"] }
core.host.call
Calls a declared runtime host function.
{ "op": "host.call", "host": { "namespace": "Debug", "name": "log" }, "args": [] }
core.if
Runs one of two statement branches.
{ "op": "if", "test": { "op": "value.literal", "value": true }, "then": [], "else": [] }
core.let
Binds an expression to a local constant.
{ "op": "let", "name": "score", "value": { "op": "value.literal", "value": 0 } }
core.map
String-keyed map container: make, add, remove, contains, get, keys, values, length, merge. Functional (no in-place mutation); deterministic insertion-order iteration (ATOM-15).
{ "op": "map", "operator": "add", "map": {}, "key": {}, "value": {} }
core.math
Numeric library: min, max, abs, floor, ceil, round, clamp, sqrt, pow, sign, lerp, sin, cos, tan, asin, acos, atan, atan2, exp, ln, log10, log2, deg2rad, rad2deg, wrapAngle, smoothstep, imul32. The operator enum is the whole float/int library in one node (ATOM-1); imul32 is the 32-bit modular multiply (Math.imul) that pairs with the Bitwise node for integer hashing.
{ "op": "math", "operator": "abs", "a": {} }
core.math.remap
Re-scale a value from an input range [inMin, inMax] onto an output range [outMin, outMax], linearly. The five-operand gameplay staple (health bars, aim assist) that does not fit Math's a/b/c ternary shape, so it is its own op. Not clamped - pair with Clamp to bound it.
{ "op": "math.remap", "value": {}, "inMin": {}, "inMax": {}, "outMin": {}, "outMax": {} }
core.not
Negates a boolean value.
{ "op": "not", "value": { "op": "value.literal", "value": false } }
core.object
Functional record update + enumeration: set (one field) / merge (two objects) / delete (drop a field) return a NEW object; keys / entries / has read the record (dynamic-key enumeration; ATOM-8).
{ "op": "object", "operator": "merge", "target": {}, "source": {} }
core.quat
Quaternion rotation: make, multiply, slerp, fromEuler, toEuler, lookAt, rotateVector, inverse. Promotes the runtime Quaternion helpers; makes TransformComponent rotation ergonomic (ATOM-4).
{ "op": "quat", "operator": "fromEuler", "euler": {} }
core.record.get
Reads a typed field from an object, component, warehouse record, query result, or event payload object.
{ "op": "record.get", "record": { "op": "get", "path": ["progress"], "valueType": "data_record" }, "path": ["score"], "valueType": "number" }
core.select
Pure data multiplexer: returns ifTrue when condition is true, else ifFalse. UE Select - no exec branch (ATOM-9).
{ "op": "select", "condition": {}, "ifTrue": {}, "ifFalse": {}, "valueType": "number" }
core.sequence
Runs child statements in order.
{ "op": "sequence", "body": [] }
core.set
Assigns a value to a variable or path.
{ "op": "set", "path": ["state"], "value": { "op": "value.literal", "value": 1 } }
core.string
String operations: concat, length, format, contains, split, upper, lower, replace, substring, trim, startsWith, endsWith, indexOf. The operator enum composes dynamic HUD text and keys (ATOM-2).
{ "op": "string", "operator": "concat", "a": {}, "b": {} }
core.switch
Multi-way branch on an int / enum / string value: runs the matching case body, else the default. UE Switch (ATOM-9).
{ "op": "switch", "on": {}, "cases": [], "default": [] }
core.value.array
Creates an array from item expressions.
{ "op": "value.array", "items": [] }
core.value.assert
Asserts a runtime value has the expected primitive type before using it.
{ "op": "value.assert", "expectedType": "number", "value": { "op": "get", "path": ["score"], "valueType": "number" } }
core.value.cast
Marks a value as a known Script IR type after an explicit authoring decision.
{ "op": "value.cast", "to": "entity", "value": { "op": "value.literal", "value": "entity.target" } }
core.value.coerce
Safely coerces a value to string, number, boolean, or entity id with an optional fallback.
{ "op": "value.coerce", "to": "number", "value": { "op": "event.payload.get", "path": ["score"], "valueType": "json" }, "defaultValue": { "op": "value.literal", "value": 0 } }
core.value.literal
Creates a string, number, boolean, or null value.
{ "op": "value.literal", "value": 1 }
core.value.object
Creates an object from named entry expressions.
{ "op": "value.object", "entries": {} }
core.vec3
Vector3 algebra: add, sub, scale, dot, cross, length, normalize, distance, lerp, make, reflect, moveTowards, project, angleBetween, clampLength. Promotes the runtime Vector3 helpers to visual authoring (ATOM-3).
{ "op": "vec3", "operator": "make", "x": {}, "y": {}, "z": {} }
event.action
Runs after an authoritative input action resolves.
onActionResolved(ctx, event)
event.character_removed
Runs when a seat's Character body is removed, whether the seat departed, was rebound, or was eliminated. Fires before Player Left for the same seat.
onCharacterRemoved(ctx, event)
event.character_spawned
Runs when a Character body is spawned for a seat and bound to it. Fires after Player Joined for the same seat.
onCharacterSpawned(ctx, event)
event.custom
Runs when a declared custom event is dispatched.
onCustomEvent(ctx, event)
event.frame
Runs once per produced client frame.
onFrame(ctx, t, dt)
event.init
Runs once when a client_frame program instance initializes.
onInit(ctx)
event.match_ended
Runs when the match ends.
onMatchEnded(ctx, event)
event.network_message
Runs when an authorized network message arrives.
onNetworkMessage(ctx, event)
event.panel_action
Runs for an authored UI action from the player possessing this entity.
onPanelAction(ctx, event)
event.phase
Runs when a match phase is entered.
onPhaseEnter(ctx, event)
event.phase_exit
Runs when a match phase is exited.
onPhaseExit(ctx, event)
event.player_joined
Runs when a player joins the runtime.
onPlayerJoined(ctx, event)
event.player_left
Runs when a player leaves the runtime.
onPlayerLeft(ctx, event)
event.purchase_fulfilled
Runs when a purchase settles for a seat in this room, after the entitlement and any item grant are durable; reach for it to react to a sale, never to grant what was bought.
onPurchaseFulfilled(ctx, event)
event.resize
Runs when the program surface size changes.
onResize(ctx, width, height)
event.start
Runs when the script starts.
onStart(ctx)
event.tick
Runs once per runtime tick.
onTick(ctx, deltaSeconds)
event.timer
Runs when a TimerComponent dispatches a timer event.
onTimerFired(ctx, event)
event.trigger
Runs when another entity enters this entity's trigger.
onTriggerEnter(ctx, event)
event.trigger_exit
Runs when another entity leaves this entity trigger.
onTriggerExit(ctx, event)
event.widget_press
Runs for an authored UI action from the player possessing this entity.
onWidgetPress(ctx, event)
host.audio.play
Plays a one-shot sound. options.audience scopes who hears it: 'room' (default), 'owner', {players:[...]}, or {except:[...]}. Delivered within the tick over the reliable event lane.
ctx.audio.play(assetId, options)
host.audio.play_spatial
Plays a one-shot sound at a world position, attenuated by rolloff/refDistance/maxDistance (maxDistance is a hard silence radius). options.audience scopes who hears it. Delivered within the tick over the reliable event lane.
ctx.audio.playSpatial(assetId, position, options)
host.audio.set_background_music
Requests background music playback by ProjectAsset UUID.
ctx.audio.setBackgroundMusic(assetId, options)
host.audio.set_volume
Sets volume for an audio handle.
ctx.audio.setVolume(handle, volume)
host.audio.stop
Stops an audio handle.
ctx.audio.stop(handle)
host.camera.add_look_input
Adds a look delta to the client look controller this tick, on top of the player's own look input.
ctx.camera.addLookInput(delta)
host.camera.set_look_sensitivity
Sets the client look controller sensitivity, in degrees of rotation per input unit.
ctx.camera.setLookSensitivity(degreesPerUnit)
host.camera.set_pitch_clamp
Clamps the client look controller pitch between a minimum and maximum, in degrees.
ctx.camera.setPitchClamp(minDeg, maxDeg)
host.camera.set_view_target
Points the client view at a target entity (optionally world-space offset), overriding free look until cleared.
ctx.camera.setViewTarget(target, offset)
host.commerce.owns
Reads whether a seat holds an entitlement key from the durable entitlement facts; reach for it to gate content on a purchase without waiting for the fulfillment event.
ctx.commerce.owns(entitlementKey, playerSessionId)
host.commerce.prompt_purchase
Opens the platform-owned purchase prompt for an offer on the addressed seat; reach for it when a script wants to sell an offer it never renders or confirms itself.
ctx.commerce.promptPurchase(offerKey, audience)
host.debug.log
Writes a structured runtime log entry at the given level (default info).
ctx.log(message, metadata, level)
host.entity.add_component
Adds a component through a canonical entity handle.
ctx.entity.addComponent(componentType, data)
host.entity.ancestors
Reads ancestor entities.
ctx.entity.ancestors()
host.entity.children
Reads child entities.
ctx.entity.children()
host.entity.descendants
Reads descendant entities.
ctx.entity.descendants(options)
host.entity.detach
Detaches an entity from its parent.
ctx.entity.detach(options)
host.entity.has_tag
Checks a first-class entity tag.
ctx.entity.hasTag(tag)
host.entity.parent
Reads the parent entity.
ctx.entity.parent()
host.entity.patch_component
Patches a component through a canonical entity handle.
ctx.entity.patchComponent(componentType, patch)
host.entity.read_component
Reads a component from a canonical entity handle.
ctx.entity.readComponent(componentTypeOrKey)
host.entity.remove_component
Removes a component through a canonical entity handle.
ctx.entity.removeComponent(componentTypeOrKey)
host.entity.remove_tag
Removes a first-class entity tag.
ctx.entity.removeTag(tag)
host.entity.replace_component
Replaces a component through a canonical entity handle.
ctx.entity.replaceComponent(componentType, data)
host.entity.set_name
Changes an entity's display name.
ctx.entity.setName(name)
host.entity.set_owner
Writes the Profile that owns a thing, or clears it when the profile id is omitted. Room Script hosts only (I-19).
ctx.entity.setOwner(entityId, profileId)
host.entity.set_parent
Parents one entity under another.
ctx.entity.setParent(parentId, options)
host.entity.set_tag
Adds a first-class entity tag.
ctx.entity.setTag(tag)
host.entity.world_position
Reads this entity's composed world-space position as a typed vector3, so a script can aim, offset, or measure distance from where the entity is this tick without decoding a component read.
ctx.entity.worldPosition()
host.entity.world_rotation
Reads this entity's composed world-space rotation as a typed vector3 of Euler angles matching the Transform, so a script can derive facing or a forward direction without decoding a component read.
ctx.entity.worldRotation()
host.events.emit
Emits a deterministic custom event.
ctx.events.emit(eventKey, payload, targetEntityId)
host.fx.decal
Projects a one-shot decal as a presentation cue (a bounded subset of DecalComponent). options.audience scopes who sees it: 'room' (default), 'owner', {players:[...]}, or {except:[...]}. Cosmetic only - never mutates simulation. Delivered within the tick over the reliable event lane.
ctx.fx.decal(options)
host.fx.particle_burst
Emits a one-shot particle burst as a presentation cue (a bounded subset of ParticleEmitterComponent). options.audience scopes who sees it: 'room' (default), 'owner', {players:[...]}, or {except:[...]}. Cosmetic only - never mutates simulation. Delivered within the tick over the reliable event lane; the seed derives from the cue id so a replayed tick is identical.
ctx.fx.particleBurst(options)
host.inventory.grant
Grants a positive quantity of an item to a seat's inventory through the durable authority outbox; reach for it when gameplay earns an item outside a purchase.
ctx.inventory.grant(playerSessionId, itemKey, quantity, reason)
host.match.add_score
Credits a signed score amount to a team or player subject on a match scoreboard.
ctx.match.addScore(subjectKey, amount, scoreboardKey, reason)
host.match.get_score
Reads a subject's score total from the authoritative scoreboard snapshot (as of the last applied tick).
ctx.match.getScore(subjectKey, scoreboardKey)
host.match.get_state
Reads match lifecycle state.
ctx.match.getState()
host.match.patch_objective
Merges a partial state patch into a declarative match objective.
ctx.match.patchObjective(objectiveKey, patch, reason)
host.match.set_phase
Requests a match phase transition.
ctx.match.setPhase(phaseKey, reason, metadata)
host.navigation.find_path
Computes a walkable path between two world points for an agent profile.
ctx.navigation.findPath(worldId, from, to, agentProfileKey)
host.navigation.is_reachable
Returns whether a walkable path exists between two world points.
ctx.navigation.isReachable(worldId, from, to, agentProfileKey)
host.navigation.nearest_point
Returns the nearest walkable point to a world point, or null when off the walkable area.
ctx.navigation.nearestPoint(worldId, point, agentProfileKey)
host.navigation.raycast
Line-of-walk between two world points; returns whether it is blocked and the hit point.
ctx.navigation.raycast(worldId, from, to, agentProfileKey)
host.navigation.steer_toward
Takes one navmesh steering step toward a target, capped at Max Step. Returns whether the agent arrived, its next position and direction, and the distance remaining. Write Next to the agent's Position each tick; no second mover is created.
ctx.navigation.steerToward(worldId, from, to, maxStep, agentProfileKey)
host.network.send_message
Sends a reliable network message to every subscribed client on a channel, or privately to one player session. Delivered within the tick over the reliable event lane.
ctx.network.sendMessage(channel, payload, playerId)
host.physics.command
Changes one entity's physics body with a declared force, impulse, launch, torque, teleport, or reset command.
ctx.physics.command(entityId, bodyCommand)
host.physics.occupancy_query
Reads the IDs of entities occupying a spatial cell.
ctx.physics.occupancyQuery(worldId, cellKey)
host.physics.overlap_test
Tests a transformed shape against the physics query host.
ctx.physics.overlapTest(shape, transform, filter)
host.physics.raycast
Casts a ray through the physics query host.
ctx.physics.raycast(origin, direction, distance, filter)
host.physics.shapecast
Casts a shape through the physics query host.
ctx.physics.shapecast(shape, transform, direction, distance, filter)
host.platform.exit_fullscreen
Queues exiting fullscreen on the client.
ctx.platform.exitFullscreen()
host.platform.exit_pointer_lock
Queues exiting pointer lock on the client.
ctx.platform.exitPointerLock()
host.platform.request_fullscreen
Queues a browser fullscreen request on the client.
ctx.platform.requestFullscreen(target)
host.platform.request_pointer_lock
Queues a browser pointer-lock request on the client.
ctx.platform.requestPointerLock()
host.player.eliminate
Eliminates the Character a seat possesses: journals the eliminated fact, releases the seat, and lets the character policy respawn it after its delay. Use it when authored damage decides a Player is out. Requires a Room Script host unless the seat is the one possessing this script's entity.
ctx.players.eliminate(playerSessionId, reason)
host.player.possess
Binds a seat to an entity through the one possession writer. Requires a Room Script host unless the seat is the one possessing this script's entity.
ctx.players.possess(playerSessionId, entityId)
host.player.release
Clears a seat's possession through the one possession writer. Requires a Room Script host unless the seat is the one possessing this script's entity.
ctx.players.release(playerSessionId, reason)
host.player.spawn_character
Asks the character policy to spawn a body for a seat and bind it. Requires a Room Script host unless the seat is the one possessing this script's entity.
ctx.players.spawnCharacter(playerSessionId, options)
host.players.get
Gets one Player by seat session id, or undefined when that seat is not on the live roster.
ctx.players.get(playerSessionId)
host.players.list
Lists the live Player roster for this room: every seat that is joining, connected, or disconnected-resumable, in join order.
ctx.players.list()
host.program.input_actions
Reads the held-action bitset of the current input bundle (pp-abi.v1 SPEC 4.4, byte offset 92) as a number: bit i is 1 when the declared action at index i is held this frame. Decode individual actions with the bitwise family, e.g. bitwise.and(Program.inputActions(), 1) tests action 0. Pure client-produce read; does not change the bundle.
ctx.program.inputActions()
host.program.input_bundle
Copies the current 128-byte input bundle (pp-abi.v1 SPEC 4.4) into an array of number, one f64 slot per index: [0..3] look quaternion x/y/z/w; [4..6] camera world position x/y/z; [7..10] camera rotation quaternion x/y/z/w; [11] flags (bit 0 = pointerLocked) packed with the held-action bitset; [12..13] pointer delta x/y since last snapshot; [14..15] pointer position x/y normalized 0..1 over the surface. Pure read; the bundle is a copy, never live-mutated.
ctx.program.inputBundle()
host.program.input_flags
Reads the flags word of the current input bundle (pp-abi.v1 SPEC 4.4, byte offset 88) as a number: bit 0 = pointerLocked. Decode with the bitwise family, e.g. bitwise.and(Program.inputFlags(), 1). Pure client-produce read; does not change the bundle.
ctx.program.inputFlags()
host.program.param
Reads authored numeric parameter at the given exposed-field index (0-based, server-ordered, stable). Out-of-range indices read as 0 (pp-abi.v1 param_f64).
ctx.program.param(index)
host.program.param_count
Returns the number of authored numeric parameters (the script's numeric exposed fields) available to this program instance (pp-abi.v1 param_count).
ctx.program.paramCount()
host.random.bool
Returns true with probability p (default 0.5).
ctx.random.bool(p, stream)
host.random.gaussian
Returns a Box-Muller normal sample with mean (default 0) and std (default 1).
ctx.random.gaussian(mean, std, stream)
host.random.int
Returns an unbiased integer in [min, max] inclusive (rejection sampling).
ctx.random.int(min, max, stream)
host.random.next
Returns the deterministic seeded random value.
ctx.random()
host.random.pick
Returns a uniform element of the array; undefined for an empty array.
ctx.random.pick(array, stream)
host.random.point_in_circle
Returns a uniform point inside the XZ-plane disk of the given radius (y = 0).
ctx.random.pointInCircle(radius, stream)
host.random.point_in_sphere
Returns a uniform point inside the ball of the given radius.
ctx.random.pointInSphere(radius, stream)
host.random.range
Returns a uniform float in [min, max).
ctx.random.range(min, max, stream)
host.random.seeded
Creates a reproducible named PRNG stream: same seed yields the same sequence.
ctx.random.seeded(seed)
host.random.shuffle
Returns a NEW Fisher-Yates shuffled array; the input is never mutated.
ctx.random.shuffle(array, stream)
host.random.sign
Returns -1 or 1, uniform.
ctx.random.sign(stream)
host.random.unit_vector
Returns a uniform direction on the unit sphere.
ctx.random.unitVector(stream)
host.random.weighted_pick
Returns an element with probability proportional to weights; undefined for empty/zero-weight inputs.
ctx.random.weightedPick(items, weights, stream)
host.room.get_players
Reads the room's connected-player roster (active participants, deterministic join order, bounded by room capacity - not by a query limit).
ctx.room.getPlayers()
host.room.get_state
Reads room-level runtime state.
ctx.room.getState()
host.team.get_assignment
Reads the current entity's team assignment.
ctx.team.getAssignment()
host.terrain.height_at
Reads the terrain surface height (world Y) at a world XZ position.
ctx.terrain.heightAt(worldId, x, z)
host.terrain.normal_at
Reads the terrain surface normal at a world XZ position.
ctx.terrain.normalAt(worldId, x, z)
host.terrain.raycast_down
Casts straight down to the terrain surface; returns the hit or null.
ctx.terrain.raycastDown(worldId, x, z, fromY)
host.terrain.sample_layer_weights
Reads the per-layer blend weights at a world XZ position.
ctx.terrain.sampleLayerWeights(worldId, x, z)
host.terrain.slope_at
Reads the terrain slope in degrees at a world XZ position.
ctx.terrain.slopeAt(worldId, x, z)
host.tween.cancel
Stops a running tween by key before it completes; the schedule<->cancel dual of Tween Start.
ctx.tween.cancel(key)
host.tween.start
Animates one entity's component field from its current value to a target over a fixed duration, using a deterministic easing curve. Fire-and-forget; runs on the server tick.
ctx.tween.start(entityId, spec)
host.ui.close_panel
Requests closing a UI panel. audience scopes who it closes for.
ctx.ui.closePanel(panelKey, audience)
host.ui.open_panel
Requests opening a UI panel. audience scopes who sees it: 'room' (default), 'owner', {players:[...]}, or {except:[...]}.
ctx.ui.openPanel(panelKey, payload, audience)
host.ui.set_widget_value
Requests a runtime UI widget value update. audience scopes who sees it: 'room' (default), 'owner', {players:[...]}, or {except:[...]}.
ctx.ui.setWidgetValue(panelKey, widgetKey, value, audience)
host.warehouse.append
Buffers an atomic append to a warehouse record list field.
ctx.warehouse.append(key, recordKey, path, value)
host.warehouse.create
Buffers the creation of a warehouse record.
ctx.warehouse.create(key, recordKey, value)
host.warehouse.delete
Buffers the deletion of a warehouse record.
ctx.warehouse.delete(key, recordKey)
host.warehouse.get
Reads a prefetched warehouse record.
ctx.warehouse.get(key, recordKey)
host.warehouse.increment
Buffers an atomic numeric increment across warehouse record fields.
ctx.warehouse.increment(key, recordKey, changes)
host.warehouse.query
Reads a prefetched warehouse query result.
ctx.warehouse.query(key, filter, options)
host.warehouse.set
Buffers a create-or-replace of the whole warehouse record value (a safe upsert, not a stale read-modify-write).
ctx.warehouse.set(key, recordKey, value)
host.warehouse.transform
Applies field ops to a warehouse record under its row lock, optionally guarded by an expected version.
ctx.warehouse.transform(key, recordKey, ops, expect)
host.warehouse.update
Buffers a deprecated last-writer-wins patch of a warehouse record: a blind read-modify-write that is safe under the row lock but loses concurrent writes to the same fields. For counters use Warehouse Increment; for structured edits use Warehouse Set or Warehouse Append.
ctx.warehouse.update(key, recordKey, patch)
host.water.is_submerged
Returns whether a point is below the water surface.
ctx.water.isSubmerged(worldId, point)
host.water.surface_level_at
Reads the water surface level (world Y) at a world XZ position.
ctx.water.surfaceLevelAt(worldId, x, z, atTimeMs)
host.world.despawn
Requests despawn of a same-room entity.
ctx.world.despawn(entityId, options)
host.world.entity_has_tag
Reads whether ANOTHER entity carries a first-class tag this tick, returning a boolean. Reach for it to check a target's marker from a room host, such as whether an owner's base is locked before a steal resolves.
ctx.world.entityHasTag(entityId, tag)
host.world.find
Finds entities through one canonical filter object.
ctx.world.find(filter)
host.world.query
Bounded paged world query: Find Entities' filter algebra plus a keyset cursor. Returns a deterministically ordered page with entities, nextCursor (present while matches remain), and totalMatched.
ctx.world.query(options)
host.world.set_entity_owner
Transfers ownership of ANOTHER entity to a Profile, or clears it when the profile id is omitted, as one journaled fact carrying the previous and next owner. Room Script hosts only (I-19). Reach for it to assign a base or resolve a steal from a room host, when the owned thing is not this script's own entity.
ctx.world.setEntityOwner(entityId, profileId)
host.world.set_entity_tag
Adds a first-class tag to ANOTHER same-world entity (rate-limited, the same authority World.despawn uses). Reach for it to mark a target from a room host, such as locking an owner's base, when the tag belongs on an entity other than this script's own.
ctx.world.setEntityTag(entityId, tag)
host.world.spawn
Requests a dynamic entity spawn.
ctx.world.spawn(config)
host.world.spawn_many
Requests up to 64 dynamic entity spawns from one call. Each config drains through the same entity_spawn operation a single Spawn Entity uses, so ids, canonicalization and authority are identical; only the host-call cost is shared.
ctx.world.spawnMany(configs)
host.world.spawn_prefab
Spawns a prefab by key at an optional position. First-class atom over the prefab_instantiate drain (ATOM-11).
ctx.world.spawnPrefab(prefabKey, position)
host.world.teleport_player
Issues a cross-world player handoff.
ctx.world.teleportPlayer(playerId, targetWorldKey, options)
Consumer Input Presentation
This table is generated from the same declaration metadata used by Blueprint cards, the Inspector, validation, and inverse folding. Storage types describe canonical IR; the editor and domain columns describe what an author sees and may choose.
| Node | Input | Consumer label | IR type | Editor | Declared domain | Help |
|---|---|---|---|---|---|---|
core.arithmetic | left | left | number | inline literal | ||
core.arithmetic | right | right | number | inline literal | ||
core.array.first | array | array | array | inline literal | ||
core.array.first | defaultValue | defaultValue | unknown | typed literal or connection | Fallback when the array is empty. | |
core.array.for_each | array | array | array | inline literal | ||
core.array.get | array | array | array | inline literal | ||
core.array.get | defaultValue | defaultValue | unknown | typed literal or connection | Fallback when the index is absent. | |
core.array.get | index | index | number | inline literal | ||
core.array.length | array | array | array | inline literal | ||
core.array.mutate | array | array | array | inline literal | Source array. | |
core.array.mutate | index | index | number | inline literal | Index (insert / removeAt / set). | |
core.array.mutate | value | value | unknown | typed literal or connection | Value (push / insert / set). | |
core.array.query | array | array | array | inline literal | Source array. | |
core.array.query | end | end | number | inline literal | End index for slice. | |
core.array.query | needle | needle | unknown | typed literal or connection | Value to find (contains / indexOf). | |
core.array.query | other | other | array | inline literal | Array to concatenate. | |
core.array.query | separator | separator | string | inline literal | Separator for join. | |
core.array.query | start | start | number | inline literal | Start index for slice. | |
core.array.reduce | array | array | array | inline literal | Source array to fold. | |
core.array.reduce | expr | expr | unknown | inline literal | Per-item expression producing the next accumulator; reads the item and accumulator via Get. | |
core.array.reduce | seed | seed | unknown | inline literal | Initial accumulator value. | |
core.array.transform | array | array | array | inline literal | Source array. | |
core.array.transform | expr | expr | unknown | typed literal or connection | Per-item expression (map value / filter+find+some+every predicate / sortBy key); reads the item via Get. | |
core.bitwise | a | a | number | inline literal | First operand (the sole operand for not). | |
core.bitwise | b | b | number | inline literal | Second operand (shift count for shl/shr/ushr; unused by not). | |
core.boolean | left | left | boolean | inline literal | ||
core.boolean | right | right | boolean | inline literal | ||
core.bounded.for | from | from | number | inline literal | ||
core.bounded.for | step | step | number | inline literal | ||
core.bounded.for | to | to | number | inline literal | ||
core.bounded.while | test | test | boolean | inline literal | ||
core.comparison | left | left | unknown | typed literal or connection | ||
core.comparison | right | right | unknown | typed literal or connection | ||
core.component.patch | entity | entity | entity | inline literal; entity reference (key) | Optional target entity. | |
core.component.patch | patch | patch | object | inline literal | ||
core.component.read | entity | entity | entity | inline literal; entity reference (key) | Optional target entity. | |
core.entity.id | entity | entity | entity | inline literal; entity reference (key) | Optional entity. With no input, uses the entity running this script. | |
core.event.payload.get | defaultValue | defaultValue | unknown | typed literal or connection | Fallback when the payload path is absent. | |
core.flow.do_n | n | n | number | inline literal | How many times to allow. | |
core.flow.do_n | reset | reset | boolean | inline literal | Re-arm the counter when true. | |
core.flow.do_once | reset | reset | boolean | inline literal | Re-arm the gate when true. | |
core.flow.timer.after | key | key | string | inline literal | Optional timer key to disambiguate concurrent timers. | |
core.flow.timer.after | seconds | seconds | number | inline literal | Delay in seconds (rounded up to whole ticks). | |
core.flow.timer.cancel | key | key | string | inline literal | Timer key matching the one the Timer After scheduled. | |
core.host.call | args | args | array | inline literal | Host arguments. | |
core.if | test | test | boolean | inline literal | ||
core.let | value | value | unknown | typed literal or connection | ||
core.map | defaultValue | defaultValue | unknown | typed literal or connection | Value returned by get when the key is absent (optional). | |
core.map | key | key | string | inline literal | Key (add / remove / contains / get). | |
core.map | map | map | map | inline literal | Source map. | |
core.map | other | other | map | inline literal | Map to merge in (merge; right/other wins on key collision). | |
core.map | value | value | unknown | typed literal or connection | Value (add). | |
core.math.remap | inMax | inMax | number | inline literal | High end of the input range. | |
core.math.remap | inMin | inMin | number | inline literal | Low end of the input range. | |
core.math.remap | outMax | outMax | number | inline literal | High end of the output range. | |
core.math.remap | outMin | outMin | number | inline literal | Low end of the output range. | |
core.math.remap | value | value | number | inline literal | The value to re-scale. | |
core.math | a | a | number | inline literal | First operand (edge0 for smoothstep). | |
core.math | b | b | number | inline literal | Second operand (binary ops / clamp min / lerp end / smoothstep edge1 / imul32 multiplicand). | |
core.math | c | c | number | inline literal | Third operand (clamp max / lerp factor / smoothstep x). | |
core.not | value | value | boolean | inline literal | ||
core.object | key | key | string | inline literal | Field name for set / has / delete. | |
core.object | source | source | object | inline literal | Object to merge in. | |
core.object | target | target | object | inline literal | Object to read or update. | |
core.object | value | value | unknown | typed literal or connection | Field value for set. | |
core.quat | a | a | quaternion | inline literal | Primary quaternion (the rotation to apply for rotateVector). | |
core.quat | b | b | quaternion | inline literal | Second quaternion (multiply / slerp). | |
core.quat | euler | euler | vector3 | inline literal | Euler angles for fromEuler. | |
core.quat | forward | forward | vector3 | inline literal | Forward direction for lookAt. | |
core.quat | t | t | number | inline literal | Slerp factor 0..1. | |
core.quat | up | up | vector3 | inline literal | Up direction for lookAt. | |
core.quat | vec | vec | vector3 | inline literal | Direction rotated by the quaternion (rotateVector). | |
core.quat | w | w | number | inline literal | W for make. | |
core.quat | x | x | number | inline literal | X for make. | |
core.quat | y | y | number | inline literal | Y for make. | |
core.quat | z | z | number | inline literal | Z for make. | |
core.record.get | defaultValue | defaultValue | unknown | typed literal or connection | Fallback when the record path is absent. | |
core.record.get | record | record | object | inline literal | ||
core.select | condition | condition | boolean | inline literal | Selector. | |
core.select | ifFalse | ifFalse | unknown | inline literal | Value when condition is false. | |
core.select | ifTrue | ifTrue | unknown | inline literal | Value when condition is true. | |
core.set | value | value | unknown | typed literal or connection | ||
core.string | a | a | string | inline literal | Primary string (or template for format). | |
core.string | b | b | string | inline literal | Second string (concat / contains / split / replace search / startsWith / endsWith / indexOf). | |
core.string | c | c | string | inline literal | Replacement string (replace). | |
core.string | end | end | number | inline literal | End index (substring; optional). | |
core.string | slots | slots | object | inline literal | Named substitution slots for format ({name} -> value). | |
core.string | start | start | number | inline literal | Start index (substring). | |
core.switch | on | on | unknown | typed literal or connection | Value to switch on. | |
core.value.array | items | items | array | inline literal | ||
core.value.assert | value | value | unknown | typed literal or connection | ||
core.value.cast | value | value | unknown | typed literal or connection | ||
core.value.coerce | defaultValue | defaultValue | unknown | typed literal or connection | Fallback when coercion cannot produce a finite value. | |
core.value.coerce | value | value | unknown | typed literal or connection | ||
core.value.object | entries | entries | object | inline literal | ||
core.vec3 | left | left | vector3 | inline literal | Primary vector (incident for reflect; current for moveTowards; the vector to project/measure/clamp). | |
core.vec3 | right | right | vector3 | inline literal | Second vector for binary ops (normal for reflect; target for moveTowards; the vector to project onto / measure the angle to). | |
core.vec3 | scalar | scalar | number | inline literal | Scale factor (max step distance for moveTowards; max length for clampLength). | |
core.vec3 | t | t | number | inline literal | Interpolation factor 0..1. | |
core.vec3 | x | x | number | inline literal | X component for make. | |
core.vec3 | y | y | number | inline literal | Y component for make. | |
core.vec3 | z | z | number | inline literal | Z component for make. | |
host.audio.play_spatial | assetId | assetId | string | inline literal | ||
host.audio.play_spatial | options | options | object | inline literal | ||
host.audio.play_spatial | position | position | vector3 | inline literal | ||
host.audio.play | assetId | assetId | string | inline literal | ||
host.audio.play | options | options | object | inline literal | ||
host.audio.set_background_music | assetId | assetId | string | inline literal | ||
host.audio.set_background_music | options | options | object | inline literal | ||
host.audio.set_volume | handle | handle | audio_handle | inline literal | ||
host.audio.set_volume | volume | volume | number | inline literal | ||
host.audio.stop | handle | handle | audio_handle | inline literal | ||
host.camera.add_look_input | delta | delta | vector3 | inline literal | Look delta: x = yaw degrees, y = pitch degrees. | |
host.camera.set_look_sensitivity | degreesPerUnit | degreesPerUnit | number | inline literal | Look sensitivity in degrees per input unit. | |
host.camera.set_pitch_clamp | maxDeg | maxDeg | number | inline literal | Maximum pitch in degrees. | |
host.camera.set_pitch_clamp | minDeg | minDeg | number | inline literal | Minimum pitch in degrees. | |
host.camera.set_view_target | offset | offset | vector3 | inline literal | Optional world-space offset from the target. | |
host.camera.set_view_target | target | target | entity | inline literal; entity reference (key) | Entity to look at. | |
host.commerce.owns | entitlementKey | entitlementKey | string | inline literal | Entitlement key granted by an offer. | |
host.commerce.owns | playerSessionId | playerSessionId | string | inline literal | Seat to check; defaults to the seat possessing this entity. | |
host.commerce.prompt_purchase | audience | audience | json | inline literal | Seats to prompt: "owner" (default, the seat possessing this entity), { players: [...] } or { except: [...] }. Never "room". | |
host.commerce.prompt_purchase | offerKey | offerKey | string | inline literal | Key of a published offer of this game. | |
host.debug.log | level | level | string | inline literal | One of debug, info, warn, error. Defaults to info. | |
host.debug.log | message | message | string | inline literal | ||
host.debug.log | metadata | metadata | object | inline literal | ||
host.entity.add_component | componentType | componentType | string | inline literal | ||
host.entity.add_component | data | data | object | inline literal | ||
host.entity.descendants | options | options | object | inline literal | ||
host.entity.detach | options | options | object | inline literal | ||
host.entity.has_tag | tag | tag | string | inline literal | ||
host.entity.patch_component | componentType | componentType | string | inline literal | ||
host.entity.patch_component | patch | patch | object | inline literal | ||
host.entity.read_component | componentTypeOrKey | componentTypeOrKey | string | inline literal | ||
host.entity.remove_component | componentTypeOrKey | componentTypeOrKey | string | inline literal | ||
host.entity.remove_tag | tag | tag | string | inline literal | ||
host.entity.replace_component | componentType | componentType | string | inline literal | ||
host.entity.replace_component | data | data | object | inline literal | ||
host.entity.set_name | name | name | string | inline literal | ||
host.entity.set_owner | entityId | entityId | string | inline literal | ||
host.entity.set_owner | profileId | profileId | string | inline literal | ||
host.entity.set_parent | options | options | object | inline literal | ||
host.entity.set_parent | parentId | parentId | string | inline literal | ||
host.entity.set_tag | tag | tag | string | inline literal | ||
host.events.emit | eventKey | eventKey | string | inline literal | ||
host.events.emit | payload | payload | object | inline literal | ||
host.events.emit | targetEntityId | targetEntityId | entity | inline literal; entity reference (key) | Optional target entity (id or key): only that entity's listeners receive the event. Omit to broadcast to the room. | |
host.fx.decal | options | options | object | inline literal | Decal options: the bounded Decal subset, placement { at, rotation?, attachEntityId? }, ttlTicks, and audience. | |
host.fx.particle_burst | options | options | object | inline literal | Burst options: the bounded ParticleEmitter subset, placement { at, rotation?, attachEntityId? }, ttlTicks, and audience. | |
host.inventory.grant | itemKey | itemKey | string | inline literal | Item key declared by the game's economy. | |
host.inventory.grant | playerSessionId | playerSessionId | string | inline literal | Seat whose inventory receives the item. | |
host.inventory.grant | quantity | quantity | number | inline literal | Strictly positive integer quantity. | |
host.inventory.grant | reason | reason | string | inline literal | ||
host.match.add_score | amount | amount | number | inline literal | Signed score delta to add. | |
host.match.add_score | reason | reason | string | inline literal | ||
host.match.add_score | scoreboardKey | scoreboardKey | string | inline literal | Scoreboard key; defaults to the blueprint's only scoreboard. | |
host.match.add_score | subjectKey | subjectKey | string | inline literal | Team key or player key credited with the score. | |
host.match.get_score | scoreboardKey | scoreboardKey | string | inline literal | Scoreboard key; defaults to the snapshot's only scoreboard. | |
host.match.get_score | subjectKey | subjectKey | string | inline literal | Team key or player key to read. | |
host.match.patch_objective | objectiveKey | objectiveKey | string | inline literal | Objective key declared by the multiplayer blueprint. | |
host.match.patch_objective | patch | patch | object | inline literal | Partial objective state merged by the authoritative drain. | |
host.match.patch_objective | reason | reason | string | inline literal | ||
host.match.set_phase | metadata | metadata | object | inline literal | ||
host.match.set_phase | phaseKey | phaseKey | string | inline literal | ||
host.match.set_phase | reason | reason | string | inline literal | ||
host.navigation.find_path | agentProfileKey | agentProfileKey | string | inline literal | ||
host.navigation.find_path | from | from | vector3 | inline literal | ||
host.navigation.find_path | to | to | vector3 | inline literal | ||
host.navigation.find_path | worldId | worldId | string | inline literal | ||
host.navigation.is_reachable | agentProfileKey | agentProfileKey | string | inline literal | ||
host.navigation.is_reachable | from | from | vector3 | inline literal | ||
host.navigation.is_reachable | to | to | vector3 | inline literal | ||
host.navigation.is_reachable | worldId | worldId | string | inline literal | ||
host.navigation.nearest_point | agentProfileKey | agentProfileKey | string | inline literal | ||
host.navigation.nearest_point | point | point | vector3 | inline literal | ||
host.navigation.nearest_point | worldId | worldId | string | inline literal | ||
host.navigation.raycast | agentProfileKey | agentProfileKey | string | inline literal | ||
host.navigation.raycast | from | from | vector3 | inline literal | ||
host.navigation.raycast | to | to | vector3 | inline literal | ||
host.navigation.raycast | worldId | worldId | string | inline literal | ||
host.navigation.steer_toward | agentProfileKey | agentProfileKey | string | inline literal | ||
host.navigation.steer_toward | from | from | vector3 | inline literal | ||
host.navigation.steer_toward | maxStep | maxStep | number | inline literal | ||
host.navigation.steer_toward | to | to | vector3 | inline literal | ||
host.navigation.steer_toward | worldId | worldId | string | inline literal | ||
host.network.send_message | channel | channel | string | inline literal | ||
host.network.send_message | payload | payload | object | inline literal | ||
host.network.send_message | playerId | playerId | string | inline literal | Player session id for a private send; omit to broadcast. | |
host.physics.command | bodyCommand | Command | object | inline literal; declared choice | Apply Force [Force: vector3, At Point: vector3?], Apply Impulse [Impulse: vector3, At Point: vector3?], Launch Entity [Velocity: vector3], Apply Torque [Torque: vector3], Apply Torque Impulse [Torque Impulse: vector3], Teleport Body [Position: vector3, Rotation: vector3?, Velocity: vector3?, Angular Velocity: vector3?, Wake Body: boolean?], Reset Body [Position: vector3?, Rotation: vector3?, Velocity: vector3?, Angular Velocity: vector3?, Wake Body: boolean?] | Physics operation and the fields required by that operation. |
host.physics.command | entityId | Target | entity | inline literal; entity reference (key) | Entity whose physics body should change. | |
host.physics.occupancy_query | cellKey | cellKey | string | inline literal | ||
host.physics.occupancy_query | worldId | worldId | string | inline literal | ||
host.physics.overlap_test | filter | filter | object | inline literal | ||
host.physics.overlap_test | shape | shape | object | inline literal | ||
host.physics.overlap_test | transform | transform | object | inline literal | ||
host.physics.raycast | direction | direction | vector3 | inline literal | ||
host.physics.raycast | distance | distance | number | inline literal | ||
host.physics.raycast | filter | filter | object | inline literal | ||
host.physics.raycast | origin | origin | vector3 | inline literal | ||
host.physics.shapecast | direction | direction | vector3 | inline literal | ||
host.physics.shapecast | distance | distance | number | inline literal | ||
host.physics.shapecast | filter | filter | object | inline literal | ||
host.physics.shapecast | shape | shape | object | inline literal | ||
host.physics.shapecast | transform | transform | object | inline literal | ||
host.platform.request_fullscreen | target | target | string | inline literal | ||
host.player.eliminate | playerSessionId | playerSessionId | string | inline literal | ||
host.player.eliminate | reason | reason | string | inline literal | ||
host.player.possess | entityId | entityId | string | inline literal | ||
host.player.possess | playerSessionId | playerSessionId | string | inline literal | ||
host.player.release | playerSessionId | playerSessionId | string | inline literal | ||
host.player.release | reason | reason | string | inline literal | ||
host.player.spawn_character | options | options | object | inline literal | ||
host.player.spawn_character | playerSessionId | playerSessionId | string | inline literal | ||
host.players.get | playerSessionId | playerSessionId | string | inline literal | ||
host.program.param | index | index | number | inline literal | Exposed-field index (0-based, server-ordered). | |
host.random.bool | p | p | number | inline literal | ||
host.random.bool | stream | stream | random_stream | inline literal | ||
host.random.gaussian | mean | mean | number | inline literal | ||
host.random.gaussian | std | std | number | inline literal | ||
host.random.gaussian | stream | stream | random_stream | inline literal | ||
host.random.int | max | max | number | inline literal | ||
host.random.int | min | min | number | inline literal | ||
host.random.int | stream | stream | random_stream | inline literal | ||
host.random.pick | array | array | array | inline literal | ||
host.random.pick | stream | stream | random_stream | inline literal | ||
host.random.point_in_circle | radius | radius | number | inline literal | ||
host.random.point_in_circle | stream | stream | random_stream | inline literal | ||
host.random.point_in_sphere | radius | radius | number | inline literal | ||
host.random.point_in_sphere | stream | stream | random_stream | inline literal | ||
host.random.range | max | max | number | inline literal | ||
host.random.range | min | min | number | inline literal | ||
host.random.range | stream | stream | random_stream | inline literal | ||
host.random.seeded | seed | seed | string | inline literal | ||
host.random.shuffle | array | array | array | inline literal | ||
host.random.shuffle | stream | stream | random_stream | inline literal | ||
host.random.sign | stream | stream | random_stream | inline literal | ||
host.random.unit_vector | stream | stream | random_stream | inline literal | ||
host.random.weighted_pick | items | items | array | inline literal | ||
host.random.weighted_pick | stream | stream | random_stream | inline literal | ||
host.random.weighted_pick | weights | weights | array | inline literal | ||
host.terrain.height_at | worldId | worldId | string | inline literal | ||
host.terrain.height_at | x | x | number | inline literal | ||
host.terrain.height_at | z | z | number | inline literal | ||
host.terrain.normal_at | worldId | worldId | string | inline literal | ||
host.terrain.normal_at | x | x | number | inline literal | ||
host.terrain.normal_at | z | z | number | inline literal | ||
host.terrain.raycast_down | fromY | fromY | number | inline literal | ||
host.terrain.raycast_down | worldId | worldId | string | inline literal | ||
host.terrain.raycast_down | x | x | number | inline literal | ||
host.terrain.raycast_down | z | z | number | inline literal | ||
host.terrain.sample_layer_weights | worldId | worldId | string | inline literal | ||
host.terrain.sample_layer_weights | x | x | number | inline literal | ||
host.terrain.sample_layer_weights | z | z | number | inline literal | ||
host.terrain.slope_at | worldId | worldId | string | inline literal | ||
host.terrain.slope_at | x | x | number | inline literal | ||
host.terrain.slope_at | z | z | number | inline literal | ||
host.tween.cancel | key | key | string | inline literal | Tween key matching the one Tween Start used. | |
host.tween.start | entityId | Target | entity | inline literal; entity reference (key) | Entity whose component field to animate. | |
host.tween.start | spec | spec | object | inline literal | Tween spec: { component, field, to (number or vector3), durationSeconds, easing? (linear|quadIn|quadOut|quadInOut|cubicIn|cubicOut|cubicInOut|sineIn|sineOut|sineInOut|smoothstep), key?, from?, angle? }. | |
host.ui.close_panel | audience | audience | unknown | typed literal or connection | Who this write reaches: 'room' (default), 'owner', {players:[...]}, or {except:[...]}. An audienced write gets its own per-player record, so two players' HUDs never collide. | |
host.ui.close_panel | panelKey | panelKey | string | inline literal | ||
host.ui.open_panel | audience | audience | unknown | typed literal or connection | Who this write reaches: 'room' (default), 'owner', {players:[...]}, or {except:[...]}. An audienced write gets its own per-player record, so two players' HUDs never collide. | |
host.ui.open_panel | panelKey | panelKey | string | inline literal | ||
host.ui.open_panel | payload | payload | object | inline literal | ||
host.ui.set_widget_value | audience | audience | unknown | typed literal or connection | Who this write reaches: 'room' (default), 'owner', {players:[...]}, or {except:[...]}. An audienced write gets its own per-player record, so two players' HUDs never collide. | |
host.ui.set_widget_value | panelKey | panelKey | string | inline literal | ||
host.ui.set_widget_value | value | value | unknown | typed literal or connection | ||
host.ui.set_widget_value | widgetKey | widgetKey | string | inline literal | ||
host.warehouse.append | key | key | string | inline literal | ||
host.warehouse.append | path | path | string | inline literal | ||
host.warehouse.append | recordKey | recordKey | string | inline literal | ||
host.warehouse.append | value | value | object | inline literal | ||
host.warehouse.create | key | key | string | inline literal | ||
host.warehouse.create | recordKey | recordKey | string | inline literal | ||
host.warehouse.create | value | value | object | inline literal | ||
host.warehouse.delete | key | key | string | inline literal | ||
host.warehouse.delete | recordKey | recordKey | string | inline literal | ||
host.warehouse.get | key | key | string | inline literal | ||
host.warehouse.get | recordKey | recordKey | string | inline literal | ||
host.warehouse.increment | changes | changes | object | inline literal | ||
host.warehouse.increment | key | key | string | inline literal | ||
host.warehouse.increment | recordKey | recordKey | string | inline literal | ||
host.warehouse.query | filter | filter | object | inline literal | ||
host.warehouse.query | key | key | string | inline literal | ||
host.warehouse.query | options | options | object | inline literal | ||
host.warehouse.set | key | key | string | inline literal | ||
host.warehouse.set | recordKey | recordKey | string | inline literal | ||
host.warehouse.set | value | value | object | inline literal | ||
host.warehouse.transform | expect | expect | object | inline literal | ||
host.warehouse.transform | key | key | string | inline literal | ||
host.warehouse.transform | ops | ops | object | inline literal | ||
host.warehouse.transform | recordKey | recordKey | string | inline literal | ||
host.warehouse.update | key | key | string | inline literal | ||
host.warehouse.update | patch | patch | object | inline literal | ||
host.warehouse.update | recordKey | recordKey | string | inline literal | ||
host.water.is_submerged | point | point | vector3 | inline literal | ||
host.water.is_submerged | worldId | worldId | string | inline literal | ||
host.water.surface_level_at | atTimeMs | atTimeMs | number | inline literal | ||
host.water.surface_level_at | worldId | worldId | string | inline literal | ||
host.water.surface_level_at | x | x | number | inline literal | ||
host.water.surface_level_at | z | z | number | inline literal | ||
host.world.despawn | entityId | entityId | string | inline literal | ||
host.world.despawn | options | options | object | inline literal | ||
host.world.entity_has_tag | entityId | entityId | string | inline literal | ||
host.world.entity_has_tag | tag | tag | string | inline literal | ||
host.world.find | filter | filter | object | inline literal | ||
host.world.query | options | options | object | inline literal | ||
host.world.set_entity_owner | entityId | entityId | string | inline literal | ||
host.world.set_entity_owner | profileId | profileId | string | inline literal | ||
host.world.set_entity_tag | entityId | entityId | string | inline literal | ||
host.world.set_entity_tag | tag | tag | string | inline literal | ||
host.world.spawn_many | configs | configs | array | inline literal | ||
host.world.spawn_prefab | position | position | vector3 | inline literal | ||
host.world.spawn_prefab | prefabKey | prefabKey | string | inline literal | ||
host.world.spawn | config | config | object | inline literal | ||
host.world.teleport_player | options | options | object | inline literal | ||
host.world.teleport_player | playerId | playerId | string | inline literal | ||
host.world.teleport_player | targetWorldKey | targetWorldKey | string | inline literal |
Validation
Run npm run gen-docs:check to validate this generated snapshot against the live catalog. Runtime/codegen parity remains guarded by the script-system reconciliation and Blueprint IR tests.
Declaration Stability Policy
Script IR node declarations are locked by declaration identity, not by hand-maintained counts. Node ids, handler events, IR op names, host namespace/name pairs, port names, port types, SDK expression paths, risk metadata, and declared semantics are stable once shipped.
Breaking changes require an additive replacement declaration and an explicit validation decision. Capability contexts may expose only a subset of current nodes; emitted IR outside that context is rejected before projection or runtime execution.
Consumers
- Runtime host registry derives
scriptHostFunctionsfrom the declarations. - Validator, TypeScript generator, TypeScript parser, generated SDK declarations, AI resolvers, frontend catalog exports, visual scripting, pattern library, and Engine Contract Packet all consume this catalog.
- Manual TypeScript SDK method signatures remain richer than raw node ports, but host identity, SDK path, permissions, risk, and host-function union are declaration-derived.