Forráskód Böngészése

doc: Images for the English documantation

Serj Kalichev 2 hónapja
szülő
commit
c48ae3e788

+ 115 - 0
docs/klish-client-server.en.drawio

@@ -0,0 +1,115 @@
+<mxfile host="Electron" modified="2025-10-03T14:47:08.760Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/23.1.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="OWHO7hLmXLjCGkWc5c8Q" version="23.1.5" type="device">
+  <diagram name="Страница — 1" id="30W0JeJtDvzRnd2ZMywA">
+    <mxGraphModel dx="681" dy="884" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="shDmYxE_p5FblS_esGwc-1" value="Client klish 1" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="40" y="80" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-2" value="Client klish n" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="40" y="160" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-3" value="&lt;font style=&quot;font-size: 32px;&quot;&gt;...&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="40" y="120" width="100" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-4" value="&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Listening&amp;nbsp;klishd&lt;br&gt;server" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="240" y="80" width="160" height="120" as="geometry" />
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-5" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.013;entryY=0.825;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryPerimeter=0;" parent="1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="140" y="180" as="sourcePoint" />
+            <mxPoint x="242.08000000000004" y="179" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-6" value="Connection" style="edgeLabel;resizable=0;html=1;;align=center;verticalAlign=middle;" parent="shDmYxE_p5FblS_esGwc-5" connectable="0" vertex="1">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-7" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.013;entryY=0.825;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryPerimeter=0;" parent="1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="140" y="100.5" as="sourcePoint" />
+            <mxPoint x="242" y="99.5" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-8" value="Connection" style="edgeLabel;resizable=0;html=1;;align=center;verticalAlign=middle;" parent="shDmYxE_p5FblS_esGwc-7" connectable="0" vertex="1">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-9" value="Serving&lt;br&gt;klishd server 1" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="500" y="80" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-10" value="Serving&lt;br&gt;klishd server n" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="500" y="160" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-11" value="&lt;font style=&quot;font-size: 32px;&quot;&gt;...&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="500" y="120" width="100" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-12" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.013;entryY=0.825;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryPerimeter=0;" parent="1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="400" y="180.25" as="sourcePoint" />
+            <mxPoint x="502" y="179.25" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-13" value="fork()" style="edgeLabel;resizable=0;html=1;;align=center;verticalAlign=middle;" parent="shDmYxE_p5FblS_esGwc-12" connectable="0" vertex="1">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-14" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.013;entryY=0.825;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryPerimeter=0;" parent="1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="400" y="100.5" as="sourcePoint" />
+            <mxPoint x="502" y="99.5" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-15" value="fork()" style="edgeLabel;resizable=0;html=1;;align=center;verticalAlign=middle;" parent="shDmYxE_p5FblS_esGwc-14" connectable="0" vertex="1">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-16" value="UNIX socket" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="230" y="125" width="60" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-17" value="" style="endArrow=none;html=1;rounded=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" parent="1" target="shDmYxE_p5FblS_esGwc-4" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="280" y="200" as="sourcePoint" />
+            <mxPoint x="280" y="90" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-30" value="" style="endArrow=classic;html=1;rounded=0;dashed=1;startArrow=classic;startFill=1;" parent="1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="120" y="80" as="sourcePoint" />
+            <mxPoint x="520" y="80" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="120" y="50" />
+              <mxPoint x="520" y="50" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-31" value="KTP protocol" style="edgeLabel;resizable=0;html=1;;align=center;verticalAlign=middle;" parent="shDmYxE_p5FblS_esGwc-30" connectable="0" vertex="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="-1" as="offset" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-34" value="" style="endArrow=classic;html=1;rounded=0;dashed=1;startArrow=classic;startFill=1;entryX=0.195;entryY=1.035;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="shDmYxE_p5FblS_esGwc-10" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="120" y="201" as="sourcePoint" />
+            <mxPoint x="520" y="260" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="120" y="230" />
+              <mxPoint x="520" y="230" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-35" value="KTP protocol" style="edgeLabel;resizable=0;html=1;;align=center;verticalAlign=middle;" parent="shDmYxE_p5FblS_esGwc-34" connectable="0" vertex="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="-1" as="offset" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-36" value="1" style="ellipse;whiteSpace=wrap;html=1;align=center;newEdgeStyle={&quot;edgeStyle&quot;:&quot;entityRelationEdgeStyle&quot;,&quot;startArrow&quot;:&quot;none&quot;,&quot;endArrow&quot;:&quot;none&quot;,&quot;segment&quot;:10,&quot;curved&quot;:1,&quot;sourcePerimeterSpacing&quot;:0,&quot;targetPerimeterSpacing&quot;:0};treeFolding=1;treeMoving=1;" parent="1" vertex="1">
+          <mxGeometry x="180" y="70" width="20" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-37" value="2" style="ellipse;whiteSpace=wrap;html=1;align=center;newEdgeStyle={&quot;edgeStyle&quot;:&quot;entityRelationEdgeStyle&quot;,&quot;startArrow&quot;:&quot;none&quot;,&quot;endArrow&quot;:&quot;none&quot;,&quot;segment&quot;:10,&quot;curved&quot;:1,&quot;sourcePerimeterSpacing&quot;:0,&quot;targetPerimeterSpacing&quot;:0};treeFolding=1;treeMoving=1;" parent="1" vertex="1">
+          <mxGeometry x="440" y="70" width="20" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="shDmYxE_p5FblS_esGwc-38" value="3" style="ellipse;whiteSpace=wrap;html=1;align=center;newEdgeStyle={&quot;edgeStyle&quot;:&quot;entityRelationEdgeStyle&quot;,&quot;startArrow&quot;:&quot;none&quot;,&quot;endArrow&quot;:&quot;none&quot;,&quot;segment&quot;:10,&quot;curved&quot;:1,&quot;sourcePerimeterSpacing&quot;:0,&quot;targetPerimeterSpacing&quot;:0};treeFolding=1;treeMoving=1;" parent="1" vertex="1">
+          <mxGeometry x="310" y="20" width="20" height="20" as="geometry" />
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+</mxfile>

