@camunda/e2e-test-suite 0.0.453 → 0.0.455

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/.github/c8_versions.json +17 -0
  2. package/dist/tests/SM-8.10/smoke-tests.spec.js +2 -1
  3. package/package.json +8 -3
  4. package/playwright.config.ts +382 -0
  5. package/resources/Basic_Auth_REST_Connector.bpmn +62 -0
  6. package/resources/Camunda_Simple_User_Task_1.bpmn +41 -0
  7. package/resources/Camunda_Simple_User_Task_2.bpmn +41 -0
  8. package/resources/Camunda_Simple_User_Task_3.bpmn +41 -0
  9. package/resources/Camunda_Simple_User_Task_4.bpmn +41 -0
  10. package/resources/Camunda_Simple_User_Task_5.bpmn +41 -0
  11. package/resources/Candidate_User_Process_Three_Tasks.bpmn +116 -0
  12. package/resources/Candidate_User_Process_Two_Tasks.bpmn +91 -0
  13. package/resources/Conditional_Events_All.bpmn +111 -0
  14. package/resources/Connectors Document Handling.bpmn +298 -0
  15. package/resources/ConnectorsBasicTest.bpmn +2292 -0
  16. package/resources/Intermediate_Event_Webhook_Connector_No_Auth_Process.bpmn +60 -0
  17. package/resources/Job_Worker_Process.bpmn +38 -0
  18. package/resources/New Form.form +24 -0
  19. package/resources/REST_Connector_Bearer_Auth_Process.bpmn +53 -0
  20. package/resources/REST_Connector_No_Auth_Process.bpmn +52 -0
  21. package/resources/Rest Connector Timer Event.bpmn +227 -0
  22. package/resources/SM_Document_Handling_Connectors_User_Flow.bpmn +297 -0
  23. package/resources/Start_Event_Webhook_Connector_No_Auth_Process.bpmn +43 -0
  24. package/resources/Start_Form_Process.bpmn +29 -0
  25. package/resources/User_Task_Editing_Variables.bpmn +41 -0
  26. package/resources/User_Task_Process_With_Form.bpmn +41 -0
  27. package/resources/User_Task_Process_With_Form_2.bpmn +41 -0
  28. package/resources/User_Task_Process_With_Form_3.bpmn +42 -0
  29. package/resources/User_Task_Process_With_Form_API.bpmn +41 -0
  30. package/resources/Variable_Process.bpmn +38 -0
  31. package/resources/Zeebe_User_Task.bpmn +41 -0
  32. package/resources/Zeebe_User_Task_Process_With_Priority.bpmn +145 -0
  33. package/resources/agentic_ai/ai-agent-chat-user-feedback.form +87 -0
  34. package/resources/agentic_ai/ai-agent-chat-with-tools_aws.bpmn +443 -0
  35. package/resources/agentic_ai/ai-agent-chat-with-tools_azure.bpmn +441 -0
  36. package/resources/agentic_ai/ai-agent-chat-with-tools_open_ai.bpmn +438 -0
  37. package/resources/agentic_ai/ai-agent-subprocess-with-tools_aws_key.bpmn +115 -0
  38. package/resources/camunda.png +0 -0
  39. package/resources/cluster_variables/cluster_variable_global_scope.bpmn +59 -0
  40. package/resources/cluster_variables/cluster_variable_json_form.form +49 -0
  41. package/resources/cluster_variables/cluster_variable_json_mutable.bpmn +33 -0
  42. package/resources/cluster_variables/cluster_variable_json_readonly.bpmn +59 -0
  43. package/resources/cluster_variables/cluster_variable_string_form.form +31 -0
  44. package/resources/cluster_variables/cluster_variable_string_mutable.bpmn +31 -0
  45. package/resources/cluster_variables/cluster_variable_string_readonly.bpmn +57 -0
  46. package/resources/cluster_variables/preview_cluster_variables.form +49 -0
  47. package/resources/connectors/aws/bedrock-knowledge-base.bpmn +72 -0
  48. package/resources/connectors/db_vector_connector/db-vector-plain-text_azure_open_ai.bpmn +183 -0
  49. package/resources/connectors/db_vector_connector/db-vector-plain-text_open_ai.bpmn +178 -0
  50. package/resources/connectors/db_vector_connector/db-vector-plain-text_openai_amazon_opensearch.bpmn +189 -0
  51. package/resources/connectors/db_vector_connector/db-vector-retrieve-data.form +34 -0
  52. package/resources/idp/idp_sample_bank_statement.pdf +0 -0
  53. package/resources/idp/structured_invoice_1.pdf +74 -0
  54. package/resources/idp/structured_invoice_2.pdf +74 -0
  55. package/resources/idp/structured_invoice_3.pdf +74 -0
  56. package/resources/idp/structured_invoice_test.pdf +74 -0
  57. package/resources/mcp_server/keycloak/camunda-platform-realm.json +45 -0
  58. package/resources/mcp_server/mcp_remote_client_basic_auth.bpmn +69 -0
  59. package/resources/mcp_server/mcp_remote_client_bearer_auth.bpmn +68 -0
  60. package/resources/mcp_server/mcp_remote_client_oauth_auth.bpmn +76 -0
  61. package/resources/mcp_server/mcp_remote_client_operations.bpmn +373 -0
  62. package/resources/mcp_server/mcp_server_list_tools.bpmn +69 -0
  63. package/resources/mcp_server_saas/mcp_cluster_tools.bpmn +168 -0
  64. package/resources/mcp_server_saas/mcp_incident_test_file.bpmn +54 -0
  65. package/resources/mcp_server_saas/mcp_incident_tools.bpmn +240 -0
  66. package/resources/mcp_server_saas/mcp_process_definition_test_file.bpmn +51 -0
  67. package/resources/mcp_server_saas/mcp_process_definition_tools.bpmn +234 -0
  68. package/resources/mcp_server_saas/mcp_process_instance_test_file.bpmn +51 -0
  69. package/resources/mcp_server_saas/mcp_process_instance_tools.bpmn +232 -0
  70. package/resources/mcp_server_saas/mcp_user_task_test_file.bpmn +55 -0
  71. package/resources/mcp_server_saas/mcp_user_task_tools.bpmn +309 -0
  72. package/resources/mcp_server_saas/mcp_variable_test_file.bpmn +35 -0
  73. package/resources/mcp_server_saas/mcp_variable_tools.bpmn +170 -0
  74. package/resources/simple_pdf.pdf +0 -0
  75. package/resources/simple_text.txt +1 -0
  76. package/resources/test-api-v2-complete.sh +12162 -0
