pi-hermes-memory 0.6.7 → 0.6.8

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.
@@ -1 +1 @@
1
- <svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 2328.02px; background-color: white;" viewBox="0 0 2328.0234375 628" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#333;color:#333;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#333333;stroke-width:1px;}#my-svg .flowchart-link{stroke:#333333;fill:none;}#my-svg .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#my-svg .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#my-svg .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#my-svg .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#my-svg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#my-svg .icon-shape .label rect,#my-svg .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg .node .neo-node{stroke:#9370DB;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node path{stroke:#9370DB;stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#9370DB;filter:none;}#my-svg [data-look="neo"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"/></marker><marker id="my-svg_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"/><g class="edgeLabels"/><g class="nodes"><g class="root" transform="translate(0, 0)"><g class="clusters"><g class="cluster" id="my-svg-pi-hermes-memory/src/" data-look="classic"><rect style="" x="8" y="8" width="2312.0234375" height="612"/><g class="cluster-label" transform="translate(1077.62109375, 8)"><foreignObject width="172.78125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"><span class="nodeLabel"><p>pi-hermes-memory/src/</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path d="M1028.68,89.754L869.036,101.629C709.393,113.503,390.107,137.251,230.464,161.876C70.82,186.5,70.82,212,70.82,237.5C70.82,263,70.82,288.5,139.244,311.637C207.667,334.774,344.515,355.547,412.938,365.934L481.362,376.321" id="my-svg-L_IDX_MS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_MS_0" data-points="W3sieCI6MTAyOC42Nzk2ODc1LCJ5Ijo4OS43NTQyNjEzNjM2MzYzNn0seyJ4Ijo3MC44MjAzMTI1LCJ5IjoxNjF9LHsieCI6NzAuODIwMzEyNSwieSI6MjM3LjV9LHsieCI6NzAuODIwMzEyNSwieSI6MzE0fSx7IngiOjQ4NS4zMTY0MDYyNSwieSI6Mzc2LjkyMDkyNTM0NzQ1MX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1102.292,123.5L1102.768,129.75C1103.244,136,1104.196,148.5,1104.672,167.5C1105.148,186.5,1105.148,212,1105.148,237.5C1105.148,263,1105.148,288.5,1184.468,312.191C1263.789,335.882,1422.429,357.763,1501.749,368.704L1581.069,379.645" id="my-svg-L_IDX_SS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_SS_0" data-points="W3sieCI6MTEwMi4yOTE1MTM0ODAzOTIzLCJ5IjoxMjMuNX0seyJ4IjoxMTA1LjE0ODQzNzUsInkiOjE2MX0seyJ4IjoxMTA1LjE0ODQzNzUsInkiOjIzNy41fSx7IngiOjExMDUuMTQ4NDM3NSwieSI6MzE0fSx7IngiOjE1ODUuMDMxMjUsInkiOjM4MC4xOTE2NjUxNDA2NTE2NX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1028.68,90.495L890.223,102.246C751.766,113.997,474.852,137.498,336.395,154.833C197.938,172.167,197.938,183.333,197.938,188.917L197.938,194.5" id="my-svg-L_IDX_MT_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_MT_0" data-points="W3sieCI6MTAyOC42Nzk2ODc1LCJ5Ijo5MC40OTUyNDE2ODU5NTEyN30seyJ4IjoxOTcuOTM3NSwieSI6MTYxfSx7IngiOjE5Ny45Mzc1LCJ5IjoxOTguNX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1169.961,89.383L1342.641,101.319C1515.32,113.255,1860.68,137.128,2033.359,154.647C2206.039,172.167,2206.039,183.333,2206.039,188.917L2206.039,194.5" id="my-svg-L_IDX_ST_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_ST_0" data-points="W3sieCI6MTE2OS45NjA5Mzc1LCJ5Ijo4OS4zODI5MDk3ODM5ODk4M30seyJ4IjoyMjA2LjAzOTA2MjUsInkiOjE2MX0seyJ4IjoyMjA2LjAzOTA2MjUsInkiOjE5OC41fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1028.68,92.781L931.693,104.151C834.706,115.521,640.732,138.26,543.745,155.214C446.758,172.167,446.758,183.333,446.758,188.917L446.758,194.5" id="my-svg-L_IDX_BR_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_BR_0" data-points="W3sieCI6MTAyOC42Nzk2ODc1LCJ5Ijo5Mi43ODEyMTEwOTA4OTE2N30seyJ4Ijo0NDYuNzU3ODEyNSwieSI6MTYxfSx7IngiOjQ0Ni43NTc4MTI1LCJ5IjoxOTguNX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1028.68,98.128L974.363,108.607C920.047,119.085,811.414,140.043,757.098,156.105C702.781,172.167,702.781,183.333,702.781,188.917L702.781,194.5" id="my-svg-L_IDX_AC_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_AC_0" data-points="W3sieCI6MTAyOC42Nzk2ODc1LCJ5Ijo5OC4xMjc5MzMwOTI5NzI0fSx7IngiOjcwMi43ODEyNSwieSI6MTYxfSx7IngiOjcwMi43ODEyNSwieSI6MTk4LjV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1028.868,123.5L1017.577,129.75C1006.287,136,983.706,148.5,972.415,160.333C961.125,172.167,961.125,183.333,961.125,188.917L961.125,194.5" id="my-svg-L_IDX_CD_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_CD_0" data-points="W3sieCI6MTAyOC44Njc4MDAyNDUwOTgxLCJ5IjoxMjMuNX0seyJ4Ijo5NjEuMTI1LCJ5IjoxNjF9LHsieCI6OTYxLjEyNSwieSI6MTk4LjV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1169.961,90.647L1304.72,102.372C1439.479,114.098,1708.997,137.549,1843.757,154.858C1978.516,172.167,1978.516,183.333,1978.516,188.917L1978.516,194.5" id="my-svg-L_IDX_SA_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_SA_0" data-points="W3sieCI6MTE2OS45NjA5Mzc1LCJ5Ijo5MC42NDY1Mzg0NzE3OTE1fSx7IngiOjE5NzguNTE1NjI1LCJ5IjoxNjF9LHsieCI6MTk3OC41MTU2MjUsInkiOjE5OC41fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1169.961,121.135L1182.772,127.78C1195.583,134.424,1221.206,147.712,1234.017,159.939C1246.828,172.167,1246.828,183.333,1246.828,188.917L1246.828,194.5" id="my-svg-L_IDX_SF_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_SF_0" data-points="W3sieCI6MTE2OS45NjA5Mzc1LCJ5IjoxMjEuMTM1NDAwNjY3MzM3NTR9LHsieCI6MTI0Ni44MjgxMjUsInkiOjE2MX0seyJ4IjoxMjQ2LjgyODEyNSwieSI6MTk4LjV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1169.961,98.076L1224.53,108.563C1279.099,119.051,1388.237,140.025,1442.806,156.096C1497.375,172.167,1497.375,183.333,1497.375,188.917L1497.375,194.5" id="my-svg-L_IDX_IN_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_IN_0" data-points="W3sieCI6MTE2OS45NjA5Mzc1LCJ5Ijo5OC4wNzYwNDM2NDk3ODExNn0seyJ4IjoxNDk3LjM3NSwieSI6MTYxfSx7IngiOjE0OTcuMzc1LCJ5IjoxOTguNX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1169.961,92.993L1264.236,104.328C1358.51,115.662,1547.06,138.331,1641.335,155.249C1735.609,172.167,1735.609,183.333,1735.609,188.917L1735.609,194.5" id="my-svg-L_IDX_SC_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_SC_0" data-points="W3sieCI6MTE2OS45NjA5Mzc1LCJ5Ijo5Mi45OTMwMDc1NTExMDgxMX0seyJ4IjoxNzM1LjYwOTM3NSwieSI6MTYxfSx7IngiOjE3MzUuNjA5Mzc1LCJ5IjoxOTguNX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M197.938,276.5L197.938,282.75C197.938,289,197.938,301.5,245.181,317.341C292.424,333.181,386.91,352.363,434.153,361.954L481.396,371.544" id="my-svg-L_MT_MS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MT_MS_0" data-points="W3sieCI6MTk3LjkzNzUsInkiOjI3Ni41fSx7IngiOjE5Ny45Mzc1LCJ5IjozMTR9LHsieCI6NDg1LjMxNjQwNjI1LCJ5IjozNzIuMzQwMjgwMjk3Mjk3NTd9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M2139.974,276.5L2129.386,282.75C2118.799,289,2097.624,301.5,2030.701,318.093C1963.778,334.686,1851.106,355.371,1794.77,365.714L1738.434,376.057" id="my-svg-L_ST_SS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_ST_SS_0" data-points="W3sieCI6MjEzOS45NzM2NTE5NjA3ODQsInkiOjI3Ni41fSx7IngiOjIwNzYuNDQ5MjE4NzUsInkiOjMxNH0seyJ4IjoxNzM0LjUsInkiOjM3Ni43NzkzMjYxNTIzNzUwNn1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M574.77,429.5L574.77,435.75C574.77,442,574.77,454.5,593.25,467.444C611.731,480.389,648.692,493.778,667.173,500.472L685.653,507.167" id="my-svg-L_MS_CS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MS_CS_0" data-points="W3sieCI6NTc0Ljc2OTUzMTI1LCJ5Ijo0MjkuNX0seyJ4Ijo1NzQuNzY5NTMxMjUsInkiOjQ2N30seyJ4Ijo2ODkuNDE0MDYyNSwieSI6NTA4LjUyOTI5OTE1MDk5MDV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1659.766,429.5L1659.766,435.75C1659.766,442,1659.766,454.5,1530.884,472.033C1402.003,489.566,1144.24,512.133,1015.358,523.416L886.477,534.699" id="my-svg-L_SS_CS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SS_CS_0" data-points="W3sieCI6MTY1OS43NjU2MjUsInkiOjQyOS41fSx7IngiOjE2NTkuNzY1NjI1LCJ5Ijo0Njd9LHsieCI6ODgyLjQ5MjE4NzUsInkiOjUzNS4wNDgyNTc0NTY1NDgyfV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M446.758,276.5L446.758,282.75C446.758,289,446.758,301.5,456.644,313.658C466.53,325.816,486.303,337.632,496.189,343.54L506.075,349.448" id="my-svg-L_BR_MS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_BR_MS_0" data-points="W3sieCI6NDQ2Ljc1NzgxMjUsInkiOjI3Ni41fSx7IngiOjQ0Ni43NTc4MTI1LCJ5IjozMTR9LHsieCI6NTA5LjUwODY1NTAyNDUwOTg0LCJ5IjozNTEuNX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M702.781,276.5L702.781,282.75C702.781,289,702.781,301.5,692.895,313.658C683.009,325.816,663.236,337.632,653.35,343.54L643.464,349.448" id="my-svg-L_AC_MS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_AC_MS_0" data-points="W3sieCI6NzAyLjc4MTI1LCJ5IjoyNzYuNX0seyJ4Ijo3MDIuNzgxMjUsInkiOjMxNH0seyJ4Ijo2NDAuMDMwNDA3NDc1NDkwMiwieSI6MzUxLjV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M961.125,276.5L961.125,282.75C961.125,289,961.125,301.5,912.295,317.418C863.465,333.337,765.806,352.674,716.976,362.342L668.146,372.011" id="my-svg-L_CD_MS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_CD_MS_0" data-points="W3sieCI6OTYxLjEyNSwieSI6Mjc2LjV9LHsieCI6OTYxLjEyNSwieSI6MzE0fSx7IngiOjY2NC4yMjI2NTYyNSwieSI6MzcyLjc4NzkwNjgyMTU1OTY2fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1879.977,245.474L1738.837,256.895C1597.697,268.316,1315.417,291.158,1113.449,312.731C911.481,334.304,789.824,354.608,728.996,364.76L668.168,374.912" id="my-svg-L_SA_MS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SA_MS_0" data-points="W3sieCI6MTg3OS45NzY1NjI1LCJ5IjoyNDUuNDczNzc0NTY5NTU1MDJ9LHsieCI6MTAzMy4xMzY3MTg3NSwieSI6MzE0fSx7IngiOjY2NC4yMjI2NTYyNSwieSI6Mzc1LjU3MDU2Mjk2OTc4MDY3fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M2038.639,276.5L2048.274,282.75C2057.909,289,2077.179,301.5,2027.146,318.203C1977.113,334.906,1857.776,355.812,1798.108,366.265L1738.44,376.718" id="my-svg-L_SA_SS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SA_SS_0" data-points="W3sieCI6MjAzOC42Mzg2MzM1Nzg0MzE0LCJ5IjoyNzYuNX0seyJ4IjoyMDk2LjQ0OTIxODc1LCJ5IjozMTR9LHsieCI6MTczNC41LCJ5IjozNzcuNDA3NzI5NjAyNTYxOX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_IDX_MS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_SS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_MT_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_ST_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_BR_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_AC_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_CD_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_SA_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_SF_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_IN_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_SC_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_MT_MS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_ST_SS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_MS_CS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_SS_CS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_BR_MS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_AC_MS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_CD_MS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_SA_MS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_SA_SS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default" id="my-svg-flowchart-IDX-0" data-look="classic" transform="translate(1099.3203125, 84.5)"><rect class="basic label-container" style="fill:#e94560 !important;stroke:#fff !important" x="-70.640625" y="-39" width="141.28125" height="78"/><g class="label" style="color:#fff !important" transform="translate(-40.640625, -24)"><rect/><foreignObject width="81.28125" height="48"><div style="color: rgb(255, 255, 255) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#fff !important" class="nodeLabel"><p>index.ts<br /><i>Entry point</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-MS-1" data-look="classic" transform="translate(574.76953125, 390.5)"><rect class="basic label-container" style="fill:#0f3460 !important;stroke:#fff !important" x="-89.453125" y="-39" width="178.90625" height="78"/><g class="label" style="color:#fff !important" transform="translate(-59.453125, -24)"><rect/><foreignObject width="118.90625" height="48"><div style="color: rgb(255, 255, 255) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#fff !important" class="nodeLabel"><p>memory-store.ts<br /><i>Memory CRUD</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SS-2" data-look="classic" transform="translate(1659.765625, 390.5)"><rect class="basic label-container" style="fill:#0f3460 !important;stroke:#fff !important" x="-74.734375" y="-39" width="149.46875" height="78"/><g class="label" style="color:#fff !important" transform="translate(-44.734375, -24)"><rect/><foreignObject width="89.46875" height="48"><div style="color: rgb(255, 255, 255) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#fff !important" class="nodeLabel"><p>skill-store.ts<br /><i>Skill CRUD</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-MT-3" data-look="classic" transform="translate(197.9375, 237.5)"><rect class="basic label-container" style="" x="-92.1171875" y="-39" width="184.234375" height="78"/><g class="label" style="" transform="translate(-62.1171875, -24)"><rect/><foreignObject width="124.234375" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>memory-tool.ts<br /><i>Memory LLM tool</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-ST-4" data-look="classic" transform="translate(2206.0390625, 237.5)"><rect class="basic label-container" style="" x="-78.984375" y="-39" width="157.96875" height="78"/><g class="label" style="" transform="translate(-48.984375, -24)"><rect/><foreignObject width="97.96875" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>skill-tool.ts<br /><i>Skill LLM tool</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-BR-6" data-look="classic" transform="translate(446.7578125, 237.5)"><rect class="basic label-container" style="" x="-106.703125" y="-39" width="213.40625" height="78"/><g class="label" style="" transform="translate(-76.703125, -24)"><rect/><foreignObject width="153.40625" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>background-review.ts<br /><i>Learning loop</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-AC-7" data-look="classic" transform="translate(702.78125, 237.5)"><rect class="basic label-container" style="" x="-99.3203125" y="-39" width="198.640625" height="78"/><g class="label" style="" transform="translate(-69.3203125, -24)"><rect/><foreignObject width="138.640625" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>auto-consolidate.ts<br /><i>Memory merge</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-CD-8" data-look="classic" transform="translate(961.125, 237.5)"><rect class="basic label-container" style="" x="-109.0234375" y="-39" width="218.046875" height="78"/><g class="label" style="" transform="translate(-79.0234375, -24)"><rect/><foreignObject width="158.046875" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>correction-detector.ts<br /><i>Instant save</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SA-9" data-look="classic" transform="translate(1978.515625, 237.5)"><rect class="basic label-container" style="" x="-98.5390625" y="-39" width="197.078125" height="78"/><g class="label" style="" transform="translate(-68.5390625, -24)"><rect/><foreignObject width="137.078125" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>skill-auto-trigger.ts<br /><i>Skill extraction</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SF-10" data-look="classic" transform="translate(1246.828125, 237.5)"><rect class="basic label-container" style="" x="-106.6796875" y="-39" width="213.359375" height="78"/><g class="label" style="" transform="translate(-76.6796875, -24)"><rect/><foreignObject width="153.359375" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>session-flush.ts<br /><i>Pre-compaction flush</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-IN-11" data-look="classic" transform="translate(1497.375, 237.5)"><rect class="basic label-container" style="" x="-93.8671875" y="-39" width="187.734375" height="78"/><g class="label" style="" transform="translate(-63.8671875, -24)"><rect/><foreignObject width="127.734375" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>insights.ts<br /><i>/memory-insights</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SC-12" data-look="classic" transform="translate(1735.609375, 237.5)"><rect class="basic label-container" style="" x="-94.3671875" y="-39" width="188.734375" height="78"/><g class="label" style="" transform="translate(-64.3671875, -24)"><rect/><foreignObject width="128.734375" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>skills-command.ts<br /><i>/memory-skills</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-CS-5" data-look="classic" transform="translate(785.953125, 543.5)"><rect class="basic label-container" style="fill:#ff6600 !important;stroke:#fff !important" x="-96.5390625" y="-39" width="193.078125" height="78"/><g class="label" style="color:#fff !important" transform="translate(-66.5390625, -24)"><rect/><foreignObject width="133.078125" height="48"><div style="color: rgb(255, 255, 255) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#fff !important" class="nodeLabel"><p>content-scanner.ts<br /><i>Security</i></p></span></div></foreignObject></g></g></g></g></g></g></g><defs><filter id="my-svg-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><defs><filter id="my-svg-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs></svg>
1
+ <svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 2967.71px; background-color: white;" viewBox="0 0 2967.70703125 676" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#333;color:#333;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#333333;stroke-width:1px;}#my-svg .flowchart-link{stroke:#333333;fill:none;}#my-svg .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#my-svg .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#my-svg .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#my-svg .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#my-svg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#my-svg .icon-shape .label rect,#my-svg .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg .node .neo-node{stroke:#9370DB;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node path{stroke:#9370DB;stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#9370DB;filter:none;}#my-svg [data-look="neo"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"/></marker><marker id="my-svg_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"/><g class="edgeLabels"/><g class="nodes"><g class="root" transform="translate(0, 0)"><g class="clusters"><g class="cluster" id="my-svg-pi-hermes-memory/src/" data-look="classic"><rect style="" x="8" y="8" width="2951.70703125" height="660"/><g class="cluster-label" transform="translate(1397.462890625, 8)"><foreignObject width="172.78125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"><span class="nodeLabel"><p>pi-hermes-memory/src/</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path d="M1337.547,96.16L1272.079,106.967C1206.611,117.774,1075.674,139.387,1010.206,164.943C944.738,190.5,944.738,220,944.738,249.5C944.738,279,944.738,308.5,1041.809,335.407C1138.88,362.315,1333.022,386.629,1430.093,398.786L1527.164,410.944" id="my-svg-L_IDX_MS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_MS_0" data-points="W3sieCI6MTMzNy41NDY4NzUsInkiOjk2LjE2MDQwOTgwMDgzMTA2fSx7IngiOjk0NC43MzgyODEyNSwieSI6MTYxfSx7IngiOjk0NC43MzgyODEyNSwieSI6MjQ5LjV9LHsieCI6OTQ0LjczODI4MTI1LCJ5IjozMzh9LHsieCI6MTUzMS4xMzI4MTI1LCJ5Ijo0MTEuNDQwNzI5MzU3MjY1NjR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1337.547,88.654L1132.514,100.712C927.48,112.769,517.414,136.885,312.381,163.692C107.348,190.5,107.348,220,107.348,249.5C107.348,279,107.348,308.5,158.171,333.499C208.994,358.498,310.64,378.996,361.463,389.245L412.286,399.494" id="my-svg-L_IDX_SSM_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_SSM_0" data-points="W3sieCI6MTMzNy41NDY4NzUsInkiOjg4LjY1NDI0NTMwNDI2NTU3fSx7IngiOjEwNy4zNDc2NTYyNSwieSI6MTYxfSx7IngiOjEwNy4zNDc2NTYyNSwieSI6MjQ5LjV9LHsieCI6MTA3LjM0NzY1NjI1LCJ5IjozMzh9LHsieCI6NDE2LjIwNzAzMTI1LCJ5Ijo0MDAuMjg0MzEzMDI3Mzc5Mn1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1337.547,88.591L1129.18,100.659C920.814,112.728,504.081,136.864,295.714,163.682C87.348,190.5,87.348,220,87.348,249.5C87.348,279,87.348,308.5,87.348,338C87.348,367.5,87.348,397,87.348,426.5C87.348,456,87.348,485.5,93.661,506.049C99.975,526.598,112.602,538.196,118.916,543.995L125.23,549.794" id="my-svg-L_IDX_DB_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_DB_0" data-points="W3sieCI6MTMzNy41NDY4NzUsInkiOjg4LjU5MTM0MjIxNTM4NzM0fSx7IngiOjg3LjM0NzY1NjI1LCJ5IjoxNjF9LHsieCI6ODcuMzQ3NjU2MjUsInkiOjI0OS41fSx7IngiOjg3LjM0NzY1NjI1LCJ5IjozMzh9LHsieCI6ODcuMzQ3NjU2MjUsInkiOjQyNi41fSx7IngiOjg3LjM0NzY1NjI1LCJ5Ijo1MTV9LHsieCI6MTI4LjE3NTYyODA2MzcyNTUsInkiOjU1Mi41fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1478.828,89.52L1646.467,101.433C1814.105,113.347,2149.383,137.173,2317.021,163.837C2484.66,190.5,2484.66,220,2484.66,249.5C2484.66,279,2484.66,308.5,2512.287,333.26C2539.913,358.02,2595.166,378.039,2622.792,388.049L2650.419,398.059" id="my-svg-L_IDX_SS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_SS_0" data-points="W3sieCI6MTQ3OC44MjgxMjUsInkiOjg5LjUyMDEwNjkwMjk3MDg1fSx7IngiOjI0ODQuNjYwMTU2MjUsInkiOjE2MX0seyJ4IjoyNDg0LjY2MDE1NjI1LCJ5IjoyNDkuNX0seyJ4IjoyNDg0LjY2MDE1NjI1LCJ5IjozMzh9LHsieCI6MjY1NC4xNzk2ODc1LCJ5IjozOTkuNDIxNjUyMzUzMzA4MDV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1337.547,93.651L1250.893,104.875C1164.238,116.1,990.93,138.55,904.275,157.358C817.621,176.167,817.621,191.333,817.621,198.917L817.621,206.5" id="my-svg-L_IDX_MT_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_MT_0" data-points="W3sieCI6MTMzNy41NDY4NzUsInkiOjkzLjY1MDU1MDY0OTg2NjA2fSx7IngiOjgxNy42MjEwOTM3NSwieSI6MTYxfSx7IngiOjgxNy42MjEwOTM3NSwieSI6MjEwLjV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1337.547,89.182L1156.943,101.151C976.34,113.121,615.133,137.061,434.529,156.614C253.926,176.167,253.926,191.333,253.926,198.917L253.926,206.5" id="my-svg-L_IDX_MST_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_MST_0" data-points="W3sieCI6MTMzNy41NDY4NzUsInkiOjg5LjE4MTc4NzI2MjU1NjIxfSx7IngiOjI1My45MjU3ODEyNSwieSI6MTYxfSx7IngiOjI1My45MjU3ODEyNSwieSI6MjEwLjV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1478.828,88.259L1706.644,100.383C1934.46,112.506,2390.091,136.753,2617.907,156.46C2845.723,176.167,2845.723,191.333,2845.723,198.917L2845.723,206.5" id="my-svg-L_IDX_ST_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_ST_0" data-points="W3sieCI6MTQ3OC44MjgxMjUsInkiOjg4LjI1OTIxNzg0NTIxNTc0fSx7IngiOjI4NDUuNzIyNjU2MjUsInkiOjE2MX0seyJ4IjoyODQ1LjcyMjY1NjI1LCJ5IjoyMTAuNX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1478.828,92.376L1581.41,103.813C1683.991,115.251,1889.154,138.125,1991.735,157.146C2094.316,176.167,2094.316,191.333,2094.316,198.917L2094.316,206.5" id="my-svg-L_IDX_BR_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_BR_0" data-points="W3sieCI6MTQ3OC44MjgxMjUsInkiOjkyLjM3NjA4MjQxNDM2MDQ1fSx7IngiOjIwOTQuMzE2NDA2MjUsInkiOjE2MX0seyJ4IjoyMDk0LjMxNjQwNjI1LCJ5IjoyMTAuNX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1478.828,90.236L1624.08,102.03C1769.332,113.824,2059.836,137.412,2205.088,156.789C2350.34,176.167,2350.34,191.333,2350.34,198.917L2350.34,206.5" id="my-svg-L_IDX_AC_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_AC_0" data-points="W3sieCI6MTQ3OC44MjgxMjUsInkiOjkwLjIzNTgxMTAzNzcyNTI4fSx7IngiOjIzNTAuMzM5ODQzNzUsInkiOjE2MX0seyJ4IjoyMzUwLjMzOTg0Mzc1LCJ5IjoyMTAuNX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1337.547,101.418L1296.083,111.348C1254.618,121.279,1171.69,141.139,1130.226,158.653C1088.762,176.167,1088.762,191.333,1088.762,198.917L1088.762,206.5" id="my-svg-L_IDX_CD_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_CD_0" data-points="W3sieCI6MTMzNy41NDY4NzUsInkiOjEwMS40MTc4ODI0MzA2MzExNH0seyJ4IjoxMDg4Ljc2MTcxODc1LCJ5IjoxNjF9LHsieCI6MTA4OC43NjE3MTg3NSwieSI6MjEwLjV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1478.828,88.966L1668.723,100.972C1858.618,112.977,2238.409,136.989,2428.304,156.578C2618.199,176.167,2618.199,191.333,2618.199,198.917L2618.199,206.5" id="my-svg-L_IDX_SA_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_SA_0" data-points="W3sieCI6MTQ3OC44MjgxMjUsInkiOjg4Ljk2NjA3ODkwNTQ4NTh9LHsieCI6MjYxOC4xOTkyMTg3NSwieSI6MTYxfSx7IngiOjI2MTguMTk5MjE4NzUsInkiOjIxMC41fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1380.799,123.5L1376.41,129.75C1372.021,136,1363.243,148.5,1358.854,162.333C1354.465,176.167,1354.465,191.333,1354.465,198.917L1354.465,206.5" id="my-svg-L_IDX_SF_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_SF_0" data-points="W3sieCI6MTM4MC43OTk0NzkxNjY2NjY3LCJ5IjoxMjMuNX0seyJ4IjoxMzU0LjQ2NDg0Mzc1LCJ5IjoxNjF9LHsieCI6MTM1NC40NjQ4NDM3NSwieSI6MjEwLjV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1478.828,111.956L1499.859,120.13C1520.889,128.304,1562.951,144.652,1583.981,160.409C1605.012,176.167,1605.012,191.333,1605.012,198.917L1605.012,206.5" id="my-svg-L_IDX_IN_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_IN_0" data-points="W3sieCI6MTQ3OC44MjgxMjUsInkiOjExMS45NTYwMTA0Nzg4OTMzNn0seyJ4IjoxNjA1LjAxMTcxODc1LCJ5IjoxNjF9LHsieCI6MTYwNS4wMTE3MTg3NSwieSI6MjEwLjV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1478.828,96.921L1539.564,107.601C1600.301,118.281,1721.773,139.64,1782.51,157.904C1843.246,176.167,1843.246,191.333,1843.246,198.917L1843.246,206.5" id="my-svg-L_IDX_SC_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_SC_0" data-points="W3sieCI6MTQ3OC44MjgxMjUsInkiOjk2LjkyMTMzMzMzMzMzMzM0fSx7IngiOjE4NDMuMjQ2MDkzNzUsInkiOjE2MX0seyJ4IjoxODQzLjI0NjA5Mzc1LCJ5IjoyMTAuNX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1337.547,90.764L1205.54,102.47C1073.533,114.176,809.518,137.588,677.511,154.877C545.504,172.167,545.504,183.333,545.504,188.917L545.504,194.5" id="my-svg-L_IDX_SM_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_IDX_SM_0" data-points="W3sieCI6MTMzNy41NDY4NzUsInkiOjkwLjc2NDE4Mjg5NTg1MDk4fSx7IngiOjU0NS41MDM5MDYyNSwieSI6MTYxfSx7IngiOjU0NS41MDM5MDYyNSwieSI6MTk4LjV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M909.738,281.898L936.324,291.249C962.909,300.599,1016.079,319.299,1118.986,340.253C1221.893,361.206,1374.536,384.412,1450.857,396.015L1527.178,407.618" id="my-svg-L_MT_MS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MT_MS_0" data-points="W3sieCI6OTA5LjczODI4MTI1LCJ5IjoyODEuODk4Mzg4NjI0MTIwOTd9LHsieCI6MTA2OS4yNSwieSI6MzM4fSx7IngiOjE1MzEuMTMyODEyNSwieSI6NDA4LjIxOTY3NjAyNTMzODJ9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M725.504,283.736L701.169,292.78C676.835,301.824,628.165,319.912,601.715,334.582C575.264,349.252,571.031,360.504,568.915,366.13L566.799,371.756" id="my-svg-L_MT_SSM_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MT_SSM_0" data-points="W3sieCI6NzI1LjUwMzkwNjI1LCJ5IjoyODMuNzM1Njc5MTMzODU4M30seyJ4Ijo1NzkuNDk2MDkzNzUsInkiOjMzOH0seyJ4Ijo1NjUuMzkwNTU4NzkyMzcyOSwieSI6Mzc1LjV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M365.504,278.075L404.503,288.062C443.501,298.05,521.499,318.025,557.078,333.691C592.657,349.358,585.818,360.716,582.399,366.394L578.979,372.073" id="my-svg-L_MST_SSM_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MST_SSM_0" data-points="W3sieCI6MzY1LjUwMzkwNjI1LCJ5IjoyNzguMDc0OTc3OTU3NjMzNDV9LHsieCI6NTk5LjQ5NjA5Mzc1LCJ5IjozMzh9LHsieCI6NTc2LjkxNTk4MjUyMTE4NjUsInkiOjM3NS41fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M666.395,300.5L681.21,306.75C696.025,313,725.655,325.5,726.319,337.74C726.982,349.98,698.679,361.961,684.528,367.951L670.376,373.941" id="my-svg-L_SM_SSM_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SM_SSM_0" data-points="W3sieCI6NjY2LjM5NDc5NjA4MDUwODUsInkiOjMwMC41fSx7IngiOjc1NS4yODUxNTYyNSwieSI6MzM4fSx7IngiOjY2Ni42OTI3MzA0MDI1NDIzLCJ5IjozNzUuNX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M2814.858,288.5L2808.329,296.75C2801.8,305,2788.742,321.5,2778.164,337.411C2767.587,353.321,2759.49,368.642,2755.442,376.303L2751.393,383.963" id="my-svg-L_ST_SS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_ST_SS_0" data-points="W3sieCI6MjgxNC44NTc5ODQ2Mzk4MzA2LCJ5IjoyODguNX0seyJ4IjoyNzc1LjY4MzU5Mzc1LCJ5IjozMzh9LHsieCI6Mjc0OS41MjQzNjQ0MDY3Nzk2LCJ5IjozODcuNX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1651.375,465.5L1651.375,473.75C1651.375,482,1651.375,498.5,1742.642,517.523C1833.909,536.545,2016.443,558.091,2107.71,568.863L2198.977,579.636" id="my-svg-L_MS_CS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MS_CS_0" data-points="W3sieCI6MTY1MS4zNzUsInkiOjQ2NS41fSx7IngiOjE2NTEuMzc1LCJ5Ijo1MTV9LHsieCI6MjIwMi45NDkyMTg3NSwieSI6NTgwLjEwNTAxOTM3NzE1ODR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M2728.914,465.5L2728.914,473.75C2728.914,482,2728.914,498.5,2674.089,516.517C2619.264,534.534,2509.615,554.067,2454.79,563.834L2399.965,573.601" id="my-svg-L_SS_CS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SS_CS_0" data-points="W3sieCI6MjcyOC45MTQwNjI1LCJ5Ijo0NjUuNX0seyJ4IjoyNzI4LjkxNDA2MjUsInkiOjUxNX0seyJ4IjoyMzk2LjAyNzM0Mzc1LCJ5Ijo1NzQuMzAyMDYxMjU1NDkxOX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1987.613,269.632L1927.221,281.027C1866.829,292.422,1746.046,315.211,1687.899,334.216C1629.753,353.221,1634.244,368.442,1636.49,376.053L1638.735,383.664" id="my-svg-L_BR_MS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_BR_MS_0" data-points="W3sieCI6MTk4Ny42MTMyODEyNSwieSI6MjY5LjYzMjQ2Mzg5ODQ2NTk3fSx7IngiOjE2MjUuMjYxNzE4NzUsInkiOjMzOH0seyJ4IjoxNjM5Ljg2NzQ1MjMzMDUwODUsInkiOjM4Ny41fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M2251.02,264.472L2169.729,276.727C2088.438,288.982,1925.855,313.491,1834.656,333.582C1743.457,353.673,1723.64,369.346,1713.732,377.182L1703.824,385.019" id="my-svg-L_AC_MS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_AC_MS_0" data-points="W3sieCI6MjI1MS4wMTk1MzEyNSwieSI6MjY0LjQ3MjQ5Mjk5NjgyNjEzfSx7IngiOjE3NjMuMjczNDM3NSwieSI6MzM4fSx7IngiOjE3MDAuNjg2MTc1ODQ3NDU3NywieSI6Mzg3LjV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1197.785,263.393L1295.367,275.827C1392.948,288.262,1588.111,313.131,1673.95,333.444C1759.789,353.757,1736.305,369.514,1724.563,377.393L1712.821,385.271" id="my-svg-L_CD_MS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_CD_MS_0" data-points="W3sieCI6MTE5Ny43ODUxNTYyNSwieSI6MjYzLjM5MjYwMTAyOTI3NTN9LHsieCI6MTc4My4yNzM0Mzc1LCJ5IjozMzh9LHsieCI6MTcwOS40OTk3MzUxNjk0OTE1LCJ5IjozODcuNX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M997.824,288.5L978.587,296.75C959.35,305,920.876,321.5,867.918,338.627C814.96,355.754,747.518,373.507,713.796,382.384L680.075,391.261" id="my-svg-L_CD_SSM_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_CD_SSM_0" data-points="W3sieCI6OTk3LjgyMzY4OTA4ODk4MzEsInkiOjI4OC41fSx7IngiOjg4Mi40MDIzNDM3NSwieSI6MzM4fSx7IngiOjY3Ni4yMDcwMzEyNSwieSI6MzkyLjI3ODgyMDkwNDg4Njk3fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M2525.888,288.5L2506.36,296.75C2486.833,305,2447.778,321.5,2322.728,342.081C2197.678,362.662,1986.634,387.323,1881.112,399.654L1775.59,411.985" id="my-svg-L_SA_MS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SA_MS_0" data-points="W3sieCI6MjUyNS44ODc1MTMyNDE1MjU1LCJ5IjoyODguNX0seyJ4IjoyNDA4LjcyMjY1NjI1LCJ5IjozMzh9LHsieCI6MTc3MS42MTcxODc1LCJ5Ijo0MTIuNDQ5MDc3MDExMTU2M31d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M2696.413,288.5L2712.958,296.75C2729.503,305,2762.593,321.5,2773.316,337.468C2784.038,353.436,2772.393,368.871,2766.57,376.589L2760.747,384.307" id="my-svg-L_SA_SS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SA_SS_0" data-points="W3sieCI6MjY5Ni40MTI2NzIxMzk4MzA2LCJ5IjoyODguNX0seyJ4IjoyNzk1LjY4MzU5Mzc1LCJ5IjozMzh9LHsieCI6Mjc1OC4zMzc5MjM3Mjg4MTM2LCJ5IjozODcuNX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M546.207,477.5L546.207,483.75C546.207,490,546.207,502.5,501.548,517.847C456.889,533.193,367.57,551.387,322.911,560.483L278.252,569.58" id="my-svg-L_SSM_DB_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SSM_DB_0" data-points="W3sieCI6NTQ2LjIwNzAzMTI1LCJ5Ijo0NzcuNX0seyJ4Ijo1NDYuMjA3MDMxMjUsInkiOjUxNX0seyJ4IjoyNzQuMzMyMDMxMjUsInkiOjU3MC4zNzgyNzg4Njc1NTU1fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_IDX_MS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_SSM_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_DB_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_SS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_MT_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_MST_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_ST_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_BR_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_AC_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_CD_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_SA_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_SF_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_IN_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_SC_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_IDX_SM_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_MT_MS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_MT_SSM_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_MST_SSM_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_SM_SSM_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_ST_SS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_MS_CS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_SS_CS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_BR_MS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_AC_MS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_CD_MS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_CD_SSM_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_SA_MS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_SA_SS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_SSM_DB_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default" id="my-svg-flowchart-IDX-0" data-look="classic" transform="translate(1408.1875, 84.5)"><rect class="basic label-container" style="fill:#e94560 !important;stroke:#fff !important" x="-70.640625" y="-39" width="141.28125" height="78"/><g class="label" style="color:#fff !important" transform="translate(-40.640625, -24)"><rect/><foreignObject width="81.28125" height="48"><div style="color: rgb(255, 255, 255) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#fff !important" class="nodeLabel"><p>index.ts<br /><i>Entry point</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-MS-1" data-look="classic" transform="translate(1651.375, 426.5)"><rect class="basic label-container" style="fill:#0f3460 !important;stroke:#fff !important" x="-120.2421875" y="-39" width="240.484375" height="78"/><g class="label" style="color:#fff !important" transform="translate(-90.2421875, -24)"><rect/><foreignObject width="180.484375" height="48"><div style="color: rgb(255, 255, 255) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#fff !important" class="nodeLabel"><p>memory-store.ts<br /><i>Markdown memory CRUD</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SSM-2" data-look="classic" transform="translate(546.20703125, 426.5)"><rect class="basic label-container" style="fill:#1282a2 !important;stroke:#fff !important" x="-130" y="-51" width="260" height="102"/><g class="label" style="color:#fff !important" transform="translate(-100, -36)"><rect/><foreignObject width="200" height="72"><div style="color: rgb(255, 255, 255) !important; display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#fff !important" class="nodeLabel"><p>sqlite-memory-store.ts<br /><i>Search mirror + backfill sync</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-DB-3" data-look="classic" transform="translate(170.63671875, 591.5)"><rect class="basic label-container" style="fill:#1b4332 !important;stroke:#fff !important" x="-103.6953125" y="-39" width="207.390625" height="78"/><g class="label" style="color:#fff !important" transform="translate(-73.6953125, -24)"><rect/><foreignObject width="147.390625" height="48"><div style="color: rgb(255, 255, 255) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#fff !important" class="nodeLabel"><p>db.ts<br /><i>sessions.db manager</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SS-4" data-look="classic" transform="translate(2728.9140625, 426.5)"><rect class="basic label-container" style="fill:#0f3460 !important;stroke:#fff !important" x="-74.734375" y="-39" width="149.46875" height="78"/><g class="label" style="color:#fff !important" transform="translate(-44.734375, -24)"><rect/><foreignObject width="89.46875" height="48"><div style="color: rgb(255, 255, 255) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#fff !important" class="nodeLabel"><p>skill-store.ts<br /><i>Skill CRUD</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-MT-5" data-look="classic" transform="translate(817.62109375, 249.5)"><rect class="basic label-container" style="" x="-92.1171875" y="-39" width="184.234375" height="78"/><g class="label" style="" transform="translate(-62.1171875, -24)"><rect/><foreignObject width="124.234375" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>memory-tool.ts<br /><i>Memory LLM tool</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-MST-6" data-look="classic" transform="translate(253.92578125, 249.5)"><rect class="basic label-container" style="" x="-111.578125" y="-39" width="223.15625" height="78"/><g class="label" style="" transform="translate(-81.578125, -24)"><rect/><foreignObject width="163.15625" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>memory-search-tool.ts<br /><i>Search SQLite memory</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-ST-7" data-look="classic" transform="translate(2845.72265625, 249.5)"><rect class="basic label-container" style="" x="-78.984375" y="-39" width="157.96875" height="78"/><g class="label" style="" transform="translate(-48.984375, -24)"><rect/><foreignObject width="97.96875" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>skill-tool.ts<br /><i>Skill LLM tool</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-BR-9" data-look="classic" transform="translate(2094.31640625, 249.5)"><rect class="basic label-container" style="" x="-106.703125" y="-39" width="213.40625" height="78"/><g class="label" style="" transform="translate(-76.703125, -24)"><rect/><foreignObject width="153.40625" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>background-review.ts<br /><i>Learning loop</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-AC-10" data-look="classic" transform="translate(2350.33984375, 249.5)"><rect class="basic label-container" style="" x="-99.3203125" y="-39" width="198.640625" height="78"/><g class="label" style="" transform="translate(-69.3203125, -24)"><rect/><foreignObject width="138.640625" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>auto-consolidate.ts<br /><i>Memory merge</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-CD-11" data-look="classic" transform="translate(1088.76171875, 249.5)"><rect class="basic label-container" style="" x="-109.0234375" y="-39" width="218.046875" height="78"/><g class="label" style="" transform="translate(-79.0234375, -24)"><rect/><foreignObject width="158.046875" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>correction-detector.ts<br /><i>Instant save</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SA-12" data-look="classic" transform="translate(2618.19921875, 249.5)"><rect class="basic label-container" style="" x="-98.5390625" y="-39" width="197.078125" height="78"/><g class="label" style="" transform="translate(-68.5390625, -24)"><rect/><foreignObject width="137.078125" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>skill-auto-trigger.ts<br /><i>Skill extraction</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SF-13" data-look="classic" transform="translate(1354.46484375, 249.5)"><rect class="basic label-container" style="" x="-106.6796875" y="-39" width="213.359375" height="78"/><g class="label" style="" transform="translate(-76.6796875, -24)"><rect/><foreignObject width="153.359375" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>session-flush.ts<br /><i>Pre-compaction flush</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-IN-14" data-look="classic" transform="translate(1605.01171875, 249.5)"><rect class="basic label-container" style="" x="-93.8671875" y="-39" width="187.734375" height="78"/><g class="label" style="" transform="translate(-63.8671875, -24)"><rect/><foreignObject width="127.734375" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>insights.ts<br /><i>/memory-insights</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SC-15" data-look="classic" transform="translate(1843.24609375, 249.5)"><rect class="basic label-container" style="" x="-94.3671875" y="-39" width="188.734375" height="78"/><g class="label" style="" transform="translate(-64.3671875, -24)"><rect/><foreignObject width="128.734375" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>skills-command.ts<br /><i>/memory-skills</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SM-16" data-look="classic" transform="translate(545.50390625, 249.5)"><rect class="basic label-container" style="" x="-130" y="-51" width="260" height="102"/><g class="label" style="" transform="translate(-100, -36)"><rect/><foreignObject width="200" height="72"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel"><p>sync-markdown-memories.ts<br /><i>/memory-sync-markdown</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-CS-8" data-look="classic" transform="translate(2299.48828125, 591.5)"><rect class="basic label-container" style="fill:#ff6600 !important;stroke:#fff !important" x="-96.5390625" y="-39" width="193.078125" height="78"/><g class="label" style="color:#fff !important" transform="translate(-66.5390625, -24)"><rect/><foreignObject width="133.078125" height="48"><div style="color: rgb(255, 255, 255) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#fff !important" class="nodeLabel"><p>content-scanner.ts<br /><i>Security</i></p></span></div></foreignObject></g></g></g></g></g></g></g><defs><filter id="my-svg-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><defs><filter id="my-svg-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs></svg>
@@ -1,19 +1,27 @@
1
1
  graph TB
