cevheri commited on
Commit
62046ef
·
1 Parent(s): 29ad495

chore: add new architecture for low-level agentic workflow

Browse files
docs/conversation.drawio CHANGED
@@ -1,88 +1,495 @@
1
  <mxfile host="65bd71144e">
2
- <diagram id="RUA-RFROyaZDF0aJ2uCW" name="Page-1">
3
- <mxGraphModel dx="1098" dy="639" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0" adaptiveColors="simple">
4
  <root>
5
  <mxCell id="0"/>
6
  <mxCell id="1" parent="0"/>
7
- <mxCell id="4" style="edgeStyle=none;html=1;" edge="1" parent="1" source="2" target="3">
8
  <mxGeometry relative="1" as="geometry"/>
9
  </mxCell>
10
- <mxCell id="2" value="Actor" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" vertex="1" parent="1">
11
  <mxGeometry x="70" y="230" width="30" height="60" as="geometry"/>
12
  </mxCell>
13
- <mxCell id="6" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="3" target="5">
14
  <mxGeometry relative="1" as="geometry"/>
15
  </mxCell>
16
- <mxCell id="3" value="frontend" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
17
  <mxGeometry x="230" y="230" width="120" height="60" as="geometry"/>
18
  </mxCell>
19
- <mxCell id="8" style="edgeStyle=none;html=1;" edge="1" parent="1" source="5" target="7">
20
  <mxGeometry relative="1" as="geometry"/>
21
  </mxCell>
22
- <mxCell id="10" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="5" target="9">
23
  <mxGeometry relative="1" as="geometry"/>
24
  </mxCell>
25
- <mxCell id="12" style="edgeStyle=none;html=1;" edge="1" parent="1" source="5" target="11">
26
  <mxGeometry relative="1" as="geometry"/>
27
  </mxCell>
28
- <mxCell id="17" style="edgeStyle=none;html=1;" edge="1" parent="1" source="5" target="16">
29
  <mxGeometry relative="1" as="geometry"/>
30
  </mxCell>
31
- <mxCell id="20" style="edgeStyle=none;html=1;" edge="1" parent="1" source="5" target="19">
 
 
 
 
 
 
32
  <mxGeometry relative="1" as="geometry"/>
33
  </mxCell>
34
- <mxCell id="5" value="backend" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
35
- <mxGeometry x="500" y="230" width="120" height="60" as="geometry"/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  </mxCell>
37
- <mxCell id="7" value="mongo" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;" vertex="1" parent="1">
38
- <mxGeometry x="800" y="220" width="60" height="80" as="geometry"/>
39
  </mxCell>
40
- <mxCell id="22" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="9" target="21">
 
 
 
 
 
 
41
  <mxGeometry relative="1" as="geometry"/>
42
  </mxCell>
43
- <mxCell id="24" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="9" target="23">
44
  <mxGeometry relative="1" as="geometry"/>
45
  </mxCell>
46
- <mxCell id="9" value="schema" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
47
- <mxGeometry x="180" y="400" width="120" height="60" as="geometry"/>
48
  </mxCell>
49
- <mxCell id="14" style="edgeStyle=none;html=1;" edge="1" parent="1" source="11" target="13">
50
  <mxGeometry relative="1" as="geometry"/>
51
  </mxCell>
52
- <mxCell id="11" value="model" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
53
- <mxGeometry x="490" y="400" width="120" height="60" as="geometry"/>
 
 
 
54
  </mxCell>
55
- <mxCell id="15" style="edgeStyle=none;html=1;" edge="1" parent="1" source="13" target="16">
 
 
 
 
 
 
 
 
 
56
  <mxGeometry relative="1" as="geometry">
57
- <mxPoint x="640" y="460" as="targetPoint"/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  </mxGeometry>
59
  </mxCell>
60
- <mxCell id="27" style="edgeStyle=none;html=1;" edge="1" parent="1" source="13" target="23">
 
 
 
61
  <mxGeometry relative="1" as="geometry"/>
62
  </mxCell>
63
- <mxCell id="28" style="edgeStyle=none;html=1;" edge="1" parent="1" source="13" target="21">
 
 
 
 
 
 
64
  <mxGeometry relative="1" as="geometry"/>
65
  </mxCell>
66
- <mxCell id="13" value="chat_completion" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
67
- <mxGeometry x="660" y="640" width="120" height="120" as="geometry"/>
 
 
 
68
  </mxCell>
69
- <mxCell id="29" style="edgeStyle=none;html=1;" edge="1" parent="1" source="16" target="7">
 
 
 
 
 
 
70
  <mxGeometry relative="1" as="geometry"/>
71
  </mxCell>
72
- <mxCell id="16" value="repository" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
73
- <mxGeometry x="670" y="400" width="120" height="60" as="geometry"/>
74
  </mxCell>
75
- <mxCell id="18" value="api" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
76
- <mxGeometry x="25" y="400" width="120" height="60" as="geometry"/>
77
  </mxCell>
78
- <mxCell id="19" value="service" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
79
- <mxGeometry x="340" y="400" width="120" height="60" as="geometry"/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  </mxCell>
81
- <mxCell id="21" value="conversation" style="ellipse;whiteSpace=wrap;html=1;rounded=0;" vertex="1" parent="1">
82
- <mxGeometry x="180" y="670" width="80" height="80" as="geometry"/>
83
  </mxCell>