BIN
docs/klish-client-server.en.png


+ 138 - 0
docs/klish-exec.en.drawio

@@ -0,0 +1,138 @@
+<mxfile host="Electron" modified="2025-10-03T15:14:42.117Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/23.1.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="IXL83wXFAN6xkHhtYAKP" version="23.1.5" type="device">
+  <diagram name="Страница — 1" id="UFjbOvR3O6Qe7gl92aNO">
+    <mxGraphModel dx="817" dy="1061" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-7" value="" style="whiteSpace=wrap;html=1;align=center;dashed=1;fillStyle=hatch;fillColor=#EBEBEB;" parent="1" vertex="1">
+          <mxGeometry x="40" y="110" width="640" height="290" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-1" value="&lt;font style=&quot;font-size: 16px;&quot;&gt;Client klish&lt;/font&gt;" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="280" y="30" width="240" height="50" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-2" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;Main loop klishd&lt;/font&gt;" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="80" y="150" width="560" height="90" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-3" value="&lt;b&gt;Symbol execution&lt;br&gt;&lt;/b&gt;Fast sync symbol without&amp;nbsp;stdout, stderr output" style="shape=ext;margin=3;double=1;whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="80" y="280" width="160" height="80" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-5" value="&lt;b&gt;Symbol execution&lt;br&gt;&lt;/b&gt;Sync symbol with&lt;br&gt;&amp;nbsp;stdout, stderr output" style="shape=ext;margin=3;double=1;whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="280" y="280" width="160" height="80" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-6" value="&lt;b&gt;Symbol execution&lt;br&gt;&lt;/b&gt;Async symbol" style="shape=ext;margin=3;double=1;whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="480" y="430" width="160" height="80" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-8" value="Special process that gets sync symbol&#39;s&lt;br&gt;stdout, stderr output&lt;div&gt;&lt;br/&gt;&lt;/div&gt;" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="280" y="430" width="160" height="80" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-9" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.167;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="W7FwdtZu-5o2vGSCx_RX-1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="390" y="810" as="sourcePoint" />
+            <mxPoint x="320" y="150" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-10" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.167;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="320" y="80" as="sourcePoint" />
+            <mxPoint x="320" y="150" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-11" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.716;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.835;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W7FwdtZu-5o2vGSCx_RX-2" target="W7FwdtZu-5o2vGSCx_RX-1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="480" y="80" as="sourcePoint" />
+            <mxPoint x="500" y="90" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-12" value="Serving server klishd" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="40" y="110" width="200" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-13" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.144;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="W7FwdtZu-5o2vGSCx_RX-2" target="W7FwdtZu-5o2vGSCx_RX-3" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="300" y="270" as="sourcePoint" />
+            <mxPoint x="350" y="220" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-15" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.144;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="360.5" y="240" as="sourcePoint" />
+            <mxPoint x="359.5" y="280" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-16" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.857;exitY=0.989;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="W7FwdtZu-5o2vGSCx_RX-2" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="560.5" y="390" as="sourcePoint" />
+            <mxPoint x="559.5" y="430" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-17" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.144;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="W7FwdtZu-5o2vGSCx_RX-8" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="360.5" y="360" as="sourcePoint" />
+            <mxPoint x="359.5" y="400" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-18" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="W7FwdtZu-5o2vGSCx_RX-6" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="300" y="270" as="sourcePoint" />
+            <mxPoint x="640" y="200" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="560" y="540" />
+              <mxPoint x="710" y="540" />
+              <mxPoint x="710" y="200" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-19" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.999;entryY=0.315;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W7FwdtZu-5o2vGSCx_RX-8" target="W7FwdtZu-5o2vGSCx_RX-2" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="610" y="520" as="sourcePoint" />
+            <mxPoint x="700" y="190" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="360" y="550" />
+              <mxPoint x="720" y="550" />
+              <mxPoint x="720" y="180" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-20" value="command, stdin" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="320" y="80" width="90" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-21" value="stdout, stderr" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="485" y="80" width="85" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-23" value="symbol (sym)" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="160" y="250" width="90" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-24" value="symbol (sym)" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="360" y="250" width="90" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-25" value="symbol (sym),&lt;br&gt;stdin" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="560" y="250" width="90" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-26" value="fork()" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="360" y="400" width="40" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-27" value="fork()" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="560" y="400" width="40" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-28" value="stdout, stderr" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="360" y="530" width="80" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-29" value="stdout, stderr" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="560" y="519" width="80" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-32" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.325;entryY=0.981;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W7FwdtZu-5o2vGSCx_RX-3" target="W7FwdtZu-5o2vGSCx_RX-2" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="300" y="350" as="sourcePoint" />
+            <mxPoint x="350" y="300" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="160" y="390" />
+              <mxPoint x="260" y="390" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="W7FwdtZu-5o2vGSCx_RX-33" value="test string" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="160" y="360" width="90" height="30" as="geometry" />
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+</mxfile>

