pwn 0.5.620 → 0.5.621

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.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/documentation/Agent-Tool-Registry.md +2 -2
  4. data/documentation/Cron.md +13 -0
  5. data/documentation/Diagrams.md +1 -1
  6. data/documentation/Extrospection.md +71 -5
  7. data/documentation/Home.md +2 -2
  8. data/documentation/How-PWN-Works.md +1 -1
  9. data/documentation/Mistakes.md +2 -1
  10. data/documentation/Persistence.md +2 -1
  11. data/documentation/Skills-Memory-Learning.md +1 -0
  12. data/documentation/Transparent-Browser.md +18 -1
  13. data/documentation/diagrams/agent-tool-registry.svg +55 -54
  14. data/documentation/diagrams/ai-integration-tool-calling.svg +24 -24
  15. data/documentation/diagrams/aws-cloud-security.svg +25 -25
  16. data/documentation/diagrams/burp-vs-zap-preference.svg +12 -12
  17. data/documentation/diagrams/code-scanning-sast.svg +25 -25
  18. data/documentation/diagrams/cron-scheduling.svg +23 -23
  19. data/documentation/diagrams/dot/agent-tool-registry.dot +2 -2
  20. data/documentation/diagrams/dot/extrospection-world-awareness.dot +29 -8
  21. data/documentation/diagrams/dot/memory-skills-detailed.dot +4 -0
  22. data/documentation/diagrams/dot/overall-pwn-architecture.dot +2 -2
  23. data/documentation/diagrams/dot/persistence-filesystem.dot +2 -1
  24. data/documentation/diagrams/dot/pwn-ai-feedback-learning-loop.dot +10 -4
  25. data/documentation/diagrams/driver-framework.svg +13 -13
  26. data/documentation/diagrams/extrospection-world-awareness.svg +229 -99
  27. data/documentation/diagrams/fuzzing-workflow.svg +24 -24
  28. data/documentation/diagrams/hardware-hacking.svg +18 -18
  29. data/documentation/diagrams/history-to-drivers.svg +18 -18
  30. data/documentation/diagrams/memory-skills-detailed.svg +124 -101
  31. data/documentation/diagrams/mistakes-negative-feedback.svg +55 -55
  32. data/documentation/diagrams/network-infra-testing.svg +27 -27
  33. data/documentation/diagrams/overall-pwn-architecture.svg +85 -85
  34. data/documentation/diagrams/penetration-testing-workflow.svg +30 -30
  35. data/documentation/diagrams/persistence-filesystem.svg +94 -85
  36. data/documentation/diagrams/plugin-ecosystem.svg +35 -35
  37. data/documentation/diagrams/pwn-ai-feedback-learning-loop.svg +226 -180
  38. data/documentation/diagrams/pwn-repl-prototyping.svg +20 -20
  39. data/documentation/diagrams/reporting-pipeline.svg +18 -18
  40. data/documentation/diagrams/reverse-engineering-flow.svg +21 -21
  41. data/documentation/diagrams/sdr-radio-flow.svg +31 -31
  42. data/documentation/diagrams/sessions-cron-automation.svg +18 -18
  43. data/documentation/diagrams/swarm-multi-agent.svg +39 -39
  44. data/documentation/diagrams/web-application-testing.svg +26 -26
  45. data/documentation/diagrams/zero-day-research-flow.svg +25 -25
  46. data/documentation/pwn-ai-Agent.md +1 -1
  47. data/lib/pwn/ai/agent/extrospection.rb +433 -4
  48. data/lib/pwn/ai/agent/tools/extrospection.rb +88 -3
  49. data/lib/pwn/sdr/decoder/adsb.rb +14 -33
  50. data/lib/pwn/sdr/decoder/apt.rb +97 -36
  51. data/lib/pwn/sdr/decoder/base.rb +258 -171
  52. data/lib/pwn/sdr/decoder/bluetooth.rb +13 -20
  53. data/lib/pwn/sdr/decoder/dect.rb +13 -27
  54. data/lib/pwn/sdr/decoder/dsp.rb +396 -0
  55. data/lib/pwn/sdr/decoder/flex.rb +177 -210
  56. data/lib/pwn/sdr/decoder/gps.rb +12 -21
  57. data/lib/pwn/sdr/decoder/gsm.rb +21 -73
  58. data/lib/pwn/sdr/decoder/iridium.rb +11 -26
  59. data/lib/pwn/sdr/decoder/lora.rb +16 -23
  60. data/lib/pwn/sdr/decoder/lte.rb +11 -32
  61. data/lib/pwn/sdr/decoder/morse.rb +95 -21
  62. data/lib/pwn/sdr/decoder/p25.rb +19 -16
  63. data/lib/pwn/sdr/decoder/pager.rb +22 -38
  64. data/lib/pwn/sdr/decoder/pocsag.rb +175 -68
  65. data/lib/pwn/sdr/decoder/rfid.rb +24 -33
  66. data/lib/pwn/sdr/decoder/rtl433.rb +21 -30
  67. data/lib/pwn/sdr/decoder/rtty.rb +100 -27
  68. data/lib/pwn/sdr/decoder/wifi.rb +21 -42
  69. data/lib/pwn/sdr/decoder/zigbee.rb +18 -40
  70. data/lib/pwn/sdr/decoder.rb +8 -0
  71. data/lib/pwn/version.rb +1 -1
  72. data/spec/lib/pwn/sdr/decoder/dsp_spec.rb +15 -0
  73. data/third_party/pwn_rdoc.jsonl +24 -3
  74. metadata +3 -1
@@ -9,46 +9,46 @@
9
9
  <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(43.2 249.2)">
10
10
  <title>PWN_Pentest</title>
11
11
  <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-249.2 1337.95,-249.2 1337.95,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="450.88" y="-184" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">End&#45;to&#45;End Penetration Testing with PWN</text>
13
- <text xml:space="preserve" text-anchor="start" x="526.25" y="-172.55" font-family="sans-Serif" font-size="11.00" fill="#94a3b8">recon → enumerate → exploit → post&#45;ex → report</text>
12
+ <text xml:space="preserve" text-anchor="start" x="450.88" y="-184" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">End&#45;to&#45;End Penetration Testing with PWN</text>
13
+ <text xml:space="preserve" text-anchor="start" x="526.25" y="-172.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#94a3b8">recon → enumerate → exploit → post&#45;ex → report</text>
14
14
  <g id="clust1" class="cluster">
15
15
  <title>cluster_recon</title>
16
16
  <path fill="#022c22" stroke="#047857" d="M166,-8C166,-8 285.75,-8 285.75,-8 291.75,-8 297.75,-14 297.75,-20 297.75,-20 297.75,-147 297.75,-147 297.75,-153 291.75,-159 285.75,-159 285.75,-159 166,-159 166,-159 160,-159 154,-153 154,-147 154,-147 154,-20 154,-20 154,-14 160,-8 166,-8"/>