2
- subgraph "Persistent Storage"
2
+ subgraph "Core Persistent Storage (Markdown)"
3
3
  MEM["MEMORY.md<br/><i>Agent's notes</i>"]
4
4
  USR["USER.md<br/><i>User profile</i>"]
5
5
  FAIL["failures.md<br/><i>Failure memory</i><br/>corrections, insights, failures"]
6
6
  SKL["skills/<br/><i>Procedural memory</i><br/>debug-ts.md<br/>deploy-checklist.md"]
7
7
  end
8
8
 
9
+ subgraph "Search Store (SQLite sessions.db)"
10
+ SQM["memories table + FTS5<br/><i>search mirror/store</i>"]
11
+ SQS["sessions/messages + FTS5<br/><i>session search</i>"]
12
+ end
13
+
9
14
  subgraph "System Prompt (frozen snapshot)"
10
- SMEM["Memory block<br/>Full content"]
11
- SUSR["User block<br/>Full content"]
15
+ SMEM["Memory block<br/>from Markdown only"]
16
+ SUSR["User block<br/>from Markdown only"]
12
17
  SFAIL["Failures block<br/>Recent 7 days, max 5"]
13
18
  SSKL["Skill index<br/>Names + descriptions only"]
14
19
  end
15
20
 
16
- subgraph "On Demand (via skill tool)"
21
+ subgraph "On Demand"
22
+ MSEARCH["memory_search<br/><i>query SQLite memories</i>"]
23
+ SSEARCH["session_search<br/><i>query indexed sessions</i>"]
24
+ BACKFILL["/memory-sync-markdown<br/><i>idempotent Markdown → SQLite sync</i>"]
17
25
  FULL["Full skill content<br/>Loaded when needed"]