84
- <mxCell id="23" value="&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;chat_completion&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;rounded=0;" vertex="1" parent="1">
85
- <mxGeometry x="260" y="520" width="120" height="90" as="geometry"/>
86
  </mxCell>
87
  </root>
88
  </mxGraphModel>
 
1
  <mxfile host="65bd71144e">
2
+ <diagram id="GpQsGc8HGMydb2jE7hro" name="highlevel-arch">
3
+ <mxGraphModel dx="1331" dy="792" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
4
  <root>
5
  <mxCell id="0"/>
6
  <mxCell id="1" parent="0"/>
7
+ <mxCell id="707cd5f2jmiF-CUNBSRy-1" value="&amp;nbsp;All Request&amp;nbsp;" style="edgeStyle=none;html=1;fontSize=11;" parent="1" source="707cd5f2jmiF-CUNBSRy-2" target="707cd5f2jmiF-CUNBSRy-4" edge="1">
8
  <mxGeometry relative="1" as="geometry"/>
9
  </mxCell>
10
+ <mxCell id="707cd5f2jmiF-CUNBSRy-2" value="Actor" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1">
11
  <mxGeometry x="70" y="230" width="30" height="60" as="geometry"/>
12
  </mxCell>
13
+ <mxCell id="707cd5f2jmiF-CUNBSRy-3" value="" style="edgeStyle=none;html=1;" parent="1" source="707cd5f2jmiF-CUNBSRy-4" target="707cd5f2jmiF-CUNBSRy-8" edge="1">
14
  <mxGeometry relative="1" as="geometry"/>
15
  </mxCell>
16
+ <mxCell id="707cd5f2jmiF-CUNBSRy-4" value="&lt;div&gt;NextJS&lt;/div&gt;frontend&lt;div&gt;https://chatbotUI...&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
17
  <mxGeometry x="230" y="230" width="120" height="60" as="geometry"/>
18
  </mxCell>
19
+ <mxCell id="707cd5f2jmiF-CUNBSRy-5" value="" style="edgeStyle=none;html=1;" parent="1" source="707cd5f2jmiF-CUNBSRy-8" target="707cd5f2jmiF-CUNBSRy-9" edge="1">
20
  <mxGeometry relative="1" as="geometry"/>
21
  </mxCell>
22
+ <mxCell id="707cd5f2jmiF-CUNBSRy-6" value="" style="edgeStyle=none;html=1;" parent="1" source="707cd5f2jmiF-CUNBSRy-8" target="707cd5f2jmiF-CUNBSRy-11" edge="1">
23
  <mxGeometry relative="1" as="geometry"/>
24
  </mxCell>
25
+ <mxCell id="707cd5f2jmiF-CUNBSRy-7" value="" style="edgeStyle=none;html=1;" parent="1" source="707cd5f2jmiF-CUNBSRy-8" target="707cd5f2jmiF-CUNBSRy-16" edge="1">
26
  <mxGeometry relative="1" as="geometry"/>
27
  </mxCell>
28
+ <mxCell id="MX2uxcV0hgAxSQ1Ey_8r-2" style="edgeStyle=none;html=1;" parent="1" source="707cd5f2jmiF-CUNBSRy-8" target="MX2uxcV0hgAxSQ1Ey_8r-1" edge="1">
29
  <mxGeometry relative="1" as="geometry"/>
30
  </mxCell>
31
+ <mxCell id="707cd5f2jmiF-CUNBSRy-8" value="Python ChatAPI&lt;div&gt;backend&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(63, 63, 63);&quot;&gt;https://chatbotAPI...&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
32
+ <mxGeometry x="500" y="230" width="120" height="60" as="geometry"/>
33
+ </mxCell>
34
+ <mxCell id="707cd5f2jmiF-CUNBSRy-9" value="openai-openapi-template&lt;div&gt;github template&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
35
+ <mxGeometry x="475" y="20" width="170" height="60" as="geometry"/>
36
+ </mxCell>
37
+ <mxCell id="707cd5f2jmiF-CUNBSRy-10" style="edgeStyle=none;html=1;" parent="1" source="707cd5f2jmiF-CUNBSRy-11" target="707cd5f2jmiF-CUNBSRy-12" edge="1">
38
  <mxGeometry relative="1" as="geometry"/>
39
  </mxCell>
