{
  "name": "AgentQA",
  "nodes": [
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "typeVersion": 1.3,
      "position": [
        -2304,
        -1392
      ],
      "id": "26d0da89-d27a-4ed1-a89f-5d925de502f6",
      "name": "When chat message received"
    },
    {
      "parameters": {
        "model": "google/gemini-2.5-flash",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "typeVersion": 1,
      "position": [
        -2400,
        -1152
      ],
      "id": "cfaf1368-1a8a-4b61-a286-3436ff60bace",
      "name": "OpenRouter Chat Model2",
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "options": {
          "systemMessage": "=\u0422\u044b \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a \u043f\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430.\n\n\u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u043e\u0441\u0438\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0435\u0441\u0442 \u043a\u0435\u0439\u0441\u044b, \u0432\u044b\u043f\u043e\u043b\u043d\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.\n\u041e\u0442\u043f\u0440\u0430\u0432\u044c \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 agentDesignerTestCases. \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 agentDesignerTestCases \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0437\u0434\u0430\u0447\u0438."
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 2.2,
      "position": [
        -2112,
        -1392
      ],
      "id": "b45c7dc4-9741-40ea-9f47-c93a623209bc",
      "name": "AI Agent"
    },
    {
      "parameters": {
        "contextWindowLength": 10
      },
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.3,
      "position": [
        -2016,
        -1216
      ],
      "id": "877ca6fe-e894-4792-8467-29e3f54aa33e",
      "name": "Simple Memory"
    },
    {
      "parameters": {
        "resource": "document",
        "modelId": {
          "__rl": true,
          "value": "models/gemini-2.5-pro",
          "mode": "list",
          "cachedResultName": "models/gemini-2.5-pro"
        },
        "text": "\u0420\u043e\u043b\u044c: \u0422\u044b \u2014 \u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u043f\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e (QA Engineer) \u0441 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u043c\u0438 \u0437\u043d\u0430\u043d\u0438\u044f\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0439 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0447\u0435\u0440\u043d\u044b\u0439 \u044f\u0449\u0438\u043a, \u043f\u043e\u0437\u0438\u0442\u0438\u0432\u043d\u043e\u0435/\u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e\u0435, \u0433\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e\u0435 \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435). \u0422\u0432\u043e\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f (\u0438\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430) \u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439, \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0442\u0435\u0441\u0442-\u043a\u0435\u0439\u0441\u043e\u0432.\n\n\u0426\u0435\u043b\u044c: \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u044b\u0441\u043e\u043a\u043e\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442-\u043a\u0435\u0439\u0441\u044b, \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0438, \u0433\u0434\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e, \u043d\u0435\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439.\n\n\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438:\n\n\u041f\u043e\u043a\u0440\u044b\u0442\u0438\u0435: \u041e\u0431\u0435\u0441\u043f\u0435\u0447\u044c \u043f\u043e\u043b\u043d\u043e\u0435 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439. \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0439 \u0442\u0435\u0441\u0442-\u043a\u0435\u0439\u0441\u044b \u0434\u043b\u044f \u043f\u043e\u0437\u0438\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432, \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432, \u0433\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 (boundary value analysis) \u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 (equivalence partitioning).\n\n\u0414\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f: \u041a\u0430\u0436\u0434\u044b\u0439 \u0442\u0435\u0441\u0442-\u043a\u0435\u0439\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c, \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u044b\u043c \u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u044b\u043c.\n\n\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0437\u0430\u0446\u0438\u044f: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438 \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0435\u0441\u0442-\u043a\u0435\u0439\u0441\u0430, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0435\u0433\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0438.\n\n\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435: \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439 \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 (\u0438\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0430\u043d\u0430\u043b\u0438\u0437\u0430) \u0434\u043b\u044f \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432.\n\n\u0424\u043e\u0440\u043c\u0430\u0442: \u041e\u0442\u0432\u0435\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u043e \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON.\n{\n  \"project_name\": \"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\",\n  \"test_suite_title\": \"\u0422\u0435\u0441\u0442-\u0441\u044c\u044e\u0442 \u0434\u043b\u044f [\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438]\",\n  \"test_cases\": [\n    {\n      \"test_case_id\": \"TC-001\",\n      \"title\": \"...\",\n      \"requirement_id\": \"...\",\n      \"priority\": \"...\",\n      \"type\": \"...\",\n      \"preconditions\": [\n        \"...\"\n      ],\n      \"steps\": [\n        \"...\"\n      ],\n      \"test_data\": {\n        \"key1\": \"value1\"\n      },\n      \"expected_result\": \"...\",\n      \"scenario_type\": \"...\"\n    },\n    // ... \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0441\u0442-\u043a\u0435\u0439\u0441\u044b\n  ]\n}",
        "documentUrls": "https://docs.google.com/document/d/1u8-y8Tn65mJtrmgr03plFjmnycb6fO1PpFvlBYp7kRI/edit?tab=t.0#heading=h.58anaqenjho1",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "typeVersion": 1,
      "position": [
        -1744,
        -1392
      ],
      "id": "f319779b-69de-4def-910f-1d20b8f6a551",
      "name": "agentDesigner",
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// \u041a\u043e\u0434 \u0434\u043b\u044f \u0443\u0437\u043b\u0430 Code (Execution Mode: Run Once for All Items)\n\nconst agentResponse = items[0].json;\n\n// 1. \u0418\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0433\u043e JSON\nconst rawText = agentResponse.content.parts[0].text;\n\n// 2. \u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u043e\u0442 Markdown \u043e\u0431\u0435\u0440\u0442\u043a\u0438 (```json\\n \u0438 \\n```)\nlet jsonString = rawText.trim();\n\nif (jsonString.startsWith('```json\\n')) {\n    jsonString = jsonString.substring('```json\\n'.length);\n} \n\nif (jsonString.endsWith('\\n```')) {\n    jsonString = jsonString.substring(0, jsonString.length - '\\n```'.length);\n} else if (jsonString.endsWith('```')) {\n    jsonString = jsonString.substring(0, jsonString.length - '```'.length);\n}\n\n// \ud83d\udca5 \u041d\u041e\u0412\u042b\u0419 \u0428\u0410\u0413 \u0418\u0421\u041f\u0420\u0410\u0412\u041b\u0415\u041d\u0418\u042f: \u0417\u0430\u043c\u0435\u043d\u0430 JS-\u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0435 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u044b\n// \u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u0449\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d: \"\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\".repeat(N)\n// \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0435\u0433\u043e \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0439 \u043b\u0438\u0442\u0435\u0440\u0430\u043b \u0441 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \"a...a\")\njsonString = jsonString.replace(/\"(.)\"\\.repeat\\((\\d+)\\)/g, (match, char, count) => {\n    // char - \u0441\u0438\u043c\u0432\u043e\u043b \u0434\u043b\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \"a\")\n    // count - \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 50)\n    const repeatCount = parseInt(count, 10);\n    // \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 N \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0438 \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0438 \u0434\u043b\u044f JSON\n    return JSON.stringify(char.repeat(repeatCount));\n});\n\n// 3. \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0447\u0438\u0449\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 JSON \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\nlet parsedObject;\ntry {\n    parsedObject = JSON.parse(jsonString);\n} catch (error) {\n    console.error(\"\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 JSON (\u043f\u043e\u0441\u043b\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f):\", error);\n    throw new Error(\"\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u0442\u044c JSON, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043e\u0442 \u0430\u0433\u0435\u043d\u0442\u0430-\u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u044b\u0432\u043e\u0434\u0430.\");\n}\n\n// 4. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\nreturn [{ json: parsedObject }];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -1584,
        -1392
      ],
      "id": "bbb215ce-77a6-4d6a-bc6b-f6203efcac1a",
      "name": "parsing_data_agent_predesign2"
    },
    {
      "parameters": {
        "operation": "xlsx",
        "options": {}
      },
      "type": "n8n-nodes-base.convertToFile",
      "typeVersion": 1.1,
      "position": [
        -1408,
        -1392
      ],
      "id": "af821d6c-5f8c-4b3e-8c28-a7b08f1f7adc",
      "name": "Convert to File"
    },
    {
      "parameters": {
        "jsCode": "// \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f TMS \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438\nconst parsedData = $input.item.json;\n\n// \u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c \u0442\u0435\u0441\u0442-\u043a\u0435\u0439\u0441\u044b \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432\nlet testCases = [];\n\nif (Array.isArray(parsedData)) {\n  testCases = parsedData[0]?.test_cases || parsedData[0]?.data?.test_cases || [];\n} else if (parsedData.test_cases) {\n  testCases = parsedData.test_cases;\n} else if (parsedData.data?.test_cases) {\n  testCases = parsedData.data.test_cases;\n} else if (parsedData[0]?.test_cases) {\n  testCases = parsedData[0].test_cases;\n}\n\n// \u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f\nif (!Array.isArray(testCases) || testCases.length === 0) {\n  throw new Error('No test cases found in parsed data');\n}\n\n// \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f TMS\nreturn [{\n  json: {\n    project_id: 'ai-agent-tests',\n    project_name: 'AI Agent Test Cases',\n    test_cases: testCases,\n    source: 'agentDesigner',\n    generated_at: new Date().toISOString(),\n    workflow_id: $workflow.id,\n    execution_id: $execution.id\n  }\n}];"
      },
      "id": "352c5804-67d8-4191-baa9-f32021070995",
      "name": "Prepare for TMS",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -1384,
        -1392
      ]
    },
    {
      "parameters": {
        "workflowId": {
          "__rl": true,
          "value": "TMS Integration",
          "mode": "list"
        },
        "source": "workflow",
        "waitForExecution": true,
        "inputData": "json",
        "inputDataJson": "={{ $json }}",
        "options": {}
      },
      "id": "b0501eae-f216-4d96-adf0-b4a3704709f3",
      "name": "Execute Workflow (TMS)",
      "type": "n8n-nodes-base.executeWorkflow",
      "typeVersion": 1.1,
      "position": [
        -1184,
        -1392
      ]
    }
  ],
  "connections": {
    "When chat message received": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model2": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "agentDesigner",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "agentDesigner": {
      "main": [
        [
          {
            "node": "parsing_data_agent_predesign2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "parsing_data_agent_predesign2": {
      "main": [
        [
          {
            "node": "Prepare for TMS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare for TMS": {
      "main": [
        [
          {
            "node": "Execute Workflow (TMS)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Execute Workflow (TMS)": {
      "main": [
        [
          {
            "node": "Convert to File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "tags": [],
  "triggerCount": 1,
  "updatedAt": null,
  "versionId": "56e9a31f-9417-4e3d-b476-9b43f70b0552"
}