@minded-ai/mindedjs 3.0.4-beta.3 → 3.0.6-beta.1

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.
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Do not edit this file with editors other than draw.io -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="641px" height="681px" viewBox="0 0 641 681" content="&lt;mxfile host=&quot;app.diagrams.net&quot; agent=&quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36&quot; version=&quot;29.2.7&quot;&gt;&#10; &lt;diagram name=&quot;Architecture Overview&quot; id=&quot;lUb2Yy0VcGrDcHUANlMM&quot;&gt;&#10; &lt;mxGraphModel dx=&quot;576&quot; dy=&quot;683&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;1&quot; pageScale=&quot;1&quot; pageWidth=&quot;850&quot; pageHeight=&quot;1100&quot; math=&quot;0&quot; shadow=&quot;0&quot;&gt;&#10; &lt;root&gt;&#10; &lt;mxCell id=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;qiHXacqECXXAYTJ9b62k-243&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;align=center;spacingTop=10;fillColor=#f9f9f9;strokeColor=#333333;fontSize=16;labelBackgroundColor=none;&quot; value=&quot;&amp;lt;b&amp;gt;MINDED INFRASTRUCTURE&amp;lt;/b&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;680&quot; width=&quot;640&quot; x=&quot;1080&quot; y=&quot;830&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;qiHXacqECXXAYTJ9b62k-244&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=10;fillColor=#ffffff;strokeColor=#666666;fontSize=16;labelBackgroundColor=none;&quot; value=&quot;&amp;lt;b&amp;gt;TENANT A (Customer A)&amp;lt;/b&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;240&quot; width=&quot;580&quot; x=&quot;1110&quot; y=&quot;880&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;qiHXacqECXXAYTJ9b62k-245&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;spacingTop=10;fillColor=#f5f5f5;fontSize=16;labelBackgroundColor=none;&quot; value=&quot;&amp;lt;b&amp;gt;Namespace&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;tenant-a&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Agent Pods:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;- agent-a-1&amp;lt;br&amp;gt;- agent-a-2&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Network:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;- policy-a&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;190&quot; width=&quot;220&quot; x=&quot;1130&quot; y=&quot;920&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;qiHXacqECXXAYTJ9b62k-246&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;spacingTop=10;fillColor=#f5f5f5;fontSize=16;labelBackgroundColor=none;&quot; value=&quot;&amp;lt;b&amp;gt;Encryption&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;Key: key_a&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Credentials DB:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;- encrypted with key_a&amp;lt;br&amp;gt;- isolated schema&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;IP Whitelist:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;- customer-a-ips.com&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;190&quot; width=&quot;260&quot; x=&quot;1410&quot; y=&quot;920&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;qiHXacqECXXAYTJ9b62k-247&quot; connectable=&quot;0&quot; parent=&quot;1&quot; style=&quot;group;fontSize=16;labelBackgroundColor=none;&quot; value=&quot;&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;40&quot; width=&quot;580&quot; x=&quot;1110&quot; y=&quot;1140&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;qiHXacqECXXAYTJ9b62k-248&quot; edge=&quot;1&quot; parent=&quot;qiHXacqECXXAYTJ9b62k-247&quot; style=&quot;endArrow=none;html=1;strokeWidth=2;fontSize=16;labelBackgroundColor=none;&quot; value=&quot;&quot;&gt;&#10; &lt;mxGeometry height=&quot;50&quot; relative=&quot;1&quot; width=&quot;50&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint y=&quot;10&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;580&quot; y=&quot;10&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;qiHXacqECXXAYTJ9b62k-249&quot; parent=&quot;qiHXacqECXXAYTJ9b62k-247&quot; style=&quot;text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#666666;fontSize=16;labelBackgroundColor=none;&quot; value=&quot;&amp;lt;b&amp;gt;ISOLATION BOUNDARY&amp;lt;/b&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;30&quot; width=&quot;580&quot; y=&quot;5&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;qiHXacqECXXAYTJ9b62k-250&quot; edge=&quot;1&quot; parent=&quot;qiHXacqECXXAYTJ9b62k-247&quot; style=&quot;endArrow=none;html=1;strokeWidth=2;fontSize=16;labelBackgroundColor=none;&quot; value=&quot;&quot;&gt;&#10; &lt;mxGeometry height=&quot;50&quot; relative=&quot;1&quot; width=&quot;50&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint y=&quot;30&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;580&quot; y=&quot;30&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;qiHXacqECXXAYTJ9b62k-251&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=10;fillColor=#ffffff;strokeColor=#666666;fontSize=16;labelBackgroundColor=none;&quot; value=&quot;&amp;lt;b&amp;gt;TENANT B (Customer B)&amp;lt;/b&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;240&quot; width=&quot;580&quot; x=&quot;1110&quot; y=&quot;1200&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;qiHXacqECXXAYTJ9b62k-252&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;spacingTop=10;fillColor=#f5f5f5;fontSize=16;labelBackgroundColor=none;&quot; value=&quot;&amp;lt;b&amp;gt;Namespace&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;tenant-b&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Agent Pods:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;- agent-b-1&amp;lt;br&amp;gt;- agent-b-2&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Network:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;- policy-b&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;190&quot; width=&quot;220&quot; x=&quot;1130&quot; y=&quot;1240&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;qiHXacqECXXAYTJ9b62k-253&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;spacingTop=10;fillColor=#f5f5f5;fontSize=16;labelBackgroundColor=none;&quot; value=&quot;&amp;lt;b&amp;gt;Encryption&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;Key: key_b&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Credentials DB:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;- encrypted with key_b&amp;lt;br&amp;gt;- isolated schema&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;IP Whitelist:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;- customer-b-ips.net&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;190&quot; width=&quot;260&quot; x=&quot;1410&quot; y=&quot;1240&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;/root&gt;&#10; &lt;/mxGraphModel&gt;&#10; &lt;/diagram&gt;&#10;&lt;/mxfile&gt;&#10;"><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="qiHXacqECXXAYTJ9b62k-243"><g transform="translate(0.5,0.5)"><rect x="0" y="0" width="640" height="680" fill="#f9f9f9" stroke="#333333" pointer-events="all" style="fill: light-dark(rgb(249, 249, 249), rgb(23, 23, 23)); stroke: light-dark(rgb(51, 51, 51), rgb(193, 193, 193));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 638px; height: 1px; padding-top: 17px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>MINDED INFRASTRUCTURE</b></div></div></div></foreignObject><text x="320" y="33" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">MINDED INFRASTRUCTURE</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-244"><g transform="translate(0.5,0.5)"><rect x="30" y="50" width="580" height="240" fill="#ffffff" stroke="#666666" pointer-events="all" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 568px; height: 1px; padding-top: 67px; margin-left: 42px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>TENANT A (Customer A)</b></div></div></div></foreignObject><text x="42" y="83" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">TENANT A (Customer A)</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-245"><g transform="translate(0.5,0.5)"><rect x="50" y="90" width="220" height="190" fill="#f5f5f5" stroke="#000000" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 208px; height: 1px; padding-top: 190px; margin-left: 62px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>Namespace</b><br />tenant-a<br /><br /><b>Agent Pods:</b><br />- agent-a-1<br />- agent-a-2<br /><br /><b>Network:</b><br />- policy-a</div></div></div></foreignObject><text x="62" y="195" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">Namespace...</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-246"><g transform="translate(0.5,0.5)"><rect x="330" y="90" width="260" height="190" fill="#f5f5f5" stroke="#000000" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 248px; height: 1px; padding-top: 190px; margin-left: 342px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>Encryption</b><br />Key: key_a<br /><br /><b>Credentials DB:</b><br />- encrypted with key_a<br />- isolated schema<br /><br /><b>IP Whitelist:</b><br />- customer-a-ips.com</div></div></div></foreignObject><text x="342" y="195" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">Encryption...</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-247"><g transform="translate(0.5,0.5)"/><g data-cell-id="qiHXacqECXXAYTJ9b62k-248"><g><path d="M 30 320 L 610 320" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-249"><g transform="translate(0.5,0.5)"><rect x="30" y="315" width="580" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 578px; height: 1px; padding-top: 330px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #666666; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#666666, #959595); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>ISOLATION BOUNDARY</b></div></div></div></foreignObject><text x="320" y="335" fill="#666666" font-family="Helvetica" font-size="16px" text-anchor="middle">ISOLATION BOUNDARY</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-250"><g><path d="M 30 340 L 610 340" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-251"><g transform="translate(0.5,0.5)"><rect x="30" y="370" width="580" height="240" fill="#ffffff" stroke="#666666" pointer-events="all" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 568px; height: 1px; padding-top: 387px; margin-left: 42px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>TENANT B (Customer B)</b></div></div></div></foreignObject><text x="42" y="403" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">TENANT B (Customer B)</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-252"><g transform="translate(0.5,0.5)"><rect x="50" y="410" width="220" height="190" fill="#f5f5f5" stroke="#000000" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 208px; height: 1px; padding-top: 510px; margin-left: 62px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>Namespace</b><br />tenant-b<br /><br /><b>Agent Pods:</b><br />- agent-b-1<br />- agent-b-2<br /><br /><b>Network:</b><br />- policy-b</div></div></div></foreignObject><text x="62" y="515" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">Namespace...</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-253"><g transform="translate(0.5,0.5)"><rect x="330" y="410" width="260" height="190" fill="#f5f5f5" stroke="#000000" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 248px; height: 1px; padding-top: 510px; margin-left: 342px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>Encryption</b><br />Key: key_b<br /><br /><b>Credentials DB:</b><br />- encrypted with key_b<br />- isolated schema<br /><br /><b>IP Whitelist:</b><br />- customer-b-ips.net</div></div></div></foreignObject><text x="342" y="515" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">Encryption...</text></switch></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
package/docs/SUMMARY.md CHANGED
@@ -37,6 +37,7 @@
37
37
  - [Browser Task](platform/browserTask.md)