18
26
  end
19
27
 
@@ -23,8 +31,18 @@ graph TB
23
31
  SKL --> SSKL
24
32
  SSKL -.->|"skill view"| FULL
25
33
 
34
+ MEM -.->|"successful saves mirrored"| SQM
35
+ USR -.->|"successful saves mirrored"| SQM
36
+ FAIL -.->|"successful saves mirrored"| SQM
37
+ BACKFILL --> SQM
38
+ MSEARCH --> SQM
39
+ SSEARCH --> SQS
40
+
26
41
  style SMEM fill:#1a1a2e,stroke:#e94560,color:#fff
27
42
  style SUSR fill:#1a1a2e,stroke:#e94560,color:#fff
28
43
  style SFAIL fill:#2d1b2e,stroke:#ff6b6b,color:#fff
29
44
  style SSKL fill:#16213e,stroke:#0f3460,color:#fff
45
+ style SQM fill:#0b525b,stroke:#fff,color:#fff
46
+ style SQS fill:#1b4332,stroke:#fff,color:#fff
47
+ style BACKFILL fill:#3a0ca3,stroke:#fff,color:#fff
30
48
  style FULL fill:#0a1128,stroke:#1282a2,color:#fff
@@ -2,49 +2,52 @@ sequenceDiagram
2
2
  participant User
