{
  "node": "n8n-nodes-roundrobin.roundRobin",
  "nodeVersion": "1.0",
  "codexVersion": "1.0",
  "categories": [
    "Utility",
    "Data Transformation"
  ],
  "resources": {
    "credentialDocumentation": [],
    "primaryDocumentation": []
  },
  "subcategories": {
    "Utility": [
      "Data"
    ],
    "Data Transformation": [
      "Data Storage"
    ]
  },
  "alias": [
    "conversation",
    "llm",
    "roundrobin",
    "chatbot",
    "persona",
    "dialogue"
  ],
  "properties": [
    {
      "displayName": "Mode",
      "name": "mode",
      "type": "options",
      "options": [
        {
          "name": "Store",
          "value": "store",
          "description": "Store a message in the round-robin"
        },
        {
          "name": "Retrieve",
          "value": "retrieve",
          "description": "Retrieve all messages from the round-robin"
        },
        {
          "name": "Clear",
          "value": "clear",
          "description": "Clear all stored messages"
        },
        {
          "name": "Update Role",
          "value": "updateRole",
          "description": "Update a specific role"
        }
      ],
      "default": "store",
      "noDataExpression": true,
      "required": true,
      "description": "The operation to perform"
    },
    {
      "displayName": "Number of Spots",
      "name": "spotCount",
      "type": "number",
      "default": 3,
      "required": true,
      "displayOptions": {
        "show": {
          "mode": [
            "store"
          ]
        }
      },
      "description": "Number of spots in the round-robin"
    },
    {
      "displayName": "Roles",
      "name": "roles",
      "placeholder": "Add Role",
      "type": "fixedCollection",
      "typeOptions": {
        "multipleValues": true,
        "sortable": true
      },
      "default": {
        "values": []
      },
      "displayOptions": {
        "show": {
          "mode": [
            "store",
            "updateRole"
          ]
        }
      },
      "description": "Define the roles for each spot in the round-robin",
      "options": [
        {
          "name": "values",
          "displayName": "Roles",
          "values": [
            {
              "displayName": "Role Name",
              "name": "name",
              "type": "string",
              "default": "",
              "description": "Name of the role/persona",
              "required": true
            },
            {
              "displayName": "Role Description",
              "name": "description",
              "type": "string",
              "typeOptions": {
                "rows": 3
              },
              "default": "",
              "description": "Description of the role/persona"
            }
          ]
        }
      ]
    },
    {
      "displayName": "Input Field",
      "name": "inputField",
      "type": "string",
      "default": "message",
      "displayOptions": {
        "show": {
          "mode": [
            "store"
          ]
        }
      },
      "description": "The name of the field containing the message to store",
      "required": true
    },
    {
      "displayName": "Spot Index",
      "name": "spotIndex",
      "type": "number",
      "default": 0,
      "displayOptions": {
        "show": {
          "mode": [
            "store",
            "updateRole"
          ]
        }
      },
      "description": "Specify which spot to use (0-based index)",
      "required": true
    },
    {
      "displayName": "Role Index",
      "name": "roleIndex",
      "type": "number",
      "default": 0,
      "displayOptions": {
        "show": {
          "mode": [
            "updateRole"
          ]
        }
      },
      "description": "Index of the role to update",
      "required": true
    },
    {
      "displayName": "Output Format",
      "name": "outputFormat",
      "type": "options",
      "options": [
        {
          "name": "Array",
          "value": "array",
          "description": "Output messages as an array"
        },
        {
          "name": "Object",
          "value": "object",
          "description": "Output messages as an object with role keys"
        },
        {
          "name": "Conversation History",
          "value": "conversation",
          "description": "Format as a chronological conversation history"
        }
      ],
      "default": "array",
      "displayOptions": {
        "show": {
          "mode": [
            "retrieve"
          ]
        }
      },
      "description": "Format of the retrieved messages"
    },
    {
      "displayName": "Filter Messages",
      "name": "filterMessages",
      "type": "boolean",
      "default": false,
      "displayOptions": {
        "show": {
          "mode": [
            "retrieve"
          ]
        }
      },
      "description": "Whether to filter messages by role or other criteria"
    },
    {
      "displayName": "Role to Filter",
      "name": "roleFilter",
      "type": "string",
      "default": "",
      "displayOptions": {
        "show": {
          "mode": [
            "retrieve"
          ],
          "filterMessages": [
            true
          ]
        }
      },
      "description": "Only return messages from this role (leave empty for all roles)"
    },
    {
      "displayName": "Maximum Messages to Return",
      "name": "maxMessages",
      "type": "number",
      "default": 0,
      "displayOptions": {
        "show": {
          "mode": [
            "retrieve"
          ]
        }
      },
      "description": "Maximum number of messages to return (0 for all messages)"
    }
  ]
} 