38
38
  - [SSO (Single Sign-On)](platform/sso.md)
39
39
  - [On-prem Deployment](platform/on-prem.md)
40
+ - [Security Architecture](platform/security-architecture.md)
40
41
 
41
42
  ## Tooling
42
43
 
@@ -0,0 +1,343 @@
1
+ # **Minded Agent Security Architecture**
2
+
3
+ Minded AI agents automate complex workflows in customer environments while maintaining enterprise-grade security. This architecture enables powerful automation capabilities against your sensitive systems and data, with multiple layers of protection to ensure your infrastructure remains secure.
4
+
5
+ ## **Security Approach**
6
+
7
+ Minded is designed to provide maximum automation power while maintaining zero-trust security. You can automate mission-critical workflows with confidence, while Minded ensures every action is verified, logged, and restricted through multiple security layers.
8
+
9
+ ---
10
+
11
+ ## 🏗️ System Overview
12
+
13
+ <figure><img src="../.gitbook/assets/system-overview.svg" alt="Minded System Overview Diagram"></figure>
14
+
15
+ **Key Principles**:
16
+
17
+ - **Zero Trust**: Every action verified, logged, and restricted
18
+ - **Least Privilege**: Agents only access what they need, when they need it
19
+ - **Defense in Depth**: Multiple security layers protect against breaches
20
+ - **Tenant Isolation**: Complete separation between customer environments
21
+
22
+ ---
23
+
24
+ ## 🛡️ Security Layers
25
+
26
+ ### Layer 1: Network Isolation
27
+
28
+ ---
29
+
30
+ **VPC Configuration:**
31
+
32
+ - All inbound traffic: BLOCKED
33
+ - Outbound traffic: WHITELISTED IPs only
34
+ - Internal pod-to-pod: ISOLATED by tenant + namespace
35
+
36
+ **IP Whitelisting:**
37
+
38
+ - Customer provides allowed IP ranges
39
+ - Minded agent can ONLY connect to those IPs
40
+ - Dynamic IP updates via Minded platform
41
+
42
+ **Traffic Monitoring:**
43
+
44
+ - All network requests logged
45
+ - Alerts on unauthorized connection attempts
46
+ - Automatic blocking of suspicious patterns
47
+
48
+ ### Layer 2: Authentication & Authorization
49
+
50
+ ---
51
+
52
+ **Storage:**
53
+
54
+ - Credentials encrypted at rest (AES-256-GCM)
55
+ - Keys stored in AWS Key Management Service (KMS)
56
+
57
+ **Runtime:**
58
+
59
+ - Credentials decrypted only during execution
60
+ - Never stored in memory after use
61
+ - Automatic expiration/rotation
62
+
63
+ **Access Control:**
64
+
65
+ - Agent-specific credentials (not shared)
66
+ - MFA support for sensitive operations
67
+ - Role-based access control (RBAC)
68
+ - Immediate credential revocation capability
69
+
70
+ ### Layer 3: RPA Security Controls
71
+
72
+ ---
73
+
74
+ **URL Restrictions:**
75
+
76
+ - Whitelist of allowed URLs/domains
77
+ - Regex pattern matching for dynamic URLs
78
+ - Block attempts to modify URL parameters
79
+ - Prevent URL redirection attacks
80
+
81
+ **Action Limitations:**
82
+
83
+ - Predefined set of allowed actions
84
+ - Parameter validation against schemas
85
+ - Read-only mode for sensitive operations
86
+ - Block file upload/download outside scope
87
+
88
+ **Parameter Integrity:**
89
+
90
+ - Hash-based verification of parameters
91
+ - Signature validation for critical actions
92
+ - Block modification of flow-defined values
93
+ - Audit trail for all parameter changes
94
+
95
+ ### Layer 4: Runtime Security
96
+
97
+ ---
98
+
99
+ **Pod/Container Security:**
100
+
101
+ - Non-root user execution
102
+ - Read-only file system (except temp dirs)
103
+ - Resource limits (CPU, memory, network)
104
+ - Security context constraints
105
+ - Regular image scanning for vulnerabilities
106
+
107
+ **Process Monitoring:**
108
+
109
+ - Antivirus/antimalware scanning
110
+ - Behavioral analysis for anomalies
111
+
112
+ **Lifecycle Management:**
113
+
114
+ - Auto-shutdown when idle (configurable timeout)
115
+ - No persistent state on disk
116
+ - Fresh instance per execution (optional)
117
+
118
+ **Data Protection:**
119
+
120
+ - Encryption in transit (TLS 1.2)
121
+ - Encryption at rest (all storage volumes)
122
+ - Secure deletion of temporary data
123
+
124
+ ### Layer 5: Monitoring & Audit
125
+
126
+ ---
127
+
128
+ **Audit Logging:**
129
+
130
+ - Every action logged with timestamp
131
+ - User identity, agent ID, action type
132
+ - Input/output parameters (sanitized)
133
+ - Log retention policy (90 days default)
134
+
135
+ **Real-time Monitoring:**
136
+
137
+ - Dashboard for active agent sessions
138
+ - Resource utilization tracking
139
+ - Error rate and failure monitoring
140
+ - Network traffic analysis
141
+
142
+ **Alerting:**
143
+
144
+ - Unauthorized access attempts
145
+ - Unusual job triggers
146
+ - Credential access outside business hours
147
+ - Failed authentication attempts
148
+ - Suspicious parameter modifications
149
+ - Policy violations
150
+
151
+ **Integration:**
152
+
153
+ - Email/Slack alerts
154
+ - Customer SOC integration
155
+
156
+ ---
157
+
158
+ ## 1️⃣ Credential Lifecycle Flow
159
+
160
+ **How credentials are managed from creation to revocation**
161
+
162
+ <figure><img src="../.gitbook/assets/credentials-lifecycle.svg" alt="Minded Credentials Lifecycle Flow Diagram"></figure>
163
+
164
+ **Key Security Features**:
165
+
166
+ - Credentials never stored in plaintext
167
+ - Encryption keys managed separately from encrypted data
168
+ - Credentials only decrypted at runtime, never persisted
169
+ - Immediate revocation capability
170
+ - Complete audit trail
171
+
172
+ ---
173
+
174
+ ## 2️⃣ RPA Execution Flow Security Controls
175
+
176
+ **How we run security checks for RPA action executions**
177
+
178
+ <figure><img src="../.gitbook/assets/rpa-execution-flow.svg" alt="Minded RPA Execution Flow Security Diagram"></figure>
179
+
180
+ **Default checklist for action verification**:
181
+
182
+ 1. Is the URL on your allowed list?
183
+ 2. Is this action permitted for this agent?
184
+ 3. Are the parameters valid and properly formatted?
185
+ 4. Have the parameters been tampered with?
186
+ 5. Does the agent have permission to do this?
187
+ 6. Log the request before running
188
+ 7. Double-check the URL before making the request
189
+ 8. Clean up any unsafe input
190
+ 9. Block any attempts to inject code
191
+ 10. Remove sensitive data from the response
192
+ 11. Log the result after completion
193
+
194
+ **What happens when a check doesn't pass**:
195
+
196
+ 1. The action is blocked immediately
197
+ 2. All the details are logged
198
+ 3. Extreme violations may suspend the agent until further investigation
199
+
200
+ ---
201
+
202
+ ## 3️⃣ Agent Lifecycle Security
203
+
204
+ **From deployment to shutdown - security at every stage**
205
+
206
+ <figure><img src="../.gitbook/assets/agent-lifecycle-security.svg" alt="Minded Agent Lifecycle Security Diagram"></figure>
207
+
208
+ ### Idle Timeout Configuration
209
+
210
+ Default: 30 minutes of inactivity
211
+ Options:
212
+
213
+ - Always-on (for critical agents)
214
+ - Custom timeout (5-120 minutes)
215
+ - Immediate shutdown after task
216
+
217
+ Benefits:
218
+
219
+ - Reduce attack surface
220
+ - Lower resource costs
221
+ - Fresh state for each execution
222
+
223
+ ---
224
+
225
+ ## 4️⃣ Tenant Isolation Architecture
226
+
227
+ **Ensuring complete separation between customer environments**
228
+
229
+ <figure><img src="../.gitbook/assets/tenant-isolation-overview.svg" alt="Minded Tenant Isolation Architecture Diagram"></figure>
230
+
231
+ ### Isolation Guarantees
232
+
233
+ **Network:**
234
+
235
+ - Separate K8s namespaces
236
+ - Network policies prevent cross-tenant traffic
237
+ - Separate VPCs (enterprise tier)
238
+
239
+ **Data:**
240
+
241
+ - Separate encryption keys per tenant
242
+ - Logical database isolation (schemas/tables)
243
+ - Physical database isolation (enterprise tier)
244
+
245
+ **Compute:**
246
+
247
+ - No pod sharing between tenants
248
+ - Resource quotas per tenant
249
+ - Dedicated nodes (enterprise tier)
250
+
251
+ **Credentials:**
252
+
253
+ - Cannot access other tenant's credentials
254
+ - Cannot list other tenant's agents
255
+ - Cannot execute actions on other tenant's behalf
256
+
257
+ **Audit Logs:**
258
+
259
+ - Separate log streams per tenant
260
+ - Cannot view other tenant's logs
261
+ - Cannot tamper with other tenant's logs
262
+
263
+ ---
264
+
265
+ ## 5️⃣ Infrastructure Security
266
+
267
+ **How we protect the systems running your agents**
268
+
269
+ Think of each agent as running in its own secure, locked room. Here's what that means in practice:
270
+
271
+ - **No elevated privileges** - Agents run as standard users, never as administrators. They can't make system-level changes.
272
+ - **Nothing can be modified** - The agent's environment is read-only. Even if something tried to tamper with it, the changes wouldn't stick.
273
+ - **Complete isolation** - Agents can't see or touch the underlying infrastructure. They operate in their own sealed environment.
274
+ - **Guardrails on resources** - Each agent has strict limits on computing power and memory. They can't consume more than allocated.
275
+ - **Regularly checked for vulnerabilities** - We continuously scan our systems for security issues and patch them promptly.
276
+
277
+ ---
278
+
279
+ ## 6️⃣ Agent Behavior Verification & Action Limits
280
+
281
+ **Ensuring agents only perform intended actions within defined boundaries**
282
+
283
+ ### Webhook Security
284
+
285
+ Every webhook that triggers an agent is verified before processing:
286
+
287
+ - **Signed payloads** - All webhooks include an HMAC-SHA256 signature that we validate
288
+ - **Timestamp checks** - We reject webhooks older than 5 minutes to prevent replay attacks
289
+ - **Source validation** - Webhooks must come from whitelisted IPs with valid API keys
290
+
291
+ ### What Gets Logged
292
+
293
+ Every agent action creates a complete audit trail:
294
+
295
+ - Unique ID for tracking the specific invocation
296
+ - Start and end timestamps
297
+ - How it was triggered (webhook, schedule, or manual)
298
+ - Input parameters (with sensitive data removed)
299
+ - All actions performed and their results
300
+ - Any resources that were created or modified
301
+
302
+ ### Reconciliation
303
+
304
+ We continuously verify that agents only do what they're supposed to:
305
+
306
+ - Compare expected actions against actual actions
307
+ - Alert immediately if there are discrepancies
308
+ - Generate daily reconciliation reports for review
309
+
310
+ ---
311
+
312
+ ## See Also
313
+
314
+ For more information on related security and operational topics, see:
315
+
316
+ - **[Secrets Management](secrets.md)** - Detailed guide on storing and managing credentials securely
317
+ - **[Operator Documentation](operator.md)** - Operational procedures and best practices for running agents
318
+ - **[On-Premise Deployment](on-prem.md)** - Security considerations for self-hosted Minded installations
319
+ - **[Browser Task (RPA)](browserTask.md)** - Technical details on RPA capabilities and configurations
320
+
321
+ ---
322
+
323
+ ## Security FAQs
324
+
325
+ ### Q: What happens if an agent tries to access systems outside my whitelist?
326
+
327
+ The request is blocked immediately at multiple layers. First, our security gateway checks the URL against your whitelist. Even if that somehow fails, network policies at the infrastructure level block the connection. All attempts are logged, alerts are triggered, and repeated violations will suspend the agent automatically.
328
+
329
+ ### Q: How do you protect my credentials?
330
+
331
+ Credentials are encrypted using AES-256 before storage, with encryption keys managed separately in AWS KMS. They're only decrypted in memory during execution and cleared immediately after use. Even if someone gained access to our database, they'd only find encrypted data that's useless without the keys.
332
+
333
+ ### Q: Can one customer's agent access another customer's data?
334
+
335
+ No. Each customer operates in a completely isolated environment with separate namespaces, encryption keys, and network policies. There's no pathway for one tenant's agent to reach another tenant's resources - the infrastructure physically prevents it.
336
+
337
+ ### Q: How do you prevent malicious code from running?
338
+
339
+ All action parameters are validated against schemas and checked for tampering using signatures. Inputs are sanitized to remove dangerous content. We scan all container images for vulnerabilities before deployment and monitor runtime behavior for anomalies.
340
+
341
+ ### Q: What visibility do I have into agent activity?
342
+
343
+ Every action is logged with full details including timestamps, parameters, and results. You can access audit logs, set up alerts, and integrate with your existing monitoring tools. You'll know exactly what your agents are doing at all times.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minded-ai/mindedjs",
3
- "version": "3.0.4-beta.3",
3
+ "version": "3.0.6-beta.1",
4
4
  "description": "MindedJS is a TypeScript library for building agents.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -57,6 +57,7 @@