3
3
  participant Pi
4
4
  participant Extension
5
- participant Disk as ~/.pi/agent/memory/
5
+ participant MD as Markdown (~/.pi/agent/...)
6
+ participant SQL as SQLite (sessions.db)
6
7
 
7
- Note over Pi,Disk: ── Session Start ──
8
+ Note over Pi,SQL: ── Session Start ──
8
9
  Pi->>Extension: session_start event
9
- Extension->>Disk: loadFromDisk() — read MEMORY.md + USER.md + failures.md + skills/
10
+ Extension->>MD: loadFromDisk() — MEMORY.md + USER.md + failures.md + skills/
10
11
  Extension-->>Extension: Capture frozen snapshot (memory + failures + skill index)
11
12
 
12
- Note over Pi,Disk: ── System Prompt Injection ──
13
+ Note over Pi,SQL: ── System Prompt Injection ──
13
14
  Pi->>Extension: before_agent_start event
14
- Extension-->>Pi: systemPrompt + frozen memory + failures block + skill index
15
- Note right of Pi: Agent now "remembers"<br/>facts, failures, AND procedures<br/>from past sessions
15
+ Extension-->>Pi: systemPrompt + frozen Markdown memory blocks
16
+ Note right of Pi: Prompt context comes from Markdown core memory
16
17
 
