Files
my-pi/pi-hermes-memory/docs/images/memory-architecture.svg
T
云服务部-叶林立 312bb2ba5a feat(pi-hermes-memory): 导入上游 v0.9.10 源码快照
从官方 Git 仓库导入 chandra447/pi-hermes-memory 在 tag v0.9.10
(df624056a2e8c68bc89ba0a81e1c120856ec9665,2026-10-02)的源码快照。
本次仅导入源码,尚未接入组合包:package.json、加载顺序、依赖与权限策略
均未改动。

- 原样导入 src/、tests/、docs/、scripts/、README、CHANGELOG、PLAN、
  AGENTS 与 LICENSE;该快照共 156 个上游文件。
- 剔除嵌套 .git、上游 .github 工作流、.ralph/、.claude/、node_modules、
  覆盖率与构建产物。
- 新增中文 UPSTREAM.md,记录来源,以及启用前必须完成的待决事项:
  在 pi-compaction 之前注册加载顺序、better-sqlite3 版本与根 allowScripts
  对齐、strip-ansi 解析确认。
- 说明选择 tag 而非 main 的原因:导入时上游 main 已领先至
  24fcd8ad26fc27badb8d7dbaf8034645de07b893(2026-10-11),选 tag 是为
  对应一个已发布、可复现的版本。

尚未接线。启用前还需反转 tests/extension-load.test.ts 中"不得加载
Hermes"的断言,并同步 pi-tool-search 分组、权限策略与文档。

验证:快照 156 个上游文件全部导入,目录内仅多出 UPSTREAM.md 一份;
已确认与上游 main 内容存在差异,证明取的是 tag 而非 main。
2026-10-13 23:19:35 -07:00

1 line
35 KiB
XML

