Gessa Docs
Generated Reference

Reference

Script Semantic Patch

Sources: packages/script-semantic-patch/src/index.ts.
engine v1.0.234Copy for LLM

This generated snapshot is derived from packages/script-semantic-patch. Semantic patches are creator-facing edit operations; the backend compiler projects them into canonical Script IR and the normal Project Graph script update path persists the result.

Compiler version: script-semantic-patch.v1. Compiler hash: sha256:65836246e1f866e143e19eb54fdbf665d3f265465d5131da09e5a3ba56fa121d. Operation catalog version: script-semantic-patch-ops.v1. Operation catalog hash: sha256:2658160596d67879eb955963e315d6991009b714c80597bfeb8b74dd8ae07d7f. Operation count: 44.

Operations

OperationTitleDescriptionMutatesContextsEffect tagsUndo
addHandlerAdd HandlerCreate an event handler and its event root node.handlers<br>eventsvisual_editor<br>raw_graph_import<br>testpuredirect
removeHandlerRemove HandlerRemove an event handler by id or event.handlers<br>eventsvisual_editor<br>raw_graph_import<br>testpurereceipt-data
addVariableAdd VariableCreate a first-class Script IR variable.variablesvisual_editor<br>raw_graph_import<br>testwriteStatereceipt-data
renameVariableRename VariableRename a variable while preserving its stable id.variablesvisual_editor<br>raw_graph_import<br>testpuredirect
setVariableDefaultSet Variable DefaultSet a variable default value.variablesvisual_editor<br>raw_graph_import<br>testwriteStatedirect
addNodeAdd NodeInsert a graph node in a handler or function scope.nodesvisual_editor<br>raw_graph_import<br>testpuredirect
removeNodeRemove NodeRemove a node and its incident edges.nodes<br>execEdges<br>dataEdgesvisual_editor<br>raw_graph_import<br>testpurereceipt-data
removeVariableRemove VariableRemove a first-class Script IR variable by id or name.variablesvisual_editor<br>raw_graph_import<br>testwriteStatereceipt-data
removeFunctionRemove FunctionRemove a same-script function graph resource by id or name.functionsvisual_editor<br>raw_graph_import<br>testpurereceipt-data
disconnectDisconnectRemove an execution or data edge by id.execEdges<br>dataEdgesvisual_editor<br>raw_graph_import<br>testpurereceipt-data
clearInlineValueClear Inline ValueClear an inline literal value on a graph node input.nodes.inlineValuesvisual_editor<br>raw_graph_import<br>testpurereceipt-data
connectExecConnect ExecAdd an execution edge between two nodes.execEdgesvisual_editor<br>raw_graph_import<br>testpuredirect
connectDataConnect DataAdd a data edge between two nodes.dataEdgesvisual_editor<br>raw_graph_import<br>testpuredirect
setInlineValueSet Inline ValueSet an inline literal value on a graph node input.nodes.inlineValuesvisual_editor<br>raw_graph_import<br>testpuredirect
addHostOperationAdd Host OperationInsert a host.call node from the canonical node catalog.nodesvisual_editor<br>raw_graph_import<br>testrequiresAuthoritydirect
addCustomEventAdd Custom EventDeclare a custom event contract.customEventsvisual_editor<br>raw_graph_import<br>testpurereceipt-data
dispatchCustomEventDispatch Custom EventInsert an event.dispatch node backed by a custom event declaration.nodesvisual_editor<br>raw_graph_import<br>testemitEventdirect
addFunctionAdd FunctionCreate a same-script function graph resource.functionsvisual_editor<br>raw_graph_import<br>testpurereceipt-data
callFunctionCall FunctionInsert a function.call node by function id or name.nodesvisual_editor<br>raw_graph_import<br>testpuredirect
moveNodeMove NodeMove a graph node without changing semantics.nodes.positionvisual_editor<br>ai<br>mcp<br>sdkpuredirect
addCommentAdd CommentAdd a visual comment box to the script canvas.commentsvisual_editor<br>raw_graph_import<br>ai<br>mcp<br>sdk<br>testpurereceipt-data
groupNodesGroup NodesCreate a visual color group for nodes.groupsvisual_editor<br>raw_graph_import<br>ai<br>mcp<br>sdk<br>testpurereceipt-data
replaceVisualScriptIrReplace Visual Script IRCommit a checked visual-editor graph projection through Semantic Patch with version and fingerprint guards.handlers<br>variables<br>functions<br>customEvents<br>nodes<br>comments<br>groupsvisual_editor<br>raw_graph_import<br>testpurereceipt-data
replaceScriptFromGessaScriptReplace Script From GessaScriptCompile whole-body GessaScript source text through the canonical compiler and validator, replacing the script with the resulting IR. The one checked subtractive/mutating write op admitted for AI/MCP.handlers<br>variables<br>functions<br>customEvents<br>nodes<br>comments<br>groupsai<br>mcp<br>sdk<br>visual_editor<br>template<br>testpurereceipt-data
applyTemplateApply TemplateExpand an approved backend template into semantic operations.handlers<br>variables<br>nodes<br>customEventstemplate<br>raw_graph_import<br>testrequiresAuthorityreceipt-data
createCustomEventHandlerCreate Custom Event HandlerDeclare a custom event and create a guarded onCustomEvent handler for its semantic key.customEvents<br>handlers<br>nodesai<br>mcp<br>sdk<br>templateemitEventreceipt-data
addActionHandlerAdd Action HandlerCreate an action-resolved handler without requiring graph ids.handlers<br>eventsai<br>mcp<br>sdk<br>templatepurereceipt-data
addTriggerHandlerAdd Trigger HandlerCreate a trigger-enter handler without requiring graph ids.handlers<br>eventsai<br>mcp<br>sdk<br>templatepurereceipt-data
addTimerHandlerAdd Timer HandlerCreate a timer-fired handler without requiring graph ids.handlers<br>eventsai<br>mcp<br>sdk<br>templatepurereceipt-data
addTickHandlerAdd Tick HandlerCreate a tick handler without requiring graph ids.handlers<br>eventsai<br>mcp<br>sdk<br>templatepurereceipt-data
readTypedStateValueRead Typed State ValueRead a typed warehouse state field into a local Script IR binding.nodes<br>warehouseai<br>mcp<br>sdk<br>templatereadState<br>durablereceipt-data
writeTypedStateValueWrite Typed State ValueWrite one typed warehouse state field through Warehouse.update.nodes<br>warehouseai<br>mcp<br>sdk<br>templatewriteState<br>durable<br>requiresAuthorityreceipt-data
incrementNumericStateIncrement Numeric StateRead a numeric warehouse field and write it back with a deterministic increment.nodes<br>warehouseai<br>mcp<br>sdk<br>templatereadState<br>writeState<br>durable<br>requiresAuthorityreceipt-data
setBooleanStateSet Boolean StateWrite a boolean warehouse state field through Warehouse.update.nodes<br>warehouseai<br>mcp<br>sdk<br>templatewriteState<br>durable<br>requiresAuthorityreceipt-data
findEntitiesByTagFind Entities By TagCreate a World.find call assigned to a named result.nodes<br>worldai<br>mcp<br>sdk<br>templatereadWorldreceipt-data
forEachEntityInResultFor Each Entity In ResultIterate a named entity result with bounded typed entity binding.nodes<br>worldai<br>mcp<br>sdk<br>templatereadWorld<br>writeWorldreceipt-data
despawnEntityDespawn EntityDespawn the current entity or a named entity binding.nodes<br>worldai<br>mcp<br>sdk<br>templatedespawnEntity<br>writeWorld<br>requiresAuthorityreceipt-data
compareRemainingCountCompare Remaining CountBind a boolean comparison against a named entity result count.nodes<br>worldai<br>mcp<br>sdk<br>templatereadWorldreceipt-data
declareWinConditionDeclare Win ConditionTransition match phase when the remaining entity count reaches the declared threshold.nodes<br>match<br>worldai<br>mcp<br>sdk<br>templatereadWorld<br>writeState<br>emitEvent<br>requiresAuthorityreceipt-data
emitCustomEventEmit Custom EventEmit a custom event by semantic event key.nodes<br>customEventsai<br>mcp<br>sdk<br>templateemitEventreceipt-data
spawnEntityFromTemplateSpawn Entity From Template Or PrefabSpawn an entity or instantiate a prefab from semantic template/prefab keys.nodes<br>worldai<br>mcp<br>sdk<br>templatespawnEntity<br>writeWorld<br>requiresAuthorityreceipt-data
attachComponentWithValidatedDefaultsAttach Component With Validated DefaultsAttach an ECS component using canonical component defaults plus explicit overrides.nodes<br>componentsai<br>mcp<br>sdk<br>templatewriteState<br>writeWorld<br>requiresAuthorityreceipt-data
wireHudStateBindingWire HUD State BindingRead a state field and push it through UI.setWidgetValue for HUD projection.nodes<br>ui<br>warehouseai<br>mcp<br>sdk<br>templatereadState<br>durable<br>uiEffectreceipt-data
addShooterCollectorLoopAdd Shooter/Collector LoopExpand the common shooter/collector gameplay loop from semantic intent only.handlers<br>customEvents<br>nodes<br>warehouse<br>world<br>matchvisual_editor<br>templatereadWorld<br>writeWorld<br>readState<br>writeState<br>emitEvent<br>spawnEntity<br>despawnEntity<br>durable<br>requiresAuthorityreceipt-data