17
- Note over Pi,Disk: ── Agent Loop ──
18
+ Note over Pi,SQL: ── Agent Loop (memory add) ──
18
19
  User->>Pi: "Remember I prefer vim"
19
20
  Pi->>Extension: tool_call (memory, add)
20
- Extension->>Extension: scanContent() security check
21
- Extension->>Disk: Atomic write to USER.md
22
- Extension-->>Pi: { success: true, usage: "3% — 41/5000" }
23
-
24
- Note over Pi,Disk: ── User Correction ──
21
+ Extension->>Extension: scanContent() security check
22
+ Extension->>MD: Atomic write to USER.md
23
+ alt Markdown save success
24
+ Extension->>SQL: best-effort sync to memories table
25
+ Extension-->>Pi: success (plus warning only if sync fails)
26
+ else Markdown save fails (limit/validation)
27
+ Extension-->>Pi: fail (no SQLite-only fallback)
28
+ end
29
+
30
+ Note over Pi,SQL: ── User Correction ──
25
31
  User->>Pi: "No, don't use npm — use pnpm"
26
32
  Extension->>Extension: isCorrection() = true
27
33
  Extension->>Pi: pi.exec("pi -p", correctionPrompt)
28
- Extension->>Disk: Save as failure memory [correction]
29
- Note right of Pi: Immediate save<br/>no waiting for nudge
30
-
31
- Note over Pi,Disk: ── Failure Detection ──
32
- User->>Pi: "That didn't work, try X instead"
33
- Extension->>Extension: isCorrection() = true
34
- Extension->>Disk: addFailure(category: "failure")
35
- Note right of Pi: Stores what failed<br/>and why for learning
36
-
37
- Note over Pi,Disk: ── Complex Task (8+ tool calls) ──
38
- Pi->>Extension: turn_end (8 tool calls, 3 tool types)
39
- Extension->>Pi: pi.exec("pi -p", skillExtractionPrompt)
40
- Note right of Pi: Extract reusable<br/>procedure as skill
41
-
42
- Note over Pi,Disk: ── Background Review (10 turns or 15 tool calls) ──
43
- Pi->>Extension: turn_end event
34
+ Extension->>MD: Save [correction] failure memory
35
+ Extension->>SQL: best-effort correction sync
36
+
37
+ Note over Pi,SQL: ── Search + Backfill ──
38
+ Pi->>Extension: memory_search(query)
39
+ Extension->>SQL: FTS5 search memories
40
+ SQL-->>Extension: results
41
+ Pi->>Extension: /memory-sync-markdown
42
+ Extension->>MD: scan global + project Markdown files
43
+ Extension->>SQL: idempotent Markdown SQLite import
44
+
45
+ Note over Pi,SQL: ── Background Learning ──
46
+ Pi->>Extension: turn_end (10 turns or 15 tool calls)
44
47
  Extension->>Pi: pi.exec("pi -p", reviewPrompt)
