pwn 0.5.615 → 0.5.618
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.
- checksums.yaml +4 -4
- data/README.md +109 -85
- data/README.md.bak +200 -0
- data/bin/pwn +47 -2
- data/bin/pwn_gqrx_scanner +75 -18
- data/documentation/AI-Integration.md +42 -26
- data/documentation/AWS.md +57 -0
- data/documentation/Agent-Tool-Registry.md +56 -0
- data/documentation/Banner.md +17 -0
- data/documentation/Blockchain.md +18 -0
- data/documentation/Bounty.md +21 -0
- data/documentation/BurpSuite.md +41 -16
- data/documentation/CLI-Drivers.md +58 -0
- data/documentation/Configuration.md +66 -0
- data/documentation/Contributing.md +33 -19
- data/documentation/Cron.md +47 -0
- data/documentation/Diagrams.md +123 -40
- data/documentation/Drivers.md +43 -16
- data/documentation/Extrospection.md +54 -0
- data/documentation/FFI.md +14 -0
- data/documentation/Fuzzing.md +36 -0
- data/documentation/General-PWN-Usage.md +50 -30
- data/documentation/Hardware.md +40 -0
- data/documentation/Home.md +78 -51
- data/documentation/How-PWN-Works.md +59 -57
- data/documentation/Installation.md +53 -28
- data/documentation/Metasploit.md +34 -0
- data/documentation/NmapIt.md +18 -12
- data/documentation/PWN.png +0 -0
- data/documentation/PWN_Contributors_and_Users.png +0 -0
- data/documentation/Persistence.md +38 -0
- data/documentation/Plugins.md +97 -47
- data/documentation/Reporting.md +25 -18
- data/documentation/SAST.md +39 -22
- data/documentation/SDR.md +40 -0
- data/documentation/Sessions.md +39 -0
- data/documentation/Skills-Memory-Learning.md +49 -29
- data/documentation/Swarm.md +71 -0
- data/documentation/Transparent-Browser.md +26 -22
- data/documentation/Troubleshooting.md +44 -25
- data/documentation/WWW.md +32 -0
- data/documentation/What-is-PWN.md +51 -32
- data/documentation/Why-PWN.md +41 -11
- data/documentation/diagrams/agent-tool-registry.svg +284 -0
- data/documentation/diagrams/ai-integration-tool-calling.svg +141 -103
- data/documentation/diagrams/aws-cloud-security.svg +166 -0
- data/documentation/diagrams/build.sh +20 -0
- data/documentation/diagrams/burp-vs-zap-preference.svg +47 -62
- data/documentation/diagrams/code-scanning-sast.svg +139 -79
- data/documentation/diagrams/cron-scheduling.svg +148 -0
- data/documentation/diagrams/dot/_THEME.md +27 -0
- data/documentation/diagrams/dot/agent-tool-registry.dot +59 -0
- data/documentation/diagrams/dot/ai-integration-tool-calling.dot +47 -20
- data/documentation/diagrams/dot/aws-cloud-security.dot +48 -0
- data/documentation/diagrams/dot/burp-vs-zap-preference.dot +23 -12
- data/documentation/diagrams/dot/code-scanning-sast.dot +46 -18
- data/documentation/diagrams/dot/cron-scheduling.dot +40 -0
- data/documentation/diagrams/dot/driver-framework.dot +36 -14
- data/documentation/diagrams/dot/extrospection-world-awareness.dot +55 -0
- data/documentation/diagrams/dot/fuzzing-workflow.dot +44 -24
- data/documentation/diagrams/dot/hardware-hacking.dot +48 -0
- data/documentation/diagrams/dot/history-to-drivers.dot +31 -17
- data/documentation/diagrams/dot/memory-skills-detailed.dot +57 -25
- data/documentation/diagrams/dot/network-infra-testing.dot +51 -19
- data/documentation/diagrams/dot/overall-pwn-architecture.dot +110 -44
- data/documentation/diagrams/dot/penetration-testing-workflow.dot +56 -25
- data/documentation/diagrams/dot/persistence-filesystem.dot +29 -0
- data/documentation/diagrams/dot/plugin-ecosystem.dot +41 -27
- data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +87 -46
- data/documentation/diagrams/dot/pwn-repl-prototyping.dot +49 -30
- data/documentation/diagrams/dot/reporting-pipeline.dot +43 -14
- data/documentation/diagrams/dot/reverse-engineering-flow.dot +40 -18
- data/documentation/diagrams/dot/sdr-radio-flow.dot +45 -0
- data/documentation/diagrams/dot/sessions-cron-automation.dot +41 -14
- data/documentation/diagrams/dot/swarm-multi-agent.dot +70 -0
- data/documentation/diagrams/dot/web-application-testing.dot +45 -23
- data/documentation/diagrams/dot/zero-day-research-flow.dot +46 -24
- data/documentation/diagrams/driver-framework.svg +87 -66
- data/documentation/diagrams/extrospection-world-awareness.svg +185 -0
- data/documentation/diagrams/fuzzing-workflow.svg +128 -115
- data/documentation/diagrams/hardware-hacking.svg +163 -0
- data/documentation/diagrams/history-to-drivers.svg +84 -82
- data/documentation/diagrams/memory-skills-detailed.svg +167 -119
- data/documentation/diagrams/network-infra-testing.svg +146 -84
- data/documentation/diagrams/overall-pwn-architecture.svg +356 -185
- data/documentation/diagrams/penetration-testing-workflow.svg +161 -108
- data/documentation/diagrams/persistence-filesystem.svg +174 -0
- data/documentation/diagrams/plugin-ecosystem.svg +225 -121
- data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +257 -185
- data/documentation/diagrams/pwn-repl-prototyping.svg +126 -137
- data/documentation/diagrams/reporting-pipeline.svg +128 -68
- data/documentation/diagrams/reverse-engineering-flow.svg +100 -80
- data/documentation/diagrams/sdr-radio-flow.svg +146 -0
- data/documentation/diagrams/sessions-cron-automation.svg +112 -68
- data/documentation/diagrams/swarm-multi-agent.svg +225 -0
- data/documentation/diagrams/web-application-testing.svg +136 -100
- data/documentation/diagrams/zero-day-research-flow.svg +116 -112
- data/documentation/fax-spectrogram.png +0 -0
- data/documentation/fax-waveform.png +0 -0
- data/documentation/pwn-REPL.md +40 -24
- data/documentation/pwn-ai-Agent.md +59 -30
- data/documentation/pwn_android_war_dialer_session.png +0 -0
- data/documentation/pwn_install.png +0 -0
- data/documentation/pwn_wallpaper.jpg +0 -0
- data/documentation/ringing-spectrogram.png +0 -0
- data/documentation/ringing-waveform.png +0 -0
- data/git_commit.sh +1 -1
- data/lib/pwn/ai/agent/assembly.rb +1 -1
- data/lib/pwn/ai/agent/btc.rb +1 -1
- data/lib/pwn/ai/agent/burp_suite.rb +1 -1
- data/lib/pwn/ai/agent/extrospection.rb +618 -0
- data/lib/pwn/ai/agent/gqrx.rb +2 -2
- data/lib/pwn/ai/agent/hacker_one.rb +1 -1
- data/lib/pwn/ai/agent/introspection.rb +91 -0
- data/lib/pwn/ai/agent/learning.rb +6 -4
- data/lib/pwn/ai/agent/loop.rb +15 -0
- data/lib/pwn/ai/agent/prompt_builder.rb +10 -1
- data/lib/pwn/ai/agent/sast.rb +1 -1
- data/lib/pwn/ai/agent/swarm.rb +437 -0
- data/lib/pwn/ai/agent/tools/cron.rb +163 -0
- data/lib/pwn/ai/agent/tools/extrospection.rb +280 -0
- data/lib/pwn/ai/agent/tools/learning.rb +108 -0
- data/lib/pwn/ai/agent/tools/memory.rb +27 -0
- data/lib/pwn/ai/agent/tools/metrics.rb +61 -0
- data/lib/pwn/ai/agent/tools/sessions.rb +139 -0
- data/lib/pwn/ai/agent/tools/skills.rb +30 -0
- data/lib/pwn/ai/agent/tools/swarm.rb +229 -0
- data/lib/pwn/ai/agent/transparent_browser.rb +1 -1
- data/lib/pwn/ai/agent/vuln_gen.rb +2 -2
- data/lib/pwn/ai/agent.rb +3 -0
- data/lib/pwn/ai/anthropic.rb +19 -4
- data/lib/pwn/ai.rb +0 -1
- data/lib/pwn/config.rb +10 -23
- data/lib/pwn/cron.rb +16 -7
- data/lib/pwn/plugins/repl.rb +90 -281
- data/lib/pwn/sdr/decoder/base.rb +251 -0
- data/lib/pwn/sdr/decoder/gsm.rb +84 -185
- data/lib/pwn/sdr/decoder/pocsag.rb +62 -217
- data/lib/pwn/sdr/decoder.rb +1 -0
- data/lib/pwn/sdr/gqrx.rb +446 -65
- data/lib/pwn/version.rb +1 -1
- data/spec/lib/pwn/ai/agent/extrospection_spec.rb +15 -0
- data/spec/lib/pwn/ai/agent/introspection_spec.rb +15 -0
- data/spec/lib/pwn/ai/agent/swarm_spec.rb +34 -0
- data/spec/lib/pwn/ai/agent/tools/cron_spec.rb +40 -0
- data/spec/lib/pwn/ai/agent/tools/extrospection_spec.rb +40 -0
- data/spec/lib/pwn/ai/agent/tools/metrics_spec.rb +20 -0
- data/spec/lib/pwn/ai/agent/tools/sessions_spec.rb +35 -0
- data/spec/lib/pwn/ai/agent/tools/swarm_spec.rb +17 -0
- data/spec/lib/pwn/{ai/introspection_spec.rb → sdr/decoder/base_spec.rb} +3 -3
- data/third_party/pwn_rdoc.jsonl +199 -37
- metadata +65 -3
- data/lib/pwn/ai/introspection.rb +0 -76
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
|
3
|
+
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
4
|
+
<!-- Generated by graphviz version 14.1.2 (0)
|
|
5
|
+
-->
|
|
6
|
+
<!-- Title: PWN_SDR Pages: 1 -->
|
|
7
|
+
<svg width="784pt" height="368pt"
|
|
8
|
+
viewBox="0.00 0.00 784.00 368.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
9
|
+
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 325.2)">
|
|
10
|
+
<title>PWN_SDR</title>
|
|
11
|
+
<polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-325.2 740.45,-325.2 740.45,43.2 -43.2,43.2"/>
|
|
12
|
+
<text xml:space="preserve" text-anchor="start" x="103.38" y="-260" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">PWN::SDR — Software-Defined Radio & RF Hacking</text>
|
|
13
|
+
<text xml:space="preserve" text-anchor="start" x="196" y="-248.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">GQRX · FlipperZero · RFIDler · SonMicro · FrequencyAllocation</text>
|
|
14
|
+
<g id="clust1" class="cluster">
|
|
15
|
+
<title>cluster_hw</title>
|
|
16
|
+
<path fill="#022c22" stroke="#047857" d="M183.25,-16C183.25,-16 280.5,-16 280.5,-16 286.5,-16 292.5,-22 292.5,-28 292.5,-28 292.5,-223 292.5,-223 292.5,-229 286.5,-235 280.5,-235 280.5,-235 183.25,-235 183.25,-235 177.25,-235 171.25,-229 171.25,-223 171.25,-223 171.25,-28 171.25,-28 171.25,-22 177.25,-16 183.25,-16"/>
|
|
17
|
+
<text xml:space="preserve" text-anchor="middle" x="231.88" y="-212" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">Hardware</text>
|
|
18
|
+
</g>
|
|
19
|
+
<g id="clust2" class="cluster">
|
|
20
|
+
<title>cluster_ctrl</title>
|
|
21
|
+
<path fill="#422006" stroke="#a16207" d="M374.5,-8C374.5,-8 498.75,-8 498.75,-8 504.75,-8 510.75,-14 510.75,-20 510.75,-20 510.75,-223 510.75,-223 510.75,-229 504.75,-235 498.75,-235 498.75,-235 374.5,-235 374.5,-235 368.5,-235 362.5,-229 362.5,-223 362.5,-223 362.5,-20 362.5,-20 362.5,-14 368.5,-8 374.5,-8"/>
|
|
22
|
+
<text xml:space="preserve" text-anchor="middle" x="436.62" y="-212" font-family="sans-Serif" font-size="20.00" fill="#fde68a">Control</text>
|
|
23
|
+
</g>
|
|
24
|
+
<g id="clust3" class="cluster">
|
|
25
|
+
<title>cluster_dec</title>
|
|
26
|
+
<path fill="#2e1065" stroke="#6d28d9" d="M592.75,-84C592.75,-84 677.25,-84 677.25,-84 683.25,-84 689.25,-90 689.25,-96 689.25,-96 689.25,-223 689.25,-223 689.25,-229 683.25,-235 677.25,-235 677.25,-235 592.75,-235 592.75,-235 586.75,-235 580.75,-229 580.75,-223 580.75,-223 580.75,-96 580.75,-96 580.75,-90 586.75,-84 592.75,-84"/>
|
|
27
|
+
<text xml:space="preserve" text-anchor="middle" x="635" y="-212" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Decode</text>
|
|
28
|
+
</g>
|
|
29
|
+
<!-- RF -->
|
|
30
|
+
<g id="node1" class="node">
|
|
31
|
+
<title>RF</title>
|
|
32
|
+
<path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M81.25,-128C81.25,-128 12,-128 12,-128 6,-128 0,-122 0,-116 0,-116 0,-104 0,-104 0,-98 6,-92 12,-92 12,-92 81.25,-92 81.25,-92 87.25,-92 93.25,-98 93.25,-104 93.25,-104 93.25,-116 93.25,-116 93.25,-122 87.25,-128 81.25,-128"/>
|
|
33
|
+
<text xml:space="preserve" text-anchor="middle" x="46.62" y="-106.88" font-family="sans-Serif" font-size="10.00" fill="#0f172a">📡  RF Spectrum</text>
|
|
34
|
+
</g>
|
|
35
|
+
<!-- SDRhw -->
|
|
36
|
+
<g id="node2" class="node">
|
|
37
|
+
<title>SDRhw</title>
|
|
38
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M272.5,-60C272.5,-60 191.25,-60 191.25,-60 185.25,-60 179.25,-54 179.25,-48 179.25,-48 179.25,-36 179.25,-36 179.25,-30 185.25,-24 191.25,-24 191.25,-24 272.5,-24 272.5,-24 278.5,-24 284.5,-30 284.5,-36 284.5,-36 284.5,-48 284.5,-48 284.5,-54 278.5,-60 272.5,-60"/>
|
|
39
|
+
<text xml:space="preserve" text-anchor="middle" x="231.88" y="-44.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">RTL-SDR / HackRF</text>
|
|
40
|
+
<text xml:space="preserve" text-anchor="middle" x="231.88" y="-32.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(via GQRX)</text>
|
|
41
|
+
</g>
|
|
42
|
+
<!-- RF->SDRhw -->
|
|
43
|
+
<g id="edge1" class="edge">
|
|
44
|
+
<title>RF->SDRhw</title>
|
|
45
|
+
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M93.87,-92.84C117.47,-84.08 146.46,-73.32 171.68,-63.97"/>
|
|
46
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="172.42,-66.68 178.94,-61.27 170.47,-61.43 172.42,-66.68"/>
|
|
47
|
+
</g>
|
|
48
|
+
<!-- Flipper -->
|
|
49
|
+
<g id="node3" class="node">
|
|
50
|
+
<title>Flipper</title>
|
|
51
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M266.12,-128C266.12,-128 197.62,-128 197.62,-128 191.62,-128 185.62,-122 185.62,-116 185.62,-116 185.62,-104 185.62,-104 185.62,-98 191.62,-92 197.62,-92 197.62,-92 266.12,-92 266.12,-92 272.12,-92 278.12,-98 278.12,-104 278.12,-104 278.12,-116 278.12,-116 278.12,-122 272.12,-128 266.12,-128"/>
|
|
52
|
+
<text xml:space="preserve" text-anchor="middle" x="231.88" y="-106.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::FlipperZero</text>
|
|
53
|
+
</g>
|
|
54
|
+
<!-- RF->Flipper -->
|
|
55
|
+
<g id="edge2" class="edge">
|
|
56
|
+
<title>RF->Flipper</title>
|
|
57
|
+
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M93.87,-110C118.69,-110 149.45,-110 175.54,-110"/>
|
|
58
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="175.32,-112.8 183.32,-110 175.32,-107.2 175.32,-112.8"/>
|
|
59
|
+
</g>
|
|
60
|
+
<!-- RFID -->
|
|
61
|
+
<g id="node4" class="node">
|
|
62
|
+
<title>RFID</title>
|
|
63
|
+
<path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M260.5,-196C260.5,-196 203.25,-196 203.25,-196 197.25,-196 191.25,-190 191.25,-184 191.25,-184 191.25,-172 191.25,-172 191.25,-166 197.25,-160 203.25,-160 203.25,-160 260.5,-160 260.5,-160 266.5,-160 272.5,-166 272.5,-172 272.5,-172 272.5,-184 272.5,-184 272.5,-190 266.5,-196 260.5,-196"/>
|
|
64
|
+
<text xml:space="preserve" text-anchor="middle" x="231.88" y="-180.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::RFIDler</text>
|
|
65
|
+
<text xml:space="preserve" text-anchor="middle" x="231.88" y="-168.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SonMicroRFID</text>
|
|
66
|
+
</g>
|
|
67
|
+
<!-- RF->RFID -->
|
|
68
|
+
<g id="edge3" class="edge">
|
|
69
|
+
<title>RF->RFID</title>
|
|
70
|
+
<path fill="none" stroke="#fb7185" stroke-width="1.3" d="M93.87,-127.16C120.73,-137.13 154.56,-149.68 181.88,-159.82"/>
|
|
71
|
+
<polygon fill="#fb7185" stroke="#fb7185" stroke-width="1.3" points="180.55,-162.31 189.03,-162.47 182.5,-157.06 180.55,-162.31"/>
|
|
72
|
+
</g>
|
|
73
|
+
<!-- GQRX -->
|
|
74
|
+
<g id="node5" class="node">
|
|
75
|
+
<title>GQRX</title>
|
|
76
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M478.75,-60C478.75,-60 394.5,-60 394.5,-60 388.5,-60 382.5,-54 382.5,-48 382.5,-48 382.5,-28 382.5,-28 382.5,-22 388.5,-16 394.5,-16 394.5,-16 478.75,-16 478.75,-16 484.75,-16 490.75,-22 490.75,-28 490.75,-28 490.75,-48 490.75,-48 490.75,-54 484.75,-60 478.75,-60"/>
|
|
77
|
+
<text xml:space="preserve" text-anchor="middle" x="436.62" y="-46.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::GQRX</text>
|
|
78
|
+
<text xml:space="preserve" text-anchor="middle" x="436.62" y="-34.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">remote control · scan</text>
|
|
79
|
+
<text xml:space="preserve" text-anchor="middle" x="436.62" y="-22.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">spectrum snapshot</text>
|
|
80
|
+
</g>
|
|
81
|
+
<!-- SDRhw->GQRX -->
|
|
82
|
+
<g id="edge4" class="edge">
|
|
83
|
+
<title>SDRhw->GQRX</title>
|
|
84
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M285.09,-40.97C311.75,-40.44 344.39,-39.8 372.46,-39.25"/>
|
|
85
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="372.27,-42.05 380.21,-39.09 372.16,-36.45 372.27,-42.05"/>
|
|
86
|
+
</g>
|
|
87
|
+
<!-- Freq -->
|
|
88
|
+
<g id="node6" class="node">
|
|
89
|
+
<title>Freq</title>
|
|
90
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M490.75,-128C490.75,-128 382.5,-128 382.5,-128 376.5,-128 370.5,-122 370.5,-116 370.5,-116 370.5,-104 370.5,-104 370.5,-98 376.5,-92 382.5,-92 382.5,-92 490.75,-92 490.75,-92 496.75,-92 502.75,-98 502.75,-104 502.75,-104 502.75,-116 502.75,-116 502.75,-122 496.75,-128 490.75,-128"/>
|
|
91
|
+
<text xml:space="preserve" text-anchor="middle" x="436.62" y="-112.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::FrequencyAllocation</text>
|
|
92
|
+
<text xml:space="preserve" text-anchor="middle" x="436.62" y="-100.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">band lookup</text>
|
|
93
|
+
</g>
|
|
94
|
+
<!-- Flipper->Freq -->
|
|
95
|
+
<g id="edge5" class="edge">
|
|
96
|
+
<title>Flipper->Freq</title>
|
|
97
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M278.63,-110C302.66,-110 332.72,-110 360.1,-110"/>
|
|
98
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="360.08,-112.8 368.08,-110 360.08,-107.2 360.08,-112.8"/>
|
|
99
|
+
</g>
|
|
100
|
+
<!-- Scan -->
|
|
101
|
+
<g id="node7" class="node">
|
|
102
|
+
<title>Scan</title>
|
|
103
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M481.38,-196C481.38,-196 391.88,-196 391.88,-196 385.88,-196 379.88,-190 379.88,-184 379.88,-184 379.88,-172 379.88,-172 379.88,-166 385.88,-160 391.88,-160 391.88,-160 481.38,-160 481.38,-160 487.38,-160 493.38,-166 493.38,-172 493.38,-172 493.38,-184 493.38,-184 493.38,-190 487.38,-196 481.38,-196"/>
|
|
104
|
+
<text xml:space="preserve" text-anchor="middle" x="436.62" y="-180.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">bin/pwn_gqrx_scanner</text>
|
|
105
|
+
<text xml:space="preserve" text-anchor="middle" x="436.62" y="-168.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">fast · iterative</text>
|
|
106
|
+
</g>
|
|
107
|
+
<!-- RFID->Scan -->
|
|
108
|
+
<g id="edge6" class="edge">
|
|
109
|
+
<title>RFID->Scan</title>
|
|
110
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M272.93,-178C300.54,-178 337.87,-178 369.81,-178"/>
|
|
111
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="369.57,-180.8 377.57,-178 369.57,-175.2 369.57,-180.8"/>
|
|
112
|
+
</g>
|
|
113
|
+
<!-- Dec -->
|
|
114
|
+
<g id="node8" class="node">
|
|
115
|
+
<title>Dec</title>
|
|
116
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M668.12,-128C668.12,-128 601.88,-128 601.88,-128 595.88,-128 589.88,-122 589.88,-116 589.88,-116 589.88,-104 589.88,-104 589.88,-98 595.88,-92 601.88,-92 601.88,-92 668.12,-92 668.12,-92 674.12,-92 680.12,-98 680.12,-104 680.12,-104 680.12,-116 680.12,-116 680.12,-122 674.12,-128 668.12,-128"/>
|
|
117
|
+
<text xml:space="preserve" text-anchor="middle" x="635" y="-112.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">SDR::Decoder::*</text>
|
|
118
|
+
<text xml:space="preserve" text-anchor="middle" x="635" y="-100.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">demod · protocol</text>
|
|
119
|
+
</g>
|
|
120
|
+
<!-- GQRX->Dec -->
|
|
121
|
+
<g id="edge7" class="edge">
|
|
122
|
+
<title>GQRX->Dec</title>
|
|
123
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M491.29,-57.67C518.93,-67.81 552.56,-80.14 580.23,-90.28"/>
|
|
124
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="579.04,-92.83 587.52,-92.96 580.97,-87.57 579.04,-92.83"/>
|
|
125
|
+
</g>
|
|
126
|
+
<!-- Freq->Dec -->
|
|
127
|
+
<g id="edge8" class="edge">
|
|
128
|
+
<title>Freq->Dec</title>
|
|
129
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M503.29,-110C528.07,-110 555.97,-110 579.6,-110"/>
|
|
130
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="579.48,-112.8 587.48,-110 579.48,-107.2 579.48,-112.8"/>
|
|
131
|
+
</g>
|
|
132
|
+
<!-- Obs -->
|
|
133
|
+
<g id="node9" class="node">
|
|
134
|
+
<title>Obs</title>
|
|
135
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M669.25,-196C669.25,-196 600.75,-196 600.75,-196 594.75,-196 588.75,-190 588.75,-184 588.75,-184 588.75,-172 588.75,-172 588.75,-166 594.75,-160 600.75,-160 600.75,-160 669.25,-160 669.25,-160 675.25,-160 681.25,-166 681.25,-172 681.25,-172 681.25,-184 681.25,-184 681.25,-190 675.25,-196 669.25,-196"/>
|
|
136
|
+
<text xml:space="preserve" text-anchor="middle" x="635" y="-180.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">extro_observe</text>
|
|
137
|
+
<text xml:space="preserve" text-anchor="middle" x="635" y="-168.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">record signal intel</text>
|
|
138
|
+
</g>
|
|
139
|
+
<!-- Scan->Obs -->
|
|
140
|
+
<g id="edge9" class="edge">
|
|
141
|
+
<title>Scan->Obs</title>
|
|
142
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M493.9,-178C520.43,-178 551.99,-178 578.43,-178"/>
|
|
143
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="578.32,-180.8 586.32,-178 578.32,-175.2 578.32,-180.8"/>
|
|
144
|
+
</g>
|
|
145
|
+
</g>
|
|
146
|
+
</svg>
|
|
@@ -3,90 +3,134 @@
|
|
|
3
3
|
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
4
4
|
<!-- Generated by graphviz version 14.1.2 (0)
|
|
5
5
|
-->
|
|
6
|
-
<!-- Title:
|
|
7
|
-
<svg width="
|
|
8
|
-
viewBox="0.00 0.00
|
|
9
|
-
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(
|
|
10
|
-
<title>
|
|
11
|
-
<polygon fill="
|
|
12
|
-
|
|
6
|
+
<!-- Title: PWN_SessionsCron Pages: 1 -->
|
|
7
|
+
<svg width="876pt" height="361pt"
|
|
8
|
+
viewBox="0.00 0.00 876.00 361.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
9
|
+
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 317.45)">
|
|
10
|
+
<title>PWN_SessionsCron</title>
|
|
11
|
+
<polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-317.45 832.7,-317.45 832.7,43.2 -43.2,43.2"/>
|
|
12
|
+
<text xml:space="preserve" text-anchor="start" x="127.75" y="-252.25" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">Sessions ↔ Cron ↔ Swarm — Cross-Session Continuity</text>
|
|
13
|
+
<g id="clust1" class="cluster">
|
|
14
|
+
<title>cluster_p</title>
|
|
15
|
+
<path fill="#422006" stroke="#a16207" d="M233.25,-8C233.25,-8 335,-8 335,-8 341,-8 347,-14 347,-20 347,-20 347,-223 347,-223 347,-229 341,-235 335,-235 335,-235 233.25,-235 233.25,-235 227.25,-235 221.25,-229 221.25,-223 221.25,-223 221.25,-20 221.25,-20 221.25,-14 227.25,-8 233.25,-8"/>
|
|
16
|
+
<text xml:space="preserve" text-anchor="middle" x="284.12" y="-212" font-family="sans-Serif" font-size="20.00" fill="#fde68a">~/.pwn/</text>
|
|
17
|
+
</g>
|
|
18
|
+
<g id="clust3" class="cluster">
|
|
19
|
+
<title>cluster_later</title>
|
|
20
|
+
<path fill="#2e1065" stroke="#6d28d9" d="M438,-8C438,-8 585.25,-8 585.25,-8 591.25,-8 597.25,-14 597.25,-20 597.25,-20 597.25,-223 597.25,-223 597.25,-229 591.25,-235 585.25,-235 585.25,-235 438,-235 438,-235 432,-235 426,-229 426,-223 426,-223 426,-20 426,-20 426,-14 432,-8 438,-8"/>
|
|
21
|
+
<text xml:space="preserve" text-anchor="middle" x="511.62" y="-212" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">Later / Elsewhere</text>
|
|
22
|
+
</g>
|
|
23
|
+
<!-- Now -->
|
|
13
24
|
<g id="node1" class="node">
|
|
14
|
-
<title>
|
|
15
|
-
<path fill="
|
|
16
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
25
|
+
<title>Now</title>
|
|
26
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M74.5,-124C74.5,-124 12,-124 12,-124 6,-124 0,-118 0,-112 0,-112 0,-100 0,-100 0,-94 6,-88 12,-88 12,-88 74.5,-88 74.5,-88 80.5,-88 86.5,-94 86.5,-100 86.5,-100 86.5,-112 86.5,-112 86.5,-118 80.5,-124 74.5,-124"/>
|
|
27
|
+
<text xml:space="preserve" text-anchor="middle" x="43.25" y="-108.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pwn-ai</text>
|
|
28
|
+
<text xml:space="preserve" text-anchor="middle" x="43.25" y="-96.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(interactive turn)</text>
|
|
17
29
|
</g>
|
|
18
|
-
<!--
|
|
30
|
+
<!-- Sess -->
|
|
19
31
|
<g id="node2" class="node">
|
|
20
|
-
<title>
|
|
21
|
-
<path fill="
|
|
22
|
-
<path fill="none" stroke="
|
|
23
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
24
|
-
<text xml:space="preserve" text-anchor="middle" x="56.25" y="-310.87" font-family="Arial" font-size="9.00">(record/replay,</text>
|
|
25
|
-
<text xml:space="preserve" text-anchor="middle" x="56.25" y="-300.37" font-family="Arial" font-size="9.00">transcripts)</text>
|
|
26
|
-
</g>
|
|
27
|
-
<!-- Agent->Sessions -->
|
|
28
|
-
<g id="edge1" class="edge">
|
|
29
|
-
<title>Agent->Sessions</title>
|
|
30
|
-
<path fill="none" stroke="black" d="M109.32,-393.46C100.41,-388.71 91.73,-382.88 84.75,-375.82 78.12,-369.12 72.83,-360.58 68.7,-352.04"/>
|
|
31
|
-
<polygon fill="black" stroke="black" points="72.02,-350.91 64.82,-343.14 65.6,-353.7 72.02,-350.91"/>
|
|
32
|
-
<text xml:space="preserve" text-anchor="middle" x="114" y="-362.52" font-family="Times,serif" font-size="14.00">save / load</text>
|
|
32
|
+
<title>Sess</title>
|
|
33
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M334.5,-192.73C334.5,-194.53 311.92,-196 284.12,-196 256.33,-196 233.75,-194.53 233.75,-192.73 233.75,-192.73 233.75,-163.27 233.75,-163.27 233.75,-161.47 256.33,-160 284.12,-160 311.92,-160 334.5,-161.47 334.5,-163.27 334.5,-163.27 334.5,-192.73 334.5,-192.73"/>
|
|
34
|
+
<path fill="none" stroke="#334155" stroke-width="1.3" d="M334.5,-192.73C334.5,-190.92 311.92,-189.45 284.12,-189.45 256.33,-189.45 233.75,-190.92 233.75,-192.73"/>
|
|
35
|
+
<text xml:space="preserve" text-anchor="middle" x="284.12" y="-174.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">sessions/<id>.jsonl</text>
|
|
33
36
|
</g>
|
|
34
|
-
<!--
|
|
35
|
-
<g id="
|
|
36
|
-
<title>
|
|
37
|
-
<path fill="none" stroke="
|
|
38
|
-
<
|
|
39
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
40
|
-
</g>
|
|
41
|
-
<!-- Sessions->Memory -->
|
|
42
|
-
<g id="edge5" class="edge">
|
|
43
|
-
<title>Sessions->Memory</title>
|
|
44
|
-
<path fill="none" stroke="black" d="M50.96,-286.52C48.45,-273.91 45.46,-258.83 42.91,-246"/>
|
|
45
|
-
<polygon fill="black" stroke="black" points="46.39,-245.58 41.01,-236.45 39.53,-246.94 46.39,-245.58"/>
|
|
46
|
-
<text xml:space="preserve" text-anchor="middle" x="91.19" y="-255.71" font-family="Times,serif" font-size="14.00">persist key facts</text>
|
|
37
|
+
<!-- Now->Sess -->
|
|
38
|
+
<g id="edge1" class="edge">
|
|
39
|
+
<title>Now->Sess</title>
|
|
40
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M86.96,-118.87C125.13,-130.38 181.45,-147.35 223.96,-160.17"/>
|
|
41
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="223,-162.8 231.47,-162.43 224.62,-157.44 223,-162.8"/>
|
|
42
|
+
<text xml:space="preserve" text-anchor="middle" x="157.88" y="-148.26" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">append</text>
|
|
47
43
|
</g>
|
|
48
44
|
<!-- Cron -->
|
|
49
45
|
<g id="node3" class="node">
|
|
50
46
|
<title>Cron</title>
|
|
51
|
-
<
|
|
52
|
-
<
|
|
53
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
47
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M321.38,-120.73C321.38,-122.53 304.68,-124 284.12,-124 263.57,-124 246.88,-122.53 246.88,-120.73 246.88,-120.73 246.88,-91.27 246.88,-91.27 246.88,-89.47 263.57,-88 284.12,-88 304.68,-88 321.38,-89.47 321.38,-91.27 321.38,-91.27 321.38,-120.73 321.38,-120.73"/>
|
|
48
|
+
<path fill="none" stroke="#334155" stroke-width="1.3" d="M321.38,-120.73C321.38,-118.92 304.68,-117.45 284.12,-117.45 263.57,-117.45 246.88,-118.92 246.88,-120.73"/>
|
|
49
|
+
<text xml:space="preserve" text-anchor="middle" x="284.12" y="-102.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">cron/jobs.yml</text>
|
|
54
50
|
</g>
|
|
55
|
-
<!--
|
|
56
|
-
<g id="
|
|
57
|
-
<title>
|
|
58
|
-
<path fill="none" stroke="
|
|
59
|
-
<polygon fill="
|
|
60
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
51
|
+
<!-- Now->Cron -->
|
|
52
|
+
<g id="edge2" class="edge">
|
|
53
|
+
<title>Now->Cron</title>
|
|
54
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M86.96,-106C129.04,-106 193.15,-106 236.53,-106"/>
|
|
55
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="236.3,-108.8 244.3,-106 236.3,-103.2 236.3,-108.8"/>
|
|
56
|
+
<text xml:space="preserve" text-anchor="middle" x="157.88" y="-107.95" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">cron_create</text>
|
|
61
57
|
</g>
|
|
62
|
-
<!--
|
|
58
|
+
<!-- Swarm -->
|
|
63
59
|
<g id="node4" class="node">
|
|
64
|
-
<title>
|
|
65
|
-
<path fill="
|
|
66
|
-
<
|
|
67
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
60
|
+
<title>Swarm</title>
|
|
61
|
+
<path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M339,-48.73C339,-50.53 314.4,-52 284.12,-52 253.85,-52 229.25,-50.53 229.25,-48.73 229.25,-48.73 229.25,-19.27 229.25,-19.27 229.25,-17.47 253.85,-16 284.12,-16 314.4,-16 339,-17.47 339,-19.27 339,-19.27 339,-48.73 339,-48.73"/>
|
|
62
|
+
<path fill="none" stroke="#334155" stroke-width="1.3" d="M339,-48.73C339,-46.92 314.4,-45.45 284.12,-45.45 253.85,-45.45 229.25,-46.92 229.25,-48.73"/>
|
|
63
|
+
<text xml:space="preserve" text-anchor="middle" x="284.12" y="-30.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">swarm/<id>/bus.jsonl</text>
|
|
68
64
|
</g>
|
|
69
|
-
<!--
|
|
70
|
-
<g id="
|
|
71
|
-
<title>
|
|
72
|
-
<path fill="none" stroke="
|
|
73
|
-
<polygon fill="
|
|
74
|
-
<text xml:space="preserve" text-anchor="middle" x="
|
|
65
|
+
<!-- Now->Swarm -->
|
|
66
|
+
<g id="edge3" class="edge">
|
|
67
|
+
<title>Now->Swarm</title>
|
|
68
|
+
<path fill="none" stroke="#f59e0b" stroke-width="1.3" d="M86.96,-93.13C123.76,-82.03 177.42,-65.86 219.32,-53.23"/>
|
|
69
|
+
<polygon fill="#f59e0b" stroke="#f59e0b" stroke-width="1.3" points="219.88,-55.99 226.73,-51 218.26,-50.63 219.88,-55.99"/>
|
|
70
|
+
<text xml:space="preserve" text-anchor="middle" x="157.88" y="-80.52" font-family="sans-Serif" font-size="9.00" fill="#cbd5e1">agent_ask</text>
|
|
75
71
|
</g>
|
|
76
|
-
<!--
|
|
72
|
+
<!-- Reflect -->
|
|
73
|
+
<g id="node5" class="node">
|
|
74
|
+
<title>Reflect</title>
|
|
75
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M540.12,-196C540.12,-196 482.12,-196 482.12,-196 476.12,-196 470.12,-190 470.12,-184 470.12,-184 470.12,-172 470.12,-172 470.12,-166 476.12,-160 482.12,-160 482.12,-160 540.12,-160 540.12,-160 546.12,-160 552.12,-166 552.12,-172 552.12,-172 552.12,-184 552.12,-184 552.12,-190 546.12,-196 540.12,-196"/>
|
|
76
|
+
<text xml:space="preserve" text-anchor="middle" x="511.12" y="-180.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning_reflect</text>
|
|
77
|
+
<text xml:space="preserve" text-anchor="middle" x="511.12" y="-168.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(session_id)</text>
|
|
78
|
+
</g>
|
|
79
|
+
<!-- Sess->Reflect -->
|
|
77
80
|
<g id="edge4" class="edge">
|
|
78
|
-
<title>
|
|
79
|
-
<path fill="none" stroke="
|
|
80
|
-
<polygon fill="
|
|
81
|
-
|
|
81
|
+
<title>Sess->Reflect</title>
|
|
82
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M335.06,-178C372.26,-178 422.84,-178 460.07,-178"/>
|
|
83
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="459.74,-180.8 467.74,-178 459.74,-175.2 459.74,-180.8"/>
|
|
84
|
+
</g>
|
|
85
|
+
<!-- Fire -->
|
|
86
|
+
<g id="node6" class="node">
|
|
87
|
+
<title>Fire</title>
|
|
88
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M564.88,-124C564.88,-124 457.38,-124 457.38,-124 451.38,-124 445.38,-118 445.38,-112 445.38,-112 445.38,-100 445.38,-100 445.38,-94 451.38,-88 457.38,-88 457.38,-88 564.88,-88 564.88,-88 570.88,-88 576.88,-94 576.88,-100 576.88,-100 576.88,-112 576.88,-112 576.88,-118 570.88,-124 564.88,-124"/>
|
|
89
|
+
<text xml:space="preserve" text-anchor="middle" x="511.12" y="-102.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">crontab → PWN::Cron.run</text>
|
|
90
|
+
</g>
|
|
91
|
+
<!-- Cron->Fire -->
|
|
92
|
+
<g id="edge5" class="edge">
|
|
93
|
+
<title>Cron->Fire</title>
|
|
94
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M321.78,-106C352.43,-106 397.14,-106 435.31,-106"/>
|
|
95
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="434.89,-108.8 442.89,-106 434.89,-103.2 434.89,-108.8"/>
|
|
82
96
|
</g>
|
|
83
|
-
<!--
|
|
97
|
+
<!-- Resume -->
|
|
98
|
+
<g id="node7" class="node">
|
|
99
|
+
<title>Resume</title>
|
|
100
|
+
<path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M538.62,-52C538.62,-52 483.62,-52 483.62,-52 477.62,-52 471.62,-46 471.62,-40 471.62,-40 471.62,-28 471.62,-28 471.62,-22 477.62,-16 483.62,-16 483.62,-16 538.62,-16 538.62,-16 544.62,-16 550.62,-22 550.62,-28 550.62,-28 550.62,-40 550.62,-40 550.62,-46 544.62,-52 538.62,-52"/>
|
|
101
|
+
<text xml:space="preserve" text-anchor="middle" x="511.12" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">agent_debate</text>
|
|
102
|
+
<text xml:space="preserve" text-anchor="middle" x="511.12" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">(swarm_id: ...)</text>
|
|
103
|
+
</g>
|
|
104
|
+
<!-- Swarm->Resume -->
|
|
84
105
|
<g id="edge6" class="edge">
|
|
85
|
-
<title>
|
|
86
|
-
<path fill="none" stroke="
|
|
87
|
-
<polygon fill="
|
|
88
|
-
|
|
89
|
-
|
|
106
|
+
<title>Swarm->Resume</title>
|
|
107
|
+
<path fill="none" stroke="#a78bfa" stroke-width="1.3" d="M339.59,-34C376.8,-34 425.67,-34 461.56,-34"/>
|
|
108
|
+
<polygon fill="#a78bfa" stroke="#a78bfa" stroke-width="1.3" points="461.35,-36.8 469.35,-34 461.35,-31.2 461.35,-36.8"/>
|
|
109
|
+
</g>
|
|
110
|
+
<!-- Next -->
|
|
111
|
+
<g id="node8" class="node">
|
|
112
|
+
<title>Next</title>
|
|
113
|
+
<path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M777.5,-124C777.5,-124 696.25,-124 696.25,-124 690.25,-124 684.25,-118 684.25,-112 684.25,-112 684.25,-100 684.25,-100 684.25,-94 690.25,-88 696.25,-88 696.25,-88 777.5,-88 777.5,-88 783.5,-88 789.5,-94 789.5,-100 789.5,-100 789.5,-112 789.5,-112 789.5,-118 783.5,-124 777.5,-124"/>
|
|
114
|
+
<text xml:space="preserve" text-anchor="middle" x="736.88" y="-108.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Next pwn-ai session</text>
|
|
115
|
+
<text xml:space="preserve" text-anchor="middle" x="736.88" y="-96.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">context restored</text>
|
|
116
|
+
</g>
|
|
117
|
+
<!-- Reflect->Next -->
|
|
118
|
+
<g id="edge7" class="edge">
|
|
119
|
+
<title>Reflect->Next</title>
|
|
120
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M552.64,-164.96C586.69,-154.01 635.86,-138.18 674.7,-125.69"/>
|
|
121
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="675.2,-128.47 681.95,-123.35 673.48,-123.14 675.2,-128.47"/>
|
|
122
|
+
</g>
|
|
123
|
+
<!-- Fire->Next -->
|
|
124
|
+
<g id="edge8" class="edge">
|
|
125
|
+
<title>Fire->Next</title>
|
|
126
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M577.44,-106C607.81,-106 643.74,-106 673.7,-106"/>
|
|
127
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="673.65,-108.8 681.65,-106 673.65,-103.2 673.65,-108.8"/>
|
|
128
|
+
</g>
|
|
129
|
+
<!-- Resume->Next -->
|
|
130
|
+
<g id="edge9" class="edge">
|
|
131
|
+
<title>Resume->Next</title>
|
|
132
|
+
<path fill="none" stroke="#38bdf8" stroke-width="1.3" d="M551.1,-46.54C585.18,-57.51 635.24,-73.62 674.66,-86.3"/>
|
|
133
|
+
<polygon fill="#38bdf8" stroke="#38bdf8" stroke-width="1.3" points="673.58,-88.9 682.05,-88.68 675.3,-83.57 673.58,-88.9"/>
|
|
90
134
|
</g>
|
|
91
135
|
</g>
|
|
92
136
|
</svg>
|