Operation Packs

PackOperations
visual_editoraddHandler<br>removeHandler<br>addVariable<br>renameVariable<br>setVariableDefault<br>addNode<br>removeNode<br>removeVariable<br>removeFunction<br>disconnect<br>clearInlineValue<br>connectExec<br>connectData<br>setInlineValue<br>addHostOperation<br>addCustomEvent<br>dispatchCustomEvent<br>addFunction<br>callFunction<br>moveNode<br>addComment<br>groupNodes<br>replaceVisualScriptIr<br>replaceScriptFromGessaScript<br>createCustomEventHandler<br>addActionHandler<br>addTriggerHandler<br>addTimerHandler<br>addTickHandler<br>readTypedStateValue<br>writeTypedStateValue<br>incrementNumericState<br>setBooleanState<br>findEntitiesByTag<br>forEachEntityInResult<br>despawnEntity<br>compareRemainingCount<br>declareWinCondition<br>emitCustomEvent<br>spawnEntityFromTemplate<br>attachComponentWithValidatedDefaults<br>wireHudStateBinding<br>addShooterCollectorLoop
ai_safecreateCustomEventHandler<br>addActionHandler<br>addTriggerHandler<br>addTimerHandler<br>addTickHandler<br>readTypedStateValue<br>writeTypedStateValue<br>incrementNumericState<br>setBooleanState<br>findEntitiesByTag<br>forEachEntityInResult<br>despawnEntity<br>compareRemainingCount<br>declareWinCondition<br>emitCustomEvent<br>spawnEntityFromTemplate<br>attachComponentWithValidatedDefaults<br>wireHudStateBinding<br>replaceScriptFromGessaScript<br>moveNode<br>addComment<br>groupNodes
mcp_safecreateCustomEventHandler<br>addActionHandler<br>addTriggerHandler<br>addTimerHandler<br>addTickHandler<br>readTypedStateValue<br>writeTypedStateValue<br>incrementNumericState<br>setBooleanState<br>findEntitiesByTag<br>forEachEntityInResult<br>despawnEntity<br>compareRemainingCount<br>declareWinCondition<br>emitCustomEvent<br>spawnEntityFromTemplate<br>attachComponentWithValidatedDefaults<br>wireHudStateBinding<br>replaceScriptFromGessaScript<br>moveNode<br>addComment<br>groupNodes
sdk_basiccreateCustomEventHandler<br>addActionHandler<br>addTriggerHandler<br>addTimerHandler<br>addTickHandler<br>readTypedStateValue<br>writeTypedStateValue<br>incrementNumericState<br>setBooleanState<br>findEntitiesByTag<br>forEachEntityInResult<br>despawnEntity<br>compareRemainingCount<br>declareWinCondition<br>emitCustomEvent<br>spawnEntityFromTemplate<br>attachComponentWithValidatedDefaults<br>wireHudStateBinding<br>replaceScriptFromGessaScript<br>moveNode<br>addComment<br>groupNodes
raw_graph_importaddHandler<br>removeHandler<br>addVariable<br>renameVariable<br>setVariableDefault<br>addNode<br>removeNode<br>removeVariable<br>removeFunction<br>disconnect<br>clearInlineValue<br>connectExec<br>connectData<br>setInlineValue<br>addHostOperation<br>addCustomEvent<br>dispatchCustomEvent<br>addFunction<br>callFunction<br>addComment<br>groupNodes<br>replaceVisualScriptIr<br>applyTemplate

