pi-hermes-memory 0.3.2 → 0.3.3
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.
- package/README.md +4 -141
- package/docs/images/memory-architecture.svg +1 -0
- package/docs/images/security-flow.svg +1 -0
- package/docs/images/session-lifecycle.svg +1 -0
- package/docs/images/source-architecture.svg +1 -0
- package/docs/mermaid/memory-architecture.mmd +26 -0
- package/docs/mermaid/security-flow.mmd +22 -0
- package/docs/mermaid/session-lifecycle.mmd +43 -0
- package/docs/mermaid/source-architecture.mmd +42 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,51 +24,7 @@ Your Pi agent normally forgets everything when you close a session. This extensi
|
|
|
24
24
|
|
|
25
25
|
### Session Lifecycle
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
sequenceDiagram
|
|
29
|
-
participant User
|
|
30
|
-
participant Pi
|
|
31
|
-
participant Extension
|
|
32
|
-
participant Disk as ~/.pi/agent/memory/
|
|
33
|
-
|
|
34
|
-
Note over Pi,Disk: ── Session Start ──
|
|
35
|
-
Pi->>Extension: session_start event
|
|
36
|
-
Extension->>Disk: loadFromDisk() — read MEMORY.md + USER.md + skills/
|
|
37
|
-
Extension-->>Extension: Capture frozen snapshot (memory + skill index)
|
|
38
|
-
|
|
39
|
-
Note over Pi,Disk: ── System Prompt Injection ──
|
|
40
|
-
Pi->>Extension: before_agent_start event
|
|
41
|
-
Extension-->>Pi: systemPrompt + frozen memory block + skill index
|
|
42
|
-
Note right of Pi: Agent now "remembers"<br/>facts AND procedures<br/>from past sessions
|
|
43
|
-
|
|
44
|
-
Note over Pi,Disk: ── Agent Loop ──
|
|
45
|
-
User->>Pi: "Remember I prefer vim"
|
|
46
|
-
Pi->>Extension: tool_call (memory, add)
|
|
47
|
-
Extension->>Extension: scanContent() — security check
|
|
48
|
-
Extension->>Disk: Atomic write to USER.md
|
|
49
|
-
Extension-->>Pi: { success: true, usage: "3% — 41/1375" }
|
|
50
|
-
|
|
51
|
-
Note over Pi,Disk: ── User Correction ──
|
|
52
|
-
User->>Pi: "No, don't use npm — use pnpm"
|
|
53
|
-
Extension->>Extension: isCorrection() = true
|
|
54
|
-
Extension->>Pi: pi.exec("pi -p", correctionPrompt)
|
|
55
|
-
Note right of Pi: Immediate save<br/>no waiting for nudge
|
|
56
|
-
|
|
57
|
-
Note over Pi,Disk: ── Complex Task (8+ tool calls) ──
|
|
58
|
-
Pi->>Extension: turn_end (8 tool calls, 3 tool types)
|
|
59
|
-
Extension->>Pi: pi.exec("pi -p", skillExtractionPrompt)
|
|
60
|
-
Note right of Pi: Extract reusable<br/>procedure as skill
|
|
61
|
-
|
|
62
|
-
Note over Pi,Disk: ── Background Review (10 turns or 15 tool calls) ──
|
|
63
|
-
Pi->>Extension: turn_end event
|
|
64
|
-
Extension->>Pi: pi.exec("pi -p", reviewPrompt)
|
|
65
|
-
Note right of Pi: Reviews conversation<br/>saves memories AND skills
|
|
66
|
-
|
|
67
|
-
Note over Pi,Disk: ── Session End ──
|
|
68
|
-
Pi->>Extension: session_shutdown event
|
|
69
|
-
Extension->>Pi: pi.exec("pi -p", flushPrompt)
|
|
70
|
-
Note right of Pi: One last turn to flush<br/>anything worth saving
|
|
71
|
-
```
|
|
27
|
+

|
|
72
28
|
|
|
73
29
|
### Memory + Skills Architecture
|
|
74
30
|
|
|
@@ -80,63 +36,13 @@ The extension manages three types of knowledge:
|
|
|
80
36
|
| **User Profile** (USER.md) | Who you are — name, preferences, communication style | 1,375 chars max | Fixed per session |
|
|
81
37
|
| **Skills** (skills/*.md) | Procedures — *how* to do something, reusable across sessions | Unlimited | ~3K for index, full on demand |
|
|
82
38
|
|
|
83
|
-
|
|
84
|
-
graph TB
|
|
85
|
-
subgraph "Persistent Storage"
|
|
86
|
-
MEM["MEMORY.md<br/><i>Agent's notes</i>"]
|
|
87
|
-
USR["USER.md<br/><i>User profile</i>"]
|
|
88
|
-
SKL["skills/<br/><i>Procedural memory</i><br/>debug-ts.md<br/>deploy-checklist.md"]
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
subgraph "System Prompt (frozen snapshot)"
|
|
92
|
-
SMEM["Memory block<br/>Full content"]
|
|
93
|
-
SUSR["User block<br/>Full content"]
|
|
94
|
-
SSKL["Skill index<br/>Names + descriptions only"]
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
subgraph "On Demand (via skill tool)"
|
|
98
|
-
FULL["Full skill content<br/>Loaded when needed"]
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
MEM --> SMEM
|
|
102
|
-
USR --> SUSR
|
|
103
|
-
SKL --> SSKL
|
|
104
|
-
SSKL -.->|"skill view"| FULL
|
|
105
|
-
|
|
106
|
-
style SMEM fill:#1a1a2e,stroke:#e94560,color:#fff
|
|
107
|
-
style SUSR fill:#1a1a2e,stroke:#e94560,color:#fff
|
|
108
|
-
style SSKL fill:#16213e,stroke:#0f3460,color:#fff
|
|
109
|
-
style FULL fill:#0a1128,stroke:#1282a2,color:#fff
|
|
110
|
-
```
|
|
39
|
+