40
+ <mxCell id="707cd5f2jmiF-CUNBSRy-11" value="PostgreSQL MCPServer&lt;div&gt;&lt;span style=&quot;color: rgb(63, 63, 63);&quot;&gt;https://postres.mcp...&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
41
+ <mxGeometry x="700" y="230" width="120" height="60" as="geometry"/>
42
+ </mxCell>
43
+ <mxCell id="707cd5f2jmiF-CUNBSRy-12" value="postgres&lt;div&gt;DWH&lt;/div&gt;" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;" parent="1" vertex="1">
44
+ <mxGeometry x="730" y="420" width="60" height="80" as="geometry"/>
45
+ </mxCell>
46
+ <mxCell id="707cd5f2jmiF-CUNBSRy-13" style="edgeStyle=none;html=1;" parent="1" source="707cd5f2jmiF-CUNBSRy-15" target="707cd5f2jmiF-CUNBSRy-16" edge="1">
47
+ <mxGeometry relative="1" as="geometry"/>
48
+ </mxCell>
49
+ <mxCell id="707cd5f2jmiF-CUNBSRy-14" value="v1/chat/completions" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="707cd5f2jmiF-CUNBSRy-13" vertex="1" connectable="0">
50
+ <mxGeometry x="-0.2117" y="1" relative="1" as="geometry">
51
+ <mxPoint as="offset"/>
52
+ </mxGeometry>
53
+ </mxCell>
54
+ <mxCell id="707cd5f2jmiF-CUNBSRy-15" value="Actor" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1">
55
+ <mxGeometry x="70" y="440" width="30" height="60" as="geometry"/>
56
+ </mxCell>
57
+ <mxCell id="707cd5f2jmiF-CUNBSRy-16" value="gradio UI&lt;br&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(63, 63, 63);&quot;&gt;https://chatbot-gradio&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
58
+ <mxGeometry x="230" y="440" width="120" height="60" as="geometry"/>
59
+ </mxCell>
60
+ <mxCell id="MX2uxcV0hgAxSQ1Ey_8r-1" value="mongo&lt;div&gt;app metada&lt;/div&gt;" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;" parent="1" vertex="1">
61
+ <mxGeometry x="530" y="420" width="60" height="80" as="geometry"/>
62
+ </mxCell>
63
+ </root>
64
+ </mxGraphModel>
65
+ </diagram>
66
+ <diagram id="RUA-RFROyaZDF0aJ2uCW" name="low-level">
67
+ <mxGraphModel dx="1941" dy="1892" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0" adaptiveColors="simple">
68
+ <root>
69
+ <mxCell id="0"/>
70
+ <mxCell id="1" parent="0"/>
71
+ <mxCell id="31" value="" style="edgeStyle=none;html=1;" parent="1" source="5" target="30" edge="1">
72
+ <mxGeometry relative="1" as="geometry"/>
73
  </mxCell>
74
+ <mxCell id="5" value="Python ChatAPI&lt;div&gt;backend&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(63, 63, 63);&quot;&gt;https://chatbotAPI...&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
75
+ <mxGeometry x="530" y="10" width="120" height="60" as="geometry"/>
76
  </mxCell>
77
+ <mxCell id="7" value="mongo&lt;div&gt;app metada&lt;/div&gt;" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;" parent="1" vertex="1">
78
+ <mxGeometry x="940" y="590" width="60" height="80" as="geometry"/>
79
+ </mxCell>
80
+ <mxCell id="22" value="" style="edgeStyle=none;html=1;" parent="1" source="9" target="21" edge="1">
81
+ <mxGeometry relative="1" as="geometry"/>
82
+ </mxCell>
83
+ <mxCell id="24" value="" style="edgeStyle=none;html=1;" parent="1" source="9" target="23" edge="1">
84
  <mxGeometry relative="1" as="geometry"/>
85
  </mxCell>
86
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-54" value="" style="edgeStyle=none;html=1;" parent="1" source="9" target="23" edge="1">
87
  <mxGeometry relative="1" as="geometry"/>
88
  </mxCell>
89
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-56" style="edgeStyle=none;html=1;" parent="1" source="9" target="Kt_CX_v_nDbvTs1uZqcn-55" edge="1">
90
+ <mxGeometry relative="1" as="geometry"/>
91
  </mxCell>
92
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-76" style="edgeStyle=none;html=1;" parent="1" source="9" target="Kt_CX_v_nDbvTs1uZqcn-57" edge="1">
93
  <mxGeometry relative="1" as="geometry"/>
94
  </mxCell>
95
+ <mxCell id="9" value="schema" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
96
+ <mxGeometry x="160" y="890" width="120" height="60" as="geometry"/>
97
+ </mxCell>
98
+ <mxCell id="14" style="edgeStyle=none;html=1;" parent="1" source="11" target="13" edge="1">
99
+ <mxGeometry relative="1" as="geometry"/>
100
  </mxCell>
101
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-51" value="" style="edgeStyle=none;html=1;" parent="1" source="11" target="Kt_CX_v_nDbvTs1uZqcn-50" edge="1">
102
+ <mxGeometry relative="1" as="geometry"/>
103
+ </mxCell>
104
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-53" value="" style="edgeStyle=none;html=1;" parent="1" source="11" target="Kt_CX_v_nDbvTs1uZqcn-52" edge="1">
105
+ <mxGeometry relative="1" as="geometry"/>
106
+ </mxCell>
107
+ <mxCell id="11" value="model" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
108
+ <mxGeometry x="650" y="880" width="120" height="60" as="geometry"/>
109
+ </mxCell>
110
+ <mxCell id="15" style="edgeStyle=none;html=1;" parent="1" source="13" target="16" edge="1">
111
  <mxGeometry relative="1" as="geometry">