Eval Corpus

CaseTitleOperations
coin-pickupCoin pickup behaviorapplyTemplate
door-triggerDoor trigger behaviorapplyTemplate
timerTimer behaviorapplyTemplate
custom-eventCustom event behaviorapplyTemplate
ai-editAI edit behaviorapplyTemplate
shooter-collector-v2Shooter/collector V2 intent behavioraddTickHandler<br>addActionHandler<br>createCustomEventHandler<br>findEntitiesByTag<br>readTypedStateValue<br>readTypedStateValue<br>forEachEntityInResult<br>compareRemainingCount<br>writeTypedStateValue<br>declareWinCondition<br>wireHudStateBinding<br>spawnEntityFromTemplate<br>emitCustomEvent<br>incrementNumericState<br>despawnEntity
handler-key-round-tripHandler created by handlerKey is referenceable by that key in the same batchaddTriggerHandler<br>despawnEntity<br>incrementNumericState
custom-event-key-round-tripCustom event created by eventKey is emittable by that key in the same batchcreateCustomEventHandler<br>addTickHandler<br>emitCustomEvent

Coverage Matrix

JSON
{
  "addHandler": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "handlers",
      "events"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "direct"
  },
  "removeHandler": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "handlers",
      "events"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "receipt-data"
  },
  "addVariable": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "variables"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "writeState"
    ],
    "inverse": "receipt-data"
  },
  "renameVariable": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "variables"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "direct"
  },
  "setVariableDefault": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "variables"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "writeState"
    ],
    "inverse": "direct"
  },
  "addNode": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "direct"
  },
  "removeNode": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes",
      "execEdges",
      "dataEdges"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "receipt-data"
  },
  "removeVariable": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "variables"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "writeState"
    ],
    "inverse": "receipt-data"
  },
  "removeFunction": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "functions"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "receipt-data"
  },
  "disconnect": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "execEdges",
      "dataEdges"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "receipt-data"
  },
  "clearInlineValue": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes.inlineValues"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "receipt-data"
  },
  "connectExec": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "execEdges"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "direct"
  },
  "connectData": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "dataEdges"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "direct"
  },
  "setInlineValue": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes.inlineValues"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "direct"
  },
  "addHostOperation": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "requiresAuthority"
    ],
    "inverse": "direct"
  },
  "addCustomEvent": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "customEvents"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "receipt-data"
  },
  "dispatchCustomEvent": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "emitEvent"
    ],
    "inverse": "direct"
  },
  "addFunction": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "functions"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "receipt-data"
  },
  "callFunction": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "direct"
  },
  "moveNode": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes.position"
    ],
    "contexts": [
      "visual_editor",
      "ai",
      "mcp",
      "sdk"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "direct"
  },
  "addComment": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "comments"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "ai",
      "mcp",
      "sdk",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "receipt-data"
  },
  "groupNodes": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "groups"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "ai",
      "mcp",
      "sdk",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "receipt-data"
  },
  "replaceVisualScriptIr": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "handlers",
      "variables",
      "functions",
      "customEvents",
      "nodes",
      "comments",
      "groups"
    ],
    "contexts": [
      "visual_editor",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "receipt-data"
  },
  "replaceScriptFromGessaScript": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "handlers",
      "variables",
      "functions",
      "customEvents",
      "nodes",
      "comments",
      "groups"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "visual_editor",
      "template",
      "test"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "receipt-data"
  },
  "applyTemplate": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "handlers",
      "variables",
      "nodes",
      "customEvents"
    ],
    "contexts": [
      "template",
      "raw_graph_import",
      "test"
    ],
    "effectTags": [
      "requiresAuthority"
    ],
    "inverse": "receipt-data"
  },
  "createCustomEventHandler": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "customEvents",
      "handlers",
      "nodes"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "emitEvent"
    ],
    "inverse": "receipt-data"
  },
  "addActionHandler": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "handlers",
      "events"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "receipt-data"
  },
  "addTriggerHandler": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "handlers",
      "events"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "receipt-data"
  },
  "addTimerHandler": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "handlers",
      "events"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "receipt-data"
  },
  "addTickHandler": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "handlers",
      "events"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "pure"
    ],
    "inverse": "receipt-data"
  },
  "readTypedStateValue": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes",
      "warehouse"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "readState",
      "durable"
    ],
    "inverse": "receipt-data"
  },
  "writeTypedStateValue": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes",
      "warehouse"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "writeState",
      "durable",
      "requiresAuthority"
    ],
    "inverse": "receipt-data"
  },
  "incrementNumericState": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes",
      "warehouse"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "readState",
      "writeState",
      "durable",
      "requiresAuthority"
    ],
    "inverse": "receipt-data"
  },
  "setBooleanState": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes",
      "warehouse"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "writeState",
      "durable",
      "requiresAuthority"
    ],
    "inverse": "receipt-data"
  },
  "findEntitiesByTag": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes",
      "world"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "readWorld"
    ],
    "inverse": "receipt-data"
  },
  "forEachEntityInResult": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes",
      "world"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "readWorld",
      "writeWorld"
    ],
    "inverse": "receipt-data"
  },
  "despawnEntity": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes",
      "world"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "despawnEntity",
      "writeWorld",
      "requiresAuthority"
    ],
    "inverse": "receipt-data"
  },
  "compareRemainingCount": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes",
      "world"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "readWorld"
    ],
    "inverse": "receipt-data"
  },
  "declareWinCondition": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes",
      "match",
      "world"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "readWorld",
      "writeState",
      "emitEvent",
      "requiresAuthority"
    ],
    "inverse": "receipt-data"
  },
  "emitCustomEvent": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes",
      "customEvents"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "emitEvent"
    ],
    "inverse": "receipt-data"
  },
  "spawnEntityFromTemplate": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes",
      "world"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "spawnEntity",
      "writeWorld",
      "requiresAuthority"
    ],
    "inverse": "receipt-data"
  },
  "attachComponentWithValidatedDefaults": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes",
      "components"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "writeState",
      "writeWorld",
      "requiresAuthority"
    ],
    "inverse": "receipt-data"
  },
  "wireHudStateBinding": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "nodes",
      "ui",
      "warehouse"
    ],
    "contexts": [
      "ai",
      "mcp",
      "sdk",
      "template"
    ],
    "effectTags": [
      "readState",
      "durable",
      "uiEffect"
    ],
    "inverse": "receipt-data"
  },
  "addShooterCollectorLoop": {
    "catalog": true,
    "schema": true,
    "mutates": [
      "handlers",
      "customEvents",
      "nodes",
      "warehouse",
      "world",
      "match"
    ],
    "contexts": [
      "visual_editor",
      "template"
    ],
    "effectTags": [
      "readWorld",
      "writeWorld",
      "readState",
      "writeState",
      "emitEvent",
      "spawnEntity",
      "despawnEntity",
      "durable",
      "requiresAuthority"
    ],
    "inverse": "receipt-data"
  }
}

Backend Action

  • Action Catalog id: project.script.patch.apply.
  • HTTP: POST /api/games/:gameId/project/scripts/:idOrKey/patches/apply.
  • MCP: project_apply_script_semantic_patch.
  • AI metadata: apply_script_semantic_patch.
  • Persistence: existing UpdateProjectScript Project Graph event with semantic patch receipt in editor.visualScript.semanticPatch.
Was this helpful?Report an issueContact support

On this page