BIN
docs/klish-exec.en.png


+ 186 - 0
docs/klish-filters.en.drawio

@@ -0,0 +1,186 @@
+<mxfile host="Electron" modified="2025-10-03T15:19:35.457Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/23.1.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="EVAkMbbNCVDUyxnQ8Fnf" version="23.1.5" type="device">
+  <diagram name="Страница — 1" id="QKaND1stN5zPCuOhzsyY">
+    <mxGraphModel dx="1644" dy="1061" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-1" value="Sync symbol with&lt;br&gt;stdout, stderr output" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="80" y="50" width="160" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-2" value="Async symbol (filter)" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="320" y="50" width="160" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-3" value="Async symbol (filter)" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="560" y="50" width="160" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-4" value="Async symbol" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="80" y="190" width="160" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-5" value="Async symbol (filter)" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="320" y="190" width="160" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-20" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="nMiAAU5giXeKPv7Q_GYp-1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint y="80" as="sourcePoint" />
+            <mxPoint x="440" y="230" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-22" value="global&lt;br&gt;stdin" style="edgeLabel;resizable=0;html=1;;align=left;verticalAlign=bottom;" parent="nMiAAU5giXeKPv7Q_GYp-20" connectable="0" vertex="1">
+          <mxGeometry x="-1" relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-23" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint y="220" as="sourcePoint" />
+            <mxPoint x="80" y="219.67000000000002" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-24" value="global&lt;br&gt;stdin" style="edgeLabel;resizable=0;html=1;;align=left;verticalAlign=bottom;" parent="nMiAAU5giXeKPv7Q_GYp-23" connectable="0" vertex="1">
+          <mxGeometry x="-1" relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-25" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="240" y="70" as="sourcePoint" />
+            <mxPoint x="320" y="70" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-27" value="stdout" style="edgeLabel;resizable=0;html=1;;align=left;verticalAlign=bottom;" parent="nMiAAU5giXeKPv7Q_GYp-25" connectable="0" vertex="1">
+          <mxGeometry x="-1" relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-28" value="stdin" style="edgeLabel;resizable=0;html=1;;align=right;verticalAlign=bottom;" parent="nMiAAU5giXeKPv7Q_GYp-25" connectable="0" vertex="1">
+          <mxGeometry x="1" relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-31" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="480" y="70" as="sourcePoint" />
+            <mxPoint x="560" y="70" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-32" value="stdout" style="edgeLabel;resizable=0;html=1;;align=left;verticalAlign=bottom;" parent="nMiAAU5giXeKPv7Q_GYp-31" connectable="0" vertex="1">
+          <mxGeometry x="-1" relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-33" value="stdin" style="edgeLabel;resizable=0;html=1;;align=right;verticalAlign=bottom;" parent="nMiAAU5giXeKPv7Q_GYp-31" connectable="0" vertex="1">
+          <mxGeometry x="1" relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-34" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="240" y="210.00000000000003" as="sourcePoint" />
+            <mxPoint x="320" y="210.00000000000003" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-35" value="stdout" style="edgeLabel;resizable=0;html=1;;align=left;verticalAlign=bottom;" parent="nMiAAU5giXeKPv7Q_GYp-34" connectable="0" vertex="1">
+          <mxGeometry x="-1" relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-36" value="stdin" style="edgeLabel;resizable=0;html=1;;align=right;verticalAlign=bottom;" parent="nMiAAU5giXeKPv7Q_GYp-34" connectable="0" vertex="1">
+          <mxGeometry x="1" relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-38" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="720" y="70" as="sourcePoint" />
+            <mxPoint x="800" y="70" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-39" value="global&lt;br&gt;stdout" style="edgeLabel;resizable=0;html=1;;align=left;verticalAlign=bottom;" parent="nMiAAU5giXeKPv7Q_GYp-38" connectable="0" vertex="1">
+          <mxGeometry x="-1" relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-40" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="480" y="210" as="sourcePoint" />
+            <mxPoint x="800" y="210" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-41" value="global&lt;br&gt;stdout" style="edgeLabel;resizable=0;html=1;;align=left;verticalAlign=bottom;" parent="nMiAAU5giXeKPv7Q_GYp-40" connectable="0" vertex="1">
+          <mxGeometry x="-1" relative="1" as="geometry">
+            <mxPoint as="offset" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-44" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="240" y="90" as="sourcePoint" />
+            <mxPoint x="800" y="140" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="280" y="90" />
+              <mxPoint x="280" y="140" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-46" value="stderr" style="edgeLabel;resizable=0;html=1;;align=left;verticalAlign=bottom;" parent="nMiAAU5giXeKPv7Q_GYp-44" connectable="0" vertex="1">
+          <mxGeometry x="-1" relative="1" as="geometry">
+            <mxPoint as="offset" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-48" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="480" y="90" as="sourcePoint" />
+            <mxPoint x="520" y="140" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="520" y="90" />
+              <mxPoint x="520" y="140" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-49" value="stderr" style="edgeLabel;resizable=0;html=1;;align=left;verticalAlign=bottom;" parent="nMiAAU5giXeKPv7Q_GYp-48" connectable="0" vertex="1">
+          <mxGeometry x="-1" relative="1" as="geometry">
+            <mxPoint as="offset" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-50" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="720" y="90" as="sourcePoint" />
+            <mxPoint x="760" y="140" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="760" y="90" />
+              <mxPoint x="760" y="140" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-51" value="stderr" style="edgeLabel;resizable=0;html=1;;align=left;verticalAlign=bottom;" parent="nMiAAU5giXeKPv7Q_GYp-50" connectable="0" vertex="1">
+          <mxGeometry x="-1" relative="1" as="geometry">
+            <mxPoint as="offset" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-52" value="global&lt;br&gt;stderr" style="edgeLabel;resizable=0;html=1;;align=left;verticalAlign=bottom;" parent="1" connectable="0" vertex="1">
+          <mxGeometry x="760" y="130" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-53" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="240" y="230" as="sourcePoint" />
+            <mxPoint x="800" y="280" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="280" y="230" />
+              <mxPoint x="280" y="280" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-54" value="stderr" style="edgeLabel;resizable=0;html=1;;align=left;verticalAlign=bottom;" parent="nMiAAU5giXeKPv7Q_GYp-53" connectable="0" vertex="1">
+          <mxGeometry x="-1" relative="1" as="geometry">
+            <mxPoint as="offset" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-55" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="480" y="230" as="sourcePoint" />
+            <mxPoint x="520" y="280" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="520" y="230" />
+              <mxPoint x="520" y="280" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-56" value="stderr" style="edgeLabel;resizable=0;html=1;;align=left;verticalAlign=bottom;" parent="nMiAAU5giXeKPv7Q_GYp-55" connectable="0" vertex="1">
+          <mxGeometry x="-1" relative="1" as="geometry">
+            <mxPoint as="offset" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-57" value="global&lt;br&gt;stderr" style="edgeLabel;resizable=0;html=1;;align=left;verticalAlign=bottom;" parent="1" connectable="0" vertex="1">
+          <mxGeometry x="760" y="270" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-58" value="Variant 1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry width="60" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="nMiAAU5giXeKPv7Q_GYp-59" value="Variant 2" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry y="140" width="60" height="30" as="geometry" />
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+</mxfile>

