{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://graphenix.dev/schema/graphenix.task-node-v1.schema.json",
  "title": "Graphenix Task Node Parameters (graphenix.task-node/v1)",
  "type": "object",
  "required": ["nodeType", "skillKey"],
  "properties": {
    "profile": {
      "type": "string",
      "const": "graphenix.task-node/v1"
    },
    "nodeType": { "type": "string", "const": "task" },
    "skillKey": { "type": "string", "minLength": 1 },
    "planVersion": { "type": "string" },
    "compilerProfile": { "type": "string" },
    "taskVariable": { "type": "object" },
    "inputsConfig": { "type": "object" },
    "smartInput": { "type": "object" },
    "executionMapping": { "type": "object" },
    "jobContextMapping": { "type": "object" },
    "scope": { "type": "object" },
    "conditions": { "type": "object" },
    "outputValidation": { "type": "object" },
    "taskConfiguration": {
      "type": "object",
      "properties": {
        "modelConfig": { "type": "object" },
        "aiTaskStrategies": { "type": "object" },
        "aiTaskProfile": { "type": "object" },
        "executionStrategies": {
          "oneOf": [{ "type": "array" }, { "type": "object" }]
        },
        "executionPipeline": { "type": "object" },
        "preActions": { "type": "array" },
        "postActions": { "type": "array" },
        "planHints": { "type": "object" },
        "executionUnits": { "type": "array" },
        "narrix": { "type": "object" },
        "narrixInput": { "type": "object" },
        "narrixMode": { "type": "string" },
        "aiTasksOutputValidation": { "type": "object" }
      },
      "additionalProperties": true
    },
    "metadata": {
      "type": "object",
      "not": {
        "anyOf": [
          { "required": ["taskConfiguration"] },
          { "required": ["modelConfig"] },
          { "required": ["executionMapping"] },
          { "required": ["skillKey"] }
        ]
      }
    }
  },
  "additionalProperties": true
}