45
- Note right of Pi: Reviews conversation<br/>saves memories, failures, AND skills
48
+ Note right of Pi: Review can save memories/failures/skills
46
49
 
47
- Note over Pi,Disk: ── Session End ──
50
+ Note over Pi,SQL: ── Session End ──
48
51
  Pi->>Extension: session_shutdown event
49
52
  Extension->>Pi: pi.exec("pi -p", flushPrompt)
50
- Note right of Pi: One last turn to flush<br/>anything worth saving
53
+ Note right of Pi: final chance to save durable learnings
@@ -1,9 +1,12 @@
1
1
  graph LR
2
2
  subgraph "pi-hermes-memory/src/"
3
3
  IDX["index.ts<br/><i>Entry point</i>"]
4
- MS["memory-store.ts<br/><i>Memory CRUD</i>"]
4
+ MS["memory-store.ts<br/><i>Markdown memory CRUD</i>"]
5
+ SSM["sqlite-memory-store.ts<br/><i>Search mirror + backfill sync</i>"]
6
+ DB["db.ts<br/><i>sessions.db manager</i>"]
5
7
  SS["skill-store.ts<br/><i>Skill CRUD</i>"]
6
8
  MT["memory-tool.ts<br/><i>Memory LLM tool</i>"]
9
+ MST["memory-search-tool.ts<br/><i>Search SQLite memory</i>"]
7
10
  ST["skill-tool.ts<br/><i>Skill LLM tool</i>"]