112
+ <mxPoint x="690" y="900" as="targetPoint"/>
113
+ </mxGeometry>
114
+ </mxCell>
115
+ <mxCell id="27" style="edgeStyle=none;html=1;" parent="1" source="13" target="23" edge="1">
116
+ <mxGeometry relative="1" as="geometry"/>
117
+ </mxCell>
118
+ <mxCell id="28" style="edgeStyle=none;html=1;" parent="1" source="13" target="21" edge="1">
119
+ <mxGeometry relative="1" as="geometry"/>
120
+ </mxCell>
121
+ <mxCell id="13" value="chat_completion model" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" parent="1" vertex="1">
122
+ <mxGeometry x="920" y="1080" width="120" height="120" as="geometry"/>
123
+ </mxCell>
124
+ <mxCell id="29" style="edgeStyle=none;html=1;" parent="1" source="16" target="7" edge="1">
125
+ <mxGeometry relative="1" as="geometry"/>
126
+ </mxCell>
127
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-78" style="edgeStyle=none;html=1;" parent="1" source="16" target="Kt_CX_v_nDbvTs1uZqcn-77" edge="1">
128
+ <mxGeometry relative="1" as="geometry"/>
129
+ </mxCell>
130
+ <mxCell id="16" value="repository" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
131
+ <mxGeometry x="720" y="600" width="120" height="60" as="geometry"/>
132
+ </mxCell>
133
+ <mxCell id="Up015N2JfnYgOBqt4KGi-52" style="edgeStyle=none;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" source="18" target="19" edge="1">
134
+ <mxGeometry relative="1" as="geometry"/>
135
+ </mxCell>
136
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-43" style="edgeStyle=none;html=1;" parent="1" source="18" target="Up015N2JfnYgOBqt4KGi-45" edge="1">
137
+ <mxGeometry relative="1" as="geometry"/>
138
+ </mxCell>
139
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-87" value="" style="edgeStyle=none;html=1;" parent="1" source="18" target="Kt_CX_v_nDbvTs1uZqcn-86" edge="1">
140
+ <mxGeometry relative="1" as="geometry"/>
141
+ </mxCell>
142
+ <mxCell id="18" value="api" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
143
+ <mxGeometry x="160" y="600" width="120" height="60" as="geometry"/>
144
+ </mxCell>
145
+ <mxCell id="Up015N2JfnYgOBqt4KGi-53" style="edgeStyle=none;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" source="19" target="16" edge="1">
146
+ <mxGeometry relative="1" as="geometry"/>
147
+ </mxCell>
148
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-107" value="" style="edgeStyle=none;html=1;" parent="1" source="19" target="Kt_CX_v_nDbvTs1uZqcn-106" edge="1">
149
+ <mxGeometry relative="1" as="geometry"/>
150
+ </mxCell>
151
+ <mxCell id="19" value="service" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
152
+ <mxGeometry x="440" y="600" width="120" height="60" as="geometry"/>
153
+ </mxCell>
154
+ <mxCell id="21" value="conversation&lt;div&gt;scheme&lt;/div&gt;" style="ellipse;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1">
155
+ <mxGeometry x="180" y="1110" width="80" height="80" as="geometry"/>
156
+ </mxCell>
157
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-72" value="" style="edgeStyle=none;html=1;" parent="1" source="23" target="9" edge="1">
158
+ <mxGeometry relative="1" as="geometry"/>
159
+ </mxCell>
160
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-74" style="edgeStyle=none;html=1;" parent="1" source="23" target="Kt_CX_v_nDbvTs1uZqcn-70" edge="1">
161
+ <mxGeometry relative="1" as="geometry"/>
162
+ </mxCell>
163
+ <mxCell id="23" value="&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;chat_completion schema&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1">
164
+ <mxGeometry x="240" y="990" width="120" height="90" as="geometry"/>
165
+ </mxCell>
166
+ <mxCell id="30" value="openai-openapi-template" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
167
+ <mxGeometry x="530" y="-110" width="120" height="60" as="geometry"/>
168
+ </mxCell>
169
+ <mxCell id="40" style="edgeStyle=none;html=1;" parent="1" source="36" target="37" edge="1">
170
+ <mxGeometry relative="1" as="geometry"/>
171
+ </mxCell>
172
+ <mxCell id="41" value="v1/chat/completions" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="40" vertex="1" connectable="0">
173
+ <mxGeometry x="-0.2117" y="1" relative="1" as="geometry">
174
+ <mxPoint as="offset"/>
175
  </mxGeometry>
176
  </mxCell>
177
+ <mxCell id="36" value="Actor" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1">
178
+ <mxGeometry x="60" y="10" width="30" height="60" as="geometry"/>
179
+ </mxCell>
180
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-49" style="edgeStyle=none;html=1;" parent="1" source="37" target="5" edge="1">
181
  <mxGeometry relative="1" as="geometry"/>
182
  </mxCell>
183
+ <mxCell id="37" value="gradio UI&lt;br&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(63, 63, 63);&quot;&gt;https://chatbot-gradio&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
184
+ <mxGeometry x="317.45" y="10" width="120" height="60" as="geometry"/>
185
+ </mxCell>
186
+ <mxCell id="Up015N2JfnYgOBqt4KGi-43" value="main app&lt;div&gt;fastAPI&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
187
+ <mxGeometry x="30" y="260" width="120" height="60" as="geometry"/>
188
+ </mxCell>
189
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-46" style="edgeStyle=none;html=1;" parent="1" source="Up015N2JfnYgOBqt4KGi-44" target="Up015N2JfnYgOBqt4KGi-50" edge="1">
190
  <mxGeometry relative="1" as="geometry"/>
191
  </mxCell>
192
+ <mxCell id="Up015N2JfnYgOBqt4KGi-44" value="gradio.app&lt;div&gt;UI&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
193
+ <mxGeometry x="-200" y="450" width="120" height="60" as="geometry"/>
194
+ </mxCell>
195
+ <mxCell id="Up015N2JfnYgOBqt4KGi-45" value="mock" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
196
+ <mxGeometry x="160" y="470" width="120" height="60" as="geometry"/>
197
  </mxCell>