|
|
111
40
|
|
|
112
41
|
### Security: Content Scanning
|
|
113
42
|
|
|
114
43
|
Every write — memory and skills — passes through a scanner before being accepted. This prevents the LLM from being tricked into storing malicious content that would later be injected into the system prompt.
|
|
115
44
|
|
|
116
|
-
|
|
117
|
-
flowchart LR
|
|
118
|
-
A["LLM calls<br/>memory or skill"] --> B{scanContent}
|
|
119
|
-
B -->|Blocked| C["❌ Return error"]
|
|
120
|
-
B -->|Safe| D{Char limit<br/>check}
|
|
121
|
-
D -->|Exceeds| E{autoConsolidate?}
|
|
122
|
-
E -->|Yes| G["🔄 Merge & prune<br/>then retry"]
|
|
123
|
-
E -->|No| F["❌ Return budget error"]
|
|
124
|
-
D -->|Within limit| H["✅ Write to disk"]
|
|
125
|
-
|
|
126
|
-
subgraph "Blocked Patterns"
|
|
127
|
-
P1["'ignore previous instructions'"]
|
|
128
|
-
P2["'curl ${API_KEY}'"]
|
|
129
|
-
P3["Zero-width chars"]
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
B -.- P1
|
|
133
|
-
B -.- P2
|
|
134
|
-
B -.- P3
|
|
135
|
-
|
|
136
|
-
style C fill:#3d0000,stroke:#ff4444,color:#fff
|
|
137
|
-
style G fill:#003d3d,stroke:#00cccc,color:#fff
|
|
138
|
-
style H fill:#003d00,stroke:#44ff44,color:#fff
|
|
139
|
-
```
|
|
45
|
+

|
|
140
46
|
|
|
141
47
|
## Installation
|
|
142
48
|
|
|
@@ -401,50 +307,7 @@ These are plain markdown files. You can read and edit them directly if you want
|
|
|
401
307
|
|
|
402
308
|
## Architecture
|
|
403
309
|
|
|
404
|
-
|
|
405
|
-
graph LR
|
|
406
|
-
subgraph "pi-hermes-memory/src/"
|
|
407
|
-
IDX["index.ts<br/><i>Entry point</i>"]
|
|
408
|
-
MS["memory-store.ts<br/><i>Memory CRUD</i>"]
|
|
409
|
-
SS["skill-store.ts<br/><i>Skill CRUD</i>"]
|
|
410
|
-
MT["memory-tool.ts<br/><i>Memory LLM tool</i>"]
|
|
411
|
-
ST["skill-tool.ts<br/><i>Skill LLM tool</i>"]
|
|
412
|
-
CS["content-scanner.ts<br/><i>Security</i>"]
|
|
413
|
-
BR["background-review.ts<br/><i>Learning loop</i>"]
|
|
414
|
-
AC["auto-consolidate.ts<br/><i>Memory merge</i>"]
|
|
415
|
-
CD["correction-detector.ts<br/><i>Instant save</i>"]
|
|
416
|
-
SA["skill-auto-trigger.ts<br/><i>Skill extraction</i>"]
|
|
417
|
-
SF["session-flush.ts<br/><i>Pre-compaction flush</i>"]
|
|
418
|
-
IN["insights.ts<br/><i>/memory-insights</i>"]
|
|
419
|
-
SC["skills-command.ts<br/><i>/memory-skills</i>"]
|
|
420
|
-
end
|
|
421
|
-
|
|
422
|
-
IDX --> MS
|
|
423
|
-
IDX --> SS
|
|
424
|
-
IDX --> MT
|
|
425
|
-
IDX --> ST
|
|
426
|
-
IDX --> BR
|
|
427
|
-
IDX --> AC
|
|
428
|
-
IDX --> CD
|
|
429
|
-
IDX --> SA
|
|
430
|
-
IDX --> SF
|
|
431
|
-
IDX --> IN
|
|
432
|
-
IDX --> SC
|
|
433
|
-
MT --> MS
|
|
434
|
-
ST --> SS
|
|
435
|
-
MS --> CS
|
|
436
|
-
SS --> CS
|
|
437
|
-
BR --> MS
|
|
438
|
-
AC --> MS
|
|
439
|
-
CD --> MS
|
|
440
|
-
SA --> MS
|
|
441
|
-
SA --> SS
|
|
442
|
-
|
|
443
|
-
style IDX fill:#e94560,stroke:#fff,color:#fff
|
|
444
|
-
style MS fill:#0f3460,stroke:#fff,color:#fff
|
|
445
|
-
style SS fill:#0f3460,stroke:#fff,color:#fff
|
|
446
|
-
style CS fill:#ff6600,stroke:#fff,color:#fff
|
|
447
|
-
```
|
|
310
|
+