<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: 2057.18px; background-color: white;" viewBox="0 0 2057.1796875 797" 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="cluster" id="my-svg-subGraph3" data-look="classic"><rect style="" x="796.6015625" y="460" width="1252.578125" height="329"/><g class="cluster-label" transform="translate(1381.7734375, 460)"><foreignObject width="82.234375" 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>On Demand</p></span></div></foreignObject></g></g><g class="cluster" id="my-svg-subGraph2" data-look="classic"><rect style="" x="1161.765625" y="234" width="866.03125" height="152"/><g class="cluster-label" transform="translate(1465.625, 234)"><foreignObject width="258.3125" 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>System Prompt (default policy-only)</p></span></div></foreignObject></g></g><g class="cluster" id="my-svg-subGraph1" data-look="classic"><rect style="" x="22.99609375" y="661" width="753.60546875" height="128"/><g class="cluster-label" transform="translate(280.814453125, 661)"><foreignObject width="237.96875" 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>Search Store (SQLite sessions.db)</p></span></div></foreignObject></g></g><g class="cluster" id="my-svg-subGraph0" data-look="classic"><rect style="" x="22.99609375" y="8" width="2021.09765625" height="176"/><g class="cluster-label" transform="translate(905.388671875, 8)"><foreignObject width="256.3125" 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>Core Persistent Storage (Markdown)</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path d="M1401.414,345.808L1377.095,352.507C1352.776,359.206,1304.138,372.603,1279.819,385.468C1255.5,398.333,1255.5,410.667,1255.5,423C1255.5,435.333,1255.5,447.667,1255.5,459.333C1255.5,471,1255.5,482,1255.5,487.5L1255.5,493" id="my-svg-L_POLICY_MSEARCH_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_POLICY_MSEARCH_0" data-points="W3sieCI6MTQwMS40MTQwNjI1LCJ5IjozNDUuODA4MjUwOTgzOTQ1NH0seyJ4IjoxMjU1LjUsInkiOjM4Nn0seyJ4IjoxMjU1LjUsInkiOjQyM30seyJ4IjoxMjU1LjUsInkiOjQ2MH0seyJ4IjoxMjU1LjUsInkiOjQ5N31d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1531.414,361L1531.414,365.167C1531.414,369.333,1531.414,377.667,1531.414,388C1531.414,398.333,1531.414,410.667,1531.414,423C1531.414,435.333,1531.414,447.667,1531.414,459.333C1531.414,471,1531.414,482,1531.414,487.5L1531.414,493" id="my-svg-L_POLICY_SSEARCH_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_POLICY_SSEARCH_0" data-points="W3sieCI6MTUzMS40MTQwNjI1LCJ5IjozNjF9LHsieCI6MTUzMS40MTQwNjI1LCJ5IjozODZ9LHsieCI6MTUzMS40MTQwNjI1LCJ5Ijo0MjN9LHsieCI6MTUzMS40MTQwNjI1LCJ5Ijo0NjB9LHsieCI6MTUzMS40MTQwNjI1LCJ5Ijo0OTd9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1661.414,340.646L1693.479,348.205C1725.544,355.764,1789.674,370.882,1821.74,384.608C1853.805,398.333,1853.805,410.667,1853.805,423C1853.805,435.333,1853.805,447.667,1853.805,459.333C1853.805,471,1853.805,482,1853.805,487.5L1853.805,493" id="my-svg-L_POLICY_SKILLTOOL_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_POLICY_SKILLTOOL_0" data-points="W3sieCI6MTY2MS40MTQwNjI1LCJ5IjozNDAuNjQ2MDUyNDQwMjY1Nn0seyJ4IjoxODUzLjgwNDY4NzUsInkiOjM4Nn0seyJ4IjoxODUzLjgwNDY4NzUsInkiOjQyM30seyJ4IjoxODUzLjgwNDY4NzUsInkiOjQ2MH0seyJ4IjoxODUzLjgwNDY4NzUsInkiOjQ5N31d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M588.32,102.925L739.387,116.437C890.454,129.95,1192.589,156.975,1343.656,174.654C1494.723,192.333,1494.723,200.667,1494.723,209C1494.723,217.333,1494.723,225.667,1533.749,237.891C1572.775,250.116,1650.827,266.232,1689.853,274.291L1728.88,282.349" id="my-svg-L_MEM_LEGACY_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MEM_LEGACY_0" data-points="W3sieCI6NTg4LjMyMDMxMjUsInkiOjEwMi45MjQ1MDA4MDc5OTgxOX0seyJ4IjoxNDk0LjcyMjY1NjI1LCJ5IjoxODR9LHsieCI6MTQ5NC43MjI2NTYyNSwieSI6MjA5fSx7IngiOjE0OTQuNzIyNjU2MjUsInkiOjIzNH0seyJ4IjoxNzMyLjc5Njg3NSwieSI6MjgzLjE1NzU4NzUyNzk5MDl9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M785.422,103.204L922.012,116.67C1058.603,130.136,1331.784,157.068,1468.374,174.701C1604.965,192.333,1604.965,200.667,1604.965,209C1604.965,217.333,1604.965,225.667,1625.631,235.925C1646.297,246.183,1687.628,258.366,1708.294,264.458L1728.96,270.55" id="my-svg-L_USR_LEGACY_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_USR_LEGACY_0" data-points="W3sieCI6Nzg1LjQyMTg3NSwieSI6MTAzLjIwMzc3NzUzMTczODM1fSx7IngiOjE2MDQuOTY0ODQzNzUsInkiOjE4NH0seyJ4IjoxNjA0Ljk2NDg0Mzc1LCJ5IjoyMDl9LHsieCI6MTYwNC45NjQ4NDM3NSwieSI6MjM0fSx7IngiOjE3MzIuNzk2ODc1LCJ5IjoyNzEuNjgwNDc4NzUxNjA5N31d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1309.094,115.857L1383.445,127.214C1457.797,138.572,1606.5,161.286,1680.852,176.81C1755.203,192.333,1755.203,200.667,1755.203,209C1755.203,217.333,1755.203,225.667,1760.557,233.615C1765.912,241.564,1776.62,249.128,1781.974,252.91L1787.329,256.692" id="my-svg-L_FAIL_LEGACY_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_FAIL_LEGACY_0" data-points="W3sieCI6MTMwOS4wOTM3NSwieSI6MTE1Ljg1NzM0MDQ1NzI2OTk0fSx7IngiOjE3NTUuMjAzMTI1LCJ5IjoxODR9LHsieCI6MTc1NS4yMDMxMjUsInkiOjIwOX0seyJ4IjoxNzU1LjIwMzEyNSwieSI6MjM0fSx7IngiOjE3OTAuNTk1ODA1OTIxMDUyNywieSI6MjU5fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1906.5,159L1906.5,163.167C1906.5,167.333,1906.5,175.667,1906.5,184C1906.5,192.333,1906.5,200.667,1906.5,209C1906.5,217.333,1906.5,225.667,1904.436,233.422C1902.373,241.177,1898.245,248.355,1896.182,251.944L1894.118,255.532" id="my-svg-L_SKL_LEGACY_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SKL_LEGACY_0" data-points="W3sieCI6MTkwNi41LCJ5IjoxNTl9LHsieCI6MTkwNi41LCJ5IjoxODR9LHsieCI6MTkwNi41LCJ5IjoyMDl9LHsieCI6MTkwNi41LCJ5IjoyMzR9LHsieCI6MTg5Mi4xMjM5NzIwMzk0NzM4LCJ5IjoyNTl9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1853.805,575L1853.805,583.167C1853.805,591.333,1853.805,607.667,1853.805,622C1853.805,636.333,1853.805,648.667,1853.805,658.333C1853.805,668,1853.805,675,1853.805,678.5L1853.805,682" id="my-svg-L_SKILLTOOL_FULL_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SKILLTOOL_FULL_0" data-points="W3sieCI6MTg1My44MDQ2ODc1LCJ5Ijo1NzV9LHsieCI6MTg1My44MDQ2ODc1LCJ5Ijo2MjR9LHsieCI6MTg1My44MDQ2ODc1LCJ5Ijo2NjF9LHsieCI6MTg1My44MDQ2ODc1LCJ5Ijo2ODZ9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M433.492,112.547L377.777,124.456C322.063,136.365,210.633,160.182,154.918,176.258C99.203,192.333,99.203,200.667,99.203,209C99.203,217.333,99.203,225.667,99.203,242.5C99.203,259.333,99.203,284.667,99.203,310C99.203,335.333,99.203,360.667,99.203,379.5C99.203,398.333,99.203,410.667,99.203,423C99.203,435.333,99.203,447.667,99.203,466.5C99.203,485.333,99.203,510.667,99.203,538C99.203,565.333,99.203,594.667,99.203,615.5C99.203,636.333,99.203,648.667,116.53,659.883C133.857,671.099,168.51,681.199,185.837,686.249L203.164,691.298" id="my-svg-L_MEM_SQM_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MEM_SQM_0" data-points="W3sieCI6NDMzLjQ5MjE4NzUsInkiOjExMi41NDY5NjU3MjkyNDk2OX0seyJ4Ijo5OS4yMDMxMjUsInkiOjE4NH0seyJ4Ijo5OS4yMDMxMjUsInkiOjIwOX0seyJ4Ijo5OS4yMDMxMjUsInkiOjIzNH0seyJ4Ijo5OS4yMDMxMjUsInkiOjMxMH0seyJ4Ijo5OS4yMDMxMjUsInkiOjM4Nn0seyJ4Ijo5OS4yMDMxMjUsInkiOjQyM30seyJ4Ijo5OS4yMDMxMjUsInkiOjQ2MH0seyJ4Ijo5OS4yMDMxMjUsInkiOjUzNn0seyJ4Ijo5OS4yMDMxMjUsInkiOjYyNH0seyJ4Ijo5OS4yMDMxMjUsInkiOjY2MX0seyJ4IjoyMDcuMDAzOTA2MjUsInkiOjY5Mi40MTc2ODUwNDE4OTEyfV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M639.281,111.655L583.003,123.713C526.724,135.77,414.167,159.885,357.888,176.109C301.609,192.333,301.609,200.667,301.609,209C301.609,217.333,301.609,225.667,301.609,242.5C301.609,259.333,301.609,284.667,301.609,310C301.609,335.333,301.609,360.667,301.609,379.5C301.609,398.333,301.609,410.667,301.609,423C301.609,435.333,301.609,447.667,301.609,466.5C301.609,485.333,301.609,510.667,301.609,538C301.609,565.333,301.609,594.667,301.609,615.5C301.609,636.333,301.609,648.667,302.556,658.356C303.502,668.046,305.395,675.091,306.341,678.614L307.287,682.137" id="my-svg-L_USR_SQM_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_USR_SQM_0" data-points="W3sieCI6NjM5LjI4MTI1LCJ5IjoxMTEuNjU1MDQ1MTczNTYxNTh9LHsieCI6MzAxLjYwOTM3NSwieSI6MTg0fSx7IngiOjMwMS42MDkzNzUsInkiOjIwOX0seyJ4IjozMDEuNjA5Mzc1LCJ5IjoyMzR9LHsieCI6MzAxLjYwOTM3NSwieSI6MzEwfSx7IngiOjMwMS42MDkzNzUsInkiOjM4Nn0seyJ4IjozMDEuNjA5Mzc1LCJ5Ijo0MjN9LHsieCI6MzAxLjYwOTM3NSwieSI6NDYwfSx7IngiOjMwMS42MDkzNzUsInkiOjUzNn0seyJ4IjozMDEuNjA5Mzc1LCJ5Ijo2MjR9LHsieCI6MzAxLjYwOTM3NSwieSI6NjYxfSx7IngiOjMwOC4zMjQ3NjgwNjY0MDYyNSwieSI6Njg2fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1049.094,113.607L962.469,125.339C875.845,137.071,702.596,160.536,615.972,176.434C529.348,192.333,529.348,200.667,529.348,209C529.348,217.333,529.348,225.667,529.348,242.5C529.348,259.333,529.348,284.667,529.348,310C529.348,335.333,529.348,360.667,529.348,379.5C529.348,398.333,529.348,410.667,529.348,423C529.348,435.333,529.348,447.667,529.348,466.5C529.348,485.333,529.348,510.667,529.348,538C529.348,565.333,529.348,594.667,529.348,615.5C529.348,636.333,529.348,648.667,513.527,659.642C497.707,670.618,466.066,680.236,450.245,685.045L434.425,689.854" id="my-svg-L_FAIL_SQM_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_FAIL_SQM_0" data-points="W3sieCI6MTA0OS4wOTM3NSwieSI6MTEzLjYwNjg3NzY4NjU5NjMzfSx7IngiOjUyOS4zNDc2NTYyNSwieSI6MTg0fSx7IngiOjUyOS4zNDc2NTYyNSwieSI6MjA5fSx7IngiOjUyOS4zNDc2NTYyNSwieSI6MjM0fSx7IngiOjUyOS4zNDc2NTYyNSwieSI6MzEwfSx7IngiOjUyOS4zNDc2NTYyNSwieSI6Mzg2fSx7IngiOjUyOS4zNDc2NTYyNSwieSI6NDIzfSx7IngiOjUyOS4zNDc2NTYyNSwieSI6NDYwfSx7IngiOjUyOS4zNDc2NTYyNSwieSI6NTM2fSx7IngiOjUyOS4zNDc2NTYyNSwieSI6NjI0fSx7IngiOjUyOS4zNDc2NTYyNSwieSI6NjYxfSx7IngiOjQzMC41OTc2NTYyNSwieSI6NjkxLjAxNzA2ODY0NTY0fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M961.602,587L961.602,593.167C961.602,599.333,961.602,611.667,961.602,624C961.602,636.333,961.602,648.667,873.764,663.579C785.927,678.491,610.253,695.982,522.415,704.727L434.578,713.473" id="my-svg-L_BACKFILL_SQM_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_BACKFILL_SQM_0" data-points="W3sieCI6OTYxLjYwMTU2MjUsInkiOjU4N30seyJ4Ijo5NjEuNjAxNTYyNSwieSI6NjI0fSx7IngiOjk2MS42MDE1NjI1LCJ5Ijo2NjF9LHsieCI6NDMwLjU5NzY1NjI1LCJ5Ijo3MTMuODY5MDI0MTA3MTQ4M31d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1255.5,575L1255.5,583.167C1255.5,591.333,1255.5,607.667,1255.5,622C1255.5,636.333,1255.5,648.667,1118.681,664.181C981.863,679.696,708.226,698.393,571.407,707.741L434.588,717.089" id="my-svg-L_MSEARCH_SQM_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_MSEARCH_SQM_0" data-points="W3sieCI6MTI1NS41LCJ5Ijo1NzV9LHsieCI6MTI1NS41LCJ5Ijo2MjR9LHsieCI6MTI1NS41LCJ5Ijo2NjF9LHsieCI6NDMwLjU5NzY1NjI1LCJ5Ijo3MTcuMzYxNDc1NDI2OTI3Mn1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1531.414,575L1531.414,583.167C1531.414,591.333,1531.414,607.667,1531.414,622C1531.414,636.333,1531.414,648.667,1400.444,664.03C1269.473,679.392,1007.533,697.785,876.562,706.981L745.592,716.177" id="my-svg-L_SSEARCH_SQS_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_SSEARCH_SQS_0" data-points="W3sieCI6MTUzMS40MTQwNjI1LCJ5Ijo1NzV9LHsieCI6MTUzMS40MTQwNjI1LCJ5Ijo2MjR9LHsieCI6MTUzMS40MTQwNjI1LCJ5Ijo2NjF9LHsieCI6NzQxLjYwMTU2MjUsInkiOjcxNi40NTcyNjc5OTc0OTcyfV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_POLICY_MSEARCH_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_POLICY_SSEARCH_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_POLICY_SKILLTOOL_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_MEM_LEGACY_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_USR_LEGACY_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_FAIL_LEGACY_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_SKL_LEGACY_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" transform="translate(1853.8046875, 624)"><g class="label" data-id="L_SKILLTOOL_FULL_0" transform="translate(-16.515625, -12)"><foreignObject width="33.03125" height="24"><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"><p>view</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(99.203125, 423)"><g class="label" data-id="L_MEM_SQM_0" transform="translate(-91.203125, -12)"><foreignObject width="182.40625" height="24"><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"><p>successful saves mirrored</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(301.609375, 423)"><g class="label" data-id="L_USR_SQM_0" transform="translate(-91.203125, -12)"><foreignObject width="182.40625" height="24"><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"><p>successful saves mirrored</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(529.34765625, 423)"><g class="label" data-id="L_FAIL_SQM_0" transform="translate(-91.203125, -12)"><foreignObject width="182.40625" height="24"><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"><p>successful saves mirrored</p></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_BACKFILL_SQM_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_MSEARCH_SQM_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_SSEARCH_SQS_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-MEM-0" data-look="classic" transform="translate(510.90625, 96)"><rect class="basic label-container" style="" x="-77.4140625" y="-39" width="154.828125" height="78"/><g class="label" style="" transform="translate(-47.4140625, -24)"><rect/><foreignObject width="94.828125" 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.md<br /><i>Agent's notes</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-USR-1" data-look="classic" transform="translate(712.3515625, 96)"><rect class="basic label-container" style="" x="-73.0703125" y="-39" width="146.140625" height="78"/><g class="label" style="" transform="translate(-43.0703125, -24)"><rect/><foreignObject width="86.140625" 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>USER.md<br /><i>User profile</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-FAIL-2" data-look="classic" transform="translate(1179.09375, 96)"><rect class="basic label-container" style="" x="-130" y="-63" width="260" height="126"/><g class="label" style="" transform="translate(-100, -48)"><rect/><foreignObject width="200" height="96"><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>failures.md<br /><i>Failure memory</i><br />corrections, insights, failures</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SKL-3" data-look="classic" transform="translate(1906.5, 96)"><rect class="basic label-container" style="" x="-102.59375" y="-63" width="205.1875" height="126"/><g class="label" style="" transform="translate(-72.59375, -48)"><rect/><foreignObject width="145.1875" height="96"><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/<br /><i>Procedural memory</i><br />debug-ts.md<br />deploy-checklist.md</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SQM-4" data-look="classic" transform="translate(318.80078125, 725)"><rect class="basic label-container" style="fill:#0b525b !important;stroke:#fff !important" x="-111.796875" y="-39" width="223.59375" height="78"/><g class="label" style="color:#fff !important" transform="translate(-81.796875, -24)"><rect/><foreignObject width="163.59375" 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>memories table + FTS5<br /><i>search mirror/store</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SQS-5" data-look="classic" transform="translate(619.9375, 725)"><rect class="basic label-container" style="fill:#1b4332 !important;stroke:#fff !important" x="-121.6640625" y="-39" width="243.328125" height="78"/><g class="label" style="color:#fff !important" transform="translate(-91.6640625, -24)"><rect/><foreignObject width="183.328125" 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>sessions/messages + FTS5<br /><i>session search</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-POLICY-6" data-look="classic" transform="translate(1531.4140625, 310)"><rect class="basic label-container" style="fill:#1a1a2e !important;stroke:#e94560 !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>Memory policy<br /><i>when to search + safety rules</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-LEGACY-7" data-look="classic" transform="translate(1862.796875, 310)"><rect class="basic label-container" style="fill:#2d1b2e !important;stroke:#ff6b6b !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>Legacy full blocks<br /><i>only with memoryMode=legacy-inject</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-MSEARCH-8" data-look="classic" transform="translate(1255.5, 536)"><rect class="basic label-container" style="" x="-113.8984375" y="-39" width="227.796875" height="78"/><g class="label" style="" transform="translate(-83.8984375, -24)"><rect/><foreignObject width="167.796875" 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<br /><i>query SQLite memories</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SSEARCH-9" data-look="classic" transform="translate(1531.4140625, 536)"><rect class="basic label-container" style="" x="-112.015625" y="-39" width="224.03125" height="78"/><g class="label" style="" transform="translate(-82.015625, -24)"><rect/><foreignObject width="164.03125" 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_search<br /><i>query indexed sessions</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SKILLTOOL-10" data-look="classic" transform="translate(1853.8046875, 536)"><rect class="basic label-container" style="fill:#16213e !important;stroke:#0f3460 !important" x="-160.375" y="-39" width="320.75" height="78"/><g class="label" style="color:#fff !important" transform="translate(-130.375, -24)"><rect/><foreignObject width="260.75" height="48"><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>skill tool<br /><i>list/view/create/patch/edit/delete</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-BACKFILL-11" data-look="classic" transform="translate(961.6015625, 536)"><rect class="basic label-container" style="fill:#3a0ca3 !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>/memory-sync-markdown<br /><i>idempotent Markdown → SQLite sync</i></p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-FULL-12" data-look="classic" transform="translate(1853.8046875, 725)"><rect class="basic label-container" style="fill:#0a1128 !important;stroke:#1282a2 !important" x="-106.078125" y="-39" width="212.15625" height="78"/><g class="label" style="color:#fff !important" transform="translate(-76.078125, -24)"><rect/><foreignObject width="152.15625" 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>Full skill content<br />Loaded when needed</p></span></div></foreignObject></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>