17
- <text xml:space="preserve" text-anchor="middle" x="225.88" y="-136" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">1 · Recon</text>
17
+ <text xml:space="preserve" text-anchor="middle" x="225.88" y="-136" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#a7f3d0">1 · Recon</text>
18
18
  </g>
19
19
  <g id="clust2" class="cluster">
20
20
  <title>cluster_enum</title>
21
21
  <path fill="#022c22" stroke="#047857" d="M379.75,-8C379.75,-8 497,-8 497,-8 503,-8 509,-14 509,-20 509,-20 509,-147 509,-147 509,-153 503,-159 497,-159 497,-159 379.75,-159 379.75,-159 373.75,-159 367.75,-153 367.75,-147 367.75,-147 367.75,-20 367.75,-20 367.75,-14 373.75,-8 379.75,-8"/>
22
- <text xml:space="preserve" text-anchor="middle" x="438.38" y="-136" font-family="sans-Serif" font-size="20.00" fill="#a7f3d0">2 · Enumerate</text>
22
+ <text xml:space="preserve" text-anchor="middle" x="438.38" y="-136" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#a7f3d0">2 · Enumerate</text>
23
23
  </g>
24
24
  <g id="clust3" class="cluster">
25
25
  <title>cluster_vuln</title>
26
26
  <path fill="#422006" stroke="#a16207" d="M591,-8C591,-8 700,-8 700,-8 706,-8 712,-14 712,-20 712,-20 712,-147 712,-147 712,-153 706,-159 700,-159 700,-159 591,-159 591,-159 585,-159 579,-153 579,-147 579,-147 579,-20 579,-20 579,-14 585,-8 591,-8"/>
27
- <text xml:space="preserve" text-anchor="middle" x="645.5" y="-136" font-family="sans-Serif" font-size="20.00" fill="#fde68a">3 · Vuln Scan</text>
27
+ <text xml:space="preserve" text-anchor="middle" x="645.5" y="-136" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#fde68a">3 · Vuln Scan</text>
28
28
  </g>
29
29
  <g id="clust4" class="cluster">
30
30
  <title>cluster_xpl</title>
31
31
  <path fill="#450a0a" stroke="#b91c1c" d="M794,-8C794,-8 885.25,-8 885.25,-8 891.25,-8 897.25,-14 897.25,-20 897.25,-20 897.25,-147 897.25,-147 897.25,-153 891.25,-159 885.25,-159 885.25,-159 794,-159 794,-159 788,-159 782,-153 782,-147 782,-147 782,-20 782,-20 782,-14 788,-8 794,-8"/>
32
- <text xml:space="preserve" text-anchor="middle" x="839.62" y="-136" font-family="sans-Serif" font-size="20.00" fill="#fecaca">4 · Exploit</text>
32
+ <text xml:space="preserve" text-anchor="middle" x="839.62" y="-136" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#fecaca">4 · Exploit</text>
33
33
  </g>
34
34
  <g id="clust5" class="cluster">
35
35
  <title>cluster_post</title>
36
36
  <path fill="#2e1065" stroke="#6d28d9" d="M979.25,-8C979.25,-8 1068,-8 1068,-8 1074,-8 1080,-14 1080,-20 1080,-20 1080,-147 1080,-147 1080,-153 1074,-159 1068,-159 1068,-159 979.25,-159 979.25,-159 973.25,-159 967.25,-153 967.25,-147 967.25,-147 967.25,-20 967.25,-20 967.25,-14 973.25,-8 979.25,-8"/>
37
- <text xml:space="preserve" text-anchor="middle" x="1023.62" y="-136" font-family="sans-Serif" font-size="20.00" fill="#ddd6fe">5 · Post&#45;Ex</text>
37
+ <text xml:space="preserve" text-anchor="middle" x="1023.62" y="-136" font-family="Helvetica,sans-Serif" font-size="20.00" fill="#ddd6fe">5 · Post&#45;Ex</text>
38
38
  </g>
39
39
  <!-- Scope -->
40
40
  <g id="node1" class="node">
41
41
  <title>Scope</title>
42
42
  <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M64,-86C64,-86 12,-86 12,-86 6,-86 0,-80 0,-74 0,-74 0,-62 0,-62 0,-56 6,-50 12,-50 12,-50 64,-50 64,-50 70,-50 76,-56 76,-62 76,-62 76,-74 76,-74 76,-80 70,-86 64,-86"/>
43
- <text xml:space="preserve" text-anchor="middle" x="38" y="-70.88" font-family="sans-Serif" font-size="10.00" fill="#0f172a">🎯 &#160;Scope</text>
44
- <text xml:space="preserve" text-anchor="middle" x="38" y="-58.12" font-family="sans-Serif" font-size="10.00" fill="#0f172a">targets · rules</text>
43
+ <text xml:space="preserve" text-anchor="middle" x="38" y="-70.88" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">🎯 &#160;Scope</text>
44
+ <text xml:space="preserve" text-anchor="middle" x="38" y="-58.12" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">targets · rules</text>
45
45
  </g>
46
46
  <!-- Shodan -->
47
47
  <g id="node2" class="node">
48
48
  <title>Shodan</title>
49
49
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M257.5,-52C257.5,-52 194.25,-52 194.25,-52 188.25,-52 182.25,-46 182.25,-40 182.25,-40 182.25,-28 182.25,-28 182.25,-22 188.25,-16 194.25,-16 194.25,-16 257.5,-16 257.5,-16 263.5,-16 269.5,-22 269.5,-28 269.5,-28 269.5,-40 269.5,-40 269.5,-46 263.5,-52 257.5,-52"/>
50
- <text xml:space="preserve" text-anchor="middle" x="225.88" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Shodan</text>
51
- <text xml:space="preserve" text-anchor="middle" x="225.88" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Hunter · IPInfo</text>
50
+ <text xml:space="preserve" text-anchor="middle" x="225.88" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Shodan</text>
51
+ <text xml:space="preserve" text-anchor="middle" x="225.88" y="-24.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Hunter · IPInfo</text>
52
52
  </g>
53
53
  <!-- Scope&#45;&gt;Shodan -->
54
54
  <g id="edge1" class="edge">
@@ -60,8 +60,8 @@
60
60
  <g id="node3" class="node">
61
61
  <title>CrtSh</title>