198
+ <mxCell id="Up015N2JfnYgOBqt4KGi-46" value="docker" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
199
+ <mxGeometry x="30" y="170" width="120" height="60" as="geometry"/>
200
+ </mxCell>
201
+ <mxCell id="Up015N2JfnYgOBqt4KGi-47" value="api_key_generator" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
202
+ <mxGeometry x="190" y="170" width="120" height="60" as="geometry"/>
203
+ </mxCell>
204
+ <mxCell id="Up015N2JfnYgOBqt4KGi-49" style="edgeStyle=none;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="Up015N2JfnYgOBqt4KGi-48" target="Up015N2JfnYgOBqt4KGi-47" edge="1">
205
  <mxGeometry relative="1" as="geometry"/>
206
  </mxCell>
207
+ <mxCell id="Up015N2JfnYgOBqt4KGi-48" value="security&amp;nbsp; authentication" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
208
+ <mxGeometry x="190" y="300" width="120" height="60" as="geometry"/>
209
  </mxCell>
210
+ <mxCell id="Up015N2JfnYgOBqt4KGi-51" style="edgeStyle=none;html=1;" parent="1" source="Up015N2JfnYgOBqt4KGi-50" target="18" edge="1">
211
+ <mxGeometry relative="1" as="geometry"/>
212
  </mxCell>
