{
  "title": "Director Action Update Gamestate",
  "id": "59a62e49-cd1f-4ce8-80db-ed1a24501ba5",
  "properties": {
    "name": "update_gamestate",
    "description": "Instruct another agent to make updates to any game state variables. You should query for relevant game state variables BEFORE using this.\n\nIf you're changing existing game states provide the FULL path to the final key.\n\nIMPORTANT: Not all stories / experiences are games. Only use this if explicitly confirmed by the user or if the current scene type allows it.",
    "instructions": "Make updates to the game state variables.",
    "example_json": "[\n  {\n    \"instructions\": \"Set up base attributes of health and stamina for all characters. Lets do this keyed to the character name and for all current characters: \\\"Mary\\\" and \\\"John\\\". Defaults should should like `{ \\\"health\\\": 100, \\\"stamina\\\": 100 }`\"\n  },\n  {\n    \"instructions\": \"Set John's health to 50%\",\n  },\n  {\n    \"instructions\": \"We need tomaintain a numeric representation of Mary's mana. Lets add a new variable called 'mana' to the game state for her character.\"\n  }\n]"
  },
  "x": 0,
  "y": 0,
  "width": 200,
  "height": 100,
  "collapsed": false,
  "inherited": false,
  "registry": "agents/director/chat/directorActionUpdateGamestate",
  "nodes": {
    "25b43bed-e4bf-45c0-87c7-72c5785c1d62": {
      "title": "Validate Value Is Set",
      "id": "25b43bed-e4bf-45c0-87c7-72c5785c1d62",
      "properties": {
        "error_message": "`instructions` is a required argument.",
        "blank_string_is_unset": true
      },
      "x": 286,
      "y": -161,
      "width": 210,
      "height": 102,
      "collapsed": false,
      "inherited": false,
      "registry": "validation/ValidateValueIsSet",
      "base_type": "core/Node"
    },
    "76cdeb2c-20c0-413b-a6d3-642ba59ab8b3": {
      "title": "SET local.instructions",
      "id": "76cdeb2c-20c0-413b-a6d3-642ba59ab8b3",
      "properties": {
        "name": "instructions",
        "scope": "local"
      },
      "x": 556,
      "y": -151,
      "width": 210,
      "height": 122,
      "collapsed": false,
      "inherited": false,
      "registry": "state/SetState",
      "base_type": "core/Node"
    },
    "97025c52-ac1d-41e5-8ec6-8ea1a7fe635f": {
      "title": "Stage 0",
      "id": "97025c52-ac1d-41e5-8ec6-8ea1a7fe635f",
      "properties": {
        "stage": 0
      },
      "x": 806,
      "y": -151,
      "width": 210,
      "height": 118,
      "collapsed": false,
      "inherited": false,
      "registry": "core/Stage",
      "base_type": "core/Node"
    },
    "fa4a84ad-a696-4ede-9471-fbef8c1c98ee": {
      "title": "GET local.instructions",
      "id": "fa4a84ad-a696-4ede-9471-fbef8c1c98ee",
      "properties": {
        "name": "instructions",
        "scope": "local"
      },
      "x": 26,
      "y": 121,
      "width": 210,
      "height": 122,
      "collapsed": false,
      "inherited": false,
      "registry": "state/GetState",
      "base_type": "core/Node"
    },
    "75a6f3c1-21a5-47cc-ac25-1627b5a2d4ac": {
      "title": "Instructions",
      "id": "75a6f3c1-21a5-47cc-ac25-1627b5a2d4ac",
      "properties": {
        "template": "Use codeblocks containing data structures to propose sequential updates to the existing gamestate structure to fulfill the following task.\n\nTASK: {instructions}\n\nBegin by planning your actions, then provide the necessary code blocks."
      },
      "x": 286,
      "y": 121,
      "width": 210,
      "height": 133,
      "collapsed": false,
      "inherited": false,
      "registry": "data/string/AdvancedFormat",
      "dynamic_inputs": [
        {
          "name": "item0",
          "type": "*"
        }
      ],
      "base_type": "core/DynamicSocketNodeBase"
    },
    "643e7707-9689-41c2-9053-b6370c7e5c14": {
      "title": "Instruct Gamestate Updates",
      "id": "643e7707-9689-41c2-9053-b6370c7e5c14",
      "properties": {},
      "x": 566,
      "y": 141,
      "width": 218,
      "height": 66,
      "collapsed": false,
      "inherited": false,
      "registry": "agernts/director/chat/instructGamestateUpdates",
      "base_type": "core/Graph"
    },
    "516270c5-e694-44d7-9ac2-960461ee92b2": {
      "title": "Return",
      "id": "516270c5-e694-44d7-9ac2-960461ee92b2",
      "properties": {},
      "x": 1249,
      "y": 148,
      "width": 140,
      "height": 26,
      "collapsed": false,
      "inherited": false,
      "registry": "core/functions/Return",
      "base_type": "core/Node"
    },
    "64136cbd-4b3b-4586-9122-4fae36374af8": {
      "title": "Advanced Format",
      "id": "64136cbd-4b3b-4586-9122-4fae36374af8",
      "properties": {
        "template": "Applied the following gamestate updates:\n\n```\n{updates}\n```"
      },
      "x": 926,
      "y": 151,
      "width": 210,
      "height": 153,
      "collapsed": false,
      "inherited": false,
      "registry": "data/string/AdvancedFormat",
      "dynamic_inputs": [
        {
          "name": "item0",
          "type": "*"
        },
        {
          "name": "item1",
          "type": "*"
        }
      ],
      "base_type": "core/DynamicSocketNodeBase"
    },
    "0404af9c-3a1e-4535-b8bc-5e8257f95d20": {
      "title": "true",
      "id": "0404af9c-3a1e-4535-b8bc-5e8257f95d20",
      "properties": {
        "value": true
      },
      "x": 406,
      "y": 81,
      "width": 210,
      "height": 58,
      "collapsed": true,
      "inherited": false,
      "registry": "core/MakeBool",
      "base_type": "core/Node"
    },
    "90bd1c80-9a8e-404c-a32f-f17c314ddb65": {
      "title": "instructions",
      "id": "90bd1c80-9a8e-404c-a32f-f17c314ddb65",
      "properties": {
        "name": "instructions",
        "typ": "str",
        "instructions": "Your precise instructions on what changes to make to the game state JSON object literal. You can add / update / remove keys. Keys need to be specified as absolute paths inside the structure."
      },
      "x": 26,
      "y": -171,
      "width": 210,
      "height": 106,
      "collapsed": false,
      "inherited": false,
      "registry": "agents/director/chat/ActionArgument",
      "base_type": "core/Node"
    }
  },
  "edges": {
    "25b43bed-e4bf-45c0-87c7-72c5785c1d62.value": [
      "76cdeb2c-20c0-413b-a6d3-642ba59ab8b3.value"
    ],
    "76cdeb2c-20c0-413b-a6d3-642ba59ab8b3.value": [
      "97025c52-ac1d-41e5-8ec6-8ea1a7fe635f.state"
    ],
    "fa4a84ad-a696-4ede-9471-fbef8c1c98ee.value": [
      "75a6f3c1-21a5-47cc-ac25-1627b5a2d4ac.item0"
    ],
    "75a6f3c1-21a5-47cc-ac25-1627b5a2d4ac.result": [
      "643e7707-9689-41c2-9053-b6370c7e5c14.instructions"
    ],
    "643e7707-9689-41c2-9053-b6370c7e5c14.state": [
      "64136cbd-4b3b-4586-9122-4fae36374af8.item0"
    ],
    "643e7707-9689-41c2-9053-b6370c7e5c14.updates": [
      "64136cbd-4b3b-4586-9122-4fae36374af8.item1"
    ],
    "64136cbd-4b3b-4586-9122-4fae36374af8.result": [
      "516270c5-e694-44d7-9ac2-960461ee92b2.value"
    ],
    "0404af9c-3a1e-4535-b8bc-5e8257f95d20.value": [
      "643e7707-9689-41c2-9053-b6370c7e5c14.state"
    ],
    "90bd1c80-9a8e-404c-a32f-f17c314ddb65.value": [
      "25b43bed-e4bf-45c0-87c7-72c5785c1d62.value"
    ]
  },
  "groups": [
    {
      "title": "Validation",
      "x": 1,
      "y": -246,
      "width": 1050,
      "height": 242,
      "color": "#b58b2a",
      "font_size": 24,
      "inherited": false
    },
    {
      "title": "Process",
      "x": 1,
      "y": 0,
      "width": 1413,
      "height": 328,
      "color": "#3f789e",
      "font_size": 24,
      "inherited": false
    }
  ],
  "comments": [],
  "extends": null,
  "base_type": "agents/director/DirectorChatAction",
  "inputs": [],
  "outputs": [
    {
      "id": "00213835-5a0f-4aab-ab0a-af83646336f8",
      "name": "fn",
      "optional": false,
      "group": null,
      "socket_type": "function"
    }
  ],
  "module_properties": {},
  "style": {
    "title_color": "#573a2e",
    "node_color": "#392f2c",
    "icon": "F0295",
    "auto_title": null,
    "counterpart": null
  }
}