62
62
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M277.75,-120C277.75,-120 174,-120 174,-120 168,-120 162,-114 162,-108 162,-108 162,-96 162,-96 162,-90 168,-84 174,-84 174,-84 277.75,-84 277.75,-84 283.75,-84 289.75,-90 289.75,-96 289.75,-96 289.75,-108 289.75,-108 289.75,-114 283.75,-120 277.75,-120"/>
63
- <text xml:space="preserve" text-anchor="middle" x="225.88" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">bin/pwn_crt_sh</text>
64
- <text xml:space="preserve" text-anchor="middle" x="225.88" y="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">WWW::WaybackMachine</text>
63
+ <text xml:space="preserve" text-anchor="middle" x="225.88" y="-104.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">bin/pwn_crt_sh</text>
64
+ <text xml:space="preserve" text-anchor="middle" x="225.88" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">WWW::WaybackMachine</text>
65
65
  </g>
66
66
  <!-- Scope&#45;&gt;CrtSh -->
67
67
  <g id="edge2" class="edge">
@@ -73,8 +73,8 @@
73
73
  <g id="node4" class="node">
74
74
  <title>Nmap</title>
75
75
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M476.25,-52C476.25,-52 399.5,-52 399.5,-52 393.5,-52 387.5,-46 387.5,-40 387.5,-40 387.5,-28 387.5,-28 387.5,-22 393.5,-16 399.5,-16 399.5,-16 476.25,-16 476.25,-16 482.25,-16 488.25,-22 488.25,-28 488.25,-28 488.25,-40 488.25,-40 488.25,-46 482.25,-52 476.25,-52"/>
76
- <text xml:space="preserve" text-anchor="middle" x="437.88" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::NmapIt</text>
77
- <text xml:space="preserve" text-anchor="middle" x="437.88" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">TCP/UDP discover</text>
76
+ <text xml:space="preserve" text-anchor="middle" x="437.88" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::NmapIt</text>
77
+ <text xml:space="preserve" text-anchor="middle" x="437.88" y="-24.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">TCP/UDP discover</text>
78
78
  </g>
79
79
  <!-- Shodan&#45;&gt;Nmap -->
80
80
  <g id="edge3" class="edge">
@@ -86,8 +86,8 @@
86
86
  <g id="node5" class="node">
87
87
  <title>Spider</title>
88
88
  <path fill="#6ee7b7" stroke="#334155" stroke-width="1.3" d="M477.75,-120C477.75,-120 398,-120 398,-120 392,-120 386,-114 386,-108 386,-108 386,-96 386,-96 386,-90 392,-84 398,-84 398,-84 477.75,-84 477.75,-84 483.75,-84 489.75,-90 489.75,-96 489.75,-96 489.75,-108 489.75,-108 489.75,-114 483.75,-120 477.75,-120"/>
89
- <text xml:space="preserve" text-anchor="middle" x="437.88" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Spider</text>
90
- <text xml:space="preserve" text-anchor="middle" x="437.88" y="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">TransparentBrowser</text>
89
+ <text xml:space="preserve" text-anchor="middle" x="437.88" y="-104.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Spider</text>
90
+ <text xml:space="preserve" text-anchor="middle" x="437.88" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">TransparentBrowser</text>
91
91
  </g>
92
92
  <!-- CrtSh&#45;&gt;Spider -->
93
93
  <g id="edge4" class="edge">
@@ -99,8 +99,8 @@
99
99
  <g id="node6" class="node">
100
100
  <title>Burp</title>
101
101
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M681.5,-120C681.5,-120 608.5,-120 608.5,-120 602.5,-120 596.5,-114 596.5,-108 596.5,-108 596.5,-96 596.5,-96 596.5,-90 602.5,-84 608.5,-84 608.5,-84 681.5,-84 681.5,-84 687.5,-84 693.5,-90 693.5,-96 693.5,-96 693.5,-108 693.5,-108 693.5,-114 687.5,-120 681.5,-120"/>
102
- <text xml:space="preserve" text-anchor="middle" x="645" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::BurpSuite</text>
103
- <text xml:space="preserve" text-anchor="middle" x="645" y="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">active scan</text>
102
+ <text xml:space="preserve" text-anchor="middle" x="645" y="-104.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::BurpSuite</text>
103
+ <text xml:space="preserve" text-anchor="middle" x="645" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">active scan</text>
104
104
  </g>
105
105
  <!-- Nmap&#45;&gt;Burp -->
106
106
  <g id="edge5" class="edge">
@@ -112,8 +112,8 @@
112
112
  <g id="node7" class="node">
113
113
  <title>Nessus</title>
114
114
  <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M686,-52C686,-52 604,-52 604,-52 598,-52 592,-46 592,-40 592,-40 592,-28 592,-28 592,-22 598,-16 604,-16 604,-16 686,-16 686,-16 692,-16 698,-22 698,-28 698,-28 698,-40 698,-40 698,-46 692,-52 686,-52"/>
115
- <text xml:space="preserve" text-anchor="middle" x="645" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">NessusCloud</text>
116
- <text xml:space="preserve" text-anchor="middle" x="645" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">OpenVAS · Nexpose</text>
115
+ <text xml:space="preserve" text-anchor="middle" x="645" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">NessusCloud</text>
116
+ <text xml:space="preserve" text-anchor="middle" x="645" y="-24.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">OpenVAS · Nexpose</text>
117
117
  </g>
118
118
  <!-- Nmap&#45;&gt;Nessus -->
119
119
  <g id="edge6" class="edge">
@@ -131,7 +131,7 @@
131
131
  <g id="node8" class="node">
132
132
  <title>MSF</title>
133
133
  <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M877.25,-120C877.25,-120 802,-120 802,-120 796,-120 790,-114 790,-108 790,-108 790,-96 790,-96 790,-90 796,-84 802,-84 802,-84 877.25,-84 877.25,-84 883.25,-84 889.25,-90 889.25,-96 889.25,-96 889.25,-108 889.25,-108 889.25,-114 883.25,-120 877.25,-120"/>
134
- <text xml:space="preserve" text-anchor="middle" x="839.62" y="-98.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Metasploit</text>
134
+ <text xml:space="preserve" text-anchor="middle" x="839.62" y="-98.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Metasploit</text>
135
135
  </g>
136
136
  <!-- Burp&#45;&gt;MSF -->
137
137
  <g id="edge8" class="edge">
@@ -143,8 +143,8 @@
143
143
  <g id="node9" class="node">
144
144
  <title>Fuzz</title>
145
145
  <path fill="#fda4af" stroke="#334155" stroke-width="1.3" d="M866.75,-52C866.75,-52 812.5,-52 812.5,-52 806.5,-52 800.5,-46 800.5,-40 800.5,-40 800.5,-28 800.5,-28 800.5,-22 806.5,-16 812.5,-16 812.5,-16 866.75,-16 866.75,-16 872.75,-16 878.75,-22 878.75,-28 878.75,-28 878.75,-40 878.75,-40 878.75,-46 872.75,-52 866.75,-52"/>