@@ -0,0 +1,438 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
3
+ xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
4
+ xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
5
+ xmlns:zeebe="http://camunda.org/schema/zeebe/1.0"
6
+ xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8
+ xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0"
9
+ xmlns:color="http://www.omg.org/spec/BPMN/non-normative/color/1.0"
10
+ xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_18jxukq"
11
+ targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler"
12
+ exporterVersion="2de5b0b" modeler:executionPlatform="Camunda Cloud"
13
+ modeler:executionPlatformVersion="8.9.0">
14
+ <bpmn:process id="ai-agent-chat-with-tools-openAI" name="AI Agent Chat With Tools openAI"
15
+ isExecutable="true">
16
+ <bpmn:startEvent id="StartEvent_1">
17
+ <bpmn:extensionElements>
18
+ <zeebe:formDefinition formId="ai-agent-chat-initial-request" />
19
+ </bpmn:extensionElements>
20
+ <bpmn:outgoing>Flow_0pbzrme</bpmn:outgoing>
21
+ </bpmn:startEvent>
22
+ <bpmn:sequenceFlow id="Flow_0pbzrme" sourceRef="StartEvent_1" targetRef="Gateway_0z6ctwk" />
23
+ <bpmn:serviceTask id="AI_Agent" name="AI Agent"
24
+ zeebe:modelerTemplate="io.camunda.connectors.agenticai.aiagent.v1"
25
+ zeebe:modelerTemplateVersion="6"
26
+ zeebe:modelerTemplateIcon="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IiNBNTZFRkYiLz4KPG1hc2sgaWQ9InBhdGgtMi1vdXRzaWRlLTFfMTg1XzYiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjQiIHk9IjQiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0iYmxhY2siPgo8cmVjdCBmaWxsPSJ3aGl0ZSIgeD0iNCIgeT0iNCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjAuMDEwNSAxMi4wOTg3QzE4LjQ5IDEwLjU4OTQgMTcuMTU5NCA4LjEwODE0IDE2LjE3OTkgNi4wMTEwM0MxNi4xNTIgNi4wMDQ1MSAxNi4xMTc2IDYgMTYuMDc5NCA2QzE2LjA0MTEgNiAxNi4wMDY2IDYuMDA0NTEgMTUuOTc4OCA2LjAxMTA0QzE0Ljk5OTQgOC4xMDgxNCAxMy42Njk3IDEwLjU4ODkgMTIuMTQ4MSAxMi4wOTgxQzEwLjYyNjkgMTMuNjA3MSA4LjEyNTY4IDE0LjkyNjQgNi4wMTE1NyAxNS44OTgxQzYuMDA0NzQgMTUuOTI2MSA2IDE1Ljk2MTEgNiAxNkM2IDE2LjAzODcgNi4wMDQ2OCAxNi4wNzM2IDYuMDExNDQgMTYuMTAxNEM4LjEyNTE5IDE3LjA3MjkgMTAuNjI2MiAxOC4zOTE5IDEyLjE0NzcgMTkuOTAxNkMxMy42Njk3IDIxLjQxMDcgMTQuOTk5NiAyMy44OTIgMTUuOTc5MSAyNS45ODlDMTYuMDA2OCAyNS45OTU2IDE2LjA0MTEgMjYgMTYuMDc5MyAyNkMxNi4xMTc1IDI2IDE2LjE1MTkgMjUuOTk1NCAxNi4xNzk2IDI1Ljk4OUMxNy4xNTkxIDIzLjg5MiAxOC40ODg4IDIxLjQxMSAyMC4wMDk5IDE5LjkwMjFNMjAuMDA5OSAxOS45MDIxQzIxLjUyNTMgMTguMzk4NyAyMy45NDY1IDE3LjA2NjkgMjUuOTkxNSAxNi4wODI0QzI1Ljk5NjUgMTYuMDU5MyAyNiAxNi4wMzEgMjYgMTUuOTk5N0MyNiAxNS45Njg0IDI1Ljk5NjUgMTUuOTQwMyAyNS45OTE1IDE1LjkxNzFDMjMuOTQ3NCAxNC45MzI3IDIxLjUyNTkgMTMuNjAxIDIwLjAxMDUgMTIuMDk4NyIvPgo8L21hc2s+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjAuMDEwNSAxMi4wOTg3QzE4LjQ5IDEwLjU4OTQgMTcuMTU5NCA4LjEwODE0IDE2LjE3OTkgNi4wMTEwM0MxNi4xNTIgNi4wMDQ1MSAxNi4xMTc2IDYgMTYuMDc5NCA2QzE2LjA0MTEgNiAxNi4wMDY2IDYuMDA0NTEgMTUuOTc4OCA2LjAxMTA0QzE0Ljk5OTQgOC4xMDgxNCAxMy42Njk3IDEwLjU4ODkgMTIuMTQ4MSAxMi4wOTgxQzEwLjYyNjkgMTMuNjA3MSA4LjEyNTY4IDE0LjkyNjQgNi4wMTE1NyAxNS44OTgxQzYuMDA0NzQgMTUuOTI2MSA2IDE1Ljk2MTEgNiAxNkM2IDE2LjAzODcgNi4wMDQ2OCAxNi4wNzM2IDYuMDExNDQgMTYuMTAxNEM4LjEyNTE5IDE3LjA3MjkgMTAuNjI2MiAxOC4zOTE5IDEyLjE0NzcgMTkuOTAxNkMxMy42Njk3IDIxLjQxMDcgMTQuOTk5NiAyMy44OTIgMTUuOTc5MSAyNS45ODlDMTYuMDA2OCAyNS45OTU2IDE2LjA0MTEgMjYgMTYuMDc5MyAyNkMxNi4xMTc1IDI2IDE2LjE1MTkgMjUuOTk1NCAxNi4xNzk2IDI1Ljk4OUMxNy4xNTkxIDIzLjg5MiAxOC40ODg4IDIxLjQxMSAyMC4wMDk5IDE5LjkwMjFNMjAuMDA5OSAxOS45MDIxQzIxLjUyNTMgMTguMzk4NyAyMy45NDY1IDE3LjA2NjkgMjUuOTkxNSAxNi4wODI0QzI1Ljk5NjUgMTYuMDU5MyAyNiAxNi4wMzEgMjYgMTUuOTk5N0MyNiAxNS45Njg0IDI1Ljk5NjUgMTUuOTQwMyAyNS45OTE1IDE1LjkxNzFDMjMuOTQ3NCAxNC45MzI3IDIxLjUyNTkgMTMuNjAxIDIwLjAxMDUgMTIuMDk4NyIgZmlsbD0id2hpdGUiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMC4wMTA1IDEyLjA5ODdDMTguNDkgMTAuNTg5NCAxNy4xNTk0IDguMTA4MTQgMTYuMTc5OSA2LjAxMTAzQzE2LjE1MiA2LjAwNDUxIDE2LjExNzYgNiAxNi4wNzk0IDZDMTYuMDQxMSA2IDE2LjAwNjYgNi4wMDQ1MSAxNS45Nzg4IDYuMDExMDRDMTQuOTk5NCA4LjEwODE0IDEzLjY2OTcgMTAuNTg4OSAxMi4xNDgxIDEyLjA5ODFDMTAuNjI2OSAxMy42MDcxIDguMTI1NjggMTQuOTI2NCA2LjAxMTU3IDE1Ljg5ODFDNi4wMDQ3NCAxNS45MjYxIDYgMTUuOTYxMSA2IDE2QzYgMTYuMDM4NyA2LjAwNDY4IDE2LjA3MzYgNi4wMTE0NCAxNi4xMDE0QzguMTI1MTkgMTcuMDcyOSAxMC42MjYyIDE4LjM5MTkgMTIuMTQ3NyAxOS45MDE2QzEzLjY2OTcgMjEuNDEwNyAxNC45OTk2IDIzLjg5MiAxNS45NzkxIDI1Ljk4OUMxNi4wMDY4IDI1Ljk5NTYgMTYuMDQxMSAyNiAxNi4wNzkzIDI2QzE2LjExNzUgMjYgMTYuMTUxOSAyNS45OTU0IDE2LjE3OTYgMjUuOTg5QzE3LjE1OTEgMjMuODkyIDE4LjQ4ODggMjEuNDExIDIwLjAwOTkgMTkuOTAyMU0yMC4wMDk5IDE5LjkwMjFDMjEuNTI1MyAxOC4zOTg3IDIzLjk0NjUgMTcuMDY2OSAyNS45OTE1IDE2LjA4MjRDMjUuOTk2NSAxNi4wNTkzIDI2IDE2LjAzMSAyNiAxNS45OTk3QzI2IDE1Ljk2ODQgMjUuOTk2NSAxNS45NDAzIDI1Ljk5MTUgMTUuOTE3MUMyMy45NDc0IDE0LjkzMjcgMjEuNTI1OSAxMy42MDEgMjAuMDEwNSAxMi4wOTg3IiBzdHJva2U9IiM0OTFEOEIiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgbWFzaz0idXJsKCNwYXRoLTItb3V0c2lkZS0xXzE4NV82KSIvPgo8L3N2Zz4K">
27
+ <bpmn:extensionElements>
28
+ <zeebe:taskDefinition type="io.camunda.agenticai:aiagent:1" retries="3" />
29
+ <zeebe:ioMapping>
30
+ <zeebe:input source="openai" target="provider.type" />
31
+ <zeebe:input source="{{secrets.OPENAI_API_KEY}}"
32
+ target="provider.openai.authentication.apiKey" />
33
+ <zeebe:input source="gpt-4o" target="provider.openai.model.model" />
34
+ <zeebe:input
35
+ source="You are a helpful, generic chat agent which can answer a wide amount of questions based on your knowledge and an optional set of available tools.&#10;&#10;If tools are provided, you should prefer them instead of guessing an answer. You can call the same tool multiple times by providing different input values. Don&#39;t guess any tools which were not explicitely configured. If no tool matches the request, try to generate an answer. If you&#39;re not able to find a good answer, return with a message stating why you&#39;re not able to.&#10;&#10;If you are prompted to interact with a person, never guess contact details, but use available user/person lookup tools instead and return with an error if you&#39;re not able to look up appropriate data.&#10;&#10;Thinking, step by step, before you execute your tools, you think using the template `&#60;thinking&#62;&#60;context&#62;&#60;/context&#62;&#60;reflection&#62;&#60;/reflection&#62;&#60;/thinking&#62;`"
36
+ target="data.systemPrompt.prompt" />
37
+ <zeebe:input
38
+ source="=&#34;Generate a single sentence in the following exact format, always using a new random city and country each time:&#10;&#10;Latest Message The current date and time in {City, Country}, is approximately {h:mm AM/PM} on {Month day, year}.&#34;"
39
+ target="data.userPrompt.prompt" />
40
+ <zeebe:input
41
+ source="=if (is defined(followUpInput) or is defined(followUpDocuments)) then followUpDocuments else inputDocuments"
42
+ target="data.userPrompt.documents" />
43
+ <zeebe:input source="Agent_Tools" target="data.tools.containerElementId" />
44
+ <zeebe:input source="=toolCallResults" target="data.tools.toolCallResults" />
45
+ <zeebe:input source="=agent.context" target="data.context" />
46
+ <zeebe:input source="in-process" target="data.memory.storage.type" />
47
+ <zeebe:input source="=20" target="data.memory.contextWindowSize" />
48
+ <zeebe:input source="=10" target="data.limits.maxModelCalls" />
49
+ <zeebe:input source="text" target="data.response.format.type" />
50
+ <zeebe:input source="=false" target="data.response.format.parseJson" />
51
+ <zeebe:input source="=false" target="data.response.includeAssistantMessage" />
52
+ </zeebe:ioMapping>
53
+ <zeebe:taskHeaders>
54
+ <zeebe:header key="elementTemplateVersion" value="6" />
55
+ <zeebe:header key="elementTemplateId" value="io.camunda.connectors.agenticai.aiagent.v1" />
56
+ <zeebe:header key="resultVariable" value="agent" />
57
+ <zeebe:header key="retryBackoff" value="PT2S" />
58
+ </zeebe:taskHeaders>
59
+ </bpmn:extensionElements>
60
+ <bpmn:incoming>Flow_050377t</bpmn:incoming>
61
+ <bpmn:outgoing>Flow_041ffce</bpmn:outgoing>
62
+ </bpmn:serviceTask>
63
+ <bpmn:exclusiveGateway id="Gateway_0z6ctwk">
64
+ <bpmn:incoming>Flow_0pbzrme</bpmn:incoming>
65
+ <bpmn:incoming>Flow_01k9dy1</bpmn:incoming>
66
+ <bpmn:incoming>Flow_19gp461</bpmn:incoming>
67
+ <bpmn:outgoing>Flow_050377t</bpmn:outgoing>
68
+ </bpmn:exclusiveGateway>
69
+ <bpmn:userTask id="User_Feedback" name="User Feedback">
70
+ <bpmn:extensionElements>
71
+ <zeebe:userTask />
72
+ <zeebe:formDefinition formId="ai-agent-chat-user-feedback" />
73
+ </bpmn:extensionElements>
74
+ <bpmn:incoming>Flow_11y3kim</bpmn:incoming>
75
+ <bpmn:outgoing>Flow_09y08ef</bpmn:outgoing>
76
+ </bpmn:userTask>
77
+ <bpmn:exclusiveGateway id="Gateway_1dcg4ha" name="User satisfied?">
78
+ <bpmn:incoming>Flow_09y08ef</bpmn:incoming>
79
+ <bpmn:outgoing>Flow_19gp461</bpmn:outgoing>
80
+ <bpmn:outgoing>Flow_16c9bwj</bpmn:outgoing>
81
+ </bpmn:exclusiveGateway>
82
+ <bpmn:sequenceFlow id="Flow_09y08ef" sourceRef="User_Feedback" targetRef="Gateway_1dcg4ha" />
83
+ <bpmn:sequenceFlow id="Flow_19gp461" name="no - we follow up" sourceRef="Gateway_1dcg4ha"
84
+ targetRef="Gateway_0z6ctwk">
85
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=userSatisfied = null or
86
+ userSatisfied = false</bpmn:conditionExpression>
87
+ </bpmn:sequenceFlow>
88
+ <bpmn:endEvent id="Event_0i39jej">
89
+ <bpmn:incoming>Flow_16c9bwj</bpmn:incoming>
90
+ </bpmn:endEvent>
91
+ <bpmn:sequenceFlow id="Flow_16c9bwj" name="yes" sourceRef="Gateway_1dcg4ha"
92
+ targetRef="Event_0i39jej">
93
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=userSatisfied</bpmn:conditionExpression>
94
+ </bpmn:sequenceFlow>
95
+ <bpmn:sequenceFlow id="Flow_041ffce" sourceRef="AI_Agent" targetRef="Gateway_0bukj01" />
96
+ <bpmn:exclusiveGateway id="Gateway_0bukj01" name="Includes tool calls?">
97
+ <bpmn:incoming>Flow_041ffce</bpmn:incoming>
98
+ <bpmn:outgoing>Flow_00lg7l2</bpmn:outgoing>
99
+ <bpmn:outgoing>Flow_11y3kim</bpmn:outgoing>
100
+ </bpmn:exclusiveGateway>
101
+ <bpmn:adHocSubProcess id="Agent_Tools" name="Agent Tools">
102
+ <bpmn:extensionElements>
103
+ <zeebe:adHoc activeElementsCollection="=[toolCall._meta.name]" />
104
+ </bpmn:extensionElements>
105
+ <bpmn:incoming>Flow_00lg7l2</bpmn:incoming>
106
+ <bpmn:outgoing>Flow_01k9dy1</bpmn:outgoing>
107
+ <bpmn:multiInstanceLoopCharacteristics>
108
+ <bpmn:extensionElements>
109
+ <zeebe:loopCharacteristics inputCollection="=agent.toolCalls" inputElement="toolCall"
110
+ outputCollection="toolCallResults"
111
+ outputElement="={&#10; id: toolCall._meta.id,&#10; name: toolCall._meta.name,&#10; content: toolCallResult&#10;}" />
112
+ </bpmn:extensionElements>
113
+ </bpmn:multiInstanceLoopCharacteristics>
114
+ <bpmn:scriptTask id="GetDateAndTime" name="Get Date and Time">
115
+ <bpmn:documentation>Returns the current date and time including the timezone.</bpmn:documentation>
116
+ <bpmn:extensionElements>
117
+ <zeebe:script expression="=now()" resultVariable="toolCallResult" />
118
+ </bpmn:extensionElements>
119
+ </bpmn:scriptTask>
120
+ <bpmn:serviceTask id="Search_Recipe" name="Search recipe"
121
+ zeebe:modelerTemplate="io.camunda.connectors.HttpJson.v2" zeebe:modelerTemplateVersion="10"
122
+ zeebe:modelerTemplateIcon="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE3LjAzMzUgOC45OTk5N0MxNy4wMzM1IDEzLjQ0NzUgMTMuNDI4MSAxNy4wNTI5IDguOTgwNjUgMTcuMDUyOUM0LjUzMzE2IDE3LjA1MjkgMC45Mjc3NjUgMTMuNDQ3NSAwLjkyNzc2NSA4Ljk5OTk3QzAuOTI3NzY1IDQuNTUyNDggNC41MzMxNiAwLjk0NzA4MyA4Ljk4MDY1IDAuOTQ3MDgzQzEzLjQyODEgMC45NDcwODMgMTcuMDMzNSA0LjU1MjQ4IDE3LjAzMzUgOC45OTk5N1oiIGZpbGw9IiM1MDU1NjIiLz4KPHBhdGggZD0iTTQuOTMxMjYgMTQuMTU3MUw2Ljc4MTA2IDMuNzE0NzFIMTAuMTM3NUMxMS4xOTE3IDMuNzE0NzEgMTEuOTgyNCAzLjk4MzIzIDEyLjUwOTUgNC41MjAyN0MxMy4wNDY1IDUuMDQ3MzYgMTMuMzE1IDUuNzMzNTggMTMuMzE1IDYuNTc4OTJDMTMuMzE1IDcuNDQ0MTQgMTMuMDcxNCA4LjE1NTIyIDEyLjU4NDEgOC43MTIxNUMxMi4xMDY3IDkuMjU5MTMgMTEuNDU1MyA5LjYzNzA1IDEwLjYyOTggOS44NDU5TDEyLjA2MTkgMTQuMTU3MUgxMC4zMzE1TDkuMDMzNjQgMTAuMDI0OUg3LjI0MzUxTDYuNTEyNTQgMTQuMTU3MUg0LjkzMTI2Wk03LjQ5NzExIDguNTkyODFIOS4yNDI0OEM5Ljk5ODMyIDguNTkyODEgMTAuNTkwMSA4LjQyMzc0IDExLjAxNzcgOC4wODU2MUMxMS40NTUzIDcuNzM3NTMgMTEuNjc0MSA3LjI2NTEzIDExLjY3NDEgNi42Njg0MkMxMS42NzQxIDYuMTkxMDYgMTEuNTI0OSA1LjgxODExIDExLjIyNjUgNS41NDk1OUMxMC45MjgyIDUuMjcxMTMgMTAuNDU1OCA1LjEzMTkgOS44MDkzNiA1LjEzMTlIOC4xMDg3NEw3LjQ5NzExIDguNTkyODFaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K">
123
+ <bpmn:documentation>Searches a recipe given a search query</bpmn:documentation>
124
+ <bpmn:extensionElements>
125
+ <zeebe:taskDefinition type="io.camunda:http-json:1" retries="3" />
126
+ <zeebe:ioMapping>
127
+ <zeebe:input source="noAuth" target="authentication.type" />
128
+ <zeebe:input source="GET" target="method" />
129
+ <zeebe:input source="https://dummyjson.com/recipes/search" target="url" />
130
+ <zeebe:input
131
+ source="={&#10; q: fromAi(toolCall.searchQuery, &#34;The query describing which recipe to search (e.g. a specific dish or the cuisine).&#34;)&#10;}"
132
+ target="queryParameters" />
133
+ <zeebe:input source="=false" target="storeResponse" />
134
+ <zeebe:input source="20" target="connectionTimeoutInSeconds" />
135
+ <zeebe:input source="20" target="readTimeoutInSeconds" />
136
+ <zeebe:input source="=false" target="ignoreNullValues" />
137
+ </zeebe:ioMapping>
138
+ <zeebe:taskHeaders>
139
+ <zeebe:header key="resultExpression"
140
+ value="={&#10; toolCallResult: if (count(response.body.recipes) &#62; 0) then response.body.recipes else &#34;No result found.&#34;&#10;}" />
141
+ <zeebe:header key="retryBackoff" value="PT0S" />
142
+ </zeebe:taskHeaders>
143
+ </bpmn:extensionElements>
144
+ </bpmn:serviceTask>
145
+ <bpmn:scriptTask id="SuperfluxProduct" name="Superflux Product Calculation">
146
+ <bpmn:documentation>Calculates the superflux product (a very complicated method only this
147
+ tool can do) given two input numbers</bpmn:documentation>
148
+ <bpmn:extensionElements>
149
+ <zeebe:script expression="=3 * (inputA + inputB)" resultVariable="toolCallResult" />
150
+ <zeebe:ioMapping>
151
+ <zeebe:input
152
+ source="=fromAi(toolCall.a, &#34;The first number to be superflux calculated.&#34;, &#34;number&#34;)"
153
+ target="inputA" />
154
+ <zeebe:input
155
+ source="=fromAi(toolCall.b, &#34;The second number to be superflux calculated.&#34;, &#34;number&#34;)"
156
+ target="inputB" />
157
+ </zeebe:ioMapping>
158
+ </bpmn:extensionElements>
159
+ </bpmn:scriptTask>
160
+ <bpmn:userTask id="AskHumanToSendEmail" name="Ask human to send email">
161
+ <bpmn:documentation>Ask a human to send an email for you</bpmn:documentation>
162
+ <bpmn:extensionElements>
163
+ <zeebe:userTask />
164
+ <zeebe:formDefinition formId="ai-agent-chat-human-send-email-request" />
165
+ <zeebe:ioMapping>
166
+ <zeebe:input
167
+ source="=fromAi(toolCall.instructions, &#34;Instructions for the human to follow when sending the email, including background of the email.&#34;)"
168
+ target="instructions" />
169
+ <zeebe:input
170
+ source="=fromAi(toolCall.recipient_name, &#34;The recipient&#39;s full name.&#34;)"
171
+ target="recipient_name" />
172
+ <zeebe:input
173
+ source="=fromAi(toolCall.recipient_email, &#34;The the recipient&#39;s email address.&#34;)"
174
+ target="recipient_email" />
175
+ <zeebe:input
176
+ source="=fromAi(toolCall.email_subject, &#34;The subject of the email.&#34;)"
177
+ target="email_subject" />
178
+ <zeebe:input source="=fromAi(toolCall.email_body, &#34;The body of the email.&#34;)"
179
+ target="email_body" />
180
+ <zeebe:output
181
+ source="={&#10; operatorFeedback: operatorFeedback,&#10; emailOk: emailOk&#10;}"
182
+ target="toolCallResult" />
183
+ </zeebe:ioMapping>
184
+ </bpmn:extensionElements>
185
+ <bpmn:outgoing>Flow_0demz1g</bpmn:outgoing>
186
+ </bpmn:userTask>
187
+ <bpmn:sequenceFlow id="Flow_0demz1g" sourceRef="AskHumanToSendEmail"
188
+ targetRef="Gateway_1lux75t" />
189
+ <bpmn:exclusiveGateway id="Gateway_1lux75t" name="OK to send email?">
190
+ <bpmn:incoming>Flow_0demz1g</bpmn:incoming>
191
+ <bpmn:outgoing>Flow_0uqjclh</bpmn:outgoing>
192
+ <bpmn:outgoing>Flow_1l2ws6w</bpmn:outgoing>
193
+ </bpmn:exclusiveGateway>
194
+ <bpmn:sequenceFlow id="Flow_0uqjclh" name="yes" sourceRef="Gateway_1lux75t"
195
+ targetRef="SendEmail">
196
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=toolCallResult.emailOk</bpmn:conditionExpression>
197
+ </bpmn:sequenceFlow>
198
+ <bpmn:sequenceFlow id="Flow_1l2ws6w" name="no" sourceRef="Gateway_1lux75t"
199
+ targetRef="Event_1wxfv4u">
200
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=toolCallResult.emailOk != true</bpmn:conditionExpression>
201
+ </bpmn:sequenceFlow>
202
+ <bpmn:intermediateThrowEvent id="Event_1wxfv4u" name="loop back with feedback">
203
+ <bpmn:incoming>Flow_1l2ws6w</bpmn:incoming>
204
+ </bpmn:intermediateThrowEvent>
205
+ <bpmn:scriptTask id="SendEmail" name="Send email">
206
+ <bpmn:extensionElements>
207
+ <zeebe:script expression="=true" resultVariable="emailSent" />
208
+ <zeebe:ioMapping>
209
+ <zeebe:output source="=emailSent" target="toolCallResult.emailSent" />
210
+ </zeebe:ioMapping>
211
+ </bpmn:extensionElements>
212
+ <bpmn:incoming>Flow_0uqjclh</bpmn:incoming>
213
+ </bpmn:scriptTask>
214
+ </bpmn:adHocSubProcess>
215
+ <bpmn:sequenceFlow id="Flow_00lg7l2" name="yes" sourceRef="Gateway_0bukj01"
216
+ targetRef="Agent_Tools">
217
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=not(is empty(agent.toolCalls))</bpmn:conditionExpression>
218
+ </bpmn:sequenceFlow>
219
+ <bpmn:sequenceFlow id="Flow_11y3kim" name="no" sourceRef="Gateway_0bukj01"
220
+ targetRef="User_Feedback">
221
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=is empty(agent.toolCalls)</bpmn:conditionExpression>
222
+ </bpmn:sequenceFlow>
223
+ <bpmn:sequenceFlow id="Flow_050377t" sourceRef="Gateway_0z6ctwk" targetRef="AI_Agent" />
224
+ <bpmn:sequenceFlow id="Flow_01k9dy1" sourceRef="Agent_Tools" targetRef="Gateway_0z6ctwk" />
225
+ <bpmn:textAnnotation id="TextAnnotation_0rg9ar3">
226
+ <bpmn:text>Rough outline of the functionality
227
+
228
+ - Loads previous agent context (conversation, metrics, ...)
229
+ - Loads available tool information from ad-hoc sub-process definition
230
+ - Resolves tool information from gateway tool definitions such as MCP
231
+ - Checks limits (e.g. maximum LLM model calls)
232
+ - Merges the current request (either a user message or a tool call response) into the memory
233
+ - Calls the LLM, including previous/edited memory (limited to max amount of messages) +
234
+ available tools schema
235
+ - Returns last response as text or JSON format, depending on the configuration
236
+ - Returns tools to call, including their parameters</bpmn:text>
237
+ </bpmn:textAnnotation>
238
+ <bpmn:association id="Association_0ic98nl" associationDirection="None" sourceRef="AI_Agent"
239
+ targetRef="TextAnnotation_0rg9ar3" />
240
+ <bpmn:textAnnotation id="TextAnnotation_1keavvi">
241
+ <bpmn:text>For every tool call in &lt;agent.toolCalls&gt;</bpmn:text>
242
+ </bpmn:textAnnotation>
243
+ <bpmn:association id="Association_0q5n90x" associationDirection="None" sourceRef="Agent_Tools"
244
+ targetRef="TextAnnotation_1keavvi" />
245
+ <bpmn:textAnnotation id="TextAnnotation_1cvjkfu">
246
+ <bpmn:text>Every execution (flow node or sequence of flow nodes) MUST write
247
+ &lt;toolCallResult&gt; variable</bpmn:text>
248
+ </bpmn:textAnnotation>
249
+ <bpmn:textAnnotation id="TextAnnotation_1tvejhg">
250
+ <bpmn:text>Every task inside of an execution MAY query for external inputs provided by the
251
+ model through the fromAI helper:
252
+
253
+ fromAi(toolCall.id, "The user ID", "number")
254
+
255
+ The outside brain &lt;AI Agent&gt; will take that information to instruct the model which
256
+ data to provide in which format.</bpmn:text>
257
+ </bpmn:textAnnotation>
258
+ <bpmn:textAnnotation id="TextAnnotation_0xt28ql">
259
+ <bpmn:text>Must produce output as &lt;toolCallResults=[ { id, name, content } ]&gt;</bpmn:text>
260
+ </bpmn:textAnnotation>
261
+ <bpmn:association id="Association_14t02ll" associationDirection="None" sourceRef="Agent_Tools"
262
+ targetRef="TextAnnotation_0xt28ql" />
263
+ </bpmn:process>
264
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
265
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ai-agent-chat-with-tools-openAI">
266
+ <bpmndi:BPMNShape id="StartEvent_1_di" bpmnElement="StartEvent_1">
267
+ <dc:Bounds x="152" y="442" width="36" height="36" />
268
+ </bpmndi:BPMNShape>
269
+ <bpmndi:BPMNShape id="Activity_0xj2598_di" bpmnElement="AI_Agent" bioc:stroke="#205022"
270
+ bioc:fill="#c8e6c9" color:background-color="#c8e6c9" color:border-color="#205022">
271
+ <dc:Bounds x="340" y="420" width="100" height="80" />
272
+ <bpmndi:BPMNLabel />
273
+ </bpmndi:BPMNShape>
274
+ <bpmndi:BPMNShape id="Gateway_0z6ctwk_di" bpmnElement="Gateway_0z6ctwk" isMarkerVisible="true">
275
+ <dc:Bounds x="245" y="435" width="50" height="50" />
276
+ </bpmndi:BPMNShape>
277
+ <bpmndi:BPMNShape id="Activity_1fam9db_di" bpmnElement="User_Feedback">
278
+ <dc:Bounds x="640" y="420" width="100" height="80" />
279
+ <bpmndi:BPMNLabel />
280
+ </bpmndi:BPMNShape>
281
+ <bpmndi:BPMNShape id="Gateway_1dcg4ha_di" bpmnElement="Gateway_1dcg4ha" isMarkerVisible="true">
282
+ <dc:Bounds x="805" y="435" width="50" height="50" />
283
+ <bpmndi:BPMNLabel>
284
+ <dc:Bounds x="794" y="492" width="73" height="14" />
285
+ </bpmndi:BPMNLabel>
286
+ </bpmndi:BPMNShape>
287
+ <bpmndi:BPMNShape id="Event_0i39jej_di" bpmnElement="Event_0i39jej">
288
+ <dc:Bounds x="912" y="442" width="36" height="36" />
289
+ </bpmndi:BPMNShape>
290
+ <bpmndi:BPMNShape id="Gateway_0bukj01_di" bpmnElement="Gateway_0bukj01" isMarkerVisible="true">
291
+ <dc:Bounds x="505" y="435" width="50" height="50" />
292
+ <bpmndi:BPMNLabel>
293
+ <dc:Bounds x="499" y="406" width="62" height="27" />
294
+ </bpmndi:BPMNLabel>
295
+ </bpmndi:BPMNShape>
296
+ <bpmndi:BPMNShape id="Activity_03yngb7_di" bpmnElement="Agent_Tools" isExpanded="true"
297
+ bioc:stroke="#6b3c00" bioc:fill="#ffe0b2" color:background-color="#ffe0b2"
298
+ color:border-color="#6b3c00">
299
+ <dc:Bounds x="640" y="560" width="400" height="360" />
300
+ </bpmndi:BPMNShape>
301
+ <bpmndi:BPMNShape id="Activity_1sbkoqq_di" bpmnElement="GetDateAndTime">
302
+ <dc:Bounds x="670" y="600" width="100" height="80" />
303
+ <bpmndi:BPMNLabel />
304
+ </bpmndi:BPMNShape>
305
+ <bpmndi:BPMNShape id="Activity_0d8luif_di" bpmnElement="Search_Recipe">
306
+ <dc:Bounds x="920" y="600" width="100" height="80" />
307
+ <bpmndi:BPMNLabel />
308
+ </bpmndi:BPMNShape>
309
+ <bpmndi:BPMNShape id="BPMNShape_0x0a1hy" bpmnElement="SuperfluxProduct">
310
+ <dc:Bounds x="790" y="600" width="100" height="80" />
311
+ <bpmndi:BPMNLabel />
312
+ </bpmndi:BPMNShape>
313
+ <bpmndi:BPMNShape id="Activity_16uhg8o_di" bpmnElement="AskHumanToSendEmail">
314
+ <dc:Bounds x="670" y="730" width="100" height="80" />
315
+ <bpmndi:BPMNLabel />
316
+ </bpmndi:BPMNShape>
317
+ <bpmndi:BPMNShape id="Gateway_1lux75t_di" bpmnElement="Gateway_1lux75t" isMarkerVisible="true">
318
+ <dc:Bounds x="815" y="745" width="50" height="50" />
319
+ <bpmndi:BPMNLabel>
320
+ <dc:Bounds x="812" y="716" width="56" height="27" />
321
+ </bpmndi:BPMNLabel>
322
+ </bpmndi:BPMNShape>
323
+ <bpmndi:BPMNShape id="Event_1ny5xkz_di" bpmnElement="Event_1wxfv4u">
324
+ <dc:Bounds x="822" y="832" width="36" height="36" />
325
+ <bpmndi:BPMNLabel>
326
+ <dc:Bounds x="805" y="875" width="70" height="27" />
327
+ </bpmndi:BPMNLabel>
328
+ </bpmndi:BPMNShape>
329
+ <bpmndi:BPMNShape id="Activity_1sddc2g_di" bpmnElement="SendEmail">
330
+ <dc:Bounds x="910" y="730" width="100" height="80" />
331
+ </bpmndi:BPMNShape>
332
+ <bpmndi:BPMNEdge id="Flow_0demz1g_di" bpmnElement="Flow_0demz1g">
333
+ <di:waypoint x="770" y="770" />
334
+ <di:waypoint x="815" y="770" />
335
+ </bpmndi:BPMNEdge>
336
+ <bpmndi:BPMNEdge id="Flow_0uqjclh_di" bpmnElement="Flow_0uqjclh">
337
+ <di:waypoint x="865" y="770" />
338
+ <di:waypoint x="910" y="770" />
339
+ <bpmndi:BPMNLabel>
340
+ <dc:Bounds x="879" y="752" width="18" height="14" />
341
+ </bpmndi:BPMNLabel>
342
+ </bpmndi:BPMNEdge>
343
+ <bpmndi:BPMNEdge id="Flow_1l2ws6w_di" bpmnElement="Flow_1l2ws6w">
344
+ <di:waypoint x="840" y="795" />
345
+ <di:waypoint x="840" y="832" />
346
+ <bpmndi:BPMNLabel>
347
+ <dc:Bounds x="849" y="803" width="13" height="14" />
348
+ </bpmndi:BPMNLabel>
349
+ </bpmndi:BPMNEdge>
350
+ <bpmndi:BPMNShape id="TextAnnotation_0rg9ar3_di" bpmnElement="TextAnnotation_0rg9ar3">
351
+ <dc:Bounds x="401" y="80" width="578" height="170" />
352
+ <bpmndi:BPMNLabel />
353
+ </bpmndi:BPMNShape>
354
+ <bpmndi:BPMNShape id="TextAnnotation_1keavvi_di" bpmnElement="TextAnnotation_1keavvi">
355
+ <dc:Bounds x="1080" y="510" width="240" height="26" />
356
+ <bpmndi:BPMNLabel />
357
+ </bpmndi:BPMNShape>
358
+ <bpmndi:BPMNShape id="TextAnnotation_1cvjkfu_di" bpmnElement="TextAnnotation_1cvjkfu">
359
+ <dc:Bounds x="1210" y="660" width="260" height="60" />
360
+ <bpmndi:BPMNLabel />
361
+ </bpmndi:BPMNShape>
362
+ <bpmndi:BPMNShape id="TextAnnotation_1tvejhg_di" bpmnElement="TextAnnotation_1tvejhg">
363
+ <dc:Bounds x="1210" y="740" width="286" height="142" />
364
+ <bpmndi:BPMNLabel />
365
+ </bpmndi:BPMNShape>
366
+ <bpmndi:BPMNShape id="TextAnnotation_0xt28ql_di" bpmnElement="TextAnnotation_0xt28ql">
367
+ <dc:Bounds x="1168" y="920" width="370" height="26" />
368
+ <bpmndi:BPMNLabel />
369
+ </bpmndi:BPMNShape>
370
+ <bpmndi:BPMNEdge id="Flow_0pbzrme_di" bpmnElement="Flow_0pbzrme">
371
+ <di:waypoint x="188" y="460" />
372
+ <di:waypoint x="245" y="460" />
373
+ </bpmndi:BPMNEdge>
374
+ <bpmndi:BPMNEdge id="Flow_09y08ef_di" bpmnElement="Flow_09y08ef">
375
+ <di:waypoint x="740" y="460" />
376
+ <di:waypoint x="805" y="460" />
377
+ </bpmndi:BPMNEdge>
378
+ <bpmndi:BPMNEdge id="Flow_19gp461_di" bpmnElement="Flow_19gp461">
379
+ <di:waypoint x="830" y="435" />
380
+ <di:waypoint x="830" y="350" />
381
+ <di:waypoint x="270" y="350" />
382
+ <di:waypoint x="270" y="435" />
383
+ <bpmndi:BPMNLabel>
384
+ <dc:Bounds x="748" y="333" width="83" height="14" />
385
+ </bpmndi:BPMNLabel>
386
+ </bpmndi:BPMNEdge>
387
+ <bpmndi:BPMNEdge id="Flow_16c9bwj_di" bpmnElement="Flow_16c9bwj">
388
+ <di:waypoint x="855" y="460" />
389
+ <di:waypoint x="912" y="460" />
390
+ <bpmndi:BPMNLabel>
391
+ <dc:Bounds x="875" y="442" width="18" height="14" />
392
+ </bpmndi:BPMNLabel>
393
+ </bpmndi:BPMNEdge>
394
+ <bpmndi:BPMNEdge id="Flow_041ffce_di" bpmnElement="Flow_041ffce">
395
+ <di:waypoint x="440" y="460" />
396
+ <di:waypoint x="505" y="460" />
397
+ </bpmndi:BPMNEdge>
398
+ <bpmndi:BPMNEdge id="Flow_00lg7l2_di" bpmnElement="Flow_00lg7l2">
399
+ <di:waypoint x="530" y="485" />
400
+ <di:waypoint x="530" y="850" />
401
+ <di:waypoint x="640" y="850" />
402
+ <bpmndi:BPMNLabel>
403
+ <dc:Bounds x="541" y="492" width="18" height="14" />
404
+ </bpmndi:BPMNLabel>
405
+ </bpmndi:BPMNEdge>
406
+ <bpmndi:BPMNEdge id="Flow_11y3kim_di" bpmnElement="Flow_11y3kim">
407
+ <di:waypoint x="555" y="460" />
408
+ <di:waypoint x="640" y="460" />
409
+ <bpmndi:BPMNLabel>
410
+ <dc:Bounds x="591" y="442" width="13" height="14" />
411
+ </bpmndi:BPMNLabel>
412
+ </bpmndi:BPMNEdge>
413
+ <bpmndi:BPMNEdge id="Flow_050377t_di" bpmnElement="Flow_050377t">
414
+ <di:waypoint x="295" y="460" />
415
+ <di:waypoint x="340" y="460" />
416
+ </bpmndi:BPMNEdge>
417
+ <bpmndi:BPMNEdge id="Flow_01k9dy1_di" bpmnElement="Flow_01k9dy1">
418
+ <di:waypoint x="1040" y="850" />
419
+ <di:waypoint x="1150" y="850" />
420
+ <di:waypoint x="1150" y="950" />
421
+ <di:waypoint x="270" y="950" />
422
+ <di:waypoint x="270" y="485" />
423
+ </bpmndi:BPMNEdge>
424
+ <bpmndi:BPMNEdge id="Association_0ic98nl_di" bpmnElement="Association_0ic98nl">
425
+ <di:waypoint x="410" y="420" />
426
+ <di:waypoint x="495" y="250" />
427
+ </bpmndi:BPMNEdge>
428
+ <bpmndi:BPMNEdge id="Association_0q5n90x_di" bpmnElement="Association_0q5n90x">
429
+ <di:waypoint x="1040" y="620" />
430
+ <di:waypoint x="1120" y="536" />
431
+ </bpmndi:BPMNEdge>
432
+ <bpmndi:BPMNEdge id="Association_14t02ll_di" bpmnElement="Association_14t02ll">
433
+ <di:waypoint x="1040" y="902" />
434
+ <di:waypoint x="1160" y="933" />
435
+ </bpmndi:BPMNEdge>
436
+ </bpmndi:BPMNPlane>
437
+ </bpmndi:BPMNDiagram>
438
+ </bpmn:definitions>
@@ -0,0 +1,115 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
3
+ xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
4
+ xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
5
+ xmlns:zeebe="http://camunda.org/schema/zeebe/1.0"
6
+ xmlns:modeler="http://camunda.org/schema/modeler/1.0"
7
+ xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1"
8
+ targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler"
9
+ exporterVersion="eb83922" modeler:executionPlatform="Camunda Cloud"
10
+ modeler:executionPlatformVersion="8.9.0">
11
+ <bpmn:process id="ai-agent-sub-process-with-tools-aws-key"
12
+ name="AI Agent Sub Process With Tools AWS Key" isExecutable="true">
13
+ <bpmn:endEvent id="Event_16luwcp">
14
+ <bpmn:incoming>Flow_08u9aut</bpmn:incoming>
15
+ </bpmn:endEvent>
16
+ <bpmn:startEvent id="Event_02uvz35">
17
+ <bpmn:outgoing>Flow_1as80ip</bpmn:outgoing>
18
+ </bpmn:startEvent>
19
+ <bpmn:adHocSubProcess id="Activity_1u44499"
20
+ zeebe:modelerTemplate="io.camunda.connectors.agenticai.aiagent.jobworker.v1"
21
+ zeebe:modelerTemplateVersion="6"
22
+ zeebe:modelerTemplateIcon="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IiNBNTZFRkYiLz4KPG1hc2sgaWQ9InBhdGgtMi1vdXRzaWRlLTFfMTg1XzYiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjQiIHk9IjQiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0iYmxhY2siPgo8cmVjdCBmaWxsPSJ3aGl0ZSIgeD0iNCIgeT0iNCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjAuMDEwNSAxMi4wOTg3QzE4LjQ5IDEwLjU4OTQgMTcuMTU5NCA4LjEwODE0IDE2LjE3OTkgNi4wMTEwM0MxNi4xNTIgNi4wMDQ1MSAxNi4xMTc2IDYgMTYuMDc5NCA2QzE2LjA0MTEgNiAxNi4wMDY2IDYuMDA0NTEgMTUuOTc4OCA2LjAxMTA0QzE0Ljk5OTQgOC4xMDgxNCAxMy42Njk3IDEwLjU4ODkgMTIuMTQ4MSAxMi4wOTgxQzEwLjYyNjkgMTMuNjA3MSA4LjEyNTY4IDE0LjkyNjQgNi4wMTE1NyAxNS44OTgxQzYuMDA0NzQgMTUuOTI2MSA2IDE1Ljk2MTEgNiAxNkM2IDE2LjAzODcgNi4wMDQ2OCAxNi4wNzM2IDYuMDExNDQgMTYuMTAxNEM4LjEyNTE5IDE3LjA3MjkgMTAuNjI2MiAxOC4zOTE5IDEyLjE0NzcgMTkuOTAxNkMxMy42Njk3IDIxLjQxMDcgMTQuOTk5NiAyMy44OTIgMTUuOTc5MSAyNS45ODlDMTYuMDA2OCAyNS45OTU2IDE2LjA0MTEgMjYgMTYuMDc5MyAyNkMxNi4xMTc1IDI2IDE2LjE1MTkgMjUuOTk1NCAxNi4xNzk2IDI1Ljk4OUMxNy4xNTkxIDIzLjg5MiAxOC40ODg4IDIxLjQxMSAyMC4wMDk5IDE5LjkwMjFNMjAuMDA5OSAxOS45MDIxQzIxLjUyNTMgMTguMzk4NyAyMy45NDY1IDE3LjA2NjkgMjUuOTkxNSAxNi4wODI0QzI1Ljk5NjUgMTYuMDU5MyAyNiAxNi4wMzEgMjYgMTUuOTk5N0MyNiAxNS45Njg0IDI1Ljk5NjUgMTUuOTQwMyAyNS45OTE1IDE1LjkxNzFDMjMuOTQ3NCAxNC45MzI3IDIxLjUyNTkgMTMuNjAxIDIwLjAxMDUgMTIuMDk4NyIvPgo8L21hc2s+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjAuMDEwNSAxMi4wOTg3QzE4LjQ5IDEwLjU4OTQgMTcuMTU5NCA4LjEwODE0IDE2LjE3OTkgNi4wMTEwM0MxNi4xNTIgNi4wMDQ1MSAxNi4xMTc2IDYgMTYuMDc5NCA2QzE2LjA0MTEgNiAxNi4wMDY2IDYuMDA0NTEgMTUuOTc4OCA2LjAxMTA0QzE0Ljk5OTQgOC4xMDgxNCAxMy42Njk3IDEwLjU4ODkgMTIuMTQ4MSAxMi4wOTgxQzEwLjYyNjkgMTMuNjA3MSA4LjEyNTY4IDE0LjkyNjQgNi4wMTE1NyAxNS44OTgxQzYuMDA0NzQgMTUuOTI2MSA2IDE1Ljk2MTEgNiAxNkM2IDE2LjAzODcgNi4wMDQ2OCAxNi4wNzM2IDYuMDExNDQgMTYuMTAxNEM4LjEyNTE5IDE3LjA3MjkgMTAuNjI2MiAxOC4zOTE5IDEyLjE0NzcgMTkuOTAxNkMxMy42Njk3IDIxLjQxMDcgMTQuOTk5NiAyMy44OTIgMTUuOTc5MSAyNS45ODlDMTYuMDA2OCAyNS45OTU2IDE2LjA0MTEgMjYgMTYuMDc5MyAyNkMxNi4xMTc1IDI2IDE2LjE1MTkgMjUuOTk1NCAxNi4xNzk2IDI1Ljk4OUMxNy4xNTkxIDIzLjg5MiAxOC40ODg4IDIxLjQxMSAyMC4wMDk5IDE5LjkwMjFNMjAuMDA5OSAxOS45MDIxQzIxLjUyNTMgMTguMzk4NyAyMy45NDY1IDE3LjA2NjkgMjUuOTkxNSAxNi4wODI0QzI1Ljk5NjUgMTYuMDU5MyAyNiAxNi4wMzEgMjYgMTUuOTk5N0MyNiAxNS45Njg0IDI1Ljk5NjUgMTUuOTQwMyAyNS45OTE1IDE1LjkxNzFDMjMuOTQ3NCAxNC45MzI3IDIxLjUyNTkgMTMuNjAxIDIwLjAxMDUgMTIuMDk4NyIgZmlsbD0id2hpdGUiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMC4wMTA1IDEyLjA5ODdDMTguNDkgMTAuNTg5NCAxNy4xNTk0IDguMTA4MTQgMTYuMTc5OSA2LjAxMTAzQzE2LjE1MiA2LjAwNDUxIDE2LjExNzYgNiAxNi4wNzk0IDZDMTYuMDQxMSA2IDE2LjAwNjYgNi4wMDQ1MSAxNS45Nzg4IDYuMDExMDRDMTQuOTk5NCA4LjEwODE0IDEzLjY2OTcgMTAuNTg4OSAxMi4xNDgxIDEyLjA5ODFDMTAuNjI2OSAxMy42MDcxIDguMTI1NjggMTQuOTI2NCA2LjAxMTU3IDE1Ljg5ODFDNi4wMDQ3NCAxNS45MjYxIDYgMTUuOTYxMSA2IDE2QzYgMTYuMDM4NyA2LjAwNDY4IDE2LjA3MzYgNi4wMTE0NCAxNi4xMDE0QzguMTI1MTkgMTcuMDcyOSAxMC42MjYyIDE4LjM5MTkgMTIuMTQ3NyAxOS45MDE2QzEzLjY2OTcgMjEuNDEwNyAxNC45OTk2IDIzLjg5MiAxNS45NzkxIDI1Ljk4OUMxNi4wMDY4IDI1Ljk5NTYgMTYuMDQxMSAyNiAxNi4wNzkzIDI2QzE2LjExNzUgMjYgMTYuMTUxOSAyNS45OTU0IDE2LjE3OTYgMjUuOTg5QzE3LjE1OTEgMjMuODkyIDE4LjQ4ODggMjEuNDExIDIwLjAwOTkgMTkuOTAyMU0yMC4wMDk5IDE5LjkwMjFDMjEuNTI1MyAxOC4zOTg3IDIzLjk0NjUgMTcuMDY2OSAyNS45OTE1IDE2LjA4MjRDMjUuOTk2NSAxNi4wNTkzIDI2IDE2LjAzMSAyNiAxNS45OTk3QzI2IDE1Ljk2ODQgMjUuOTk2NSAxNS45NDAzIDI1Ljk5MTUgMTUuOTE3MUMyMy45NDc0IDE0LjkzMjcgMjEuNTI1OSAxMy42MDEgMjAuMDEwNSAxMi4wOTg3IiBzdHJva2U9IiM0OTFEOEIiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgbWFzaz0idXJsKCNwYXRoLTItb3V0c2lkZS0xXzE4NV82KSIvPgo8L3N2Zz4K">
23
+ <bpmn:extensionElements>
24
+ <zeebe:taskDefinition type="io.camunda.agenticai:aiagent-job-worker:1" retries="3" />
25
+ <zeebe:ioMapping>
26
+ <zeebe:input source="bedrock" target="provider.type" />
27
+ <zeebe:input source="{{secrets.IDP_AWS_REGION}}" target="provider.bedrock.region" />
28
+ <zeebe:input source="apiKey" target="provider.bedrock.authentication.type" />
29
+ <zeebe:input source="{{secrets.AI_AGENT_AWS_KEY}}"
30
+ target="provider.bedrock.authentication.apiKey" />
31
+ <zeebe:input source="global.anthropic.claude-sonnet-4-5-20250929-v1:0"
32
+ target="provider.bedrock.model.model" />
33
+ <zeebe:input
34
+ source="=&#34;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;If tools are provided, you should prefer them instead of guessing an answer. You can call the same tool multiple times by providing different input values. Don&#39;t guess any tools which were not explicitly configured. If no tool matches the request, try to generate an answer. If you&#39;re not able to find a good answer, return with a message stating why you&#39;re not able to.&#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.&#34;"
35
+ target="data.systemPrompt.prompt" />
36
+ <zeebe:input
37
+ source="=&#34;Generate a single sentence in the following exact format, always using a new random city and country each time:&#10;&#10;The current date and time in {City, Country}, is approximately {h:mm AM/PM} on {Month day, year}.&#10;&#10;But only with the sentence/format as above, nothing else&#34;"
38
+ target="data.userPrompt.prompt" />
39
+ <zeebe:input target="agentContext" />
40
+ <zeebe:input source="in-process" target="data.memory.storage.type" />
41
+ <zeebe:input source="=20" target="data.memory.contextWindowSize" />
42
+ <zeebe:input source="=10" target="data.limits.maxModelCalls" />
43
+ <zeebe:input source="WAIT_FOR_TOOL_CALL_RESULTS" target="data.events.behavior" />
44
+ <zeebe:input source="text" target="data.response.format.type" />
45
+ <zeebe:input source="=false" target="data.response.format.parseJson" />
46
+ <zeebe:input source="=false" target="data.response.includeAssistantMessage" />
47
+ <zeebe:input source="=false" target="data.response.includeAgentContext" />
48
+ <zeebe:output source="=agent" target="agent" />
49
+ </zeebe:ioMapping>
50
+ <zeebe:taskHeaders>
51
+ <zeebe:header key="elementTemplateVersion" value="6" />
52
+ <zeebe:header key="elementTemplateId"
53
+ value="io.camunda.connectors.agenticai.aiagent.jobworker.v1" />
54
+ <zeebe:header key="retryBackoff" value="PT0S" />
55
+ </zeebe:taskHeaders>
56
+ <zeebe:adHoc outputCollection="toolCallResults"
57
+ outputElement="={&#10; id: toolCall._meta.id,&#10; name: toolCall._meta.name,&#10; content: toolCallResult&#10;}" />
58
+ </bpmn:extensionElements>
59
+ <bpmn:incoming>Flow_1as80ip</bpmn:incoming>
60
+ <bpmn:outgoing>Flow_0zkcbw0</bpmn:outgoing>
61
+ <bpmn:scriptTask id="GetDateAndTime" name="Get Date And Time">
62
+ <bpmn:extensionElements>
63
+ <zeebe:script expression="=now()" resultVariable="toolCallResult" />
64
+ </bpmn:extensionElements>
65
+ </bpmn:scriptTask>
66
+ </bpmn:adHocSubProcess>
67
+ <bpmn:sequenceFlow id="Flow_1as80ip" sourceRef="Event_02uvz35" targetRef="Activity_1u44499" />
68
+ <bpmn:sequenceFlow id="Flow_0zkcbw0" sourceRef="Activity_1u44499" targetRef="Activity_09igvpy" />
69
+ <bpmn:userTask id="Activity_09igvpy" name="User Feedback">
70
+ <bpmn:extensionElements>
71
+ <zeebe:userTask />
72
+ <zeebe:formDefinition formId="ai-agent-chat-user-feedback" />
73
+ <zeebe:ioMapping>
74
+ <zeebe:input source="=agent.responseText" target="agent.responseText" />
75
+ </zeebe:ioMapping>
76
+ </bpmn:extensionElements>
77
+ <bpmn:incoming>Flow_0zkcbw0</bpmn:incoming>
78
+ <bpmn:outgoing>Flow_08u9aut</bpmn:outgoing>
79
+ </bpmn:userTask>
80
+ <bpmn:sequenceFlow id="Flow_08u9aut" sourceRef="Activity_09igvpy" targetRef="Event_16luwcp" />
81
+ </bpmn:process>
82
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
83
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ai-agent-sub-process-with-tools-aws-key">
84
+ <bpmndi:BPMNShape id="Event_16luwcp_di" bpmnElement="Event_16luwcp">
85
+ <dc:Bounds x="942" y="172" width="36" height="36" />
86
+ </bpmndi:BPMNShape>
87
+ <bpmndi:BPMNShape id="Event_02uvz35_di" bpmnElement="Event_02uvz35">
88
+ <dc:Bounds x="152" y="172" width="36" height="36" />
89
+ </bpmndi:BPMNShape>
90
+ <bpmndi:BPMNShape id="Activity_0xva5vz_di" bpmnElement="Activity_1u44499" isExpanded="true">
91
+ <dc:Bounds x="270" y="80" width="350" height="200" />
92
+ </bpmndi:BPMNShape>
93
+ <bpmndi:BPMNShape id="Activity_1cyou11_di" bpmnElement="GetDateAndTime">
94
+ <dc:Bounds x="400" y="140" width="100" height="80" />
95
+ <bpmndi:BPMNLabel />
96
+ </bpmndi:BPMNShape>
97
+ <bpmndi:BPMNShape id="Activity_0qxhgfa_di" bpmnElement="Activity_09igvpy">
98
+ <dc:Bounds x="730" y="150" width="100" height="80" />
99
+ <bpmndi:BPMNLabel />
100
+ </bpmndi:BPMNShape>
101
+ <bpmndi:BPMNEdge id="Flow_1as80ip_di" bpmnElement="Flow_1as80ip">
102
+ <di:waypoint x="188" y="190" />
103
+ <di:waypoint x="270" y="190" />
104
+ </bpmndi:BPMNEdge>
105
+ <bpmndi:BPMNEdge id="Flow_0zkcbw0_di" bpmnElement="Flow_0zkcbw0">
106
+ <di:waypoint x="620" y="190" />
107
+ <di:waypoint x="730" y="190" />
108
+ </bpmndi:BPMNEdge>
109
+ <bpmndi:BPMNEdge id="Flow_08u9aut_di" bpmnElement="Flow_08u9aut">
110
+ <di:waypoint x="830" y="190" />
111
+ <di:waypoint x="942" y="190" />
112
+ </bpmndi:BPMNEdge>
113
+ </bpmndi:BPMNPlane>
114
+ </bpmndi:BPMNDiagram>
115
+ </bpmn:definitions>
Binary file
@@ -0,0 +1,59 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
3
+ xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
4
+ xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
5
+ xmlns:zeebe="http://camunda.org/schema/zeebe/1.0"
6
+ xmlns:modeler="http://camunda.org/schema/modeler/1.0"
7
+ xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1"
8
+ targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler"
9
+ exporterVersion="52c6ff6" modeler:executionPlatform="Camunda Cloud"
10
+ modeler:executionPlatformVersion="8.9.0">
11
+ <bpmn:process id="cluster_variable_global_scope" name="Cluster Variable Global scope - API INFO"
12
+ isExecutable="true">
13
+ <bpmn:startEvent id="StartEvent_1">
14
+ <bpmn:extensionElements>
15
+ <zeebe:ioMapping>
16
+ <zeebe:output source="=camunda.vars.env.ORIGINAL_API_INFO.endpoint" target="URL" />
17
+ <zeebe:output source="=camunda.vars.env.ORIGINAL_API_INFO.timeout_ms" target="TIMEOUT_MS" />
18
+ <zeebe:output source="=camunda.vars.env.ORIGINAL_API_INFO.array" target="ARRAY" />
19
+ </zeebe:ioMapping>
20
+ </bpmn:extensionElements>
21
+ <bpmn:outgoing>Flow_1k9dndp</bpmn:outgoing>
22
+ </bpmn:startEvent>
23
+ <bpmn:sequenceFlow id="Flow_1k9dndp" sourceRef="StartEvent_1" targetRef="Activity_1whhatc" />
24
+ <bpmn:endEvent id="Event_1mc2ikr">
25
+ <bpmn:incoming>Flow_0wixfng</bpmn:incoming>
26
+ </bpmn:endEvent>
27
+ <bpmn:sequenceFlow id="Flow_0wixfng" sourceRef="Activity_1whhatc" targetRef="Event_1mc2ikr" />
28
+ <bpmn:userTask id="Activity_1whhatc" name="Preview cluster variables form">
29
+ <bpmn:extensionElements>
30
+ <zeebe:userTask />
31
+ <zeebe:formDefinition formId="Form_0oh0w16" />
32
+ </bpmn:extensionElements>
33
+ <bpmn:incoming>Flow_1k9dndp</bpmn:incoming>
34
+ <bpmn:outgoing>Flow_0wixfng</bpmn:outgoing>
35
+ </bpmn:userTask>
36
+ </bpmn:process>
37
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
38
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="cluster_variable_global_scope">
39
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
40
+ <dc:Bounds x="342" y="272" width="36" height="36" />
41
+ </bpmndi:BPMNShape>
42
+ <bpmndi:BPMNShape id="Event_1mc2ikr_di" bpmnElement="Event_1mc2ikr">
43
+ <dc:Bounds x="582" y="272" width="36" height="36" />
44
+ </bpmndi:BPMNShape>
45
+ <bpmndi:BPMNShape id="Activity_0lwojkk_di" bpmnElement="Activity_1whhatc">
46
+ <dc:Bounds x="430" y="250" width="100" height="80" />
47
+ <bpmndi:BPMNLabel />
48
+ </bpmndi:BPMNShape>
49
+ <bpmndi:BPMNEdge id="Flow_1k9dndp_di" bpmnElement="Flow_1k9dndp">
50
+ <di:waypoint x="378" y="290" />
51
+ <di:waypoint x="430" y="290" />
52
+ </bpmndi:BPMNEdge>
53
+ <bpmndi:BPMNEdge id="Flow_0wixfng_di" bpmnElement="Flow_0wixfng">
54
+ <di:waypoint x="530" y="290" />
55
+ <di:waypoint x="582" y="290" />
56
+ </bpmndi:BPMNEdge>
57
+ </bpmndi:BPMNPlane>
58
+ </bpmndi:BPMNDiagram>
59
+ </bpmn:definitions>