pi-hermes-memory 0.6.6 → 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.6",
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",
package/src/config.ts CHANGED
@@ -9,6 +9,8 @@ import {
9
9
  DEFAULT_NUDGE_INTERVAL,
10
10
  DEFAULT_FLUSH_MIN_TURNS,
11
11
  DEFAULT_NUDGE_TOOL_CALLS,
12
+ DEFAULT_FAILURE_INJECTION_MAX_AGE_DAYS,
13
+ DEFAULT_FAILURE_INJECTION_MAX_ENTRIES,
12
14
  } from "./constants.js";
13
15
 
14
16
  const DEFAULT_CONFIG: MemoryConfig = {
@@ -22,6 +24,9 @@ const DEFAULT_CONFIG: MemoryConfig = {
22
24
  flushMinTurns: DEFAULT_FLUSH_MIN_TURNS,
23
25
  autoConsolidate: true,
24
26
  correctionDetection: true,
27
+ failureInjectionEnabled: true,
28
+ failureInjectionMaxAgeDays: DEFAULT_FAILURE_INJECTION_MAX_AGE_DAYS,
29
+ failureInjectionMaxEntries: DEFAULT_FAILURE_INJECTION_MAX_ENTRIES,
25
30
  nudgeToolCalls: DEFAULT_NUDGE_TOOL_CALLS,
26
31
  };
27
32
 
@@ -48,6 +53,9 @@ export function loadConfig(): MemoryConfig {
48
53
  if (typeof parsed.flushMinTurns === "number") config.flushMinTurns = parsed.flushMinTurns;
49
54
  if (typeof parsed.autoConsolidate === "boolean") config.autoConsolidate = parsed.autoConsolidate;
50
55
  if (typeof parsed.correctionDetection === "boolean") config.correctionDetection = parsed.correctionDetection;
56
+ if (typeof parsed.failureInjectionEnabled === "boolean") config.failureInjectionEnabled = parsed.failureInjectionEnabled;
57
+ if (typeof parsed.failureInjectionMaxAgeDays === "number") config.failureInjectionMaxAgeDays = parsed.failureInjectionMaxAgeDays;
58
+ if (typeof parsed.failureInjectionMaxEntries === "number") config.failureInjectionMaxEntries = parsed.failureInjectionMaxEntries;
51
59
  if (typeof parsed.nudgeToolCalls === "number") config.nudgeToolCalls = parsed.nudgeToolCalls;
52
60
  if (typeof parsed.projectCharLimit === "number") config.projectCharLimit = parsed.projectCharLimit;
53
61
  if (typeof parsed.memoryDir === "string") config.memoryDir = parsed.memoryDir;
package/src/constants.ts CHANGED
@@ -18,6 +18,8 @@ export const DEFAULT_NUDGE_INTERVAL = 10;
18
18
  export const DEFAULT_FLUSH_MIN_TURNS = 6;
19
19
  export const DEFAULT_NUDGE_TOOL_CALLS = 15;
20
20
  export const DEFAULT_SKILL_TRIGGER_TOOL_CALLS = 8;
21
+ export const DEFAULT_FAILURE_INJECTION_MAX_AGE_DAYS = 7;
22
+ export const DEFAULT_FAILURE_INJECTION_MAX_ENTRIES = 5;
21
23
 
22
24
  // ─── File names ───
23
25
  export const MEMORY_FILE = "MEMORY.md";
@@ -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