146
- <text xml:space="preserve" text-anchor="middle" x="839.62" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Fuzz</text>
147
- <text xml:space="preserve" text-anchor="middle" x="839.62" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Packet · Sock</text>
146
+ <text xml:space="preserve" text-anchor="middle" x="839.62" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Fuzz</text>
147
+ <text xml:space="preserve" text-anchor="middle" x="839.62" y="-24.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Packet · Sock</text>
148
148
  </g>
149
149
  <!-- Nessus&#45;&gt;Fuzz -->
150
150
  <g id="edge9" class="edge">
@@ -156,8 +156,8 @@
156
156
  <g id="node10" class="node">
157
157
  <title>Beef</title>
158
158
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M1052.5,-120C1052.5,-120 993.75,-120 993.75,-120 987.75,-120 981.75,-114 981.75,-108 981.75,-108 981.75,-96 981.75,-96 981.75,-90 987.75,-84 993.75,-84 993.75,-84 1052.5,-84 1052.5,-84 1058.5,-84 1064.5,-90 1064.5,-96 1064.5,-96 1064.5,-108 1064.5,-108 1064.5,-114 1058.5,-120 1052.5,-120"/>
159
- <text xml:space="preserve" text-anchor="middle" x="1023.12" y="-104.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::BeEF</text>
160
- <text xml:space="preserve" text-anchor="middle" x="1023.12" y="-92.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Android · Serial</text>
159
+ <text xml:space="preserve" text-anchor="middle" x="1023.12" y="-104.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::BeEF</text>
160
+ <text xml:space="preserve" text-anchor="middle" x="1023.12" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Android · Serial</text>
161
161
  </g>
162
162
  <!-- MSF&#45;&gt;Beef -->
163
163
  <g id="edge10" class="edge">
@@ -169,8 +169,8 @@
169
169
  <g id="node11" class="node">
170
170
  <title>Tor</title>
171
171
  <path fill="#c4b5fd" stroke="#334155" stroke-width="1.3" d="M1045,-52C1045,-52 1001.25,-52 1001.25,-52 995.25,-52 989.25,-46 989.25,-40 989.25,-40 989.25,-28 989.25,-28 989.25,-22 995.25,-16 1001.25,-16 1001.25,-16 1045,-16 1045,-16 1051,-16 1057,-22 1057,-28 1057,-28 1057,-40 1057,-40 1057,-46 1051,-52 1045,-52"/>
172
- <text xml:space="preserve" text-anchor="middle" x="1023.12" y="-36.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Tor</text>
173
- <text xml:space="preserve" text-anchor="middle" x="1023.12" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">pivot / exfil</text>
172
+ <text xml:space="preserve" text-anchor="middle" x="1023.12" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">Plugins::Tor</text>
173
+ <text xml:space="preserve" text-anchor="middle" x="1023.12" y="-24.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">pivot / exfil</text>
174
174
  </g>
175
175
  <!-- Fuzz&#45;&gt;Tor -->
176
176
  <g id="edge11" class="edge">
@@ -182,8 +182,8 @@
182
182
  <g id="node12" class="node">
183
183
  <title>Report</title>
184
184
  <path fill="#7dd3fc" stroke="#334155" stroke-width="1.3" d="M1282.75,-86C1282.75,-86 1170,-86 1170,-86 1164,-86 1158,-80 1158,-74 1158,-74 1158,-62 1158,-62 1158,-56 1164,-50 1170,-50 1170,-50 1282.75,-50 1282.75,-50 1288.75,-50 1294.75,-56 1294.75,-62 1294.75,-62 1294.75,-74 1294.75,-74 1294.75,-80 1288.75,-86 1282.75,-86"/>
185
- <text xml:space="preserve" text-anchor="middle" x="1226.38" y="-70.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">PWN::Reports</text>
186
- <text xml:space="preserve" text-anchor="middle" x="1226.38" y="-58.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">HTML · JSON · DefectDojo</text>
185
+ <text xml:space="preserve" text-anchor="middle" x="1226.38" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">PWN::Reports</text>
186
+ <text xml:space="preserve" text-anchor="middle" x="1226.38" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">HTML · JSON · DefectDojo</text>
187
187
  </g>
188
188
  <!-- Beef&#45;&gt;Report -->
189
189
  <g id="edge12" class="edge">
@@ -4,186 +4,195 @@
4
4
  <!-- Generated by graphviz version 14.1.2 (0)
5
5
  -->
6
6
  <!-- Title: PWN_Persistence Pages: 1 -->
7
- <svg width="604pt" height="904pt"
8
- viewBox="0.00 0.00 604.00 904.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 860.45)">
7
+ <svg width="604pt" height="920pt"
8
+ viewBox="0.00 0.00 604.00 920.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 876.45)">
10
10
  <title>PWN_Persistence</title>
11
- <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-860.45 560.95,-860.45 560.95,43.2 -43.2,43.2"/>
12
- <text xml:space="preserve" text-anchor="start" x="8" y="-795.25" font-family="sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">~/.pwn/ — Everything PWN Persists Across Sessions</text>
11
+ <polygon fill="#0f172a" stroke="none" points="-43.2,43.2 -43.2,-876.45 560.95,-876.45 560.95,43.2 -43.2,43.2"/>
12
+ <text xml:space="preserve" text-anchor="start" x="8" y="-811.25" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="20.00" fill="#e2e8f0">~/.pwn/ — Everything PWN Persists Across Sessions</text>
13
13
  <!-- Root -->
14
14
  <g id="node1" class="node">
15
15
  <title>Root</title>
16
- <polygon fill="#7dd3fc" stroke="#334155" stroke-width="1.3" points="156.62,-403 153.62,-407 132.62,-407 129.62,-403 97.12,-403 97.12,-367 156.62,-367 156.62,-403"/>
17
- <text xml:space="preserve" text-anchor="middle" x="126.88" y="-380.15" font-family="sans-Serif" font-size="13.00" fill="#0f172a">~/.pwn/</text>
16
+ <polygon fill="#7dd3fc" stroke="#334155" stroke-width="1.3" points="158.88,-415 155.88,-419 134.88,-419 131.88,-415 99.38,-415 99.38,-379 158.88,-379 158.88,-415"/>
17
+ <text xml:space="preserve" text-anchor="middle" x="129.12" y="-392.15" font-family="Helvetica,sans-Serif" font-size="13.00" fill="#0f172a">~/.pwn/</text>
18
18
  </g>
19
19
  <!-- cfg -->
20
20
  <g id="node2" class="node">
21
21
  <title>cfg</title>
