{
  "data": {
    "edges": [
      {
        "animated": false,
        "className": "",
        "data": {
          "sourceHandle": {
            "dataType": "ChatInput",
            "id": "ChatInput-540d8",
            "name": "message",
            "output_types": [
              "Message"
            ]
          },
          "targetHandle": {
            "fieldName": "url_input",
            "id": "APIRequest-bdd57",
            "inputTypes": [
              "Message"
            ],
            "type": "str"
          }
        },
        "id": "reactflow__edge-ChatInput-540d8{\u0153dataType\u0153:\u0153ChatInput\u0153,\u0153id\u0153:\u0153ChatInput-540d8\u0153,\u0153name\u0153:\u0153message\u0153,\u0153output_types\u0153:[\u0153Message\u0153]}-APIRequest-bdd57{\u0153fieldName\u0153:\u0153url_input\u0153,\u0153id\u0153:\u0153APIRequest-bdd57\u0153,\u0153inputTypes\u0153:[\u0153Message\u0153],\u0153type\u0153:\u0153str\u0153}",
        "source": "ChatInput-540d8",
        "sourceHandle": "{\u0153dataType\u0153: \u0153ChatInput\u0153, \u0153id\u0153: \u0153ChatInput-540d8\u0153, \u0153name\u0153: \u0153message\u0153, \u0153output_types\u0153: [\u0153Message\u0153]}",
        "target": "APIRequest-bdd57",
        "targetHandle": "{\u0153fieldName\u0153: \u0153url_input\u0153, \u0153id\u0153: \u0153APIRequest-bdd57\u0153, \u0153inputTypes\u0153: [\u0153Message\u0153], \u0153type\u0153: \u0153str\u0153}",
        "selected": false
      },
      {
        "animated": false,
        "className": "",
        "data": {
          "sourceHandle": {
            "dataType": "APIRequest",
            "id": "APIRequest-bdd57",
            "name": "data",
            "output_types": [
              "Data"
            ]
          },
          "targetHandle": {
            "fieldName": "data",
            "id": "ParseData-7cb75",
            "inputTypes": [
              "Data"
            ],
            "type": "other"
          }
        },
        "id": "reactflow__edge-APIRequest-bdd57{\u0153dataType\u0153:\u0153APIRequest\u0153,\u0153id\u0153:\u0153APIRequest-bdd57\u0153,\u0153name\u0153:\u0153data\u0153,\u0153output_types\u0153:[\u0153Data\u0153]}-ParseData-7cb75{\u0153fieldName\u0153:\u0153data\u0153,\u0153id\u0153:\u0153ParseData-7cb75\u0153,\u0153inputTypes\u0153:[\u0153Data\u0153],\u0153type\u0153:\u0153other\u0153}",
        "source": "APIRequest-bdd57",
        "sourceHandle": "{\u0153dataType\u0153: \u0153APIRequest\u0153, \u0153id\u0153: \u0153APIRequest-bdd57\u0153, \u0153name\u0153: \u0153data\u0153, \u0153output_types\u0153: [\u0153Data\u0153]}",
        "target": "ParseData-7cb75",
        "targetHandle": "{\u0153fieldName\u0153: \u0153data\u0153, \u0153id\u0153: \u0153ParseData-7cb75\u0153, \u0153inputTypes\u0153: [\u0153Data\u0153], \u0153type\u0153: \u0153other\u0153}",
        "selected": false
      },
      {
        "animated": false,
        "className": "",
        "data": {
          "sourceHandle": {
            "dataType": "ParseData",
            "id": "ParseData-7cb75",
            "name": "text",
            "output_types": [
              "Message"
            ]
          },
          "targetHandle": {
            "fieldName": "issue",
            "id": "Prompt-0488b",
            "inputTypes": [
              "Message"
            ],
            "type": "str"
          }
        },
        "id": "reactflow__edge-ParseData-7cb75{\u0153dataType\u0153:\u0153ParseData\u0153,\u0153id\u0153:\u0153ParseData-7cb75\u0153,\u0153name\u0153:\u0153text\u0153,\u0153output_types\u0153:[\u0153Message\u0153]}-Prompt-0488b{\u0153fieldName\u0153:\u0153issue\u0153,\u0153id\u0153:\u0153Prompt-0488b\u0153,\u0153inputTypes\u0153:[\u0153Message\u0153],\u0153type\u0153:\u0153str\u0153}",
        "source": "ParseData-7cb75",
        "sourceHandle": "{\u0153dataType\u0153: \u0153ParseData\u0153, \u0153id\u0153: \u0153ParseData-7cb75\u0153, \u0153name\u0153: \u0153text\u0153, \u0153output_types\u0153: [\u0153Message\u0153]}",
        "target": "Prompt-0488b",
        "targetHandle": "{\u0153fieldName\u0153: \u0153issue\u0153, \u0153id\u0153: \u0153Prompt-0488b\u0153, \u0153inputTypes\u0153: [\u0153Message\u0153], \u0153type\u0153: \u0153str\u0153}",
        "selected": false
      },
      {
        "animated": false,
        "className": "",
        "data": {
          "sourceHandle": {
            "dataType": "Prompt",
            "id": "Prompt-0488b",
            "name": "prompt",
            "output_types": [
              "Message"
            ]
          },
          "targetHandle": {
            "fieldName": "input_value",
            "id": "GroqModel-9ca55",
            "inputTypes": [
              "Message"
            ],
            "type": "str"
          }
        },
        "id": "reactflow__edge-Prompt-0488b{\u0153dataType\u0153:\u0153Prompt\u0153,\u0153id\u0153:\u0153Prompt-0488b\u0153,\u0153name\u0153:\u0153prompt\u0153,\u0153output_types\u0153:[\u0153Message\u0153]}-GroqModel-9ca55{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153GroqModel-9ca55\u0153,\u0153inputTypes\u0153:[\u0153Message\u0153],\u0153type\u0153:\u0153str\u0153}",
        "source": "Prompt-0488b",
        "sourceHandle": "{\u0153dataType\u0153: \u0153Prompt\u0153, \u0153id\u0153: \u0153Prompt-0488b\u0153, \u0153name\u0153: \u0153prompt\u0153, \u0153output_types\u0153: [\u0153Message\u0153]}",
        "target": "GroqModel-9ca55",
        "targetHandle": "{\u0153fieldName\u0153: \u0153input_value\u0153, \u0153id\u0153: \u0153GroqModel-9ca55\u0153, \u0153inputTypes\u0153: [\u0153Message\u0153], \u0153type\u0153: \u0153str\u0153}",
        "selected": false
      },
      {
        "animated": false,
        "className": "",
        "data": {
          "sourceHandle": {
            "dataType": "GroqModel",
            "id": "GroqModel-9ca55",
            "name": "text_output",
            "output_types": [
              "Message"
            ]
          },
          "targetHandle": {
            "fieldName": "input_value",
            "id": "StructuredOutput-55b77",
            "inputTypes": [
              "Message"
            ],
            "type": "str"
          }
        },
        "id": "reactflow__edge-GroqModel-9ca55{\u0153dataType\u0153:\u0153GroqModel\u0153,\u0153id\u0153:\u0153GroqModel-9ca55\u0153,\u0153name\u0153:\u0153text_output\u0153,\u0153output_types\u0153:[\u0153Message\u0153]}-StructuredOutput-55b77{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153StructuredOutput-55b77\u0153,\u0153inputTypes\u0153:[\u0153Message\u0153],\u0153type\u0153:\u0153str\u0153}",
        "source": "GroqModel-9ca55",
        "sourceHandle": "{\u0153dataType\u0153: \u0153GroqModel\u0153, \u0153id\u0153: \u0153GroqModel-9ca55\u0153, \u0153name\u0153: \u0153text_output\u0153, \u0153output_types\u0153: [\u0153Message\u0153]}",
        "target": "StructuredOutput-55b77",
        "targetHandle": "{\u0153fieldName\u0153: \u0153input_value\u0153, \u0153id\u0153: \u0153StructuredOutput-55b77\u0153, \u0153inputTypes\u0153: [\u0153Message\u0153], \u0153type\u0153: \u0153str\u0153}",
        "selected": false
      },
      {
        "animated": false,
        "className": "",
        "data": {
          "sourceHandle": {
            "dataType": "GroqModel",
            "id": "GroqModel-9ca55",
            "name": "model_output",
            "output_types": [
              "LanguageModel"
            ]
          },
          "targetHandle": {
            "fieldName": "llm",
            "id": "StructuredOutput-55b77",
            "inputTypes": [
              "LanguageModel"
            ],
            "type": "other"
          }
        },
        "id": "reactflow__edge-GroqModel-9ca55{\u0153dataType\u0153:\u0153GroqModel\u0153,\u0153id\u0153:\u0153GroqModel-9ca55\u0153,\u0153name\u0153:\u0153model_output\u0153,\u0153output_types\u0153:[\u0153LanguageModel\u0153]}-StructuredOutput-55b77{\u0153fieldName\u0153:\u0153llm\u0153,\u0153id\u0153:\u0153StructuredOutput-55b77\u0153,\u0153inputTypes\u0153:[\u0153LanguageModel\u0153],\u0153type\u0153:\u0153other\u0153}",
        "source": "GroqModel-9ca55",
        "sourceHandle": "{\u0153dataType\u0153: \u0153GroqModel\u0153, \u0153id\u0153: \u0153GroqModel-9ca55\u0153, \u0153name\u0153: \u0153model_output\u0153, \u0153output_types\u0153: [\u0153LanguageModel\u0153]}",
        "target": "StructuredOutput-55b77",
        "targetHandle": "{\u0153fieldName\u0153: \u0153llm\u0153, \u0153id\u0153: \u0153StructuredOutput-55b77\u0153, \u0153inputTypes\u0153: [\u0153LanguageModel\u0153], \u0153type\u0153: \u0153other\u0153}",
        "selected": false
      },
      {
        "animated": false,
        "className": "",
        "data": {
          "sourceHandle": {
            "dataType": "StructuredOutput",
            "id": "StructuredOutput-55b77",
            "name": "structured_output",
            "output_types": [
              "Data"
            ]
          },
          "targetHandle": {
            "fieldName": "input_value",
            "id": "ChatOutput-fd166",
            "inputTypes": [
              "Message"
            ],
            "type": "str"
          }
        },
        "id": "reactflow__edge-StructuredOutput-55b77{\u0153dataType\u0153:\u0153StructuredOutput\u0153,\u0153id\u0153:\u0153StructuredOutput-55b77\u0153,\u0153name\u0153:\u0153structured_output\u0153,\u0153output_types\u0153:[\u0153Data\u0153]}-ChatOutput-fd166{\u0153fieldName\u0153:\u0153input_value\u0153,\u0153id\u0153:\u0153ChatOutput-fd166\u0153,\u0153inputTypes\u0153:[\u0153Message\u0153],\u0153type\u0153:\u0153str\u0153}",
        "source": "StructuredOutput-55b77",
        "sourceHandle": "{\u0153dataType\u0153: \u0153StructuredOutput\u0153, \u0153id\u0153: \u0153StructuredOutput-55b77\u0153, \u0153name\u0153: \u0153structured_output\u0153, \u0153output_types\u0153: [\u0153Data\u0153]}",
        "target": "ChatOutput-fd166",
        "targetHandle": "{\u0153fieldName\u0153: \u0153input_value\u0153, \u0153id\u0153: \u0153ChatOutput-fd166\u0153, \u0153inputTypes\u0153: [\u0153Message\u0153], \u0153type\u0153: \u0153str\u0153}",
        "selected": false
      }
    ],
    "nodes": [
      {
        "data": {
          "description": "Operator types the Jira issue key (e.g. PROJ-123) to triage.",
          "display_name": "Chat Input \u2014 Jira Issue Key",
          "id": "ChatInput-540d8",
          "node": {
            "base_classes": [
              "Message"
            ],
            "beta": false,
            "conditional_paths": [],
            "custom_fields": {},
            "description": "Operator types the Jira issue key (e.g. PROJ-123) to triage.",
            "display_name": "Chat Input \u2014 Jira Issue Key",
            "documentation": "",
            "edited": false,
            "field_order": [
              "input_value",
              "sender",
              "sender_name",
              "session_id",
              "should_store_message"
            ],
            "frozen": false,
            "icon": "MessagesSquare",
            "legacy": false,
            "lf_version": "1.7.0",
            "metadata": {
              "module": "lfx.components.input_output.chat.ChatInput"
            },
            "output_types": [],
            "outputs": [
              {
                "allows_loop": false,
                "cache": true,
                "display_name": "Message",
                "group_outputs": false,
                "method": "message_response",
                "name": "message",
                "selected": "Message",
                "tool_mode": true,
                "types": [
                  "Message"
                ],
                "value": "__UNDEFINED__"
              }
            ],
            "pinned": false,
            "template": {
              "_type": "Component",
              "code": {
                "advanced": true,
                "dynamic": true,
                "fileTypes": [],
                "file_path": "",
                "info": "",
                "list": false,
                "load_from_db": false,
                "multiline": true,
                "name": "code",
                "password": false,
                "placeholder": "",
                "required": true,
                "show": true,
                "title_case": false,
                "type": "code",
                "value": "# ChatInput component (Langflow built-in)\n"
              },
              "input_value": {
                "advanced": false,
                "display_name": "Input Text",
                "dynamic": false,
                "info": "Enter the Jira issue key to triage, e.g. PROJ-123",
                "list": false,
                "load_from_db": false,
                "name": "input_value",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "PROJ-123",
                "_input_type": "MultilineInput",
                "multiline": true
              },
              "sender": {
                "advanced": true,
                "display_name": "Sender",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "sender",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "User"
              },
              "sender_name": {
                "advanced": true,
                "display_name": "Sender Name",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "sender_name",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "User"
              },
              "session_id": {
                "advanced": true,
                "display_name": "Session Id",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "session_id",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": ""
              },
              "should_store_message": {
                "advanced": true,
                "display_name": "Should Store Message",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "should_store_message",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "bool",
                "value": true
              }
            }
          },
          "type": "ChatInput"
        },
        "dragging": false,
        "id": "ChatInput-540d8",
        "measured": {
          "height": 300,
          "width": 320
        },
        "position": {
          "x": 100,
          "y": 200
        },
        "selected": false,
        "type": "genericNode"
      },
      {
        "data": {
          "description": "Calls the Jira Cloud REST v3 API and returns the full issue JSON (summary, description, priority, components, labels).",
          "display_name": "API Request \u2014 Fetch Jira Issue",
          "id": "APIRequest-bdd57",
          "node": {
            "base_classes": [
              "Data"
            ],
            "beta": false,
            "conditional_paths": [],
            "custom_fields": {},
            "description": "Calls the Jira Cloud REST v3 API and returns the full issue JSON (summary, description, priority, components, labels).",
            "display_name": "API Request \u2014 Fetch Jira Issue",
            "documentation": "",
            "edited": false,
            "field_order": [
              "url_input",
              "method",
              "headers",
              "body",
              "timeout"
            ],
            "frozen": false,
            "icon": "Globe",
            "legacy": false,
            "lf_version": "1.7.0",
            "metadata": {
              "module": "lfx.components.data.api_request.APIRequestComponent"
            },
            "output_types": [],
            "outputs": [
              {
                "allows_loop": false,
                "cache": true,
                "display_name": "Data",
                "group_outputs": false,
                "method": "make_requests",
                "name": "data",
                "selected": "Data",
                "tool_mode": true,
                "types": [
                  "Data"
                ],
                "value": "__UNDEFINED__"
              }
            ],
            "pinned": false,
            "template": {
              "_type": "Component",
              "code": {
                "advanced": true,
                "dynamic": true,
                "fileTypes": [],
                "file_path": "",
                "info": "",
                "list": false,
                "load_from_db": false,
                "multiline": true,
                "name": "code",
                "password": false,
                "placeholder": "",
                "required": true,
                "show": true,
                "title_case": false,
                "type": "code",
                "value": "# API Request fetches the Jira issue JSON.\n# URL is built from the issue key passed in.\n# Auth: Basic (email + API token) via headers.\n"
              },
              "url_input": {
                "advanced": false,
                "display_name": "URL",
                "dynamic": false,
                "info": "Jira REST v3 issue endpoint. Replace YOUR_DOMAIN and the issue key. The issue key can also be injected at runtime via tweaks.",
                "list": false,
                "load_from_db": false,
                "name": "url_input",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "https://YOUR_DOMAIN.atlassian.net/rest/api/3/issue/PROJ-123?fields=summary,description,priority,issuetype,status,components,labels",
                "multiline": true
              },
              "method": {
                "advanced": false,
                "display_name": "Method",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "method",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "GET",
                "options": [
                  "GET",
                  "POST",
                  "PATCH",
                  "PUT",
                  "DELETE"
                ]
              },
              "headers": {
                "advanced": false,
                "display_name": "Headers",
                "dynamic": false,
                "info": "Set Authorization to Basic base64(email:api_token). Generate token at id.atlassian.com.",
                "list": false,
                "load_from_db": false,
                "name": "headers",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "dict",
                "value": {
                  "Accept": "application/json",
                  "Authorization": "Basic <BASE64(email:JIRA_API_TOKEN)>"
                }
              },
              "body": {
                "advanced": true,
                "display_name": "Body",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "body",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "dict",
                "value": {}
              },
              "timeout": {
                "advanced": true,
                "display_name": "Timeout",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "timeout",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "int",
                "value": 30
              }
            }
          },
          "type": "APIRequest"
        },
        "dragging": false,
        "id": "APIRequest-bdd57",
        "measured": {
          "height": 300,
          "width": 320
        },
        "position": {
          "x": 480,
          "y": 200
        },
        "selected": false,
        "type": "genericNode"
      },
      {
        "data": {
          "description": "Converts the raw Jira issue JSON into a clean text block the model can read.",
          "display_name": "Parse Data \u2014 Flatten Jira JSON",
          "id": "ParseData-7cb75",
          "node": {
            "base_classes": [
              "Message"
            ],
            "beta": false,
            "conditional_paths": [],
            "custom_fields": {},
            "description": "Converts the raw Jira issue JSON into a clean text block the model can read.",
            "display_name": "Parse Data \u2014 Flatten Jira JSON",
            "documentation": "",
            "edited": false,
            "field_order": [
              "template",
              "sep"
            ],
            "frozen": false,
            "icon": "braces",
            "legacy": false,
            "lf_version": "1.7.0",
            "metadata": {
              "module": "lfx.components.processing.parse_data.ParseDataComponent"
            },
            "output_types": [],
            "outputs": [
              {
                "allows_loop": false,
                "cache": true,
                "display_name": "Message",
                "group_outputs": false,
                "method": "parse_data",
                "name": "text",
                "selected": "Message",
                "tool_mode": true,
                "types": [
                  "Message"
                ],
                "value": "__UNDEFINED__"
              }
            ],
            "pinned": false,
            "template": {
              "_type": "Component",
              "code": {
                "advanced": true,
                "dynamic": true,
                "fileTypes": [],
                "file_path": "",
                "info": "",
                "list": false,
                "load_from_db": false,
                "multiline": true,
                "name": "code",
                "password": false,
                "placeholder": "",
                "required": true,
                "show": true,
                "title_case": false,
                "type": "code",
                "value": "# Parse Data flattens the Jira JSON into text for the LLM.\n"
              },
              "template": {
                "advanced": false,
                "display_name": "Template",
                "dynamic": false,
                "info": "Maps Jira JSON paths into a clean text block the model can reason over.",
                "list": false,
                "load_from_db": false,
                "name": "template",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "ISSUE KEY: {key}\nTYPE: {fields.issuetype.name}\nSTATUS: {fields.status.name}\nCURRENT PRIORITY: {fields.priority.name}\nCOMPONENTS: {fields.components}\nLABELS: {fields.labels}\nSUMMARY: {fields.summary}\nDESCRIPTION: {fields.description}",
                "multiline": true
              },
              "sep": {
                "advanced": true,
                "display_name": "Separator",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "sep",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "\n"
              }
            }
          },
          "type": "ParseData"
        },
        "dragging": false,
        "id": "ParseData-7cb75",
        "measured": {
          "height": 300,
          "width": 320
        },
        "position": {
          "x": 860,
          "y": 200
        },
        "selected": false,
        "type": "genericNode"
      },
      {
        "data": {
          "description": "Wraps the Jira text with senior-triage-engineer instructions and the fields to decide.",
          "display_name": "Prompt Template \u2014 Triage Instructions",
          "id": "Prompt-0488b",
          "node": {
            "base_classes": [
              "Message"
            ],
            "beta": false,
            "conditional_paths": [],
            "custom_fields": {
              "template": [
                "issue"
              ]
            },
            "description": "Wraps the Jira text with senior-triage-engineer instructions and the fields to decide.",
            "display_name": "Prompt Template \u2014 Triage Instructions",
            "documentation": "",
            "edited": false,
            "field_order": [
              "template",
              "issue",
              "use_double_brackets",
              "tool_placeholder"
            ],
            "frozen": false,
            "icon": "prompts",
            "legacy": false,
            "lf_version": "1.7.0",
            "metadata": {
              "module": "lfx.components.models_and_agents.prompt.PromptComponent"
            },
            "output_types": [],
            "outputs": [
              {
                "allows_loop": false,
                "cache": true,
                "display_name": "Prompt",
                "group_outputs": false,
                "method": "build_prompt",
                "name": "prompt",
                "selected": "Message",
                "tool_mode": true,
                "types": [
                  "Message"
                ],
                "value": "__UNDEFINED__"
              }
            ],
            "pinned": false,
            "template": {
              "_type": "Component",
              "code": {
                "advanced": true,
                "dynamic": true,
                "fileTypes": [],
                "file_path": "",
                "info": "",
                "list": false,
                "load_from_db": false,
                "multiline": true,
                "name": "code",
                "password": false,
                "placeholder": "",
                "required": true,
                "show": true,
                "title_case": false,
                "type": "code",
                "value": "# Prompt Template (Langflow built-in)\n"
              },
              "template": {
                "advanced": false,
                "display_name": "Template",
                "dynamic": true,
                "info": "Triage instructions. {issue} is filled by the parsed Jira text.",
                "list": false,
                "name": "template",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "prompt",
                "value": "You are a senior bug triage engineer. Analyze the Jira issue below and produce a structured triage.\n\nJIRA ISSUE:\n{issue}\n\nAssess and decide ALL of the following:\n1. SEVERITY \u2014 technical impact of the defect. One of: Blocker, Critical, Major, Minor, Trivial.\n2. PRIORITY \u2014 business urgency to fix. One of: P0, P1, P2, P3, P4.\n3. IMPACT_AREAS \u2014 list the modules, user journeys, or systems affected.\n4. ROOT_CAUSE_ANALYSIS \u2014 your best hypothesis of the underlying cause based on the description. If evidence is insufficient, state what is unknown and what data is needed.\n5. JUSTIFICATION \u2014 one or two sentences explaining the severity/priority decision.\n\nBe decisive. Base every conclusion only on the issue content. Do not invent stack traces or logs.",
                "_input_type": "PromptInput"
              },
              "issue": {
                "advanced": false,
                "display_name": "issue",
                "dynamic": false,
                "info": "Connect the parsed Jira text here.",
                "list": false,
                "load_from_db": false,
                "name": "issue",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "",
                "_input_type": "MessageTextInput"
              },
              "tool_placeholder": {
                "advanced": true,
                "display_name": "Tool Placeholder",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "tool_placeholder",
                "placeholder": "",
                "required": false,
                "show": false,
                "title_case": false,
                "type": "str",
                "value": ""
              },
              "use_double_brackets": {
                "advanced": true,
                "display_name": "Use Double Brackets",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "use_double_brackets",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "bool",
                "value": false
              }
            }
          },
          "type": "Prompt"
        },
        "dragging": false,
        "id": "Prompt-0488b",
        "measured": {
          "height": 300,
          "width": 320
        },
        "position": {
          "x": 1240,
          "y": 120
        },
        "selected": false,
        "type": "genericNode"
      },
      {
        "data": {
          "description": "Runs the triage reasoning on Groq (OpenAI gpt-oss-120b). Fast, low-cost, OpenAI-compatible.",
          "display_name": "Groq Model \u2014 gpt-oss-120b",
          "id": "GroqModel-9ca55",
          "node": {
            "base_classes": [
              "Message",
              "LanguageModel"
            ],
            "beta": false,
            "conditional_paths": [],
            "custom_fields": {},
            "description": "Runs the triage reasoning on Groq (OpenAI gpt-oss-120b). Fast, low-cost, OpenAI-compatible.",
            "display_name": "Groq Model \u2014 gpt-oss-120b",
            "documentation": "",
            "edited": false,
            "field_order": [
              "api_key",
              "model_name",
              "base_url",
              "temperature",
              "input_value",
              "stream",
              "system_message",
              "max_tokens"
            ],
            "frozen": false,
            "icon": "Groq",
            "legacy": false,
            "lf_version": "1.7.0",
            "metadata": {
              "module": "lfx.components.groq.groq.GroqModel"
            },
            "output_types": [],
            "outputs": [
              {
                "allows_loop": false,
                "cache": true,
                "display_name": "Model Response",
                "group_outputs": false,
                "method": "text_response",
                "name": "text_output",
                "selected": "Message",
                "tool_mode": true,
                "types": [
                  "Message"
                ],
                "value": "__UNDEFINED__"
              },
              {
                "allows_loop": false,
                "cache": true,
                "display_name": "Language Model",
                "group_outputs": false,
                "method": "build_model",
                "name": "model_output",
                "selected": "LanguageModel",
                "tool_mode": true,
                "types": [
                  "LanguageModel"
                ],
                "value": "__UNDEFINED__"
              }
            ],
            "pinned": false,
            "template": {
              "_type": "Component",
              "code": {
                "advanced": true,
                "dynamic": true,
                "fileTypes": [],
                "file_path": "",
                "info": "",
                "list": false,
                "load_from_db": false,
                "multiline": true,
                "name": "code",
                "password": false,
                "placeholder": "",
                "required": true,
                "show": true,
                "title_case": false,
                "type": "code",
                "value": "# Groq model component. Runs OpenAI gpt-oss-120b (or any Groq-hosted model) at high speed.\n"
              },
              "api_key": {
                "advanced": false,
                "display_name": "Groq API Key",
                "dynamic": false,
                "info": "Your Groq API key (gsk_...). Get it at console.groq.com.",
                "list": false,
                "load_from_db": true,
                "name": "api_key",
                "placeholder": "",
                "required": true,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "",
                "_input_type": "SecretStrInput",
                "password": true
              },
              "model_name": {
                "advanced": false,
                "display_name": "Model",
                "dynamic": false,
                "info": "Groq-hosted model id.",
                "list": false,
                "load_from_db": false,
                "name": "model_name",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "openai/gpt-oss-120b",
                "_input_type": "DropdownInput",
                "options": [
                  "openai/gpt-oss-120b",
                  "openai/gpt-oss-20b",
                  "llama-3.3-70b-versatile",
                  "llama-3.1-8b-instant",
                  "moonshotai/kimi-k2-instruct"
                ]
              },
              "base_url": {
                "advanced": true,
                "display_name": "Groq API Base",
                "dynamic": false,
                "info": "Groq OpenAI-compatible endpoint.",
                "list": false,
                "load_from_db": false,
                "name": "base_url",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "https://api.groq.com/openai/v1"
              },
              "temperature": {
                "advanced": false,
                "display_name": "Temperature",
                "dynamic": false,
                "info": "Low temperature for deterministic triage.",
                "list": false,
                "load_from_db": false,
                "name": "temperature",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "float",
                "value": 0.1
              },
              "input_value": {
                "advanced": false,
                "display_name": "Input",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "input_value",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "",
                "_input_type": "MessageInput"
              },
              "stream": {
                "advanced": true,
                "display_name": "Stream",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "stream",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "bool",
                "value": false
              },
              "system_message": {
                "advanced": true,
                "display_name": "System Message",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "system_message",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "",
                "_input_type": "MultilineInput",
                "multiline": true
              },
              "max_tokens": {
                "advanced": true,
                "display_name": "Max Tokens",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "max_tokens",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "int",
                "value": ""
              }
            }
          },
          "type": "GroqModel"
        },
        "dragging": false,
        "id": "GroqModel-9ca55",
        "measured": {
          "height": 300,
          "width": 320
        },
        "position": {
          "x": 1620,
          "y": 120
        },
        "selected": false,
        "type": "genericNode"
      },
      {
        "data": {
          "description": "Forces the model output into a strict JSON schema: severity, priority, impact_areas, root_cause_analysis, justification.",
          "display_name": "Structured Output \u2014 Triage JSON",
          "id": "StructuredOutput-55b77",
          "node": {
            "base_classes": [
              "Data"
            ],
            "beta": false,
            "conditional_paths": [],
            "custom_fields": {},
            "description": "Forces the model output into a strict JSON schema: severity, priority, impact_areas, root_cause_analysis, justification.",
            "display_name": "Structured Output \u2014 Triage JSON",
            "documentation": "",
            "edited": false,
            "field_order": [
              "input_value",
              "llm",
              "format_instructions",
              "schema_name",
              "output_schema"
            ],
            "frozen": false,
            "icon": "braces",
            "legacy": false,
            "lf_version": "1.7.0",
            "metadata": {
              "module": "lfx.components.processing.structured_output.StructuredOutputComponent"
            },
            "output_types": [],
            "outputs": [
              {
                "allows_loop": false,
                "cache": true,
                "display_name": "Structured Output",
                "group_outputs": false,
                "method": "build_structured_output",
                "name": "structured_output",
                "selected": "Data",
                "tool_mode": true,
                "types": [
                  "Data"
                ],
                "value": "__UNDEFINED__"
              }
            ],
            "pinned": false,
            "template": {
              "_type": "Component",
              "code": {
                "advanced": true,
                "dynamic": true,
                "fileTypes": [],
                "file_path": "",
                "info": "",
                "list": false,
                "load_from_db": false,
                "multiline": true,
                "name": "code",
                "password": false,
                "placeholder": "",
                "required": true,
                "show": true,
                "title_case": false,
                "type": "code",
                "value": "# Structured Output forces the model's prose into a strict JSON schema.\n"
              },
              "input_value": {
                "advanced": false,
                "display_name": "Input Message",
                "dynamic": false,
                "info": "Connect the Groq model's text response here.",
                "list": false,
                "load_from_db": false,
                "name": "input_value",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "",
                "_input_type": "MessageTextInput"
              },
              "llm": {
                "advanced": false,
                "display_name": "Language Model",
                "dynamic": false,
                "info": "Connect a LanguageModel output (from the Groq component) to drive extraction.",
                "list": false,
                "load_from_db": false,
                "name": "llm",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "other",
                "value": "",
                "_input_type": "HandleInput"
              },
              "format_instructions": {
                "advanced": true,
                "display_name": "Format Instructions",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "format_instructions",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "Extract the triage fields into the schema. Return valid JSON only. Use null for unknown values.",
                "_input_type": "MultilineInput",
                "multiline": true
              },
              "schema_name": {
                "advanced": false,
                "display_name": "Schema Name",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "schema_name",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "BugTriage"
              },
              "output_schema": {
                "advanced": false,
                "display_name": "Output Schema",
                "dynamic": false,
                "info": "Fields the model must populate.",
                "list": true,
                "name": "output_schema",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "table",
                "value": [
                  {
                    "name": "severity",
                    "description": "Blocker | Critical | Major | Minor | Trivial",
                    "type": "str",
                    "multiple": false
                  },
                  {
                    "name": "priority",
                    "description": "P0 | P1 | P2 | P3 | P4",
                    "type": "str",
                    "multiple": false
                  },
                  {
                    "name": "impact_areas",
                    "description": "Affected modules / journeys / systems",
                    "type": "str",
                    "multiple": true
                  },
                  {
                    "name": "root_cause_analysis",
                    "description": "Best hypothesis of the underlying cause",
                    "type": "str",
                    "multiple": false
                  },
                  {
                    "name": "justification",
                    "description": "Why this severity and priority",
                    "type": "str",
                    "multiple": false
                  }
                ],
                "_input_type": "TableInput"
              }
            }
          },
          "type": "StructuredOutput"
        },
        "dragging": false,
        "id": "StructuredOutput-55b77",
        "measured": {
          "height": 300,
          "width": 320
        },
        "position": {
          "x": 2000,
          "y": 120
        },
        "selected": false,
        "type": "genericNode"
      },
      {
        "data": {
          "description": "Displays the final structured triage in the Playground.",
          "display_name": "Chat Output \u2014 Triage Result",
          "id": "ChatOutput-fd166",
          "node": {
            "base_classes": [
              "Message"
            ],
            "beta": false,
            "conditional_paths": [],
            "custom_fields": {},
            "description": "Displays the final structured triage in the Playground.",
            "display_name": "Chat Output \u2014 Triage Result",
            "documentation": "",
            "edited": false,
            "field_order": [
              "input_value",
              "clean_data",
              "data_template",
              "sender",
              "sender_name",
              "session_id",
              "should_store_message"
            ],
            "frozen": false,
            "icon": "MessagesSquare",
            "legacy": false,
            "lf_version": "1.7.0",
            "metadata": {
              "module": "lfx.components.input_output.chat.ChatOutput"
            },
            "output_types": [],
            "outputs": [
              {
                "allows_loop": false,
                "cache": true,
                "display_name": "Message",
                "group_outputs": false,
                "method": "message_response",
                "name": "message",
                "selected": "Message",
                "tool_mode": true,
                "types": [
                  "Message"
                ],
                "value": "__UNDEFINED__"
              }
            ],
            "pinned": false,
            "template": {
              "_type": "Component",
              "code": {
                "advanced": true,
                "dynamic": true,
                "fileTypes": [],
                "file_path": "",
                "info": "",
                "list": false,
                "load_from_db": false,
                "multiline": true,
                "name": "code",
                "password": false,
                "placeholder": "",
                "required": true,
                "show": true,
                "title_case": false,
                "type": "code",
                "value": "# ChatOutput component (Langflow built-in)\n"
              },
              "input_value": {
                "advanced": false,
                "display_name": "Inputs",
                "dynamic": false,
                "info": "The structured triage JSON.",
                "list": false,
                "load_from_db": false,
                "name": "input_value",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "",
                "_input_type": "MessageInput"
              },
              "clean_data": {
                "advanced": true,
                "display_name": "Clean Data",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "clean_data",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "bool",
                "value": true
              },
              "data_template": {
                "advanced": true,
                "display_name": "Data Template",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "data_template",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "{text}"
              },
              "sender": {
                "advanced": true,
                "display_name": "Sender",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "sender",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "Machine"
              },
              "sender_name": {
                "advanced": true,
                "display_name": "Sender Name",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "sender_name",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": "AI"
              },
              "session_id": {
                "advanced": true,
                "display_name": "Session Id",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "session_id",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "str",
                "value": ""
              },
              "should_store_message": {
                "advanced": true,
                "display_name": "Should Store Message",
                "dynamic": false,
                "info": "",
                "list": false,
                "load_from_db": false,
                "name": "should_store_message",
                "placeholder": "",
                "required": false,
                "show": true,
                "title_case": false,
                "type": "bool",
                "value": true
              }
            }
          },
          "type": "ChatOutput"
        },
        "dragging": false,
        "id": "ChatOutput-fd166",
        "measured": {
          "height": 300,
          "width": 320
        },
        "position": {
          "x": 2380,
          "y": 120
        },
        "selected": false,
        "type": "genericNode"
      }
    ],
    "viewport": {
      "x": 0,
      "y": 0,
      "zoom": 0.5
    }
  },
  "description": "Fetches a Jira issue, reads it with Groq (gpt-oss-120b), and outputs structured triage: severity, priority, impact areas, and RCA.",
  "endpoint_name": "bug_triage",
  "id": "aecf0bb7-a285-42d7-a385-153ad7d9371d",
  "is_component": false,
  "last_tested_version": "1.7.0",
  "name": "Bug Triage AI Agent",
  "tags": [
    "agents",
    "qa",
    "triage"
  ]
}