57
57
  "@types/js-yaml": "^4.0.9",
58
58
  "axios": "^1.9.0",
59
59
  "chrome-remote-interface": "^0.33.3",
60
+ "cron-parser": "^5.4.0",
60
61
  "ejs": "^3.1.10",
61
62
  "flatted": "^3.3.3",
62
63
  "js-yaml": "^4.1.0",
package/src/cli/index.ts CHANGED
@@ -5,6 +5,7 @@ import * as path from 'path';
5
5
  import { logger } from '../utils/logger';
6
6
  import { execSync } from 'child_process';
7
7
  import { setupLocalOperator, isLocalOperatorSetup } from './localOperatorSetup';
8
+ import { runValidateCommand } from './validateFlow';
8
9
 
9
10
  const ENV_FILE = '.env';
10
11
 
@@ -174,9 +175,12 @@ async function main() {
174
175
  console.info('✗ Local operator is not set up. Run: npx minded setup-local-operator');
175
176
  process.exit(1);
176
177
  }
178
+ } else if (command === 'validate') {
179
+ // Command to validate a flow YAML file
180
+ runValidateCommand();
177
181
  } else {
178
182
  logger.error({
179
- msg: 'Unknown command. Available commands: token, setup-local-operator, check-local-operator, generate-lambda-ts-handler',
183
+ msg: 'Unknown command. Available commands: token, setup-local-operator, check-local-operator, generate-lambda-ts-handler, validate',
180
184
  });
181
185
  process.exit(1);
182
186
  }