22
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M406.38,-782C406.38,-784.21 376.23,-786 339.12,-786 302.02,-786 271.88,-784.21 271.88,-782 271.88,-782 271.88,-746 271.88,-746 271.88,-743.79 302.02,-742 339.12,-742 376.23,-742 406.38,-743.79 406.38,-746 406.38,-746 406.38,-782 406.38,-782"/>
23
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M406.38,-782C406.38,-779.79 376.23,-778 339.12,-778 302.02,-778 271.88,-779.79 271.88,-782"/>
24
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-766.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">config.yml</text>
25
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-754.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">engines · keys · agent opts</text>
22
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M437.12,-798C437.12,-800.21 406.98,-802 369.88,-802 332.77,-802 302.62,-800.21 302.62,-798 302.62,-798 302.62,-762 302.62,-762 302.62,-759.79 332.77,-758 369.88,-758 406.98,-758 437.12,-759.79 437.12,-762 437.12,-762 437.12,-798 437.12,-798"/>
23
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M437.12,-798C437.12,-795.79 406.98,-794 369.88,-794 332.77,-794 302.62,-795.79 302.62,-798"/>
24
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-782.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">config.yml</text>
25
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">engines · keys · agent opts</text>
26
26
  </g>
27
27
  <!-- Root&#45;&gt;cfg -->
28
28
  <g id="edge1" class="edge">
29
29
  <title>Root&#45;&gt;cfg</title>
30
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M129.66,-403.5C136.09,-460.16 162.92,-633.38 257.62,-731 260.31,-733.77 263.26,-736.31 266.4,-738.65"/>
31
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="264.52,-740.34 271.69,-742.23 267.26,-736.28 264.52,-740.34"/>
30
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M159.28,-405.7C170.11,-410.21 181.68,-416.77 189.62,-426 287.23,-539.32 189.97,-636.38 290.62,-747 293.03,-749.64 295.67,-752.07 298.49,-754.32"/>
31
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="296.89,-756.18 304.01,-758.25 299.74,-752.19 296.89,-756.18"/>
32
32
  </g>
33
33
  <!-- mem -->
34
34
  <g id="node3" class="node">
35
35
  <title>mem</title>
36
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M407.12,-716C407.12,-718.21 376.65,-720 339.12,-720 301.6,-720 271.12,-718.21 271.12,-716 271.12,-716 271.12,-680 271.12,-680 271.12,-677.79 301.6,-676 339.12,-676 376.65,-676 407.12,-677.79 407.12,-680 407.12,-680 407.12,-716 407.12,-716"/>
37
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M407.12,-716C407.12,-713.79 376.65,-712 339.12,-712 301.6,-712 271.12,-713.79 271.12,-716"/>
38
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-700.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">memory.json</text>
39
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-688.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">facts · prefs · lessons · env</text>
36
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M437.88,-732C437.88,-734.21 407.4,-736 369.88,-736 332.35,-736 301.88,-734.21 301.88,-732 301.88,-732 301.88,-696 301.88,-696 301.88,-693.79 332.35,-692 369.88,-692 407.4,-692 437.88,-693.79 437.88,-696 437.88,-696 437.88,-732 437.88,-732"/>
37
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M437.88,-732C437.88,-729.79 407.4,-728 369.88,-728 332.35,-728 301.88,-729.79 301.88,-732"/>
38
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-716.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">memory.json</text>
39
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">facts · prefs · lessons · env</text>
40
40
  </g>
41
41
  <!-- Root&#45;&gt;mem -->
42
42
  <g id="edge2" class="edge">
43
43
  <title>Root&#45;&gt;mem</title>
44
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M131.51,-403.42C142.1,-452.59 177.46,-588.36 257.62,-665 260.4,-667.66 263.42,-670.11 266.61,-672.37"/>
45
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="265.22,-674.39 272.43,-676.13 267.88,-670.28 265.22,-674.39"/>
44
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M159.25,-406.13C169.94,-410.68 181.43,-417.15 189.62,-426 272.47,-515.42 205.38,-593.86 290.62,-681 293.32,-683.75 296.28,-686.29 299.42,-688.62"/>
45
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="297.55,-690.31 304.72,-692.2 300.29,-686.25 297.55,-690.31"/>
46
46
  </g>
47
47
  <!-- skl -->
48
48
  <g id="node4" class="node">
49
49
  <title>skl</title>
50
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M405.25,-650C405.25,-652.21 375.61,-654 339.12,-654 302.64,-654 273,-652.21 273,-650 273,-650 273,-614 273,-614 273,-611.79 302.64,-610 339.12,-610 375.61,-610 405.25,-611.79 405.25,-614 405.25,-614 405.25,-650 405.25,-650"/>
51
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M405.25,-650C405.25,-647.79 375.61,-646 339.12,-646 302.64,-646 273,-647.79 273,-650"/>
52
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-634.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">skills/*.md</text>
53
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-622.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">reusable procedures + refs</text>
50
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M436,-666C436,-668.21 406.36,-670 369.88,-670 333.39,-670 303.75,-668.21 303.75,-666 303.75,-666 303.75,-630 303.75,-630 303.75,-627.79 333.39,-626 369.88,-626 406.36,-626 436,-627.79 436,-630 436,-630 436,-666 436,-666"/>
51
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M436,-666C436,-663.79 406.36,-662 369.88,-662 333.39,-662 303.75,-663.79 303.75,-666"/>
52
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-650.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">skills/*.md</text>
53
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">reusable procedures + refs</text>
54
54
  </g>
55
55
  <!-- Root&#45;&gt;skl -->
56
56
  <g id="edge3" class="edge">
57
57
  <title>Root&#45;&gt;skl</title>
58
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M134.42,-403.44C149.75,-444.17 191.74,-542.67 257.62,-599 260.91,-601.81 264.47,-604.41 268.2,-606.8"/>
59
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="266.85,-608.85 274.13,-610.31 269.35,-604.63 266.85,-608.85"/>
58
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M159.35,-406.89C169.8,-411.49 181.1,-417.79 189.62,-426 258.21,-492.08 220.26,-550.81 290.62,-615 293.6,-617.71 296.83,-620.22 300.23,-622.54"/>
59
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="298.77,-624.52 306,-626.16 301.37,-620.37 298.77,-624.52"/>
60
60
  </g>
61
61
  <!-- lrn -->
62
62
  <g id="node5" class="node">
63
63
  <title>lrn</title>