8
11
  CS["content-scanner.ts<br/><i>Security</i>"]
9
12
  BR["background-review.ts<br/><i>Learning loop</i>"]
@@ -13,11 +16,15 @@ graph LR
13
16
  SF["session-flush.ts<br/><i>Pre-compaction flush</i>"]
14
17
  IN["insights.ts<br/><i>/memory-insights</i>"]
15
18
  SC["skills-command.ts<br/><i>/memory-skills</i>"]
19
+ SM["sync-markdown-memories.ts<br/><i>/memory-sync-markdown</i>"]
16
20
  end
17
21
 
18
22
  IDX --> MS
23
+ IDX --> SSM
24
+ IDX --> DB
19
25
  IDX --> SS
20
26
  IDX --> MT
27
+ IDX --> MST
21
28
  IDX --> ST
22
29
  IDX --> BR
23
30
  IDX --> AC
@@ -26,17 +33,26 @@ graph LR
26
33
  IDX --> SF
27
34
  IDX --> IN
28
35
  IDX --> SC
36
+ IDX --> SM
37
+
29
38
  MT --> MS
39
+ MT --> SSM
40
+ MST --> SSM
41
+ SM --> SSM
30
42
  ST --> SS
31
43
  MS --> CS
32
44
  SS --> CS
33
45
  BR --> MS
