{
  "$schema": "rulealize/registry/plugin/v1",
  "id": "Rulealize.Plugin.Graph",
  "namespace": "graph",
  "prefix": null,
  "admitted": "1.0.0",
  "latest": "1.0.1",
  "description": "Graphs for Rulealize: a state field that is a fixed set of nodes and edges with a value at each node, and the operations to read one, walk it, and write to it.",
  "repository": "https://github.com/reny-develop/Rulealize.Plugin.Graph",
  "license": "Apache-2.0",
  "specification": "https://raw.githubusercontent.com/reny-develop/Rulealize.Plugin.Graph/main/doc/specification.md",
  "forms": {
    "graph.adjacent": "{\n  \u0022op\u0022: \u0022graph.adjacent\u0022,\n  \u0022graph\u0022: \u003Cstate field\u003E,\n  \u0022node\u0022: \u003Cexpression:Text\u003E,\n  \u0022direction\u0022: \u0022\u003Cdirection\u003E\u0022   // optional, one of \u0022out\u0022, \u0022in\u0022, \u0022either\u0022; default \u0022out\u0022\n}",
    "graph.at": "{ \u0022op\u0022: \u0022graph.at\u0022, \u0022graph\u0022: \u003Cstate field\u003E, \u0022node\u0022: \u003Cexpression:Text\u003E }",
    "graph.of": "{\n  \u0022op\u0022: \u0022graph.of\u0022,\n  \u0022nodes\u0022: [ \u0022\u003Cnode\u003E\u0022, … ],\n  \u0022edges\u0022: { \u0022\u003Cnode\u003E\u0022: [ \u0022\u003Cnode\u003E\u0022, … ], … },   // optional\n  \u0022directed\u0022: \u003Cboolean\u003E,                        // optional, default false\n  \u0022value\u0022: \u003Cschema\u003E\n}",
    "graph.reachable": "{\n  \u0022op\u0022: \u0022graph.reachable\u0022,\n  \u0022graph\u0022: \u003Cstate field\u003E,\n  \u0022from\u0022: \u003Cexpression:Text\u003E,\n  \u0022direction\u0022: \u0022\u003Cdirection\u003E\u0022,   // optional, one of \u0022out\u0022, \u0022in\u0022, \u0022either\u0022; default \u0022out\u0022\n  \u0022as\u0022: \u0022\u003Cname\u003E\u0022,               // required with \u0022through\u0022\n  \u0022through\u0022: \u003Cexpression:Boolean\u003E   // optional\n}",
    "graph.set": "{\n  \u0022op\u0022: \u0022graph.set\u0022,\n  \u0022target\u0022: \u003Cstate field\u003E,\n  \u0022node\u0022: \u003Cexpression:Text\u003E,\n  \u0022value\u0022: \u003Cexpression\u003E\n}"
  },
  "versions": [
    {
      "version": "1.0.0",
      "abstraction": "0.3.0",
      "framework": "net10.0",
      "operations": {
        "expression": [
          "graph.adjacent",
          "graph.at",
          "graph.reachable"
        ],
        "effect": [
          "graph.set"
        ],
        "schema": [
          "graph.of"
        ],
        "draw": []
      }
    },
    {
      "version": "1.0.1",
      "abstraction": "0.4.0",
      "framework": "net10.0",
      "operations": {
        "expression": [
          "graph.adjacent",
          "graph.at",
          "graph.reachable"
        ],
        "effect": [
          "graph.set"
        ],
        "schema": [
          "graph.of"
        ],
        "draw": []
      }
    }
  ]
}