64
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M379.38,-584C379.38,-586.21 361.33,-588 339.12,-588 316.92,-588 298.88,-586.21 298.88,-584 298.88,-584 298.88,-548 298.88,-548 298.88,-545.79 316.92,-544 339.12,-544 361.33,-544 379.38,-545.79 379.38,-548 379.38,-548 379.38,-584 379.38,-584"/>
65
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M379.38,-584C379.38,-581.79 361.33,-580 339.12,-580 316.92,-580 298.88,-581.79 298.88,-584"/>
66
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-568.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">learning.jsonl</text>
67
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-556.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">task outcomes</text>
64
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M410.12,-600C410.12,-602.21 392.08,-604 369.88,-604 347.67,-604 329.62,-602.21 329.62,-600 329.62,-600 329.62,-564 329.62,-564 329.62,-561.79 347.67,-560 369.88,-560 392.08,-560 410.12,-561.79 410.12,-564 410.12,-564 410.12,-600 410.12,-600"/>
65
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M410.12,-600C410.12,-597.79 392.08,-596 369.88,-596 347.67,-596 329.62,-597.79 329.62,-600"/>
66
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-584.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">learning.jsonl</text>
67
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-572.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">task outcomes</text>
68
68
  </g>
69
69
  <!-- Root&#45;&gt;lrn -->
70
70
  <g id="edge4" class="edge">
71
71
  <title>Root&#45;&gt;lrn</title>
72
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M139.74,-403.37C160.36,-434.01 205.62,-495.87 257.62,-533 267.61,-540.13 279.37,-546.06 290.77,-550.83"/>
73
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="289.62,-553.01 297.03,-553.33 291.44,-548.46 289.62,-553.01"/>
72
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M159.43,-408.25C169.55,-412.9 180.61,-418.88 189.62,-426 245.14,-469.84 233.94,-506.69 290.62,-549 299.85,-555.88 310.72,-561.64 321.38,-566.31"/>
73
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="320.14,-568.45 327.54,-568.88 322.02,-563.92 320.14,-568.45"/>
74
74
  </g>
75
75
  <!-- mis -->
76
76
  <g id="node6" class="node">
77
77
  <title>mis</title>
78
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M418.38,-516.75C418.38,-519.78 382.85,-522.25 339.12,-522.25 295.4,-522.25 259.88,-519.78 259.88,-516.75 259.88,-516.75 259.88,-467.25 259.88,-467.25 259.88,-464.22 295.4,-461.75 339.12,-461.75 382.85,-461.75 418.38,-464.22 418.38,-467.25 418.38,-467.25 418.38,-516.75 418.38,-516.75"/>
79
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M418.38,-516.75C418.38,-513.72 382.85,-511.25 339.12,-511.25 295.4,-511.25 259.88,-513.72 259.88,-516.75"/>
80
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-500.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">mistakes.json</text>
81
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-488.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">failure fingerprints · fixes</text>
82
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-476.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">[REPEATING] · [REGRESSED]</text>
78
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M449.12,-532.75C449.12,-535.78 413.6,-538.25 369.88,-538.25 326.15,-538.25 290.62,-535.78 290.62,-532.75 290.62,-532.75 290.62,-483.25 290.62,-483.25 290.62,-480.22 326.15,-477.75 369.88,-477.75 413.6,-477.75 449.12,-480.22 449.12,-483.25 449.12,-483.25 449.12,-532.75 449.12,-532.75"/>
79
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M449.12,-532.75C449.12,-529.72 413.6,-527.25 369.88,-527.25 326.15,-527.25 290.62,-529.72 290.62,-532.75"/>
80
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-516.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">mistakes.json</text>
81
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">failure fingerprints · fixes</text>
82
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-492.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">[REPEATING] · [REGRESSED]</text>
83
83
  </g>
84
84
  <!-- Root&#45;&gt;mis -->
85
85
  <g id="edge5" class="edge">
86
86
  <title>Root&#45;&gt;mis</title>
87
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M157.11,-399.88C186.73,-414.95 233.56,-438.78 272.16,-458.43"/>
88
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="270.93,-460.55 278.28,-461.55 273.16,-456.19 270.93,-460.55"/>
87
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M159.4,-410.61C193.72,-426.57 251.81,-453.57 298.12,-475.1"/>
88
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="296.85,-477.21 304.23,-477.94 298.91,-472.77 296.85,-477.21"/>
89
89
  </g>
90
90
  <!-- met -->
91
91
  <g id="node7" class="node">
92
92
  <title>met</title>
93
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M385,-436C385,-438.21 364.44,-440 339.12,-440 313.81,-440 293.25,-438.21 293.25,-436 293.25,-436 293.25,-400 293.25,-400 293.25,-397.79 313.81,-396 339.12,-396 364.44,-396 385,-397.79 385,-400 385,-400 385,-436 385,-436"/>
94
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M385,-436C385,-433.79 364.44,-432 339.12,-432 313.81,-432 293.25,-433.79 293.25,-436"/>
95
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-420.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">metrics.json</text>
96
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-408.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">per&#45;tool telemetry</text>
93
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M415.75,-452C415.75,-454.21 395.19,-456 369.88,-456 344.56,-456 324,-454.21 324,-452 324,-452 324,-416 324,-416 324,-413.79 344.56,-412 369.88,-412 395.19,-412 415.75,-413.79 415.75,-416 415.75,-416 415.75,-452 415.75,-452"/>
94
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M415.75,-452C415.75,-449.79 395.19,-448 369.88,-448 344.56,-448 324,-449.79 324,-452"/>
95
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-436.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">metrics.json</text>
96
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">per&#45;tool telemetry</text>
97
97
  </g>
98
98
  <!-- Root&#45;&gt;met -->
99
99
  <g id="edge6" class="edge">
100
100
  <title>Root&#45;&gt;met</title>
101
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M157.11,-389.59C189.98,-394.75 244.03,-403.23 284.53,-409.59"/>
102
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="284.02,-411.99 291.31,-410.65 284.78,-407.15 284.02,-411.99"/>
101
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M159.4,-401.54C198.05,-407.53 266.81,-418.18 314.98,-425.65"/>
102
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="314.49,-428.05 321.78,-426.7 315.24,-423.21 314.49,-428.05"/>
103
103
  </g>
104
104
  <!-- ext -->
105
105
  <g id="node8" class="node">
106
106
  <title>ext</title>