213
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-44" value="rest call&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="Up015N2JfnYgOBqt4KGi-51" vertex="1" connectable="0">
214
+ <mxGeometry x="-0.1185" y="-2" relative="1" as="geometry">
215
+ <mxPoint as="offset"/>
216
+ </mxGeometry>
217
+ </mxCell>
218
+ <mxCell id="Up015N2JfnYgOBqt4KGi-50" value="" style="triangle;whiteSpace=wrap;html=1;" parent="1" vertex="1">
219
+ <mxGeometry x="-170" y="590" width="60" height="80" as="geometry"/>
220
+ </mxCell>
221
+ <mxCell id="Up015N2JfnYgOBqt4KGi-55" style="edgeStyle=none;html=1;" parent="1" source="Up015N2JfnYgOBqt4KGi-54" target="19" edge="1">
222
+ <mxGeometry relative="1" as="geometry"/>
223
+ </mxCell>
224
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-42" style="edgeStyle=none;html=1;" parent="1" source="Up015N2JfnYgOBqt4KGi-54" target="Kt_CX_v_nDbvTs1uZqcn-41" edge="1">
225
+ <mxGeometry relative="1" as="geometry"/>
226
+ </mxCell>
227
+ <mxCell id="Up015N2JfnYgOBqt4KGi-54" value="agent&lt;div&gt;mcp client&lt;/div&gt;&lt;div&gt;validation&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
228
+ <mxGeometry x="440" y="490" width="120" height="60" as="geometry"/>
229
+ </mxCell>
230
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-41" value="PostgreSQL MCPServer&lt;div&gt;&lt;span style=&quot;color: rgb(63, 63, 63);&quot;&gt;https://postres.mcp...&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
231
+ <mxGeometry x="440" y="370" width="120" height="60" as="geometry"/>
232
+ </mxCell>
233
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-48" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-47" target="Up015N2JfnYgOBqt4KGi-50" edge="1">
234
+ <mxGeometry relative="1" as="geometry"/>
235
+ </mxCell>
236
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-47" value="Actor" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1">
237
+ <mxGeometry x="-330" y="600" width="30" height="60" as="geometry"/>
238
+ </mxCell>
239
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-50" value="plot model" style="ellipse;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1">
240
+ <mxGeometry x="680" y="1180" width="80" height="80" as="geometry"/>
241
+ </mxCell>
242
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-52" value="message" style="ellipse;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1">
243
+ <mxGeometry x="820" y="1180" width="80" height="80" as="geometry"/>
244
+ </mxCell>
245
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-55" value="plot scheme" style="ellipse;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1">
246
+ <mxGeometry x="60" y="1110" width="80" height="80" as="geometry"/>
247
+ </mxCell>
248
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-59" value="" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-57" target="Kt_CX_v_nDbvTs1uZqcn-58" edge="1">
249
+ <mxGeometry relative="1" as="geometry"/>
250
+ </mxCell>
251
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-61" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-57" target="Kt_CX_v_nDbvTs1uZqcn-60" edge="1">
252
+ <mxGeometry relative="1" as="geometry"/>
253
+ </mxCell>
254
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-57" value="message scheme" style="ellipse;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1">
255
+ <mxGeometry x="-20" y="1030" width="80" height="80" as="geometry"/>
256
+ </mxCell>
257
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-58" value="request" style="ellipse;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1">
258
+ <mxGeometry x="-120" y="1110" width="80" height="50" as="geometry"/>
259
+ </mxCell>
260
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-60" value="response" style="ellipse;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1">
261
+ <mxGeometry x="-130" y="1050" width="70" height="50" as="geometry"/>
262
+ </mxCell>
263
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-62" value="" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-55" target="Kt_CX_v_nDbvTs1uZqcn-64" edge="1">
264
+ <mxGeometry relative="1" as="geometry">
265
+ <mxPoint x="99" y="1274" as="sourcePoint"/>
266
+ </mxGeometry>
267
+ </mxCell>
268
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-63" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-55" target="Kt_CX_v_nDbvTs1uZqcn-65" edge="1">
269
+ <mxGeometry relative="1" as="geometry">
270
+ <mxPoint x="81" y="1247" as="sourcePoint"/>
271
+ </mxGeometry>
272
+ </mxCell>
273
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-64" value="request" style="ellipse;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1">
274
+ <mxGeometry x="40" y="1250" width="60" height="50" as="geometry"/>
275
+ </mxCell>
276
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-65" value="response" style="ellipse;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1">
277
+ <mxGeometry y="1210" width="60" height="50" as="geometry"/>
278
+ </mxCell>
279
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-66" value="" style="edgeStyle=none;html=1;" parent="1" source="21" target="Kt_CX_v_nDbvTs1uZqcn-68" edge="1">
280
+ <mxGeometry relative="1" as="geometry">
281
+ <mxPoint x="231" y="1248" as="sourcePoint"/>
282
+ </mxGeometry>
283
+ </mxCell>
284
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-67" style="edgeStyle=none;html=1;" parent="1" source="21" target="Kt_CX_v_nDbvTs1uZqcn-69" edge="1">
285
+ <mxGeometry relative="1" as="geometry">
286
+ <mxPoint x="215" y="1240" as="sourcePoint"/>
287
+ </mxGeometry>
288
+ </mxCell>
289
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-68" value="request" style="ellipse;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1">
290
+ <mxGeometry x="180" y="1309" width="60" height="50" as="geometry"/>
291
+ </mxCell>
292
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-69" value="response" style="ellipse;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1">
293
+ <mxGeometry x="140" y="1269" width="60" height="50" as="geometry"/>
294
+ </mxCell>
295
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-70" value="request" style="ellipse;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1">
296
+ <mxGeometry x="390" y="950" width="60" height="50" as="geometry"/>
297
+ </mxCell>
298
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-71" value="response" style="ellipse;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1">
299
+ <mxGeometry x="350" y="910" width="60" height="50" as="geometry"/>
300
+ </mxCell>
301
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-73" style="edgeStyle=none;html=1;entryX=0.143;entryY=0.77;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="23" target="Kt_CX_v_nDbvTs1uZqcn-71" edge="1">
302
+ <mxGeometry relative="1" as="geometry"/>
303
+ </mxCell>
304
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-80" value="" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-77" target="Kt_CX_v_nDbvTs1uZqcn-79" edge="1">
305
+ <mxGeometry relative="1" as="geometry"/>
306
+ </mxCell>
307
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-82" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-77" target="Kt_CX_v_nDbvTs1uZqcn-81" edge="1">
308
+ <mxGeometry relative="1" as="geometry"/>
309
+ </mxCell>
310
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-77" value="db client" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
311
+ <mxGeometry x="720" y="490" width="120" height="60" as="geometry"/>
312
+ </mxCell>
313
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-79" value="mongoDB client" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
314
+ <mxGeometry x="650" y="370" width="120" height="60" as="geometry"/>
315
+ </mxCell>
316
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-81" value="embeddedDB client&lt;div&gt;memory / file&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
317
+ <mxGeometry x="810" y="370" width="120" height="60" as="geometry"/>
318
+ </mxCell>
319
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-108" style="edgeStyle=none;html=1;dashed=1;dashPattern=1 4;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-86" target="Kt_CX_v_nDbvTs1uZqcn-104" edge="1">
320
+ <mxGeometry relative="1" as="geometry"/>
321
+ </mxCell>
322
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-86" value="queue" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
323
+ <mxGeometry x="170" y="700" width="100" height="30" as="geometry"/>
324
+ </mxCell>
325
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-88" value="request" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;" parent="1" vertex="1">
326
+ <mxGeometry x="1350" y="740" width="120" height="60" as="geometry"/>
327
+ </mxCell>
328
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-90" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-89" target="Kt_CX_v_nDbvTs1uZqcn-88" edge="1">
329
+ <mxGeometry relative="1" as="geometry"/>
330
+ </mxCell>
331
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-93" value="&amp;nbsp;produce&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="Kt_CX_v_nDbvTs1uZqcn-90" vertex="1" connectable="0">
332
+ <mxGeometry x="-0.215" relative="1" as="geometry">
333
+ <mxPoint as="offset"/>
334
+ </mxGeometry>
335
+ </mxCell>
336
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-89" value="api" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" parent="1" vertex="1">
337
+ <mxGeometry x="1160" y="730" width="80" height="80" as="geometry"/>
338
+ </mxCell>
339
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-92" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-91" target="Kt_CX_v_nDbvTs1uZqcn-88" edge="1">
340
+ <mxGeometry relative="1" as="geometry"/>
341
+ </mxCell>
342
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-94" value="&amp;nbsp;consume&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="Kt_CX_v_nDbvTs1uZqcn-92" vertex="1" connectable="0">
343
+ <mxGeometry x="-0.0727" y="3" relative="1" as="geometry">
344
+ <mxPoint as="offset"/>
345
+ </mxGeometry>
346
+ </mxCell>
347
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-91" value="agent" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" parent="1" vertex="1">
348
+ <mxGeometry x="1600" y="730" width="80" height="80" as="geometry"/>
349
+ </mxCell>
350
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-95" value="response" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;" parent="1" vertex="1">
351
+ <mxGeometry x="1350" y="830" width="120" height="60" as="geometry"/>
352
+ </mxCell>
353
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-96" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-98" target="Kt_CX_v_nDbvTs1uZqcn-95" edge="1">
354
+ <mxGeometry relative="1" as="geometry"/>
355
+ </mxCell>
356
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-103" value="&amp;nbsp;consume&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="Kt_CX_v_nDbvTs1uZqcn-96" vertex="1" connectable="0">
357
+ <mxGeometry x="-0.1524" y="1" relative="1" as="geometry">
358
+ <mxPoint as="offset"/>
359
+ </mxGeometry>
360
+ </mxCell>
361
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-98" value="api" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" parent="1" vertex="1">
362
+ <mxGeometry x="1160" y="820" width="80" height="80" as="geometry"/>
363
+ </mxCell>
364
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-99" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-101" target="Kt_CX_v_nDbvTs1uZqcn-95" edge="1">
365
+ <mxGeometry relative="1" as="geometry"/>
366
+ </mxCell>
367
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-102" value="produce" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="Kt_CX_v_nDbvTs1uZqcn-99" vertex="1" connectable="0">
368
+ <mxGeometry x="-0.0939" y="2" relative="1" as="geometry">
369
+ <mxPoint as="offset"/>
370
+ </mxGeometry>
371
+ </mxCell>
372
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-101" value="agent" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" parent="1" vertex="1">
373
+ <mxGeometry x="1600" y="820" width="80" height="80" as="geometry"/>
374
+ </mxCell>
375
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-104" value="queue" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
376
+ <mxGeometry x="1380" y="700" width="60" height="30" as="geometry"/>
377
+ </mxCell>
378
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-105" value="config" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
379
+ <mxGeometry x="350" y="170" width="120" height="60" as="geometry"/>
380
+ </mxCell>
381
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-110" value="" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-106" target="Kt_CX_v_nDbvTs1uZqcn-109" edge="1">
382
+ <mxGeometry relative="1" as="geometry"/>
383
+ </mxCell>
384
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-106" value="agent-logic" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
385
+ <mxGeometry x="439" y="1290" width="120" height="60" as="geometry"/>
386
+ </mxCell>
387
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-112" value="" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-109" target="Kt_CX_v_nDbvTs1uZqcn-111" edge="1">
388
+ <mxGeometry relative="1" as="geometry"/>
389
+ </mxCell>
390
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-135" value="" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-109" target="Kt_CX_v_nDbvTs1uZqcn-134" edge="1">
391
+ <mxGeometry relative="1" as="geometry"/>
392
+ </mxCell>
393
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-109" value="client" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
394
+ <mxGeometry x="439" y="1420" width="120" height="60" as="geometry"/>
395
+ </mxCell>
396
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-114" value="" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-111" target="Kt_CX_v_nDbvTs1uZqcn-113" edge="1">
397
+ <mxGeometry relative="1" as="geometry"/>
398
+ </mxCell>
399
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-118" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-111" target="Kt_CX_v_nDbvTs1uZqcn-117" edge="1">
400
+ <mxGeometry relative="1" as="geometry"/>
401
+ </mxCell>
402
+ <mxCell id="8wEyrrJbOd0KazR4VPNf-42" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-111" target="8wEyrrJbOd0KazR4VPNf-41">
403
+ <mxGeometry relative="1" as="geometry"/>
404
+ </mxCell>
405
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-111" value="agentic workflow" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
406
+ <mxGeometry x="439" y="1680" width="120" height="60" as="geometry"/>
407
+ </mxCell>
408
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-113" value="LLM" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;rounded=0;" parent="1" vertex="1">
409
+ <mxGeometry x="570" y="1520" width="80" height="80" as="geometry"/>
410
+ </mxCell>
411
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-122" value="" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-115" target="Kt_CX_v_nDbvTs1uZqcn-121" edge="1">
412
+ <mxGeometry relative="1" as="geometry"/>
413
+ </mxCell>
414
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-132" style="edgeStyle=none;html=1;dashed=1;dashPattern=1 4;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-115" target="Kt_CX_v_nDbvTs1uZqcn-113" edge="1">
415
+ <mxGeometry relative="1" as="geometry"/>
416
+ </mxCell>
417
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-115" value="query-agent" style="ellipse;whiteSpace=wrap;html=1;fillColor=#a20025;strokeColor=#6F0000;rounded=0;fontColor=#ffffff;" parent="1" vertex="1">
418
+ <mxGeometry x="809" y="1660" width="80" height="80" as="geometry"/>
419
+ </mxCell>
420
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-129" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-117" target="Kt_CX_v_nDbvTs1uZqcn-115" edge="1">
421
+ <mxGeometry relative="1" as="geometry"/>
422
+ </mxCell>
423
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-130" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-117" target="Kt_CX_v_nDbvTs1uZqcn-119" edge="1">
424
+ <mxGeometry relative="1" as="geometry">
425
+ <mxPoint x="708.9974476532502" y="1800.7175150278272" as="sourcePoint"/>
426
+ </mxGeometry>
427
+ </mxCell>
428
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-131" style="edgeStyle=none;html=1;dashed=1;dashPattern=1 4;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-117" target="Kt_CX_v_nDbvTs1uZqcn-113" edge="1">
429
+ <mxGeometry relative="1" as="geometry"/>
430
+ </mxCell>
431
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-117" value="supervisor-agent" style="ellipse;whiteSpace=wrap;html=1;fillColor=#6a00ff;strokeColor=#3700CC;rounded=0;fontColor=#ffffff;" parent="1" vertex="1">
432
+ <mxGeometry x="629" y="1720" width="80" height="80" as="geometry"/>
433
+ </mxCell>
434
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-126" value="" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-119" target="Kt_CX_v_nDbvTs1uZqcn-125" edge="1">
435
+ <mxGeometry relative="1" as="geometry"/>
436
+ </mxCell>
437
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-133" style="edgeStyle=none;html=1;dashed=1;dashPattern=1 4;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-119" target="Kt_CX_v_nDbvTs1uZqcn-113" edge="1">
438
+ <mxGeometry relative="1" as="geometry"/>
439
+ </mxCell>
440
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-119" value="plot-agent" style="ellipse;whiteSpace=wrap;html=1;fillColor=#1ba1e2;strokeColor=#006EAF;rounded=0;fontColor=#ffffff;" parent="1" vertex="1">
441
+ <mxGeometry x="809" y="1840" width="80" height="80" as="geometry"/>
442
+ </mxCell>
443
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-124" value="" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-121" target="Kt_CX_v_nDbvTs1uZqcn-123" edge="1">
444
+ <mxGeometry relative="1" as="geometry"/>
445
+ </mxCell>
446
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-138" style="edgeStyle=none;html=1;dashed=1;dashPattern=1 4;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-121" target="Kt_CX_v_nDbvTs1uZqcn-136" edge="1">
447
+ <mxGeometry relative="1" as="geometry"/>
448
+ </mxCell>
449
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-121" value="mcp-connector" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;rounded=0;" parent="1" vertex="1">
450
+ <mxGeometry x="969" y="1660" width="80" height="80" as="geometry"/>
451
+ </mxCell>
452
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-123" value="postgres-mcp-server" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;rounded=0;" parent="1" vertex="1">
453
+ <mxGeometry x="1129" y="1660" width="90" height="80" as="geometry"/>
454
+ </mxCell>
455
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-128" value="" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-125" target="Kt_CX_v_nDbvTs1uZqcn-127" edge="1">
456
+ <mxGeometry relative="1" as="geometry"/>
457
+ </mxCell>
458
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-125" value="tools" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;rounded=0;" parent="1" vertex="1">
459
+ <mxGeometry x="979" y="1840" width="80" height="80" as="geometry"/>
460
+ </mxCell>
461
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-127" value="visualize tool" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;rounded=0;" parent="1" vertex="1">
462
+ <mxGeometry x="1134" y="1840" width="80" height="80" as="geometry"/>
463
+ </mxCell>
464
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-137" value="" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-134" target="Kt_CX_v_nDbvTs1uZqcn-136" edge="1">
465
+ <mxGeometry relative="1" as="geometry"/>
466
+ </mxCell>
467
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-140" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-134" target="Kt_CX_v_nDbvTs1uZqcn-139" edge="1">
468
+ <mxGeometry relative="1" as="geometry"/>
469
+ </mxCell>
470
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-134" value="mcp server config" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
471
+ <mxGeometry x="659" y="1420" width="120" height="60" as="geometry"/>
472
+ </mxCell>
473
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-136" value="postgres mcp connector" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;rounded=0;" parent="1" vertex="1">
474
+ <mxGeometry x="869" y="1350" width="80" height="80" as="geometry"/>
475
+ </mxCell>
476
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-139" value="dnext&amp;nbsp;&lt;div&gt;crm-mcp connector&lt;/div&gt;" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;rounded=0;" parent="1" vertex="1">
477
+ <mxGeometry x="760" y="1300" width="80" height="80" as="geometry"/>
478
+ </mxCell>
479
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-144" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-142" target="Kt_CX_v_nDbvTs1uZqcn-106" edge="1">
480
+ <mxGeometry relative="1" as="geometry"/>
481
+ </mxCell>
482
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-145" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-142" target="Kt_CX_v_nDbvTs1uZqcn-109" edge="1">
483
+ <mxGeometry relative="1" as="geometry"/>
484
+ </mxCell>
485
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-146" style="edgeStyle=none;html=1;" parent="1" source="Kt_CX_v_nDbvTs1uZqcn-142" target="Kt_CX_v_nDbvTs1uZqcn-111" edge="1">
486
+ <mxGeometry relative="1" as="geometry"/>
487
  </mxCell>
488
+ <mxCell id="Kt_CX_v_nDbvTs1uZqcn-142" value="app" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
489
+ <mxGeometry x="269" y="1420" width="120" height="60" as="geometry"/>
490
  </mxCell>
491
+ <mxCell id="8wEyrrJbOd0KazR4VPNf-41" value="init mcp servers" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
492
+ <mxGeometry x="340" y="1800" width="120" height="60" as="geometry"/>
493
  </mxCell>
494
  </root>
495
  </mxGraphModel>
scripts/{run_api_key_generator.sh → generate_api_key.sh} RENAMED
@@ -4,4 +4,6 @@
4
  source .venv/bin/activate
5
 
6
  # Run the Python script
7
- python3 scripts/api_key_genenerator.py "$@"
 
 
 
4
  source .venv/bin/activate
5
 
6
  # Run the Python script
7
+ python3 scripts/api_key_genenerator.py "$@"
8
+
9
+ # ./scripts/generate_api_key.sh <username> <secret-key>