{
  "type": "object",
  "properties": {
    "goal": { "type": "string" },
    "stages": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": { "type": "string" },
          "role": { "type": "string" },
          "prompt": { "type": "string" },
          "needs": { "type": "array", "items": { "type": "string" } },
          "produces": { "type": "string" },
          "kind": { "type": "string" },
          "tools": { "type": "array", "items": { "type": "string" } }
        },
        "required": ["id", "prompt", "produces"]
      }
    },
    "edges": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "from": { "type": "string" },
          "to": { "type": "string" },
          "condition": {
            "type": "object",
            "properties": {
              "type": { "type": "string" },
              "artifact_id": { "type": "string" },
              "field": { "type": "string" },
              "value": { "type": "string" },
              "operator": { "type": "string" }
            },
            "required": ["type"]
          }
        },
        "required": ["from", "to", "condition"]
      }
    }
  },
  "required": ["goal", "stages", "edges"],
  "additionalProperties": true
}