107
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M420.62,-370C420.62,-372.21 384.1,-374 339.12,-374 294.15,-374 257.62,-372.21 257.62,-370 257.62,-370 257.62,-334 257.62,-334 257.62,-331.79 294.15,-330 339.12,-330 384.1,-330 420.62,-331.79 420.62,-334 420.62,-334 420.62,-370 420.62,-370"/>
108
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M420.62,-370C420.62,-367.79 384.1,-366 339.12,-366 294.15,-366 257.62,-367.79 257.62,-370"/>
109
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-354.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">extrospection.json</text>
110
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-342.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">host snapshot + rf + observations</text>
107
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M432.62,-384.75C432.62,-387.78 404.5,-390.25 369.88,-390.25 335.25,-390.25 307.12,-387.78 307.12,-384.75 307.12,-384.75 307.12,-335.25 307.12,-335.25 307.12,-332.22 335.25,-329.75 369.88,-329.75 404.5,-329.75 432.62,-332.22 432.62,-335.25 432.62,-335.25 432.62,-384.75 432.62,-384.75"/>
108
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M432.62,-384.75C432.62,-381.72 404.5,-379.25 369.88,-379.25 335.25,-379.25 307.12,-381.72 307.12,-384.75"/>
109
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">extrospection.json</text>
110
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-356.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">host snapshot + rf + web</text>
111
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">+ observations</text>
111
112
  </g>
112
113
  <!-- Root&#45;&gt;ext -->
113
114
  <g id="edge7" class="edge">
114
115
  <title>Root&#45;&gt;ext</title>
115
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M157.11,-380.41C180.93,-376.67 215.88,-371.19 248.73,-366.03"/>
116
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="248.85,-368.49 255.39,-364.99 248.09,-363.65 248.85,-368.49"/>
116
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M159.4,-392.46C193.75,-387.14 251.88,-378.13 298.21,-370.95"/>
117
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="298.52,-373.38 305.07,-369.89 297.77,-368.54 298.52,-373.38"/>
117
118
  </g>
118
119
  <!-- ses -->
119
- <g id="node9" class="node">
120
+ <g id="node10" class="node">
120
121
  <title>ses</title>
121
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M381.62,-304C381.62,-306.21 362.58,-308 339.12,-308 315.67,-308 296.62,-306.21 296.62,-304 296.62,-304 296.62,-268 296.62,-268 296.62,-265.79 315.67,-264 339.12,-264 362.58,-264 381.62,-265.79 381.62,-268 381.62,-268 381.62,-304 381.62,-304"/>
122
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M381.62,-304C381.62,-301.79 362.58,-300 339.12,-300 315.67,-300 296.62,-301.79 296.62,-304"/>
123
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-288.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">sessions/*.jsonl</text>
124
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-276.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">transcripts</text>
122
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M412.38,-304C412.38,-306.21 393.33,-308 369.88,-308 346.42,-308 327.38,-306.21 327.38,-304 327.38,-304 327.38,-268 327.38,-268 327.38,-265.79 346.42,-264 369.88,-264 393.33,-264 412.38,-265.79 412.38,-268 412.38,-268 412.38,-304 412.38,-304"/>
123
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M412.38,-304C412.38,-301.79 393.33,-300 369.88,-300 346.42,-300 327.38,-301.79 327.38,-304"/>
124
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">sessions/*.jsonl</text>
125
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-276.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">transcripts</text>
125
126
  </g>
126
127
  <!-- Root&#45;&gt;ses -->
127
128
  <g id="edge8" class="edge">
128
129
  <title>Root&#45;&gt;ses</title>
129
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M157.17,-369.23C183.25,-355.41 222.59,-335.06 257.62,-319 267.47,-314.49 278.12,-309.91 288.35,-305.66"/>
130
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="288.99,-308.05 294.53,-303.12 287.12,-303.52 288.99,-308.05"/>
130
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M159.48,-382.15C191.5,-366.09 244.35,-339.98 290.62,-319 299.75,-314.86 309.55,-310.59 319.01,-306.56"/>
131
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="319.85,-308.87 325.33,-303.88 317.93,-304.36 319.85,-308.87"/>
131
132
  </g>
132
133
  <!-- crn -->
133
- <g id="node10" class="node">
134
+ <g id="node11" class="node">
134
135
  <title>crn</title>
135
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M394.75,-238C394.75,-240.21 369.82,-242 339.12,-242 308.43,-242 283.5,-240.21 283.5,-238 283.5,-238 283.5,-202 283.5,-202 283.5,-199.79 308.43,-198 339.12,-198 369.82,-198 394.75,-199.79 394.75,-202 394.75,-202 394.75,-238 394.75,-238"/>
136
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M394.75,-238C394.75,-235.79 369.82,-234 339.12,-234 308.43,-234 283.5,-235.79 283.5,-238"/>
137
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-222.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">cron/jobs.yml</text>
138
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-210.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">scheduled jobs + logs</text>
136
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M425.5,-238C425.5,-240.21 400.57,-242 369.88,-242 339.18,-242 314.25,-240.21 314.25,-238 314.25,-238 314.25,-202 314.25,-202 314.25,-199.79 339.18,-198 369.88,-198 400.57,-198 425.5,-199.79 425.5,-202 425.5,-202 425.5,-238 425.5,-238"/>
137
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M425.5,-238C425.5,-235.79 400.57,-234 369.88,-234 339.18,-234 314.25,-235.79 314.25,-238"/>
138
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">cron/jobs.yml</text>
139
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-210.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">scheduled jobs + logs</text>
139
140
  </g>
140
141
  <!-- Root&#45;&gt;crn -->
141
142
  <g id="edge9" class="edge">
142
143
  <title>Root&#45;&gt;crn</title>
143
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M141.96,-366.46C163.98,-338.57 209.08,-285.61 257.62,-253 263.09,-249.33 269.03,-245.95 275.12,-242.87"/>
144
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="276.15,-245.1 281.4,-239.86 274.02,-240.68 276.15,-245.1"/>
144
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M146.82,-378.47C174.37,-348.78 232.14,-290.09 290.62,-253 295.59,-249.85 300.91,-246.88 306.34,-244.12"/>
145
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="307.1,-246.47 312.32,-241.2 304.95,-242.07 307.1,-246.47"/>
145
146
  </g>
146
147
  <!-- agt -->
147
- <g id="node11" class="node">
148
+ <g id="node12" class="node">
148
149
  <title>agt</title>
149
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M382,-172C382,-174.21 362.78,-176 339.12,-176 315.47,-176 296.25,-174.21 296.25,-172 296.25,-172 296.25,-136 296.25,-136 296.25,-133.79 315.47,-132 339.12,-132 362.78,-132 382,-133.79 382,-136 382,-136 382,-172 382,-172"/>
150
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M382,-172C382,-169.79 362.78,-168 339.12,-168 315.47,-168 296.25,-169.79 296.25,-172"/>
151
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-156.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">agents.yml</text>
152
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-144.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">persona registry</text>
150
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M412.75,-172C412.75,-174.21 393.53,-176 369.88,-176 346.22,-176 327,-174.21 327,-172 327,-172 327,-136 327,-136 327,-133.79 346.22,-132 369.88,-132 393.53,-132 412.75,-133.79 412.75,-136 412.75,-136 412.75,-172 412.75,-172"/>
151
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M412.75,-172C412.75,-169.79 393.53,-168 369.88,-168 346.22,-168 327,-169.79 327,-172"/>
152
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">agents.yml</text>
153
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">persona registry</text>
153
154
  </g>