BIN
docs/klish-filters.en.png


+ 226 - 0
docs/klish-libs.en.drawio

@@ -0,0 +1,226 @@
+<mxfile host="Electron" modified="2025-10-03T15:26:06.335Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/23.1.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="kUOWdxqAWfneLLU9mf0i" version="23.1.5" type="device">
+  <diagram name="Страница — 1" id="ofldxw9UevGxW0dXk6p2">
+    <mxGraphModel dx="986" dy="1281" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="FAqAWKsCC-taZUfcjODj-18" value="" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.patternFillRect;fillStyle=diag;step=5;fillStrokeWidth=0.2;fillStrokeColor=#dddddd;dashed=1;" parent="1" vertex="1">
+          <mxGeometry x="20" y="40" width="500" height="180" as="geometry" />
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-1" value="Server klishd" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="160" y="80" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-2" value="Client klish" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="40" y="80" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-3" value="libtinyrl&lt;br&gt;library" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="40" y="160" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-4" value="libklish&lt;br&gt;library" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="160" y="160" width="140" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-7" value="libfaux library" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="40" y="280" width="190" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-9" value="libklish-plugin-lua&lt;br&gt;functions plugin" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="400" y="80" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-11" value="Плагин БД&lt;br&gt;libklish-db-libxml2" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="280" y="80" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-13" value="libklish-plugin-sysrepo&lt;br&gt;external functions plugin" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="540" y="80.48" width="150" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-19" value="klish source-code tree" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="20" y="40" width="170" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-20" value="libyang library" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="490" y="280" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-21" value="Библиотека libsysrepo" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="610" y="280" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-22" value="liblua library" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="370" y="280" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-23" value="libxml2 library" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="250" y="280" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-25" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.4;exitY=0.981;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.12;entryY=0.661;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="FAqAWKsCC-taZUfcjODj-2" target="FAqAWKsCC-taZUfcjODj-18" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="430" y="250" as="sourcePoint" />
+            <mxPoint x="480" y="200" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-26" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.071;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="FAqAWKsCC-taZUfcjODj-4" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="110" y="120" as="sourcePoint" />
+            <mxPoint x="175.5" y="157.9799999999999" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="110" y="150" />
+              <mxPoint x="170" y="150" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-29" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.218;exitY=0.981;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.152;entryY=-0.006;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="FAqAWKsCC-taZUfcjODj-1" target="FAqAWKsCC-taZUfcjODj-4" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="410" y="250" as="sourcePoint" />
+            <mxPoint x="460" y="200" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-30" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.13;exitY=0.963;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="579.5" y="119.99999999999999" as="sourcePoint" />
+            <mxPoint x="290" y="160" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="580" y="150" />
+              <mxPoint x="290" y="150" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-31" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="FAqAWKsCC-taZUfcjODj-21" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="660" y="120.48" as="sourcePoint" />
+            <mxPoint x="660" y="278.48" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-32" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.543;exitY=1.013;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="FAqAWKsCC-taZUfcjODj-13" target="FAqAWKsCC-taZUfcjODj-20" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="380" y="250.48" as="sourcePoint" />
+            <mxPoint x="541.5" y="280" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="621" y="270" />
+              <mxPoint x="540" y="270" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-33" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.7;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.4;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="FAqAWKsCC-taZUfcjODj-9" target="FAqAWKsCC-taZUfcjODj-22" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="340" y="250" as="sourcePoint" />
+            <mxPoint x="390" y="200" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-34" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.619;exitY=0.442;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.795;entryY=-0.012;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="FAqAWKsCC-taZUfcjODj-18" target="FAqAWKsCC-taZUfcjODj-23" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="340" y="250" as="sourcePoint" />
+            <mxPoint x="390" y="200" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-36" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="420" y="120" as="sourcePoint" />
+            <mxPoint x="260" y="160" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="420" y="140" />
+              <mxPoint x="260" y="140" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-38" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.424;entryY=0.656;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.205;exitY=1.013;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="FAqAWKsCC-taZUfcjODj-11" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="300" y="130" as="sourcePoint" />
+            <mxPoint x="235.75" y="160.14000000000004" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="300" y="132" />
+              <mxPoint x="235.75" y="132.06" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-40" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.4;exitY=1.013;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="FAqAWKsCC-taZUfcjODj-13" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="340" y="250" as="sourcePoint" />
+            <mxPoint x="210" y="280" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="600" y="260" />
+              <mxPoint x="210" y="260" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-42" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.822;exitY=0.45;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.842;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="FAqAWKsCC-taZUfcjODj-18" target="FAqAWKsCC-taZUfcjODj-7" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="320" y="250" as="sourcePoint" />
+            <mxPoint x="370" y="200" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="430" y="250" />
+              <mxPoint x="200" y="250" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-43" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.783;entryY=-0.012;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="FAqAWKsCC-taZUfcjODj-7" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="320" y="120" as="sourcePoint" />
+            <mxPoint x="370" y="200" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="320" y="240" />
+              <mxPoint x="189" y="240" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-44" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.583;entryY=-0.012;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="FAqAWKsCC-taZUfcjODj-7" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="171" y="120" as="sourcePoint" />
+            <mxPoint x="180" y="200" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="171" y="130" />
+              <mxPoint x="150" y="130" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-45" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.051;entryY=-0.006;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="FAqAWKsCC-taZUfcjODj-7" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="50" y="120" as="sourcePoint" />
+            <mxPoint x="180" y="200" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="50" y="140" />
+              <mxPoint x="30" y="140" />
+              <mxPoint x="30" y="240" />
+              <mxPoint x="50" y="240" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-46" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.08;exitY=0.889;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.105;entryY=0.013;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="FAqAWKsCC-taZUfcjODj-18" target="FAqAWKsCC-taZUfcjODj-7" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="130" y="190" as="sourcePoint" />
+            <mxPoint x="180" y="140" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-47" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.141;exitY=1.006;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.737;entryY=-0.006;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="FAqAWKsCC-taZUfcjODj-4" target="FAqAWKsCC-taZUfcjODj-7" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="130" y="200" as="sourcePoint" />
+            <mxPoint x="180" y="150" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-48" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.46;exitY=0.224;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.4;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="250" y="80" as="sourcePoint" />
+            <mxPoint x="320" y="79.68" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="250" y="70" />
+              <mxPoint x="320" y="70" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-49" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.427;exitY=0.221;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="230" y="79.81999999999998" as="sourcePoint" />
+            <mxPoint x="430" y="80" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="230" y="60" />
+              <mxPoint x="430" y="60" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="FAqAWKsCC-taZUfcjODj-50" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.427;exitY=0.221;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="210" y="80.29999999999998" as="sourcePoint" />
+            <mxPoint x="600" y="80" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="210" y="50" />
+              <mxPoint x="600" y="50" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+</mxfile>