34
46
  AC --> MS
35
47
  CD --> MS
48
+ CD --> SSM
36
49
  SA --> MS
37
50
  SA --> SS
51
+ SSM --> DB
38
52
 
39
53
  style IDX fill:#e94560,stroke:#fff,color:#fff
40
54
  style MS fill:#0f3460,stroke:#fff,color:#fff
55
+ style SSM fill:#1282a2,stroke:#fff,color:#fff
56
+ style DB fill:#1b4332,stroke:#fff,color:#fff
41
57
  style SS fill:#0f3460,stroke:#fff,color:#fff
42
58
  style CS fill:#ff6600,stroke:#fff,color:#fff
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-hermes-memory",
3
- "version": "0.6.7",
3
+ "version": "0.6.8",
4
4
  "description": "🧠 Persistent memory + 🔍 session search + 🛡️ secret scanning for Pi. SQLite FTS5 search across every conversation, auto-consolidation, memory aging, procedural skills. 272 tests. Ported from Hermes agent.",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -10,6 +10,11 @@
10
10
 
11
11
  import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
12
12
  import { MemoryStore } from "../store/memory-store.js";
13
+ import { DatabaseManager } from "../store/db.js";
14
+ import {
15
+ formatFailureMemoryContent,
16
+ syncMemoryEntry,
17
+ } from "../store/sqlite-memory-store.js";
13
18
  import {
14
19
  CORRECTION_SAVE_PROMPT,
15
20
  CORRECTION_STRONG_PATTERNS,
@@ -72,6 +77,7 @@ export function setupCorrectionDetector(
72
77
  store: MemoryStore,
73
78
  projectStore: MemoryStore | null,
74
79
  config: MemoryConfig,
80
+ dbManager: DatabaseManager | null = null,
75
81
  ): void {
76
82
  if (!config.correctionDetection) return;
77
83
 
@@ -167,11 +173,30 @@ export function setupCorrectionDetector(
167
173
  const correctionText = lastUserMsg ? lastUserMsg.replace(/^\[USER\]:\s*/, "") : "";
168
174
  if (correctionText) {
169
175
  const directive = extractCorrectionDirective(correctionText);
170
- await store.addFailure(directive, {
176
+ const failureReason = "User corrected the agent";
177
+ const projectMarker = projectStore ? "project" : undefined;
178
+ const addResult = await store.addFailure(directive, {
171
179
  category: "correction",
172
- failureReason: "User corrected the agent",
173
- project: projectStore ? "project" : undefined,
180
+ failureReason,
181
+ project: projectMarker,
174
182
  });
183
+
184
+ if (addResult.success && dbManager) {
185
+ try {
186
+ syncMemoryEntry(dbManager, {
187
+ content: formatFailureMemoryContent(directive, {
188
+ category: "correction",
189
+ failureReason,
190
+ project: projectMarker,
191
+ }),
192
+ target: "failure",
193
+ category: "correction",
194
+ failureReason,
195
+ });
196
+ } catch {
197
+ // Best-effort — searchable sync should not block correction capture
198
+ }
199
+ }
175
200
  }
176
201
  } catch {
177
202
  // Best-effort — don't block the session
@@ -41,7 +41,7 @@ export function registerLearnMemoryCommand(pi: ExtensionAPI): void {
41
41
  lines.push(" User: Who you are — name, preferences, communication style");
42
42
  lines.push(" Failures: What didn't work — corrections, failures, insights");
43
43
  lines.push(" Skills: Procedures — how to debug, deploy, test");
44
- lines.push(" Extended: Searchable memories beyond the core limit");
44
+ lines.push(" Extended: SQLite search mirror for Markdown memory + backfill");
45
45
  lines.push("");
46
46
  lines.push(" Memory Categories:");
47
47
  lines.push(" ─────────────────");
@@ -70,7 +70,7 @@ export function registerLearnMemoryCommand(pi: ExtensionAPI): void {
70
70
  lines.push(" Search past conversations across all sessions");
71
71
  lines.push("");
72
72
  lines.push(" memory_search");
73
- lines.push(" Search extended memory store (unlimited)");
73
+ lines.push(" Search the SQLite-backed memory mirror/store");
74
74
  lines.push(" Filters: project, target, category");
75
75
  lines.push(" Categories: failure, correction, insight, preference, convention, tool-quirk");
76
76
  }
@@ -87,6 +87,8 @@ export function registerLearnMemoryCommand(pi: ExtensionAPI): void {
87
87
  lines.push(" /memory-interview Answer questions to pre-fill profile");
88
88
  lines.push(" /memory-switch-project List all project memories");
89
89
  lines.push(" /memory-index-sessions Import past sessions for search");
90
+ lines.push(" /memory-sync-markdown Backfill Markdown memories into SQLite");
91
+ lines.push(" /memory-preview-context Show injected memory/skill prompt blocks");
90
92
  }
91
93
 
92
94
  if (section.startsWith("✅")) {
@@ -115,12 +117,13 @@ export function registerLearnMemoryCommand(pi: ExtensionAPI): void {
115
117
  lines.push(" ╚══════════════════════════════════════════════╝");
116
118
  lines.push("");
117
119
  lines.push(" 1. Session starts → Core memory + recent failures injected");
118
- lines.push(" 2. During conversation → Agent saves via memory tool");
119
- lines.push(" 3. Every 10 turns Background review saves items");
120
- lines.push(" 4. On correction Immediate save as [correction] category");
121
- lines.push(" 5. On failure Saves what failed + why");
122
- lines.push(" 6. When full Auto-consolidation merges");
123
- lines.push(" 7. Session ends Final flush");
120
+ lines.push(" 2. During conversation → Agent saves to Markdown memory");
121
+ lines.push(" 3. Successful saves Best-effort SQLite search sync");
122
+ lines.push(" 4. Every 10 turns Background review saves items");
123
+ lines.push(" 5. On correction Immediate save as [correction] category");
124
+ lines.push(" 6. On failure Saves what failed + why");
125
+ lines.push(" 7. When full Auto-consolidation merges");
126
+ lines.push(" 8. Session ends → Final flush");
124
127
  }
125
128
 
126
129
  if (section.startsWith("🏗️")) {
@@ -137,10 +140,11 @@ export function registerLearnMemoryCommand(pi: ExtensionAPI): void {
137
140
  lines.push(" │ Project memory — When cwd matches │");
138
141
  lines.push(" └─────────────────────────────────────┘");
139
142
  lines.push("");
140
- lines.push(" Searchable on Demand (Unlimited)");
143
+ lines.push(" Searchable on Demand (SQLite mirror/store)");
141
144
  lines.push(" ┌─────────────────────────────────────┐");
142
145
  lines.push(" │ session_search(\"auth flow\") │");
143
146
  lines.push(" │ memory_search(\"testing patterns\") │");
147
+ lines.push(" │ /memory-sync-markdown (backfill old md)│");
144
148
  lines.push(" │ memory_search(\"auth\", cat:\"failure\")│");
145
149
  lines.push(" └─────────────────────────────────────┘");
146
150
  }
@@ -153,9 +157,11 @@ export function registerLearnMemoryCommand(pi: ExtensionAPI): void {
153
157
  lines.push("");
154
158
  lines.push(" \"Memory is full\"");
155
159
  lines.push(" → /memory-consolidate to merge entries");
160
+ lines.push(" → If it still fails, the save does NOT silently become SQLite-only");
156
161
  lines.push("");
157
162
  lines.push(" \"Can't find something\"");
158
- lines.push(" → memory_search to search extended store");
163
+ lines.push(" → memory_search to search the SQLite mirror/store");
164
+ lines.push(" → /memory-sync-markdown to import older Markdown entries");
159
165
  lines.push("");
160
166
  lines.push(" \"Agent forgot something\"");
161
167
  lines.push(" → Check /memory-insights, tell agent \"remember X\"");