154
155
  <!-- Root&#45;&gt;agt -->
155
156
  <g id="edge10" class="edge">
156
157
  <title>Root&#45;&gt;agt</title>
157
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M135.42,-366.51C152,-328 195.18,-238.53 257.62,-187 266.53,-179.65 277.3,-173.75 288.02,-169.08"/>
158
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="288.7,-171.45 294.25,-166.53 286.84,-166.92 288.7,-171.45"/>
158
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M139.88,-378.41C161.77,-338.3 218.59,-242.75 290.62,-187 299,-180.52 308.83,-175.08 318.64,-170.6"/>
159
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="319.5,-172.9 324.95,-167.88 317.55,-168.41 319.5,-172.9"/>
159
160
  </g>
160
161
  <!-- swm -->
161
- <g id="node12" class="node">
162
+ <g id="node13" class="node">
162
163
  <title>swm</title>
163
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M394,-106C394,-108.21 369.4,-110 339.12,-110 308.85,-110 284.25,-108.21 284.25,-106 284.25,-106 284.25,-70 284.25,-70 284.25,-67.79 308.85,-66 339.12,-66 369.4,-66 394,-67.79 394,-70 394,-70 394,-106 394,-106"/>
164
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M394,-106C394,-103.79 369.4,-102 339.12,-102 308.85,-102 284.25,-103.79 284.25,-106"/>
165
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-90.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">swarm/&lt;id&gt;/bus.jsonl</text>
166
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-78.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">multi&#45;agent chat</text>
164
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M424.75,-106C424.75,-108.21 400.15,-110 369.88,-110 339.6,-110 315,-108.21 315,-106 315,-106 315,-70 315,-70 315,-67.79 339.6,-66 369.88,-66 400.15,-66 424.75,-67.79 424.75,-70 424.75,-70 424.75,-106 424.75,-106"/>
165
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M424.75,-106C424.75,-103.79 400.15,-102 369.88,-102 339.6,-102 315,-103.79 315,-106"/>
166
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-90.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">swarm/&lt;id&gt;/bus.jsonl</text>
167
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-78.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">multi&#45;agent chat</text>
167
168
  </g>
168
169
  <!-- Root&#45;&gt;swm -->
169
170
  <g id="edge11" class="edge">
170
171
  <title>Root&#45;&gt;swm</title>
171
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M132.08,-366.6C143.76,-319.39 180.94,-192.65 257.62,-121 263.14,-115.85 269.56,-111.45 276.33,-107.71"/>
172
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="277.19,-110.03 282.31,-104.66 274.96,-105.66 277.19,-110.03"/>
172
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M136.17,-378.51C152.96,-329.82 204.69,-196.61 290.62,-121 295.53,-116.69 301.08,-112.88 306.9,-109.53"/>
173
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="307.91,-111.77 312.93,-106.31 305.6,-107.44 307.91,-111.77"/>
173
174
  </g>
174
175
  <!-- hist -->
175
- <g id="node13" class="node">
176
+ <g id="node14" class="node">
176
177
  <title>hist</title>
177
- <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M379.38,-40C379.38,-42.21 361.33,-44 339.12,-44 316.92,-44 298.88,-42.21 298.88,-40 298.88,-40 298.88,-4 298.88,-4 298.88,-1.79 316.92,0 339.12,0 361.33,0 379.38,-1.79 379.38,-4 379.38,-4 379.38,-40 379.38,-40"/>
178
- <path fill="none" stroke="#334155" stroke-width="1.3" d="M379.38,-40C379.38,-37.79 361.33,-36 339.12,-36 316.92,-36 298.88,-37.79 298.88,-40"/>
179
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-24.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">~/.pwn_history</text>
180
- <text xml:space="preserve" text-anchor="middle" x="339.12" y="-12.5" font-family="sans-Serif" font-size="10.00" fill="#0f172a">REPL history</text>
178
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M410.12,-40C410.12,-42.21 392.08,-44 369.88,-44 347.67,-44 329.62,-42.21 329.62,-40 329.62,-40 329.62,-4 329.62,-4 329.62,-1.79 347.67,0 369.88,0 392.08,0 410.12,-1.79 410.12,-4 410.12,-4 410.12,-40 410.12,-40"/>
179
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M410.12,-40C410.12,-37.79 392.08,-36 369.88,-36 347.67,-36 329.62,-37.79 329.62,-40"/>
180
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-24.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">~/.pwn_history</text>
181
+ <text xml:space="preserve" text-anchor="middle" x="369.88" y="-12.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">REPL history</text>
181
182
  </g>
182
183
  <!-- Root&#45;&gt;hist -->
183
184
  <g id="edge12" class="edge">
184
185
  <title>Root&#45;&gt;hist</title>
185
- <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M130.04,-366.57C137.42,-311.7 166.44,-147.51 257.62,-55 266.67,-45.82 278.63,-39.1 290.55,-34.21"/>
186
- <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="291.11,-36.61 296.79,-31.84 289.38,-32.03 291.11,-36.61"/>
186
+ <path fill="none" stroke="#94a3b8" stroke-width="1.1" d="M133.83,-378.7C146.09,-322.66 190.37,-151.35 290.62,-55 299.26,-46.7 310.31,-40.34 321.35,-35.53"/>
187
+ <polygon fill="#94a3b8" stroke="#94a3b8" stroke-width="1.1" points="322.24,-37.81 327.82,-32.92 320.41,-33.27 322.24,-37.81"/>
188
+ </g>
189
+ <!-- ews -->
190
+ <g id="node9" class="node">
191
+ <title>ews</title>
192
+ <path fill="#fcd34d" stroke="#334155" stroke-width="1.3" d="M189.62,-477C189.62,-479.21 162.51,-481 129.12,-481 95.74,-481 68.62,-479.21 68.62,-477 68.62,-477 68.62,-441 68.62,-441 68.62,-438.79 95.74,-437 129.12,-437 162.51,-437 189.62,-438.79 189.62,-441 189.62,-441 189.62,-477 189.62,-477"/>
193
+ <path fill="none" stroke="#334155" stroke-width="1.3" d="M189.62,-477C189.62,-474.79 162.51,-473 129.12,-473 95.74,-473 68.62,-474.79 68.62,-477"/>
194
+ <text xml:space="preserve" text-anchor="middle" x="129.12" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">extrospection/web/*.png</text>
195
+ <text xml:space="preserve" text-anchor="middle" x="129.12" y="-449.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#0f172a">headless screenshots</text>
187
196
  </g>
188
197
  </g>
189
198
  </svg>