BIN
docs/klish-libs.en.png


+ 88 - 0
docs/klish-plugin-db.en.drawio

@@ -0,0 +1,88 @@
+<mxfile host="Electron" modified="2025-10-03T15:34:20.237Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/23.1.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="GRMOpRuiFd3e2Mq3Cf7D" version="23.1.5" type="device">
+  <diagram name="Страница — 1" id="OUudB_qsvCB226KxlGIW">
+    <mxGraphModel dx="817" dy="1061" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-1" value="" style="whiteSpace=wrap;html=1;align=center;dashed=1;fillStyle=auto;" parent="1" vertex="1">
+          <mxGeometry x="40" y="40" width="420" height="220" as="geometry" />
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-2" value="Listening server klishd" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="40" y="40" width="160" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-4" value="The kscheme.&amp;nbsp;&lt;br&gt;Internal representation of command configuration" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="60" y="80" width="100" height="160" as="geometry" />
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-5" value="Промежуточное представление конфигурации команд ischeme" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="200" y="80" width="100" height="160" as="geometry" />
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-6" value="&amp;nbsp;libxml2&lt;br&gt;database plugin" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="340" y="80" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-7" value="libexpat&lt;br&gt;database plugin" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="340" y="140.5" width="100" height="39" as="geometry" />
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-8" value="libroxml&lt;br&gt;database plugin" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="340" y="200" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-10" value="" style="whiteSpace=wrap;html=1;align=center;dashed=1;fillStyle=auto;" parent="1" vertex="1">
+          <mxGeometry x="520" y="40" width="160" height="220" as="geometry" />
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-11" value="XML commands configuration" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+          <mxGeometry x="520" y="40" width="160" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-12" value="XML config file 1" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="550" y="80" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-13" value="&lt;font style=&quot;font-size: 32px;&quot;&gt;...&lt;/font&gt;" style="whiteSpace=wrap;html=1;align=center;strokeColor=none;" parent="1" vertex="1">
+          <mxGeometry x="550" y="130" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-14" value="XML config file N" style="whiteSpace=wrap;html=1;align=center;" parent="1" vertex="1">
+          <mxGeometry x="550" y="200" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-15" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="lojdyQg56bxN2ZcsIYBC-6" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="520" y="100" as="sourcePoint" />
+            <mxPoint x="440" y="170" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-16" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="520" y="159.88" as="sourcePoint" />
+            <mxPoint x="440" y="159.88" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-17" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="520" y="219.88" as="sourcePoint" />
+            <mxPoint x="440" y="219.88" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-18" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="340" y="160" as="sourcePoint" />
+            <mxPoint x="300" y="159.88" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-19" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="340" y="220" as="sourcePoint" />
+            <mxPoint x="300" y="219.88" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-20" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="340" y="100" as="sourcePoint" />
+            <mxPoint x="300" y="99.88" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="lojdyQg56bxN2ZcsIYBC-21" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="200" y="160" as="sourcePoint" />
+            <mxPoint x="160" y="159.88" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+</mxfile>

BIN
docs/klish-plugin-db.en.png