|
|
448
311
|
|
|
449
312
|
## Credits
|
|
450
313
|
|
|
@@ -0,0 +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: 738.25px; background-color: white;" viewBox="0 0 738.25 572" 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-subGraph2" data-look="classic"><rect style="" x="431" y="436" width="282.15625" height="128"/><g class="cluster-label" transform="translate(479.0625, 436)"><foreignObject width="186.03125" 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 (via skill tool)</p></span></div></foreignObject></g></g><g class="cluster" id="my-svg-subGraph1" data-look="classic"><rect style="" x="8" y="234" width="722.25" height="128"/><g class="cluster-label" transform="translate(250.8203125, 234)"><foreignObject width="236.609375" 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 (frozen snapshot)</p></span></div></foreignObject></g></g><g class="cluster" id="my-svg-subGraph0" data-look="classic"><rect style="" x="10.1328125" y="8" width="699.5390625" height="176"/><g class="cluster-label" transform="translate(295.08984375, 8)"><foreignObject width="129.625" 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>Persistent Storage</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path d="M122.547,135L122.547,143.167C122.547,151.333,122.547,167.667,122.547,180C122.547,192.333,122.547,200.667,122.547,209C122.547,217.333,122.547,225.667,122.547,233.333C122.547,241,122.547,248,122.547,251.5L122.547,255" id="my-svg-L_MEM_SMEM_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_MEM_SMEM_0" data-points="W3sieCI6MTIyLjU0Njg3NSwieSI6MTM1fSx7IngiOjEyMi41NDY4NzUsInkiOjE4NH0seyJ4IjoxMjIuNTQ2ODc1LCJ5IjoyMDl9LHsieCI6MTIyLjU0Njg3NSwieSI6MjM0fSx7IngiOjEyMi41NDY4NzUsInkiOjI1OX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M325.5,135L325.5,143.167C325.5,151.333,325.5,167.667,325.5,180C325.5,192.333,325.5,200.667,325.5,209C325.5,217.333,325.5,225.667,325.5,233.333C325.5,241,325.5,248,325.5,251.5L325.5,255" id="my-svg-L_USR_SUSR_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_USR_SUSR_0" data-points="W3sieCI6MzI1LjUsInkiOjEzNX0seyJ4IjozMjUuNSwieSI6MTg0fSx7IngiOjMyNS41LCJ5IjoyMDl9LHsieCI6MzI1LjUsInkiOjIzNH0seyJ4IjozMjUuNSwieSI6MjU5fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M572.078,159L572.078,163.167C572.078,167.333,572.078,175.667,572.078,184C572.078,192.333,572.078,200.667,572.078,209C572.078,217.333,572.078,225.667,572.078,233.333C572.078,241,572.078,248,572.078,251.5L572.078,255" id="my-svg-L_SKL_SSKL_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_SKL_SSKL_0" data-points="W3sieCI6NTcyLjA3ODEyNSwieSI6MTU5fSx7IngiOjU3Mi4wNzgxMjUsInkiOjE4NH0seyJ4Ijo1NzIuMDc4MTI1LCJ5IjoyMDl9LHsieCI6NTcyLjA3ODEyNSwieSI6MjM0fSx7IngiOjU3Mi4wNzgxMjUsInkiOjI1OX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M572.078,337L572.078,341.167C572.078,345.333,572.078,353.667,572.078,364C572.078,374.333,572.078,386.667,572.078,399C572.078,411.333,572.078,423.667,572.078,433.333C572.078,443,572.078,450,572.078,453.5L572.078,457" id="my-svg-L_SSKL_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_SSKL_FULL_0" data-points="W3sieCI6NTcyLjA3ODEyNSwieSI6MzM3fSx7IngiOjU3Mi4wNzgxMjUsInkiOjM2Mn0seyJ4Ijo1NzIuMDc4MTI1LCJ5IjozOTl9LHsieCI6NTcyLjA3ODEyNSwieSI6NDM2fSx7IngiOjU3Mi4wNzgxMjUsInkiOjQ2MX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_MEM_SMEM_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_SUSR_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_SSKL_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(572.078125, 399)"><g class="label" data-id="L_SSKL_FULL_0" transform="translate(-33.203125, -12)"><foreignObject width="66.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>skill view</p></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default" id="my-svg-flowchart-MEM-0" data-look="classic" transform="translate(122.546875, 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(325.5, 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-SKL-2" data-look="classic" transform="translate(572.078125, 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-SMEM-3" data-look="classic" transform="translate(122.546875, 298)"><rect class="basic label-container" style="fill:#1a1a2e !important;stroke:#e94560 !important" x="-79.546875" y="-39" width="159.09375" height="78"/><g class="label" style="color:#fff !important" transform="translate(-49.546875, -24)"><rect/><foreignObject width="99.09375" 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 block<br />Full content</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SUSR-4" data-look="classic" transform="translate(325.5, 298)"><rect class="basic label-container" style="fill:#1a1a2e !important;stroke:#e94560 !important" x="-73.40625" y="-39" width="146.8125" height="78"/><g class="label" style="color:#fff !important" transform="translate(-43.40625, -24)"><rect/><foreignObject width="86.8125" 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>User block<br />Full content</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SSKL-5" data-look="classic" transform="translate(572.078125, 298)"><rect class="basic label-container" style="fill:#16213e !important;stroke:#0f3460 !important" x="-123.171875" y="-39" width="246.34375" height="78"/><g class="label" style="color:#fff !important" transform="translate(-93.171875, -24)"><rect/><foreignObject width="186.34375" 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 index<br />Names + descriptions only</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-FULL-6" data-look="classic" transform="translate(572.078125, 500)"><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>
|
|
@@ -0,0 +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: 1406.55px; background-color: white;" viewBox="0 0 1406.546875 695.015625" 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-subGraph0" data-look="classic"><rect style="" x="477.59375" y="8" width="310" height="356"/><g class="cluster-label" transform="translate(572.46875, 8)"><foreignObject width="120.25" 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>Blocked Patterns</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path d="M178.984,302L183.151,302C187.318,302,195.651,302,203.318,302C210.984,302,217.984,302,221.484,302L224.984,302" id="my-svg-L_A_B_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_A_B_0" data-points="W3sieCI6MTc4Ljk4NDM3NSwieSI6MzAyfSx7IngiOjIwMy45ODQzNzUsInkiOjMwMn0seyJ4IjoyMjguOTg0Mzc1LCJ5IjozMDJ9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M335.985,337.609L350.753,352.34C365.521,367.072,395.058,396.536,418.659,411.268C442.26,426,459.927,426,479.507,426C499.086,426,520.578,426,531.324,426L542.07,426" id="my-svg-L_B_C_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_B_C_0" data-points="W3sieCI6MzM1Ljk4NTE1NDIwOTc5NzcsInkiOjMzNy42MDg1OTU3OTAyMDIzfSx7IngiOjQyNC41OTM3NSwieSI6NDI2fSx7IngiOjQ3Ny41OTM3NSwieSI6NDI2fSx7IngiOjU0Ni4wNzAzMTI1LCJ5Ijo0MjZ9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M322.452,351.142L339.476,388.888C356.499,426.633,390.547,502.125,416.403,539.871C442.26,577.617,459.927,577.617,481.491,577.617C503.055,577.617,528.516,577.617,541.246,577.617L553.977,577.617" id="my-svg-L_B_D_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_B_D_0" data-points="W3sieCI6MzIyLjQ1MjE1ODQ3MjExMzcsInkiOjM1MS4xNDE1OTE1Mjc4ODYzfSx7IngiOjQyNC41OTM3NSwieSI6NTc3LjYxNzE4NzV9LHsieCI6NDc3LjU5Mzc1LCJ5Ijo1NzcuNjE3MTg3NX0seyJ4Ijo1NTcuOTc2NTYyNSwieSI6NTc3LjYxNzE4NzV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M681.312,551.718L699.026,542.302C716.739,532.885,752.167,514.052,781.101,504.635C810.036,495.219,832.479,495.219,854.297,495.219C876.115,495.219,897.307,495.219,907.904,495.219L918.5,495.219" id="my-svg-L_D_E_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_D_E_0" data-points="W3sieCI6NjgxLjMxMjExNjQwNjY4NzEsInkiOjU1MS43MTgzNjY0MDY2ODcxfSx7IngiOjc4Ny41OTM3NSwieSI6NDk1LjIxODc1fSx7IngiOjg1NC45MjE4NzUsInkiOjQ5NS4yMTg3NX0seyJ4Ijo5MjIuNSwieSI6NDk1LjIxODc1fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1070.172,467.297L1080.922,462.284C1091.672,457.271,1113.172,447.245,1132.426,442.232C1151.68,437.219,1168.688,437.219,1177.191,437.219L1185.695,437.219" id="my-svg-L_E_G_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_E_G_0" data-points="W3sieCI6MTA3MC4xNzIwNTcwNTk2Mjk5LCJ5Ijo0NjcuMjk3MDU3MDU5NjI5OX0seyJ4IjoxMTM0LjY3MTg3NSwieSI6NDM3LjIxODc1fSx7IngiOjExODkuNjk1MzEyNSwieSI6NDM3LjIxODc1fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1070.172,523.14L1080.922,528.153C1091.672,533.167,1113.172,543.193,1129.31,548.206C1145.448,553.219,1156.224,553.219,1161.612,553.219L1167,553.219" id="my-svg-L_E_F_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_E_F_0" data-points="W3sieCI6MTA3MC4xNzIwNTcwNTk2Mjk5LCJ5Ijo1MjMuMTQwNDQyOTQwMzcwMX0seyJ4IjoxMTM0LjY3MTg3NSwieSI6NTUzLjIxODc1fSx7IngiOjExNzEsInkiOjU1My4yMTg3NX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M681.312,603.516L699.026,612.933C716.739,622.349,752.167,641.182,781.101,650.599C810.036,660.016,832.479,660.016,854.255,660.016C876.031,660.016,897.141,660.016,907.695,660.016L918.25,660.016" id="my-svg-L_D_H_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_D_H_0" data-points="W3sieCI6NjgxLjMxMjExNjQwNjY4NzEsInkiOjYwMy41MTYwMDg1OTMzMTI5fSx7IngiOjc4Ny41OTM3NSwieSI6NjYwLjAxNTYyNX0seyJ4Ijo4NTQuOTIxODc1LCJ5Ijo2NjAuMDE1NjI1fSx7IngiOjkyMi4yNSwieSI6NjYwLjAxNTYyNX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M326.032,256.439L342.459,227.365C358.886,198.292,391.74,140.146,417,111.073C442.26,82,459.927,82,472.927,82C485.927,82,494.26,82,498.427,82L502.594,82" id="my-svg-L_B_P1_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_B_P1_0" data-points="W3sieCI6MzI2LjAzMjI2OTY2MTQ1NTM2LCJ5IjoyNTYuNDM4NTE5NjYxNDU1MzZ9LHsieCI6NDI0LjU5Mzc1LCJ5Ijo4Mn0seyJ4Ijo0NzcuNTkzNzUsInkiOjgyfSx7IngiOjUwMi41OTM3NSwieSI6ODJ9XQ==" data-look="classic"/><path d="M339.112,269.518L353.359,257.599C367.606,245.679,396.1,221.839,419.18,209.92C442.26,198,459.927,198,479.945,198C499.964,198,522.333,198,533.518,198L544.703,198" id="my-svg-L_B_P2_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_B_P2_0" data-points="W3sieCI6MzM5LjExMjIxMTQ4NTgxNiwieSI6MjY5LjUxODQ2MTQ4NTgxNn0seyJ4Ijo0MjQuNTkzNzUsInkiOjE5OH0seyJ4Ijo0NzcuNTkzNzUsInkiOjE5OH0seyJ4Ijo1NDQuNzAzMTI1LCJ5IjoxOTh9XQ==" data-look="classic"/><path d="M371.594,302L380.427,302C389.26,302,406.927,302,424.594,302C442.26,302,459.927,302,479.488,302C499.049,302,520.505,302,531.233,302L541.961,302" id="my-svg-L_B_P3_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_B_P3_0" data-points="W3sieCI6MzcxLjU5Mzc1LCJ5IjozMDJ9LHsieCI6NDI0LjU5Mzc1LCJ5IjozMDJ9LHsieCI6NDc3LjU5Mzc1LCJ5IjozMDJ9LHsieCI6NTQxLjk2MDkzNzUsInkiOjMwMn1d" data-look="classic"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_A_B_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(424.59375, 426)"><g class="label" data-id="L_B_C_0" transform="translate(-28, -12)"><foreignObject width="56" 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>Blocked</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(424.59375, 577.6171875)"><g class="label" data-id="L_B_D_0" transform="translate(-15.375, -12)"><foreignObject width="30.75" 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>Safe</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(854.921875, 495.21875)"><g class="label" data-id="L_D_E_0" transform="translate(-28.6796875, -12)"><foreignObject width="57.359375" 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>Exceeds</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(1134.671875, 437.21875)"><g class="label" data-id="L_E_G_0" transform="translate(-11.328125, -12)"><foreignObject width="22.65625" 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>Yes</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(1134.671875, 553.21875)"><g class="label" data-id="L_E_F_0" transform="translate(-9.3984375, -12)"><foreignObject width="18.796875" 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>No</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(854.921875, 660.015625)"><g class="label" data-id="L_D_H_0" transform="translate(-42.328125, -12)"><foreignObject width="84.65625" 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>Within limit</p></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_B_P1_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_B_P2_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_B_P3_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-A-0" data-look="classic" transform="translate(93.4921875, 302)"><rect class="basic label-container" style="" x="-85.4921875" y="-39" width="170.984375" height="78"/><g class="label" style="" transform="translate(-55.4921875, -24)"><rect/><foreignObject width="110.984375" 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>LLM calls<br />memory or skill</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-B-1" data-look="classic" transform="translate(300.2890625, 302)"><polygon points="71.3046875,0 142.609375,-71.3046875 71.3046875,-142.609375 0,-71.3046875" class="label-container" transform="translate(-70.8046875, 71.3046875)"/><g class="label" style="" transform="translate(-44.3046875, -12)"><rect/><foreignObject width="88.609375" height="24"><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>scanContent</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-C-3" data-look="classic" transform="translate(632.59375, 426)"><rect class="basic label-container" style="fill:#3d0000 !important;stroke:#ff4444 !important" x="-86.5234375" y="-27" width="173.046875" height="54"/><g class="label" style="color:#fff !important" transform="translate(-56.5234375, -12)"><rect/><foreignObject width="113.046875" height="24"><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>❌ Return error</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-D-5" data-look="classic" transform="translate(632.59375, 577.6171875)"><polygon points="74.6171875,0 149.234375,-74.6171875 74.6171875,-149.234375 0,-74.6171875" class="label-container" transform="translate(-74.1171875, 74.6171875)"/><g class="label" style="" transform="translate(-35.6171875, -24)"><rect/><foreignObject width="71.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>Char limit<br />check</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-E-7" data-look="classic" transform="translate(1010.296875, 495.21875)"><polygon points="87.796875,0 175.59375,-87.796875 87.796875,-175.59375 0,-87.796875" class="label-container" transform="translate(-87.296875, 87.796875)"/><g class="label" style="" transform="translate(-60.796875, -12)"><rect/><foreignObject width="121.59375" height="24"><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>autoConsolidate?</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-G-9" data-look="classic" transform="translate(1284.7734375, 437.21875)"><rect class="basic label-container" style="fill:#003d3d !important;stroke:#00cccc !important" x="-95.078125" y="-39" width="190.15625" height="78"/><g class="label" style="color:#fff !important" transform="translate(-65.078125, -24)"><rect/><foreignObject width="130.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>🔄 Merge & prune<br />then retry</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-F-11" data-look="classic" transform="translate(1284.7734375, 553.21875)"><rect class="basic label-container" style="" x="-113.7734375" y="-27" width="227.546875" height="54"/><g class="label" style="" transform="translate(-83.7734375, -12)"><rect/><foreignObject width="167.546875" height="24"><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>❌ Return budget error</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-H-13" data-look="classic" transform="translate(1010.296875, 660.015625)"><rect class="basic label-container" style="fill:#003d00 !important;stroke:#44ff44 !important" x="-88.046875" y="-27" width="176.09375" height="54"/><g class="label" style="color:#fff !important" transform="translate(-58.046875, -12)"><rect/><foreignObject width="116.09375" height="24"><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>✅ Write to disk</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-P1-14" data-look="classic" transform="translate(632.59375, 82)"><rect class="basic label-container" style="" x="-130" y="-39" width="260" height="78"/><g class="label" style="" transform="translate(-100, -24)"><rect/><foreignObject width="200" height="48"><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>'ignore previous instructions'</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-P2-15" data-look="classic" transform="translate(632.59375, 198)"><rect class="basic label-container" style="" x="-87.890625" y="-27" width="175.78125" height="54"/><g class="label" style="" transform="translate(-57.890625, -12)"><rect/><foreignObject width="115.78125" height="24"><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>'curl ${API_KEY}'</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-P3-16" data-look="classic" transform="translate(632.59375, 302)"><rect class="basic label-container" style="" x="-90.6328125" y="-27" width="181.265625" height="54"/><g class="label" style="" transform="translate(-60.6328125, -12)"><rect/><foreignObject width="121.265625" height="24"><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>Zero-width chars</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>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="max-width: 1396.5px; background-color: white;" viewBox="-50 -10 1396.5 1799" role="graphics-document document" aria-roledescription="sequence"><g><rect x="1145.5" y="1713" fill="#eaeaea" stroke="#666" width="151" height="65" name="Disk" rx="3" ry="3" class="actor actor-bottom"/><text x="1221" y="1745.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="1221" dy="0">~/.pi/agent/memory/</tspan></text></g><g><rect x="686" y="1713" fill="#eaeaea" stroke="#666" width="150" height="65" name="Extension" rx="3" ry="3" class="actor actor-bottom"/><text x="761" y="1745.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="761" dy="0">Extension</tspan></text></g><g><rect x="286" y="1713" fill="#eaeaea" stroke="#666" width="150" height="65" name="Pi" rx="3" ry="3" class="actor actor-bottom"/><text x="361" y="1745.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="361" dy="0">Pi</tspan></text></g><g><rect x="0" y="1713" fill="#eaeaea" stroke="#666" width="150" height="65" name="User" rx="3" ry="3" class="actor actor-bottom"/><text x="75" y="1745.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="75" dy="0">User</tspan></text></g><g><line id="actor3" x1="1221" y1="65" x2="1221" y2="1713" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="Disk" data-et="life-line" data-id="Disk"/><g id="root-3" data-et="participant" data-type="participant" data-id="Disk"><rect x="1145.5" y="0" fill="#eaeaea" stroke="#666" width="151" height="65" name="Disk" rx="3" ry="3" class="actor actor-top"/><text x="1221" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="1221" dy="0">~/.pi/agent/memory/</tspan></text></g></g><g><line id="actor2" x1="761" y1="65" x2="761" y2="1713" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="Extension" data-et="life-line" data-id="Extension"/><g id="root-2" data-et="participant" data-type="participant" data-id="Extension"><rect x="686" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" name="Extension" rx="3" ry="3" class="actor actor-top"/><text x="761" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="761" dy="0">Extension</tspan></text></g></g><g><line id="actor1" x1="361" y1="65" x2="361" y2="1713" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="Pi" data-et="life-line" data-id="Pi"/><g id="root-1" data-et="participant" data-type="participant" data-id="Pi"><rect x="286" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" name="Pi" rx="3" ry="3" class="actor actor-top"/><text x="361" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="361" dy="0">Pi</tspan></text></g></g><g><line id="actor0" x1="75" y1="65" x2="75" y2="1713" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="User" data-et="life-line" data-id="User"/><g id="root-0" data-et="participant" data-type="participant" data-id="User"><rect x="0" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" name="User" rx="3" ry="3" class="actor actor-top"/><text x="75" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="75" dy="0">User</tspan></text></g></g><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 .actor{stroke:#9370DB;fill:#ECECFF;stroke-width:1;}#my-svg rect.actor.outer-path[data-look="neo"]{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg rect.note[data-look="neo"]{stroke:#aaaa33;fill:#fff5ad;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg text.actor>tspan{fill:black;stroke:none;}#my-svg .actor-line{stroke:#9370DB;}#my-svg .innerArc{stroke-width:1.5;stroke-dasharray:none;}#my-svg .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#my-svg .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#my-svg [id$="-arrowhead"] path{fill:#333;stroke:#333;}#my-svg .sequenceNumber{fill:white;}#my-svg [id$="-sequencenumber"]{fill:#333;}#my-svg [id$="-crosshead"] path{fill:#333;stroke:#333;}#my-svg .messageText{fill:#333;stroke:none;}#my-svg .labelBox{stroke:#9370DB;fill:#ECECFF;filter:none;}#my-svg .labelText,#my-svg .labelText>tspan{fill:black;stroke:none;}#my-svg .loopText,#my-svg .loopText>tspan{fill:black;stroke:none;}#my-svg .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:#9370DB;fill:#9370DB;}#my-svg .note{stroke:#aaaa33;fill:#fff5ad;}#my-svg .noteText,#my-svg .noteText>tspan{fill:black;stroke:none;font-weight:normal;}#my-svg .activation0{fill:#f4f4f4;stroke:#666;}#my-svg .activation1{fill:#f4f4f4;stroke:#666;}#my-svg .activation2{fill:#f4f4f4;stroke:#666;}#my-svg .actorPopupMenu{position:absolute;}#my-svg .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#my-svg .actor-man circle,#my-svg line{fill:#ECECFF;stroke-width:2px;}#my-svg g rect.rect{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));stroke:#9370DB;}#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/><defs><symbol id="my-svg-computer" width="24" height="24"><path transform="scale(.5)" d="M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z"/></symbol></defs><defs><symbol id="my-svg-database" fill-rule="evenodd" clip-rule="evenodd"><path transform="scale(.5)" d="M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z"/></symbol></defs><defs><symbol id="my-svg-clock" width="24" height="24"><path transform="scale(.5)" d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z"/></symbol></defs><defs><marker id="my-svg-arrowhead" refX="7.9" refY="5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M -1 0 L 10 5 L 0 10 z"/></marker></defs><defs><marker id="my-svg-crosshead" markerWidth="15" markerHeight="8" orient="auto" refX="4" refY="4.5"><path fill="none" stroke="#000000" stroke-width="1pt" d="M 1,2 L 6,7 M 6,2 L 1,7" style="stroke-dasharray: 0, 0;"/></marker></defs><defs><marker id="my-svg-filled-head" refX="15.5" refY="7" markerWidth="20" markerHeight="28" orient="auto"><path d="M 18,7 L9,13 L14,7 L9,1 Z"/></marker></defs><defs><marker id="my-svg-sequencenumber" refX="15" refY="15" markerWidth="60" markerHeight="40" orient="auto"><circle cx="15" cy="15" r="6"/></marker></defs><defs><marker id="my-svg-solidTopArrowHead" refX="7.9" refY="7.25" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M 0 0 L 10 8 L 0 8 z"/></marker></defs><defs><marker id="my-svg-solidBottomArrowHead" refX="7.9" refY="0.75" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M 0 0 L 10 0 L 0 8 z"/></marker></defs><defs><marker id="my-svg-stickTopArrowHead" refX="7.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M 0 0 L 7 7" stroke="black" stroke-width="1.5" fill="none"/></marker></defs><defs><marker id="my-svg-stickBottomArrowHead" refX="7.5" refY="0" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M 0 7 L 7 0" stroke="black" stroke-width="1.5" fill="none"/></marker></defs><g data-et="note" data-id="i0"><rect x="336" y="75" fill="#EDF2AE" stroke="#666" width="910" height="39" class="note"/><text x="791" y="80" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="791">── Session Start ──</tspan></text></g><g data-et="note" data-id="i4"><rect x="336" y="286" fill="#EDF2AE" stroke="#666" width="910" height="39" class="note"/><text x="791" y="291" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="791">── System Prompt Injection ──</tspan></text></g><g data-et="note" data-id="i7"><rect x="386" y="423" fill="#EDF2AE" stroke="#666" width="179" height="77" class="note"/><text x="476" y="428" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="476">Agent now "remembers"</tspan></text><text x="476" y="447" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="476">facts AND procedures</tspan></text><text x="476" y="466" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="476">from past sessions</tspan></text></g><g data-et="note" data-id="i8"><rect x="336" y="510" fill="#EDF2AE" stroke="#666" width="910" height="39" class="note"/><text x="791" y="515" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="791">── Agent Loop ──</tspan></text></g><g data-et="note" data-id="i14"><rect x="336" y="809" fill="#EDF2AE" stroke="#666" width="910" height="39" class="note"/><text x="791" y="814" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="791">── User Correction ──</tspan></text></g><g data-et="note" data-id="i18"><rect x="386" y="1020" fill="#EDF2AE" stroke="#666" width="154" height="58" class="note"/><text x="463" y="1025" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="463">Immediate save</tspan></text><text x="463" y="1044" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="463">no waiting for nudge</tspan></text></g><g data-et="note" data-id="i19"><rect x="336" y="1088" fill="#EDF2AE" stroke="#666" width="910" height="39" class="note"/><text x="791" y="1093" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="791">── Complex Task (8+ tool calls) ──</tspan></text></g><g data-et="note" data-id="i22"><rect x="386" y="1225" fill="#EDF2AE" stroke="#666" width="150" height="58" class="note"/><text x="461" y="1230" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="461">Extract reusable</tspan></text><text x="461" y="1249" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="461">procedure as skill</tspan></text></g><g data-et="note" data-id="i23"><rect x="336" y="1293" fill="#EDF2AE" stroke="#666" width="910" height="39" class="note"/><text x="791" y="1298" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="791">── Background Review (10 turns or 15 tool calls) ──</tspan></text></g><g data-et="note" data-id="i26"><rect x="386" y="1430" fill="#EDF2AE" stroke="#666" width="197" height="58" class="note"/><text x="485" y="1435" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="485">Reviews conversation</tspan></text><text x="485" y="1454" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="485">saves memories AND skills</tspan></text></g><g data-et="note" data-id="i27"><rect x="336" y="1498" fill="#EDF2AE" stroke="#666" width="910" height="39" class="note"/><text x="791" y="1503" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="791">── Session End ──</tspan></text></g><g data-et="note" data-id="i30"><rect x="386" y="1635" fill="#EDF2AE" stroke="#666" width="163" height="58" class="note"/><text x="468" y="1640" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="468">One last turn to flush</tspan></text><text x="468" y="1659" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="468">anything worth saving</tspan></text></g><text x="560" y="129" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">session_start event</text><line x1="362" y1="158" x2="757" y2="158" class="messageLine0" data-et="message" data-id="i1" data-from="Pi" data-to="Extension" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="990" y="173" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">loadFromDisk() — read MEMORY.md + USER.md + skills/</text><line x1="762" y1="202" x2="1217" y2="202" class="messageLine0" data-et="message" data-id="i2" data-from="Extension" data-to="Disk" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="762" y="217" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">Capture frozen snapshot (memory + skill index)</text><path d="M 762,246 C 822,236 822,276 762,266" class="messageLine1" data-et="message" data-id="i3" data-from="Extension" data-to="Extension" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"/><text x="560" y="340" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">before_agent_start event</text><line x1="362" y1="369" x2="757" y2="369" class="messageLine0" data-et="message" data-id="i5" data-from="Pi" data-to="Extension" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="563" y="384" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">systemPrompt + frozen memory block + skill index</text><line x1="760" y1="413" x2="365" y2="413" class="messageLine1" data-et="message" data-id="i6" data-from="Extension" data-to="Pi" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"/><text x="217" y="564" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">"Remember I prefer vim"</text><line x1="76" y1="593" x2="357" y2="593" class="messageLine0" data-et="message" data-id="i9" data-from="User" data-to="Pi" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="560" y="608" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">tool_call (memory, add)</text><line x1="362" y1="637" x2="757" y2="637" class="messageLine0" data-et="message" data-id="i10" data-from="Pi" data-to="Extension" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="762" y="652" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">scanContent() — security check</text><path d="M 762,681 C 822,671 822,711 762,701" class="messageLine0" data-et="message" data-id="i11" data-from="Extension" data-to="Extension" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="990" y="726" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">Atomic write to USER.md</text><line x1="762" y1="755" x2="1217" y2="755" class="messageLine0" data-et="message" data-id="i12" data-from="Extension" data-to="Disk" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="563" y="770" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">{ success: true, usage: "3% — 41/1375" }</text><line x1="760" y1="799" x2="365" y2="799" class="messageLine1" data-et="message" data-id="i13" data-from="Extension" data-to="Pi" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"/><text x="217" y="863" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">"No, don't use npm — use pnpm"</text><line x1="76" y1="892" x2="357" y2="892" class="messageLine0" data-et="message" data-id="i15" data-from="User" data-to="Pi" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="762" y="907" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">isCorrection() = true</text><path d="M 762,936 C 822,926 822,966 762,956" class="messageLine0" data-et="message" data-id="i16" data-from="Extension" data-to="Extension" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="563" y="981" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">pi.exec("pi -p", correctionPrompt)</text><line x1="760" y1="1010" x2="365" y2="1010" class="messageLine0" data-et="message" data-id="i17" data-from="Extension" data-to="Pi" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="560" y="1142" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">turn_end (8 tool calls, 3 tool types)</text><line x1="362" y1="1171" x2="757" y2="1171" class="messageLine0" data-et="message" data-id="i20" data-from="Pi" data-to="Extension" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="563" y="1186" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">pi.exec("pi -p", skillExtractionPrompt)</text><line x1="760" y1="1215" x2="365" y2="1215" class="messageLine0" data-et="message" data-id="i21" data-from="Extension" data-to="Pi" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="560" y="1347" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">turn_end event</text><line x1="362" y1="1376" x2="757" y2="1376" class="messageLine0" data-et="message" data-id="i24" data-from="Pi" data-to="Extension" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="563" y="1391" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">pi.exec("pi -p", reviewPrompt)</text><line x1="760" y1="1420" x2="365" y2="1420" class="messageLine0" data-et="message" data-id="i25" data-from="Extension" data-to="Pi" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="560" y="1552" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">session_shutdown event</text><line x1="362" y1="1581" x2="757" y2="1581" class="messageLine0" data-et="message" data-id="i28" data-from="Pi" data-to="Extension" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="563" y="1596" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">pi.exec("pi -p", flushPrompt)</text><line x1="760" y1="1625" x2="365" y2="1625" class="messageLine0" data-et="message" data-id="i29" data-from="Extension" data-to="Pi" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/></svg>
|
|
@@ -0,0 +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>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
graph TB
|
|
2
|
+
subgraph "Persistent Storage"
|
|
3
|
+
MEM["MEMORY.md<br/><i>Agent's notes</i>"]
|
|
4
|
+
USR["USER.md<br/><i>User profile</i>"]
|
|
5
|
+
SKL["skills/<br/><i>Procedural memory</i><br/>debug-ts.md<br/>deploy-checklist.md"]
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
subgraph "System Prompt (frozen snapshot)"
|
|
9
|
+
SMEM["Memory block<br/>Full content"]
|
|
10
|
+
SUSR["User block<br/>Full content"]
|
|
11
|
+
SSKL["Skill index<br/>Names + descriptions only"]
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
subgraph "On Demand (via skill tool)"
|
|
15
|
+
FULL["Full skill content<br/>Loaded when needed"]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
MEM --> SMEM
|
|
19
|
+
USR --> SUSR
|
|
20
|
+
SKL --> SSKL
|
|
21
|
+
SSKL -.->|"skill view"| FULL
|
|
22
|
+
|
|
23
|
+
style SMEM fill:#1a1a2e,stroke:#e94560,color:#fff
|
|
24
|
+
style SUSR fill:#1a1a2e,stroke:#e94560,color:#fff
|
|
25
|
+
style SSKL fill:#16213e,stroke:#0f3460,color:#fff
|
|
26
|
+
style FULL fill:#0a1128,stroke:#1282a2,color:#fff
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
flowchart LR
|
|
2
|
+
A["LLM calls<br/>memory or skill"] --> B{scanContent}
|
|
3
|
+
B -->|Blocked| C["❌ Return error"]
|
|
4
|
+
B -->|Safe| D{Char limit<br/>check}
|
|
5
|
+
D -->|Exceeds| E{autoConsolidate?}
|
|
6
|
+
E -->|Yes| G["🔄 Merge & prune<br/>then retry"]
|
|
7
|
+
E -->|No| F["❌ Return budget error"]
|
|
8
|
+
D -->|Within limit| H["✅ Write to disk"]
|
|
9
|
+
|
|
10
|
+
subgraph "Blocked Patterns"
|
|
11
|
+
P1["'ignore previous instructions'"]
|
|
12
|
+
P2["'curl ${API_KEY}'"]
|
|
13
|
+
P3["Zero-width chars"]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
B -.- P1
|
|
17
|
+
B -.- P2
|
|
18
|
+
B -.- P3
|
|
19
|
+
|
|
20
|
+
style C fill:#3d0000,stroke:#ff4444,color:#fff
|
|
21
|
+
style G fill:#003d3d,stroke:#00cccc,color:#fff
|
|
22
|
+
style H fill:#003d00,stroke:#44ff44,color:#fff
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
sequenceDiagram
|
|
2
|
+
participant User
|
|
3
|
+
participant Pi
|
|
4
|
+
participant Extension
|
|
5
|
+
participant Disk as ~/.pi/agent/memory/
|
|
6
|
+
|
|
7
|
+
Note over Pi,Disk: ── Session Start ──
|
|
8
|
+
Pi->>Extension: session_start event
|
|
9
|
+
Extension->>Disk: loadFromDisk() — read MEMORY.md + USER.md + skills/
|
|
10
|
+
Extension-->>Extension: Capture frozen snapshot (memory + skill index)
|
|
11
|
+
|
|
12
|
+
Note over Pi,Disk: ── System Prompt Injection ──
|
|
13
|
+
Pi->>Extension: before_agent_start event
|
|
14
|
+
Extension-->>Pi: systemPrompt + frozen memory block + skill index
|
|
15
|
+
Note right of Pi: Agent now "remembers"<br/>facts AND procedures<br/>from past sessions
|
|
16
|
+
|
|
17
|
+
Note over Pi,Disk: ── Agent Loop ──
|
|
18
|
+
User->>Pi: "Remember I prefer vim"
|
|
19
|
+
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/1375" }
|
|
23
|
+
|
|
24
|
+
Note over Pi,Disk: ── User Correction ──
|
|
25
|
+
User->>Pi: "No, don't use npm — use pnpm"
|
|
26
|
+
Extension->>Extension: isCorrection() = true
|
|
27
|
+
Extension->>Pi: pi.exec("pi -p", correctionPrompt)
|
|
28
|
+
Note right of Pi: Immediate save<br/>no waiting for nudge
|
|
29
|
+
|
|
30
|
+
Note over Pi,Disk: ── Complex Task (8+ tool calls) ──
|
|
31
|
+
Pi->>Extension: turn_end (8 tool calls, 3 tool types)
|
|
32
|
+
Extension->>Pi: pi.exec("pi -p", skillExtractionPrompt)
|
|
33
|
+
Note right of Pi: Extract reusable<br/>procedure as skill
|
|
34
|
+
|
|
35
|
+
Note over Pi,Disk: ── Background Review (10 turns or 15 tool calls) ──
|
|
36
|
+
Pi->>Extension: turn_end event
|
|
37
|
+
Extension->>Pi: pi.exec("pi -p", reviewPrompt)
|
|
38
|
+
Note right of Pi: Reviews conversation<br/>saves memories AND skills
|
|
39
|
+
|
|
40
|
+
Note over Pi,Disk: ── Session End ──
|
|
41
|
+
Pi->>Extension: session_shutdown event
|
|
42
|
+
Extension->>Pi: pi.exec("pi -p", flushPrompt)
|
|
43
|
+
Note right of Pi: One last turn to flush<br/>anything worth saving
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
graph LR
|
|
2
|
+
subgraph "pi-hermes-memory/src/"
|
|
3
|
+
IDX["index.ts<br/><i>Entry point</i>"]
|
|
4
|
+
MS["memory-store.ts<br/><i>Memory CRUD</i>"]
|
|
5
|
+
SS["skill-store.ts<br/><i>Skill CRUD</i>"]
|
|
6
|
+
MT["memory-tool.ts<br/><i>Memory LLM tool</i>"]
|
|
7
|
+
ST["skill-tool.ts<br/><i>Skill LLM tool</i>"]
|
|
8
|
+
CS["content-scanner.ts<br/><i>Security</i>"]
|
|
9
|
+
BR["background-review.ts<br/><i>Learning loop</i>"]
|
|
10
|
+
AC["auto-consolidate.ts<br/><i>Memory merge</i>"]
|
|
11
|
+
CD["correction-detector.ts<br/><i>Instant save</i>"]
|
|
12
|
+
SA["skill-auto-trigger.ts<br/><i>Skill extraction</i>"]
|
|
13
|
+
SF["session-flush.ts<br/><i>Pre-compaction flush</i>"]
|
|
14
|
+
IN["insights.ts<br/><i>/memory-insights</i>"]
|
|
15
|
+
SC["skills-command.ts<br/><i>/memory-skills</i>"]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
IDX --> MS
|
|
19
|
+
IDX --> SS
|
|
20
|
+
IDX --> MT
|
|
21
|
+
IDX --> ST
|
|
22
|
+
IDX --> BR
|
|
23
|
+
IDX --> AC
|
|
24
|
+
IDX --> CD
|
|
25
|
+
IDX --> SA
|
|
26
|
+
IDX --> SF
|
|
27
|
+
IDX --> IN
|
|
28
|
+
IDX --> SC
|
|
29
|
+
MT --> MS
|
|
30
|
+
ST --> SS
|
|
31
|
+
MS --> CS
|
|
32
|
+
SS --> CS
|
|
33
|
+
BR --> MS
|
|
34
|
+
AC --> MS
|
|
35
|
+
CD --> MS
|
|
36
|
+
SA --> MS
|
|
37
|
+
SA --> SS
|
|
38
|
+
|
|
39
|
+
style IDX fill:#e94560,stroke:#fff,color:#fff
|
|
40
|
+
style MS fill:#0f3460,stroke:#fff,color:#fff
|
|
41
|
+
style SS fill:#0f3460,stroke:#fff,color:#fff
|
|
42
|
+
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.3.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"description": "Your Pi agent remembers everything across sessions — your preferences, your stack, your corrections, and even how it solved problems. Zero-config install, works immediately. Persistent memory + procedural skills + auto-correction detection + security-first content scanning.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.ts",
|