{"nodes":{"jflz4k8otvjtjun86fq4fbb25d5ox6yc":{"type":"start","x":0,"y":0,"properties":{"title":"1 Understanding Nodes","excerpt":"","author":"GraVersal","license":"CC BY 4.0","channel":"chat","category":"Tutorial - Basics","post":"## How GraVersal Flows Work: Nodes, State, and Properties\n\nIn **GraVersal**, flows are built from **nodes**. Each node can both **hold knowledge** and **perform actions**. For example, a **Message Node** can send a message directly to the chat.\n\n### When does a node become active?\n\nA node only becomes **active** if it’s **directly or indirectly connected to the Start Node**. If it isn’t connected, it stays **inactive** which makes it easy to spot parts of a flow that can’t be reached.\n\n### State: what a node knows about itself\n\nNodes also track knowledge about themselves, called **state**. If you click a node, you can inspect its state like seeing which messages have already been sent or whether the last question has been answered.\n\nState matters because it can be referenced in **edges** to decide **which path the flow should take next**. And because state can change repeatedly, paths can be **enabled or disabled dynamically** over time.\n\n### Properties: stable configuration\n\nIn addition to state, nodes have **properties**. You edit these in the editor, and they remain **stable throughout a session**. In short: anything you can actively configure on a node is a **property**.\n\nThat’s the core idea: nodes act, state drives decisions, and properties define stable behavior.","slug":""}},"tw29mfd6qsr0fmq3s570kctr18fg0wqp":{"type":"message","x":249.55049128366517,"y":-49.85214050898065,"properties":{"text":"In GraVersal, __nodes__ contain knowledge and perform actions.","repeatOnReentry":true}},"krs4iepqo9gaji9l6ybdcjsjk1c3mwik":{"type":"message","x":-352.1140593156718,"y":-55.51234135364185,"properties":{"text":"new message","repeatOnReentry":true}},"shc5cjflbr8zr9adi41p1prapar6u4gm":{"type":"conclusion","x":-351.57310576423873,"y":103.73659933068635,"properties":{}},"kxuwer3iw3n4pxhw5osxt4ral8e24301":{"type":"question","x":-220.11304812185108,"y":229.5413766083881,"properties":{"text":"Question","repeatOnReentry":true,"reviewable":true}},"fm3xc4ftyroyaxl2x5dmqvynjqs9gh7y":{"type":"prompt","x":-159.99370676820925,"y":-186.03115221280572,"properties":{"placeholder":"Type your message"}},"84kdc5z81nrfyr9oviws3neuvboj5eb7":{"type":"number","x":73.82204279825265,"y":-190.99605544998042,"properties":{}},"0qu8wlekie6nkrqqpldbhp0jdwr6tc0y":{"type":"timer","x":106.98853279408328,"y":273.8532136125767,"properties":{"seconds":"10"}},"ervoly033eshtyy1qk3j4jb6vppvj03f":{"type":"message","x":390.142,"y":136.82299999999998,"properties":{"text":"For example, a message node can send a message to the chat.","repeatOnReentry":true}},"547bdwcpng03z3z054lww8g5ku8pum37":{"type":"message","x":377.0127712198164,"y":353.95108640892727,"properties":{"text":"A node can only become active if it is directly or indirectly connected to the start node.","repeatOnReentry":true}},"dd3ho798snubva0zecaf0xcb3a8yior1":{"type":"message","x":197.424,"y":518.8820000000001,"properties":{"text":"As you can see, some nodes are inactive because they are not connected.","repeatOnReentry":true}},"1tmojayhssbvln3myiq27srehzd5v2g0":{"type":"question","x":-116.56540023861652,"y":569.391711018482,"properties":{"text":"Would you like to know more?","repeatOnReentry":true,"reviewable":true}},"8ov6n810lesyv9q3kduewqoqczv3zog2":{"type":"suggestion","x":-291.2840111938207,"y":572.6414695055221,"properties":{"value":"","label":"Yes"}},"dn321fnz21gqzjhb46l64syx50wcnmcc":{"type":"message","x":-589.4813637412833,"y":250.32107050949253,"properties":{"text":"Click on a node to see its state. You can see that some messages have already been sent and that the last question has been answered.","repeatOnReentry":true}},"326xx1hquwfr85x5pv79h4b8q9yssyn4":{"type":"message","x":-483.50081085916383,"y":405.5256121977912,"properties":{"text":"Nodes contain knowledge about themselves. We call this state.","repeatOnReentry":true}},"v1knj6oladhtirx32vevivez9lqt4y6e":{"type":"message","x":-596.8370851828263,"y":79.40106627973006,"properties":{"text":"States are very important because they can be used in edges to decide which path to take.\n\nStates can change over and over again, enabling or disabling paths.","repeatOnReentry":true}},"kpb9hoop6de2u1f0w95n4s2so5fbuoks":{"type":"question","x":-576.3175627872223,"y":-91.3682278137976,"properties":{"text":"Do you want to know more now?","repeatOnReentry":true,"reviewable":true}},"ifjabkczq8ojl2kmewhpl5x6mo5kl8xr":{"type":"suggestion","x":-508.2098942357612,"y":-226.03651762737314,"properties":{"value":"","label":"Yes"}},"2e0nbn3xd9oly8fsmxw3pca52qd91zld":{"type":"message","x":-375.7827644105969,"y":-357.30204644856695,"properties":{"text":"Nodes also have properties. You can edit these in the editor. Properties are stable and do not change over the course of a session.","repeatOnReentry":true}},"3owooa0cd81nb9wwnbah8olau2pc4iax":{"type":"message","x":-142.6856652907153,"y":-463.5654562094362,"properties":{"text":"Anything you can actively configure on a node is a property.","repeatOnReentry":true}},"vzsvnxs95d6miuphsc402if4urqkg326":{"type":"message","x":114.51543099421599,"y":-453.22434081280034,"properties":{"text":"Okay. That's it. Thanks for participating.","repeatOnReentry":true}},"zwb4sme6g0v99v0zp7prvzj2kmniym5m":{"type":"jump","x":353.482,"y":-327.9510244140625,"properties":{"label":"Back to tutorial start","flow":"https://platform.graversal.io/flows/xnggg7ykv5sppva649cd73r6zh2zfedg"}}},"edges":{"h08chh4qaqpz7i78ct4zzoxfaqia8svv":{"type":"may","from":"jflz4k8otvjtjun86fq4fbb25d5ox6yc","to":"tw29mfd6qsr0fmq3s570kctr18fg0wqp","properties":{"priority":4}},"yu1heku9j0rrrs8w741oxa7c1z6g3tzu":{"type":"may","from":"tw29mfd6qsr0fmq3s570kctr18fg0wqp","to":"ervoly033eshtyy1qk3j4jb6vppvj03f","properties":{"priority":4,"condition":"arrived"}},"vq3z39nam7wtxtkgj9105rkkk0m992b1":{"type":"may","from":"ervoly033eshtyy1qk3j4jb6vppvj03f","to":"547bdwcpng03z3z054lww8g5ku8pum37","properties":{"priority":4,"condition":"arrived"}},"tfi7a4qd0qaw3aa8kgfi3yx57eapjtbt":{"type":"may","from":"547bdwcpng03z3z054lww8g5ku8pum37","to":"dd3ho798snubva0zecaf0xcb3a8yior1","properties":{"priority":4,"condition":"arrived"}},"fq9vixtv2uq5srreooa3r9qkvnyefhtn":{"type":"may","from":"dd3ho798snubva0zecaf0xcb3a8yior1","to":"1tmojayhssbvln3myiq27srehzd5v2g0","properties":{"priority":4,"condition":"sent"}},"oi7zindlkb9bh8i3lpyamouccwroyp96":{"type":"may","from":"1tmojayhssbvln3myiq27srehzd5v2g0","to":"8ov6n810lesyv9q3kduewqoqczv3zog2","properties":{"priority":4,"condition":""}},"pa85vzx3dwxir8o37kc8q0i8yp6ksykw":{"type":"may","from":"8ov6n810lesyv9q3kduewqoqczv3zog2","to":"326xx1hquwfr85x5pv79h4b8q9yssyn4","properties":{"priority":4,"condition":"selected"}},"mqq85v41yztkw2brh7gzb6m8az7ujdrl":{"type":"may","from":"326xx1hquwfr85x5pv79h4b8q9yssyn4","to":"dn321fnz21gqzjhb46l64syx50wcnmcc","properties":{"priority":4,"condition":"arrived"}},"bo4vbae0o02yieikz9c316jrktl0t1sl":{"type":"may","from":"dn321fnz21gqzjhb46l64syx50wcnmcc","to":"v1knj6oladhtirx32vevivez9lqt4y6e","properties":{"priority":4,"condition":"arrived"}},"r58u2ratce10bi1qwucf8g3xqhavlubs":{"type":"may","from":"v1knj6oladhtirx32vevivez9lqt4y6e","to":"kpb9hoop6de2u1f0w95n4s2so5fbuoks","properties":{"priority":4,"condition":"arrived"}},"cj1yumm6lpeizc3ehp5azxesojrqxrl5":{"type":"may","from":"kpb9hoop6de2u1f0w95n4s2so5fbuoks","to":"ifjabkczq8ojl2kmewhpl5x6mo5kl8xr","properties":{"priority":4,"condition":""}},"yhrjya944ei2awviqkfmd4jjj6ob7k1b":{"type":"may","from":"ifjabkczq8ojl2kmewhpl5x6mo5kl8xr","to":"2e0nbn3xd9oly8fsmxw3pca52qd91zld","properties":{"priority":4,"condition":"selected"}},"vqq4xneugkn1ugw4sjphtrgvzzagyh5h":{"type":"may","from":"2e0nbn3xd9oly8fsmxw3pca52qd91zld","to":"3owooa0cd81nb9wwnbah8olau2pc4iax","properties":{"priority":4,"condition":"arrived"}},"jr50dszuqh8pmvj37oyhu7bbq51q4nfj":{"type":"may","from":"3owooa0cd81nb9wwnbah8olau2pc4iax","to":"vzsvnxs95d6miuphsc402if4urqkg326","properties":{"priority":4,"condition":"arrived"}},"36bdpd7ggfxobrb3588uxxj670fe5ox5":{"type":"may","from":"vzsvnxs95d6miuphsc402if4urqkg326","to":"zwb4sme6g0v99v0zp7prvzj2kmniym5m","properties":{"priority":4,"condition":"arrived"}}}}