<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler" exporterVersion="d592e81" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.8.0">
  <bpmn:process id="MessageDelivery" name="Message Delivery Service" isExecutable="true">
    <bpmn:scriptTask id="Activity_0pif9np" name="Create Prompt">
      <bpmn:extensionElements>
        <zeebe:script expression="=&#34;someone want to send a message to &#34; + person + &#34; and i want to say &#34; + message + &#34; The sender of the message is &#34;+ sender" resultVariable="prompt" />
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_1mhncmd</bpmn:incoming>
      <bpmn:outgoing>Flow_07bf1q3</bpmn:outgoing>
    </bpmn:scriptTask>
    <bpmn:exclusiveGateway id="Gateway_10fw0q0" name="Do we need to run some tools?">
      <bpmn:incoming>Flow_0dw3zlh</bpmn:incoming>
      <bpmn:outgoing>Flow_0jfut8p</bpmn:outgoing>
      <bpmn:outgoing>Flow_0yw0f5f</bpmn:outgoing>
    </bpmn:exclusiveGateway>
    <bpmn:endEvent id="Event_07im29j" name="Message Delivered">
      <bpmn:incoming>Flow_0yw0f5f</bpmn:incoming>
    </bpmn:endEvent>
    <bpmn:sequenceFlow id="Flow_03v5vkz" sourceRef="Gateway_0ktiraj" targetRef="Activity_1oa2mmy" />
    <bpmn:sequenceFlow id="Flow_07bf1q3" sourceRef="Activity_0pif9np" targetRef="Gateway_0ktiraj" />
    <bpmn:sequenceFlow id="Flow_0dw3zlh" sourceRef="Activity_1oa2mmy" targetRef="Gateway_10fw0q0" />
    <bpmn:sequenceFlow id="Flow_1aazek6" sourceRef="niallsTools" targetRef="Gateway_0ktiraj" />
    <bpmn:sequenceFlow id="Flow_1mhncmd" sourceRef="StartEvent_1" targetRef="Activity_0pif9np" />
    <bpmn:exclusiveGateway id="Gateway_0ktiraj">
      <bpmn:incoming>Flow_07bf1q3</bpmn:incoming>
      <bpmn:incoming>Flow_1aazek6</bpmn:incoming>
      <bpmn:outgoing>Flow_03v5vkz</bpmn:outgoing>
    </bpmn:exclusiveGateway>
    <bpmn:serviceTask id="Activity_1oa2mmy" name="AI Task Agent" zeebe:modelerTemplate="io.camunda.connectors.agenticai.aiagent.v0" zeebe:modelerTemplateVersion="0" zeebe:modelerTemplateIcon="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IiNBNTZFRkYiLz4KPG1hc2sgaWQ9InBhdGgtMi1vdXRzaWRlLTFfMTg1XzYiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjQiIHk9IjQiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0iYmxhY2siPgo8cmVjdCBmaWxsPSJ3aGl0ZSIgeD0iNCIgeT0iNCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjAuMDEwNSAxMi4wOTg3QzE4LjQ5IDEwLjU4OTQgMTcuMTU5NCA4LjEwODE0IDE2LjE3OTkgNi4wMTEwM0MxNi4xNTIgNi4wMDQ1MSAxNi4xMTc2IDYgMTYuMDc5NCA2QzE2LjA0MTEgNiAxNi4wMDY2IDYuMDA0NTEgMTUuOTc4OCA2LjAxMTA0QzE0Ljk5OTQgOC4xMDgxNCAxMy42Njk3IDEwLjU4ODkgMTIuMTQ4MSAxMi4wOTgxQzEwLjYyNjkgMTMuNjA3MSA4LjEyNTY4IDE0LjkyNjQgNi4wMTE1NyAxNS44OTgxQzYuMDA0NzQgMTUuOTI2MSA2IDE1Ljk2MTEgNiAxNkM2IDE2LjAzODcgNi4wMDQ2OCAxNi4wNzM2IDYuMDExNDQgMTYuMTAxNEM4LjEyNTE5IDE3LjA3MjkgMTAuNjI2MiAxOC4zOTE5IDEyLjE0NzcgMTkuOTAxNkMxMy42Njk3IDIxLjQxMDcgMTQuOTk5NiAyMy44OTIgMTUuOTc5MSAyNS45ODlDMTYuMDA2OCAyNS45OTU2IDE2LjA0MTEgMjYgMTYuMDc5MyAyNkMxNi4xMTc1IDI2IDE2LjE1MTkgMjUuOTk1NCAxNi4xNzk2IDI1Ljk4OUMxNy4xNTkxIDIzLjg5MiAxOC40ODg4IDIxLjQxMSAyMC4wMDk5IDE5LjkwMjFNMjAuMDA5OSAxOS45MDIxQzIxLjUyNTMgMTguMzk4NyAyMy45NDY1IDE3LjA2NjkgMjUuOTkxNSAxNi4wODI0QzI1Ljk5NjUgMTYuMDU5MyAyNiAxNi4wMzEgMjYgMTUuOTk5N0MyNiAxNS45Njg0IDI1Ljk5NjUgMTUuOTQwMyAyNS45OTE1IDE1LjkxNzFDMjMuOTQ3NCAxNC45MzI3IDIxLjUyNTkgMTMuNjAxIDIwLjAxMDUgMTIuMDk4NyIvPgo8L21hc2s+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjAuMDEwNSAxMi4wOTg3QzE4LjQ5IDEwLjU4OTQgMTcuMTU5NCA4LjEwODE0IDE2LjE3OTkgNi4wMTEwM0MxNi4xNTIgNi4wMDQ1MSAxNi4xMTc2IDYgMTYuMDc5NCA2QzE2LjA0MTEgNiAxNi4wMDY2IDYuMDA0NTEgMTUuOTc4OCA2LjAxMTA0QzE0Ljk5OTQgOC4xMDgxNCAxMy42Njk3IDEwLjU4ODkgMTIuMTQ4MSAxMi4wOTgxQzEwLjYyNjkgMTMuNjA3MSA4LjEyNTY4IDE0LjkyNjQgNi4wMTE1NyAxNS44OTgxQzYuMDA0NzQgMTUuOTI2MSA2IDE1Ljk2MTEgNiAxNkM2IDE2LjAzODcgNi4wMDQ2OCAxNi4wNzM2IDYuMDExNDQgMTYuMTAxNEM4LjEyNTE5IDE3LjA3MjkgMTAuNjI2MiAxOC4zOTE5IDEyLjE0NzcgMTkuOTAxNkMxMy42Njk3IDIxLjQxMDcgMTQuOTk5NiAyMy44OTIgMTUuOTc5MSAyNS45ODlDMTYuMDA2OCAyNS45OTU2IDE2LjA0MTEgMjYgMTYuMDc5MyAyNkMxNi4xMTc1IDI2IDE2LjE1MTkgMjUuOTk1NCAxNi4xNzk2IDI1Ljk4OUMxNy4xNTkxIDIzLjg5MiAxOC40ODg4IDIxLjQxMSAyMC4wMDk5IDE5LjkwMjFNMjAuMDA5OSAxOS45MDIxQzIxLjUyNTMgMTguMzk4NyAyMy45NDY1IDE3LjA2NjkgMjUuOTkxNSAxNi4wODI0QzI1Ljk5NjUgMTYuMDU5MyAyNiAxNi4wMzEgMjYgMTUuOTk5N0MyNiAxNS45Njg0IDI1Ljk5NjUgMTUuOTQwMyAyNS45OTE1IDE1LjkxNzFDMjMuOTQ3NCAxNC45MzI3IDIxLjUyNTkgMTMuNjAxIDIwLjAxMDUgMTIuMDk4NyIgZmlsbD0id2hpdGUiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMC4wMTA1IDEyLjA5ODdDMTguNDkgMTAuNTg5NCAxNy4xNTk0IDguMTA4MTQgMTYuMTc5OSA2LjAxMTAzQzE2LjE1MiA2LjAwNDUxIDE2LjExNzYgNiAxNi4wNzk0IDZDMTYuMDQxMSA2IDE2LjAwNjYgNi4wMDQ1MSAxNS45Nzg4IDYuMDExMDRDMTQuOTk5NCA4LjEwODE0IDEzLjY2OTcgMTAuNTg4OSAxMi4xNDgxIDEyLjA5ODFDMTAuNjI2OSAxMy42MDcxIDguMTI1NjggMTQuOTI2NCA2LjAxMTU3IDE1Ljg5ODFDNi4wMDQ3NCAxNS45MjYxIDYgMTUuOTYxMSA2IDE2QzYgMTYuMDM4NyA2LjAwNDY4IDE2LjA3MzYgNi4wMTE0NCAxNi4xMDE0QzguMTI1MTkgMTcuMDcyOSAxMC42MjYyIDE4LjM5MTkgMTIuMTQ3NyAxOS45MDE2QzEzLjY2OTcgMjEuNDEwNyAxNC45OTk2IDIzLjg5MiAxNS45NzkxIDI1Ljk4OUMxNi4wMDY4IDI1Ljk5NTYgMTYuMDQxMSAyNiAxNi4wNzkzIDI2QzE2LjExNzUgMjYgMTYuMTUxOSAyNS45OTU0IDE2LjE3OTYgMjUuOTg5QzE3LjE1OTEgMjMuODkyIDE4LjQ4ODggMjEuNDExIDIwLjAwOTkgMTkuOTAyMU0yMC4wMDk5IDE5LjkwMjFDMjEuNTI1MyAxOC4zOTg3IDIzLjk0NjUgMTcuMDY2OSAyNS45OTE1IDE2LjA4MjRDMjUuOTk2NSAxNi4wNTkzIDI2IDE2LjAzMSAyNiAxNS45OTk3QzI2IDE1Ljk2ODQgMjUuOTk2NSAxNS45NDAzIDI1Ljk5MTUgMTUuOTE3MUMyMy45NDc0IDE0LjkzMjcgMjEuNTI1OSAxMy42MDEgMjAuMDEwNSAxMi4wOTg3IiBzdHJva2U9IiM0OTFEOEIiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgbWFzaz0idXJsKCNwYXRoLTItb3V0c2lkZS0xXzE4NV82KSIvPgo8L3N2Zz4K">
      <bpmn:extensionElements>
        <zeebe:taskDefinition type="io.camunda.agenticai:aiagent:0" retries="3" />
        <zeebe:ioMapping>
          <zeebe:input source="bedrock" target="provider.type" />
          <zeebe:input source="{{secrets.AWS_REGION}}" target="provider.bedrock.region" />
          <zeebe:input source="anthropic.claude-3-5-sonnet-20240620-v1:0" target="provider.bedrock.model.model" />
          <zeebe:input source="credentials" target="provider.bedrock.authentication.type" />
          <zeebe:input source="{{secrets.AWS_ACCESS_KEY}}" target="provider.bedrock.authentication.accessKey" />
          <zeebe:input source="{{secrets.AWS_SECRET_KEY}}" target="provider.bedrock.authentication.secretKey" />
          <zeebe:input source="=agent.context" target="data.context" />
          <zeebe:input source="You are **TaskAgent**, a helpful, generic chat agent that can handle a wide variety of customer requests using your own domain knowledge **and** any tools explicitly provided to you at runtime.&#10;&#10;────────────────────────────────&#10;# 0. CONTEXT — WHO IS “USER”?&#10;────────────────────────────────&#10;• **Every incoming user message is from the customer.**  &#10;• Treat “user” and “customer” as the same person throughout the conversation.  &#10;• Internal staff or experts communicate only through the expert-communication tool(s).&#10;&#10;────────────────────────────────&#10;# 1. MANDATORY TOOL-DRIVEN WORKFLOW&#10;────────────────────────────────&#10;For **every** customer request, follow this exact sequence:&#10;&#10;1. **Inspect** the full list of available tools.  &#10;2. **Evaluate** each tool’s relevance.  &#10;3. **Invoke at least one relevant tool** *before* replying to the customer.  &#10;   • Call the same tool multiple times with different inputs if useful.  &#10;   • If no domain-specific tool fits, you **must**  &#10;     a. call a generic search / knowledge-retrieval tool **or**  &#10;     b. escalate via the expert-communication tool (e.g. `ask_expert`, `escalate_expert`).  &#10;   • Only if the expert confirms that no tool can help may you answer from general knowledge.  &#10;   • Any decision to skip a potentially helpful tool must be justified inside `&#60;reflection&#62;`.  &#10;4. **Communication mandate**:  &#10;   • To gather more information from the **customer**, call the *customer-communication tool* (e.g. `ask_customer`, `send_customer_msg`).  &#10;   • To seek guidance from an **expert**, call the *expert-communication tool*.  &#10;5. **Never** invent or call tools that are not in the supplied list.  &#10;6. After exhausting every relevant tool—and expert escalation if required—if you still cannot help, reply exactly with  &#10;   `ERROR: &#60;brief explanation&#62;`.&#10;&#10;────────────────────────────────&#10;# 2. DATA PRIVACY &#38; LOOKUPS&#10;────────────────────────────────&#10;When real-person data or contact details are involved, do **not** fabricate information.  &#10;Use the appropriate lookup tools; if data cannot be retrieved, reply with the standard error message above.&#10;&#10;────────────────────────────────&#10;# 3. CHAIN-OF-THOUGHT FORMAT  (MANDATORY BEFORE EVERY TOOL CALL)&#10;────────────────────────────────&#10;Wrap minimal, inspectable reasoning in *exactly* this XML template:&#10;&#10;&#60;thinking&#62;&#10;  &#60;context&#62;…briefly state the customer’s need and current state…&#60;/context&#62;&#10;  &#60;reflection&#62;…list candidate tools, justify which you will call next and why…&#60;/reflection&#62;&#10;&#60;/thinking&#62;&#10;&#10;Reveal **no** additional private reasoning outside these tags.&#10;&#10;────────────────────────────────&#10;# 4. SATISFACTION CONFIRMATION, FINAL EMAIL &#38; TASK RESOLUTION&#10;────────────────────────────────&#10;A. When you believe the request is fulfilled, end your reply with a confirmation question such as  &#10;   “Does this fully resolve your issue?”  &#10;B. If the customer answers positively (e.g. “yes”, “that’s perfect”, “thanks”):  &#10;   1. **Immediately call** the designated email-delivery tool (e.g. `send_email`, `send_customer_msg`) with an appropriate subject and body that contains the final solution.  &#10;   2. After that tool call, your *next* chat message must contain **only** this word:  &#10;      RESOLVED  &#10;C. If the customer’s very next message already expresses satisfaction without the confirmation question, do step B immediately.  &#10;D. Never append anything after “RESOLVED”.  &#10;E. If no email-delivery tool exists, escalate to the expert-communication tool; if the expert confirms none exists, reply with an error as described in §1-6.&#10;&#10;" target="data.systemPrompt.prompt" />
          <zeebe:input source="=prompt" target="data.userPrompt.prompt" />
          <zeebe:input source="niallsTools" target="data.tools.containerElementId" />
          <zeebe:input source="=toolCallResults" target="data.tools.toolCallResults" />
          <zeebe:input source="=20" target="data.memory.maxMessages" />
          <zeebe:input source="=10" target="data.guardrails.maxModelCalls" />
          <zeebe:input source="=5000" target="provider.bedrock.model.parameters.maxOutputTokens" />
          <zeebe:input source="=0.2" target="provider.bedrock.model.parameters.temperature" />
          <zeebe:input source="=0.1" target="provider.bedrock.model.parameters.topP" />
        </zeebe:ioMapping>
        <zeebe:taskHeaders>
          <zeebe:header key="elementTemplateVersion" value="0" />
          <zeebe:header key="elementTemplateId" value="io.camunda.connectors.agenticai.aiagent.v0" />
          <zeebe:header key="resultVariable" value="agent" />
          <zeebe:header key="retryBackoff" value="PT0S" />
        </zeebe:taskHeaders>
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_03v5vkz</bpmn:incoming>
      <bpmn:outgoing>Flow_0dw3zlh</bpmn:outgoing>
    </bpmn:serviceTask>
    <bpmn:adHocSubProcess id="niallsTools" name="NIall&#39;s Tools">
      <bpmn:extensionElements>
        <zeebe:adHoc activeElementsCollection="=[toolCall._meta.name]" />
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_0jfut8p</bpmn:incoming>
      <bpmn:outgoing>Flow_1aazek6</bpmn:outgoing>
      <bpmn:multiInstanceLoopCharacteristics>
        <bpmn:extensionElements>
          <zeebe:loopCharacteristics inputCollection="=agent.toolCalls" inputElement="toolCall" outputCollection="toolCallResults" outputElement="={&#10;  id: toolCall._meta.id,&#10;  name: toolCall._meta.name,&#10;  content: toolCallResult&#10;}" />
        </bpmn:extensionElements>
      </bpmn:multiInstanceLoopCharacteristics>
      <bpmn:userTask id="Activity_1c3br52" name="Get More Info">
        <bpmn:documentation>This will ask someone to go get some information about someone for you. You can also ask for documents. </bpmn:documentation>
        <bpmn:extensionElements>
          <zeebe:userTask />
          <zeebe:ioMapping>
            <zeebe:input source="=fromAi(toolCall.aiquestion, &#34;Add here the question you want to ask our expert. Keep it short and be friendly&#34;, &#34;string&#34;)" target="aiquestion" />
            <zeebe:output source="={&#10;  &#34;personal_info_response&#34;: humanAnswer&#10;}" target="toolCallResult" />
          </zeebe:ioMapping>
          <zeebe:formDefinition formId="get-info-1m766nh" />
        </bpmn:extensionElements>
      </bpmn:userTask>
      <bpmn:serviceTask id="Activity_1rk0tf2" name="Send Slack Message" zeebe:modelerTemplate="io.camunda.connectors.Slack.v1" zeebe:modelerTemplateVersion="7" zeebe:modelerTemplateIcon="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI3IiBoZWlnaHQ9IjEyNyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aCBkPSJNMjcuMiA4MGMwIDcuMy01LjkgMTMuMi0xMy4yIDEzLjJDNi43IDkzLjIuOCA4Ny4zLjggODBjMC03LjMgNS45LTEzLjIgMTMuMi0xMy4yaDEzLjJWODB6bTYuNiAwYzAtNy4zIDUuOS0xMy4yIDEzLjItMTMuMiA3LjMgMCAxMy4yIDUuOSAxMy4yIDEzLjJ2MzNjMCA3LjMtNS45IDEzLjItMTMuMiAxMy4yLTcuMyAwLTEzLjItNS45LTEzLjItMTMuMlY4MHoiIGZpbGw9IiNFMDFFNUEiLz4KICA8cGF0aCBkPSJNNDcgMjdjLTcuMyAwLTEzLjItNS45LTEzLjItMTMuMkMzMy44IDYuNSAzOS43LjYgNDcgLjZjNy4zIDAgMTMuMiA1LjkgMTMuMiAxMy4yVjI3SDQ3em0wIDYuN2M3LjMgMCAxMy4yIDUuOSAxMy4yIDEzLjIgMCA3LjMtNS45IDEzLjItMTMuMiAxMy4ySDEzLjlDNi42IDYwLjEuNyA1NC4yLjcgNDYuOWMwLTcuMyA1LjktMTMuMiAxMy4yLTEzLjJINDd6IiBmaWxsPSIjMzZDNUYwIi8+CiAgPHBhdGggZD0iTTk5LjkgNDYuOWMwLTcuMyA1LjktMTMuMiAxMy4yLTEzLjIgNy4zIDAgMTMuMiA1LjkgMTMuMiAxMy4yIDAgNy4zLTUuOSAxMy4yLTEzLjIgMTMuMkg5OS45VjQ2Ljl6bS02LjYgMGMwIDcuMy01LjkgMTMuMi0xMy4yIDEzLjItNy4zIDAtMTMuMi01LjktMTMuMi0xMy4yVjEzLjhDNjYuOSA2LjUgNzIuOC42IDgwLjEuNmM3LjMgMCAxMy4yIDUuOSAxMy4yIDEzLjJ2MzMuMXoiIGZpbGw9IiMyRUI2N0QiLz4KICA8cGF0aCBkPSJNODAuMSA5OS44YzcuMyAwIDEzLjIgNS45IDEzLjIgMTMuMiAwIDcuMy01LjkgMTMuMi0xMy4yIDEzLjItNy4zIDAtMTMuMi01LjktMTMuMi0xMy4yVjk5LjhoMTMuMnptMC02LjZjLTcuMyAwLTEzLjItNS45LTEzLjItMTMuMiAwLTcuMyA1LjktMTMuMiAxMy4yLTEzLjJoMzMuMWM3LjMgMCAxMy4yIDUuOSAxMy4yIDEzLjIgMCA3LjMtNS45IDEzLjItMTMuMiAxMy4ySDgwLjF6IiBmaWxsPSIjRUNCMjJFIi8+Cjwvc3ZnPgo=">
        <bpmn:documentation>This can send a slack message to everyone at Niall's hawk emporium</bpmn:documentation>
        <bpmn:extensionElements>
          <zeebe:taskDefinition type="io.camunda:slack:1" retries="3" />
          <zeebe:ioMapping>
            <zeebe:input source="junk" target="token" />
            <zeebe:input source="chat.postMessage" target="method" />
            <zeebe:input source="plainText" target="data.messageType" />
            <zeebe:input source="junk" target="data.text" />
            <zeebe:input source="junk" target="data.channel" />
          </zeebe:ioMapping>
          <zeebe:taskHeaders>
            <zeebe:header key="elementTemplateVersion" value="7" />
            <zeebe:header key="elementTemplateId" value="io.camunda.connectors.Slack.v1" />
            <zeebe:header key="retryBackoff" value="PT0S" />
          </zeebe:taskHeaders>
        </bpmn:extensionElements>
      </bpmn:serviceTask>
      <bpmn:serviceTask id="Activity_0a2crzv" name="Send an Email" zeebe:modelerTemplate="io.camunda.connectors.email.v1" zeebe:modelerTemplateVersion="3" zeebe:modelerTemplateIcon="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzkwXzI0MjApIj4KPHBhdGggZD0iTTguMzM4MzUgOS45NTM2NUwxMC4zODk0IDEyLjAxMDRMOC4zMzI2MiAxNC4wNjcyTDkuMTQ2MTYgMTQuODc1TDEyLjAxMDcgMTIuMDEwNEw5LjE0NjE2IDkuMTQ1ODNMOC4zMzgzNSA5Ljk1MzY1WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTEyLjM0ODggOS45NTM2NUwxNC4zOTk4IDEyLjAxMDRMMTIuMzQzIDE0LjA2NzJMMTMuMTU2NiAxNC44NzVMMTYuMDIxMiAxMi4wMTA0TDEzLjE1NjYgOS4xNDU4M0wxMi4zNDg4IDkuOTUzNjVaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMy45NzIgMTEuNDM3NUgxLjEyNTMzVjIuNzkyMTlMNy42NzM3NiA3LjMyMzk2QzcuNzY5NjcgNy4zOTA0OSA3Ljg4MzYgNy40MjYxNCA4LjAwMDMyIDcuNDI2MTRDOC4xMTcwNSA3LjQyNjE0IDguMjMwOTggNy4zOTA0OSA4LjMyNjg5IDcuMzIzOTZMMTQuODc1MyAyLjc5MjE5VjhIMTYuMDIxMlYyLjI3MDgzQzE2LjAyMTIgMS45NjY5NCAxNS45MDA0IDEuNjc1NDkgMTUuNjg1NiAxLjQ2MDYxQzE1LjQ3MDcgMS4yNDU3MiAxNS4xNzkyIDEuMTI1IDE0Ljg3NTMgMS4xMjVIMS4xMjUzM0MwLjgyMTQzMiAxLjEyNSAwLjUyOTk4NCAxLjI0NTcyIDAuMzE1MDk5IDEuNDYwNjFDMC4xMDAyMTQgMS42NzU0OSAtMC4wMjA1MDc4IDEuOTY2OTQgLTAuMDIwNTA3OCAyLjI3MDgzVjExLjQzNzVDLTAuMDIwNTA3OCAxMS43NDE0IDAuMTAwMjE0IDEyLjAzMjggMC4zMTUwOTkgMTIuMjQ3N0MwLjUyOTk4NCAxMi40NjI2IDAuODIxNDMyIDEyLjU4MzMgMS4xMjUzMyAxMi41ODMzSDMuOTcyVjExLjQzNzVaTTEzLjYxNDkgMi4yNzA4M0w4LjAwMDMyIDYuMTU1MjFMMi4zODU3NCAyLjI3MDgzSDEzLjYxNDlaIiBmaWxsPSIjRkM1RDBEIi8+CjxwYXRoIGQ9Ik00LjI4MjEgOS45NTM2NUw2LjMzMzE0IDEyLjAxMDRMNC4yNzYzNyAxNC4wNjcyTDUuMDg5OTEgMTQuODc1TDcuOTU0NDkgMTIuMDEwNEw1LjA4OTkxIDkuMTQ1ODNMNC4yODIxIDkuOTUzNjVaIiBmaWxsPSJibGFjayIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzkwXzI0MjAiPgo8cmVjdCB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==">
        <bpmn:documentation>This is a service that lets you send an email to someone. </bpmn:documentation>
        <bpmn:extensionElements>
          <zeebe:taskDefinition type="io.camunda:email:1" retries="3" />
          <zeebe:ioMapping>
            <zeebe:input source="simple" target="authentication.type" />
            <zeebe:input source="junk" target="authentication.username" />
            <zeebe:input source="junk" target="authentication.password" />
            <zeebe:input source="smtp" target="protocol" />
            <zeebe:input source="junk" target="data.smtpConfig.smtpHost" />
            <zeebe:input source="=587" target="data.smtpConfig.smtpPort" />
            <zeebe:input source="TLS" target="data.smtpConfig.smtpCryptographicProtocol" />
            <zeebe:input source="sendEmailSmtp" target="data.smtpActionDiscriminator" />
            <zeebe:input source="junk" target="data.smtpAction.from" />
            <zeebe:input source="junk" target="data.smtpAction.to" />
            <zeebe:input source="junk" target="data.smtpAction.subject" />
            <zeebe:input source="PLAIN" target="data.smtpAction.contentType" />
            <zeebe:input target="data.smtpAction.body" />
          </zeebe:ioMapping>
          <zeebe:taskHeaders>
            <zeebe:header key="elementTemplateVersion" value="3" />
            <zeebe:header key="elementTemplateId" value="io.camunda.connectors.email.v1" />
            <zeebe:header key="retryBackoff" value="PT0S" />
          </zeebe:taskHeaders>
        </bpmn:extensionElements>
      </bpmn:serviceTask>
    </bpmn:adHocSubProcess>
    <bpmn:sequenceFlow id="Flow_0yw0f5f" name="No" sourceRef="Gateway_10fw0q0" targetRef="Event_07im29j">
      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=agent.toolCalls = null or count(agent.toolCalls) = 0</bpmn:conditionExpression>
    </bpmn:sequenceFlow>
    <bpmn:startEvent id="StartEvent_1" name="Message Needs to be Delivered">
      <bpmn:extensionElements>
        <zeebe:formDefinition formId="Form_0f0pmmg" />
      </bpmn:extensionElements>
      <bpmn:outgoing>Flow_1mhncmd</bpmn:outgoing>
    </bpmn:startEvent>
    <bpmn:sequenceFlow id="Flow_0jfut8p" name="Yes" sourceRef="Gateway_10fw0q0" targetRef="niallsTools">
      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=not(agent.toolCalls = null) and count(agent.toolCalls) &gt; 0</bpmn:conditionExpression>
    </bpmn:sequenceFlow>
  </bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="MessageDelivery">
      <bpmndi:BPMNShape id="Activity_0z89ulz_di" bpmnElement="Activity_0pif9np">
        <dc:Bounds x="260" y="78" width="100" height="80" />
        <bpmndi:BPMNLabel />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Gateway_10fw0q0_di" bpmnElement="Gateway_10fw0q0" isMarkerVisible="true">
        <dc:Bounds x="955" y="93" width="50" height="50" />
        <bpmndi:BPMNLabel>
          <dc:Bounds x="935" y="63" width="90" height="27" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Event_07im29j_di" bpmnElement="Event_07im29j">
        <dc:Bounds x="1362" y="100" width="36" height="36" />
        <bpmndi:BPMNLabel>
          <dc:Bounds x="1356" y="143" width="48" height="27" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Gateway_0ktiraj_di" bpmnElement="Gateway_0ktiraj" isMarkerVisible="true">
        <dc:Bounds x="435" y="93" width="50" height="50" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_0pd9up5_di" bpmnElement="Activity_1oa2mmy">
        <dc:Bounds x="663" y="78" width="100" height="80" />
        <bpmndi:BPMNLabel />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_19u6hqs_di" bpmnElement="niallsTools" isExpanded="true">
        <dc:Bounds x="510" y="250" width="405" height="340" />
        <bpmndi:BPMNLabel />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_1ylqnep_di" bpmnElement="Activity_1c3br52">
        <dc:Bounds x="760" y="410" width="100" height="80" />
        <bpmndi:BPMNLabel />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_0itt0kb_di" bpmnElement="Activity_1rk0tf2">
        <dc:Bounds x="650" y="290" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_0cbuope_di" bpmnElement="Activity_0a2crzv">
        <dc:Bounds x="560" y="410" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
        <dc:Bounds x="150" y="100" width="36" height="36" />
        <bpmndi:BPMNLabel>
          <dc:Bounds x="127" y="143" width="83" height="27" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_03v5vkz_di" bpmnElement="Flow_03v5vkz">
        <di:waypoint x="485" y="118" />
        <di:waypoint x="663" y="118" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_07bf1q3_di" bpmnElement="Flow_07bf1q3">
        <di:waypoint x="360" y="118" />
        <di:waypoint x="435" y="118" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_0dw3zlh_di" bpmnElement="Flow_0dw3zlh">
        <di:waypoint x="763" y="118" />
        <di:waypoint x="955" y="118" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1aazek6_di" bpmnElement="Flow_1aazek6">
        <di:waypoint x="510" y="366" />
        <di:waypoint x="460" y="366" />
        <di:waypoint x="460" y="143" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1mhncmd_di" bpmnElement="Flow_1mhncmd">
        <di:waypoint x="186" y="118" />
        <di:waypoint x="260" y="118" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_0yw0f5f_di" bpmnElement="Flow_0yw0f5f">
        <di:waypoint x="1005" y="118" />
        <di:waypoint x="1362" y="118" />
        <bpmndi:BPMNLabel>
          <dc:Bounds x="1042" y="100" width="15" height="14" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_0jfut8p_di" bpmnElement="Flow_0jfut8p">
        <di:waypoint x="980" y="143" />
        <di:waypoint x="980" y="366" />
        <di:waypoint x="915" y="366" />
        <bpmndi:BPMNLabel>
          <dc:Bounds x="986" y="254" width="18" height="14" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>
